From 545a08a9f22d419fe5bcbd0c42366c977ce4938d Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 26 Jan 2024 11:05:02 +0000 Subject: [PATCH 001/119] chore(v7): Revert RSC and SSR changes This commit reverts all the RSC and SSR PRs to date so that v7.0.0 can go out with clean changes. Revert "chore(deps): update dependency @apollo/experimental-nextjs-app-support to v0.5.2 (#9716)" This reverts commit 9d9d373562ac9c09ff5c202fcfb88f9dfd95b995. Revert "fix(apollo): Enhance error differently for Suspense Cells (#9640)" This reverts commit 7870ce4a407191227a7914dd0609bec9785bd48c. Revert "SSR smoke-test: Use (#9763)" This reverts commit 3d1179a8ea508988d850d1a4ed21b356489c2e49. Revert "Use TS 5.3 import attributes (#9591)" This reverts commit cb4aba6bde79c49174a6b7f01a331669df318c08. Revert "chore(RSC): update RSC test projects to latest canary (#9717)" This reverts commit 209add6538a8c589602f068b6c3de1a157749eba. Revert "RSC: Fix the RSA test project fixture (#9704)" This reverts commit f7c7613ffa0e17bd28bb2eed94375aa8cfbedf6f. Revert "chore(CI): add RSC fixtures to detect changes list (#9703)" This reverts commit b7115dd9d72ca48d75b4232fd86c9cbbab3a0ad9. Revert "RSC: Update rsc test project fixtures (#9666)" This reverts commit cc69243545acd22e9540d1e916df86959166c922. Revert "RSC: Use `pages` directory (#9660)" This reverts commit 809e3ffc1eae045a77146010a975ddf08713b1d7. Revert "RSC: Default entry.server and more standard App.tsx (#9655)" This reverts commit 33a3b0b67cd48814b010426f42477f6a7a8d3f4b. Revert "RSC: Use the default entry.client file (#9654)" This reverts commit 3f6e7c159903fb8dd743b1ced55bdce53cf1a8d4. Revert "RSC: No need to patch Vite anymore (#9636)" This reverts commit 2fdb496e70ba963590a9fbedeb32e1047279634b. Revert "RSC: Remove unused code. Improve code organization (#9631)" This reverts commit 49379294ce7b7332619bda886785435b8c08e400. Revert "chore: Linting and disable some console logs (#9635)" This reverts commit b1adcc7ee8dd7a4fc4974bf822945a01a80c5d2c. Revert "RSC: Use Routes.tsx for (client-side) routing (#9630)" This reverts commit e9f5f015b7184a3aba103863330b6813125ab15c. Revert "RSC: Add RW env var definitions to Vite config and include FatalErrorBoundary (#9622)" This reverts commit 69a17708e868cb49a13d88085e36c1dca34e2940. Revert "RSC: Refactor to share buildRouteManifest function with SSR process (#9618)" This reverts commit 00462e511c772fd03226f576816039a8e62f5ea2. Revert "RSC: Fake server-side routing (#9593)" This reverts commit 2c638c38b97da8179f222d4515e83e7378ecb527. Revert "RSC: Include routing in initial RSC example app (#9611)" This reverts commit a7ea8cdc35772234cbc7ac5e3c36446213ebe61a. Revert "fix(deps): update dependency @whatwg-node/server to v0.9.18 (#9602)" This reverts commit 1e1c8d1a37d665ca5fc3c14649907dee1dec73fa. Revert "RSC: Generate a route manifest (#9592)" This reverts commit 99685ee74a2b9b25f0f4cc668746b8f016efa327. Revert "RSC: Refactor build process (#9588)" This reverts commit 1f66831febefd5ab2c650f905eabce8dde43027b. Revert "fix(streaming-ssr): Fixes running the streaming server using rw serve (#9558)" This reverts commit 645956290e519d3e37432741f047569824330d9b. Revert "fix(streaming): Fix css loading on dev server on Windows (#9557)" This reverts commit 205e0f4cbc41d75ba615cbd70b905d035dc066ee. Revert "RSC: Combine RSC server with StreamingSSR server (#9553)" This reverts commit 4afccbcb6e5947c32add1779fd75c2907e497759. Revert "Prerender smoke-test: await helper function (#9546)" This reverts commit fe70a367370d1070321a23a3f62294239830f379. Revert "fix(deps): update dependency isbot to v3.7.1 (#9506)" This reverts commit e330be7f1681cebeb226ad2c624dc575b51ea8e6. Revert "fix(deps): update dependency @whatwg-node/server to v0.9.16 (#9475)" This reverts commit 886e28ab5ecf88055f320c7c12120ea79eabdaad. Revert "chore(deps): update dependency rollup to v3.29.4 (#9464)" This reverts commit c5eca98932564ffc8845eedba52f2e3f9ac004e3. Revert "RSC: Support client-only package and include @tobbe.dev/rsc-test in smoke test (#9367)" This reverts commit e04e48e6933dd54e5133f8fc2c545aae48a1fa64. Revert "RSC: Check for rw-rsc header (#9410)" This reverts commit cb0b035cced7678df7f7e6bf772cc1feabcfd785. Revert "RSC GH action: Move build to after copy (#9413)" This reverts commit 114a2b0260973b7ad252d43f2e14704284ba4ff7. Revert "RSC: Move loaders to worker thread (#9412)" This reverts commit df885749bdf150c3e536f463256e8cf34a987e78. Revert "RSC: smoke tests: install and build after project:copy (#9411)" This reverts commit e2a90f8c3c905a26c788f40c21a54291c36f5c87. Revert "feat(ssr-streaming): Allow building without index.html during streaming-ssr (#9387)" This reverts commit 76e1672c33a9cb5f65d4a21bb9a9d86341655f6f. Revert "chore(ssr): Move LocationProvider inside framework for SSR (#9383)" This reverts commit c4dedc66ced7259516715033c20372072c4cfd2d. Revert "feat(ssr): Collect CSS links during dev (#9382)" This reverts commit 1e42b43b6201fd55e3e41e4d5a070606f2d385ff. Revert "fix(stream-ssr): Move wait for all ready to fix bot rendering (#9389)" This reverts commit bdf885a0848c0aa97be2d7d16fa7bac60ff64f68. Revert "chore(e2e): Setup e2e test for streaming SSR (#9349)" This reverts commit 656a2c86e28a915a8f8552a44c8b79331873f7f7. Revert "RSC: vite externalConditions (#9333)" This reverts commit c8c8a3b1e3c599a610b3856b71078357e70e44be. Revert "RSC: test-project-rsa: Fix TS type error in onSend (#9332)" This reverts commit 45065da262c1a57d67b0013ea7168c0fca687dc6. Revert "RSC: Implement RSC worker (#9331)" This reverts commit 18c5d961f203820facc8a42eebe2d382ed7ff7dd. Revert "RSC: createRscRequestHandler (#9330)" This reverts commit 433d8ef99b0025cf2a5d6faceef303be6089f155. Revert "fix(stream-ssr): Cancel the timeout when the react stream has finished (#9317)" This reverts commit daaa1998837bdb6eaa42d9160292e781fadb3dc8. Revert "fix(ssr-build): Generate document in ssr build too! (#9310)" This reverts commit e2cf25db2518833ad0b833c5e6b5308557ecc7fd. Revert "feat(streaming-ssr): Various bug fixes and migrate to FetchAPI/Web streams (#9295)" This reverts commit 1ed2b5b477a6b08a0d4731160591bebfaaeac34b. Revert "RSC: Smoke test (#9194)" This reverts commit 18555d0e196cfc69ed322e24cafeb2d228773ae1. Revert "RSC: Handle Windows paths in clientEntries (#9233)" This reverts commit 27d33d3e29276d0d5c61d604034d65b4c6ae5f65. Revert "RSC: Check if index.html has already been updated during setup (#9197)" This reverts commit 83d180fc477b17bf33c7673f010b68e9f7d5e0a2. Revert "RSC: Use react/experimental types (#9196)" This reverts commit e2c14ebf9cb4f62d3d5eed63becd4cbf587485a4. Revert "RSC: Patch vite when running setup command (#9192)" This reverts commit a7bab85513ded97c500399daacf3a39de1fc1378. Revert "RSC: Support 'use client' in 3pp packages (#9191)" This reverts commit a436b1cfe82b0ce53baadc0149a5d2831928135b. Revert "RSC: react-18.3.0-canary-bbc8530ed-20230912 (#9164)" This reverts commit 9d63d080a69f1428bb2b961690ecb09eaee64edd. Revert "RSC: Decode RSF args from request (#9157)" This reverts commit 9257e3944fe1f49a3e9bd39a1f076c02134de28c. Revert "RSC: RSF aka Server Actions (#9155)" This reverts commit c46bb67a75c4f78b4cbd5d744f52937a567f0e43. Revert "RSC: Make code and execution easier to follow. Improve error handling. (#9154)" This reverts commit d3475cd7041b20106bf73968a1d59dcae611afcd. Revert "RSC: Work around an issue in Rollup (#9153)" This reverts commit ee334bcf08f760cdfe26c03e7d65dc7da2f76281. Revert "Streaming: meta charSet=utf-8 (#9142)" This reverts commit 050a16925ab9768374e56f20792bbb2a026488bb. Revert "Streaming SSR: Fix RWJS_EXP_SSR_GRAPHQL_ENDPOINT logic (#9134)" This reverts commit ae11f69df494be05d33e558bfea328b751223f43. Revert "RSC: Don't set the react-server condition for client builds (#9132)" This reverts commit 7ee61534f9131657b920f2d95b3d0e8d7a6e4ab2. Revert "Streaming fe server: bind to 0.0.0.0 in prod (#9115)" This reverts commit 0c23f67708b286d1e923e4d93aaba238edf66bb3. Revert "fix(meta): Remove duplicated title and meta attributes (possible edge cases) (#9113)" This reverts commit 8d0ab16aa1c39f1526e4213211608805735f6974. Revert "chore(deps): update dependency @apollo/experimental-nextjs-app-support to v0.4.2 (#9021)" This reverts commit d7560ec9c1b9b7d6feff3f6a952a49793e6ac8f8. Revert "feat(Cell Suspense): Allow Cells to not Suspend (#9106)" This reverts commit 2b8a5558c6d88f37346346c5f9db2cdd0073f83f. Revert "feat(streaming): Make Cells render on the server with useBackgroundQuery and useReadQuery (#9074)" This reverts commit 069101b7ca1115d021a20f4d9b80e9b10107df24. Revert "feat(streaming): Cleanup/Unify streaming dev and prod server (#9047)" This reverts commit c5ba4888a87e5ea0b11ff5d2768d13f47f672eeb. Revert "exp(streaming): Allow SSR with experimental apollo client (#9038)" This reverts commit c89e1364c7e9af541438f3274ddf1f92401dc2c8. Revert "feat(streaming-ssr): Fix build and server html injection (#8978)" This reverts commit 58a242192174e6bd2e72ccd2269f66d02ad7a401. Revert "RSC: Use experimental node loader (#8979)" This reverts commit 2add568286e6cad3ead50c9edc4d7e4a03771825. Revert "RSC: Fix noExternal rule for server build (#8961)" This reverts commit 9ac5ab271776b42c9e4ceed403345fa00d2feb1b. Revert "Refactor cli serve command (#8958)" This reverts commit f24016a8411d025f6918544ea3683e1a84a13f52. Revert "@rwjs/vite: Pin acorn-loose version (#8944)" This reverts commit 6f33914e06f7fb6d0866495bdbadb09fd3d367cb. Revert "RSC: react-server condition. Poisoned imports (#8948)" This reverts commit e9413654f60f3b40c65bf7c759cd0b8be99978ca. Revert "RSC fix typo in example code (#8949)" This reverts commit 3588ec06a9009cf2ffc864370eec7f3130fff9e1. Revert "fix(ssr): Get experimental ssr setup working properly (#8922)" This reverts commit abf229bc166ea05c0f3e6dca1836fa477192e55d. Revert "RSC fix: setup description (#8906)" This reverts commit b11bd72adf2b946a2652525a20e83b1a4a965d46. Revert "RSC: Add css files to the example (#8905)" This reverts commit fcd7c39304b5d587ac1eb7a68c322e977115b030. Revert "RSC build without user config (#8896)" This reverts commit 37692a4d85eb231c3be4b5459408f0d4480d363d. Revert "RSC: Use rw serve (#8897)" This reverts commit 921c9cb3127b10cb050b3b9ae144d326f4a7f20c. Revert "RSC: Build using rw build (#8893)" This reverts commit f1d0dcb81c6149fa0dbd74ed64e5d2c569b4b205. Revert "RSC: Fix experimental setup (#8894)" This reverts commit c44a260751e344e6c1735aa9704b8903f9d7fa81. Revert "RSC: Include entries.ts in paths (#8888)" This reverts commit db271db22e5bd423c3a88d98938c05aeb373b992. Revert "RSC: Initial css support (#8887)" This reverts commit 8610d58e1207779dfe561b96f7625b20d2a8f400. Revert "RSC: Use exported defineEntries() (#8886)" This reverts commit f5fc2e2e696d791536bd14d386efff99fe121ecd. Revert "Include standard vite config in RSC build (#8882)" This reverts commit c1e62c29d1f706edbabee2abbcf96f8dad744373. Revert "Update entry.client and disable vite legacy mode (#8851)" This reverts commit 8917ad6ab5eaea40f6a79b478e28df4b9c43182f. Revert "experimental feature flag for rsc (#8837)" This reverts commit c7a5b138c43e888b49a20ddddfbf3bbc2ab2c00d. Revert "React Server Components (RSC) (#8451)" This reverts commit f22dfbeda624dfb80ce54fde59329f155f29f2e9. Revert "Use "import type" for all types (#8827)" This reverts commit 7a6aea7fed966bcb5deab8b473cf0dfcc36a6547. Revert "React 18.3.0-canary-035a41c4e-20230704 (#8826)" This reverts commit d261819262158179a22d57c7a3c78695c9ef7d0a. Revert "ViteBuildManifest and note about import-attributes (#8818)" This reverts commit 8b85ad6b3f58855a5b5081cdeef679d7d29f9106. Revert "Streaming SSR: Fix build, serve and dev (#8811)" This reverts commit 4c51caec60fb84c54d5580944ff8fcfb30d9229a. Revert "Add files needed for React Streaming SSR (#8810)" This reverts commit 6da5aaebc614f39374f528daaa27d078ec4c02a2. Revert "entry.server and entry.client (#8808)" This reverts commit 7cc5564e3b08715f3ea08a478265ac478ccec49f. Revert "Use existing rw-vite-build bin for SSR as well (#8806)" This reverts commit 8b2a56601e92eab104505ced96f7c30fd442f7e7. Revert "Disable prerender when streamingSsr is enabled (#8775)" This reverts commit e7d53610bcd0b7e207e4e5ae55e211f57270cf2a. Revert "vite utils.ts: fix source format (#8796)" This reverts commit e19107126d5c9a6ad8995aa0235c161b93b10384. Revert "Server Rendering & Streaming (#8561)" This reverts commit 2557bf8d8d338fb752e145c7c5452a1849c7fcc3. Revert "React Streaming and SSR feature flag (#8764)" This reverts commit 565f62000b327df732b7b7040a1419852225a7d9. --- .github/actions/actionsLib.mjs | 71 +-- .github/actions/detect-changes/cases/rsc.mjs | 34 - .github/actions/detect-changes/cases/ssr.mjs | 27 - .../actions/detect-changes/detectChanges.mjs | 2 - .github/actions/set-up-rsa-project/README.md | 29 - .../actions/set-up-rsa-project/action.yaml | 10 - .../actions/set-up-rsa-project/jsconfig.json | 11 - .../actions/set-up-rsa-project/package.json | 6 - .../setUpRsaProjectGitHub.mjs | 22 - .../setUpRsaProjectLocally.mjs | 111 ---- .../README.md | 29 - .../action.yaml | 10 - .../jsconfig.json | 11 - .../package.json | 6 - .../setUpRscExternalPackagesProjectGitHub.mjs | 22 - ...setUpRscExternalPackagesProjectLocally.mjs | 111 ---- .github/actions/set-up-rsc-project/README.md | 32 - .../actions/set-up-rsc-project/action.yaml | 10 - .../actions/set-up-rsc-project/jsconfig.json | 11 - .../actions/set-up-rsc-project/package.json | 6 - .../set-up-rsc-project/setUpRscProject.mjs | 109 ---- .../setUpRscProjectGitHub.mjs | 17 - .../setUpRscProjectLocally.mjs | 117 ---- .../actions/set-up-test-project/action.yaml | 3 - .../set-up-test-project/setUpTestProject.mjs | 19 +- .github/workflows/ci.yml | 193 ------ __fixtures__/test-project-rsa/.editorconfig | 10 - __fixtures__/test-project-rsa/.env.defaults | 19 - __fixtures__/test-project-rsa/.env.example | 4 - __fixtures__/test-project-rsa/.gitignore | 22 - __fixtures__/test-project-rsa/.gitpod.yml | 25 - .../test-project-rsa/.redwood/README.md | 44 -- .../test-project-rsa/.vscode/extensions.json | 14 - .../test-project-rsa/.vscode/launch.json | 36 -- .../test-project-rsa/.vscode/settings.json | 14 - .../patches/vite-npm-4.4.9-e845c1bbf8.patch | 19 - __fixtures__/test-project-rsa/.yarnrc.yml | 15 - __fixtures__/test-project-rsa/README.md | 3 - .../test-project-rsa/api/db/schema.prisma | 18 - .../test-project-rsa/api/jest.config.js | 8 - .../test-project-rsa/api/package.json | 9 - .../test-project-rsa/api/server.config.js | 52 -- .../requireAuth/requireAuth.test.ts | 18 - .../src/directives/requireAuth/requireAuth.ts | 25 - .../src/directives/skipAuth/skipAuth.test.ts | 10 - .../api/src/directives/skipAuth/skipAuth.ts | 16 - .../api/src/functions/graphql.ts | 19 - .../test-project-rsa/api/src/graphql/.keep | 0 .../test-project-rsa/api/src/lib/auth.ts | 25 - .../test-project-rsa/api/src/lib/db.ts | 21 - .../test-project-rsa/api/src/lib/logger.ts | 17 - .../test-project-rsa/api/src/services/.keep | 0 .../test-project-rsa/api/tsconfig.json | 36 -- .../test-project-rsa/graphql.config.js | 5 - __fixtures__/test-project-rsa/jest.config.js | 8 - __fixtures__/test-project-rsa/package.json | 26 - .../test-project-rsa/prettier.config.js | 18 - __fixtures__/test-project-rsa/redwood.toml | 27 - __fixtures__/test-project-rsa/scripts/.keep | 0 __fixtures__/test-project-rsa/scripts/seed.ts | 63 -- .../test-project-rsa/scripts/tsconfig.json | 42 -- .../test-project-rsa/web/jest.config.js | 8 - .../test-project-rsa/web/package.json | 23 - .../test-project-rsa/web/public/README.md | 35 -- .../test-project-rsa/web/public/favicon.png | Bin 1741 -> 0 bytes .../test-project-rsa/web/public/robots.txt | 2 - __fixtures__/test-project-rsa/web/src/App.tsx | 19 - .../test-project-rsa/web/src/Counter.css | 7 - .../web/src/Counter.module.css | 3 - .../test-project-rsa/web/src/Counter.tsx | 19 - .../test-project-rsa/web/src/Document.tsx | 27 - .../test-project-rsa/web/src/Routes.tsx | 31 - .../test-project-rsa/web/src/components/.keep | 0 .../src/components/Counter/AboutCounter.tsx | 20 - .../web/src/components/Counter/Counter.css | 7 - .../src/components/Counter/Counter.module.css | 3 - .../web/src/components/Counter/Counter.tsx | 21 - .../test-project-rsa/web/src/entries.ts | 15 - .../test-project-rsa/web/src/entry.client.tsx | 23 - .../test-project-rsa/web/src/entry.server.tsx | 15 - .../test-project-rsa/web/src/index.css | 4 - .../test-project-rsa/web/src/index.html | 16 - .../test-project-rsa/web/src/layouts/.keep | 0 .../NavigationLayout/NavigationLayout.css | 32 - .../NavigationLayout.stories.tsx | 13 - .../NavigationLayout.test.tsx | 14 - .../NavigationLayout/NavigationLayout.tsx | 27 - .../web/src/pages/AboutPage/AboutPage.css | 2 - .../web/src/pages/AboutPage/AboutPage.tsx | 27 - .../pages/FatalErrorPage/FatalErrorPage.tsx | 57 -- .../web/src/pages/HomePage/Form.tsx | 49 -- .../web/src/pages/HomePage/HomePage.css | 2 - .../src/pages/HomePage/HomePage.module.css | 3 - .../web/src/pages/HomePage/HomePage.tsx | 29 - .../web/src/pages/HomePage/chat.ts | 23 - .../src/pages/NotFoundPage/NotFoundPage.tsx | 44 -- .../test-project-rsa/web/src/words.ts | 111 ---- .../test-project-rsa/web/tsconfig.json | 53 -- .../test-project-rsa/web/vite.config.ts | 16 - .../.editorconfig | 10 - .../.env.defaults | 19 - .../.env.example | 4 - .../.gitignore | 22 - .../.gitpod.yml | 25 - .../.redwood/README.md | 44 -- .../.vscode/extensions.json | 14 - .../.vscode/launch.json | 36 -- .../.vscode/settings.json | 11 - .../.yarnrc.yml | 15 - .../README.md | 10 - .../api/db/schema.prisma | 18 - .../api/jest.config.js | 8 - .../api/package.json | 9 - .../api/server.config.js | 52 -- .../requireAuth/requireAuth.test.ts | 18 - .../src/directives/requireAuth/requireAuth.ts | 25 - .../src/directives/skipAuth/skipAuth.test.ts | 10 - .../api/src/directives/skipAuth/skipAuth.ts | 16 - .../api/src/functions/graphql.ts | 19 - .../api/src/graphql/.keep | 0 .../api/src/lib/auth.ts | 25 - .../api/src/lib/db.ts | 21 - .../api/src/lib/logger.ts | 17 - .../api/src/services/.keep | 0 .../api/tsconfig.json | 36 -- .../graphql.config.js | 5 - .../jest.config.js | 8 - .../package.json | 23 - .../prettier.config.js | 18 - .../redwood.toml | 27 - .../scripts/.keep | 0 .../scripts/seed.ts | 63 -- .../scripts/tsconfig.json | 42 -- .../web/jest.config.js | 8 - .../web/package.json | 28 - .../web/public/README.md | 35 -- .../web/public/favicon.png | Bin 1741 -> 0 bytes .../web/public/robots.txt | 2 - .../web/src/App.tsx | 19 - .../web/src/Document.tsx | 27 - .../web/src/Routes.tsx | 31 - .../web/src/components/.keep | 0 .../src/components/Counter/AboutCounter.tsx | 20 - .../web/src/components/Counter/Counter.css | 7 - .../src/components/Counter/Counter.module.css | 3 - .../web/src/components/Counter/Counter.tsx | 21 - .../web/src/entries.ts | 15 - .../web/src/entry.client.tsx | 23 - .../web/src/entry.server.tsx | 15 - .../web/src/index.css | 4 - .../web/src/index.html | 16 - .../web/src/layouts/.keep | 0 .../NavigationLayout/NavigationLayout.css | 32 - .../NavigationLayout.stories.tsx | 13 - .../NavigationLayout.test.tsx | 14 - .../NavigationLayout/NavigationLayout.tsx | 27 - .../web/src/pages/AboutPage/AboutPage.css | 2 - .../web/src/pages/AboutPage/AboutPage.tsx | 27 - .../pages/FatalErrorPage/FatalErrorPage.tsx | 57 -- .../web/src/pages/HomePage/HomePage.css | 2 - .../src/pages/HomePage/HomePage.module.css | 3 - .../web/src/pages/HomePage/HomePage.tsx | 32 - .../web/src/pages/HomePage/actions.ts | 16 - .../web/src/pages/HomePage/words.ts | 113 ---- .../src/pages/NotFoundPage/NotFoundPage.tsx | 44 -- .../web/tsconfig.json | 53 -- .../web/vite.config.ts | 16 - __fixtures__/test-project/web/package.json | 4 +- babel.config.js | 1 - docs/docs/router.md | 4 +- docs/static/img/router/cell_req_error.png | Bin 107838 -> 0 bytes .../auth-providers/auth0/web/package.json | 2 +- .../azureActiveDirectory/web/package.json | 2 +- .../auth-providers/clerk/web/package.json | 2 +- .../auth-providers/dbAuth/web/package.json | 2 +- .../auth-providers/firebase/web/package.json | 2 +- .../auth-providers/netlify/web/package.json | 2 +- .../auth-providers/supabase/web/package.json | 2 +- .../supertokens/web/package.json | 2 +- packages/auth/package.json | 2 +- packages/babel-config/dist.test.ts | 1 - packages/babel-config/src/common.ts | 24 - packages/babel-config/src/index.ts | 1 - ...babel-plugin-redwood-routes-auto-loader.ts | 9 - packages/babel-config/src/web.ts | 1 - .../cli/src/commands/__tests__/dev.test.js | 59 -- .../cli/src/commands/__tests__/serve.test.js | 11 +- packages/cli/src/commands/buildHandler.js | 15 +- .../cli/src/commands/deploy/flightcontrol.js | 2 +- packages/cli/src/commands/deploy/render.js | 2 +- packages/cli/src/commands/devHandler.js | 31 +- .../cli/src/commands/experimental/setupRsc.js | 29 - .../commands/experimental/setupRscHandler.js | 363 ----------- .../experimental/setupStreamingSsr.js | 30 - .../experimental/setupStreamingSsrHandler.js | 184 ------ .../templates/rsc/AboutCounter.tsx.template | 20 - .../templates/rsc/AboutPage.css.template | 2 - .../templates/rsc/AboutPage.tsx.template | 27 - .../templates/rsc/App.tsx.template | 19 - .../templates/rsc/Counter.css.template | 7 - .../templates/rsc/Counter.module.css.template | 3 - .../templates/rsc/Counter.tsx.template | 19 - .../templates/rsc/HomePage.css.template | 2 - .../rsc/HomePage.module.css.template | 3 - .../templates/rsc/HomePage.tsx.template | 29 - .../rsc/NavigationLayout.css.template | 32 - .../rsc/NavigationLayout.tsx.template | 27 - .../templates/rsc/Routes.tsx.template | 31 - .../templates/rsc/entries.ts.template | 15 - .../templates/rsc/index.css.template | 4 - .../streamingSsr/Document.tsx.template | 27 - .../streamingSsr/entry.client.tsx.template | 28 - .../streamingSsr/entry.server.tsx.template | 15 - packages/cli/src/commands/prerenderHandler.js | 12 +- packages/cli/src/commands/serve.js | 34 +- packages/cli/src/commands/serveApiHandler.js | 80 --- packages/cli/src/commands/serveBothHandler.js | 160 ----- packages/cli/src/commands/serveHandler.js | 220 +++++++ packages/cli/src/commands/serveWebHandler.js | 46 -- packages/core/config/webpack.common.js | 2 +- packages/core/package.json | 3 - packages/core/src/bins/rw-dev-fe.ts | 10 - packages/core/src/bins/rw-serve-api.ts | 10 - packages/core/src/bins/rw-serve-fe.ts | 10 - .../templates/js/web/package.json | 4 +- .../templates/ts/web/package.json | 4 +- packages/forms/package.json | 6 +- packages/internal/src/files.ts | 7 - .../templates/api-globImports.d.ts.template | 5 - packages/internal/src/routes.ts | 55 +- packages/internal/tsconfig.json | 1 - packages/prerender/package.json | 4 +- ...uild-manifest.json => build-manifest.json} | 0 ...uild-manifest.json => build-manifest.json} | 0 ...-plugin-redwood-prerender-media-imports.ts | 2 +- packages/prerender/src/runPrerender.tsx | 2 +- .../src/__tests__/config.test.ts | 6 - .../src/__tests__/paths.test.ts | 158 +---- packages/project-config/src/config.ts | 12 - packages/project-config/src/paths.ts | 86 --- packages/router/ambient.d.ts | 10 - packages/router/package.json | 8 +- packages/router/src/active-route-loader.tsx | 7 +- packages/structure/src/model/RWRoute.ts | 9 - packages/vite/ambient.d.ts | 30 - packages/vite/bins/rw-vite-build.mjs | 18 +- packages/vite/inject/reactRefresh.js | 7 - packages/vite/modules.d.ts | 5 - packages/vite/package.json | 56 +- packages/vite/src/buildFeServer.ts | 117 ---- packages/vite/src/buildRouteManifest.ts | 76 --- packages/vite/src/buildRscFeServer.ts | 58 -- packages/vite/src/client.ts | 137 ---- packages/vite/src/devFeServer.ts | 118 ---- packages/vite/src/entries.ts | 26 - .../src/fully-react/DevRwRscServerGlobal.ts | 63 -- .../src/fully-react/ProdRwRscServerGlobal.ts | 53 -- .../vite/src/fully-react/RwRscServerGlobal.ts | 20 - packages/vite/src/fully-react/assets.tsx | 82 --- packages/vite/src/fully-react/find-styles.ts | 106 ---- .../src/fully-react/findAssetsInManifest.ts | 47 -- packages/vite/src/fully-react/rwRscGlobal.ts | 10 - packages/vite/src/index.ts | 47 +- packages/vite/src/lib/StatusError.ts | 9 - packages/vite/src/lib/onWarn.ts | 22 - .../__tests__/swap-apollo-provider.test.mts | 14 - .../vite-plugin-swap-apollo-provider.ts | 26 - .../react-server-dom-webpack/node-loader.ts | 583 ------------------ packages/vite/src/rsc/rscBuildAnalyze.ts | 81 --- packages/vite/src/rsc/rscBuildClient.ts | 111 ---- .../vite/src/rsc/rscBuildClientEntriesFile.ts | 49 -- .../vite/src/rsc/rscBuildCopyCssAssets.ts | 31 - packages/vite/src/rsc/rscBuildRwEnvVars.ts | 38 -- packages/vite/src/rsc/rscBuildServer.ts | 183 ------ packages/vite/src/rsc/rscNodeLoader.ts | 36 -- packages/vite/src/rsc/rscRequestHandler.ts | 135 ---- packages/vite/src/rsc/rscVitePlugins.ts | 183 ------ packages/vite/src/rsc/rscWorker.ts | 415 ------------- .../vite/src/rsc/rscWorkerCommunication.ts | 171 ----- packages/vite/src/runFeServer.ts | 169 ----- packages/vite/src/streaming/collectCss.ts | 41 -- .../streaming/createReactStreamingHandler.ts | 157 ----- .../vite/src/streaming/registerGlobals.ts | 80 --- packages/vite/src/streaming/streamHelpers.ts | 202 ------ .../streaming/transforms/bufferedTransform.ts | 44 -- .../transforms/cancelTimeoutTransform.ts | 7 - .../src/streaming/transforms/encode-decode.ts | 9 - .../transforms/serverInjectionTransform.ts | 85 --- .../vite/src/streaming/triggerRouteHooks.ts | 117 ---- packages/vite/src/types.ts | 16 - packages/vite/src/utils.ts | 21 - packages/vite/tsconfig.json | 5 +- packages/web/ambient.d.ts | 13 - packages/web/package.json | 9 +- packages/web/src/apollo/index.tsx | 12 +- packages/web/src/apollo/links.tsx | 133 ---- packages/web/src/apollo/suspense.tsx | 217 ------- packages/web/src/apollo/typeOverride.ts | 12 - .../{cell => }/CellCacheContext.tsx | 0 .../web/src/components/DevFatalErrorPage.tsx | 52 +- .../src/components/GraphQLHooksProvider.tsx | 93 +-- packages/web/src/components/MetaTags.tsx | 13 +- packages/web/src/components/Metadata.test.tsx | 434 ++++++------- packages/web/src/components/Metadata.tsx | 10 +- packages/web/src/components/PortalHead.tsx | 49 -- .../web/src/components/RedwoodProvider.tsx | 3 - packages/web/src/components/ServerInject.tsx | 72 --- .../src/components/cell/CellErrorBoundary.tsx | 61 -- packages/web/src/components/cell/cellTypes.ts | 237 ------- .../web/src/components/cell/createCell.tsx | 181 ------ .../cell/createSuspendingCell.test.tsx | 144 ----- .../components/cell/createSuspendingCell.tsx | 162 ----- .../web/src/components/cell/isCellEmpty.tsx | 48 -- .../components/{cell => }/createCell.test.tsx | 9 +- packages/web/src/components/createCell.tsx | 411 ++++++++++++ packages/web/src/components/htmlTags.tsx | 139 ----- .../web/src/components/portalHead.test.tsx | 44 -- packages/web/src/config.ts | 7 - packages/web/src/global.web-auto-imports.ts | 5 +- packages/web/src/index.ts | 12 +- packages/web/src/routeHooks.types.ts | 17 - .../web/src/streamUtils/useDocumentReady.ts | 27 - .../smoke-tests/auth/tests/authChecks.spec.ts | 2 +- .../smoke-tests/auth/tests/rbacChecks.spec.ts | 2 +- tasks/smoke-tests/basePlaywright.config.ts | 3 - tasks/smoke-tests/{shared => }/common.ts | 0 tasks/smoke-tests/dev/tests/dev.spec.ts | 2 +- .../prerender/tests/prerender.spec.ts | 18 +- tasks/smoke-tests/rsa/playwright.config.ts | 21 - tasks/smoke-tests/rsa/tests/rsa.spec.ts | 29 - .../playwright.config.ts | 21 - .../tests/rsc-external-packages.spec.ts | 42 -- tasks/smoke-tests/rsc/playwright.config.ts | 21 - tasks/smoke-tests/rsc/tests/rsc.spec.ts | 27 - tasks/smoke-tests/serve/tests/serve.spec.ts | 2 +- tasks/smoke-tests/shared/delayedPage.ts | 47 -- tasks/smoke-tests/shared/homePage.ts | 21 - tasks/smoke-tests/smoke-tests.mjs | 2 +- .../streaming-ssr-dev/playwright.config.ts | 21 - .../tests/progressiveRendering.spec.ts | 85 --- .../streaming-ssr-prod/playwright.config.ts | 21 - .../tests/botRendering.spec.ts | 49 -- .../tests/progressiveRendering.spec.ts | 37 -- tasks/test-project/codemods/delayedPage.js | 122 ---- tasks/test-project/convert-to-ssr-fixture | 34 - tasks/test-project/tasks.js | 39 -- tasks/test-project/test-project | 18 +- yarn.lock | 307 +-------- 348 files changed, 1008 insertions(+), 12711 deletions(-) delete mode 100644 .github/actions/detect-changes/cases/rsc.mjs delete mode 100644 .github/actions/detect-changes/cases/ssr.mjs delete mode 100644 .github/actions/set-up-rsa-project/README.md delete mode 100644 .github/actions/set-up-rsa-project/action.yaml delete mode 100644 .github/actions/set-up-rsa-project/jsconfig.json delete mode 100644 .github/actions/set-up-rsa-project/package.json delete mode 100644 .github/actions/set-up-rsa-project/setUpRsaProjectGitHub.mjs delete mode 100644 .github/actions/set-up-rsa-project/setUpRsaProjectLocally.mjs delete mode 100644 .github/actions/set-up-rsc-external-packages-project/README.md delete mode 100644 .github/actions/set-up-rsc-external-packages-project/action.yaml delete mode 100644 .github/actions/set-up-rsc-external-packages-project/jsconfig.json delete mode 100644 .github/actions/set-up-rsc-external-packages-project/package.json delete mode 100644 .github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectGitHub.mjs delete mode 100644 .github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectLocally.mjs delete mode 100644 .github/actions/set-up-rsc-project/README.md delete mode 100644 .github/actions/set-up-rsc-project/action.yaml delete mode 100644 .github/actions/set-up-rsc-project/jsconfig.json delete mode 100644 .github/actions/set-up-rsc-project/package.json delete mode 100644 .github/actions/set-up-rsc-project/setUpRscProject.mjs delete mode 100644 .github/actions/set-up-rsc-project/setUpRscProjectGitHub.mjs delete mode 100644 .github/actions/set-up-rsc-project/setUpRscProjectLocally.mjs delete mode 100644 __fixtures__/test-project-rsa/.editorconfig delete mode 100644 __fixtures__/test-project-rsa/.env.defaults delete mode 100644 __fixtures__/test-project-rsa/.env.example delete mode 100644 __fixtures__/test-project-rsa/.gitignore delete mode 100644 __fixtures__/test-project-rsa/.gitpod.yml delete mode 100644 __fixtures__/test-project-rsa/.redwood/README.md delete mode 100644 __fixtures__/test-project-rsa/.vscode/extensions.json delete mode 100644 __fixtures__/test-project-rsa/.vscode/launch.json delete mode 100644 __fixtures__/test-project-rsa/.vscode/settings.json delete mode 100644 __fixtures__/test-project-rsa/.yarn/patches/vite-npm-4.4.9-e845c1bbf8.patch delete mode 100644 __fixtures__/test-project-rsa/.yarnrc.yml delete mode 100644 __fixtures__/test-project-rsa/README.md delete mode 100644 __fixtures__/test-project-rsa/api/db/schema.prisma delete mode 100644 __fixtures__/test-project-rsa/api/jest.config.js delete mode 100644 __fixtures__/test-project-rsa/api/package.json delete mode 100644 __fixtures__/test-project-rsa/api/server.config.js delete mode 100644 __fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.test.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.test.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/functions/graphql.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/graphql/.keep delete mode 100644 __fixtures__/test-project-rsa/api/src/lib/auth.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/lib/db.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/lib/logger.ts delete mode 100644 __fixtures__/test-project-rsa/api/src/services/.keep delete mode 100644 __fixtures__/test-project-rsa/api/tsconfig.json delete mode 100644 __fixtures__/test-project-rsa/graphql.config.js delete mode 100644 __fixtures__/test-project-rsa/jest.config.js delete mode 100644 __fixtures__/test-project-rsa/package.json delete mode 100644 __fixtures__/test-project-rsa/prettier.config.js delete mode 100644 __fixtures__/test-project-rsa/redwood.toml delete mode 100644 __fixtures__/test-project-rsa/scripts/.keep delete mode 100644 __fixtures__/test-project-rsa/scripts/seed.ts delete mode 100644 __fixtures__/test-project-rsa/scripts/tsconfig.json delete mode 100644 __fixtures__/test-project-rsa/web/jest.config.js delete mode 100644 __fixtures__/test-project-rsa/web/package.json delete mode 100644 __fixtures__/test-project-rsa/web/public/README.md delete mode 100644 __fixtures__/test-project-rsa/web/public/favicon.png delete mode 100644 __fixtures__/test-project-rsa/web/public/robots.txt delete mode 100644 __fixtures__/test-project-rsa/web/src/App.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/Counter.css delete mode 100644 __fixtures__/test-project-rsa/web/src/Counter.module.css delete mode 100644 __fixtures__/test-project-rsa/web/src/Counter.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/Document.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/Routes.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/components/.keep delete mode 100644 __fixtures__/test-project-rsa/web/src/components/Counter/AboutCounter.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/components/Counter/Counter.css delete mode 100644 __fixtures__/test-project-rsa/web/src/components/Counter/Counter.module.css delete mode 100644 __fixtures__/test-project-rsa/web/src/components/Counter/Counter.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/entries.ts delete mode 100644 __fixtures__/test-project-rsa/web/src/entry.client.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/entry.server.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/index.css delete mode 100644 __fixtures__/test-project-rsa/web/src/index.html delete mode 100644 __fixtures__/test-project-rsa/web/src/layouts/.keep delete mode 100644 __fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.css delete mode 100644 __fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.stories.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.test.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.css delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/FatalErrorPage/FatalErrorPage.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/HomePage/Form.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/HomePage/HomePage.css delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/HomePage/HomePage.module.css delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/HomePage/HomePage.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/HomePage/chat.ts delete mode 100644 __fixtures__/test-project-rsa/web/src/pages/NotFoundPage/NotFoundPage.tsx delete mode 100644 __fixtures__/test-project-rsa/web/src/words.ts delete mode 100644 __fixtures__/test-project-rsa/web/tsconfig.json delete mode 100644 __fixtures__/test-project-rsa/web/vite.config.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/.editorconfig delete mode 100644 __fixtures__/test-project-rsc-external-packages/.env.defaults delete mode 100644 __fixtures__/test-project-rsc-external-packages/.env.example delete mode 100644 __fixtures__/test-project-rsc-external-packages/.gitignore delete mode 100644 __fixtures__/test-project-rsc-external-packages/.gitpod.yml delete mode 100644 __fixtures__/test-project-rsc-external-packages/.redwood/README.md delete mode 100644 __fixtures__/test-project-rsc-external-packages/.vscode/extensions.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/.vscode/launch.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/.vscode/settings.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/.yarnrc.yml delete mode 100644 __fixtures__/test-project-rsc-external-packages/README.md delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/db/schema.prisma delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/jest.config.js delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/package.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/server.config.js delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/directives/requireAuth/requireAuth.test.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/directives/requireAuth/requireAuth.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/directives/skipAuth/skipAuth.test.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/directives/skipAuth/skipAuth.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/functions/graphql.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/graphql/.keep delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/lib/auth.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/lib/db.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/lib/logger.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/src/services/.keep delete mode 100644 __fixtures__/test-project-rsc-external-packages/api/tsconfig.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/graphql.config.js delete mode 100644 __fixtures__/test-project-rsc-external-packages/jest.config.js delete mode 100644 __fixtures__/test-project-rsc-external-packages/package.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/prettier.config.js delete mode 100644 __fixtures__/test-project-rsc-external-packages/redwood.toml delete mode 100644 __fixtures__/test-project-rsc-external-packages/scripts/.keep delete mode 100644 __fixtures__/test-project-rsc-external-packages/scripts/seed.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/scripts/tsconfig.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/jest.config.js delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/package.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/public/README.md delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/public/favicon.png delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/public/robots.txt delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/App.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/Document.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/Routes.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/components/.keep delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/components/Counter/AboutCounter.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/components/Counter/Counter.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/components/Counter/Counter.module.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/components/Counter/Counter.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/entries.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/entry.client.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/entry.server.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/index.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/index.html delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/layouts/.keep delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/layouts/NavigationLayout/NavigationLayout.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/layouts/NavigationLayout/NavigationLayout.stories.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/layouts/NavigationLayout/NavigationLayout.test.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/layouts/NavigationLayout/NavigationLayout.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/AboutPage/AboutPage.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/AboutPage/AboutPage.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/FatalErrorPage/FatalErrorPage.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/HomePage/HomePage.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/HomePage/HomePage.module.css delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/HomePage/HomePage.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/HomePage/actions.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/HomePage/words.ts delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/src/pages/NotFoundPage/NotFoundPage.tsx delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/tsconfig.json delete mode 100644 __fixtures__/test-project-rsc-external-packages/web/vite.config.ts delete mode 100644 docs/static/img/router/cell_req_error.png delete mode 100644 packages/cli/src/commands/experimental/setupRsc.js delete mode 100644 packages/cli/src/commands/experimental/setupRscHandler.js delete mode 100644 packages/cli/src/commands/experimental/setupStreamingSsr.js delete mode 100644 packages/cli/src/commands/experimental/setupStreamingSsrHandler.js delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/AboutCounter.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/AboutPage.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/AboutPage.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/App.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/Counter.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/Counter.module.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/Counter.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/HomePage.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/HomePage.module.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/HomePage.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/NavigationLayout.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/NavigationLayout.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/Routes.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/entries.ts.template delete mode 100644 packages/cli/src/commands/experimental/templates/rsc/index.css.template delete mode 100644 packages/cli/src/commands/experimental/templates/streamingSsr/Document.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/streamingSsr/entry.client.tsx.template delete mode 100644 packages/cli/src/commands/experimental/templates/streamingSsr/entry.server.tsx.template delete mode 100644 packages/cli/src/commands/serveApiHandler.js delete mode 100644 packages/cli/src/commands/serveBothHandler.js create mode 100644 packages/cli/src/commands/serveHandler.js delete mode 100644 packages/cli/src/commands/serveWebHandler.js delete mode 100644 packages/core/src/bins/rw-dev-fe.ts delete mode 100644 packages/core/src/bins/rw-serve-api.ts delete mode 100644 packages/core/src/bins/rw-serve-fe.ts rename packages/prerender/src/babelPlugins/__tests__/__fixtures__/viteDistDir/{client-build-manifest.json => build-manifest.json} (100%) rename packages/prerender/src/babelPlugins/__tests__/__fixtures__/webpackDistDir/{client-build-manifest.json => build-manifest.json} (100%) delete mode 100644 packages/vite/ambient.d.ts delete mode 100644 packages/vite/inject/reactRefresh.js delete mode 100644 packages/vite/modules.d.ts delete mode 100644 packages/vite/src/buildFeServer.ts delete mode 100644 packages/vite/src/buildRouteManifest.ts delete mode 100644 packages/vite/src/buildRscFeServer.ts delete mode 100644 packages/vite/src/client.ts delete mode 100644 packages/vite/src/devFeServer.ts delete mode 100644 packages/vite/src/entries.ts delete mode 100644 packages/vite/src/fully-react/DevRwRscServerGlobal.ts delete mode 100644 packages/vite/src/fully-react/ProdRwRscServerGlobal.ts delete mode 100644 packages/vite/src/fully-react/RwRscServerGlobal.ts delete mode 100644 packages/vite/src/fully-react/assets.tsx delete mode 100644 packages/vite/src/fully-react/find-styles.ts delete mode 100644 packages/vite/src/fully-react/findAssetsInManifest.ts delete mode 100644 packages/vite/src/fully-react/rwRscGlobal.ts delete mode 100644 packages/vite/src/lib/StatusError.ts delete mode 100644 packages/vite/src/lib/onWarn.ts delete mode 100644 packages/vite/src/plugins/__tests__/swap-apollo-provider.test.mts delete mode 100644 packages/vite/src/plugins/vite-plugin-swap-apollo-provider.ts delete mode 100644 packages/vite/src/react-server-dom-webpack/node-loader.ts delete mode 100644 packages/vite/src/rsc/rscBuildAnalyze.ts delete mode 100644 packages/vite/src/rsc/rscBuildClient.ts delete mode 100644 packages/vite/src/rsc/rscBuildClientEntriesFile.ts delete mode 100644 packages/vite/src/rsc/rscBuildCopyCssAssets.ts delete mode 100644 packages/vite/src/rsc/rscBuildRwEnvVars.ts delete mode 100644 packages/vite/src/rsc/rscBuildServer.ts delete mode 100644 packages/vite/src/rsc/rscNodeLoader.ts delete mode 100644 packages/vite/src/rsc/rscRequestHandler.ts delete mode 100644 packages/vite/src/rsc/rscVitePlugins.ts delete mode 100644 packages/vite/src/rsc/rscWorker.ts delete mode 100644 packages/vite/src/rsc/rscWorkerCommunication.ts delete mode 100644 packages/vite/src/runFeServer.ts delete mode 100644 packages/vite/src/streaming/collectCss.ts delete mode 100644 packages/vite/src/streaming/createReactStreamingHandler.ts delete mode 100644 packages/vite/src/streaming/registerGlobals.ts delete mode 100644 packages/vite/src/streaming/streamHelpers.ts delete mode 100644 packages/vite/src/streaming/transforms/bufferedTransform.ts delete mode 100644 packages/vite/src/streaming/transforms/cancelTimeoutTransform.ts delete mode 100644 packages/vite/src/streaming/transforms/encode-decode.ts delete mode 100644 packages/vite/src/streaming/transforms/serverInjectionTransform.ts delete mode 100644 packages/vite/src/streaming/triggerRouteHooks.ts delete mode 100644 packages/vite/src/types.ts delete mode 100644 packages/vite/src/utils.ts delete mode 100644 packages/web/src/apollo/links.tsx delete mode 100644 packages/web/src/apollo/suspense.tsx rename packages/web/src/components/{cell => }/CellCacheContext.tsx (100%) delete mode 100644 packages/web/src/components/PortalHead.tsx delete mode 100644 packages/web/src/components/ServerInject.tsx delete mode 100644 packages/web/src/components/cell/CellErrorBoundary.tsx delete mode 100644 packages/web/src/components/cell/cellTypes.ts delete mode 100644 packages/web/src/components/cell/createCell.tsx delete mode 100644 packages/web/src/components/cell/createSuspendingCell.test.tsx delete mode 100644 packages/web/src/components/cell/createSuspendingCell.tsx delete mode 100644 packages/web/src/components/cell/isCellEmpty.tsx rename packages/web/src/components/{cell => }/createCell.test.tsx (98%) create mode 100644 packages/web/src/components/createCell.tsx delete mode 100644 packages/web/src/components/htmlTags.tsx delete mode 100644 packages/web/src/components/portalHead.test.tsx delete mode 100644 packages/web/src/routeHooks.types.ts delete mode 100644 packages/web/src/streamUtils/useDocumentReady.ts rename tasks/smoke-tests/{shared => }/common.ts (100%) delete mode 100644 tasks/smoke-tests/rsa/playwright.config.ts delete mode 100644 tasks/smoke-tests/rsa/tests/rsa.spec.ts delete mode 100644 tasks/smoke-tests/rsc-external-packages/playwright.config.ts delete mode 100644 tasks/smoke-tests/rsc-external-packages/tests/rsc-external-packages.spec.ts delete mode 100644 tasks/smoke-tests/rsc/playwright.config.ts delete mode 100644 tasks/smoke-tests/rsc/tests/rsc.spec.ts delete mode 100644 tasks/smoke-tests/shared/delayedPage.ts delete mode 100644 tasks/smoke-tests/shared/homePage.ts delete mode 100644 tasks/smoke-tests/streaming-ssr-dev/playwright.config.ts delete mode 100644 tasks/smoke-tests/streaming-ssr-dev/tests/progressiveRendering.spec.ts delete mode 100644 tasks/smoke-tests/streaming-ssr-prod/playwright.config.ts delete mode 100644 tasks/smoke-tests/streaming-ssr-prod/tests/botRendering.spec.ts delete mode 100644 tasks/smoke-tests/streaming-ssr-prod/tests/progressiveRendering.spec.ts delete mode 100644 tasks/test-project/codemods/delayedPage.js delete mode 100755 tasks/test-project/convert-to-ssr-fixture diff --git a/.github/actions/actionsLib.mjs b/.github/actions/actionsLib.mjs index 8aaf223dcfff..8702ffde13d9 100644 --- a/.github/actions/actionsLib.mjs +++ b/.github/actions/actionsLib.mjs @@ -1,7 +1,6 @@ /* eslint-env node */ // @ts-check -import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' @@ -62,9 +61,9 @@ export function projectCopy(redwoodProjectCwd) { } /** - * @param {{ baseKeyPrefix: string, distKeyPrefix: string, canary: boolean }} options + * @param {{ baseKeyPrefix: string, distKeyPrefix: string }} options */ -export async function createCacheKeys({ baseKeyPrefix, distKeyPrefix, canary }) { +export async function createCacheKeys({ baseKeyPrefix, distKeyPrefix }) { const baseKey = [ baseKeyPrefix, process.env.RUNNER_OS, @@ -76,7 +75,7 @@ export async function createCacheKeys({ baseKeyPrefix, distKeyPrefix, canary }) baseKey, 'dependencies', await hashFiles(['yarn.lock', '.yarnrc.yml'].join('\n')), - ].join('-') + (canary ? '-canary' : '') + ].join('-') const distKey = [ dependenciesKey, @@ -91,7 +90,7 @@ export async function createCacheKeys({ baseKeyPrefix, distKeyPrefix, canary }) 'lerna.json', 'packages', ].join('\n')) - ].join('-') + (canary ? '-canary' : '') + ].join('-') return { baseKey, @@ -99,65 +98,3 @@ export async function createCacheKeys({ baseKeyPrefix, distKeyPrefix, canary }) distKey } } - -/** - * @callback ExecInProject - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {Omit=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ - -/** - * @param {string} testProjectPath - * @param {string} fixtureName - * @param {Object} core - * @param {(key: string, value: string) => void} core.setOutput - * @param {ExecInProject} execInProject - * @returns {Promise} - */ -export async function setUpRscTestProject( - testProjectPath, - fixtureName, - core, - execInProject -) { - core.setOutput('test-project-path', testProjectPath) - - console.log('rwPath', REDWOOD_FRAMEWORK_PATH) - console.log('testProjectPath', testProjectPath) - - const fixturePath = path.join( - REDWOOD_FRAMEWORK_PATH, - '__fixtures__', - fixtureName - ) - const rwBinPath = path.join( - REDWOOD_FRAMEWORK_PATH, - 'packages/cli/dist/index.js' - ) - const rwfwBinPath = path.join( - REDWOOD_FRAMEWORK_PATH, - 'packages/cli/dist/rwfw.js' - ) - - console.log(`Creating project at ${testProjectPath}`) - console.log() - fs.cpSync(fixturePath, testProjectPath, { recursive: true }) - - console.log(`Adding framework dependencies to ${testProjectPath}`) - await projectDeps(testProjectPath) - console.log() - - console.log(`Installing node_modules in ${testProjectPath}`) - await execInProject('yarn install') - - console.log(`Copying over framework files to ${testProjectPath}`) - await execInProject(`node ${rwfwBinPath} project:copy`, { - env: { RWFW_PATH: REDWOOD_FRAMEWORK_PATH }, - }) - console.log() - - console.log(`Building project in ${testProjectPath}`) - await execInProject(`node ${rwBinPath} build -v`) - console.log() -} diff --git a/.github/actions/detect-changes/cases/rsc.mjs b/.github/actions/detect-changes/cases/rsc.mjs deleted file mode 100644 index e2e31da48e8a..000000000000 --- a/.github/actions/detect-changes/cases/rsc.mjs +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Detects if there are RSC changes - * - * @param {string[]} changedFiles The list of files which git has listed as changed - * @returns {boolean} True if there are changes, false if not - */ -export function rscChanged(changedFiles){ - for (const changedFile of changedFiles) { - // As the RSC implementation changes, this list will need to be updated. - // Also, I could be much more specific here, but then I'd also have to - // update this list much more often. So this'll serve as a good enough - // starting point. - if ( - changedFile.startsWith('tasks/smoke-tests/rsc/') || - changedFile.startsWith('tasks/smoke-tests/rsa/') || - changedFile.startsWith('tasks/smoke-tests/basePlaywright.config.ts') || - changedFile.startsWith('.github/actions/set-up-rsa-project/') || - changedFile.startsWith('.github/actions/set-up-rsc-external-packages-project/') || - changedFile.startsWith('.github/actions/set-up-rsc-project/') || - changedFile.startsWith('packages/internal/') || - changedFile.startsWith('packages/project-config/') || - changedFile.startsWith('packages/web/') || - changedFile.startsWith('packages/vite/') || - changedFile.startsWith('__fixtures__/test-project-rsa') || - changedFile.startsWith('__fixtures__/test-project-rsc-external-packages') - ) { - console.log('RSC change detected:', changedFile) - return true - } - } - - console.log('No RSC changes') - return false -} diff --git a/.github/actions/detect-changes/cases/ssr.mjs b/.github/actions/detect-changes/cases/ssr.mjs deleted file mode 100644 index c3d05e7296cb..000000000000 --- a/.github/actions/detect-changes/cases/ssr.mjs +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Detects if there are SSR changes - * - * @param {string[]} changedFiles The list of files which git has listed as changed - * @returns {boolean} True if there are changes, false if not - */ -export function ssrChanged(changedFiles){ - for (const changedFile of changedFiles) { - if ( - changedFile.startsWith('tasks/smoke-tests/streaming-ssr') || - changedFile === 'tasks/smoke-tests/basePlaywright.config.ts' || - changedFile === 'tasks/test-project/codemods/delayedPage.js' || - changedFile.startsWith('packages/internal/') || - changedFile.startsWith('packages/project-config/') || - changedFile.startsWith('packages/web/') || - changedFile.startsWith('packages/router/') || - changedFile.startsWith('packages/web-server/') || - changedFile.startsWith('packages/vite/') - ) { - console.log('SSR change detected:', changedFile) - return true - } - } - - console.log('No SSR changes') - return false -} diff --git a/.github/actions/detect-changes/detectChanges.mjs b/.github/actions/detect-changes/detectChanges.mjs index a7119100199d..285e410dc654 100644 --- a/.github/actions/detect-changes/detectChanges.mjs +++ b/.github/actions/detect-changes/detectChanges.mjs @@ -2,8 +2,6 @@ import fs from 'node:fs' import core from '@actions/core' import { hasCodeChanges } from './cases/code_changes.mjs' -import { rscChanged } from './cases/rsc.mjs' -import { ssrChanged } from './cases/ssr.mjs' const getPrNumber = () => { // Example GITHUB_REF refs/pull/9544/merge diff --git a/.github/actions/set-up-rsa-project/README.md b/.github/actions/set-up-rsa-project/README.md deleted file mode 100644 index 0bf518131d44..000000000000 --- a/.github/actions/set-up-rsa-project/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# GitHub action to copy a template RSA project to use for testing - -This action copies a RW project with Streaming SSR and RSC support already set -up. It's used for RSA smoke tests. - -It copies the `__fixtures__/test-project-rsa` project, runs `yarn install` and -`project:copy`. Finally it builds the rw app. - -## Testing/running locally - -Go into the github actions folder -`cd .github/actions` - -Then run the following command to execute the action -`node set-up-rsa-project/setUpRsaProjectLocally.mjs` - -## Design - -The main logic of the action is in the `../actionsLib.mjs` file. To be able to -run that code both on GitHub and locally it uses dependency injection. The -injection is done by `setupRsaProjectLocally.mjs` for when you want to run the -action on your own machine and by `setupRsaProjectGitHib.mjs` when it's -triggered by GitHub CI. - -When doing further changes to the code here it's very important to keep the -DI scripts as light on logic as possible. Ideally all logic is kept to -`../actionsLib.mjs` so that the same logic is used both locally and on GitHub. -Do note though that more actions share that code, so make sure not to break -the other actions when making changes there. diff --git a/.github/actions/set-up-rsa-project/action.yaml b/.github/actions/set-up-rsa-project/action.yaml deleted file mode 100644 index 066eb600010a..000000000000 --- a/.github/actions/set-up-rsa-project/action.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: Set up RSA test project from fixture -description: Sets up an RSA project for smoke-tests - -runs: - using: node20 - main: 'setUpRsaProjectGitHub.mjs' - -outputs: - test-project-path: - description: Path to the test project diff --git a/.github/actions/set-up-rsa-project/jsconfig.json b/.github/actions/set-up-rsa-project/jsconfig.json deleted file mode 100644 index 8effcfaa09ef..000000000000 --- a/.github/actions/set-up-rsa-project/jsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "noEmit": true, - "esModuleInterop": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "skipLibCheck": false, - "jsx": "react-jsx" - }, -} diff --git a/.github/actions/set-up-rsa-project/package.json b/.github/actions/set-up-rsa-project/package.json deleted file mode 100644 index 196dba219d44..000000000000 --- a/.github/actions/set-up-rsa-project/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "set-up-rsa-project", - "version": "0.0.0", - "private": true, - "type": "module" -} diff --git a/.github/actions/set-up-rsa-project/setUpRsaProjectGitHub.mjs b/.github/actions/set-up-rsa-project/setUpRsaProjectGitHub.mjs deleted file mode 100644 index 497d82e4c9bf..000000000000 --- a/.github/actions/set-up-rsa-project/setUpRsaProjectGitHub.mjs +++ /dev/null @@ -1,22 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import path from 'node:path' - -import core from '@actions/core' - -import { createExecWithEnvInCwd, setUpRscTestProject } from '../actionsLib.mjs' - -const testProjectAndFixtureName = 'test-project-rsa' -const testProjectPath = path.join( - path.dirname(process.cwd()), - testProjectAndFixtureName -) -const execInProject = createExecWithEnvInCwd(testProjectPath) - -setUpRscTestProject( - testProjectPath, - testProjectAndFixtureName, - core, - execInProject -) diff --git a/.github/actions/set-up-rsa-project/setUpRsaProjectLocally.mjs b/.github/actions/set-up-rsa-project/setUpRsaProjectLocally.mjs deleted file mode 100644 index 8e9baa044594..000000000000 --- a/.github/actions/set-up-rsa-project/setUpRsaProjectLocally.mjs +++ /dev/null @@ -1,111 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import os from 'node:os' -import path from 'node:path' - -import execa from 'execa' - -import { setUpRscTestProject } from '../actionsLib.mjs' - -class ExecaError extends Error { - stdout - stderr - exitCode - - constructor({ stdout, stderr, exitCode }) { - super(`execa failed with exit code ${exitCode}`) - this.stdout = stdout - this.stderr = stderr - this.exitCode = exitCode - } -} - -/** - * @template [EncodingType=string] - * @typedef {import('execa').Options} ExecaOptions - */ - -/** - * @typedef {{ - * env?: Record - * }} ExecOptions - */ - -/** - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {string[]=} args arguments for tool. Escaping is handled by the lib. - * @param {ExecOptions=} options exec options. See ExecOptions - */ -async function exec(commandLine, args, options) { - return execa(commandLine, args, options) - .then(({ stdout, stderr, exitCode }) => { - if (exitCode !== 0) { - throw new ExecaError({ stdout, stderr, exitCode }) - } - }) - .catch((error) => { - if (error instanceof ExecaError) { - // Rethrow ExecaError - throw error - } else { - const { stdout, stderr, exitCode } = error - console.log('error', error) - throw new ExecaError({ stdout, stderr, exitCode }) - } - }) -} - -/** - * @param {string} cwd - * @param {Record=} env - * @returns {ExecaOptions} - */ -function getExecaOptions(cwd, env = {}) { - return { - shell: true, - stdio: 'inherit', - cleanup: true, - cwd, - env, - } -} - -const testProjectAndFixtureName = 'test-project-rsa' - -const testProjectPath = path.join( - os.tmpdir(), - 'redwood', - testProjectAndFixtureName, - // ":" is problematic with paths - new Date().toISOString().split(':').join('-') -) - -// Mock for @actions/core -const core = { - setOutput: () => {}, -} - -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {ExecOptions=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ -function execInProject(commandLine, options) { - return exec( - commandLine, - undefined, - getExecaOptions(testProjectPath, options?.env) - ) -} - -setUpRscTestProject( - testProjectPath, - testProjectAndFixtureName, - core, - execInProject -) diff --git a/.github/actions/set-up-rsc-external-packages-project/README.md b/.github/actions/set-up-rsc-external-packages-project/README.md deleted file mode 100644 index 8c47dc603dd5..000000000000 --- a/.github/actions/set-up-rsc-external-packages-project/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# GitHub action to copy a template RSC project to use for testing - -This action copies a RW project with Streaming SSR and RSC support already set -up. It's used for RSC smoke tests. - -It copies the `__fixtures__/test-project-rsc-external-packages` project, runs -`yarn install` and `project:copy`. Finally it builds the rw app. - -## Testing/running locally - -Go into the github actions folder -`cd .github/actions` - -Then run the following command to execute the action -`node set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectLocally.mjs` - -## Design - -The main logic of the action is in the `../actionsLib.mjs` file. To be able to -run that code both on GitHub and locally it uses dependency injection. The -injection is done by `setupRscExternalPackagesProjectLocally.mjs` for when you -want to run the action on your own machine and by -`setupRscExternalPackagesProjectGitHib.mjs` when it's triggered by GitHub CI. - -When doing further changes to the code here it's very important to keep the -DI scripts as light on logic as possible. Ideally all logic is kept to -`../actionsLib.mjs` so that the same logic is used both locally and on GitHub. -Do note though that more actions share that code, so make sure not to break -the other actions when making changes there. diff --git a/.github/actions/set-up-rsc-external-packages-project/action.yaml b/.github/actions/set-up-rsc-external-packages-project/action.yaml deleted file mode 100644 index cdac1d7c9fbc..000000000000 --- a/.github/actions/set-up-rsc-external-packages-project/action.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: Set up RSC test project with external packages from fixture -description: Sets up an RSC project that imports external packages for smoke-tests - -runs: - using: node20 - main: 'setUpRscExternalPackagesProjectGitHub.mjs' - -outputs: - test-project-path: - description: Path to the test project diff --git a/.github/actions/set-up-rsc-external-packages-project/jsconfig.json b/.github/actions/set-up-rsc-external-packages-project/jsconfig.json deleted file mode 100644 index 8effcfaa09ef..000000000000 --- a/.github/actions/set-up-rsc-external-packages-project/jsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "noEmit": true, - "esModuleInterop": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "skipLibCheck": false, - "jsx": "react-jsx" - }, -} diff --git a/.github/actions/set-up-rsc-external-packages-project/package.json b/.github/actions/set-up-rsc-external-packages-project/package.json deleted file mode 100644 index 8dd1f5abbe06..000000000000 --- a/.github/actions/set-up-rsc-external-packages-project/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "set-up-rsc-external-packages-project", - "version": "0.0.0", - "private": true, - "type": "module" -} diff --git a/.github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectGitHub.mjs b/.github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectGitHub.mjs deleted file mode 100644 index e09f3f597d5f..000000000000 --- a/.github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectGitHub.mjs +++ /dev/null @@ -1,22 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import path from 'node:path' - -import core from '@actions/core' - -import { createExecWithEnvInCwd, setUpRscTestProject } from '../actionsLib.mjs' - -const testProjectAndFixtureName = 'test-project-rsc-external-packages' -const testProjectPath = path.join( - path.dirname(process.cwd()), - testProjectAndFixtureName -) -const execInProject = createExecWithEnvInCwd(testProjectPath) - -setUpRscTestProject( - testProjectPath, - testProjectAndFixtureName, - core, - execInProject -) diff --git a/.github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectLocally.mjs b/.github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectLocally.mjs deleted file mode 100644 index 2f2af2c87d85..000000000000 --- a/.github/actions/set-up-rsc-external-packages-project/setUpRscExternalPackagesProjectLocally.mjs +++ /dev/null @@ -1,111 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import os from 'node:os' -import path from 'node:path' - -import execa from 'execa' - -import { setUpRscTestProject } from '../actionsLib.mjs' - -class ExecaError extends Error { - stdout - stderr - exitCode - - constructor({ stdout, stderr, exitCode }) { - super(`execa failed with exit code ${exitCode}`) - this.stdout = stdout - this.stderr = stderr - this.exitCode = exitCode - } -} - -/** - * @template [EncodingType=string] - * @typedef {import('execa').Options} ExecaOptions - */ - -/** - * @typedef {{ - * env?: Record - * }} ExecOptions - */ - -/** - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {string[]=} args arguments for tool. Escaping is handled by the lib. - * @param {ExecOptions=} options exec options. See ExecOptions - */ -async function exec(commandLine, args, options) { - return execa(commandLine, args, options) - .then(({ stdout, stderr, exitCode }) => { - if (exitCode !== 0) { - throw new ExecaError({ stdout, stderr, exitCode }) - } - }) - .catch((error) => { - if (error instanceof ExecaError) { - // Rethrow ExecaError - throw error - } else { - const { stdout, stderr, exitCode } = error - console.log('error', error) - throw new ExecaError({ stdout, stderr, exitCode }) - } - }) -} - -/** - * @param {string} cwd - * @param {Record=} env - * @returns {ExecaOptions} - */ -function getExecaOptions(cwd, env = {}) { - return { - shell: true, - stdio: 'inherit', - cleanup: true, - cwd, - env, - } -} - -const testProjectAndFixtureName = 'test-project-rsc-external-packages' - -const testProjectPath = path.join( - os.tmpdir(), - 'redwood', - testProjectAndFixtureName, - // ":" is problematic with paths - new Date().toISOString().split(':').join('-') -) - -// Mock for @actions/core -const core = { - setOutput: () => {}, -} - -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {ExecOptions=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ -function execInProject(commandLine, options) { - return exec( - commandLine, - undefined, - getExecaOptions(testProjectPath, options?.env) - ) -} - -setUpRscTestProject( - testProjectPath, - testProjectAndFixtureName, - core, - execInProject -) diff --git a/.github/actions/set-up-rsc-project/README.md b/.github/actions/set-up-rsc-project/README.md deleted file mode 100644 index 4b01027d9cee..000000000000 --- a/.github/actions/set-up-rsc-project/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# GitHub action to create a RW project with RSCs set up - -This action creates a RW project with Streaming SSR and RSC support set up. -It's used for RSC smoke tests. - -It runs `npx -y create-redwood-app@canary ...` to set the project up with the -latest canary release of Redwood. It then runs -`experimental setup-streaming-ssr` and `experimental setup-rsc` followed by -a build of the rw app. Finally it runs `project:copy` to get the latest -changes to the framework (i.e. the changes introduced by the PR triggering this -action) into the project. - -## Testing/running locally - -Go into the github actions folder -`cd .github/actions` - -Then run the following command to execute the action -`node set-up-rsc-project/setUpRscProjectLocally.mjs` - -## Design - -The main logic of the action is in the `setUpRscProject.mjs` file. To be able -to run that code both on GitHub and locally it uses dependency injection. The -injection is done by `setupRscProjectLocally.mjs` for when you want to run -the action on your own machine and by `setupRscProjectGitHib.mjs` when it's -triggered by GitHub CI. - -When doing further changes to the code here it's very important to keep the -DI scripts as light on logic as possible. Ideally all logic is kept to -`setUpRscProject.mjs` so that the same logic is used both locally and on -GitHub. diff --git a/.github/actions/set-up-rsc-project/action.yaml b/.github/actions/set-up-rsc-project/action.yaml deleted file mode 100644 index 858e5937be56..000000000000 --- a/.github/actions/set-up-rsc-project/action.yaml +++ /dev/null @@ -1,10 +0,0 @@ -name: Set up RSC test project -description: Sets up an RSC project for smoke-tests - -runs: - using: node20 - main: 'setUpRscProjectGitHub.mjs' - -outputs: - test-project-path: - description: Path to the test project diff --git a/.github/actions/set-up-rsc-project/jsconfig.json b/.github/actions/set-up-rsc-project/jsconfig.json deleted file mode 100644 index 8effcfaa09ef..000000000000 --- a/.github/actions/set-up-rsc-project/jsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "noEmit": true, - "esModuleInterop": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "skipLibCheck": false, - "jsx": "react-jsx" - }, -} diff --git a/.github/actions/set-up-rsc-project/package.json b/.github/actions/set-up-rsc-project/package.json deleted file mode 100644 index 90aa7b8a79bd..000000000000 --- a/.github/actions/set-up-rsc-project/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "set-up-rsc-project", - "version": "0.0.0", - "private": true, - "type": "module" -} diff --git a/.github/actions/set-up-rsc-project/setUpRscProject.mjs b/.github/actions/set-up-rsc-project/setUpRscProject.mjs deleted file mode 100644 index 928926f38355..000000000000 --- a/.github/actions/set-up-rsc-project/setUpRscProject.mjs +++ /dev/null @@ -1,109 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import path from 'node:path' - -import { REDWOOD_FRAMEWORK_PATH } from '../actionsLib.mjs' - -/** - * @typedef {import('@actions/exec').ExecOptions} ExecOptions - */ - -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @callback Exec - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {string[]=} args arguments for tool. Escaping is handled by the lib. - * @param {ExecOptions=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ - -/** - * @callback ExecInProject - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {Omit=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ - -/** - * @param {string} rscProjectPath - * @param {Object} core - * @param {(key: string, value: string) => void} core.setOutput - * @param {Exec} exec - * @param {ExecInProject} execInProject - * @returns {Promise} - */ -export async function main( - rscProjectPath, - core, - exec, - execInProject -) { - core.setOutput('rsc-project-path', rscProjectPath) - - console.log('rwPath', REDWOOD_FRAMEWORK_PATH) - console.log('rscProjectPath', rscProjectPath) - - await setUpRscProject( - rscProjectPath, - exec, - execInProject, - ) -} - -/** - * @param {string} rscProjectPath - * @param {Exec} exec - * @param {ExecInProject} execInProject - * @returns {Promise} - */ -async function setUpRscProject( - rscProjectPath, - exec, - execInProject, -) { - const rwBinPath = path.join( - REDWOOD_FRAMEWORK_PATH, - 'packages/cli/dist/index.js' - ) - const rwfwBinPath = path.join( - REDWOOD_FRAMEWORK_PATH, - 'packages/cli/dist/rwfw.js' - ) - - console.log(`Creating project at ${rscProjectPath}`) - console.log() - await exec('npx', [ - '-y', - 'create-redwood-app@canary', - '-y', - '--no-git', - rscProjectPath, - ]) - - console.log(`Setting up Streaming/SSR in ${rscProjectPath}`) - const cmdSetupStreamingSSR = `node ${rwBinPath} experimental setup-streaming-ssr -f` - await execInProject(cmdSetupStreamingSSR) - console.log() - - console.log(`Setting up RSC in ${rscProjectPath}`) - await execInProject(`node ${rwBinPath} experimental setup-rsc`) - console.log() - - console.log(`Copying over framework files to ${rscProjectPath}`) - await execInProject(`node ${rwfwBinPath} project:copy`, { - env: { RWFW_PATH: REDWOOD_FRAMEWORK_PATH }, - }) - console.log() - - console.log('Installing dependencies') - await execInProject('yarn install') - console.log() - - console.log(`Building project in ${rscProjectPath}`) - await execInProject(`node ${rwBinPath} build -v`) - console.log() -} diff --git a/.github/actions/set-up-rsc-project/setUpRscProjectGitHub.mjs b/.github/actions/set-up-rsc-project/setUpRscProjectGitHub.mjs deleted file mode 100644 index 1ba4dd3ac6fb..000000000000 --- a/.github/actions/set-up-rsc-project/setUpRscProjectGitHub.mjs +++ /dev/null @@ -1,17 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import path from 'node:path' - -import core from '@actions/core' -import { exec } from '@actions/exec' - -import { createExecWithEnvInCwd } from '../actionsLib.mjs' - -import { main } from './setUpRscProject.mjs' - -const rscProjectPath = path.join(path.dirname(process.cwd()), 'rsc-project') - -const execInProject = createExecWithEnvInCwd(rscProjectPath) - -main(rscProjectPath, core, exec, execInProject) diff --git a/.github/actions/set-up-rsc-project/setUpRscProjectLocally.mjs b/.github/actions/set-up-rsc-project/setUpRscProjectLocally.mjs deleted file mode 100644 index c5c57ab2b31f..000000000000 --- a/.github/actions/set-up-rsc-project/setUpRscProjectLocally.mjs +++ /dev/null @@ -1,117 +0,0 @@ -/* eslint-env node */ -// @ts-check - -import os from 'node:os' -import path from 'node:path' - -import execa from 'execa' - -import { main } from './setUpRscProject.mjs' - -class ExecaError extends Error { - stdout - stderr - exitCode - - constructor({ stdout, stderr, exitCode }) { - super(`execa failed with exit code ${exitCode}`) - this.stdout = stdout - this.stderr = stderr - this.exitCode = exitCode - } -} - -/** - * @template [EncodingType=string] - * @typedef {import('execa').Options} ExecaOptions - */ - -/** - * @typedef {{ - * env?: Record - * }} ExecOptions - */ - -/** - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {string[]=} args arguments for tool. Escaping is handled by the lib. - * @param {ExecOptions=} options exec options. See ExecOptions - */ -async function exec(commandLine, args, options) { - return execa(commandLine, args, options) - .then(({ stdout, stderr, exitCode }) => { - if (exitCode !== 0) { - throw new ExecaError({ stdout, stderr, exitCode }) - } - }) - .catch((error) => { - if (error instanceof ExecaError) { - // Rethrow ExecaError - throw error - } else { - const { stdout, stderr, exitCode } = error - console.log('error', error) - throw new ExecaError({ stdout, stderr, exitCode }) - } - }) -} - -/** - * @param {string} cwd - * @param {Record=} env - * @returns {ExecaOptions} - */ -function getExecaOptions(cwd, env = {}) { - return { - shell: true, - stdio: 'inherit', - cleanup: true, - cwd, - env, - } -} - -const rscProjectPath = path.join( - os.tmpdir(), - 'redwood-rsc-project', - // ":" is problematic with paths - new Date().toISOString().split(':').join('-') -) - -// Mock for @actions/core -const core = { - setOutput: () => {}, -} - -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {ExecOptions=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ -function execInProject(commandLine, options) { - return exec( - commandLine, - undefined, - getExecaOptions(rscProjectPath, options?.env) - ) -} - -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param {string} commandLine command to execute (can include additional args). Must be correctly escaped. - * @param {string[]=} args arguments for tool. Escaping is handled by the lib. - * @param {ExecOptions=} options exec options. See ExecOptions - * @returns {Promise} exit code - */ -function execInRoot(commandLine, args, options) { - return exec(commandLine, args, getExecaOptions('/', options?.env)) -} - -main(rscProjectPath, core, execInRoot, execInProject) diff --git a/.github/actions/set-up-test-project/action.yaml b/.github/actions/set-up-test-project/action.yaml index 0c0e623056a5..9866507ab1db 100644 --- a/.github/actions/set-up-test-project/action.yaml +++ b/.github/actions/set-up-test-project/action.yaml @@ -9,9 +9,6 @@ inputs: bundler: description: The bundler to use (vite or webpack) default: vite - canary: - description: Upgrade the project to canary? - default: "false" outputs: test-project-path: diff --git a/.github/actions/set-up-test-project/setUpTestProject.mjs b/.github/actions/set-up-test-project/setUpTestProject.mjs index e8eb2da6a80b..a06c43f3c393 100644 --- a/.github/actions/set-up-test-project/setUpTestProject.mjs +++ b/.github/actions/set-up-test-project/setUpTestProject.mjs @@ -25,12 +25,8 @@ core.setOutput('test-project-path', TEST_PROJECT_PATH) const bundler = core.getInput('bundler') -const canary = core.getInput('canary') === 'true' - - console.log({ bundler, - canary }) console.log() @@ -38,7 +34,7 @@ console.log() const { dependenciesKey, distKey -} = await createCacheKeys({ baseKeyPrefix: 'test-project', distKeyPrefix: bundler, canary }) +} = await createCacheKeys({ baseKeyPrefix: 'test-project', distKeyPrefix: bundler }) /** * @returns {Promise} @@ -58,9 +54,7 @@ async function main() { await sharedTasks() } else { console.log(`Cache not found for input keys: ${distKey}, ${dependenciesKey}`) - await setUpTestProject({ - canary: true - }) + await setUpTestProject() } await cache.saveCache([TEST_PROJECT_PATH], distKey) @@ -68,10 +62,9 @@ async function main() { } /** - * *@param {{canary: boolean}} options * @returns {Promise} */ -async function setUpTestProject({ canary }) { +async function setUpTestProject() { const TEST_PROJECT_FIXTURE_PATH = path.join( REDWOOD_FRAMEWORK_PATH, '__fixtures__', @@ -90,12 +83,6 @@ async function setUpTestProject({ canary }) { await execInProject('yarn install') console.log() - if (canary) { - console.log(`Upgrading project to canary`) - await execInProject('yarn rw upgrade -t canary') - console.log() - } - await cache.saveCache([TEST_PROJECT_PATH], dependenciesKey) console.log(`Cache saved with key: ${dependenciesKey}`) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 973cc187823f..d779a30040c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,8 +22,6 @@ jobs: outputs: onlydocs: ${{ steps.detect-changes.outputs.onlydocs }} - rsc: ${{ steps.detect-changes.outputs.rsc }} - ssr: ${{ steps.detect-changes.outputs.ssr }} steps: - uses: actions/checkout@v4 @@ -513,196 +511,6 @@ jobs: steps: - run: echo "Skipped" - rsc-smoke-tests: - needs: [check, detect-changes] - if: needs.detect-changes.outputs.rsc == 'true' - - strategy: - matrix: - os: [ubuntu-latest, windows-latest] - - name: 🔄🐘 RSC Smoke tests / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - env: - REDWOOD_CI: 1 - REDWOOD_VERBOSE_TELEMETRY: 1 - - steps: - - uses: actions/checkout@v4 - - - name: Enable Corepack - run: corepack enable - - - name: ⬢ Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Enable Corepack - run: corepack enable - - - name: 🐈 Set up yarn cache - uses: ./.github/actions/set-up-yarn-cache - - - name: 🐈 Yarn install - run: yarn install --inline-builds - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: 🔨 Build - run: yarn build - - - name: 🌲 Set up RSC project - id: set-up-rsc-project - uses: ./.github/actions/set-up-rsc-project - env: - REDWOOD_DISABLE_TELEMETRY: 1 - YARN_ENABLE_IMMUTABLE_INSTALLS: false - - - name: 🎭 Install playwright dependencies - run: npx playwright install --with-deps chromium - - - name: 🐘 Run RSC smoke tests - working-directory: tasks/smoke-tests/rsc - run: npx playwright test - env: - REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-project.outputs.rsc-project-path }} - REDWOOD_DISABLE_TELEMETRY: 1 - - - name: 🌲 Set up RSA smoke test - id: set-up-rsa-project - uses: ./.github/actions/set-up-rsa-project - env: - REDWOOD_DISABLE_TELEMETRY: 1 - YARN_ENABLE_IMMUTABLE_INSTALLS: false - - - name: 🐘 Run RSA smoke tests - working-directory: tasks/smoke-tests/rsa - run: npx playwright test - env: - REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsa-project.outputs.test-project-path }} - REDWOOD_DISABLE_TELEMETRY: 1 - - - name: 🌲 Set up RSC external packages smoke test - id: set-up-rsc-external-packages-project - uses: ./.github/actions/set-up-rsc-external-packages-project - env: - REDWOOD_DISABLE_TELEMETRY: 1 - YARN_ENABLE_IMMUTABLE_INSTALLS: false - - - name: 🐘 Run RSC external packages smoke tests - working-directory: tasks/smoke-tests/rsc-external-packages - run: npx playwright test - env: - REDWOOD_TEST_PROJECT_PATH: ${{ steps.set-up-rsc-external-packages-project.outputs.test-project-path }} - REDWOOD_DISABLE_TELEMETRY: 1 - - rsc-smoke-tests-skip: - needs: detect-changes - if: needs.detect-changes.outputs.rsc == 'false' - - strategy: - matrix: - os: [ubuntu-latest, windows-latest] - - name: 🔄🐘 RSC Smoke tests / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - steps: - - run: echo "Skipped" - - ssr-smoke-tests: - needs: [check, detect-changes] - if: needs.detect-changes.outputs.ssr == 'true' - - strategy: - matrix: - # TODO: add `windows-latest`. - os: [ubuntu-latest] - - name: 🔁 SSR Smoke tests / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - env: - REDWOOD_CI: 1 - REDWOOD_VERBOSE_TELEMETRY: 1 - - steps: - - uses: actions/checkout@v4 - - - name: Enable Corepack - run: corepack enable - - - name: ⬢ Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: 🐈 Set up yarn cache - uses: ./.github/actions/set-up-yarn-cache - - - name: 🐈 Yarn install - run: yarn install --inline-builds - env: - GITHUB_TOKEN: ${{ github.token }} - - - name: 🔨 Build - run: yarn build - - - name: 🌲 Set up test project - id: set-up-test-project - uses: ./.github/actions/set-up-test-project - with: - bundler: vite - canary: true - env: - REDWOOD_DISABLE_TELEMETRY: 1 - YARN_ENABLE_IMMUTABLE_INSTALLS: false - - - name: Run SSR codemods on test project - run: ./tasks/test-project/convert-to-ssr-fixture ${{ steps.set-up-test-project.outputs.test-project-path }} - env: - REDWOOD_DISABLE_TELEMETRY: 1 - - - name: 🎭 Install playwright dependencies - run: npx playwright install --with-deps chromium - - - name: Run SSR [DEV] smoke tests - working-directory: ./tasks/smoke-tests/streaming-ssr-dev - run: npx playwright test - env: - REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' - REDWOOD_DISABLE_TELEMETRY: 1 - - - name: Build for production - working-directory: ${{ steps.set-up-test-project.outputs.test-project-path }} - run: yarn rw build --no-prerender - env: - REDWOOD_DISABLE_TELEMETRY: 1 - - - name: Run SSR [PROD] smoke tests - working-directory: ./tasks/smoke-tests/streaming-ssr-prod - run: npx playwright test - env: - REDWOOD_TEST_PROJECT_PATH: '${{ steps.set-up-test-project.outputs.test-project-path }}' - REDWOOD_DISABLE_TELEMETRY: 1 - - ssr-smoke-tests-skip: - needs: detect-changes - if: needs.detect-changes.outputs.ssr == 'false' - - strategy: - matrix: - # TODO: add `windows-latest`. - os: [ubuntu-latest] - - name: 🔁 SSR Smoke tests / ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - steps: - - run: echo "Skipped" - fragments-smoke-tests: needs: check @@ -747,7 +555,6 @@ jobs: uses: ./.github/actions/set-up-test-project with: bundler: vite - canary: true env: REDWOOD_DISABLE_TELEMETRY: 1 YARN_ENABLE_IMMUTABLE_INSTALLS: false diff --git a/__fixtures__/test-project-rsa/.editorconfig b/__fixtures__/test-project-rsa/.editorconfig deleted file mode 100644 index ae10a5cce3b2..000000000000 --- a/__fixtures__/test-project-rsa/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# editorconfig.org -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 2 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/__fixtures__/test-project-rsa/.env.defaults b/__fixtures__/test-project-rsa/.env.defaults deleted file mode 100644 index fb88fb33b334..000000000000 --- a/__fixtures__/test-project-rsa/.env.defaults +++ /dev/null @@ -1,19 +0,0 @@ -# These environment variables will be used by default if you do not create any -# yourself in .env. This file should be safe to check into your version control -# system. Any custom values should go in .env and .env should *not* be checked -# into version control. - -# schema.prisma defaults -DATABASE_URL=file:./dev.db - -# location of the test database for api service scenarios (defaults to ./.redwood/test.db if not set) -# TEST_DATABASE_URL=file:./.redwood/test.db - -# disables Prisma CLI update notifier -PRISMA_HIDE_UPDATE_MESSAGE=true - -# Option to override the current environment's default api-side log level -# See: https://redwoodjs.com/docs/logger for level options, defaults to "trace" otherwise. -# Most applications want "debug" or "info" during dev, "trace" when you have issues and "warn" in production. -# Ordered by how verbose they are: trace | debug | info | warn | error | silent -# LOG_LEVEL=debug diff --git a/__fixtures__/test-project-rsa/.env.example b/__fixtures__/test-project-rsa/.env.example deleted file mode 100644 index 2a2de6c026ca..000000000000 --- a/__fixtures__/test-project-rsa/.env.example +++ /dev/null @@ -1,4 +0,0 @@ -# DATABASE_URL=file:./dev.db -# TEST_DATABASE_URL=file:./.redwood/test.db -# PRISMA_HIDE_UPDATE_MESSAGE=true -# LOG_LEVEL=trace diff --git a/__fixtures__/test-project-rsa/.gitignore b/__fixtures__/test-project-rsa/.gitignore deleted file mode 100644 index 9b8149560d9b..000000000000 --- a/__fixtures__/test-project-rsa/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -.idea -.DS_Store -.env -.netlify -.redwood/* -!.redwood/README.md -dev.db* -dist -dist-babel -node_modules -yarn-error.log -web/public/mockServiceWorker.js -web/types/graphql.d.ts -api/types/graphql.d.ts -api/src/lib/generateGraphiQLHeader.* -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/sdks -!.yarn/versions diff --git a/__fixtures__/test-project-rsa/.gitpod.yml b/__fixtures__/test-project-rsa/.gitpod.yml deleted file mode 100644 index a357a6e8c9a9..000000000000 --- a/__fixtures__/test-project-rsa/.gitpod.yml +++ /dev/null @@ -1,25 +0,0 @@ -# To learn about this file, please see https://www.gitpod.io/docs/references/gitpod-yml - -image: gitpod/workspace-node-lts - -tasks: - - init: | - # Cleanup terminal - printf "\033[3J\033c\033[3J" - - yarn install - - command: yarn rw build -v && yarn rw serve -ports: - - port: 8910 - name: RedwoodJS web application - onOpen: notify # because we already have [browser].open = true in redwood.toml - - port: 8911 - name: Serverless functions - onOpen: ignore - -vscode: - extensions: - - "dbaeumer.vscode-eslint" - - "mgmcdermott.vscode-language-babel" - - "editorconfig.editorconfig" diff --git a/__fixtures__/test-project-rsa/.redwood/README.md b/__fixtures__/test-project-rsa/.redwood/README.md deleted file mode 100644 index f22b586a47cc..000000000000 --- a/__fixtures__/test-project-rsa/.redwood/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# .redwood - -## What is this directory? - -Redwood uses this `.redwood` directory to store transitory data that aids in the smooth and convenient operation of your Redwood project. - -## Do I need to do anything with this directory? - -No. You shouldn't have to create, edit or delete anything in this directory in your day-to-day work with Redwood. - -You don't need to commit any other contents of this directory to your version control system. It's ignored by default. - -## What's in this directory? - -### Files - -| Name | Description | -| :---------------- | :------- | -| commandCache.json | This file contains mappings to assist the Redwood CLI in efficiently executing commands. | -| schema.graphql | This is the GraphQL schema which has been automatically generated from your Redwood project. | -| studio.db | The sqlite database used by the experimental `rw exp studio` feature. | -| telemetry.txt | Contains a unique ID used for telemetry. This value is rotated every 24 hours to protect your project's anonymity. | -| test.db | The sqlite database used when running tests. | - -### Directories - -| Name | Description | -| :---------- | :------- | -| locks | Stores temporary files that Redwood uses to keep track of the execution of async/background tasks between processes. | -| logs | Stores log files for background tasks such as update checking. | -| prebuild | Stores transpiled JavaScript that is generated as part of Redwood's build process. | -| telemetry | Stores the recent telemetry that the Redwood CLI has generated. You may inspect these files to see everything Redwood is anonymously collecting. | -| types | Stores the results of type generation. | -| updateCheck | Stores a file which contains the results of checking for Redwood updates. | - -We try to keep this README up to date but you may, from time to time, find other files or directories in this `.redwood` directory that have not yet been documented here. This is likely nothing to worry about but feel free to let us know and we'll update this list. - -### Telemetry - -RedwoodJS collects completely anonymous telemetry data about general usage. For transparency, that data is viewable in the respective directories and files. To learn more and manage your project's settings, visit [telemetry.redwoodjs.com](https://telemetry.redwoodjs.com). - -### Have any questions? - -Feel free to reach out to us in the [RedwoodJS Community](https://community.redwoodjs.com/) forum if you have any questions. diff --git a/__fixtures__/test-project-rsa/.vscode/extensions.json b/__fixtures__/test-project-rsa/.vscode/extensions.json deleted file mode 100644 index 7fc50a119fc6..000000000000 --- a/__fixtures__/test-project-rsa/.vscode/extensions.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "recommendations": [ - "dbaeumer.vscode-eslint", - "eamodio.gitlens", - "ofhumanbondage.react-proptypes-intellisense", - "mgmcdermott.vscode-language-babel", - "wix.vscode-import-cost", - "pflannery.vscode-versionlens", - "editorconfig.editorconfig", - "prisma.prisma", - "graphql.vscode-graphql" - ], - "unwantedRecommendations": [] -} diff --git a/__fixtures__/test-project-rsa/.vscode/launch.json b/__fixtures__/test-project-rsa/.vscode/launch.json deleted file mode 100644 index ea5956966fff..000000000000 --- a/__fixtures__/test-project-rsa/.vscode/launch.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "version": "0.3.0", - "configurations": [ - { - "command": "yarn redwood dev --apiDebugPort 18911", - "name": "Run Dev Server", - "request": "launch", - "type": "node-terminal" - }, - { - "name": "Attach API debugger", - "port": 18911, // you can change this port, see https://redwoodjs.com/docs/project-configuration-dev-test-build#debugger-configuration - "request": "attach", - "skipFiles": [ - "/**" - ], - "type": "node", - "localRoot": "${workspaceFolder}/node_modules/@redwoodjs/api-server/dist", - "remoteRoot": "${workspaceFolder}/node_modules/@redwoodjs/api-server/dist", - "sourceMaps": true, - "restart": true - }, - { - "command": "yarn redwood test api", - "name": "Test api", - "request": "launch", - "type": "node-terminal" - }, - { - "command": "yarn redwood test web", - "name": "Test web", - "request": "launch", - "type": "node-terminal" - }, - ] -} diff --git a/__fixtures__/test-project-rsa/.vscode/settings.json b/__fixtures__/test-project-rsa/.vscode/settings.json deleted file mode 100644 index de8f4d2f7169..000000000000 --- a/__fixtures__/test-project-rsa/.vscode/settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "editor.tabSize": 2, - "files.trimTrailingWhitespace": true, - "editor.formatOnSave": false, - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true - }, - "[markdown][html][mjml]": { - "files.trimTrailingWhitespace": false - }, - "[prisma]": { - "editor.formatOnSave": true - } -} diff --git a/__fixtures__/test-project-rsa/.yarn/patches/vite-npm-4.4.9-e845c1bbf8.patch b/__fixtures__/test-project-rsa/.yarn/patches/vite-npm-4.4.9-e845c1bbf8.patch deleted file mode 100644 index eb67d7906284..000000000000 --- a/__fixtures__/test-project-rsa/.yarn/patches/vite-npm-4.4.9-e845c1bbf8.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/dist/node/chunks/dep-df561101.js b/dist/node/chunks/dep-df561101.js -index 1bc8674177fe73120171b22436e6104713c5d764..f0fee7b385868cb01c6d47b80d7f64a7368c0412 100644 ---- a/dist/node/chunks/dep-df561101.js -+++ b/dist/node/chunks/dep-df561101.js -@@ -55890,12 +55890,12 @@ async function instantiateModule(url, server, context = { global }, urlStack = [ - }; - urlStack = urlStack.concat(url); - const isCircular = (url) => urlStack.includes(url); -- const { isProduction, resolve: { dedupe, preserveSymlinks }, root, } = server.config; -+ const { isProduction, resolve: { dedupe, preserveSymlinks, conditions }, root, } = server.config; - const resolveOptions = { - mainFields: ['main'], - browserField: true, - conditions: [], -- overrideConditions: ['production', 'development'], -+ overrideConditions: [...conditions, 'production', 'development'], - extensions: ['.js', '.cjs', '.json'], - dedupe, - preserveSymlinks, diff --git a/__fixtures__/test-project-rsa/.yarnrc.yml b/__fixtures__/test-project-rsa/.yarnrc.yml deleted file mode 100644 index e8c5d50aa786..000000000000 --- a/__fixtures__/test-project-rsa/.yarnrc.yml +++ /dev/null @@ -1,15 +0,0 @@ -# Yarn's manifest file. You can configure yarn here. -# See https://yarnpkg.com/configuration/yarnrc. - -# For `node_modules` (see `nodeLinker` below), this is almost always the preferred option. -compressionLevel: 0 - -enableGlobalCache: true - -# Lets yarn use hardlinks inside `node_modules` to dedupe packages. -# For a more pnpm-like experience, consider `hardlinks-global` where hardlinks point to a global store. -nmMode: hardlinks-local - -# How to install Node packages. -# Heads up: right now, Redwood expects this to be `node-modules`. -nodeLinker: node-modules diff --git a/__fixtures__/test-project-rsa/README.md b/__fixtures__/test-project-rsa/README.md deleted file mode 100644 index 5c8b137a2126..000000000000 --- a/__fixtures__/test-project-rsa/README.md +++ /dev/null @@ -1,3 +0,0 @@ -RW smoke-test fixture project for RSAs with Forms - -Used by `.github/actions/set-up-rsc-from-fixture` diff --git a/__fixtures__/test-project-rsa/api/db/schema.prisma b/__fixtures__/test-project-rsa/api/db/schema.prisma deleted file mode 100644 index 3dea71a68f23..000000000000 --- a/__fixtures__/test-project-rsa/api/db/schema.prisma +++ /dev/null @@ -1,18 +0,0 @@ -datasource db { - provider = "sqlite" - url = env("DATABASE_URL") -} - -generator client { - provider = "prisma-client-js" - binaryTargets = "native" -} - -// Define your own datamodels here and run `yarn redwood prisma migrate dev` -// to create migrations for them and apply to your dev DB. -// TODO: Please remove the following example: -model UserExample { - id Int @id @default(autoincrement()) - email String @unique - name String? -} diff --git a/__fixtures__/test-project-rsa/api/jest.config.js b/__fixtures__/test-project-rsa/api/jest.config.js deleted file mode 100644 index 932fc82dce93..000000000000 --- a/__fixtures__/test-project-rsa/api/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// More info at https://redwoodjs.com/docs/project-configuration-dev-test-build - -const config = { - rootDir: '../', - preset: '@redwoodjs/testing/config/jest/api', -} - -module.exports = config diff --git a/__fixtures__/test-project-rsa/api/package.json b/__fixtures__/test-project-rsa/api/package.json deleted file mode 100644 index 7a73e956fa1a..000000000000 --- a/__fixtures__/test-project-rsa/api/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "api", - "version": "0.0.0", - "private": true, - "dependencies": { - "@redwoodjs/api": "7.0.0-canary.717", - "@redwoodjs/graphql-server": "7.0.0-canary.717" - } -} diff --git a/__fixtures__/test-project-rsa/api/server.config.js b/__fixtures__/test-project-rsa/api/server.config.js deleted file mode 100644 index 73dca9225a3e..000000000000 --- a/__fixtures__/test-project-rsa/api/server.config.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file allows you to configure the Fastify Server settings - * used by the RedwoodJS dev server. - * - * It also applies when running RedwoodJS with `yarn rw serve`. - * - * For the Fastify server options that you can set, see: - * https://www.fastify.io/docs/latest/Reference/Server/#factory - * - * Examples include: logger settings, timeouts, maximum payload limits, and more. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('fastify').FastifyServerOptions} */ -const config = { - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adjust - // the default non-development level to `info` - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, -} - -/** - * You can also register Fastify plugins and additional routes for the API and Web sides - * in the configureFastify function. - * - * This function has access to the Fastify instance and options, such as the side - * (web, api, or proxy) that is being configured and other settings like the apiRootPath - * of the functions endpoint. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('@redwoodjs/api-server/dist/types').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - } - - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - } - - return fastify -} - -module.exports = { - config, - configureFastify, -} diff --git a/__fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.test.ts b/__fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.test.ts deleted file mode 100644 index 0f01aa367a85..000000000000 --- a/__fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { mockRedwoodDirective, getDirectiveName } from '@redwoodjs/testing/api' - -import requireAuth from './requireAuth' - -describe('requireAuth directive', () => { - it('declares the directive sdl as schema, with the correct name', () => { - expect(requireAuth.schema).toBeTruthy() - expect(getDirectiveName(requireAuth.schema)).toBe('requireAuth') - }) - - it('requireAuth has stub implementation. Should not throw when current user', () => { - // If you want to set values in context, pass it through e.g. - // mockRedwoodDirective(requireAuth, { context: { currentUser: { id: 1, name: 'Lebron McGretzky' } }}) - const mockExecution = mockRedwoodDirective(requireAuth, { context: {} }) - - expect(mockExecution).not.toThrowError() - }) -}) diff --git a/__fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.ts b/__fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.ts deleted file mode 100644 index 77b31a70ae07..000000000000 --- a/__fixtures__/test-project-rsa/api/src/directives/requireAuth/requireAuth.ts +++ /dev/null @@ -1,25 +0,0 @@ -import gql from 'graphql-tag' - -import type { ValidatorDirectiveFunc } from '@redwoodjs/graphql-server' -import { createValidatorDirective } from '@redwoodjs/graphql-server' - -import { requireAuth as applicationRequireAuth } from 'src/lib/auth' - -export const schema = gql` - """ - Use to check whether or not a user is authenticated and is associated - with an optional set of roles. - """ - directive @requireAuth(roles: [String]) on FIELD_DEFINITION -` - -type RequireAuthValidate = ValidatorDirectiveFunc<{ roles?: string[] }> - -const validate: RequireAuthValidate = ({ directiveArgs }) => { - const { roles } = directiveArgs - applicationRequireAuth({ roles }) -} - -const requireAuth = createValidatorDirective(schema, validate) - -export default requireAuth diff --git a/__fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.test.ts b/__fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.test.ts deleted file mode 100644 index 88d99a56eab2..000000000000 --- a/__fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.test.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { getDirectiveName } from '@redwoodjs/testing/api' - -import skipAuth from './skipAuth' - -describe('skipAuth directive', () => { - it('declares the directive sdl as schema, with the correct name', () => { - expect(skipAuth.schema).toBeTruthy() - expect(getDirectiveName(skipAuth.schema)).toBe('skipAuth') - }) -}) diff --git a/__fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.ts b/__fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.ts deleted file mode 100644 index e85b94ae8b89..000000000000 --- a/__fixtures__/test-project-rsa/api/src/directives/skipAuth/skipAuth.ts +++ /dev/null @@ -1,16 +0,0 @@ -import gql from 'graphql-tag' - -import { createValidatorDirective } from '@redwoodjs/graphql-server' - -export const schema = gql` - """ - Use to skip authentication checks and allow public access. - """ - directive @skipAuth on FIELD_DEFINITION -` - -const skipAuth = createValidatorDirective(schema, () => { - return -}) - -export default skipAuth diff --git a/__fixtures__/test-project-rsa/api/src/functions/graphql.ts b/__fixtures__/test-project-rsa/api/src/functions/graphql.ts deleted file mode 100644 index f395c3b0f852..000000000000 --- a/__fixtures__/test-project-rsa/api/src/functions/graphql.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createGraphQLHandler } from '@redwoodjs/graphql-server' - -import directives from 'src/directives/**/*.{js,ts}' -import sdls from 'src/graphql/**/*.sdl.{js,ts}' -import services from 'src/services/**/*.{js,ts}' - -import { db } from 'src/lib/db' -import { logger } from 'src/lib/logger' - -export const handler = createGraphQLHandler({ - loggerConfig: { logger, options: {} }, - directives, - sdls, - services, - onException: () => { - // Disconnect from your database with an unhandled exception. - db.$disconnect() - }, -}) diff --git a/__fixtures__/test-project-rsa/api/src/graphql/.keep b/__fixtures__/test-project-rsa/api/src/graphql/.keep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/__fixtures__/test-project-rsa/api/src/lib/auth.ts b/__fixtures__/test-project-rsa/api/src/lib/auth.ts deleted file mode 100644 index f98fe93a960c..000000000000 --- a/__fixtures__/test-project-rsa/api/src/lib/auth.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Once you are ready to add authentication to your application - * you'll build out requireAuth() with real functionality. For - * now we just return `true` so that the calls in services - * have something to check against, simulating a logged - * in user that is allowed to access that service. - * - * See https://redwoodjs.com/docs/authentication for more info. - */ -export const isAuthenticated = () => { - return true -} - -export const hasRole = ({ roles }) => { - return roles !== undefined -} - -// This is used by the redwood directive -// in ./api/src/directives/requireAuth - -// Roles are passed in by the requireAuth directive if you have auth setup -// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars -export const requireAuth = ({ roles }) => { - return isAuthenticated() -} diff --git a/__fixtures__/test-project-rsa/api/src/lib/db.ts b/__fixtures__/test-project-rsa/api/src/lib/db.ts deleted file mode 100644 index 5006d00aae49..000000000000 --- a/__fixtures__/test-project-rsa/api/src/lib/db.ts +++ /dev/null @@ -1,21 +0,0 @@ -// See https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/constructor -// for options. - -import { PrismaClient } from '@prisma/client' - -import { emitLogLevels, handlePrismaLogging } from '@redwoodjs/api/logger' - -import { logger } from './logger' - -/* - * Instance of the Prisma Client - */ -export const db = new PrismaClient({ - log: emitLogLevels(['info', 'warn', 'error']), -}) - -handlePrismaLogging({ - db, - logger, - logLevels: ['info', 'warn', 'error'], -}) diff --git a/__fixtures__/test-project-rsa/api/src/lib/logger.ts b/__fixtures__/test-project-rsa/api/src/lib/logger.ts deleted file mode 100644 index 150a309767c5..000000000000 --- a/__fixtures__/test-project-rsa/api/src/lib/logger.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { createLogger } from '@redwoodjs/api/logger' - -/** - * Creates a logger with RedwoodLoggerOptions - * - * These extend and override default LoggerOptions, - * can define a destination like a file or other supported pino log transport stream, - * and sets whether or not to show the logger configuration settings (defaults to false) - * - * @param RedwoodLoggerOptions - * - * RedwoodLoggerOptions have - * @param {options} LoggerOptions - defines how to log, such as redaction and format - * @param {string | DestinationStream} destination - defines where to log, such as a transport stream or file - * @param {boolean} showConfig - whether to display logger configuration on initialization - */ -export const logger = createLogger({}) diff --git a/__fixtures__/test-project-rsa/api/src/services/.keep b/__fixtures__/test-project-rsa/api/src/services/.keep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/__fixtures__/test-project-rsa/api/tsconfig.json b/__fixtures__/test-project-rsa/api/tsconfig.json deleted file mode 100644 index fcbbf9872e43..000000000000 --- a/__fixtures__/test-project-rsa/api/tsconfig.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "compilerOptions": { - "noEmit": true, - "allowJs": true, - "esModuleInterop": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "skipLibCheck": false, - "baseUrl": "./", - "rootDirs": [ - "./src", - "../.redwood/types/mirror/api/src" - ], - "paths": { - "src/*": [ - "./src/*", - "../.redwood/types/mirror/api/src/*" - ], - "types/*": ["./types/*", "../types/*"], - "@redwoodjs/testing": ["../node_modules/@redwoodjs/testing/api"] - }, - "typeRoots": [ - "../node_modules/@types", - "./node_modules/@types" - ], - "types": ["jest"], - "jsx": "react-jsx" - }, - "include": [ - "src", - "../.redwood/types/includes/all-*", - "../.redwood/types/includes/api-*", - "../types" - ] -} diff --git a/__fixtures__/test-project-rsa/graphql.config.js b/__fixtures__/test-project-rsa/graphql.config.js deleted file mode 100644 index 2da7862f6b57..000000000000 --- a/__fixtures__/test-project-rsa/graphql.config.js +++ /dev/null @@ -1,5 +0,0 @@ -const { getPaths } = require('@redwoodjs/internal') - -module.exports = { - schema: getPaths().generated.schema, -} diff --git a/__fixtures__/test-project-rsa/jest.config.js b/__fixtures__/test-project-rsa/jest.config.js deleted file mode 100644 index c6b395cb762a..000000000000 --- a/__fixtures__/test-project-rsa/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// This the Redwood root jest config -// Each side, e.g. ./web/ and ./api/ has specific config that references this root -// More info at https://redwoodjs.com/docs/project-configuration-dev-test-build - -module.exports = { - rootDir: '.', - projects: ['/{*,!(node_modules)/**/}/jest.config.js'], -} diff --git a/__fixtures__/test-project-rsa/package.json b/__fixtures__/test-project-rsa/package.json deleted file mode 100644 index d40992f2f0ac..000000000000 --- a/__fixtures__/test-project-rsa/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "private": true, - "workspaces": { - "packages": [ - "api", - "web" - ] - }, - "devDependencies": { - "@redwoodjs/core": "7.0.0-canary.717" - }, - "eslintConfig": { - "extends": "@redwoodjs/eslint-config", - "root": true - }, - "engines": { - "node": "=20.x" - }, - "prisma": { - "seed": "yarn rw exec seed" - }, - "packageManager": "yarn@4.0.2", - "resolutions": { - "vite@4.4.9": "patch:vite@npm%3A4.4.9#./.yarn/patches/vite-npm-4.4.9-e845c1bbf8.patch" - } -} diff --git a/__fixtures__/test-project-rsa/prettier.config.js b/__fixtures__/test-project-rsa/prettier.config.js deleted file mode 100644 index 45058f7aa2a8..000000000000 --- a/__fixtures__/test-project-rsa/prettier.config.js +++ /dev/null @@ -1,18 +0,0 @@ -// https://prettier.io/docs/en/options.html -/** @type {import('prettier').RequiredOptions} */ -module.exports = { - trailingComma: 'es5', - bracketSpacing: true, - tabWidth: 2, - semi: false, - singleQuote: true, - arrowParens: 'always', - overrides: [ - { - files: 'Routes.*', - options: { - printWidth: 999, - }, - }, - ], -} diff --git a/__fixtures__/test-project-rsa/redwood.toml b/__fixtures__/test-project-rsa/redwood.toml deleted file mode 100644 index 33d327b98f4c..000000000000 --- a/__fixtures__/test-project-rsa/redwood.toml +++ /dev/null @@ -1,27 +0,0 @@ -# This file contains the configuration settings for your Redwood app. -# This file is also what makes your Redwood app a Redwood app. -# If you remove it and try to run `yarn rw dev`, you'll get an error. -# -# For the full list of options, see the "App Configuration: redwood.toml" doc: -# https://redwoodjs.com/docs/app-configuration-redwood-toml - -[web] - title = "Redwood App" - port = 8910 - apiUrl = "/.redwood/functions" # You can customize graphql and dbauth urls individually too: see https://redwoodjs.com/docs/app-configuration-redwood-toml#api-paths - includeEnvironmentVariables = [ - # Add any ENV vars that should be available to the web side to this array - # See https://redwoodjs.com/docs/environment-variables#web - ] -[api] - port = 8911 -[browser] - open = true -[notifications] - versionUpdates = ["latest"] - -[experimental.streamingSsr] - enabled = true - -[experimental.rsc] - enabled = true diff --git a/__fixtures__/test-project-rsa/scripts/.keep b/__fixtures__/test-project-rsa/scripts/.keep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/__fixtures__/test-project-rsa/scripts/seed.ts b/__fixtures__/test-project-rsa/scripts/seed.ts deleted file mode 100644 index 5797fd9426c1..000000000000 --- a/__fixtures__/test-project-rsa/scripts/seed.ts +++ /dev/null @@ -1,63 +0,0 @@ -import type { Prisma } from '@prisma/client' -import { db } from 'api/src/lib/db' - -export default async () => { - try { - // - // Manually seed via `yarn rw prisma db seed` - // Seeds automatically with `yarn rw prisma migrate dev` and `yarn rw prisma migrate reset` - // - // Update "const data = []" to match your data model and seeding needs - // - const data: Prisma.UserExampleCreateArgs['data'][] = [ - // To try this example data with the UserExample model in schema.prisma, - // uncomment the lines below and run 'yarn rw prisma migrate dev' - // - // { name: 'alice', email: 'alice@example.com' }, - // { name: 'mark', email: 'mark@example.com' }, - // { name: 'jackie', email: 'jackie@example.com' }, - // { name: 'bob', email: 'bob@example.com' }, - ] - console.log( - "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" - ) - - // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster - // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany - Promise.all( - // - // Change to match your data model and seeding needs - // - data.map(async (data: Prisma.UserExampleCreateArgs['data']) => { - const record = await db.userExample.create({ data }) - console.log(record) - }) - ) - - // If using dbAuth and seeding users, you'll need to add a `hashedPassword` - // and associated `salt` to their record. Here's how to create them using - // the same algorithm that dbAuth uses internally: - // - // import { hashPassword } from '@redwoodjs/auth-dbauth-api' - // - // const users = [ - // { name: 'john', email: 'john@example.com', password: 'secret1' }, - // { name: 'jane', email: 'jane@example.com', password: 'secret2' } - // ] - // - // for (const user of users) { - // const [hashedPassword, salt] = hashPassword(user.password) - // await db.user.create({ - // data: { - // name: user.name, - // email: user.email, - // hashedPassword, - // salt - // } - // }) - // } - } catch (error) { - console.warn('Please define your seed data.') - console.error(error) - } -} diff --git a/__fixtures__/test-project-rsa/scripts/tsconfig.json b/__fixtures__/test-project-rsa/scripts/tsconfig.json deleted file mode 100644 index babc7c436be6..000000000000 --- a/__fixtures__/test-project-rsa/scripts/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "compilerOptions": { - "noEmit": true, - "allowJs": true, - "esModuleInterop": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "node", - "baseUrl": "./", - "paths": { - "$api/*": [ - "../api/*" - ], - "api/*": [ - "../api/*" - ], - "$web/*": [ - "../web/*" - ], - "web/*": [ - "../web/*" - ], - "$web/src/*": [ - "../web/src/*", - "../.redwood/types/mirror/web/src/*" - ], - "web/src/*": [ - "../web/src/*", - "../.redwood/types/mirror/web/src/*" - ], - "types/*": ["../types/*", "../web/types/*", "../api/types/*"] - }, - "typeRoots": ["../node_modules/@types"], - "jsx": "preserve" - }, - "include": [ - ".", - "../.redwood/types/includes/all-*", - "../.redwood/types/includes/web-*", - "../types" - ] -} diff --git a/__fixtures__/test-project-rsa/web/jest.config.js b/__fixtures__/test-project-rsa/web/jest.config.js deleted file mode 100644 index 0e54869ebdcb..000000000000 --- a/__fixtures__/test-project-rsa/web/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// More info at https://redwoodjs.com/docs/project-configuration-dev-test-build - -const config = { - rootDir: '../', - preset: '@redwoodjs/testing/config/jest/web', -} - -module.exports = config diff --git a/__fixtures__/test-project-rsa/web/package.json b/__fixtures__/test-project-rsa/web/package.json deleted file mode 100644 index 6dac2b3ab8c2..000000000000 --- a/__fixtures__/test-project-rsa/web/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "web", - "version": "0.0.0", - "private": true, - "browserslist": { - "development": [ - "last 1 version" - ], - "production": [ - "defaults" - ] - }, - "dependencies": { - "@redwoodjs/forms": "7.0.0-canary.717", - "@redwoodjs/router": "7.0.0-canary.717", - "@redwoodjs/web": "7.0.0-canary.717", - "react": "0.0.0-experimental-e5205658f-20230913", - "react-dom": "0.0.0-experimental-e5205658f-20230913" - }, - "devDependencies": { - "@redwoodjs/vite": "7.0.0-canary.717" - } -} diff --git a/__fixtures__/test-project-rsa/web/public/README.md b/__fixtures__/test-project-rsa/web/public/README.md deleted file mode 100644 index 618395f02033..000000000000 --- a/__fixtures__/test-project-rsa/web/public/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Static Assets -Use this folder to add static files directly to your app. All included files and folders will be copied directly into the `/dist` folder (created when Vite builds for production). They will also be available during development when you run `yarn rw dev`. ->Note: files will *not* hot reload while the development server is running. You'll need to manually stop/start to access file changes. - -### Example Use -A file like `favicon.png` will be copied to `/dist/favicon.png`. A folder containing a file such as `static-files/my-logo.jpg` will be copied to `/dist/static-files/my-logo.jpg`. These can be referenced in your code directly without any special handling, e.g. -``` - -``` -and -``` - alt="Logo" /> -``` - - -## Best Practices -Because assets in this folder are bypassing the javascript module system, **this folder should be used sparingly** for assets such as favicons, robots.txt, manifests, libraries incompatible with Vite, etc. - -In general, it's best to import files directly into a template, page, or component. This allows Vite to include that file in the bundle when small enough, or to copy it over to the `dist` folder with a hash. - -### Example Asset Import with Vite -Instead of handling our logo image as a static file per the example above, we can do the following: -``` -import React from "react" -import logo from "./my-logo.jpg" - - -function Header() { - return Logo -} - -export default Header -``` - -See Vite's docs for [static asset handling](https://vitejs.dev/guide/assets.html) diff --git a/__fixtures__/test-project-rsa/web/public/favicon.png b/__fixtures__/test-project-rsa/web/public/favicon.png deleted file mode 100644 index 47414294173cb0795dcafb8813599fc382282556..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1741 zcmV;;1~U1HP)u3dvWaK1Jt7p7xtk~lm38V(vb%~9EcN4itP(!;||l>?RBBL}g^A8<`Fn z=_ofw?w2~Qt#0f9Ac3O;;Nt1}TFWmPb1YZ9hDBXZ zTK55jh;jRpRArCUs~@6m!BMLSuZE&5;HTqrDc^;f)?K|FaV6o1RTFbt+uA;);7z?5 z9axBZCgX!V;dhWl*HZCE&V7oz;oZ;*lOh^wZ2aYlLI<1rXkc0&HH!|5!S0|*s- zM*~yi#Ef4dES_G+_-z+`S<%x__Ulk8{Z?I!;wv8DmN?3t1H$+fJ*q^w!} z8`oOx{i(WL4oLgKN0~^gQyJ3t#+tnIhR=h}6@BVu1&_1g7*O6j$-5z)KLsPi3dqCH zq+n<+)2a$Afvr|B97(#s5f6-oU6qYHP<2rWEKfC)aEc=?j9nPwEyIiT4XCI%BScNpoU1Cro6M@BSt>YU4@z^JQPbj- zbMl0tf(CkBNTVH0run?8E#6lyouay;Bf8|_ud%WyA2Dkqc}nAEGkyiO!|#6>OX~jC z_3u?iQ>Xm%XNGGb_3~zzqyj(lHYRC##{sV_zNQl$KP40jQHRR#WeJ!akxfaL;HU(y z@6A7KA;pjflPx?{&_wwQ<6?f(Uld(h*XSf+Ct`QR3EDfau;y#nNiKfJ`Ny24=O+_9 z{chAh!5R0T(`<1ayxDvCtBZ?9Rn)QBoddzqchGPN4C8rB2tQ(*#m6zlySN7XwxM)X zNo%g}Q*?B_&%_K;!PvNxj9-D>BYn6zcIb@VGE=-?gP+zjpQ4x$*@_cm*TL-MtWeV+ z%v$Vh+2e#jDJ4Yc3NPgE9Uhr~V;6)j#bgMC+5!L2yYdX5ef->+k9d_?db{`}fWW+F zU&GKd9pW?cv0e8pA%20doi=OgaTV=dLOHx7cgAQlYDkLWaAUksGbO`Z7+>qo}~5K=?ZI!b@vaF5}r7- zyP2aiwSn}KbwGhrQ0A?W4L_Jwg?C#vAElLzpK~}}&ny0d@_GVhUqVEfXX9}XI8%B; z;BYTG$dM}6WS8urD4fqn$733@mNss6jB7yHY*76e*L=X6apM|Dgg^tZhpge9{Ojy9 z{Sl&x=vUbHU+7KFQEas^U*jQ8^rj_XAzI=0y_Nmx3ChT&K?_-b!N10g5+C9TqMGZ@!a>mh#`}nJM>Cu2v@32F*rQ(x05Xb64 zV-ML!u$4W31M7A@mi~3fnSOQSZ->>TC+02Mt+0csMl0*2TCklB$VOH11pW{4 zD1)V+^h4n@OYlO&;Z!-dk{(LVtA%;(o#!>jYgG>s%eL0iXx~jJsrfL3rwo;cc52kP zRnvwZId>`-FV`PUvUKk4gU&nzX&+gTEm1bNsCdaXc zvaOny-3X43Fs?Jn;>*U?jaR1`9KIVP?p(?ulraQZc;T0UKos^SChGJoJYVu1%?E0v zDGNOfZKPrPKtyFYEU~bZZ~rB{4X2ko>_VJlJw3rw-!>TIT6R!3;POq5yNZdnfu$Ao j!CVlN4fQVi0D=DiS&&%ubg+{I00000NkvXXu0mjf8bDG2 diff --git a/__fixtures__/test-project-rsa/web/public/robots.txt b/__fixtures__/test-project-rsa/web/public/robots.txt deleted file mode 100644 index eb0536286f30..000000000000 --- a/__fixtures__/test-project-rsa/web/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/__fixtures__/test-project-rsa/web/src/App.tsx b/__fixtures__/test-project-rsa/web/src/App.tsx deleted file mode 100644 index 27cb83121ff7..000000000000 --- a/__fixtures__/test-project-rsa/web/src/App.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { FatalErrorBoundary, RedwoodProvider } from '@redwoodjs/web' -import { RedwoodApolloProvider } from '@redwoodjs/web/apollo' - -import FatalErrorPage from './pages/FatalErrorPage/FatalErrorPage' -import Routes from './Routes' - -import './index.css' - -const App = () => ( - - - - - - - -) - -export default App diff --git a/__fixtures__/test-project-rsa/web/src/Counter.css b/__fixtures__/test-project-rsa/web/src/Counter.css deleted file mode 100644 index 4cbd74d7d5b6..000000000000 --- a/__fixtures__/test-project-rsa/web/src/Counter.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This should affect all h3 elements on the page, both server components and - * client components. This is just standard CSS stuff - */ -h3 { - color: orange; -} diff --git a/__fixtures__/test-project-rsa/web/src/Counter.module.css b/__fixtures__/test-project-rsa/web/src/Counter.module.css deleted file mode 100644 index 736b0da8688c..000000000000 --- a/__fixtures__/test-project-rsa/web/src/Counter.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.header { - font-style: italic; -} diff --git a/__fixtures__/test-project-rsa/web/src/Counter.tsx b/__fixtures__/test-project-rsa/web/src/Counter.tsx deleted file mode 100644 index a6e38c4059b5..000000000000 --- a/__fixtures__/test-project-rsa/web/src/Counter.tsx +++ /dev/null @@ -1,19 +0,0 @@ -'use client' - -import React from 'react' - -// @ts-expect-error no types -import styles from './Counter.module.css' -import './Counter.css' - -export const Counter = () => { - const [count, setCount] = React.useState(0) - - return ( -
-

Count: {count}

- -

This is a client component.

-
- ) -} diff --git a/__fixtures__/test-project-rsa/web/src/Document.tsx b/__fixtures__/test-project-rsa/web/src/Document.tsx deleted file mode 100644 index f989f217529b..000000000000 --- a/__fixtures__/test-project-rsa/web/src/Document.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' - -import { Css, Meta } from '@redwoodjs/web' -import type { TagDescriptor } from '@redwoodjs/web' - -interface DocumentProps { - children: React.ReactNode - css: string[] // array of css import strings - meta?: TagDescriptor[] -} - -export const Document: React.FC = ({ children, css, meta }) => { - return ( - - - - - - - - - -
{children}
- - - ) -} diff --git a/__fixtures__/test-project-rsa/web/src/Routes.tsx b/__fixtures__/test-project-rsa/web/src/Routes.tsx deleted file mode 100644 index 89a1df33eef0..000000000000 --- a/__fixtures__/test-project-rsa/web/src/Routes.tsx +++ /dev/null @@ -1,31 +0,0 @@ -// In this file, all Page components from 'src/pages` are auto-imported. Nested -// directories are supported, and should be uppercase. Each subdirectory will be -// prepended onto the component name. -// -// Examples: -// -// 'src/pages/HomePage/HomePage.js' -> HomePage -// 'src/pages/Admin/BooksPage/BooksPage.js' -> AdminBooksPage - -import { Router, Route, Set } from '@redwoodjs/router' -import { serve } from '@redwoodjs/vite/client' - -import NavigationLayout from './layouts/NavigationLayout/NavigationLayout' -import NotFoundPage from './pages/NotFoundPage/NotFoundPage' - -const AboutPage = serve('AboutPage') -const HomePage = serve('HomePage') - -const Routes = () => { - return ( - - - - - - - - ) -} - -export default Routes diff --git a/__fixtures__/test-project-rsa/web/src/components/.keep b/__fixtures__/test-project-rsa/web/src/components/.keep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/__fixtures__/test-project-rsa/web/src/components/Counter/AboutCounter.tsx b/__fixtures__/test-project-rsa/web/src/components/Counter/AboutCounter.tsx deleted file mode 100644 index c86915e87f8b..000000000000 --- a/__fixtures__/test-project-rsa/web/src/components/Counter/AboutCounter.tsx +++ /dev/null @@ -1,20 +0,0 @@ -'use client' - -import React from 'react' - -// @ts-expect-error no types -import styles from './Counter.module.css' -import './Counter.css' - -export const AboutCounter = () => { - const [count, setCount] = React.useState(0) - - return ( -
-

Count: {count}

- -

This is a client component.

-

RSC on client: {globalThis.RWJS_EXP_RSC ? 'enabled' : 'disabled'}

-
- ) -} diff --git a/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.css b/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.css deleted file mode 100644 index 4cbd74d7d5b6..000000000000 --- a/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.css +++ /dev/null @@ -1,7 +0,0 @@ -/** - * This should affect all h3 elements on the page, both server components and - * client components. This is just standard CSS stuff - */ -h3 { - color: orange; -} diff --git a/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.module.css b/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.module.css deleted file mode 100644 index 736b0da8688c..000000000000 --- a/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.module.css +++ /dev/null @@ -1,3 +0,0 @@ -.header { - font-style: italic; -} diff --git a/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.tsx b/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.tsx deleted file mode 100644 index 5f21e7cdac2d..000000000000 --- a/__fixtures__/test-project-rsa/web/src/components/Counter/Counter.tsx +++ /dev/null @@ -1,21 +0,0 @@ -'use client' - -import React from 'react' - -import 'client-only' - -// @ts-expect-error no types -import styles from './Counter.module.css' -import './Counter.css' - -export const Counter = () => { - const [count, setCount] = React.useState(0) - - return ( -
-

Count: {count}

- -

This is a client component.

-
- ) -} diff --git a/__fixtures__/test-project-rsa/web/src/entries.ts b/__fixtures__/test-project-rsa/web/src/entries.ts deleted file mode 100644 index 6259057e245b..000000000000 --- a/__fixtures__/test-project-rsa/web/src/entries.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { defineEntries } from '@redwoodjs/vite/entries' - -export default defineEntries( - // getEntry - async (id) => { - switch (id) { - case 'AboutPage': - return import('./pages/AboutPage/AboutPage') - case 'HomePage': - return import('./pages/HomePage/HomePage') - default: - return null - } - } -) diff --git a/__fixtures__/test-project-rsa/web/src/entry.client.tsx b/__fixtures__/test-project-rsa/web/src/entry.client.tsx deleted file mode 100644 index d55036f35465..000000000000 --- a/__fixtures__/test-project-rsa/web/src/entry.client.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { hydrateRoot, createRoot } from 'react-dom/client' - -import App from './App' -/** - * When `#redwood-app` isn't empty then it's very likely that you're using - * prerendering. So React attaches event listeners to the existing markup - * rather than replacing it. - * https://reactjs.org/docs/react-dom-client.html#hydrateroot - */ -const redwoodAppElement = document.getElementById('redwood-app') - -if (!redwoodAppElement) { - throw new Error( - "Could not find an element with ID 'redwood-app'. Please ensure it exists in your 'web/src/index.html' file." - ) -} - -if (redwoodAppElement.children?.length > 0) { - hydrateRoot(redwoodAppElement, ) -} else { - const root = createRoot(redwoodAppElement) - root.render() -} diff --git a/__fixtures__/test-project-rsa/web/src/entry.server.tsx b/__fixtures__/test-project-rsa/web/src/entry.server.tsx deleted file mode 100644 index a52b268b771d..000000000000 --- a/__fixtures__/test-project-rsa/web/src/entry.server.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import App from './App' -import { Document } from './Document' - -interface Props { - css: string[] - meta?: any[] -} - -export const ServerEntry: React.FC = ({ css, meta }) => { - return ( - - - - ) -} diff --git a/__fixtures__/test-project-rsa/web/src/index.css b/__fixtures__/test-project-rsa/web/src/index.css deleted file mode 100644 index 57c14ee231a9..000000000000 --- a/__fixtures__/test-project-rsa/web/src/index.css +++ /dev/null @@ -1,4 +0,0 @@ -html, body { - margin: 0; - padding: 0; -} diff --git a/__fixtures__/test-project-rsa/web/src/index.html b/__fixtures__/test-project-rsa/web/src/index.html deleted file mode 100644 index 6b3b066be037..000000000000 --- a/__fixtures__/test-project-rsa/web/src/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - -
- - - diff --git a/__fixtures__/test-project-rsa/web/src/layouts/.keep b/__fixtures__/test-project-rsa/web/src/layouts/.keep deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.css b/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.css deleted file mode 100644 index a3e7be665c31..000000000000 --- a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.css +++ /dev/null @@ -1,32 +0,0 @@ -.navigation-layout { - & nav { - display: flex; - justify-content: space-between; - align-items: center; - padding: 10px; - background-color: color-mix(in srgb, yellow 50%, transparent); - border-bottom: 2px dashed color-mix(in srgb, yellow 90%, black); - } - - & ul { - list-style: none; - display: flex; - margin: 0; - padding: 0; - } - - & li { - margin-right: 10px; - } - - & a { - text-decoration: none; - color: #333; - padding: 5px; - border-bottom: 2px solid transparent; - } - - & a:hover { - border-bottom: 2px solid #333; - } -} diff --git a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.stories.tsx b/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.stories.tsx deleted file mode 100644 index 4ec5ddf88eb3..000000000000 --- a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.stories.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import type { Meta, StoryObj } from '@storybook/react' - -import NavigationLayout from './NavigationLayout' - -const meta: Meta = { - component: NavigationLayout, -} - -export default meta - -type Story = StoryObj - -export const Primary: Story = {} diff --git a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.test.tsx b/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.test.tsx deleted file mode 100644 index 74fff5fc1509..000000000000 --- a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.test.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { render } from '@redwoodjs/testing/web' - -import NavigationLayout from './NavigationLayout' - -// Improve this test with help from the Redwood Testing Doc: -// https://redwoodjs.com/docs/testing#testing-pages-layouts - -describe('NavigationLayout', () => { - it('renders successfully', () => { - expect(() => { - render() - }).not.toThrow() - }) -}) diff --git a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.tsx b/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.tsx deleted file mode 100644 index 4f13e197309a..000000000000 --- a/__fixtures__/test-project-rsa/web/src/layouts/NavigationLayout/NavigationLayout.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Link, routes } from '@redwoodjs/router' - -import './NavigationLayout.css' - -type NavigationLayoutProps = { - children?: React.ReactNode -} - -const NavigationLayout = ({ children }: NavigationLayoutProps) => { - return ( -
- -
{children}
-
- ) -} - -export default NavigationLayout diff --git a/__fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.css b/__fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.css deleted file mode 100644 index 995b3bbde1e0..000000000000 --- a/__fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.css +++ /dev/null @@ -1,2 +0,0 @@ -.about-page { -} diff --git a/__fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.tsx b/__fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.tsx deleted file mode 100644 index 2706e12e63db..000000000000 --- a/__fixtures__/test-project-rsa/web/src/pages/AboutPage/AboutPage.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Assets } from '@redwoodjs/vite/assets' -import { ProdRwRscServerGlobal } from '@redwoodjs/vite/rwRscGlobal' - -import { AboutCounter } from '../../components/Counter/AboutCounter' - -import './AboutPage.css' - -// TODO (RSC) Something like this will probably be needed -// const RwRscGlobal = import.meta.env.PROD ? ProdRwRscServerGlobal : DevRwRscServerGlobal; - -globalThis.rwRscGlobal = new ProdRwRscServerGlobal() - -const AboutPage = () => { - return ( -
- {/* TODO (RSC) should be part of the router later */} - -
-

About Redwood

- -

RSC on server: {globalThis.RWJS_EXP_RSC ? 'enabled' : 'disabled'}

-
-
- ) -} - -export default AboutPage diff --git a/__fixtures__/test-project-rsa/web/src/pages/FatalErrorPage/FatalErrorPage.tsx b/__fixtures__/test-project-rsa/web/src/pages/FatalErrorPage/FatalErrorPage.tsx deleted file mode 100644 index b2bb436f8ed0..000000000000 --- a/__fixtures__/test-project-rsa/web/src/pages/FatalErrorPage/FatalErrorPage.tsx +++ /dev/null @@ -1,57 +0,0 @@ -// This page will be rendered when an error makes it all the way to the top of the -// application without being handled by a Javascript catch statement or React error -// boundary. -// -// You can modify this page as you wish, but it is important to keep things simple to -// avoid the possibility that it will cause its own error. If it does, Redwood will -// still render a generic error page, but your users will prefer something a bit more -// thoughtful :) - -// This import will be automatically removed when building for production -import { DevFatalErrorPage } from '@redwoodjs/web/dist/components/DevFatalErrorPage' - -export default DevFatalErrorPage || - (() => ( -
- +
+

404 Page Not Found

+
+
+ + + + + diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/README.md b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/README.md new file mode 100644 index 000000000000..345ab0cd5acf --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/README.md @@ -0,0 +1,54 @@ +# Static Assets + +Use this folder to add static files directly to your app. All included files and +folders will be copied directly into the `/dist` folder (created when Vite +builds for production). They will also be available during development when you +run `yarn rw dev`. >Note: files will _not_ hot reload while the development +server is running. You'll need to manually stop/start to access file changes. + +### Example Use + +A file like `favicon.png` will be copied to `/dist/favicon.png`. A folder +containing a file such as `static-files/my-logo.jpg` will be copied to +`/dist/static-files/my-logo.jpg`. These can be referenced in your code directly +without any special handling, e.g. + +``` + +``` + +and + +``` + alt="Logo" /> +``` + +## Best Practices + +Because assets in this folder are bypassing the javascript module system, **this +folder should be used sparingly** for assets such as favicons, robots.txt, +manifests, libraries incompatible with Vite, etc. + +In general, it's best to import files directly into a template, page, or +component. This allows Vite to include that file in the bundle when small +enough, or to copy it over to the `dist` folder with a hash. + +### Example Asset Import with Vite + +Instead of handling our logo image as a static file per the example above, we +can do the following: + +``` +import React from "react" +import logo from "./my-logo.jpg" + + +function Header() { + return Logo +} + +export default Header +``` + +See Vite's docs for +[static asset handling](https://vitejs.dev/guide/assets.html) diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/about.html b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/about.html new file mode 100644 index 000000000000..9daca9e2fa83 --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/about.html @@ -0,0 +1,40 @@ + + + + + + Redwood App | Redwood App + + + + + + + + + + +
+
+

Redwood Blog

+ +
+
+

This site was created to demonstrate my mastery of Redwood: Look on my works, ye mighty, and + despair!

+ +
+
+ + + diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/assets/AboutPage-7ec0f8df.js b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/assets/AboutPage-7ec0f8df.js new file mode 100644 index 000000000000..a679b2cfce14 --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/assets/AboutPage-7ec0f8df.js @@ -0,0 +1,3 @@ +import{j as t}from"./index-ff057e8f.js";const o=()=>t.jsx("p",{className:"font-light",children:"This site was created to demonstrate my mastery of Redwood: Look on my works, ye mighty, and despair!"});export{o as default}; +globalThis.__REDWOOD__PRERENDER_PAGES = globalThis.__REDWOOD__PRERENDER_PAGES || {}; +globalThis.__REDWOOD__PRERENDER_PAGES.AboutPage=o; diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/assets/index-613d397d.css b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/assets/index-613d397d.css new file mode 100644 index 000000000000..a46c81a539ee --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/assets/index-613d397d.css @@ -0,0 +1,2 @@ +.rw-scaffold{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.rw-scaffold h1,.rw-scaffold h2{margin:0}.rw-scaffold a{background-color:transparent}.rw-scaffold ul{margin:0;padding:0}.rw-scaffold input::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.rw-scaffold input::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.rw-header{display:flex;justify-content:space-between;padding:1rem 2rem}.rw-main{margin-left:1rem;margin-right:1rem;padding-bottom:1rem}.rw-segment{width:100%;overflow:hidden;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity));scrollbar-color:#a1a1aa transparent}.rw-segment::-webkit-scrollbar{height:initial}.rw-segment::-webkit-scrollbar-track{border-radius:0 0 10px 10px/0px 0px 10px 10px;border-width:0px;border-top-width:1px;border-style:solid;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity));background-color:transparent;padding:2px}.rw-segment::-webkit-scrollbar-thumb{border-radius:9999px;border-width:3px;border-style:solid;border-color:transparent;--tw-bg-opacity: 1;background-color:rgb(161 161 170 / var(--tw-bg-opacity));background-clip:content-box}.rw-segment-header{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity));padding:.75rem 1rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.rw-segment-main{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:1rem}.rw-link{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity));text-decoration-line:underline}.rw-link:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.rw-forgot-link{margin-top:.25rem;text-align:right;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity));text-decoration-line:underline}.rw-forgot-link:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.rw-heading{font-weight:600}.rw-heading.rw-heading-primary{font-size:1.25rem;line-height:1.75rem}.rw-heading.rw-heading-secondary{font-size:.875rem;line-height:1.25rem}.rw-heading .rw-link{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity));text-decoration-line:none}.rw-heading .rw-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.rw-cell-error{font-size:.875rem;line-height:1.25rem;font-weight:600}.rw-form-wrapper{margin-top:-1rem;font-size:.875rem;line-height:1.25rem}.rw-cell-error,.rw-form-error-wrapper{margin-top:1rem;margin-bottom:1rem;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(254 226 226 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity));padding:1rem;--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.rw-form-error-title{margin:0;font-weight:600}.rw-form-error-list{margin-top:.5rem;list-style-position:inside;list-style-type:disc}.rw-button{display:flex;cursor:pointer;justify-content:center;border-radius:.25rem;border-width:0px;--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity));padding:.25rem 1rem;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;line-height:2;letter-spacing:.025em;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity));text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.1s}.rw-button:hover{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-button.rw-button-small{border-radius:.125rem;padding:.25rem .5rem;font-size:.75rem;line-height:1rem}.rw-button.rw-button-green{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-button.rw-button-green:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity))}.rw-button.rw-button-blue{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-button.rw-button-blue:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.rw-button.rw-button-red{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-button.rw-button-red:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-button-icon{margin-right:.25rem;font-size:1.25rem;line-height:1.25rem}.rw-button-group{margin:.75rem .5rem;display:flex;justify-content:center}.rw-button-group .rw-button{margin-left:.25rem;margin-right:.25rem}.rw-form-wrapper .rw-button-group{margin-top:2rem}.rw-label{margin-top:1.5rem;display:block;text-align:left;font-weight:600;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.rw-label.rw-label-error{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.rw-input{margin-top:.5rem;display:block;width:100%;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity));padding:.5rem;outline:2px solid transparent;outline-offset:2px}.rw-check-radio-items{display:flex;justify-items:center}.rw-check-radio-item-none{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.rw-input[type=checkbox],.rw-input[type=radio]{margin-left:0;margin-right:.25rem;margin-top:.25rem;display:inline;width:1rem}.rw-input:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.rw-input-error{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.rw-input-error:focus{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity));outline:2px solid transparent;outline-offset:2px;box-shadow:0 0 5px #c53030}.rw-field-error{margin-top:.25rem;display:block;font-size:.75rem;line-height:1rem;font-weight:600;text-transform:uppercase;--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.rw-table-wrapper-responsive{overflow-x:auto}.rw-table-wrapper-responsive .rw-table{min-width:48rem}.rw-table{width:100%;font-size:.875rem;line-height:1.25rem}.rw-table th,.rw-table td{padding:.75rem}.rw-table td{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.rw-table tr:nth-child(odd) td,.rw-table tr:nth-child(odd) th{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.rw-table thead tr{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.rw-table th{text-align:left;font-weight:600}.rw-table thead th{text-align:left}.rw-table tbody th{text-align:right}@media (min-width: 768px){.rw-table tbody th{width:20%}}.rw-table tbody tr{border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.rw-table input{margin-left:0}.rw-table-actions{display:flex;height:1rem;align-items:center;justify-content:flex-end;padding-right:.25rem}.rw-table-actions .rw-button{background-color:transparent}.rw-table-actions .rw-button:hover{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-table-actions .rw-button-blue{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.rw-table-actions .rw-button-blue:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-table-actions .rw-button-red{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.rw-table-actions .rw-button-red:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.rw-text-center{text-align:center}.rw-login-container{margin-left:auto;margin-right:auto;margin-top:4rem;margin-bottom:4rem;display:flex;width:24rem;flex-wrap:wrap;align-items:center;justify-content:center}.rw-login-container .rw-form-wrapper{width:100%;text-align:center}.rw-login-link{margin-top:1rem;width:100%;text-align:center;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.rw-webauthn-wrapper{margin-left:1rem;margin-right:1rem;margin-top:1.5rem;line-height:1.5rem}.rw-webauthn-wrapper h2{margin-bottom:1rem;font-size:1.25rem;line-height:1.75rem;font-weight:700}/*! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com + */*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-4{margin-bottom:1rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.table{display:table}.max-w-4xl{max-width:56rem}.items-center{align-items:center}.justify-between{justify-content:space-between}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.border{border-width:1px}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.p-12{padding:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.text-left{text-align:left}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.font-light{font-weight:300}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-tight{letter-spacing:-.025em}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.visited\:text-purple-600:visited{color:#9333ea}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:text-blue-100:hover{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity))} diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/build-manifest.json b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/build-manifest.json new file mode 100644 index 000000000000..ac9125cd9908 --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/build-manifest.json @@ -0,0 +1,230 @@ +{ + "_ContactForm-d76f67ab.js": { + "file": "assets/ContactForm-d76f67ab.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ] + }, + "_PostForm-4b7853da.js": { + "file": "assets/PostForm-4b7853da.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ] + }, + "_formatters-2fce1756.js": { + "file": "assets/formatters-2fce1756.js", + "imports": [ + "index.html" + ] + }, + "_index-77bc0912.js": { + "file": "assets/index-77bc0912.js", + "imports": [ + "index.html" + ] + }, + "index.css": { + "file": "assets/index-613d397d.css", + "src": "index.css" + }, + "index.html": { + "css": [ + "assets/index-613d397d.css" + ], + "dynamicImports": [ + "pages/AboutPage/AboutPage.tsx", + "pages/BlogPostPage/BlogPostPage.tsx", + "pages/ContactUsPage/ContactUsPage.tsx", + "pages/DoublePage/DoublePage.tsx", + "pages/ForgotPasswordPage/ForgotPasswordPage.tsx", + "pages/LoginPage/LoginPage.tsx", + "pages/NotFoundPage/NotFoundPage.tsx", + "pages/ProfilePage/ProfilePage.tsx", + "pages/ResetPasswordPage/ResetPasswordPage.tsx", + "pages/SignupPage/SignupPage.tsx", + "pages/WaterfallPage/WaterfallPage.tsx", + "pages/Contact/ContactPage/ContactPage.tsx", + "pages/Contact/ContactsPage/ContactsPage.tsx", + "pages/Contact/EditContactPage/EditContactPage.tsx", + "pages/Contact/NewContactPage/NewContactPage.tsx", + "pages/Post/EditPostPage/EditPostPage.tsx", + "pages/Post/NewPostPage/NewPostPage.tsx", + "pages/Post/PostPage/PostPage.tsx", + "pages/Post/PostsPage/PostsPage.tsx" + ], + "file": "assets/index-ff057e8f.js", + "isEntry": true, + "src": "index.html" + }, + "pages/AboutPage/AboutPage.tsx": { + "file": "assets/AboutPage-7ec0f8df.js", + "imports": [ + "index.html" + ], + "isDynamicEntry": true, + "src": "pages/AboutPage/AboutPage.tsx" + }, + "pages/BlogPostPage/BlogPostPage.tsx": { + "file": "assets/BlogPostPage-526c7060.js", + "imports": [ + "index.html" + ], + "isDynamicEntry": true, + "src": "pages/BlogPostPage/BlogPostPage.tsx" + }, + "pages/Contact/ContactPage/ContactPage.tsx": { + "file": "assets/ContactPage-4a851c42.js", + "imports": [ + "index.html", + "_formatters-2fce1756.js" + ], + "isDynamicEntry": true, + "src": "pages/Contact/ContactPage/ContactPage.tsx" + }, + "pages/Contact/ContactsPage/ContactsPage.tsx": { + "file": "assets/ContactsPage-1fcf6187.js", + "imports": [ + "index.html", + "_formatters-2fce1756.js" + ], + "isDynamicEntry": true, + "src": "pages/Contact/ContactsPage/ContactsPage.tsx" + }, + "pages/Contact/EditContactPage/EditContactPage.tsx": { + "file": "assets/EditContactPage-1622b085.js", + "imports": [ + "index.html", + "_ContactForm-d76f67ab.js", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/Contact/EditContactPage/EditContactPage.tsx" + }, + "pages/Contact/NewContactPage/NewContactPage.tsx": { + "file": "assets/NewContactPage-5935f0db.js", + "imports": [ + "index.html", + "_ContactForm-d76f67ab.js", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/Contact/NewContactPage/NewContactPage.tsx" + }, + "pages/ContactUsPage/ContactUsPage.tsx": { + "file": "assets/ContactUsPage-71f00589.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/ContactUsPage/ContactUsPage.tsx" + }, + "pages/DoublePage/DoublePage.tsx": { + "file": "assets/DoublePage-0bee4876.js", + "imports": [ + "index.html" + ], + "isDynamicEntry": true, + "src": "pages/DoublePage/DoublePage.tsx" + }, + "pages/ForgotPasswordPage/ForgotPasswordPage.tsx": { + "file": "assets/ForgotPasswordPage-15d7cf2f.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/ForgotPasswordPage/ForgotPasswordPage.tsx" + }, + "pages/LoginPage/LoginPage.tsx": { + "file": "assets/LoginPage-5f6d498c.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/LoginPage/LoginPage.tsx" + }, + "pages/NotFoundPage/NotFoundPage.tsx": { + "file": "assets/NotFoundPage-0903a03f.js", + "imports": [ + "index.html" + ], + "isDynamicEntry": true, + "src": "pages/NotFoundPage/NotFoundPage.tsx" + }, + "pages/Post/EditPostPage/EditPostPage.tsx": { + "file": "assets/EditPostPage-abe727e6.js", + "imports": [ + "index.html", + "_PostForm-4b7853da.js", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/Post/EditPostPage/EditPostPage.tsx" + }, + "pages/Post/NewPostPage/NewPostPage.tsx": { + "file": "assets/NewPostPage-dcbeffd5.js", + "imports": [ + "index.html", + "_PostForm-4b7853da.js", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/Post/NewPostPage/NewPostPage.tsx" + }, + "pages/Post/PostPage/PostPage.tsx": { + "file": "assets/PostPage-292888c6.js", + "imports": [ + "index.html", + "_formatters-2fce1756.js" + ], + "isDynamicEntry": true, + "src": "pages/Post/PostPage/PostPage.tsx" + }, + "pages/Post/PostsPage/PostsPage.tsx": { + "file": "assets/PostsPage-cacd5a1e.js", + "imports": [ + "index.html", + "_formatters-2fce1756.js" + ], + "isDynamicEntry": true, + "src": "pages/Post/PostsPage/PostsPage.tsx" + }, + "pages/ProfilePage/ProfilePage.tsx": { + "file": "assets/ProfilePage-133e6e05.js", + "imports": [ + "index.html" + ], + "isDynamicEntry": true, + "src": "pages/ProfilePage/ProfilePage.tsx" + }, + "pages/ResetPasswordPage/ResetPasswordPage.tsx": { + "file": "assets/ResetPasswordPage-a3399e1b.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/ResetPasswordPage/ResetPasswordPage.tsx" + }, + "pages/SignupPage/SignupPage.tsx": { + "file": "assets/SignupPage-44411fe1.js", + "imports": [ + "index.html", + "_index-77bc0912.js" + ], + "isDynamicEntry": true, + "src": "pages/SignupPage/SignupPage.tsx" + }, + "pages/WaterfallPage/WaterfallPage.tsx": { + "file": "assets/WaterfallPage-46b80a6f.js", + "imports": [ + "index.html" + ], + "isDynamicEntry": true, + "src": "pages/WaterfallPage/WaterfallPage.tsx" + } +} diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/contacts/new.html b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/contacts/new.html new file mode 100644 index 000000000000..a3d4460288bb --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/contacts/new.html @@ -0,0 +1,50 @@ + + + + + + Redwood App | Redwood App + + + + + + + + + + +
+
+
+
+

Contacts

+
+
New Contact +
+
+
+
+
+

New Contact

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + + diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/favicon.png b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..47414294173cb0795dcafb8813599fc382282556 GIT binary patch literal 1741 zcmV;;1~U1HP)u3dvWaK1Jt7p7xtk~lm38V(vb%~9EcN4itP(!;||l>?RBBL}g^A8<`Fn z=_ofw?w2~Qt#0f9Ac3O;;Nt1}TFWmPb1YZ9hDBXZ zTK55jh;jRpRArCUs~@6m!BMLSuZE&5;HTqrDc^;f)?K|FaV6o1RTFbt+uA;);7z?5 z9axBZCgX!V;dhWl*HZCE&V7oz;oZ;*lOh^wZ2aYlLI<1rXkc0&HH!|5!S0|*s- zM*~yi#Ef4dES_G+_-z+`S<%x__Ulk8{Z?I!;wv8DmN?3t1H$+fJ*q^w!} z8`oOx{i(WL4oLgKN0~^gQyJ3t#+tnIhR=h}6@BVu1&_1g7*O6j$-5z)KLsPi3dqCH zq+n<+)2a$Afvr|B97(#s5f6-oU6qYHP<2rWEKfC)aEc=?j9nPwEyIiT4XCI%BScNpoU1Cro6M@BSt>YU4@z^JQPbj- zbMl0tf(CkBNTVH0run?8E#6lyouay;Bf8|_ud%WyA2Dkqc}nAEGkyiO!|#6>OX~jC z_3u?iQ>Xm%XNGGb_3~zzqyj(lHYRC##{sV_zNQl$KP40jQHRR#WeJ!akxfaL;HU(y z@6A7KA;pjflPx?{&_wwQ<6?f(Uld(h*XSf+Ct`QR3EDfau;y#nNiKfJ`Ny24=O+_9 z{chAh!5R0T(`<1ayxDvCtBZ?9Rn)QBoddzqchGPN4C8rB2tQ(*#m6zlySN7XwxM)X zNo%g}Q*?B_&%_K;!PvNxj9-D>BYn6zcIb@VGE=-?gP+zjpQ4x$*@_cm*TL-MtWeV+ z%v$Vh+2e#jDJ4Yc3NPgE9Uhr~V;6)j#bgMC+5!L2yYdX5ef->+k9d_?db{`}fWW+F zU&GKd9pW?cv0e8pA%20doi=OgaTV=dLOHx7cgAQlYDkLWaAUksGbO`Z7+>qo}~5K=?ZI!b@vaF5}r7- zyP2aiwSn}KbwGhrQ0A?W4L_Jwg?C#vAElLzpK~}}&ny0d@_GVhUqVEfXX9}XI8%B; z;BYTG$dM}6WS8urD4fqn$733@mNss6jB7yHY*76e*L=X6apM|Dgg^tZhpge9{Ojy9 z{Sl&x=vUbHU+7KFQEas^U*jQ8^rj_XAzI=0y_Nmx3ChT&K?_-b!N10g5+C9TqMGZ@!a>mh#`}nJM>Cu2v@32F*rQ(x05Xb64 zV-ML!u$4W31M7A@mi~3fnSOQSZ->>TC+02Mt+0csMl0*2TCklB$VOH11pW{4 zD1)V+^h4n@OYlO&;Z!-dk{(LVtA%;(o#!>jYgG>s%eL0iXx~jJsrfL3rwo;cc52kP zRnvwZId>`-FV`PUvUKk4gU&nzX&+gTEm1bNsCdaXc zvaOny-3X43Fs?Jn;>*U?jaR1`9KIVP?p(?ulraQZc;T0UKos^SChGJoJYVu1%?E0v zDGNOfZKPrPKtyFYEU~bZZ~rB{4X2ko>_VJlJw3rw-!>TIT6R!3;POq5yNZdnfu$Ao j!CVlN4fQVi0D=DiS&&%ubg+{I00000NkvXXu0mjf8bDG2 literal 0 HcmV?d00001 diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/index.html b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/index.html new file mode 100644 index 000000000000..0e54fa2690c7 --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/index.html @@ -0,0 +1,79 @@ + + + + + Redwood App | Redwood App + + + + + + + + + + +
+
+

Redwood Blog

+ +
+
+
+
+
+

October 13, 2023 - By: User One + (user.one@example.com)

+

Welcome to the + blog!

+
+
I'm baby single- origin coffee kickstarter lo - fi paleo + skateboard.Tumblr hashtag austin whatever DIY plaid knausgaard fanny pack messenger bag blog next level + woke.Ethical bitters fixie freegan,helvetica pitchfork 90's tbh chillwave mustache godard subway tile ramps + art party. Hammock sustainable twee yr bushwick disrupt unicorn, before they sold out direct trade + chicharrones etsy polaroid hoodie. Gentrify offal hoodie fingerstache.
+
+
+
+

October 13, 2023 - By: User Two + (user.two@example.com)

+

What is the + meaning of life?

+
+
Meh waistcoat succulents umami asymmetrical, hoodie + post-ironic paleo chillwave tote bag. Trust fund kitsch waistcoat vape, cray offal gochujang food truck + cloud bread enamel pin forage. Roof party chambray ugh occupy fam stumptown. Dreamcatcher tousled snackwave, + typewriter lyft unicorn pabst portland blue bottle locavore squid PBR&B tattooed.
+
+
+
+

October 13, 2023 - By: User One + (user.one@example.com)

+

A little more + about me

+
+
Raclette shoreditch before they sold out lyft. Ethical bicycle + rights meh prism twee. Tote bag ennui vice, slow-carb taiyaki crucifix whatever you probably haven't heard + of them jianbing raw denim DIY hot chicken. Chillwave blog succulents freegan synth af ramps poutine + wayfarers yr seitan roof party squid. Jianbing flexitarian gentrify hexagon portland single-origin coffee + raclette gluten-free. Coloring book cloud bread street art kitsch lumbersexual af distillery ethical ugh + thundercats roof party poke chillwave. 90's palo santo green juice subway tile, prism viral butcher selvage + etsy pitchfork sriracha tumeric bushwick.
+
+
+ +
+
+ + + diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/nested/index.html b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/nested/index.html new file mode 100644 index 000000000000..355801d52690 --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/nested/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + + + +
+ + + diff --git a/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/robots.txt b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/robots.txt new file mode 100644 index 000000000000..eb0536286f30 --- /dev/null +++ b/packages/adapters/fastify/web/src/__fixtures__/main/web/dist/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/packages/adapters/fastify/web/src/resolveOptions.test.ts b/packages/adapters/fastify/web/src/resolveOptions.test.ts new file mode 100644 index 000000000000..aa1d2bac772b --- /dev/null +++ b/packages/adapters/fastify/web/src/resolveOptions.test.ts @@ -0,0 +1,290 @@ +import path from 'path' + +import { afterAll, beforeAll, describe, expect, it } from 'vitest' + +import { resolveOptions } from './resolveOptions' + +let original_RWJS_CWD + +beforeAll(() => { + original_RWJS_CWD = process.env.RWJS_CWD + process.env.RWJS_CWD = path.join(__dirname, '__fixtures__/main') +}) + +afterAll(() => { + process.env.RWJS_CWD = original_RWJS_CWD +}) + +describe('resolveOptions', () => { + // The possible values we will support for apiUrl and apiProxyTarget are: + // apiUrl: (aka prefix) + // - undefined + // - empty + // - relative + // - fully-qualified + // apiProxyTarget: (aka upstream) + // - undefined + // - empty + // - relative + // - fully-qualified + + describe('undefined apiUrl', () => { + it('relative apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: undefined, + apiProxyTarget: '/api', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: If you provide \`apiProxyTarget\`, it has to be a fully-qualified URL. \`apiProxyTarget\` is '/api']` + ) + }) + + it('fully-qualified apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiUrl: undefined, + apiProxyTarget: 'http://api.foo.com', + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": false, + }, + "redwoodOptions": { + "apiProxyTarget": "http://api.foo.com", + "apiUrl": "/.redwood/functions", + }, + } + `) + }) + }) + + describe('empty apiUrl', () => { + it('undefined apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: '', + apiProxyTarget: undefined, + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: \`apiUrl\` cannot be an empty string]` + ) + }) + + it('empty apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: '', + apiProxyTarget: '', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: \`apiUrl\` cannot be an empty string]` + ) + }) + + it('relative apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: '', + apiProxyTarget: '/api', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: \`apiUrl\` cannot be an empty string]` + ) + }) + + it('fully-qualified apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: '', + apiProxyTarget: 'http://api.foo.com', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: \`apiUrl\` cannot be an empty string]` + ) + }) + }) + + describe('relative apiUrl', () => { + it('undefined apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiUrl: '/api', + apiProxyTarget: undefined, + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": true, + }, + "redwoodOptions": { + "apiProxyTarget": undefined, + "apiUrl": "/api", + }, + } + `) + }) + + it('empty apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiUrl: '/api', + apiProxyTarget: '', + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": true, + }, + "redwoodOptions": { + "apiProxyTarget": "", + "apiUrl": "/api", + }, + } + `) + }) + + it('relative apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: '/api', + apiProxyTarget: '/api', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: If you provide \`apiProxyTarget\`, it has to be a fully-qualified URL. \`apiProxyTarget\` is '/api']` + ) + }) + + it('fully-qualified apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiUrl: '/api', + apiProxyTarget: 'http://api.foo.com', + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": false, + }, + "redwoodOptions": { + "apiProxyTarget": "http://api.foo.com", + "apiUrl": "/api", + }, + } + `) + }) + }) + + describe('fully-qualified apiUrl', () => { + it('undefined apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiUrl: 'http://api.foo.com', + apiProxyTarget: undefined, + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": false, + }, + "redwoodOptions": { + "apiProxyTarget": undefined, + "apiUrl": "http://api.foo.com", + }, + } + `) + }) + + it('empty apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiUrl: 'http://api.foo.com', + apiProxyTarget: '', + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": false, + }, + "redwoodOptions": { + "apiProxyTarget": "", + "apiUrl": "http://api.foo.com", + }, + } + `) + }) + + it('relative apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: 'http://api.foo.com', + apiProxyTarget: '/api', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: If you provide \`apiProxyTarget\`, it has to be a fully-qualified URL. \`apiProxyTarget\` is '/api']` + ) + }) + + it('fully-qualified apiProxyTarget', () => { + expect(() => + resolveOptions({ + redwood: { + apiUrl: 'http://api.foo.com', + apiProxyTarget: 'http://api.foo.com', + }, + }) + ).toThrowErrorMatchingInlineSnapshot( + `[Error: If you provide \`apiProxyTarget\`, \`apiUrl\` cannot be a fully-qualified URL. \`apiUrl\` is 'http://api.foo.com']` + ) + }) + }) + + describe('apiHost', () => { + it('apiHost is a deprecated alias of apiProxyTarget', () => { + expect( + resolveOptions({ + redwood: { + apiHost: 'http://api.foo.com', + }, + }) + ).toMatchInlineSnapshot(` + { + "flags": { + "shouldRegisterApiUrl": false, + }, + "redwoodOptions": { + "apiProxyTarget": "http://api.foo.com", + "apiUrl": "/.redwood/functions", + }, + } + `) + }) + }) +}) diff --git a/packages/adapters/fastify/web/src/resolveOptions.ts b/packages/adapters/fastify/web/src/resolveOptions.ts new file mode 100644 index 000000000000..8a7e98929732 --- /dev/null +++ b/packages/adapters/fastify/web/src/resolveOptions.ts @@ -0,0 +1,89 @@ +import { getConfig } from '@redwoodjs/project-config' + +import type { RedwoodFastifyWebOptions } from './types' + +export function resolveOptions(options: RedwoodFastifyWebOptions) { + const redwoodOptions = options.redwood ?? {} + const flags = { + shouldRegisterApiUrl: false, + } + + redwoodOptions.apiUrl ??= getConfig().web.apiUrl + const apiUrlIsFullyQualifiedUrl = isFullyQualifiedUrl(redwoodOptions.apiUrl) + + // `apiHost` is deprecated. If it's set and `apiProxyTarget` isn't, we'll use it as `apiProxyTarget`. + if (redwoodOptions.apiHost && !redwoodOptions.apiProxyTarget) { + redwoodOptions.apiProxyTarget = redwoodOptions.apiHost + delete redwoodOptions.apiHost + } + + if (redwoodOptions.apiUrl.trim() === '') { + throw new Error(`\`apiUrl\` cannot be an empty string`) + } + + if ( + redwoodOptions.apiProxyTarget && + !isFullyQualifiedUrl(redwoodOptions.apiProxyTarget) + ) { + throw new Error( + `If you provide \`apiProxyTarget\`, it has to be a fully-qualified URL. \`apiProxyTarget\` is '${redwoodOptions.apiProxyTarget}'` + ) + } + + // If users don't supply `apiUrl` but do supply `apiProxyTarget`, error. + // We don't have a prefix to use as the starting point of a proxy. + // + // ```js + // { + // apiUrl: undefined, + // apiProxyTarget: 'http://api.bar.com' + // } + // ``` + // + // This is pretty unlikely because we default `apiUrl` to '/.redwood/functions' + if (!redwoodOptions.apiUrl && redwoodOptions.apiProxyTarget) { + throw new Error( + `If you provide \`apiProxyTarget\`, \`apiUrl\` has to be a relative URL. \`apiUrl\` is '${redwoodOptions.apiUrl}'` + ) + } + + // If users supply a fully-qualified `apiUrl` and `apiProxyTarget`, error. + // We don't have a prefix to use as the starting point of a proxy. + // + // ```js + // { + // apiUrl: 'http://api.foo.com', // This isn't a prefix we can forward requests from + // apiProxyTarget: 'http://api.bar.com' + // } + // ``` + if (apiUrlIsFullyQualifiedUrl && redwoodOptions.apiProxyTarget) { + throw new Error( + `If you provide \`apiProxyTarget\`, \`apiUrl\` cannot be a fully-qualified URL. \`apiUrl\` is '${redwoodOptions.apiUrl}'` + ) + } + + // If users supply a relative `apiUrl` but don't supply `apiProxyTarget`, error. + // There's nowhere to proxy to. + // + // ```js + // { + // apiUrl: '/api', + // apiProxyTarget: undefined // There's nowhere for requests to '/api' to go + // } + // ``` + if (!apiUrlIsFullyQualifiedUrl && !redwoodOptions.apiProxyTarget) { + flags.shouldRegisterApiUrl = true + } + + return { redwoodOptions, flags } +} + +function isFullyQualifiedUrl(url: string) { + try { + // eslint-disable-next-line no-new + new URL(url) + return true + } catch (e) { + return false + } +} diff --git a/packages/adapters/fastify/web/src/types.ts b/packages/adapters/fastify/web/src/types.ts new file mode 100644 index 000000000000..b6ef71673d76 --- /dev/null +++ b/packages/adapters/fastify/web/src/types.ts @@ -0,0 +1,23 @@ +export interface RedwoodFastifyWebOptions { + redwood?: { + /** + * Specify the URL to your API server. + * This can be a relative URL on the current domain (`/.redwood/functions`), + * in which case the `apiProxyTarget` option must be set, + * or a fully qualified URL (`https://api.redwood.horse`). + * + * Note: This should not include the path to the GraphQL Server. + **/ + apiUrl?: string + /** + * The fully qualified URL to proxy requests to from apiUrl. + * Only valid when apiUrl is a relative URL. + */ + apiProxyTarget?: string + + /** + * @deprecated Use `apiProxyTarget` instead. + */ + apiHost?: string + } +} diff --git a/packages/api-server/src/__tests__/withWebServer.test.ts b/packages/adapters/fastify/web/src/web.test.ts similarity index 77% rename from packages/api-server/src/__tests__/withWebServer.test.ts rename to packages/adapters/fastify/web/src/web.test.ts index 07a5f7eabe80..7e49bb4720f8 100644 --- a/packages/api-server/src/__tests__/withWebServer.test.ts +++ b/packages/adapters/fastify/web/src/web.test.ts @@ -1,77 +1,43 @@ import fs from 'fs' import path from 'path' -import { getPaths } from '@redwoodjs/project-config' +import Fastify from 'fastify' +import { afterAll, beforeAll, describe, expect, it, vi } from 'vitest' -import { createFastifyInstance } from '../fastify' -import withWebServer from '../plugins/withWebServer' +import { getPaths } from '@redwoodjs/project-config' -// Suppress terminal logging. -console.log = jest.fn() +import { redwoodFastifyWeb } from './web' -// Set up RWJS_CWD. let original_RWJS_CWD beforeAll(() => { original_RWJS_CWD = process.env.RWJS_CWD - process.env.RWJS_CWD = path.join(__dirname, 'fixtures/redwood-app') + process.env.RWJS_CWD = path.join(__dirname, '__fixtures__/main') }) afterAll(() => { process.env.RWJS_CWD = original_RWJS_CWD }) -// Set up and teardown the fastify instance with options. -let fastifyInstance -let returnedFastifyInstance +describe('redwoodFastifyWeb', () => { + // Suppress terminal logging. + console.log = vi.fn() -const port = 8910 -const message = 'hello from server.config.js' + // Set up and teardown the fastify instance with options. + let fastifyInstance -beforeAll(async () => { - fastifyInstance = createFastifyInstance() + const port = 8910 - returnedFastifyInstance = await withWebServer(fastifyInstance, { - port, - // @ts-expect-error just testing that options can be passed through - message, - }) - - await fastifyInstance.ready() -}) - -afterAll(async () => { - await fastifyInstance.close() -}) - -describe('withWebServer', () => { - // Deliberately using `toBe` here to check for referential equality. - it('returns the same fastify instance', async () => { - expect(returnedFastifyInstance).toBe(fastifyInstance) - }) + beforeAll(async () => { + fastifyInstance = Fastify() - it('can be configured by the user', async () => { - const res = await fastifyInstance.inject({ - method: 'GET', - url: '/test-route', - }) + await fastifyInstance.register(redwoodFastifyWeb) - expect(res.body).toBe(JSON.stringify({ message })) + await fastifyInstance.ready() }) - // We can use `printRoutes` with a method for debugging, but not without one. - // See https://fastify.dev/docs/latest/Reference/Server#printroutes - it('builds a tree of routes for GET', async () => { - expect(fastifyInstance.printRoutes({ method: 'GET' })) - .toMatchInlineSnapshot(` - "└── / - ├── about (GET) - ├── contacts/new (GET) - ├── nested/index (GET) - ├── test-route (GET) - └── * (GET) - " - `) + afterAll(async () => { + await fastifyInstance.close() }) describe('serves prerendered files', () => { @@ -300,4 +266,40 @@ describe('withWebServer', () => { expect(res.statusCode).toBe(200) }) }) + + describe('serves an error at a misconfigured apiUrl', () => { + it('handles the root path', async () => { + const url = '/.redwood/functions/' + + const res = await fastifyInstance.inject({ + method: 'GET', + url, + }) + + expect(res.statusCode).toBe(200) + expect(res.headers['content-type']).toBe( + 'application/json; charset=utf-8' + ) + expect(res.body).toMatchInlineSnapshot( + `"{"data":null,"errors":[{"message":"Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.","extensions":{"code":"BAD_GATEWAY","httpStatus":502}}]}"` + ) + }) + + it('handles subpaths', async () => { + const url = '/.redwood/functions/graphql' + + const res = await fastifyInstance.inject({ + method: 'GET', + url, + }) + + expect(res.statusCode).toBe(200) + expect(res.headers['content-type']).toBe( + 'application/json; charset=utf-8' + ) + expect(res.body).toMatchInlineSnapshot( + `"{"data":null,"errors":[{"message":"Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.","extensions":{"code":"BAD_GATEWAY","httpStatus":502}}]}"` + ) + }) + }) }) diff --git a/packages/adapters/fastify/web/src/web.ts b/packages/adapters/fastify/web/src/web.ts new file mode 100644 index 000000000000..e2ac9e28b80f --- /dev/null +++ b/packages/adapters/fastify/web/src/web.ts @@ -0,0 +1,124 @@ +import fs from 'fs' +import path from 'path' + +import httpProxy from '@fastify/http-proxy' +import fastifyStatic from '@fastify/static' +import fastifyUrlData from '@fastify/url-data' +import fg from 'fast-glob' +import type { + FastifyInstance, + FastifyReply, + FastifyRequest, + HookHandlerDoneFunction, +} from 'fastify' + +import { getPaths } from '@redwoodjs/project-config' + +import { resolveOptions } from './resolveOptions' +import type { RedwoodFastifyWebOptions } from './types' + +export { RedwoodFastifyWebOptions } + +export async function redwoodFastifyWeb( + fastify: FastifyInstance, + opts: RedwoodFastifyWebOptions, + done: HookHandlerDoneFunction +) { + const { redwoodOptions, flags } = resolveOptions(opts) + + await fastify.register(fastifyUrlData) + + // Serve prerendered files directly, instead of the index + const prerenderedFiles = await fg('**/*.html', { + cwd: getPaths().web.dist, + ignore: ['index.html', '200.html', '404.html'], + }) + + for (const prerenderedFile of prerenderedFiles) { + const [pathName] = prerenderedFile.split('.html') + + fastify.get(`/${pathName}`, (_, reply) => { + reply.header('Content-Type', 'text/html; charset=UTF-8') + reply.sendFile(prerenderedFile) + }) + } + + // Serve static assets + fastify.register(fastifyStatic, { + root: getPaths().web.dist, + }) + + // If `shouldRegisterApiUrl` is true, `apiUrl` has to be defined + // but TS doesn't know that so it complains about `apiUrl` being undefined + // in `fastify.all(...)` below. So we have to do this check for now + if (redwoodOptions.apiUrl && flags.shouldRegisterApiUrl) { + fastify.log.warn("apiUrl is relative but there's no proxy target") + + const apiUrlHandler = (_req: FastifyRequest, reply: FastifyReply) => { + reply.code(200) + reply.send({ + data: null, + errors: [ + { + message: `Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.`, + extensions: { + code: 'BAD_GATEWAY', + httpStatus: 502, + }, + }, + ], + }) + } + + // Make sure apiUrl starts and ends with a slash + const prefix = redwoodOptions.apiUrl.charAt(0) !== '/' ? '/' : '' + const suffix = + redwoodOptions.apiUrl.charAt(redwoodOptions.apiUrl.length - 1) !== '/' + ? '/' + : '' + + const apiUrlWarningPath = `${prefix}${redwoodOptions.apiUrl}${suffix}` + + fastify.all(apiUrlWarningPath, apiUrlHandler) + fastify.all(`${apiUrlWarningPath}*`, apiUrlHandler) + } + + // If `apiProxyTarget` is set, proxy requests from `apiUrl` to `apiProxyTarget`. + // In this case, `apiUrl` has to be relative; `resolveOptions` above throws if it's not + if (redwoodOptions.apiProxyTarget) { + fastify.register(httpProxy, { + prefix: redwoodOptions.apiUrl, + upstream: redwoodOptions.apiProxyTarget, + disableCache: true, + }) + } + + // If `200.html` exists, the project has been prerendered. + // If it doesn't, fallback to the default (`index.html`) + const prerenderIndexPath = path.join(getPaths().web.dist, '200.html') + + const fallbackIndexPath = fs.existsSync(prerenderIndexPath) + ? '200.html' + : 'index.html' + + // For SPA routing, fallback on unmatched routes and let client-side routing take over + fastify.setNotFoundHandler({}, (req, reply) => { + const urlData = req.urlData() + const requestedExtension = path.extname(urlData.path ?? '') + + // Paths with no extension (`/about`) or an .html extension (`/about.html`) + // should be handled by the client side router. + // See the discussion in https://github.com/redwoodjs/redwood/pull/9272. + if (requestedExtension === '' || requestedExtension === '.html') { + reply.header('Content-Type', 'text/html; charset=UTF-8') + return reply.sendFile(fallbackIndexPath) + } + + // If we got here, the user is requesting an asset with an extension + // (like `profile.png`) that doesn't exist + reply.code(404) + return reply.send('Not Found') + }) + + done() +} diff --git a/packages/adapters/fastify/web/src/webFallback.test.ts b/packages/adapters/fastify/web/src/webFallback.test.ts new file mode 100644 index 000000000000..9129201edc22 --- /dev/null +++ b/packages/adapters/fastify/web/src/webFallback.test.ts @@ -0,0 +1,47 @@ +import fs from 'fs' +import path from 'path' + +import Fastify from 'fastify' +import { afterAll, beforeAll, describe, expect, it } from 'vitest' + +import { getPaths } from '@redwoodjs/project-config' + +import { redwoodFastifyWeb } from './web' + +let original_RWJS_CWD + +beforeAll(() => { + original_RWJS_CWD = process.env.RWJS_CWD + process.env.RWJS_CWD = path.join(__dirname, '__fixtures__/fallback') +}) + +afterAll(() => { + process.env.RWJS_CWD = original_RWJS_CWD +}) + +describe('webFallback', () => { + it("handles not found by serving index.html if 200.html doesn't exist", async () => { + const fastify = Fastify() + await fastify.register(redwoodFastifyWeb, { + redwood: { + apiProxyTarget: 'http://localhost:8911', + }, + }) + await fastify.ready() + + const url = '/index.html' + + const res = await fastify.inject({ + method: 'GET', + url, + }) + + expect(res.statusCode).toBe(200) + expect(res.headers['content-type']).toBe('text/html; charset=UTF-8') + expect(res.body).toBe( + fs.readFileSync(path.join(getPaths().web.dist, url), 'utf-8') + ) + + await fastify.close() + }) +}) diff --git a/packages/adapters/fastify/web/tsconfig.json b/packages/adapters/fastify/web/tsconfig.json new file mode 100644 index 000000000000..939871b3db57 --- /dev/null +++ b/packages/adapters/fastify/web/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../../../tsconfig.compilerOption.json", + "compilerOptions": { + "baseUrl": ".", + "rootDir": "src", + "outDir": "dist", + }, + "include": ["src"], + "references": [{ "path": "../../../project-config" }] +} diff --git a/packages/api-server/dist.test.ts b/packages/api-server/dist.test.ts index db82efffeb01..ef10ff84ea68 100644 --- a/packages/api-server/dist.test.ts +++ b/packages/api-server/dist.test.ts @@ -47,8 +47,8 @@ describe('dist', () => { "type": "string", }, "loadEnvFiles": { - "default": false, - "description": "Load .env and .env.defaults files", + "description": "Deprecated; env files are always loaded. This flag is a no-op", + "hidden": true, "type": "boolean", }, "port": { @@ -73,22 +73,6 @@ describe('dist', () => { }, }, "createServer": [Function], - "webCliOptions": { - "apiHost": { - "alias": "api-host", - "desc": "Forward requests from the apiUrl, defined in redwood.toml, to this host", - "type": "string", - }, - "port": { - "alias": "p", - "default": 8910, - "type": "number", - }, - "socket": { - "type": "string", - }, - }, - "webServerHandler": [Function], } `) diff --git a/packages/api-server/package.json b/packages/api-server/package.json index c35c32665b1f..b7357e8d4b6f 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -30,11 +30,11 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.6", - "@fastify/http-proxy": "9.3.0", - "@fastify/static": "6.12.0", "@fastify/url-data": "5.4.0", "@redwoodjs/context": "6.0.7", + "@redwoodjs/fastify-web": "6.0.7", "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/web-server": "6.0.7", "ansi-colors": "4.1.3", "chalk": "4.1.2", "chokidar": "3.5.3", diff --git a/packages/api-server/src/__tests__/withApiProxy.test.ts b/packages/api-server/src/__tests__/withApiProxy.test.ts deleted file mode 100644 index 593bba043d99..000000000000 --- a/packages/api-server/src/__tests__/withApiProxy.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -import httpProxy from '@fastify/http-proxy' -import type { FastifyInstance } from 'fastify' - -import withApiProxy from '../plugins/withApiProxy' - -test('withApiProxy registers `@fastify/http-proxy`', async () => { - const mockedFastifyInstance = { - register: jest.fn(), - } - - // `apiUrl` is unfortunately named. It isn't a URL, it's just a prefix. Meanwhile, `apiHost` _is_ a URL. - // See https://github.com/fastify/fastify-http-proxy and https://github.com/fastify/fastify-reply-from. - await withApiProxy(mockedFastifyInstance as unknown as FastifyInstance, { - apiUrl: 'my-api-host', - apiHost: 'http://localhost:8910', - }) - - expect(mockedFastifyInstance.register).toHaveBeenCalledWith(httpProxy, { - disableCache: true, - prefix: 'my-api-host', - upstream: 'http://localhost:8910', - }) -}) diff --git a/packages/api-server/src/__tests__/withWebServerFallback.test.ts b/packages/api-server/src/__tests__/withWebServerFallback.test.ts deleted file mode 100644 index d962b26bcf5b..000000000000 --- a/packages/api-server/src/__tests__/withWebServerFallback.test.ts +++ /dev/null @@ -1,43 +0,0 @@ -import fs from 'fs' -import path from 'path' - -import { getPaths } from '@redwoodjs/project-config' - -import { createFastifyInstance } from '../fastify' -import withWebServer from '../plugins/withWebServer' - -// Set up RWJS_CWD. -let original_RWJS_CWD - -beforeAll(() => { - original_RWJS_CWD = process.env.RWJS_CWD - process.env.RWJS_CWD = path.join(__dirname, 'fixtures/redwood-app-fallback') -}) - -afterAll(() => { - process.env.RWJS_CWD = original_RWJS_CWD -}) - -test("handles not found by serving index.html if 200.html doesn't exist", async () => { - const fastifyInstance = await withWebServer( - createFastifyInstance({ logger: false }), - { - port: 8910, - } - ) - - const url = '/index.html' - - const res = await fastifyInstance.inject({ - method: 'GET', - url, - }) - - expect(res.statusCode).toBe(200) - expect(res.headers['content-type']).toBe('text/html; charset=UTF-8') - expect(res.body).toBe( - fs.readFileSync(path.join(getPaths().web.dist, url), 'utf-8') - ) - - await fastifyInstance.close() -}) diff --git a/packages/api-server/src/__tests__/withWebServerLoadFastifyConfig.test.ts b/packages/api-server/src/__tests__/withWebServerLoadFastifyConfig.test.ts deleted file mode 100644 index 33ca81da8192..000000000000 --- a/packages/api-server/src/__tests__/withWebServerLoadFastifyConfig.test.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { vol } from 'memfs' - -import { createFastifyInstance } from '../fastify' -import withWebServer from '../plugins/withWebServer' - -// Suppress terminal logging. -console.log = jest.fn() - -// Set up RWJS_CWD. -let original_RWJS_CWD -const FIXTURE_PATH = '/redwood-app' - -beforeAll(() => { - original_RWJS_CWD = process.env.RWJS_CWD - process.env.RWJS_CWD = FIXTURE_PATH -}) - -afterAll(() => { - process.env.RWJS_CWD = original_RWJS_CWD -}) - -// Mock server.config.js. -jest.mock('fs', () => require('memfs').fs) - -jest.mock( - '/redwood-app/api/server.config.js', - () => { - return { - config: {}, - configureFastify: async (fastify, options) => { - if (options.side === 'web') { - fastify.get('/about.html', async (_request, _reply) => { - return { virtualAboutHtml: true } - }) - } - - return fastify - }, - } - }, - { virtual: true } -) - -jest.mock( - '\\redwood-app\\api\\server.config.js', - () => { - return { - config: {}, - configureFastify: async (fastify, options) => { - if (options.side === 'web') { - fastify.get('/about.html', async (_request, _reply) => { - return { virtualAboutHtml: true } - }) - } - - return fastify - }, - } - }, - { virtual: true } -) - -test("the user can overwrite static files that weren't set specifically ", async () => { - vol.fromNestedJSON( - { - 'redwood.toml': '', - api: { - 'server.config.js': '', - }, - web: { - dist: { - 'about.html': '

About

', - }, - }, - }, - FIXTURE_PATH - ) - - const fastifyInstance = await withWebServer(createFastifyInstance(), { - port: 8910, - }) - - const res = await fastifyInstance.inject({ - method: 'GET', - url: '/about.html', - }) - - expect(res.statusCode).toBe(200) - expect(res.body).toBe(JSON.stringify({ virtualAboutHtml: true })) - - await fastifyInstance.close() -}) diff --git a/packages/api-server/src/__tests__/withWebServerLoadFastifyConfigError.test.ts b/packages/api-server/src/__tests__/withWebServerLoadFastifyConfigError.test.ts deleted file mode 100644 index 115e927bec2c..000000000000 --- a/packages/api-server/src/__tests__/withWebServerLoadFastifyConfigError.test.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { vol } from 'memfs' - -import { createFastifyInstance } from '../fastify' -import withWebServer from '../plugins/withWebServer' - -// Suppress terminal logging. -console.log = jest.fn() - -// Set up RWJS_CWD. -let original_RWJS_CWD -const FIXTURE_PATH = '/redwood-app' - -beforeAll(() => { - original_RWJS_CWD = process.env.RWJS_CWD - process.env.RWJS_CWD = FIXTURE_PATH -}) - -afterAll(() => { - process.env.RWJS_CWD = original_RWJS_CWD -}) - -// Mock server.config.js. -jest.mock('fs', () => require('memfs').fs) - -const aboutHTML = '

About

' - -jest.mock( - '/redwood-app/api/server.config.js', - () => { - return { - config: {}, - configureFastify: async (fastify, options) => { - if (options.side === 'web') { - fastify.get('/about', async (_request, _reply) => { - return { virtualAboutHtml: true } - }) - } - - return fastify - }, - } - }, - { virtual: true } -) - -jest.mock( - '\\redwood-app\\api\\server.config.js', - () => { - return { - config: {}, - configureFastify: async (fastify, options) => { - if (options.side === 'web') { - fastify.get('/about', async (_request, _reply) => { - return { virtualAboutHtml: true } - }) - } - - return fastify - }, - } - }, - { virtual: true } -) - -test("the user can't overwrite prerendered files", async () => { - vol.fromNestedJSON( - { - 'redwood.toml': '', - api: { - 'server.config.js': '', - }, - web: { - dist: { - 'about.html': aboutHTML, - }, - }, - }, - FIXTURE_PATH - ) - - try { - await withWebServer(createFastifyInstance(), { - port: 8910, - }) - } catch (e) { - expect(e.code).toBe('FST_ERR_DUPLICATED_ROUTE') - } -}) diff --git a/packages/api-server/src/cliHandlers.ts b/packages/api-server/src/cliHandlers.ts index b6850227592c..73a1f9b4937c 100644 --- a/packages/api-server/src/cliHandlers.ts +++ b/packages/api-server/src/cliHandlers.ts @@ -1,15 +1,12 @@ -import path from 'path' - import c from 'ansi-colors' -import { getPaths, getConfig } from '@redwoodjs/project-config' +import { redwoodFastifyWeb } from '@redwoodjs/fastify-web' +import { getConfig } from '@redwoodjs/project-config' import createFastifyInstance from './fastify' -import withApiProxy from './plugins/withApiProxy' import withFunctions from './plugins/withFunctions' -import withWebServer from './plugins/withWebServer' import { startServer as startFastifyServer } from './server' -import type { BothServerArgs, WebServerArgs, ApiServerArgs } from './types' +import type { BothServerArgs, ApiServerArgs } from './types' /* * This file has defines CLI handlers used by the redwood cli, for `rw serve` @@ -36,38 +33,18 @@ export const apiCliOptions = { coerce: coerceRootPath, }, loadEnvFiles: { - description: 'Load .env and .env.defaults files', + description: + 'Deprecated; env files are always loaded. This flag is a no-op', type: 'boolean', - // We have to default to `false` for backwards compatibility. - default: false, - }, -} as const - -export const webCliOptions = { - port: { default: getConfig().web?.port || 8910, type: 'number', alias: 'p' }, - socket: { type: 'string' }, - apiHost: { - alias: 'api-host', - type: 'string', - desc: 'Forward requests from the apiUrl, defined in redwood.toml, to this host', + hidden: true, }, } as const export const apiServerHandler = async (options: ApiServerArgs) => { - const { port, socket, apiRootPath, loadEnvFiles } = options + const { port, socket, apiRootPath } = options const tsApiServer = Date.now() process.stdout.write(c.dim(c.italic('Starting API Server...\n'))) - if (loadEnvFiles) { - const { config } = await import('dotenv-defaults') - - config({ - path: path.join(getPaths().base, '.env'), - defaults: path.join(getPaths().base, '.env.defaults'), - multiline: true, - }) - } - let fastify = createFastifyInstance() // Import Server Functions. @@ -101,8 +78,7 @@ export const bothServerHandler = async (options: BothServerArgs) => { let fastify = createFastifyInstance() - // Attach plugins - fastify = await withWebServer(fastify, options) + await fastify.register(redwoodFastifyWeb) fastify = await withFunctions(fastify, { ...options, apiRootPath }) startFastifyServer({ @@ -125,60 +101,6 @@ export const bothServerHandler = async (options: BothServerArgs) => { }) } -export const webServerHandler = async (options: WebServerArgs) => { - const { port, socket, apiHost } = options - const apiUrl = getConfig().web.apiUrl - - if (!apiHost && !isFullyQualifiedUrl(apiUrl)) { - console.error( - `${c.red('Error')}: If you don't provide ${c.magenta( - 'apiHost' - )}, ${c.magenta( - 'apiUrl' - )} needs to be a fully-qualified URL. But ${c.magenta( - 'apiUrl' - )} is ${c.yellow(apiUrl)}.` - ) - process.exitCode = 1 - return - } - - const tsServer = Date.now() - process.stdout.write(c.dim(c.italic('Starting Web Server...\n'))) - // Construct the graphql url from apiUrl by default - // But if apiGraphQLUrl is specified, use that instead - const graphqlEndpoint = coerceRootPath( - getConfig().web.apiGraphQLUrl ?? `${apiUrl}/graphql` - ) - - let fastify = createFastifyInstance() - - // serve static files from "web/dist" - fastify = await withWebServer(fastify, options) - - // If apiHost is supplied, it means the functions are running elsewhere - // So we should just proxy requests - if (apiHost) { - // Attach plugin for proxying - fastify = await withApiProxy(fastify, { apiHost, apiUrl }) - } - - startFastifyServer({ - port, - socket, - fastify, - }).ready(() => { - console.log(c.italic(c.dim('Took ' + (Date.now() - tsServer) + ' ms'))) - if (socket) { - console.log(`Listening on ` + c.magenta(`${socket}`)) - } - const webServer = c.green(`http://localhost:${port}`) - console.log(`Web server started on ${webServer}`) - console.log(`GraphQL endpoint is set to ` + c.magenta(`${graphqlEndpoint}`)) - sendProcessReady() - }) -} - function coerceRootPath(path: string) { // Make sure that we create a root path that starts and ends with a slash (/) const prefix = path.charAt(0) !== '/' ? '/' : '' @@ -187,15 +109,5 @@ function coerceRootPath(path: string) { return `${prefix}${path}${suffix}` } -function isFullyQualifiedUrl(url: string) { - try { - // eslint-disable-next-line no-new - new URL(url) - return true - } catch (e) { - return false - } -} - // Temporarily here till we refactor server code export { createServer } from './createServer' diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 93c8a8175faa..771bd079e9b5 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -44,6 +44,8 @@ if (process.env.RWJS_CWD && !process.env.REDWOOD_ENV_FILES_LOADED) { defaults: path.join(getPaths().base, '.env.defaults'), multiline: true, }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' } export interface CreateServerOptions { diff --git a/packages/api-server/src/index.ts b/packages/api-server/src/index.ts index df9ab77f35b3..db0df9ac03fb 100644 --- a/packages/api-server/src/index.ts +++ b/packages/api-server/src/index.ts @@ -1,19 +1,33 @@ #!/usr/bin/env node +import path from 'path' + +import { config } from 'dotenv-defaults' import { hideBin } from 'yargs/helpers' import yargs from 'yargs/yargs' +import { getPaths } from '@redwoodjs/project-config' +import * as webServerCLIConfig from '@redwoodjs/web-server' + import { apiCliOptions, - webCliOptions, commonOptions, apiServerHandler, - webServerHandler, bothServerHandler, } from './cliHandlers' export * from './types' +if (!process.env.REDWOOD_ENV_FILES_LOADED) { + config({ + path: path.join(getPaths().base, '.env'), + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' +} + if (require.main === module) { yargs(hideBin(process.argv)) .scriptName('rw-server') @@ -40,12 +54,10 @@ if (require.main === module) { ) .command( 'web', - 'Start server for serving only the web side', + webServerCLIConfig.description, // @ts-expect-error just passing yargs though - (yargs) => { - yargs.options(webCliOptions) - }, - webServerHandler + webServerCLIConfig.builder, + webServerCLIConfig.handler ) .parse() } diff --git a/packages/api-server/src/plugins/findPrerenderedHtml.ts b/packages/api-server/src/plugins/findPrerenderedHtml.ts deleted file mode 100644 index 01c1bed9af48..000000000000 --- a/packages/api-server/src/plugins/findPrerenderedHtml.ts +++ /dev/null @@ -1,9 +0,0 @@ -import fg from 'fast-glob' - -import { getPaths } from '@redwoodjs/project-config' - -// NOTE: This function was copied from @redwoodjs/internal/dist/files to avoid depending on @redwoodjs/internal. -// import { findPrerenderedHtml } from '@redwoodjs/internal/dist/files' -export function findPrerenderedHtml(cwd = getPaths().web.dist) { - return fg.sync('**/*.html', { cwd, ignore: ['200.html', '404.html'] }) -} diff --git a/packages/api-server/src/plugins/graphql.ts b/packages/api-server/src/plugins/graphql.ts index 0d97050a3ecc..d33e47bd82ea 100644 --- a/packages/api-server/src/plugins/graphql.ts +++ b/packages/api-server/src/plugins/graphql.ts @@ -67,7 +67,7 @@ export async function redwoodFastifyGraphQLServer( // graphql function. // // These would be plugins that need a server instance such as Redwood Realtime - if (graphqlOptions.realtime) { + if (graphqlOptions?.realtime) { const { useRedwoodRealtime } = await import('@redwoodjs/realtime') const originalExtraPlugins: Array> = diff --git a/packages/api-server/src/plugins/withApiProxy.ts b/packages/api-server/src/plugins/withApiProxy.ts deleted file mode 100644 index 9d194816dd4a..000000000000 --- a/packages/api-server/src/plugins/withApiProxy.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type { FastifyHttpProxyOptions } from '@fastify/http-proxy' -import httpProxy from '@fastify/http-proxy' -import type { FastifyInstance } from 'fastify' - -export interface ApiProxyOptions { - apiUrl: string - apiHost: string -} - -const withApiProxy = async ( - fastify: FastifyInstance, - { apiUrl, apiHost }: ApiProxyOptions -) => { - const proxyOpts: FastifyHttpProxyOptions = { - upstream: apiHost, - prefix: apiUrl, - disableCache: true, - } - - fastify.register(httpProxy, proxyOpts) - - return fastify -} - -export default withApiProxy diff --git a/packages/api-server/src/plugins/withWebServer.ts b/packages/api-server/src/plugins/withWebServer.ts deleted file mode 100644 index d265c428159f..000000000000 --- a/packages/api-server/src/plugins/withWebServer.ts +++ /dev/null @@ -1,83 +0,0 @@ -import fs from 'fs' -import path from 'path' - -import fastifyStatic from '@fastify/static' -import fastifyUrlData from '@fastify/url-data' -import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify' - -import { getPaths } from '@redwoodjs/project-config' - -import { loadFastifyConfig } from '../fastify' -import type { WebServerArgs } from '../types' - -import { findPrerenderedHtml } from './findPrerenderedHtml' - -export const getFallbackIndexPath = () => { - const prerenderIndexPath = path.join(getPaths().web.dist, '/200.html') - - // If 200 exists: project has been prerendered - // If 200 doesn't exist: fallback to default index.html - if (fs.existsSync(prerenderIndexPath)) { - return '200.html' - } else { - return 'index.html' - } -} - -const withWebServer = async ( - fastify: FastifyInstance, - options: WebServerArgs -) => { - if (!fastify.hasPlugin('@fastify/url-data')) { - await fastify.register(fastifyUrlData) - } - - const prerenderedFiles = findPrerenderedHtml() - const indexPath = getFallbackIndexPath() - - // Serve prerendered HTML directly, instead of the index - prerenderedFiles - .filter((filePath) => filePath !== 'index.html') // remove index.html - .forEach((filePath) => { - const pathName = filePath.split('.html')[0] - fastify.get(`/${pathName}`, (_, reply: FastifyReply) => { - reply.header('Content-Type', 'text/html; charset=UTF-8') - reply.sendFile(filePath) - }) - }) - - const { configureFastify } = loadFastifyConfig() - - if (configureFastify) { - await configureFastify(fastify, { side: 'web', ...options }) - } - - // Serve other non-html assets - fastify.register(fastifyStatic, { - root: getPaths().web.dist, - }) - - // For SPA routing fallback on unmatched routes - // And let JS routing take over - fastify.setNotFoundHandler( - {}, - function (req: FastifyRequest, reply: FastifyReply) { - const urlData = req.urlData() - const requestedExtension = path.extname(urlData.path ?? '') - - // If it's requesting some sort of asset, e.g. .js or .jpg files - // Html files should fallback to the index.html - if (requestedExtension !== '' && requestedExtension !== '.html') { - reply.code(404) - return reply.send('Not Found') - } - - reply.header('Content-Type', 'text/html; charset=UTF-8') - return reply.sendFile(indexPath) - } - ) - - return fastify -} - -export default withWebServer diff --git a/packages/api-server/src/watch.ts b/packages/api-server/src/watch.ts index 1888a660304b..6af09d7a2c0f 100644 --- a/packages/api-server/src/watch.ts +++ b/packages/api-server/src/watch.ts @@ -42,9 +42,16 @@ const argv = yargs(hideBin(process.argv)) const rwjsPaths = getPaths() -dotenv.config({ - path: rwjsPaths.base, -}) +if (!process.env.REDWOOD_ENV_FILES_LOADED) { + dotenv.config({ + path: path.join(getPaths().base, '.env'), + // @ts-expect-error The types for dotenv-defaults are using an outdated version of dotenv + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' +} let httpServerProcess: ChildProcess diff --git a/packages/api-server/tsconfig.json b/packages/api-server/tsconfig.json index 06fe65a2387a..d162d30123b6 100644 --- a/packages/api-server/tsconfig.json +++ b/packages/api-server/tsconfig.json @@ -6,5 +6,10 @@ "outDir": "dist", }, "include": ["src", "ambient.d.ts"], - "references": [{ "path": "../internal" }, { "path": "../project-config" }] + "references": [ + { "path": "../internal" }, + { "path": "../project-config" }, + { "path": "../adapters/fastify/web" }, + { "path": "../web-server" } + ] } diff --git a/packages/cli-packages/dataMigrate/src/bin.ts b/packages/cli-packages/dataMigrate/src/bin.ts index 8de413f619c9..ff0539416a2e 100644 --- a/packages/cli-packages/dataMigrate/src/bin.ts +++ b/packages/cli-packages/dataMigrate/src/bin.ts @@ -10,11 +10,15 @@ import { getPaths } from '@redwoodjs/project-config' import { description, builder } from './commands/up' import { handler } from './commands/upHandler' -config({ - path: path.join(getPaths().base, '.env'), - defaults: path.join(getPaths().base, '.env.defaults'), - multiline: true, -}) +if (!process.env.REDWOOD_ENV_FILES_LOADED) { + config({ + path: path.join(getPaths().base, '.env'), + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' +} yargs(hideBin(process.argv)) .scriptName('data-migrate') diff --git a/packages/cli/package.json b/packages/cli/package.json index e5b05180e820..d4b1f20de18f 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -46,6 +46,7 @@ "@redwoodjs/project-config": "6.0.7", "@redwoodjs/structure": "6.0.7", "@redwoodjs/telemetry": "6.0.7", + "@redwoodjs/web-server": "6.0.7", "archiver": "6.0.1", "boxen": "5.1.2", "camelcase": "6.3.0", diff --git a/packages/cli/src/commands/__tests__/serve.test.js b/packages/cli/src/commands/__tests__/serve.test.js index ded7ce7df067..54bee6089e47 100644 --- a/packages/cli/src/commands/__tests__/serve.test.js +++ b/packages/cli/src/commands/__tests__/serve.test.js @@ -56,7 +56,6 @@ vi.mock('execa', () => ({ })), })) -import execa from 'execa' import { vi, describe, afterEach, it, expect } from 'vitest' import yargs from 'yargs/yargs' @@ -96,28 +95,6 @@ describe('yarn rw serve', () => { ) }) - it('Should proxy serve web with params to web server handler', async () => { - const parser = yargs().command('serve [side]', false, builder) - - await parser.parse( - 'serve web --port 9898 --socket abc --apiHost https://myapi.redwood/api' - ) - - expect(execa).toHaveBeenCalledWith( - 'yarn', - expect.arrayContaining([ - 'rw-web-server', - '--port', - 9898, - '--socket', - 'abc', - '--api-host', - 'https://myapi.redwood/api', - ]), - expect.anything() - ) - }) - it('Should proxy rw serve with params to appropriate handler', async () => { const parser = yargs().command('serve [side]', false, builder) diff --git a/packages/cli/src/commands/experimental/templates/docker/Dockerfile b/packages/cli/src/commands/experimental/templates/docker/Dockerfile index 0fe3539046aa..3463996866e3 100644 --- a/packages/cli/src/commands/experimental/templates/docker/Dockerfile +++ b/packages/cli/src/commands/experimental/templates/docker/Dockerfile @@ -121,10 +121,10 @@ COPY --chown=node:node .env.defaults .env.defaults COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist ENV NODE_ENV=production \ - API_HOST=http://api:8911 + API_PROXY_TARGET=http://api:8911 # We use the shell form here for variable expansion. -CMD "node_modules/.bin/rw-web-server" "--apiHost" "$API_HOST" +CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET" # console # ------------------------------------------------ diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index d0f3b17e1890..9c2016d2217e 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -4,6 +4,7 @@ import fs from 'fs-extra' import terminalLink from 'terminal-link' import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' +import * as webServerCLIConfig from '@redwoodjs/web-server' import { getPaths, getConfig } from '../lib' import c from '../lib/colors' @@ -108,21 +109,8 @@ export const builder = async (yargs) => { }) .command({ command: 'web', - description: 'Start server for serving only the web side', - builder: (yargs) => - yargs.options({ - port: { - default: getConfig().web?.port || 8910, - type: 'number', - alias: 'p', - }, - socket: { type: 'string' }, - apiHost: { - alias: 'api-host', - type: 'string', - desc: 'Forward requests from the apiUrl, defined in redwood.toml, to this host', - }, - }), + description: webServerCLIConfig.description, + builder: webServerCLIConfig.builder, handler: async (argv) => { recordTelemetryAttributes({ command: 'serve', @@ -132,8 +120,7 @@ export const builder = async (yargs) => { apiHost: argv.apiHost, }) - const { webServerHandler } = await import('./serveHandler.js') - await webServerHandler(argv) + await webServerCLIConfig.handler(argv) }, }) .middleware((argv) => { diff --git a/packages/cli/src/commands/serveHandler.js b/packages/cli/src/commands/serveHandler.js index 1c1eec083ecb..696c3f1f88b5 100644 --- a/packages/cli/src/commands/serveHandler.js +++ b/packages/cli/src/commands/serveHandler.js @@ -8,15 +8,16 @@ import { coerceRootPath, createFastifyInstance, redwoodFastifyAPI, - redwoodFastifyWeb, } from '@redwoodjs/fastify' +import { redwoodFastifyWeb } from '@redwoodjs/fastify-web' import { getConfig, getPaths } from '@redwoodjs/project-config' import { errorTelemetry } from '@redwoodjs/telemetry' import { exitWithError } from '../lib/exit' export const bothServerFileHandler = async (options) => { - const apiHost = `http://0.0.0.0:${options.apiPort}` + const apiHost = process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' + const apiProxyTarget = `http://${apiHost}:${options.apiPort}` const { result } = concurrently( [ @@ -30,7 +31,7 @@ export const bothServerFileHandler = async (options) => { }, { name: 'web', - command: `yarn rw-web-server --port ${options.webPort} --api-host ${apiHost}`, + command: `yarn rw-web-server --port ${options.webPort} --api-proxy-target ${apiProxyTarget}`, cwd: getPaths().base, prefixColor: 'blue', }, @@ -186,35 +187,3 @@ export const apiServerHandler = async (options) => { sendProcessReady() }) } - -export const webServerHandler = async (options) => { - try { - await execa( - 'yarn', - [ - 'rw-web-server', - '--port', - options.port, - '--socket', - options.socket, - '--api-host', - options.apiHost, - ], - { - cwd: getPaths().base, - stdio: 'inherit', - } - ) - } catch (e) { - // `@redwoodjs/web-server` uses a custom error exit code to tell this handler that an error has already been handled. - // While any other exit code than `0` is considered an error, there seems to be some conventions around some of them - // like `127`, etc. We chose 64 because it's in the range where there deliberately aren't any previous conventions. - // See https://tldp.org/LDP/abs/html/exitcodes.html. - if (e.exitCode === 64) { - process.exitCode = 1 - return - } - - exitWithError(e) - } -} diff --git a/packages/cli/src/index.js b/packages/cli/src/index.js index 87553fe11243..735bbddc3df8 100644 --- a/packages/cli/src/index.js +++ b/packages/cli/src/index.js @@ -105,11 +105,15 @@ process.env.RWJS_CWD = cwd // // This should be done as early as possible, and the earliest we can do it is after setting `cwd`. -config({ - path: path.join(getPaths().base, '.env'), - defaults: path.join(getPaths().base, '.env.defaults'), - multiline: true, -}) +if (!process.env.REDWOOD_ENV_FILES_LOADED) { + config({ + path: path.join(getPaths().base, '.env'), + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' +} async function main() { // Start telemetry if it hasn't been disabled diff --git a/packages/fastify/src/index.ts b/packages/fastify/src/index.ts index e381ec32ed1c..e93750aea6d0 100644 --- a/packages/fastify/src/index.ts +++ b/packages/fastify/src/index.ts @@ -10,7 +10,6 @@ export function createFastifyInstance(options?: FastifyServerOptions) { } export { redwoodFastifyAPI } from './api.js' -export { redwoodFastifyWeb } from './web.js' export type * from './types.js' diff --git a/packages/fastify/src/types.ts b/packages/fastify/src/types.ts index b54c79743d49..32a56536e83a 100644 --- a/packages/fastify/src/types.ts +++ b/packages/fastify/src/types.ts @@ -6,20 +6,10 @@ export interface RedwoodFastifyAPIOptions { } } -export interface RedwoodFastifyWebOptions { - redwood?: { - apiHost?: string - } -} - // Types for using server.config.js export type FastifySideConfigFnOptions = { side: SupportedSides -} & ( - | RedwoodFastifyWebOptions - | RedwoodFastifyAPIOptions - | (RedwoodFastifyWebOptions & RedwoodFastifyAPIOptions) -) +} & RedwoodFastifyAPIOptions export type SupportedSides = 'api' | 'web' export type FastifySideConfigFn = ( diff --git a/packages/fastify/src/web.ts b/packages/fastify/src/web.ts deleted file mode 100644 index b8d1bbac26e7..000000000000 --- a/packages/fastify/src/web.ts +++ /dev/null @@ -1,92 +0,0 @@ -import fs from 'node:fs' -import path from 'node:path' - -import fastifyStatic from '@fastify/static' -import fastifyUrlData from '@fastify/url-data' -import fg from 'fast-glob' -import type { - FastifyInstance, - FastifyReply, - FastifyRequest, - HookHandlerDoneFunction, -} from 'fastify' - -import { getPaths } from '@redwoodjs/project-config' - -import { loadFastifyConfig } from './config' -import type { RedwoodFastifyWebOptions } from './types' - -export async function redwoodFastifyWeb( - fastify: FastifyInstance, - opts: RedwoodFastifyWebOptions, - done: HookHandlerDoneFunction -) { - if (!fastify.hasPlugin('@fastify/url-data')) { - await fastify.register(fastifyUrlData) - } - const prerenderedFiles = findPrerenderedHtml() - - // Serve prerendered HTML directly, instead of the index. - prerenderedFiles - .filter((filePath) => filePath !== 'index.html') // remove index.html - .forEach((filePath) => { - const [pathName] = filePath.split('.html') - - fastify.get(`/${pathName}`, (_, reply: FastifyReply) => { - reply.header('Content-Type', 'text/html; charset=UTF-8') - reply.sendFile(filePath) - }) - }) - - // NOTE: Deprecate this when we move to a `server.ts` file. - const { configureFastify } = loadFastifyConfig() - if (configureFastify) { - await configureFastify(fastify, { side: 'web', ...opts }) - } - - // Serve other non-html assets. - fastify.register(fastifyStatic, { - root: getPaths().web.dist, - }) - - const indexPath = getFallbackIndexPath() - - // For SPA routing, fallback on unmatched routes and let client-side routing take over. - fastify.setNotFoundHandler( - {}, - function (req: FastifyRequest, reply: FastifyReply) { - const urlData = req.urlData() - const requestedExtension = path.extname(urlData.path ?? '') - - // If it's requesting some sort of asset, e.g. .js or .jpg files - // Html files should fallback to the index.html - if (requestedExtension !== '' && requestedExtension !== '.html') { - reply.code(404) - return reply.send('Not Found') - } - - reply.header('Content-Type', 'text/html; charset=UTF-8') - return reply.sendFile(indexPath) - } - ) - - done() -} - -// NOTE: This function was copied from @redwoodjs/internal/dist/files to avoid depending on @redwoodjs/internal. -// import { findPrerenderedHtml } from '@redwoodjs/internal/dist/files' -function findPrerenderedHtml(cwd = getPaths().web.dist) { - return fg.sync('**/*.html', { cwd, ignore: ['200.html', '404.html'] }) -} - -function getFallbackIndexPath() { - const prerenderIndexPath = path.join(getPaths().web.dist, '/200.html') - - // If 200 exists: the project has been prerendered. - // If 200 doesn't exist: fallback to the default, index.html. - if (fs.existsSync(prerenderIndexPath)) { - return '200.html' - } else { - return 'index.html' - } -} diff --git a/packages/web-server/build.mjs b/packages/web-server/build.mjs index 75e861b63346..dabb578c00ad 100644 --- a/packages/web-server/build.mjs +++ b/packages/web-server/build.mjs @@ -1,3 +1,44 @@ -import { build } from '../../buildDefaults.mjs' +import fs from 'fs-extra' -await build() +import { + build, + defaultBuildOptions, + defaultIgnorePatterns, +} from '../../buildDefaults.mjs' + +// This package uses the name of the bin as `scriptName` for Yargs to keep things in sync. +// There should only be one bin entry for this to work. +// Otherwise we have to rethink the code. +const { bin } = await fs.readJSON('./package.json') +const bins = Object.keys(bin).length + +if (bins !== 1) { + console.error( + [ + `Error: Expected exactly one bin entry; found ${bins}`, + './packages/web-server/src/bin.ts uses the bin entry as its scriptName', + ].join('\n') + ) + process.exit(1) +} + +// Build the package +await build({ + entryPointOptions: { + ignore: [...defaultIgnorePatterns, './src/bin.ts', './src/types.ts'], + }, +}) + +// Build the bin +await build({ + buildOptions: { + ...defaultBuildOptions, + banner: { + js: '#!/usr/bin/env node', + }, + bundle: true, + entryPoints: ['./src/bin.ts'], + packages: 'external', + }, + metafileName: 'meta.bin.json', +}) diff --git a/packages/web-server/package.json b/packages/web-server/package.json index 63dbc2e29abb..25417012b6d1 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -8,9 +8,16 @@ "directory": "packages/web-server" }, "license": "MIT", - "main": "./dist/server.js", + "exports": { + ".": { + "types": "./dist/cliConfig.d.ts", + "default": "./dist/cliConfig.js" + }, + "./package.json": "./package.json" + }, + "types": "./dist/cliConfig.d.ts", "bin": { - "rw-web-server": "./dist/server.js" + "rw-web-server": "./dist/bin.js" }, "files": [ "dist" @@ -21,23 +28,17 @@ "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build && yarn fix:permissions\"", "fix:permissions": "chmod +x dist/index.js; chmod +x dist/watch.js", - "prepublishOnly": "NODE_ENV=production yarn build", - "test": "echo \"No tests yet\"", - "test:watch": "echo \"No tests yet\"" + "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@fastify/http-proxy": "9.3.0", - "@fastify/static": "6.12.0", - "@fastify/url-data": "5.4.0", + "@redwoodjs/fastify-web": "6.0.7", "@redwoodjs/project-config": "6.0.7", "chalk": "4.1.2", "dotenv-defaults": "5.0.2", - "fast-glob": "3.3.2", "fastify": "4.24.3", "yargs": "17.7.2" }, "devDependencies": { - "esbuild": "0.19.9", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/web-server/src/bin.ts b/packages/web-server/src/bin.ts new file mode 100644 index 000000000000..51d64b224757 --- /dev/null +++ b/packages/web-server/src/bin.ts @@ -0,0 +1,26 @@ +import { hideBin } from 'yargs/helpers' +import yargs from 'yargs/yargs' + +import { bin } from '../package.json' + +import { description, builder } from './cliConfig' +import { handler } from './cliConfigHandler' + +process.env.NODE_ENV ??= 'production' + +const [scriptName] = Object.keys(bin) + +yargs(hideBin(process.argv)) + .scriptName(scriptName) + .strict() + .example( + 'yarn $0 --api-url=/api --api-proxy-target=https://api.redwood.horse', + "Start the web server and proxy requests made to '/api' to 'https://api.redwood.horse'" + ) + .example( + 'yarn $0 --api-url=https://api.redwood.horse', + "Start the web server send api requests to 'https://api.redwood.horse' (make sure to configure CORS)" + ) + // @ts-expect-error The yargs types seem wrong; it's ok for builder to be a function + .command('$0', description, builder, handler) + .parse() diff --git a/packages/web-server/src/cliConfig.ts b/packages/web-server/src/cliConfig.ts new file mode 100644 index 000000000000..48a32b041ca0 --- /dev/null +++ b/packages/web-server/src/cliConfig.ts @@ -0,0 +1,50 @@ +import type { Argv } from 'yargs' + +import { getConfig } from '@redwoodjs/project-config' + +import type { ParsedOptions } from './types' + +export const description = 'Start a server for serving only the web side' + +export function builder(yargs: Argv) { + yargs.options({ + port: { + description: 'The port to listen on', + type: 'number', + alias: 'p', + default: getConfig().web.port, + }, + host: { + description: + "The host to listen on. Defaults to '0.0.0.0' in production, '::' in development", + type: 'string', + }, + + apiUrl: { + description: + 'Relative URL for proxying requests from or a fully-qualified URL to the API server', + type: 'string', + alias: 'api-url', + default: getConfig().web.apiUrl, + }, + apiProxyTarget: { + description: + 'Forward requests from the apiUrl to this target. apiUrl must be a relative URL', + type: 'string', + alias: 'api-proxy-target', + }, + // Deprecated alias of `apiProxyTarget` + apiHost: { + description: + '[Deprecated; use apiProxyTarget] Forward requests from the apiUrl to this target. apiUrl must be a relative URL', + type: 'string', + alias: 'api-host', + deprecated: true, + }, + }) +} + +export async function handler(options: ParsedOptions) { + const { handler } = await import('./cliConfigHandler.js') + await handler(options) +} diff --git a/packages/web-server/src/cliConfigHandler.ts b/packages/web-server/src/cliConfigHandler.ts new file mode 100644 index 000000000000..b6138b785f3c --- /dev/null +++ b/packages/web-server/src/cliConfigHandler.ts @@ -0,0 +1,28 @@ +import path from 'path' + +import { config } from 'dotenv-defaults' + +import { getPaths } from '@redwoodjs/project-config' + +import type { ParsedOptions } from './types' +import { serveWeb } from './webServer' + +export async function handler(options: ParsedOptions) { + if (!process.env.REDWOOD_ENV_FILES_LOADED) { + config({ + path: path.join(getPaths().base, '.env'), + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' + } + + try { + // Change this to a dynamic import when we add other handlers + await serveWeb(options) + } catch (error) { + process.exitCode ||= 1 + console.error(`Error: ${(error as Error).message}`) + } +} diff --git a/packages/web-server/src/server.ts b/packages/web-server/src/server.ts deleted file mode 100644 index e6d7a8861fd2..000000000000 --- a/packages/web-server/src/server.ts +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env node - -import path from 'path' - -import chalk from 'chalk' -import { config } from 'dotenv-defaults' -import Fastify from 'fastify' -import { hideBin } from 'yargs/helpers' -import yargs from 'yargs/yargs' - -import { getPaths, getConfig } from '@redwoodjs/project-config' - -import { redwoodFastifyWeb } from './web' -import { withApiProxy } from './withApiProxy' - -function isFullyQualifiedUrl(url: string) { - try { - // eslint-disable-next-line no-new - new URL(url) - return true - } catch (e) { - return false - } -} - -async function serve() { - const options = yargs(hideBin(process.argv)) - .scriptName('rw-web-server') - .usage('$0', 'Start server for serving only the web side') - .strict() - - .options({ - port: { - default: getConfig().web?.port || 8910, - type: 'number', - alias: 'p', - }, - socket: { type: 'string' }, - apiHost: { - alias: 'api-host', - type: 'string', - desc: 'Forward requests from the apiUrl, defined in redwood.toml, to this host', - }, - }) - .parseSync() - - const redwoodProjectPaths = getPaths() - const redwoodConfig = getConfig() - - const apiUrl = redwoodConfig.web.apiUrl - - if (!options.apiHost && !isFullyQualifiedUrl(apiUrl)) { - console.error( - `${chalk.red('Error')}: If you don't provide ${chalk.magenta( - 'apiHost' - )}, ${chalk.magenta( - 'apiUrl' - )} needs to be a fully-qualified URL. But ${chalk.magenta( - 'apiUrl' - )} is ${chalk.yellow(apiUrl)}.` - ) - // We're using a custom error exit code here to tell `@redwoodjs/cli` that this error has been handled. - // While any other exit code than `0` is considered an error, there seems to be some conventions around some of them - // like `127`, etc. We chose 64 because it's in the range where there deliberately aren't any previous conventions. - // See https://tldp.org/LDP/abs/html/exitcodes.html. - process.exitCode = 64 - return - } - - const tsServer = Date.now() - - // Load .env files - config({ - path: path.join(redwoodProjectPaths.base, '.env'), - defaults: path.join(redwoodProjectPaths.base, '.env.defaults'), - multiline: true, - }) - - console.log(chalk.italic.dim('Starting Web Server...')) - - // Configure Fastify - const fastify = Fastify({ - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adust - // the default non-development level to `info` - level: - process.env.LOG_LEVEL ?? process.env.NODE_ENV === 'development' - ? 'debug' - : 'warn', - }, - }) - - await fastify.register(redwoodFastifyWeb, { - redwood: { - ...options, - }, - }) - - // TODO: Could this be folded into redwoodFastifyWeb? - // If apiHost is supplied, it means the functions are running elsewhere, so we should just proxy requests. - if (options.apiHost) { - // Attach plugin for proxying - fastify.register(withApiProxy, { apiHost: options.apiHost, apiUrl }) - } - - let listenOptions: - | { path: string; port?: never; host?: never } - | { path?: never; port?: number; host?: string } - - if (options.socket) { - listenOptions = { path: options.socket } - } else { - listenOptions = { - port: options.port, - host: process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::', - } - } - - // Start - fastify.listen(listenOptions).then(() => { - console.log(chalk.italic.dim('Took ' + (Date.now() - tsServer) + ' ms')) - if (options.socket) { - console.log(`Web server started on ${options.socket}`) - } else { - console.log( - `Web server started on http://${listenOptions.host}:${options.port}` - ) - } - }) - - process.on('exit', () => { - fastify.close() - }) -} - -serve() diff --git a/packages/web-server/src/types.ts b/packages/web-server/src/types.ts new file mode 100644 index 000000000000..158ab14e6510 --- /dev/null +++ b/packages/web-server/src/types.ts @@ -0,0 +1,6 @@ +import type { RedwoodFastifyWebOptions } from '@redwoodjs/fastify-web' + +export type ParsedOptions = { + port?: number + host?: string +} & RedwoodFastifyWebOptions['redwood'] diff --git a/packages/web-server/src/web.ts b/packages/web-server/src/web.ts deleted file mode 100644 index 1a60ee88efb2..000000000000 --- a/packages/web-server/src/web.ts +++ /dev/null @@ -1,94 +0,0 @@ -// NOTE: This is a copied and trimmed down version of -// packages/fastify/src/web.ts to avoid depending on that package (which comes -// with some graphql baggage we don't need here) - -import fs from 'node:fs' -import path from 'node:path' - -import fastifyStatic from '@fastify/static' -import fastifyUrlData from '@fastify/url-data' -import fg from 'fast-glob' -import type { - FastifyInstance, - FastifyReply, - HookHandlerDoneFunction, -} from 'fastify' - -import { getPaths } from '@redwoodjs/project-config' - -interface RedwoodFastifyWebOptions { - redwood?: { - apiHost?: string - } -} - -export async function redwoodFastifyWeb( - fastify: FastifyInstance, - opts: RedwoodFastifyWebOptions, - done: HookHandlerDoneFunction -) { - if (!fastify.hasPlugin('@fastify/url-data')) { - await fastify.register(fastifyUrlData) - } - const prerenderedFiles = findPrerenderedHtml() - - // Serve prerendered HTML directly, instead of the index. - prerenderedFiles - .filter((filePath) => filePath !== 'index.html') // remove index.html - .forEach((filePath) => { - const [pathName] = filePath.split('.html') - - fastify.get(`/${pathName}`, (_, reply: FastifyReply) => { - reply.header('Content-Type', 'text/html; charset=UTF-8') - reply.sendFile(filePath) - }) - }) - - fastify.log.trace( - { side: 'web', ...opts }, - 'In configureFastify hook for side: web' - ) - - // Serve other non-html assets. - fastify.register(fastifyStatic, { - root: getPaths().web.dist, - }) - - const indexPath = getFallbackIndexPath() - - // For SPA routing, fallback on unmatched routes and let client-side routing take over. - fastify.setNotFoundHandler({}, function (req, reply) { - const urlData = req.urlData() - const requestedExtension = path.extname(urlData.path ?? '') - - // If it's requesting some sort of asset, e.g. .js or .jpg files - // Html files should fallback to the index.html - if (requestedExtension !== '' && requestedExtension !== '.html') { - reply.code(404) - return reply.send('Not Found') - } - - reply.header('Content-Type', 'text/html; charset=UTF-8') - return reply.sendFile(indexPath) - }) - - done() -} - -// NOTE: This function was copied from @redwoodjs/internal/dist/files to avoid depending on @redwoodjs/internal. -// import { findPrerenderedHtml } from '@redwoodjs/internal/dist/files' -function findPrerenderedHtml(cwd = getPaths().web.dist) { - return fg.sync('**/*.html', { cwd, ignore: ['200.html', '404.html'] }) -} - -function getFallbackIndexPath() { - const prerenderIndexPath = path.join(getPaths().web.dist, '/200.html') - - // If 200 exists: the project has been prerendered. - // If 200 doesn't exist: fallback to the default, index.html. - if (fs.existsSync(prerenderIndexPath)) { - return '200.html' - } else { - return 'index.html' - } -} diff --git a/packages/web-server/src/webServer.ts b/packages/web-server/src/webServer.ts new file mode 100644 index 000000000000..bd8af09409b6 --- /dev/null +++ b/packages/web-server/src/webServer.ts @@ -0,0 +1,53 @@ +import path from 'path' + +import chalk from 'chalk' +import Fastify from 'fastify' +import fs from 'fs-extra' + +import { redwoodFastifyWeb } from '@redwoodjs/fastify-web' +import { getPaths } from '@redwoodjs/project-config' + +import type { ParsedOptions } from './types' + +export async function serveWeb(options: ParsedOptions = {}) { + const start = Date.now() + console.log(chalk.italic.dim('Starting Web Server...')) + + const distIndexExists = await fs.pathExists( + path.join(getPaths().web.dist, 'index.html') + ) + if (!distIndexExists) { + throw new Error( + 'no built files to serve; run `yarn rw build web` before serving web' + ) + } + + options.host ??= process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' + if (process.env.NODE_ENV === 'production' && options.host !== '0.0.0.0') { + console.warn( + `Warning: host '${options.host}' may need to be '0.0.0.0' in production` + ) + } + + const fastify = Fastify({ + requestTimeout: 15_000, + logger: { + level: + process.env.LOG_LEVEL ?? process.env.NODE_ENV === 'development' + ? 'debug' + : 'warn', + }, + }) + + await fastify.register(redwoodFastifyWeb, { + redwood: options, + }) + + const address = await fastify.listen({ + port: options.port, + host: options.host, + }) + + console.log(chalk.italic.dim('Took ' + (Date.now() - start) + ' ms')) + console.log(`Server listening at ${chalk.green(address)}`) +} diff --git a/packages/web-server/src/withApiProxy.ts b/packages/web-server/src/withApiProxy.ts deleted file mode 100644 index 449aca02e3ce..000000000000 --- a/packages/web-server/src/withApiProxy.ts +++ /dev/null @@ -1,22 +0,0 @@ -import httpProxy from '@fastify/http-proxy' -import type { FastifyHttpProxyOptions } from '@fastify/http-proxy' -import type { FastifyInstance } from 'fastify' - -export interface ApiProxyOptions { - apiUrl: string - apiHost: string -} - -export async function withApiProxy( - fastify: FastifyInstance, - { apiUrl, apiHost }: ApiProxyOptions -) { - const proxyOpts: FastifyHttpProxyOptions = { - upstream: apiHost, - prefix: apiUrl, - disableCache: true, - } - - fastify.register(httpProxy, proxyOpts) - return fastify -} diff --git a/packages/web-server/tsconfig.json b/packages/web-server/tsconfig.json index 22f62ab3b242..688f857dd67e 100644 --- a/packages/web-server/tsconfig.json +++ b/packages/web-server/tsconfig.json @@ -6,5 +6,8 @@ "outDir": "dist", }, "include": ["src", "ambient.d.ts"], - "references": [{ "path": "../project-config" }] + "references": [ + { "path": "../adapters/fastify/web" }, + { "path": "../project-config" } + ] } diff --git a/tasks/framework-tools/tarsync.mjs b/tasks/framework-tools/tarsync.mjs index a67919709d6e..da7751b0f6c5 100644 --- a/tasks/framework-tools/tarsync.mjs +++ b/tasks/framework-tools/tarsync.mjs @@ -47,7 +47,7 @@ async function main() { const spinner = getFrameworkSpinner({ text: 'building and packing packages' }) - await $`yarn nx run-many -t build:pack` + await $`yarn nx run-many -t build:pack --exclude create-redwood-app` spinner.text = 'moving tarballs' diff --git a/tasks/server-tests/__snapshots__/server.test.mjs.snap b/tasks/server-tests/__snapshots__/server.test.mjs.snap deleted file mode 100644 index 4db853b513af..000000000000 --- a/tasks/server-tests/__snapshots__/server.test.mjs.snap +++ /dev/null @@ -1,51 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/server.js) errors out on unknown args 1`] = ` -"rw-web-server - -Start server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/server.js) fails if apiHost isn't set and apiUrl isn't fully qualified 1`] = ` -"Error: If you don't provide apiHost, apiUrl needs to be a fully-qualified URL. But apiUrl is /.redwood/functions. -" -`; - -exports[`serve web ([ - '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', - 'web' -]) errors out on unknown args 1`] = ` -"rw-server web - -Start server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve web ([ - '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', - 'web' -]) fails if apiHost isn't set and apiUrl isn't fully qualified 1`] = ` -"Error: If you don't provide apiHost, apiUrl needs to be a fully-qualified URL. But apiUrl is /.redwood/functions. -" -`; diff --git a/tasks/server-tests/__snapshots__/server.test.mts.snap b/tasks/server-tests/__snapshots__/server.test.mts.snap new file mode 100644 index 000000000000..c439d78914b3 --- /dev/null +++ b/tasks/server-tests/__snapshots__/server.test.mts.snap @@ -0,0 +1,240 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/bin.js) > errors out on unknown args 1`] = ` +"rw-web-server + +Start a server for serving only the web side + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -p, --port The port to listen on + [number] [default: 8910] + --host The host to listen on. Defaults to + '0.0.0.0' in production, '::' in + development [string] + --apiUrl, --api-url Relative URL for proxying requests + from or a fully-qualified URL to the + API server + [string] [default: "/.redwood/functions"] + --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [string] + --apiHost, --api-host [Deprecated; use apiProxyTarget] + Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [deprecated] [string] + +Examples: + yarn rw-web-server --api-url=/api --api- Start the web server and proxy + proxy-target=https://api.redwood.horse requests made to '/api' to + 'https://api.redwood.horse' + yarn rw-web-server Start the web server send api + --api-url=https://api.redwood.horse requests to + 'https://api.redwood.horse' (make + sure to configure CORS) + +Unknown arguments: foo, bar, baz +" +`; + +exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/bin.js) > has help configured 1`] = ` +"rw-web-server + +Start a server for serving only the web side + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -p, --port The port to listen on + [number] [default: 8910] + --host The host to listen on. Defaults to + '0.0.0.0' in production, '::' in + development [string] + --apiUrl, --api-url Relative URL for proxying requests + from or a fully-qualified URL to the + API server + [string] [default: "/.redwood/functions"] + --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [string] + --apiHost, --api-host [Deprecated; use apiProxyTarget] + Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [deprecated] [string] + +Examples: + yarn rw-web-server --api-url=/api --api- Start the web server and proxy + proxy-target=https://api.redwood.horse requests made to '/api' to + 'https://api.redwood.horse' + yarn rw-web-server Start the web server send api + --api-url=https://api.redwood.horse requests to + 'https://api.redwood.horse' (make + sure to configure CORS) +" +`; + +exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/bin.js) > works by default; registers a warning at apiUrl 1`] = ` +{ + "data": null, + "errors": [ + { + "extensions": { + "code": "BAD_GATEWAY", + "httpStatus": 502, + }, + "message": "Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.", + }, + ], +} +`; + +exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', 'web' ]) > errors out on unknown args 1`] = ` +"rw-server web + +Start a server for serving only the web side + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -p, --port The port to listen on + [number] [default: 8910] + --host The host to listen on. Defaults to + '0.0.0.0' in production, '::' in + development [string] + --apiUrl, --api-url Relative URL for proxying requests + from or a fully-qualified URL to the + API server + [string] [default: "/.redwood/functions"] + --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [string] + --apiHost, --api-host [Deprecated; use apiProxyTarget] + Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [deprecated] [string] + +Unknown arguments: foo, bar, baz +" +`; + +exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', 'web' ]) > has help configured 1`] = ` +"rw-server web + +Start a server for serving only the web side + +Options: + --help Show help [boolean] + --version Show version number [boolean] + -p, --port The port to listen on + [number] [default: 8910] + --host The host to listen on. Defaults to + '0.0.0.0' in production, '::' in + development [string] + --apiUrl, --api-url Relative URL for proxying requests + from or a fully-qualified URL to the + API server + [string] [default: "/.redwood/functions"] + --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [string] + --apiHost, --api-host [Deprecated; use apiProxyTarget] + Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [deprecated] [string] +" +`; + +exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', 'web' ]) > works by default; registers a warning at apiUrl 1`] = ` +{ + "data": null, + "errors": [ + { + "extensions": { + "code": "BAD_GATEWAY", + "httpStatus": 502, + }, + "message": "Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.", + }, + ], +} +`; + +exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve', 'web' ]) > errors out on unknown args 1`] = ` +"rw serve web + +Start a server for serving only the web side + +Options: + --help Show help [boolean] + --version Show version number [boolean] + --cwd Working directory to use (where + \`redwood.toml\` is located) + --telemetry Whether to send anonymous usage + telemetry to RedwoodJS [boolean] + -p, --port The port to listen on + [number] [default: 8910] + --host The host to listen on. Defaults to + '0.0.0.0' in production, '::' in + development [string] + --apiUrl, --api-url Relative URL for proxying requests + from or a fully-qualified URL to the + API server + [string] [default: "/.redwood/functions"] + --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [string] + --apiHost, --api-host [Deprecated; use apiProxyTarget] + Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [deprecated] [string] + +Unknown arguments: foo, bar, baz +" +`; + +exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve', 'web' ]) > has help configured 1`] = ` +"rw serve web + +Start a server for serving only the web side + +Options: + --help Show help [boolean] + --version Show version number [boolean] + --cwd Working directory to use (where + \`redwood.toml\` is located) + --telemetry Whether to send anonymous usage + telemetry to RedwoodJS [boolean] + -p, --port The port to listen on + [number] [default: 8910] + --host The host to listen on. Defaults to + '0.0.0.0' in production, '::' in + development [string] + --apiUrl, --api-url Relative URL for proxying requests + from or a fully-qualified URL to the + API server + [string] [default: "/.redwood/functions"] + --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [string] + --apiHost, --api-host [Deprecated; use apiProxyTarget] + Forward requests from the apiUrl to + this target. apiUrl must be a + relative URL [deprecated] [string] +" +`; + +exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve', 'web' ]) > works by default; registers a warning at apiUrl 1`] = ` +{ + "data": null, + "errors": [ + { + "extensions": { + "code": "BAD_GATEWAY", + "httpStatus": 502, + }, + "message": "Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.", + }, + ], +} +`; diff --git a/tasks/server-tests/jest.config.js b/tasks/server-tests/jest.config.js deleted file mode 100644 index 609bf5d104c9..000000000000 --- a/tasks/server-tests/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @type {import('jest').Config} */ -const config = { - rootDir: '.', - testMatch: ['/*.test.mjs'], - testTimeout: 5_000 * 2, - transform: {}, -} - -module.exports = config diff --git a/tasks/server-tests/server.test.mjs b/tasks/server-tests/server.test.mts similarity index 67% rename from tasks/server-tests/server.test.mjs rename to tasks/server-tests/server.test.mts index 7b32fb434719..0c805777b904 100644 --- a/tasks/server-tests/server.test.mjs +++ b/tasks/server-tests/server.test.mts @@ -3,43 +3,42 @@ import http from 'node:http' import { fileURLToPath } from 'node:url' +import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest' import { fs, path, $ } from 'zx' -const __dirname = fileURLToPath(new URL('./', import.meta.url)) +//////////////// +// Tests setup +//////////////// +const __dirname = fileURLToPath(new URL('./', import.meta.url)) const FIXTURE_PATH = fileURLToPath( new URL('./fixtures/redwood-app', import.meta.url) ) +$.verbose = !!process.env.VERBOSE -//////////////////////////////////////////////////////////////// -// Set up RWJS_CWD. let original_RWJS_CWD beforeAll(() => { original_RWJS_CWD = process.env.RWJS_CWD process.env.RWJS_CWD = FIXTURE_PATH }) - afterAll(() => { process.env.RWJS_CWD = original_RWJS_CWD }) -//////////////////////////////////////////////////////////////// -// Clean up the child process after each test. +// Clean up the child process after each test let p afterEach(async () => { if (!p) { return } - p.kill() - - // Wait for child process to terminate. + // Wait for child process to terminate try { await p - } catch (e) { - // Ignore the error. + } catch { + // Ignore } }) @@ -53,19 +52,25 @@ const commandStrings = { ), '@redwoodjs/web-server': path.resolve( __dirname, - '../../packages/web-server/dist/server.js' + '../../packages/web-server/dist/bin.js' ), } -const redwoodToml = fs.readFileSync( +const redwoodToml = await fs.readFile( path.join(__dirname, './fixtures/redwood-app/redwood.toml'), 'utf-8' ) +const match = redwoodToml.match(/apiUrl = "(?[^"]*)/) +const apiUrl = match?.groups?.apiUrl +if (!apiUrl) { + throw new Error("Couldn't find apiUrl in redwood.toml") +} -const { - groups: { apiUrl }, -} = redwoodToml.match(/apiUrl = "(?[^"]*)/) +//////////////// +// Tests start +//////////////// +// `yarn rw serve` and variants describe.each([ [[commandStrings['@redwoodjs/cli'], 'serve']], [commandStrings['@redwoodjs/api-server']], @@ -115,11 +120,9 @@ describe.each([ expect(apiRes.status).toEqual(200) expect(apiBody).toEqual({ data: 'hello function' }) }) - - it.todo("doesn't respect api.port in redwood.toml") - it.todo('respects web.port in redwood.toml') }) +// `yarn rw serve api` and variants describe.each([ [[commandStrings['@redwoodjs/cli'], 'serve', 'api']], [[commandStrings['@redwoodjs/api-server'], 'api']], @@ -160,28 +163,43 @@ describe.each([ expect(res.status).toEqual(200) expect(body).toEqual({ data: 'hello function' }) }) - - it.todo('respects api.port in redwood.toml') - it.todo("apiRootPath isn't affected by apiUrl") }) -// We can't test @redwoodjs/cli here because it depends on node_modules. +// `yarn rw serve web` and variants describe.each([ + [[`${commandStrings['@redwoodjs/cli']}`, 'serve', 'web']], [[`${commandStrings['@redwoodjs/api-server']}`, 'web']], [commandStrings['@redwoodjs/web-server']], ])('serve web (%s)', (commandString) => { - it("fails if apiHost isn't set and apiUrl isn't fully qualified", async () => { - try { - await $`yarn node ${commandString}` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).not.toEqual(0) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchSnapshot() - } + it('has help configured', async () => { + const { stdout } = await $`yarn node ${commandString} --help` + expect(stdout).toMatchSnapshot() }) - it('--apiHost changes the upstream api url', async () => { + it("works by default; registers a warning at apiUrl", async () => { + p = $`yarn node ${commandString}` + await new Promise((r) => setTimeout(r, TIMEOUT)) + + // it serves some page + const res = await fetch('http://localhost:8910/about') + const body = await res.text() + + expect(res.status).toEqual(200) + expect(body).toEqual( + await fs.readFile( + path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), + 'utf-8' + ) + ) + + const warningRes = await fetch('http://localhost:8910/.redwood/functions/graphql') + const warningBody = await warningRes.json() + + expect(warningRes.status).toEqual(200) + expect(warningBody).toMatchSnapshot() + }) + + it('--api-proxy-target changes the apiUrl proxy target', async () => { const apiPort = 8916 const apiHost = 'localhost' @@ -235,10 +253,6 @@ describe.each([ expect(p.stderr).toMatchSnapshot() } }) - - it.todo('respects web.port in redwood.toml') - it.todo("works if apiHost isn't set and apiUrl is fully qualified") - it.todo('fails if apiHost is set and apiUrl is fully qualified') }) describe('@redwoodjs/cli', () => { @@ -255,7 +269,7 @@ describe('@redwoodjs/cli', () => { Commands: rw serve Run both api and web servers [default] rw serve api Start server for serving only the api - rw serve web Start server for serving only the web side + rw serve web Start a server for serving only the web side Options: --help Show help [boolean] @@ -285,7 +299,7 @@ describe('@redwoodjs/cli', () => { Commands: rw serve Run both api and web servers [default] rw serve api Start server for serving only the api - rw serve web Start server for serving only the web side + rw serve web Start a server for serving only the web side Options: --help Show help [boolean] @@ -375,64 +389,6 @@ describe('@redwoodjs/cli', () => { } }) }) - - describe('web server CLI', () => { - it.todo('handles --socket differently') - - it('has help configured', async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/cli']} serve web --help` - - expect(stdout).toMatchInlineSnapshot(` - "rw serve web - - Start server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where \`redwood.toml\` is - located) - --telemetry Whether to send anonymous usage telemetry to - RedwoodJS [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] - " - `) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandStrings['@redwoodjs/cli']} serve web --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchInlineSnapshot(` - "rw serve web - - Start server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where \`redwood.toml\` is - located) - --telemetry Whether to send anonymous usage telemetry to - RedwoodJS [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] - - Unknown arguments: foo, bar, baz - " - `) - } - }) - }) }) describe('@redwoodjs/api-server', () => { @@ -500,7 +456,7 @@ describe('@redwoodjs/api-server', () => { Commands: rw-server Run both api and web servers [default] rw-server api Start server for serving only the api - rw-server web Start server for serving only the web side + rw-server web Start a server for serving only the web side Options: --help Show help [boolean] @@ -524,7 +480,7 @@ describe('@redwoodjs/api-server', () => { Commands: rw-server Run both api and web servers [default] rw-server api Start server for serving only the api - rw-server web Start server for serving only the web side + rw-server web Start a server for serving only the web side Options: --help Show help [boolean] @@ -594,8 +550,6 @@ describe('@redwoodjs/api-server', () => { --socket [string] --apiRootPath, --api-root-path, Root path where your api functions --rootPath, --root-path are served [string] [default: "/"] - --loadEnvFiles Load .env and .env.defaults files - [boolean] [default: false] " `) }) @@ -619,94 +573,6 @@ describe('@redwoodjs/api-server', () => { --socket [string] --apiRootPath, --api-root-path, Root path where your api functions --rootPath, --root-path are served [string] [default: "/"] - --loadEnvFiles Load .env and .env.defaults files - [boolean] [default: false] - - Unknown arguments: foo, bar, baz - " - `) - } - }) - }) - - describe('web server CLI', () => { - it('--socket changes the port', async () => { - const socket = 8913 - - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} web --socket ${socket} --apiHost="http://localhost:8910"` - - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:${socket}/about`) - const body = await res.text() - - expect(res.status).toEqual(200) - expect(body).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - }) - - it('--socket wins out over --port', async () => { - const socket = 8914 - const port = 8915 - - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} web --socket ${socket} --port ${port} --apiHost="http://localhost:8910"` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:${socket}/about`) - const body = await res.text() - - expect(res.status).toEqual(200) - expect(body).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - }) - - it("doesn't have help configured", async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/api-server']} web --help` - - expect(stdout).toMatchInlineSnapshot(` - "rw-server web - - Start server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] - " - `) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandStrings['@redwoodjs/api-server']} web --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchInlineSnapshot(` - "rw-server web - - Start server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] Unknown arguments: foo, bar, baz " @@ -715,27 +581,3 @@ describe('@redwoodjs/api-server', () => { }) }) }) - -describe('@redwoodjs/web-server', () => { - it.todo('handles --socket differently') - - it('has help configured', async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/web-server']} --help` - - expect(stdout).toMatchInlineSnapshot(` - "rw-web-server - - Start server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - --apiHost, --api-host Forward requests from the apiUrl, defined in - redwood.toml, to this host [string] - " - `) - }) -}) diff --git a/yarn.lock b/yarn.lock index 5d00693c96c9..fad0fa6d7a60 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7488,11 +7488,11 @@ __metadata: "@babel/cli": "npm:7.23.4" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.6" - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" "@fastify/url-data": "npm:5.4.0" "@redwoodjs/context": "npm:6.0.7" + "@redwoodjs/fastify-web": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/web-server": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/lodash": "npm:4.14.201" "@types/qs": "npm:6.9.11" @@ -8145,6 +8145,7 @@ __metadata: "@redwoodjs/project-config": "npm:6.0.7" "@redwoodjs/structure": "npm:6.0.7" "@redwoodjs/telemetry": "npm:6.0.7" + "@redwoodjs/web-server": "npm:6.0.7" "@types/archiver": "npm:^6" archiver: "npm:6.0.1" boxen: "npm:5.1.2" @@ -8343,6 +8344,21 @@ __metadata: languageName: unknown linkType: soft +"@redwoodjs/fastify-web@npm:6.0.7, @redwoodjs/fastify-web@workspace:packages/adapters/fastify/web": + version: 0.0.0-use.local + resolution: "@redwoodjs/fastify-web@workspace:packages/adapters/fastify/web" + dependencies: + "@fastify/http-proxy": "npm:9.3.0" + "@fastify/static": "npm:6.12.0" + "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/project-config": "npm:6.0.7" + fast-glob: "npm:3.3.2" + fastify: "npm:4.24.3" + typescript: "npm:5.3.3" + vitest: "npm:1.2.1" + languageName: unknown + linkType: soft + "@redwoodjs/fastify@npm:6.0.7, @redwoodjs/fastify@workspace:packages/fastify": version: 0.0.0-use.local resolution: "@redwoodjs/fastify@workspace:packages/fastify" @@ -8815,19 +8831,15 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/web-server@workspace:packages/web-server" dependencies: - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" - "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/fastify-web": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" fastify: "npm:4.24.3" typescript: "npm:5.3.3" yargs: "npm:17.7.2" bin: - rw-web-server: ./dist/server.js + rw-web-server: ./dist/bin.js languageName: unknown linkType: soft @@ -29623,6 +29635,7 @@ __metadata: tstyche: "npm:1.0.0-beta.9" tsx: "npm:4.6.2" typescript: "npm:5.3.3" + vitest: "npm:1.2.1" yargs: "npm:17.7.2" zx: "npm:7.2.3" languageName: unknown From 12f425ceb1ab700718c9cb81958e9a216b4879d2 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sun, 28 Jan 2024 13:12:04 +0100 Subject: [PATCH 005/119] chore(tests): api-server: Suppress logs (#9890) --- .../src/__tests__/createServer.test.ts | 150 ++++++++---------- 1 file changed, 66 insertions(+), 84 deletions(-) diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index 5c8130322325..5026218767a6 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -12,7 +12,7 @@ import { } from '../createServer' // Set up RWJS_CWD. -let original_RWJS_CWD +let original_RWJS_CWD: string | undefined beforeAll(() => { original_RWJS_CWD = process.env.RWJS_CWD @@ -23,16 +23,27 @@ afterAll(() => { process.env.RWJS_CWD = original_RWJS_CWD }) +let consoleWarnSpy: jest.SpyInstance +let consoleLogSpy: jest.SpyInstance + describe('createServer', () => { // Create a server for most tests. Some that test initialization create their own - let server + let server: Awaited> beforeAll(async () => { + consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}) + consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {}) server = await createServer() }) + afterEach(() => { + jest.clearAllMocks() + }) + afterAll(async () => { await server?.close() + jest.mocked(console.log).mockRestore() + jest.mocked(console.warn).mockRestore() }) it('serves functions', async () => { @@ -44,21 +55,10 @@ describe('createServer', () => { expect(res.json()).toEqual({ data: 'hello function' }) }) - describe('warnings', () => { - let consoleWarnSpy - - beforeAll(() => { - consoleWarnSpy = jest.spyOn(console, 'warn') - }) - - afterAll(() => { - consoleWarnSpy.mockRestore() - }) - - it('warns about server.config.js', async () => { - await createServer() + it('warns about server.config.js', async () => { + await createServer() - expect(consoleWarnSpy.mock.calls[0][0]).toMatchInlineSnapshot(` + expect(consoleWarnSpy.mock.calls[0][0]).toMatchInlineSnapshot(` " Ignoring \`config\` and \`configureServer\` in api/server.config.js. Migrate them to api/src/server.{ts,js}: @@ -74,7 +74,6 @@ describe('createServer', () => { \`\`\` " `) - }) }) it('`apiRootPath` prefixes all routes', async () => { @@ -95,51 +94,35 @@ describe('createServer', () => { // The server's logger also seems to output things out of order. // // This should be fixed so that all logs go to the same place - describe('logs', () => { - let consoleLogSpy - let consoleWarnSpy - - beforeAll(() => { - consoleLogSpy = jest.spyOn(console, 'log').mockImplementation() - consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation() + it("doesn't handle logs consistently", async () => { + // Here we create a logger that outputs to an array. + const loggerLogs: string[] = [] + const stream = build(async (source) => { + for await (const obj of source) { + loggerLogs.push(obj) + } }) + const logger = pino(stream) - afterAll(() => { - consoleLogSpy.mockRestore() - consoleWarnSpy.mockRestore() + // Generate some logs. + const server = await createServer({ logger }) + const res = await server.inject({ + method: 'GET', + url: '/hello', }) + expect(res.json()).toEqual({ data: 'hello function' }) + await server.listen({ port: 8910 }) + await server.close() - it("doesn't handle logs consistently", async () => { - // Here we create a logger that outputs to an array. - const loggerLogs: string[] = [] - const stream = build(async (source) => { - for await (const obj of source) { - loggerLogs.push(obj) - } - }) - const logger = pino(stream) - - // Generate some logs. - const server = await createServer({ logger }) - const res = await server.inject({ - method: 'GET', - url: '/hello', - }) - expect(res.json()).toEqual({ data: 'hello function' }) - await server.listen({ port: 8910 }) - await server.close() - - // We expect console log to be called with `withFunctions` logs. - expect(consoleLogSpy.mock.calls[0][0]).toMatch( - /Importing Server Functions/ - ) + // We expect console log to be called with `withFunctions` logs. + expect(consoleLogSpy.mock.calls[0][0]).toMatch(/Importing Server Functions/) - const lastCallIndex = consoleLogSpy.mock.calls.length - 1 + const lastCallIndex = consoleLogSpy.mock.calls.length - 1 - expect(consoleLogSpy.mock.calls[lastCallIndex][0]).toMatch(/Listening on/) + expect(consoleLogSpy.mock.calls[lastCallIndex][0]).toMatch(/Listening on/) - // `console.warn` will be used if there's a `server.config.js` file. - expect(consoleWarnSpy.mock.calls[0][0]).toMatchInlineSnapshot(` + // `console.warn` will be used if there's a `server.config.js` file. + expect(consoleWarnSpy.mock.calls[0][0]).toMatchInlineSnapshot(` " Ignoring \`config\` and \`configureServer\` in api/server.config.js. Migrate them to api/src/server.{ts,js}: @@ -156,35 +139,34 @@ describe('createServer', () => { " `) - // Finally, the logger. Notice how the request/response logs come before the "server is listening..." logs. - expect(loggerLogs[0]).toMatchObject({ - reqId: 'req-1', - level: 30, - msg: 'incoming request', - req: { - hostname: 'localhost:80', - method: 'GET', - remoteAddress: '127.0.0.1', - url: '/hello', - }, - }) - expect(loggerLogs[1]).toMatchObject({ - reqId: 'req-1', - level: 30, - msg: 'request completed', - res: { - statusCode: 200, - }, - }) - - expect(loggerLogs[2]).toMatchObject({ - level: 30, - msg: 'Server listening at http://[::1]:8910', - }) - expect(loggerLogs[3]).toMatchObject({ - level: 30, - msg: 'Server listening at http://127.0.0.1:8910', - }) + // Finally, the logger. Notice how the request/response logs come before the "server is listening..." logs. + expect(loggerLogs[0]).toMatchObject({ + reqId: 'req-1', + level: 30, + msg: 'incoming request', + req: { + hostname: 'localhost:80', + method: 'GET', + remoteAddress: '127.0.0.1', + url: '/hello', + }, + }) + expect(loggerLogs[1]).toMatchObject({ + reqId: 'req-1', + level: 30, + msg: 'request completed', + res: { + statusCode: 200, + }, + }) + + expect(loggerLogs[2]).toMatchObject({ + level: 30, + msg: 'Server listening at http://[::1]:8910', + }) + expect(loggerLogs[3]).toMatchObject({ + level: 30, + msg: 'Server listening at http://127.0.0.1:8910', }) }) From 08075bb7d7227b1556dbbcd3c6638ef3d3f743c4 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sun, 28 Jan 2024 15:01:09 +0100 Subject: [PATCH 006/119] chore(cli): Move coerceRootPath() (#9891) Co-authored-by: Dominic Saadi --- packages/adapters/fastify/web/build.mjs | 9 +++++++++ packages/adapters/fastify/web/package.json | 4 ++++ packages/adapters/fastify/web/src/helpers.ts | 7 +++++++ packages/adapters/fastify/web/src/web.ts | 12 +++--------- packages/api-server/src/cliHandlers.ts | 10 +--------- packages/cli/package.json | 1 + packages/cli/src/commands/serve.js | 12 +----------- packages/cli/src/commands/serveHandler.js | 8 ++------ packages/fastify/src/index.ts | 10 ---------- yarn.lock | 1 + 10 files changed, 29 insertions(+), 45 deletions(-) create mode 100644 packages/adapters/fastify/web/src/helpers.ts diff --git a/packages/adapters/fastify/web/build.mjs b/packages/adapters/fastify/web/build.mjs index 6e8c6e6cccee..2a8e800737ef 100644 --- a/packages/adapters/fastify/web/build.mjs +++ b/packages/adapters/fastify/web/build.mjs @@ -1,5 +1,6 @@ import { build, defaultBuildOptions } from '../../../../buildDefaults.mjs' +// Build the main entry point await build({ buildOptions: { ...defaultBuildOptions, @@ -8,3 +9,11 @@ await build({ packages: 'external', }, }) + +// Build the helpers entry point +await build({ + buildOptions: { + ...defaultBuildOptions, + entryPoints: ['./src/helpers.ts'], + }, +}) diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index 78b49a3604d3..7bce3ca7735a 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -11,6 +11,10 @@ ".": { "types": "./dist/web.d.ts", "default": "./dist/web.js" + }, + "./helpers": { + "types": "./dist/helpers.d.ts", + "default": "./dist/helpers.js" } }, "types": "./dist/web.d.ts", diff --git a/packages/adapters/fastify/web/src/helpers.ts b/packages/adapters/fastify/web/src/helpers.ts new file mode 100644 index 000000000000..699ea26d9cba --- /dev/null +++ b/packages/adapters/fastify/web/src/helpers.ts @@ -0,0 +1,7 @@ +/** Ensures that `path` starts and ends with a slash ('/') */ +export function coerceRootPath(path: string) { + const prefix = path.charAt(0) !== '/' ? '/' : '' + const suffix = path.charAt(path.length - 1) !== '/' ? '/' : '' + + return `${prefix}${path}${suffix}` +} diff --git a/packages/adapters/fastify/web/src/web.ts b/packages/adapters/fastify/web/src/web.ts index e2ac9e28b80f..3e023cf9cf0d 100644 --- a/packages/adapters/fastify/web/src/web.ts +++ b/packages/adapters/fastify/web/src/web.ts @@ -14,10 +14,11 @@ import type { import { getPaths } from '@redwoodjs/project-config' +import { coerceRootPath } from './helpers' import { resolveOptions } from './resolveOptions' import type { RedwoodFastifyWebOptions } from './types' -export { RedwoodFastifyWebOptions } +export { coerceRootPath, RedwoodFastifyWebOptions } export async function redwoodFastifyWeb( fastify: FastifyInstance, @@ -70,14 +71,7 @@ export async function redwoodFastifyWeb( }) } - // Make sure apiUrl starts and ends with a slash - const prefix = redwoodOptions.apiUrl.charAt(0) !== '/' ? '/' : '' - const suffix = - redwoodOptions.apiUrl.charAt(redwoodOptions.apiUrl.length - 1) !== '/' - ? '/' - : '' - - const apiUrlWarningPath = `${prefix}${redwoodOptions.apiUrl}${suffix}` + const apiUrlWarningPath = coerceRootPath(redwoodOptions.apiUrl) fastify.all(apiUrlWarningPath, apiUrlHandler) fastify.all(`${apiUrlWarningPath}*`, apiUrlHandler) diff --git a/packages/api-server/src/cliHandlers.ts b/packages/api-server/src/cliHandlers.ts index 73a1f9b4937c..219a9a694fcb 100644 --- a/packages/api-server/src/cliHandlers.ts +++ b/packages/api-server/src/cliHandlers.ts @@ -1,6 +1,6 @@ import c from 'ansi-colors' -import { redwoodFastifyWeb } from '@redwoodjs/fastify-web' +import { redwoodFastifyWeb, coerceRootPath } from '@redwoodjs/fastify-web' import { getConfig } from '@redwoodjs/project-config' import createFastifyInstance from './fastify' @@ -101,13 +101,5 @@ export const bothServerHandler = async (options: BothServerArgs) => { }) } -function coerceRootPath(path: string) { - // Make sure that we create a root path that starts and ends with a slash (/) - const prefix = path.charAt(0) !== '/' ? '/' : '' - const suffix = path.charAt(path.length - 1) !== '/' ? '/' : '' - - return `${prefix}${path}${suffix}` -} - // Temporarily here till we refactor server code export { createServer } from './createServer' diff --git a/packages/cli/package.json b/packages/cli/package.json index d4b1f20de18f..f5faf591adf5 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -41,6 +41,7 @@ "@redwoodjs/api-server": "6.0.7", "@redwoodjs/cli-helpers": "6.0.7", "@redwoodjs/fastify": "6.0.7", + "@redwoodjs/fastify-web": "6.0.7", "@redwoodjs/internal": "6.0.7", "@redwoodjs/prerender": "6.0.7", "@redwoodjs/project-config": "6.0.7", diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index 9c2016d2217e..e725d69b6d32 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -4,6 +4,7 @@ import fs from 'fs-extra' import terminalLink from 'terminal-link' import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' +import { coerceRootPath } from '@redwoodjs/fastify-web/helpers' import * as webServerCLIConfig from '@redwoodjs/web-server' import { getPaths, getConfig } from '../lib' @@ -181,14 +182,3 @@ export const builder = async (yargs) => { )}` ) } - -// We'll clean this up later, but for now note that this function is -// duplicated between this package and @redwoodjs/fastify -// to avoid importing @redwoodjs/fastify when the CLI starts. -export function coerceRootPath(path) { - // Make sure that we create a root path that starts and ends with a slash (/) - const prefix = path.charAt(0) !== '/' ? '/' : '' - const suffix = path.charAt(path.length - 1) !== '/' ? '/' : '' - - return `${prefix}${path}${suffix}` -} diff --git a/packages/cli/src/commands/serveHandler.js b/packages/cli/src/commands/serveHandler.js index 696c3f1f88b5..c33d21d39e17 100644 --- a/packages/cli/src/commands/serveHandler.js +++ b/packages/cli/src/commands/serveHandler.js @@ -4,12 +4,8 @@ import chalk from 'chalk' import concurrently from 'concurrently' import execa from 'execa' -import { - coerceRootPath, - createFastifyInstance, - redwoodFastifyAPI, -} from '@redwoodjs/fastify' -import { redwoodFastifyWeb } from '@redwoodjs/fastify-web' +import { createFastifyInstance, redwoodFastifyAPI } from '@redwoodjs/fastify' +import { redwoodFastifyWeb, coerceRootPath } from '@redwoodjs/fastify-web' import { getConfig, getPaths } from '@redwoodjs/project-config' import { errorTelemetry } from '@redwoodjs/telemetry' diff --git a/packages/fastify/src/index.ts b/packages/fastify/src/index.ts index e93750aea6d0..3df9716916ad 100644 --- a/packages/fastify/src/index.ts +++ b/packages/fastify/src/index.ts @@ -14,13 +14,3 @@ export { redwoodFastifyAPI } from './api.js' export type * from './types.js' export { DEFAULT_REDWOOD_FASTIFY_CONFIG } from './config.js' - -/** - * Ensures that `path` starts and ends with a slash ('/') - */ -export function coerceRootPath(path: string) { - const prefix = path.charAt(0) !== '/' ? '/' : '' - const suffix = path.charAt(path.length - 1) !== '/' ? '/' : '' - - return `${prefix}${path}${suffix}` -} diff --git a/yarn.lock b/yarn.lock index fad0fa6d7a60..97b432f04316 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8140,6 +8140,7 @@ __metadata: "@redwoodjs/api-server": "npm:6.0.7" "@redwoodjs/cli-helpers": "npm:6.0.7" "@redwoodjs/fastify": "npm:6.0.7" + "@redwoodjs/fastify-web": "npm:6.0.7" "@redwoodjs/internal": "npm:6.0.7" "@redwoodjs/prerender": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" From 6e433c0d442875b6568c930c689b54503c0e6437 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 16:23:11 +0000 Subject: [PATCH 007/119] fix(deps): update prisma monorepo to v5.8.1 (#9893) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@prisma/client](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/client)) | [`5.7.0` -> `5.8.1`](https://renovatebot.com/diffs/npm/@prisma%2fclient/5.7.0/5.8.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2fclient/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2fclient/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2fclient/5.7.0/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2fclient/5.7.0/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@prisma/internals](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/internals)) | [`5.7.0` -> `5.8.1`](https://renovatebot.com/diffs/npm/@prisma%2finternals/5.7.0/5.8.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2finternals/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2finternals/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2finternals/5.7.0/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2finternals/5.7.0/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [prisma](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/cli)) | [`5.7.0` -> `5.8.1`](https://renovatebot.com/diffs/npm/prisma/5.7.0/5.8.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prisma/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prisma/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prisma/5.7.0/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prisma/5.7.0/5.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
prisma/prisma (@​prisma/client) ### [`v5.8.1`](https://togithub.com/prisma/prisma/releases/tag/5.8.1) [Compare Source](https://togithub.com/prisma/prisma/compare/5.8.0...5.8.1) Today, we are issuing the `5.8.1` patch release. ##### Fix in Prisma Client - [Parallel execution with Promise.all causes P2024 error in version 5.8.0 due to connection limit](https://togithub.com/prisma/prisma/issues/22610). ### [`v5.8.0`](https://togithub.com/prisma/prisma/releases/tag/5.8.0) [Compare Source](https://togithub.com/prisma/prisma/compare/5.7.1...5.8.0) 🌟 **Help us spread the word about Prisma by starring the repo or [posting on X](https://twitter.com/intent/tweet?text=Check%20out%20the%20latest%20@​prisma%20release%20v5.8.0%20%F0%9F%9A%80%0D%0A%0D%0Ahttps://github.com/prisma/prisma/releases/tag/5.8.0) about the release.** 🌟 ##### Highlights Happy New Year from your friends at Prisma! 🎊 In the last 4 weeks, we resolved some bugs on the ORM and made some progress on some exciting features that we’re not yet ready to announce. Stay tuned for the upcoming releases, in which we’ll be announcing new features. 😉 ##### `relationJoins` improvements: Relation loading strategy per query (Preview) In version [5.7.0](https://togithub.com/prisma/prisma/releases/tag/5.7.0), we released `relationJoins` into Preview. The `relationJoins` feature enables support for `JOIN`s for relation queries. This release adds support for the ability to specify the strategy used to fetch relational data per query when the Preview feature is enabled. This will enable you to choose the most efficient strategy for fetching relation data depending on your use case. You can now load relation data using either of the following strategies: - `join` — uses `JOIN`s to fetch relation data - `query` — uses sub-queries to fetch relation data When the `relationJoins` Preview feature is enabled, by default, the relation fetching strategy used is `join`. You can override the default behavior by using the `relationLoadStrategy` query option. To get started, enable the Preview feature: ```tsx // schema.prisma generator client { provider = "prisma-client-js" previewFeatures = ["relationJoins"] } ``` … and specify the relation loading strategy for your query as follows: ```tsx await prisma.user.findMany({ relationLoadStrategy: 'query', include: { posts: true, }, }) ``` Try it out and [share your feedback](https://togithub.com/prisma/prisma/discussions/22288) and create a [bug report](https://togithub.com/prisma/prisma/issues/new?assignees=\&labels=kind/bug\&projects=\&template=bug_report.yml) if you encounter any issues. ##### Survey: Edge functions support We’re working on bringing Edge function support to Prisma ORM and we would appreciate your input by [submitting a response to our survey](https://pris.ly/survey/edge-functions-release-notes). By filling out the survey, you will be considered for our Early Access cohort as soon as we have something for you to try out. ##### Fixes and improvements ##### Prisma Client - [Log output of Node-API library engine is different](https://togithub.com/prisma/prisma/issues/9039) - [`target` and `timestamp` are undefined in `info` events in Data Proxy client](https://togithub.com/prisma/prisma/issues/18479) - [Wrong types of `timestamp` and `duration` in query events with Data Proxy](https://togithub.com/prisma/prisma/issues/18482) - [Using `citext` fields with neon database driver causes conversion error](https://togithub.com/prisma/prisma/issues/21807) - [Add FreeBSD 14 as a new platform](https://togithub.com/prisma/prisma/issues/22228) - [PostgresError { code: "54023", message: "cannot pass more than 100 arguments to a function", severity: "ERROR", detail: None, column: None, hint: None }](https://togithub.com/prisma/prisma/issues/22298) - [Int\[\] return as null](https://togithub.com/prisma/prisma/issues/22303) ##### Prisma Migrate - [Prisma Migrate errors with `Environment is non-interactive` when `VERCEL` env var is defined](https://togithub.com/prisma/prisma/issues/22380) ##### Language tools (e.g. VS Code) - [Add quickfix for `Error validating field 'id' in model 'Post': MongoDB '@​default(auto())' fields must have 'ObjectId' native type.`](https://togithub.com/prisma/language-tools/issues/1548) - [Append mention of update to "preview feature not known" error message](https://togithub.com/prisma/language-tools/issues/1612) ##### Credits Huge thanks to [@​anuraaga](https://togithub.com/anuraaga), [@​onichandame](https://togithub.com/onichandame), [@​LucianBuzzo](https://togithub.com/LucianBuzzo), [@​RobertCraigie](https://togithub.com/RobertCraigie), [@​fqazi](https://togithub.com/fqazi), [@​KhooHaoYit](https://togithub.com/KhooHaoYit), [@​alencardc](https://togithub.com/alencardc), [@​Oreilles](https://togithub.com/Oreilles), [@​tinola](https://togithub.com/tinola), [@​AikoRamalho](https://togithub.com/AikoRamalho), [@​luxaritas](https://togithub.com/luxaritas) for helping! ##### Company news ##### 🎉 A billion queries and counting: Prisma Accelerate [Prisma Accelerate](https://pris.ly/accelerate-home-orm-release-1), our global database cache has served over 1 billion queries since its General Availability launch. We’d like to give a shoutout to our team and everyone who’s been with us on this journey. Stay tuned for some exciting products and features in the pipeline for 2024! ##### 🔮 Prisma ORM Ecosystem Are you building a cool tool, extension, generator, CLI tool or anything else, for Prisma ORM? [Let us know](https://prisma-data.typeform.com/to/DYEjFIVx). We would like to learn about it and feature it on our [Ecosystem page](https://www.prisma.io/ecosystem). ##### 💼 We’re hiring If you're interested in joining our growing team to help empower developers to build data-intensive applications, Prisma is the place for you. Check out our [Careers page](https://prisma.io/careers) for open positions. ### [`v5.7.1`](https://togithub.com/prisma/prisma/releases/tag/5.7.1) [Compare Source](https://togithub.com/prisma/prisma/compare/5.7.0...5.7.1) Today, we are issuing the `5.7.1` patch release. This patch fixes multiple small problems in our `relationJoins` preview feature. If you ran into problems when testing `relationJoins` before, please give it another go with 5.7.1 and [share your feedback](https://togithub.com/prisma/prisma/discussions/22288) or create a [bug report](https://togithub.com/prisma/prisma/issues/new?assignees=\&labels=kind/bug\&projects=\&template=bug_report.yml) if you encounter any issues. ##### Fixes in Prisma Client - [`relationJoins`: Int\[\] return as null](https://togithub.com/prisma/prisma/issues/22303) - [`relationJoins`: fails when filtering includes by isNot: null](https://togithub.com/prisma/prisma/issues/22311) - [`relationJoins`: "The table (not available) does not exist in the current database."](https://togithub.com/prisma/prisma/issues/22299) - [`relationJoins`: PostgresError { code: "54023", message: "cannot pass more than 100 arguments to a function", severity: "ERROR", detail: None, column: None, hint: None }](https://togithub.com/prisma/prisma/issues/22298) - [`relationJoins`: Inconsistent column data: Unexpected conversion failure from String to datetime. Reason: $trailing input](https://togithub.com/prisma/prisma/issues/22293)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- packages/api/package.json | 2 +- .../cli-packages/dataMigrate/package.json | 2 +- packages/cli/package.json | 4 +- packages/record/package.json | 4 +- packages/structure/package.json | 2 +- yarn.lock | 126 +++++++++--------- 6 files changed, 70 insertions(+), 70 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index e2e244070be9..2a7750042ad8 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.6", - "@prisma/client": "5.7.0", + "@prisma/client": "5.8.1", "@whatwg-node/fetch": "0.9.14", "core-js": "3.34.0", "humanize-string": "2.1.0", diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index d3e88a2b55f2..2f7ea0050cfc 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -36,7 +36,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@prisma/client": "5.7.0", + "@prisma/client": "5.8.1", "@types/fs-extra": "11.0.4", "@types/yargs": "17.0.32", "jest": "29.7.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index f5faf591adf5..2d22ed5b147d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -37,7 +37,7 @@ "@opentelemetry/resources": "1.18.1", "@opentelemetry/sdk-trace-node": "1.18.1", "@opentelemetry/semantic-conventions": "1.18.1", - "@prisma/internals": "5.7.0", + "@prisma/internals": "5.8.1", "@redwoodjs/api-server": "6.0.7", "@redwoodjs/cli-helpers": "6.0.7", "@redwoodjs/fastify": "6.0.7", @@ -74,7 +74,7 @@ "pluralize": "8.0.0", "portfinder": "1.0.32", "prettier": "2.8.8", - "prisma": "5.7.0", + "prisma": "5.8.1", "prompts": "2.4.2", "rimraf": "5.0.5", "semver": "7.5.4", diff --git a/packages/record/package.json b/packages/record/package.json index 69efd8aaaaed..2bd4b407cae5 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -24,14 +24,14 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.6", - "@prisma/client": "5.7.0", + "@prisma/client": "5.8.1", "@redwoodjs/project-config": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { "@babel/cli": "7.23.4", "@babel/core": "^7.22.20", - "@prisma/internals": "5.7.0", + "@prisma/internals": "5.8.1", "esbuild": "0.19.9", "vitest": "1.2.1" }, diff --git a/packages/structure/package.json b/packages/structure/package.json index 6d9b2d23c1bd..8ac375a2897b 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -27,7 +27,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.6", "@iarna/toml": "2.2.5", - "@prisma/internals": "5.7.0", + "@prisma/internals": "5.8.1", "@redwoodjs/project-config": "6.0.7", "@types/line-column": "1.0.0", "camelcase": "6.3.0", diff --git a/yarn.lock b/yarn.lock index 97b432f04316..13905010d20c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6649,93 +6649,93 @@ __metadata: languageName: node linkType: hard -"@prisma/client@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/client@npm:5.7.0" +"@prisma/client@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/client@npm:5.8.1" peerDependencies: prisma: "*" peerDependenciesMeta: prisma: optional: true - checksum: f5a634a735fdcb9576f949a9ba84da48744db514ce853b04021c7a13c673081cfb110244f20f7985516c69a101000fefcecf51ad634fd2b9c41c6715bec1c014 + checksum: 08a0eb392b1b7773545faa08bb1501352a999b7c215fa16977c61596abdd86b573723c244fbc096d8a42bab9a9bbc31a9d761aa8a85c03d2f94d6a68c04ff17f languageName: node linkType: hard -"@prisma/debug@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/debug@npm:5.7.0" - checksum: d8aa4a57bb853c163cc43d97f60475191ffade88423ec9e68d5358a70d0177662401d28ece9a161053da0148c35ed1e91c39d09c81458ddc9eccb9a8ab440651 +"@prisma/debug@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/debug@npm:5.8.1" + checksum: d3f9d6c65e5c9ba7ad9337091b78691677a5fed8b660fedaacbbf29eb0c3dfeaf188c396610eb340aed8e00c80f3dc7789b52d7c1f7cbb8144e9b6b12c0ad1e6 languageName: node linkType: hard -"@prisma/engines-version@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9": - version: 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9 - resolution: "@prisma/engines-version@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - checksum: 14ca49380c7c1e930fb2748342b046ca73c383d17b1a0442ac080e75a541d35d7e44853449e476422c4b56edb7bbe1a3eff43a9034e7d47a61edf04c06f3d9f8 +"@prisma/engines-version@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2": + version: 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 + resolution: "@prisma/engines-version@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" + checksum: 5646f14343fc5d8a6c141c4faf4481c1de84d684d986001cb220e09236c91146c7bddb56c5e6b8a3224eb9bf8c030273f0dfee802246ac8b8846d3e403a3b63b languageName: node linkType: hard -"@prisma/engines@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/engines@npm:5.7.0" +"@prisma/engines@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/engines@npm:5.8.1" dependencies: - "@prisma/debug": "npm:5.7.0" - "@prisma/engines-version": "npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - "@prisma/fetch-engine": "npm:5.7.0" - "@prisma/get-platform": "npm:5.7.0" - checksum: c128e6b4c99d3c7bfe144ee384ed16b4f97af475f47d1138caa3d335e1ba0d33a1d4c2113974878c307aba0473f0543df844b1f309f86a1061195101c1dd351e + "@prisma/debug": "npm:5.8.1" + "@prisma/engines-version": "npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" + "@prisma/fetch-engine": "npm:5.8.1" + "@prisma/get-platform": "npm:5.8.1" + checksum: b444b09549b20acfcd7e2ccbbb87beaa01247802bbc3b8f8d9ac7aa972df043158f07bfcb50a7caa97b9bc543ec26223e47a1b5529c79eac60123ce51f8faf8d languageName: node linkType: hard -"@prisma/fetch-engine@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/fetch-engine@npm:5.7.0" +"@prisma/fetch-engine@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/fetch-engine@npm:5.8.1" dependencies: - "@prisma/debug": "npm:5.7.0" - "@prisma/engines-version": "npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - "@prisma/get-platform": "npm:5.7.0" - checksum: d5c7fe88700f9d29ed6b84c4d0613ad385725b298413f4c0d1cdb5b9d6b95ddcb28a2c2dc8491826c8cae065401879e8356bb1f98e90208f34db596f5c6d9425 + "@prisma/debug": "npm:5.8.1" + "@prisma/engines-version": "npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" + "@prisma/get-platform": "npm:5.8.1" + checksum: 1020fbae8dbb6e68bca62ef788fc5e0696e89fc2c77ff94fe6a935f6a9ef1a2be21bb8102fab63d93b2a345b17fe1648305312b9516db62324cf0c58c5caa033 languageName: node linkType: hard -"@prisma/generator-helper@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/generator-helper@npm:5.7.0" +"@prisma/generator-helper@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/generator-helper@npm:5.8.1" dependencies: - "@prisma/debug": "npm:5.7.0" - checksum: d848e196a2e57acd7ab17a474e34a4363f19d10a4d33815be75cb4fae840eee6bac65b59f3fdd11e4a852d55d7c13601192113a81036e16917c2ce1d956cac23 + "@prisma/debug": "npm:5.8.1" + checksum: 8a4cca6e5ca46c6b550785124fa85b79fd5118c6ac968ff03497a35f9a56976138703a7a92d9603f43f80d0b8810bd3d4bed44b140f969402cece46f5a2c9490 languageName: node linkType: hard -"@prisma/get-platform@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/get-platform@npm:5.7.0" +"@prisma/get-platform@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/get-platform@npm:5.8.1" dependencies: - "@prisma/debug": "npm:5.7.0" - checksum: ed3ad91cb6c4887c7bc4df59771cf03e8150f13e51c460fe2acddb08b5181b1699ec852957537827fb7533d6861facd8cc31a7baa6a95f5ddd4bdd0604f77adc + "@prisma/debug": "npm:5.8.1" + checksum: c46c8d21892d44d459b2567aef5f9db8d4801adb04e4be08d58d4c0ef3a450eaaa58b868e09fc2b1a05fd7f603fe8b3e2bd5c06ea665d959f3828828509ad535 languageName: node linkType: hard -"@prisma/internals@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/internals@npm:5.7.0" +"@prisma/internals@npm:5.8.1": + version: 5.8.1 + resolution: "@prisma/internals@npm:5.8.1" dependencies: - "@prisma/debug": "npm:5.7.0" - "@prisma/engines": "npm:5.7.0" - "@prisma/fetch-engine": "npm:5.7.0" - "@prisma/generator-helper": "npm:5.7.0" - "@prisma/get-platform": "npm:5.7.0" - "@prisma/prisma-schema-wasm": "npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" + "@prisma/debug": "npm:5.8.1" + "@prisma/engines": "npm:5.8.1" + "@prisma/fetch-engine": "npm:5.8.1" + "@prisma/generator-helper": "npm:5.8.1" + "@prisma/get-platform": "npm:5.8.1" + "@prisma/prisma-schema-wasm": "npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" arg: "npm:5.0.2" prompts: "npm:2.4.2" - checksum: 5a63cd80efb6ac6271d9a25cdbe1964718658364523024054d0a21390d5881ba9071ec384710bffc973d48bf7ed30e48a9ecffa963bf87f59e0fc5f017d6b4f2 + checksum: 98e3d266e41eab73f9931b9bcb99554ba880b10546e7332b17d558e1d5c64dd11011c42f8a67f120756fca93ee04e1f656f7d1668a867acfd2a72540d72911e3 languageName: node linkType: hard -"@prisma/prisma-schema-wasm@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9": - version: 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9 - resolution: "@prisma/prisma-schema-wasm@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - checksum: ca4ca044a64c3002f88444fe59ff61b0ddec245d49b87c29ba2359719ff59c5162809574a3864b1abe6b9c67ae3ae75a8c86bb3113f18a2a62424da743c43b01 +"@prisma/prisma-schema-wasm@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2": + version: 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 + resolution: "@prisma/prisma-schema-wasm@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" + checksum: 17f1d45721701e1a6908767f2db5ad6ab3ba65c0f6dbc506630f4c5cff2cd205605ebebf8fcbbb50c6f6f1c3e7c4d9e39ab96e7b65a6fb35e0d9f80a23ad4e4c languageName: node linkType: hard @@ -7536,7 +7536,7 @@ __metadata: "@babel/cli": "npm:7.23.4" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.6" - "@prisma/client": "npm:5.7.0" + "@prisma/client": "npm:5.8.1" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" "@types/memjs": "npm:1" @@ -8055,7 +8055,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/cli-data-migrate@workspace:packages/cli-packages/dataMigrate" dependencies: - "@prisma/client": "npm:5.7.0" + "@prisma/client": "npm:5.8.1" "@redwoodjs/babel-config": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@types/fs-extra": "npm:11.0.4" @@ -8136,7 +8136,7 @@ __metadata: "@opentelemetry/resources": "npm:1.18.1" "@opentelemetry/sdk-trace-node": "npm:1.18.1" "@opentelemetry/semantic-conventions": "npm:1.18.1" - "@prisma/internals": "npm:5.7.0" + "@prisma/internals": "npm:5.8.1" "@redwoodjs/api-server": "npm:6.0.7" "@redwoodjs/cli-helpers": "npm:6.0.7" "@redwoodjs/fastify": "npm:6.0.7" @@ -8175,7 +8175,7 @@ __metadata: pluralize: "npm:8.0.0" portfinder: "npm:1.0.32" prettier: "npm:2.8.8" - prisma: "npm:5.7.0" + prisma: "npm:5.8.1" prompts: "npm:2.4.2" rimraf: "npm:5.0.5" semver: "npm:7.5.4" @@ -8659,8 +8659,8 @@ __metadata: "@babel/cli": "npm:7.23.4" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.6" - "@prisma/client": "npm:5.7.0" - "@prisma/internals": "npm:5.7.0" + "@prisma/client": "npm:5.8.1" + "@prisma/internals": "npm:5.8.1" "@redwoodjs/project-config": "npm:6.0.7" core-js: "npm:3.34.0" esbuild: "npm:0.19.9" @@ -8699,7 +8699,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.6" "@iarna/toml": "npm:2.2.5" - "@prisma/internals": "npm:5.7.0" + "@prisma/internals": "npm:5.8.1" "@redwoodjs/project-config": "npm:6.0.7" "@types/fs-extra": "npm:11.0.4" "@types/line-column": "npm:1.0.0" @@ -27932,14 +27932,14 @@ __metadata: languageName: node linkType: hard -"prisma@npm:5.7.0": - version: 5.7.0 - resolution: "prisma@npm:5.7.0" +"prisma@npm:5.8.1": + version: 5.8.1 + resolution: "prisma@npm:5.8.1" dependencies: - "@prisma/engines": "npm:5.7.0" + "@prisma/engines": "npm:5.8.1" bin: prisma: build/index.js - checksum: dec098d6a0661e435522fd8ae1990b8ad36a6077a1ff91fe591d2f52a442fbd44240c6cea2cef3ae0cfd033bf560ea577da375c575c103e7323890b50fd88387 + checksum: 30b7cfd54829ece68ed3b4cfb7616d25744bcb2dfda7fadb39be59d49958f50c8dd62455d738ca7b4fff7edf710e21e50ae98f9d86fbd04c156e9b7f27fcec9f languageName: node linkType: hard From 1ddb8b61268103416ca83c9f37c8596168d78489 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sun, 28 Jan 2024 17:48:28 +0100 Subject: [PATCH 008/119] fix(studio): Bump minimum RW canary version (#9895) --- packages/cli/src/commands/studioHandler.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/studioHandler.js b/packages/cli/src/commands/studioHandler.js index 787b575f62ca..a947ce1e3eb2 100644 --- a/packages/cli/src/commands/studioHandler.js +++ b/packages/cli/src/commands/studioHandler.js @@ -11,7 +11,7 @@ export const handler = async (options) => { try { // Check the module is installed if (!isModuleInstalled('@redwoodjs/studio')) { - const minVersions = ['7.0.0-canary.874', '7.x', '8.0.0-0'] + const minVersions = ['7.0.0-canary.889', '7.x', '8.0.0-0'] assertRedwoodVersion(minVersions) console.log( From 92154a870d95fc4adb3e4fa36d308358cb47ee63 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Sun, 28 Jan 2024 17:24:30 +0000 Subject: [PATCH 009/119] fix(serve): fix server listening logs (#9894) Right now logs from `yarn rw serve` are a bit deceiving. `yarn rw serve` sets `NODE_ENV` to `'production'` if it's not already set. This changes the host the server ends up listening on: https://github.com/redwoodjs/redwood/blob/97296d4c57e6dffb4eee2489397a3486d11e24fd/packages/cli/src/commands/serve.js#L195-L198 https://github.com/redwoodjs/redwood/blob/97296d4c57e6dffb4eee2489397a3486d11e24fd/packages/cli/src/commands/serveBothHandler.js#L125-L128 Basically, if a user doesn't set `NODE_ENV`, `yarn rw serve` serves everything at `'0.0.0.0'`. But we've hardcoded `'localhost'` in our logs: https://github.com/redwoodjs/redwood/blob/97296d4c57e6dffb4eee2489397a3486d11e24fd/packages/cli/src/commands/serveBothHandler.js#L136-L141 At first it doesn't appear wrong if you go to http://localhost:8910. It's there. But that's only because `'0.0.0.0'` means listen on all ipv4 addresses. This may seem like a small change but it's a bug if your server is listening on localhost in Docker and on deploy providers. When you look at the serve logs in a container, this is giving the impression that something is misconfigured when everything is actually fine. Instead let's just use the return from `fastify.listen` or `fastify.listeningOrigin` which tell us where it's listening. image image --------- Co-authored-by: Tobbe Lundberg --- .../src/__tests__/createServer.test.ts | 4 +- packages/api-server/src/cliHandlers.ts | 71 ++++++++++--------- packages/api-server/src/createServer.ts | 14 +--- packages/api-server/src/fastify.ts | 2 +- .../api-server/src/plugins/lambdaLoader.ts | 6 +- packages/api-server/src/server.ts | 18 ++++- packages/api-server/src/watch.ts | 4 +- packages/cli/src/commands/serveHandler.js | 35 ++++----- packages/fastify/src/config.ts | 2 +- packages/web-server/src/webServer.ts | 4 +- 10 files changed, 84 insertions(+), 76 deletions(-) diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index 5026218767a6..5b60161b6a13 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -119,7 +119,9 @@ describe('createServer', () => { const lastCallIndex = consoleLogSpy.mock.calls.length - 1 - expect(consoleLogSpy.mock.calls[lastCallIndex][0]).toMatch(/Listening on/) + expect(consoleLogSpy.mock.calls[lastCallIndex][0]).toMatch( + /Server listening at/ + ) // `console.warn` will be used if there's a `server.config.js` file. expect(consoleWarnSpy.mock.calls[0][0]).toMatchInlineSnapshot(` diff --git a/packages/api-server/src/cliHandlers.ts b/packages/api-server/src/cliHandlers.ts index 219a9a694fcb..3ef2117e8ecd 100644 --- a/packages/api-server/src/cliHandlers.ts +++ b/packages/api-server/src/cliHandlers.ts @@ -43,37 +43,47 @@ export const apiCliOptions = { export const apiServerHandler = async (options: ApiServerArgs) => { const { port, socket, apiRootPath } = options const tsApiServer = Date.now() - process.stdout.write(c.dim(c.italic('Starting API Server...\n'))) + console.log(c.dim.italic('Starting API Server...')) let fastify = createFastifyInstance() // Import Server Functions. fastify = await withFunctions(fastify, options) - const http = startFastifyServer({ - port, - socket, - fastify, - }).ready(() => { - console.log(c.italic(c.dim('Took ' + (Date.now() - tsApiServer) + ' ms'))) - - const on = socket - ? socket - : c.magenta(`http://localhost:${port}${apiRootPath}`) - console.log(`API listening on ${on}`) - const graphqlEnd = c.magenta(`${apiRootPath}graphql`) - console.log(`GraphQL endpoint at ${graphqlEnd}`) + fastify = await startFastifyServer({ port, socket, fastify }) + + fastify.ready(() => { + console.log(c.dim.italic('Took ' + (Date.now() - tsApiServer) + ' ms')) + + // In the past, in development, we've prioritized showing a friendlier + // host than the listen-on-all-ipv6-addresses '[::]'. Here we replace it + // with 'localhost' only if 1) we're not in production and 2) it's there. + // In production it's important to be transparent. + // + // We have this logic for `apiServerHandler` because this is the only + // handler called by the watch bin (which is called by `yarn rw dev`). + let address = fastify.listeningOrigin + if (process.env.NODE_ENV !== 'production') { + address = address.replace(/http:\/\/\[::\]/, 'http://localhost') + } + + const apiServer = c.magenta(`${address}${apiRootPath}`) + const graphqlEndpoint = c.magenta(`${apiServer}graphql`) + + console.log(`API server listening at ${apiServer}`) + console.log(`GraphQL endpoint at ${graphqlEndpoint}`) + sendProcessReady() }) process.on('exit', () => { - http?.close() + fastify?.close() }) } export const bothServerHandler = async (options: BothServerArgs) => { const { port, socket } = options const tsServer = Date.now() - process.stdout.write(c.dim(c.italic('Starting API and Web Servers...\n'))) + console.log(c.dim.italic('Starting API and Web Servers...')) const apiRootPath = coerceRootPath(getConfig().web.apiUrl) let fastify = createFastifyInstance() @@ -81,22 +91,19 @@ export const bothServerHandler = async (options: BothServerArgs) => { await fastify.register(redwoodFastifyWeb) fastify = await withFunctions(fastify, { ...options, apiRootPath }) - startFastifyServer({ - port, - socket, - fastify, - }).ready(() => { - console.log(c.italic(c.dim('Took ' + (Date.now() - tsServer) + ' ms'))) - const on = socket - ? socket - : c.magenta(`http://localhost:${port}${apiRootPath}`) - const webServer = c.green(`http://localhost:${port}`) - const apiServer = c.magenta(`http://localhost:${port}`) - console.log(`Web server started on ${webServer}`) - console.log(`API serving from ${apiServer}`) - console.log(`API listening on ${on}`) - const graphqlEnd = c.magenta(`${apiRootPath}graphql`) - console.log(`GraphQL endpoint at ${graphqlEnd}`) + fastify = await startFastifyServer({ port, socket, fastify }) + + fastify.ready(() => { + console.log(c.dim.italic('Took ' + (Date.now() - tsServer) + ' ms')) + + const webServer = c.green(fastify.listeningOrigin) + const apiServer = c.magenta(`${fastify.listeningOrigin}${apiRootPath}`) + const graphqlEndpoint = c.magenta(`${apiServer}graphql`) + + console.log(`Web server listening at ${webServer}`) + console.log(`API server listening at ${apiServer}`) + console.log(`GraphQL endpoint at ${graphqlEndpoint}`) + sendProcessReady() }) } diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 771bd079e9b5..768f810058ea 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -161,20 +161,10 @@ export async function createServer(options: CreateServerOptions = {}) { done() }) - // Just logging. The conditional here is to appease TS. - // `server.server.address()` can return a string, an AddressInfo object, or null. - // Note that the logging here ("Listening on...") seems to be duplicated, probably by `@redwoodjs/graphql-server` server.addHook('onListen', (done) => { - const addressInfo = server.server.address() - - if (!addressInfo || typeof addressInfo === 'string') { - done() - return - } - console.log( - `Listening on ${c.magenta( - `http://${addressInfo.address}:${addressInfo.port}${apiRootPath}` + `Server listening at ${c.magenta( + `${server.listeningOrigin}${apiRootPath}` )}` ) done() diff --git a/packages/api-server/src/fastify.ts b/packages/api-server/src/fastify.ts index f6d419176c89..0a474edf67cb 100644 --- a/packages/api-server/src/fastify.ts +++ b/packages/api-server/src/fastify.ts @@ -47,7 +47,7 @@ export function loadFastifyConfig() { } if (!isServerConfigLoaded) { - console.log(`Loading server config from ${serverConfigPath} \n`) + console.log(`Loading server config from ${serverConfigPath}`) serverConfigFile = { ...require(serverConfigPath) } isServerConfigLoaded = true } diff --git a/packages/api-server/src/plugins/lambdaLoader.ts b/packages/api-server/src/plugins/lambdaLoader.ts index ebcdce6fb1bb..c002ee601e62 100644 --- a/packages/api-server/src/plugins/lambdaLoader.ts +++ b/packages/api-server/src/plugins/lambdaLoader.ts @@ -22,7 +22,7 @@ export const LAMBDA_FUNCTIONS: Lambdas = {} export const setLambdaFunctions = async (foundFunctions: string[]) => { const tsImport = Date.now() - console.log(c.italic(c.dim('Importing Server Functions... '))) + console.log(c.dim.italic('Importing Server Functions... ')) const imports = foundFunctions.map((fnPath) => { return new Promise((resolve) => { @@ -42,7 +42,7 @@ export const setLambdaFunctions = async (foundFunctions: string[]) => { // TODO: Use terminal link. console.log( c.magenta('/' + routeName), - c.italic(c.dim(Date.now() - ts + ' ms')) + c.dim.italic(Date.now() - ts + ' ms') ) return resolve(true) }) @@ -50,7 +50,7 @@ export const setLambdaFunctions = async (foundFunctions: string[]) => { Promise.all(imports).then((_results) => { console.log( - c.italic(c.dim('...Done importing in ' + (Date.now() - tsImport) + ' ms')) + c.dim.italic('...Done importing in ' + (Date.now() - tsImport) + ' ms') ) }) } diff --git a/packages/api-server/src/server.ts b/packages/api-server/src/server.ts index eda581d3d3fb..1d6a3b540572 100644 --- a/packages/api-server/src/server.ts +++ b/packages/api-server/src/server.ts @@ -6,7 +6,7 @@ export interface HttpServerParams { fastify: FastifyInstance } -export const startServer = ({ +export const startServer = async ({ port = 8911, socket, fastify, @@ -14,7 +14,21 @@ export const startServer = ({ const host = process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' const serverPort = socket ? parseInt(socket) : port - fastify.listen({ port: serverPort, host }) + await fastify.listen({ + port: serverPort, + host, + listenTextResolver: (address) => { + // In the past, in development, we've prioritized showing a friendlier + // host than the listen-on-all-ipv6-addresses '[::]'. Here we replace it + // with 'localhost' only if 1) we're not in production and 2) it's there. + // In production it's important to be transparent. + if (process.env.NODE_ENV !== 'production') { + address = address.replace(/http:\/\/\[::\]/, 'http://localhost') + } + + return `Server listening at ${address}` + }, + }) fastify.ready(() => { fastify.log.trace( diff --git a/packages/api-server/src/watch.ts b/packages/api-server/src/watch.ts index 6af09d7a2c0f..aee598579d97 100644 --- a/packages/api-server/src/watch.ts +++ b/packages/api-server/src/watch.ts @@ -85,7 +85,7 @@ const buildAndRestart = async ({ killApiServer() const buildTs = Date.now() - process.stdout.write(c.dim(c.italic('Building... '))) + console.log(c.dim.italic('Building...')) if (clean) { await cleanApiBuild() @@ -96,7 +96,7 @@ const buildAndRestart = async ({ } else { await buildApi() } - console.log(c.dim(c.italic('Took ' + (Date.now() - buildTs) + ' ms'))) + console.log(c.dim.italic('Took ' + (Date.now() - buildTs) + ' ms')) const forkOpts = { execArgv: process.execArgv, diff --git a/packages/cli/src/commands/serveHandler.js b/packages/cli/src/commands/serveHandler.js index c33d21d39e17..c7e03abb4816 100644 --- a/packages/cli/src/commands/serveHandler.js +++ b/packages/cli/src/commands/serveHandler.js @@ -90,22 +90,18 @@ export const bothServerHandler = async (options) => { } } - fastify.listen(listenOptions) + const address = await fastify.listen(listenOptions) fastify.ready(() => { - console.log(chalk.italic.dim('Took ' + (Date.now() - tsServer) + ' ms')) + console.log(chalk.dim.italic('Took ' + (Date.now() - tsServer) + ' ms')) - const on = socket - ? socket - : chalk.magenta(`http://localhost:${port}${apiRootPath}`) + const webServer = chalk.green(address) + const apiServer = chalk.magenta(`${address}${apiRootPath}`) + const graphqlEndpoint = chalk.magenta(`${apiServer}graphql`) - const webServer = chalk.green(`http://localhost:${port}`) - const apiServer = chalk.magenta(`http://localhost:${port}`) - console.log(`Web server started on ${webServer}`) - console.log(`API serving from ${apiServer}`) - console.log(`API listening on ${on}`) - const graphqlEnd = chalk.magenta(`${apiRootPath}graphql`) - console.log(`GraphQL endpoint at ${graphqlEnd}`) + console.log(`Web server listening at ${webServer}`) + console.log(`API server listening at ${apiServer}`) + console.log(`GraphQL endpoint at ${graphqlEndpoint}`) sendProcessReady() }) @@ -162,7 +158,7 @@ export const apiServerHandler = async (options) => { } } - fastify.listen(listenOptions) + const address = await fastify.listen(listenOptions) fastify.ready(() => { fastify.log.trace( @@ -170,15 +166,14 @@ export const apiServerHandler = async (options) => { 'Fastify server configuration' ) fastify.log.trace(`Registered plugins \n${fastify.printPlugins()}`) - console.log(chalk.italic.dim('Took ' + (Date.now() - tsApiServer) + ' ms')) - const on = socket - ? socket - : chalk.magenta(`http://localhost:${port}${apiRootPath}`) + console.log(chalk.dim.italic('Took ' + (Date.now() - tsApiServer) + ' ms')) - console.log(`API listening on ${on}`) - const graphqlEnd = chalk.magenta(`${apiRootPath}graphql`) - console.log(`GraphQL endpoint at ${graphqlEnd}`) + const apiServer = chalk.magenta(`${address}${apiRootPath}`) + const graphqlEndpoint = chalk.magenta(`${apiServer}graphql`) + + console.log(`API server listening at ${apiServer}`) + console.log(`GraphQL endpoint at ${graphqlEndpoint}`) sendProcessReady() }) diff --git a/packages/fastify/src/config.ts b/packages/fastify/src/config.ts index 8daadb0f4c67..f9c6e59796c8 100644 --- a/packages/fastify/src/config.ts +++ b/packages/fastify/src/config.ts @@ -68,7 +68,7 @@ export function loadFastifyConfig() { } if (!isServerConfigLoaded) { - console.log(`Loading server config from ${serverConfigPath} \n`) + console.log(`Loading server config from ${serverConfigPath}`) serverConfigFile = { ...require(serverConfigPath) } isServerConfigLoaded = true } diff --git a/packages/web-server/src/webServer.ts b/packages/web-server/src/webServer.ts index bd8af09409b6..7698fcd13a0c 100644 --- a/packages/web-server/src/webServer.ts +++ b/packages/web-server/src/webServer.ts @@ -11,7 +11,7 @@ import type { ParsedOptions } from './types' export async function serveWeb(options: ParsedOptions = {}) { const start = Date.now() - console.log(chalk.italic.dim('Starting Web Server...')) + console.log(chalk.dim.italic('Starting Web Server...')) const distIndexExists = await fs.pathExists( path.join(getPaths().web.dist, 'index.html') @@ -49,5 +49,5 @@ export async function serveWeb(options: ParsedOptions = {}) { }) console.log(chalk.italic.dim('Took ' + (Date.now() - start) + ' ms')) - console.log(`Server listening at ${chalk.green(address)}`) + console.log(`Web server listening at ${chalk.green(address)}`) } From e9f0c1b5383b04b12464492ddf944afcbdc79f41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 18:36:07 +0000 Subject: [PATCH 010/119] chore(deps): update babel monorepo (#9892) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@babel/cli](https://babel.dev/docs/en/next/babel-cli) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-cli)) | [`7.23.4` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fcli/7.23.4/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcli/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcli/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcli/7.23.4/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcli/7.23.4/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/core](https://babel.dev/docs/en/next/babel-core) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-core)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcore/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcore/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcore/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcore/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/eslint-parser](https://babel.dev/) ([source](https://togithub.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser)) | [`7.23.3` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2feslint-parser/7.23.3/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2feslint-parser/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2feslint-parser/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2feslint-parser/7.23.3/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2feslint-parser/7.23.3/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/node](https://babel.dev/docs/en/next/babel-node) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-node)) | [`7.22.19` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fnode/7.22.19/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fnode/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fnode/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fnode/7.22.19/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fnode/7.22.19/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/parser](https://babel.dev/docs/en/next/babel-parser) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-parser)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fparser/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fparser/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fparser/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fparser/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fparser/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/plugin-proposal-decorators](https://babel.dev/docs/en/next/babel-plugin-proposal-decorators) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-decorators)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fplugin-proposal-decorators/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-proposal-decorators/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-proposal-decorators/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-proposal-decorators/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-proposal-decorators/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/plugin-transform-react-jsx](https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-react-jsx)) | [`7.22.15` -> `7.23.4`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-react-jsx/7.22.15/7.23.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-react-jsx/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-react-jsx/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-react-jsx/7.22.15/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-react-jsx/7.22.15/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/plugin-transform-runtime](https://babel.dev/docs/en/next/babel-plugin-transform-runtime) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-runtime/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-runtime/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-runtime/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-runtime/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-runtime/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/plugin-transform-typescript](https://babel.dev/docs/en/next/babel-plugin-transform-typescript) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript)) | [`7.23.3` -> `7.23.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-typescript/7.23.3/7.23.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-typescript/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-typescript/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-typescript/7.23.3/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-typescript/7.23.3/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/preset-env](https://babel.dev/docs/en/next/babel-preset-env) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-preset-env)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fpreset-env/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fpreset-env/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fpreset-env/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fpreset-env/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fpreset-env/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/register](https://babel.dev/docs/en/next/babel-register) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-register)) | [`7.22.15` -> `7.23.7`](https://renovatebot.com/diffs/npm/@babel%2fregister/7.22.15/7.23.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fregister/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fregister/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fregister/7.22.15/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fregister/7.22.15/7.23.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/runtime-corejs3](https://togithub.com/babel/babel) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-runtime-corejs3)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fruntime-corejs3/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fruntime-corejs3/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fruntime-corejs3/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fruntime-corejs3/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fruntime-corejs3/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/traverse](https://babel.dev/docs/en/next/babel-traverse) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-traverse)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2ftraverse/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2ftraverse/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2ftraverse/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2ftraverse/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2ftraverse/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ---
babel/babel (@​babel/cli) [`v7.23.9`](https://togithub.com/babel/babel/blob/HEAD/CHANGELOG.md#v7239-2024-01-25) [Compare Source](https://togithub.com/babel/babel/compare/v7.23.4...v7.23.9) - `babel-helper-transform-fixture-test-runner`, `babel-plugin-transform-function-name`, `babel-plugin-transform-modules-systemjs`, `babel-preset-env` - [#​16225](https://togithub.com/babel/babel/pull/16225) fix: `systemjs` re-traverses helpers ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators` - [#​16226](https://togithub.com/babel/babel/pull/16226) Improve decorated private method check ([@​JLHwung](https://togithub.com/JLHwung)) - `babel-plugin-proposal-decorators`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-runtime`, `babel-preset-env` - [#​16224](https://togithub.com/babel/babel/pull/16224) Properly sort `core-js@3` imports ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-traverse` - [#​15383](https://togithub.com/babel/babel/pull/15383) fix: Don't throw in `getTypeAnnotation` when using TS+inference ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - Other - [#​16210](https://togithub.com/babel/babel/pull/16210) \[eslint] Fix `no-use-before-define` for class ref in fields ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-core`, `babel-parser`, `babel-template` - [#​16222](https://togithub.com/babel/babel/pull/16222) Migrate `eslint-parser` to cts ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-types` - [#​16213](https://togithub.com/babel/babel/pull/16213) Remove `@babel/types` props that are not produced by the parser ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-parser` - [#​16072](https://togithub.com/babel/babel/pull/16072) perf: Improve parser performance for typescript ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators`, `babel-plugin-proposal-destructuring-private`, `babel-plugin-proposal-pipeline-operator`, `babel-plugin-transform-class-properties`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-new-target`, `babel-plugin-transform-parameters`, `babel-plugin-transform-private-methods`, `babel-preset-env` - [#​16218](https://togithub.com/babel/babel/pull/16218) Improve temporary variables for decorators ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-explicit-resource-management`, `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime` - [#​15959](https://togithub.com/babel/babel/pull/15959) Improve output of `using` ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu))
babel/babel (@​babel/parser) [Compare Source](https://togithub.com/babel/babel/compare/v7.23.6...v7.23.9) - `babel-helper-transform-fixture-test-runner`, `babel-plugin-transform-function-name`, `babel-plugin-transform-modules-systemjs`, `babel-preset-env` - [#​16225](https://togithub.com/babel/babel/pull/16225) fix: `systemjs` re-traverses helpers ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators` - [#​16226](https://togithub.com/babel/babel/pull/16226) Improve decorated private method check ([@​JLHwung](https://togithub.com/JLHwung)) - `babel-plugin-proposal-decorators`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-runtime`, `babel-preset-env` - [#​16224](https://togithub.com/babel/babel/pull/16224) Properly sort `core-js@3` imports ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-traverse` - [#​15383](https://togithub.com/babel/babel/pull/15383) fix: Don't throw in `getTypeAnnotation` when using TS+inference ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - Other - [#​16210](https://togithub.com/babel/babel/pull/16210) \[eslint] Fix `no-use-before-define` for class ref in fields ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-core`, `babel-parser`, `babel-template` - [#​16222](https://togithub.com/babel/babel/pull/16222) Migrate `eslint-parser` to cts ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-types` - [#​16213](https://togithub.com/babel/babel/pull/16213) Remove `@babel/types` props that are not produced by the parser ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-parser` - [#​16072](https://togithub.com/babel/babel/pull/16072) perf: Improve parser performance for typescript ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators`, `babel-plugin-proposal-destructuring-private`, `babel-plugin-proposal-pipeline-operator`, `babel-plugin-transform-class-properties`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-new-target`, `babel-plugin-transform-parameters`, `babel-plugin-transform-private-methods`, `babel-preset-env` - [#​16218](https://togithub.com/babel/babel/pull/16218) Improve temporary variables for decorators ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-explicit-resource-management`, `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime` - [#​15959](https://togithub.com/babel/babel/pull/15959) Improve output of `using` ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - Babel Bot ([@​babel-bot](https://togithub.com/babel-bot)) - Huáng Jùnliàng ([@​JLHwung](https://togithub.com/JLHwung)) - Nicolò Ribaudo ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - [@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)
--- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- package.json | 10 +- packages/api-server/package.json | 4 +- packages/api/package.json | 4 +- .../auth-providers/auth0/api/package.json | 4 +- .../auth-providers/auth0/setup/package.json | 4 +- .../auth-providers/auth0/web/package.json | 4 +- .../azureActiveDirectory/api/package.json | 4 +- .../azureActiveDirectory/setup/package.json | 4 +- .../azureActiveDirectory/web/package.json | 4 +- .../auth-providers/clerk/api/package.json | 4 +- .../auth-providers/clerk/setup/package.json | 4 +- .../auth-providers/clerk/web/package.json | 4 +- .../auth-providers/custom/setup/package.json | 4 +- .../auth-providers/dbAuth/api/package.json | 4 +- .../auth-providers/dbAuth/setup/package.json | 4 +- .../auth-providers/dbAuth/web/package.json | 4 +- .../auth-providers/firebase/api/package.json | 4 +- .../firebase/setup/package.json | 4 +- .../auth-providers/firebase/web/package.json | 4 +- .../auth-providers/netlify/api/package.json | 4 +- .../auth-providers/netlify/setup/package.json | 4 +- .../auth-providers/netlify/web/package.json | 4 +- .../auth-providers/supabase/api/package.json | 4 +- .../supabase/setup/package.json | 4 +- .../auth-providers/supabase/web/package.json | 4 +- .../supertokens/api/package.json | 4 +- .../supertokens/setup/package.json | 4 +- .../supertokens/web/package.json | 4 +- packages/auth/package.json | 4 +- packages/babel-config/package.json | 4 +- .../babel-config/src/__tests__/api.test.ts | 2 +- packages/cli/package.json | 4 +- packages/codemods/package.json | 4 +- packages/core/package.json | 4 +- packages/eslint-config/package.json | 4 +- packages/forms/package.json | 4 +- packages/graphql-server/package.json | 4 +- packages/internal/package.json | 4 +- packages/prerender/package.json | 4 +- packages/record/package.json | 4 +- packages/router/package.json | 4 +- packages/structure/package.json | 4 +- packages/telemetry/package.json | 4 +- packages/testing/package.json | 4 +- packages/vite/package.json | 4 +- packages/web/package.json | 4 +- yarn.lock | 468 +++++++++--------- 47 files changed, 326 insertions(+), 330 deletions(-) diff --git a/package.json b/package.json index 9c70d0fe1d7a..de480397d71c 100644 --- a/package.json +++ b/package.json @@ -51,21 +51,21 @@ "@actions/core": "1.10.1", "@actions/exec": "1.1.1", "@actions/glob": "0.4.0", - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@babel/generator": "7.23.6", - "@babel/node": "7.22.19", - "@babel/plugin-proposal-decorators": "7.23.6", + "@babel/node": "7.23.9", + "@babel/plugin-proposal-decorators": "7.23.9", "@babel/plugin-transform-class-properties": "^7.22.5", "@babel/plugin-transform-nullish-coalescing-operator": "7.23.4", "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.11", "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-runtime": "7.23.6", + "@babel/plugin-transform-runtime": "7.23.9", "@babel/preset-env": "^7.22.20", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.22.15", - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@faker-js/faker": "8.0.2", "@npmcli/arborist": "7.2.2", "@playwright/test": "1.40.1", diff --git a/packages/api-server/package.json b/packages/api-server/package.json index b7357e8d4b6f..b46eb4286954 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -29,7 +29,7 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@fastify/url-data": "5.4.0", "@redwoodjs/context": "6.0.7", "@redwoodjs/fastify-web": "6.0.7", @@ -52,7 +52,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/aws-lambda": "8.10.126", "@types/lodash": "4.14.201", diff --git a/packages/api/package.json b/packages/api/package.json index 2a7750042ad8..82132b8363d9 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -32,7 +32,7 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@prisma/client": "5.8.1", "@whatwg-node/fetch": "0.9.14", "core-js": "3.34.0", @@ -43,7 +43,7 @@ "title-case": "3.0.3" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", diff --git a/packages/auth-providers/auth0/api/package.json b/packages/auth-providers/auth0/api/package.json index 640d627f0c66..444a30091c7c 100644 --- a/packages/auth-providers/auth0/api/package.json +++ b/packages/auth-providers/auth0/api/package.json @@ -23,13 +23,13 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "jsonwebtoken": "9.0.2", "jwks-rsa": "3.1.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/jsonwebtoken": "9.0.5", diff --git a/packages/auth-providers/auth0/setup/package.json b/packages/auth-providers/auth0/setup/package.json index 609f1b631cad..fbf60779dac9 100644 --- a/packages/auth-providers/auth0/setup/package.json +++ b/packages/auth-providers/auth0/setup/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", diff --git a/packages/auth-providers/auth0/web/package.json b/packages/auth-providers/auth0/web/package.json index 0e5fcbca87af..383502fda6a1 100644 --- a/packages/auth-providers/auth0/web/package.json +++ b/packages/auth-providers/auth0/web/package.json @@ -23,13 +23,13 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { "@auth0/auth0-spa-js": "2.1.2", - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/react": "18.2.37", "react": "18.2.0", diff --git a/packages/auth-providers/azureActiveDirectory/api/package.json b/packages/auth-providers/azureActiveDirectory/api/package.json index 2164e6e249dc..9dc51a22c714 100644 --- a/packages/auth-providers/azureActiveDirectory/api/package.json +++ b/packages/auth-providers/azureActiveDirectory/api/package.json @@ -23,13 +23,13 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "jsonwebtoken": "9.0.2", "jwks-rsa": "3.1.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", diff --git a/packages/auth-providers/azureActiveDirectory/setup/package.json b/packages/auth-providers/azureActiveDirectory/setup/package.json index 19d3f655439b..8344f8f538ae 100644 --- a/packages/auth-providers/azureActiveDirectory/setup/package.json +++ b/packages/auth-providers/azureActiveDirectory/setup/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", diff --git a/packages/auth-providers/azureActiveDirectory/web/package.json b/packages/auth-providers/azureActiveDirectory/web/package.json index ffae8f347840..bddd4caaf12b 100644 --- a/packages/auth-providers/azureActiveDirectory/web/package.json +++ b/packages/auth-providers/azureActiveDirectory/web/package.json @@ -23,13 +23,13 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { "@azure/msal-browser": "2.38.3", - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/netlify-identity-widget": "1.9.6", "@types/react": "18.2.37", diff --git a/packages/auth-providers/clerk/api/package.json b/packages/auth-providers/clerk/api/package.json index 8d92f5421b2b..e4a9964e09d1 100644 --- a/packages/auth-providers/clerk/api/package.json +++ b/packages/auth-providers/clerk/api/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@clerk/clerk-sdk-node": "4.13.1", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", diff --git a/packages/auth-providers/clerk/setup/package.json b/packages/auth-providers/clerk/setup/package.json index 8336bede7098..2d20fae5df00 100644 --- a/packages/auth-providers/clerk/setup/package.json +++ b/packages/auth-providers/clerk/setup/package.json @@ -21,12 +21,12 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3" diff --git a/packages/auth-providers/clerk/web/package.json b/packages/auth-providers/clerk/web/package.json index e168b17a005d..b53f682e97a9 100644 --- a/packages/auth-providers/clerk/web/package.json +++ b/packages/auth-providers/clerk/web/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@clerk/clerk-react": "4.28.3", "@clerk/types": "3.60.0", diff --git a/packages/auth-providers/custom/setup/package.json b/packages/auth-providers/custom/setup/package.json index 300958d96bc6..8cb5e56259b4 100644 --- a/packages/auth-providers/custom/setup/package.json +++ b/packages/auth-providers/custom/setup/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", diff --git a/packages/auth-providers/dbAuth/api/package.json b/packages/auth-providers/dbAuth/api/package.json index 694be84376b3..2272965389fa 100644 --- a/packages/auth-providers/dbAuth/api/package.json +++ b/packages/auth-providers/dbAuth/api/package.json @@ -23,7 +23,7 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/project-config": "6.0.7", "base64url": "3.0.1", "core-js": "3.34.0", @@ -31,7 +31,7 @@ "uuid": "9.0.1" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@simplewebauthn/server": "7.4.0", diff --git a/packages/auth-providers/dbAuth/setup/package.json b/packages/auth-providers/dbAuth/setup/package.json index a80a2e321fae..735302d6a2c6 100644 --- a/packages/auth-providers/dbAuth/setup/package.json +++ b/packages/auth-providers/dbAuth/setup/package.json @@ -21,7 +21,7 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "@simplewebauthn/browser": "7.4.0", "core-js": "3.34.0", @@ -29,7 +29,7 @@ "terminal-link": "2.1.1" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@simplewebauthn/typescript-types": "7.4.0", "@types/yargs": "17.0.32", diff --git a/packages/auth-providers/dbAuth/web/package.json b/packages/auth-providers/dbAuth/web/package.json index a7d2308ce517..becc349adc5f 100644 --- a/packages/auth-providers/dbAuth/web/package.json +++ b/packages/auth-providers/dbAuth/web/package.json @@ -24,13 +24,13 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "@simplewebauthn/browser": "7.4.0", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@simplewebauthn/typescript-types": "7.4.0", "@types/react": "18.2.37", diff --git a/packages/auth-providers/firebase/api/package.json b/packages/auth-providers/firebase/api/package.json index 45841bf6e9a1..cfc743c3b731 100644 --- a/packages/auth-providers/firebase/api/package.json +++ b/packages/auth-providers/firebase/api/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "firebase-admin": "11.11.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", diff --git a/packages/auth-providers/firebase/setup/package.json b/packages/auth-providers/firebase/setup/package.json index c0d8c2713fe0..af71ae08e121 100644 --- a/packages/auth-providers/firebase/setup/package.json +++ b/packages/auth-providers/firebase/setup/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", diff --git a/packages/auth-providers/firebase/web/package.json b/packages/auth-providers/firebase/web/package.json index 6219565c256a..6c2fa95170c8 100644 --- a/packages/auth-providers/firebase/web/package.json +++ b/packages/auth-providers/firebase/web/package.json @@ -23,12 +23,12 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/react": "18.2.37", "firebase": "10.6.0", diff --git a/packages/auth-providers/netlify/api/package.json b/packages/auth-providers/netlify/api/package.json index 6b860fd80dce..d4ca87e01641 100644 --- a/packages/auth-providers/netlify/api/package.json +++ b/packages/auth-providers/netlify/api/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "jsonwebtoken": "9.0.2" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", diff --git a/packages/auth-providers/netlify/setup/package.json b/packages/auth-providers/netlify/setup/package.json index ccca83faf34a..9640fe1ed982 100644 --- a/packages/auth-providers/netlify/setup/package.json +++ b/packages/auth-providers/netlify/setup/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", diff --git a/packages/auth-providers/netlify/web/package.json b/packages/auth-providers/netlify/web/package.json index 0cf522beafab..5865314c2378 100644 --- a/packages/auth-providers/netlify/web/package.json +++ b/packages/auth-providers/netlify/web/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/netlify-identity-widget": "1.9.6", "@types/react": "18.2.37", diff --git a/packages/auth-providers/supabase/api/package.json b/packages/auth-providers/supabase/api/package.json index c65687452e68..259f51e0f915 100644 --- a/packages/auth-providers/supabase/api/package.json +++ b/packages/auth-providers/supabase/api/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "jsonwebtoken": "9.0.2" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", diff --git a/packages/auth-providers/supabase/setup/package.json b/packages/auth-providers/supabase/setup/package.json index 1d743c41ea48..a9b3531b8896 100644 --- a/packages/auth-providers/supabase/setup/package.json +++ b/packages/auth-providers/supabase/setup/package.json @@ -21,12 +21,12 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3" diff --git a/packages/auth-providers/supabase/web/package.json b/packages/auth-providers/supabase/web/package.json index e0d5a4a06f00..a096f5224840 100644 --- a/packages/auth-providers/supabase/web/package.json +++ b/packages/auth-providers/supabase/web/package.json @@ -23,11 +23,11 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@supabase/supabase-js": "2.39.0", "@types/react": "18.2.37", diff --git a/packages/auth-providers/supertokens/api/package.json b/packages/auth-providers/supertokens/api/package.json index 4c961275eb6c..c2a9c026337f 100644 --- a/packages/auth-providers/supertokens/api/package.json +++ b/packages/auth-providers/supertokens/api/package.json @@ -23,13 +23,13 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "jsonwebtoken": "9.0.2", "jwks-rsa": "3.1.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@redwoodjs/api": "6.0.7", "@types/jsonwebtoken": "9.0.5", diff --git a/packages/auth-providers/supertokens/setup/package.json b/packages/auth-providers/supertokens/setup/package.json index d85a20039801..36803e8b7a77 100644 --- a/packages/auth-providers/supertokens/setup/package.json +++ b/packages/auth-providers/supertokens/setup/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "memfs": "4.6.0", diff --git a/packages/auth-providers/supertokens/web/package.json b/packages/auth-providers/supertokens/web/package.json index 5b8891b5c086..f77ec0ffd622 100644 --- a/packages/auth-providers/supertokens/web/package.json +++ b/packages/auth-providers/supertokens/web/package.json @@ -23,12 +23,12 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/react": "18.2.37", "react": "18.2.0", diff --git a/packages/auth/package.json b/packages/auth/package.json index fa0e20f19a62..6e02ca6d6661 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -23,12 +23,12 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "react": "18.2.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index 018a3999d0cd..8efeec51e7bb 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -28,12 +28,12 @@ "@babel/plugin-transform-private-methods": "^7.22.5", "@babel/plugin-transform-private-property-in-object": "^7.22.11", "@babel/plugin-transform-react-jsx": "^7.22.15", - "@babel/plugin-transform-runtime": "7.23.6", + "@babel/plugin-transform-runtime": "7.23.9", "@babel/preset-env": "^7.22.20", "@babel/preset-react": "^7.22.15", "@babel/preset-typescript": "^7.22.15", "@babel/register": "^7.22.15", - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@babel/traverse": "^7.22.20", "@redwoodjs/project-config": "6.0.7", "babel-plugin-auto-import": "1.1.0", diff --git a/packages/babel-config/src/__tests__/api.test.ts b/packages/babel-config/src/__tests__/api.test.ts index 6fef1a715cb6..284ceed380f2 100644 --- a/packages/babel-config/src/__tests__/api.test.ts +++ b/packages/babel-config/src/__tests__/api.test.ts @@ -175,7 +175,7 @@ describe('api', () => { proposals: true, version: 3, }, - version: '7.23.6', + version: '7.23.9', }, ]) diff --git a/packages/cli/package.json b/packages/cli/package.json index 2d22ed5b147d..52e27758b136 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -29,7 +29,7 @@ "test:watch": "vitest watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@iarna/toml": "2.2.5", "@opentelemetry/api": "1.7.0", "@opentelemetry/core": "1.18.1", @@ -86,7 +86,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/archiver": "^6", "memfs": "4.6.0", diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 79e9c3400b49..0cce97583c60 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -23,11 +23,11 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@babel/parser": "^7.22.16", "@babel/plugin-transform-typescript": "^7.22.15", - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@babel/traverse": "^7.22.20", "@iarna/toml": "2.2.5", "@redwoodjs/project-config": "6.0.7", diff --git a/packages/core/package.json b/packages/core/package.json index e45a776362fc..a0393545cb7d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -35,8 +35,8 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/cli": "7.23.4", - "@babel/runtime-corejs3": "7.23.6", + "@babel/cli": "7.23.9", + "@babel/runtime-corejs3": "7.23.9", "@pmmmwh/react-refresh-webpack-plugin": "0.5.11", "@redwoodjs/cli": "6.0.7", "@redwoodjs/eslint-config": "6.0.7", diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 936db6f9480d..841f310c4f41 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@babel/core": "^7.22.20", - "@babel/eslint-parser": "7.23.3", + "@babel/eslint-parser": "7.23.9", "@babel/eslint-plugin": "7.23.5", "@redwoodjs/eslint-plugin": "6.0.7", "@redwoodjs/internal": "6.0.7", @@ -34,7 +34,7 @@ "prettier": "2.8.8" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "jest": "29.7.0", "typescript": "5.3.3" }, diff --git a/packages/forms/package.json b/packages/forms/package.json index 21f0212b4071..a4aec0b6e6db 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -23,13 +23,13 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "pascalcase": "1.0.0", "react-hook-form": "7.48.2" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@testing-library/dom": "9.3.3", "@testing-library/jest-dom": "6.1.5", diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 8fed8a5e6f05..2873c1883f48 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -23,7 +23,7 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@envelop/core": "5.0.0", "@envelop/depth-limit": "3.0.3", "@envelop/disable-introspection": "5.0.3", @@ -46,7 +46,7 @@ "uuid": "9.0.1" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@envelop/testing": "6.0.3", "@envelop/types": "4.0.1", diff --git a/packages/internal/package.json b/packages/internal/package.json index 8cdbf07fcb60..770df9c36bf1 100644 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -32,7 +32,7 @@ "@babel/parser": "^7.22.16", "@babel/plugin-transform-react-jsx": "^7.22.15", "@babel/plugin-transform-typescript": "^7.22.15", - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@babel/traverse": "^7.22.20", "@graphql-codegen/add": "4.0.1", "@graphql-codegen/cli": "3.3.1", @@ -69,7 +69,7 @@ "typescript": "5.3.3" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/fs-extra": "11.0.4", "graphql-tag": "2.12.6", diff --git a/packages/prerender/package.json b/packages/prerender/package.json index 57dc79610a8c..92fa2ea9b366 100644 --- a/packages/prerender/package.json +++ b/packages/prerender/package.json @@ -25,7 +25,7 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "@redwoodjs/internal": "6.0.7", "@redwoodjs/project-config": "6.0.7", @@ -40,7 +40,7 @@ "mime-types": "2.1.35" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/mime-types": "2.1.4", "babel-plugin-tester": "11.0.4", diff --git a/packages/record/package.json b/packages/record/package.json index 2bd4b407cae5..3e9691edf12d 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -23,13 +23,13 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@prisma/client": "5.8.1", "@redwoodjs/project-config": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@prisma/internals": "5.8.1", "esbuild": "0.19.9", diff --git a/packages/router/package.json b/packages/router/package.json index 16e15909123d..32f3bec05c50 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -24,13 +24,13 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@reach/skip-nav": "0.18.0", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", diff --git a/packages/structure/package.json b/packages/structure/package.json index 8ac375a2897b..0bacb1e6029a 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -25,7 +25,7 @@ "test:watch": "vitest watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@iarna/toml": "2.2.5", "@prisma/internals": "5.8.1", "@redwoodjs/project-config": "6.0.7", @@ -50,7 +50,7 @@ "yargs-parser": "21.1.1" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/fs-extra": "11.0.4", "@types/lodash": "4.14.201", diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index a834e77395a5..56d2daef708d 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -22,7 +22,7 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/project-config": "6.0.7", "@redwoodjs/structure": "6.0.7", "@whatwg-node/fetch": "0.9.14", @@ -34,7 +34,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/envinfo": "7.8.3", "@types/uuid": "9.0.7", diff --git a/packages/testing/package.json b/packages/testing/package.json index 92285d2c7684..2cc9269ee94b 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -28,7 +28,7 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "@redwoodjs/babel-config": "6.0.7", "@redwoodjs/context": "6.0.7", @@ -58,7 +58,7 @@ "whatwg-fetch": "3.6.19" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "typescript": "5.3.3" }, diff --git a/packages/vite/package.json b/packages/vite/package.json index 0d202886ef76..a455e8f677bf 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -26,7 +26,7 @@ "test:watch": "vitest watch src" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/internal": "6.0.7", "@redwoodjs/project-config": "6.0.7", "@vitejs/plugin-react": "4.2.1", @@ -36,7 +36,7 @@ "yargs-parser": "21.1.1" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@types/react": "18.2.37", "@types/yargs-parser": "21.0.3", "glob": "10.3.10", diff --git a/packages/web/package.json b/packages/web/package.json index 58e782535ae3..c5e3ef88a5e3 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -38,7 +38,7 @@ }, "dependencies": { "@apollo/client": "3.8.8", - "@babel/runtime-corejs3": "7.23.6", + "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0", "graphql": "16.8.1", @@ -50,7 +50,7 @@ "ts-toolbelt": "9.6.0" }, "devDependencies": { - "@babel/cli": "7.23.4", + "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", diff --git a/yarn.lock b/yarn.lock index 13905010d20c..0bd301697c35 100644 --- a/yarn.lock +++ b/yarn.lock @@ -333,9 +333,9 @@ __metadata: languageName: node linkType: hard -"@babel/cli@npm:7.23.4": - version: 7.23.4 - resolution: "@babel/cli@npm:7.23.4" +"@babel/cli@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/cli@npm:7.23.9" dependencies: "@jridgewell/trace-mapping": "npm:^0.3.17" "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3" @@ -356,11 +356,11 @@ __metadata: bin: babel: ./bin/babel.js babel-external-helpers: ./bin/babel-external-helpers.js - checksum: f71bc378f62dd19983adc8dae4ee33cd44ac7d8ea3224709f787f290e0c3a4b8a36dad76d672b3479de2b9f524e55b4bb12a2296154c73134ba111114a15779c + checksum: 0a5e9399e95ff0efea10db217e48682e025bd09d51aa96886e5c4d8c7b9d2115bc17d00704dc05e9ae7ab858c26467fec15e87a100cf995567c395f2941df4a0 languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.23.5": version: 7.23.5 resolution: "@babel/code-frame@npm:7.23.5" dependencies: @@ -378,31 +378,31 @@ __metadata: linkType: hard "@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.18.9, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.20, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.5": - version: 7.23.6 - resolution: "@babel/core@npm:7.23.6" + version: 7.23.9 + resolution: "@babel/core@npm:7.23.9" dependencies: "@ampproject/remapping": "npm:^2.2.0" "@babel/code-frame": "npm:^7.23.5" "@babel/generator": "npm:^7.23.6" "@babel/helper-compilation-targets": "npm:^7.23.6" "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.23.6" - "@babel/parser": "npm:^7.23.6" - "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" + "@babel/helpers": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@babel/template": "npm:^7.23.9" + "@babel/traverse": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: a02bae7d916029b70706dc301535e1b31e5d216f55d4ee6f64a15825c6b69ee2c14c52a213d1497ec414e925ed4e9d897d41fb0d75df9fea28ed2c0008790e31 + checksum: 03883300bf1252ab4c9ba5b52f161232dd52873dbe5cde9289bb2bb26e935c42682493acbac9194a59a3b6cbd17f4c4c84030db8d6d482588afe64531532ff9b languageName: node linkType: hard -"@babel/eslint-parser@npm:7.23.3": - version: 7.23.3 - resolution: "@babel/eslint-parser@npm:7.23.3" +"@babel/eslint-parser@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/eslint-parser@npm:7.23.9" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -410,7 +410,7 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 - checksum: abb01d23acd80e983125cd72c547baaf7775bfca7a98fc57a2a95f2b70197a34c6bf861e255ab5c8740ace27c50a9966481503875fcc23b2636598740e4881f4 + checksum: 8a025e6c2d9ad47e86bfea9011422c8a053382692901607236cd0fba1ee52504d7d2b2c6186c14f15de7553ec0e2786b9a3c3d92542153f2d41c5241fb166745 languageName: node linkType: hard @@ -469,9 +469,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helper-create-class-features-plugin@npm:7.23.6" +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.23.6, @babel/helper-create-class-features-plugin@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/helper-create-class-features-plugin@npm:7.23.9" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" "@babel/helper-environment-visitor": "npm:^7.22.20" @@ -484,7 +484,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 4b923a63b757bf030839263b9609d4fc1f9858a701c173a6a15d0fc135a71847c842faddfd8af8eb324d2379725ba0d9a3d004d48ea7aac2c973cea36627707e + checksum: 3bcbd699c34805e3dcc627e14b603da11e0c0535084d092cef38f78473e2a3db294690463b05e0ab78d375527894bffffb93a41534ba3ae9850757ef72d71c91 languageName: node linkType: hard @@ -501,9 +501,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.4.3": - version: 0.4.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.3" +"@babel/helper-define-polyfill-provider@npm:^0.5.0": + version: 0.5.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" dependencies: "@babel/helper-compilation-targets": "npm:^7.22.6" "@babel/helper-plugin-utils": "npm:^7.22.5" @@ -512,7 +512,7 @@ __metadata: resolve: "npm:^1.14.2" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 0007035157e0d32ee9cb4ca319b89d6f3705523383efe52a59eb3d4dfa2ed08c5147e49c10a6e6d69c15221d89c76c8e5875475d6710fb44a5c37b8e69388e40 + checksum: 2b053b96a0c604a7e0f5c7d13a8a55f4451d938f7af42bd40f62a87df15e6c87a0b1dbd893a0f0bb51077b54dc3ba00a58b166531a5940ad286ab685dd8979ec languageName: node linkType: hard @@ -676,14 +676,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helpers@npm:7.23.6" +"@babel/helpers@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/helpers@npm:7.23.9" dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" - checksum: df1cf6607676ad36f52f652ec03536f2732d70aef5e76dba5c964e34d49f3c2d3dcf9fb3740db359f53071d74b64606a833d5ba156f79f437f71bfe06e2e7e19 + "@babel/template": "npm:^7.23.9" + "@babel/traverse": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + checksum: f69fd0aca96a6fb8bd6dd044cd8a5c0f1851072d4ce23355345b9493c4032e76d1217f86b70df795e127553cf7f3fcd1587ede9d1b03b95e8b62681ca2165b87 languageName: node linkType: hard @@ -698,11 +698,11 @@ __metadata: languageName: node linkType: hard -"@babel/node@npm:7.22.19": - version: 7.22.19 - resolution: "@babel/node@npm:7.22.19" +"@babel/node@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/node@npm:7.23.9" dependencies: - "@babel/register": "npm:^7.22.15" + "@babel/register": "npm:^7.23.7" commander: "npm:^4.0.1" core-js: "npm:^3.30.2" node-environment-flags: "npm:^1.0.5" @@ -712,16 +712,16 @@ __metadata: "@babel/core": ^7.0.0-0 bin: babel-node: ./bin/babel-node.js - checksum: df3d5195cc9c070508fa964a1ae073e20c3bf60a8d996be0e3ac8c1d9dd6c69a5abe54452e74a123fb4ea67fa92b66a77f34acc5f45178c27395a57706ad7a45 + checksum: 6de13cbfde3dd3edd55384c14327b8ffb6d0ae6e65fabe3ffa699752319087249660fead7b7254a1e6d4a6d6316c6ab411845c495909fdef074f94ed2c47eb08 languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.6, @babel/parser@npm:^7.3.2": - version: 7.23.6 - resolution: "@babel/parser@npm:7.23.6" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.15, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.3.2": + version: 7.23.9 + resolution: "@babel/parser@npm:7.23.9" bin: parser: ./bin/babel-parser.js - checksum: 6f76cd5ccae1fa9bcab3525b0865c6222e9c1d22f87abc69f28c5c7b2c8816a13361f5bd06bddbd5faf903f7320a8feba02545c981468acec45d12a03db7755e + checksum: 7df97386431366d4810538db4b9ec538f4377096f720c0591c7587a16f6810e62747e9fbbfa1ff99257fd4330035e4fb1b5b77c7bd3b97ce0d2e3780a6618975 languageName: node linkType: hard @@ -749,15 +749,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.3" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.7" dependencies: "@babel/helper-environment-visitor": "npm:^7.22.20" "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 0f43b74741d50e637ba4dcef2786621126fe4da6ccf4ee2e94423ee23f6a04ecd91d458e59764c43e4968be139e5197ee43be8a2fea2c09f0b202a3391e548cc + checksum: 355746e21ad7f43e4f4daef54cfe2ef461ecd19446b2afedd53c39df1bf9aa2eeeeaabee2279b1321de89a97c9360e4f76e9ba950fee50ff1676c25f6929d625 languageName: node linkType: hard @@ -773,19 +773,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-proposal-decorators@npm:7.23.6": - version: 7.23.6 - resolution: "@babel/plugin-proposal-decorators@npm:7.23.6" +"@babel/plugin-proposal-decorators@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-proposal-decorators@npm:7.23.9" dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.23.6" + "@babel/helper-create-class-features-plugin": "npm:^7.23.9" "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.20" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" "@babel/plugin-syntax-decorators": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3ab6126ca4d463e3070ebbff734a00750776e475c69cabd35f25bbb6e5b7b355fa63f863c73e18f2ba9104f8acc728bdd4dbc1bacb88160714e0632287ccb5f4 + checksum: 3e5d7f077bc8a98c72b2de275095bf2556b39fcc1c2b0f77ea73b171ff872548288ac228d13af24e3c6f657807f93ada21fbb35cb5201a63ce858caae6afbde1 languageName: node linkType: hard @@ -970,7 +967,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.22.5, @babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.23.3 resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" dependencies: @@ -1103,9 +1100,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.4" +"@babel/plugin-transform-async-generator-functions@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.9" dependencies: "@babel/helper-environment-visitor": "npm:^7.22.20" "@babel/helper-plugin-utils": "npm:^7.22.5" @@ -1113,7 +1110,7 @@ __metadata: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f2eef4de609975a3f7da7832576b5ffc93e43c80f87e1a99e886b0f8591096cfc4c37e2d5f52fdeaa2a9c09a25a59f3e621159abaca75d3193922a5c0e4cbe0c + checksum: 4ff75f9ce500e1de8c0236fa5122e6475a477d19cb9a4c2ae8651e78e717ebb2e2cecfeca69d420def779deaec78b945843b9ffd15f02ecd7de5072030b4469b languageName: node linkType: hard @@ -1177,22 +1174,21 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/plugin-transform-classes@npm:7.23.5" +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.8": + version: 7.23.8 + resolution: "@babel/plugin-transform-classes@npm:7.23.8" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-compilation-targets": "npm:^7.23.6" "@babel/helper-environment-visitor": "npm:^7.22.20" "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/helper-replace-supers": "npm:^7.22.20" "@babel/helper-split-export-declaration": "npm:^7.22.6" globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 07988f52b4893151887d1ea6ff79e5fe834078c5731bd09babd5659edbbae21ea4e2de326a02443a63fd776b4c945da6177f07875b56fe66e0b7899e830a9e92 + checksum: 227ac5166501e04d9e7fbd5eda6869b084ffa4af6830ac12544ac6ea14953ca00eb1762b0df9349c0f6c8d2a799385910f558066cd0fb85b9ca437b1131a6043 languageName: node linkType: hard @@ -1386,9 +1382,9 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.3" +"@babel/plugin-transform-modules-systemjs@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.9" dependencies: "@babel/helper-hoist-variables": "npm:^7.22.5" "@babel/helper-module-transforms": "npm:^7.23.3" @@ -1396,7 +1392,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0d55280a276510222c8896bf4e581acb84824aa5b14c824f7102242ad6bc5104aaffe5ab22fe4d27518f4ae2811bd59c36d0c0bfa695157f9cfce33f0517a069 + checksum: 1926631fe9d87c0c53427a3420ad49da62d53320d0016b6afab64e5417a672aa5bdff3ea1d24746ffa1e43319c28a80f5d8cef0ad214760d399c293b5850500f languageName: node linkType: hard @@ -1604,17 +1600,17 @@ __metadata: linkType: hard "@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": - version: 7.22.15 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" + version: 7.23.4 + resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" "@babel/helper-module-imports": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-jsx": "npm:^7.22.5" - "@babel/types": "npm:^7.22.15" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/types": "npm:^7.23.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: db37491e3eea5530521e177380312f308f01f806866fa0ce08d48fc5a8c9eaf9a954f778fa1ff477248afb72e916eb66ab3d35254bb6a8979f8b8e74a0fd8873 + checksum: 8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 languageName: node linkType: hard @@ -1653,19 +1649,19 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-runtime@npm:7.23.6": - version: 7.23.6 - resolution: "@babel/plugin-transform-runtime@npm:7.23.6" +"@babel/plugin-transform-runtime@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-runtime@npm:7.23.9" dependencies: "@babel/helper-module-imports": "npm:^7.22.15" "@babel/helper-plugin-utils": "npm:^7.22.5" - babel-plugin-polyfill-corejs2: "npm:^0.4.6" - babel-plugin-polyfill-corejs3: "npm:^0.8.5" - babel-plugin-polyfill-regenerator: "npm:^0.5.3" + babel-plugin-polyfill-corejs2: "npm:^0.4.8" + babel-plugin-polyfill-corejs3: "npm:^0.9.0" + babel-plugin-polyfill-regenerator: "npm:^0.5.5" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 94a7ee92f073df53fd8bebf9ed391a95553716077da1c6c3a57f10f042358c938495d55e6b09b4b50544c01f03560c4770c17698e1c24817a15d3668e8231249 + checksum: 3b959c2b88ea0009c288fa190d9f69b0d26cb336b8a7cab54a5e54b844f33cce1996725c15305a40049c8f23ca30082ee27e1f6853ff35fad723543e3d2dba47 languageName: node linkType: hard @@ -1726,16 +1722,16 @@ __metadata: linkType: hard "@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-typescript@npm:7.23.3" + version: 7.23.6 + resolution: "@babel/plugin-transform-typescript@npm:7.23.6" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-create-class-features-plugin": "npm:^7.23.6" "@babel/helper-plugin-utils": "npm:^7.22.5" "@babel/plugin-syntax-typescript": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a3c738efcf491ceb1eee646f57c44990ee0c80465527b88fcfa0b7602688c4ff8c165a4c5b62caf05d968b095212018fd30a02879c12d37c657081f57b31fb26 + checksum: e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f languageName: node linkType: hard @@ -1787,8 +1783,8 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.22.20, @babel/preset-env@npm:^7.23.2": - version: 7.23.6 - resolution: "@babel/preset-env@npm:7.23.6" + version: 7.23.9 + resolution: "@babel/preset-env@npm:7.23.9" dependencies: "@babel/compat-data": "npm:^7.23.5" "@babel/helper-compilation-targets": "npm:^7.23.6" @@ -1796,7 +1792,7 @@ __metadata: "@babel/helper-validator-option": "npm:^7.23.5" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.7" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators": "npm:^7.8.4" "@babel/plugin-syntax-class-properties": "npm:^7.12.13" @@ -1817,13 +1813,13 @@ __metadata: "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.23.3" - "@babel/plugin-transform-async-generator-functions": "npm:^7.23.4" + "@babel/plugin-transform-async-generator-functions": "npm:^7.23.9" "@babel/plugin-transform-async-to-generator": "npm:^7.23.3" "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3" "@babel/plugin-transform-block-scoping": "npm:^7.23.4" "@babel/plugin-transform-class-properties": "npm:^7.23.3" "@babel/plugin-transform-class-static-block": "npm:^7.23.4" - "@babel/plugin-transform-classes": "npm:^7.23.5" + "@babel/plugin-transform-classes": "npm:^7.23.8" "@babel/plugin-transform-computed-properties": "npm:^7.23.3" "@babel/plugin-transform-destructuring": "npm:^7.23.3" "@babel/plugin-transform-dotall-regex": "npm:^7.23.3" @@ -1839,7 +1835,7 @@ __metadata: "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3" "@babel/plugin-transform-modules-amd": "npm:^7.23.3" "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" - "@babel/plugin-transform-modules-systemjs": "npm:^7.23.3" + "@babel/plugin-transform-modules-systemjs": "npm:^7.23.9" "@babel/plugin-transform-modules-umd": "npm:^7.23.3" "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" "@babel/plugin-transform-new-target": "npm:^7.23.3" @@ -1865,14 +1861,14 @@ __metadata: "@babel/plugin-transform-unicode-regex": "npm:^7.23.3" "@babel/plugin-transform-unicode-sets-regex": "npm:^7.23.3" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.6" - babel-plugin-polyfill-corejs3: "npm:^0.8.5" - babel-plugin-polyfill-regenerator: "npm:^0.5.3" + babel-plugin-polyfill-corejs2: "npm:^0.4.8" + babel-plugin-polyfill-corejs3: "npm:^0.9.0" + babel-plugin-polyfill-regenerator: "npm:^0.5.5" core-js-compat: "npm:^3.31.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5b24d179af52f082d04b9b98cc4777e37bf31a97cef5a91d8917e996dbd75f2f743c88c40f80744cb8529355bb674619d150c0260c32d834aa4067e21d0c8962 + checksum: 2837a42089180e51bfd6864b6d197e01fc0abec1920422e71c0513c2fc8fb5f3bfe694ed778cc4e45856c546964945bc53bf8105e4b26f3580ce3685fa50cc0f languageName: node linkType: hard @@ -1933,18 +1929,18 @@ __metadata: languageName: node linkType: hard -"@babel/register@npm:^7.13.16, @babel/register@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/register@npm:7.22.15" +"@babel/register@npm:^7.13.16, @babel/register@npm:^7.22.15, @babel/register@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/register@npm:7.23.7" dependencies: clone-deep: "npm:^4.0.1" find-cache-dir: "npm:^2.0.0" make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.5" + pirates: "npm:^4.0.6" source-map-support: "npm:^0.5.16" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 895cc773c3b3eae909478ea2a9735ef6edd634b04b4aaaad2ce576fd591c2b3c70ff8c90423e769a291bee072186e7e4801480c1907e31ba3053c6cdba5571cb + checksum: b2466e41a4394e725b57e139ba45c3f61b88546d3cb443e84ce46cb34071b60c6cdb706a14c58a1443db530691a54f51da1f0c97f6c1aecbb838a2fb7eb5dbb9 languageName: node linkType: hard @@ -1955,13 +1951,13 @@ __metadata: languageName: node linkType: hard -"@babel/runtime-corejs3@npm:7.23.6": - version: 7.23.6 - resolution: "@babel/runtime-corejs3@npm:7.23.6" +"@babel/runtime-corejs3@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/runtime-corejs3@npm:7.23.9" dependencies: core-js-pure: "npm:^3.30.2" regenerator-runtime: "npm:^0.14.0" - checksum: 776648b5692d7a0543e21f1b8c8bede28773351ead42cbc170d1ba80968ccb99d2a62f193efabb45db21cecb28d48eac53b508add47eab4b40adbb47a0fde011 + checksum: 7926ebf38285b41e2a486b25aaa10861db1cfd29accd0b0eaa1338080d853339481f78d8d73e5d1f219a8ad52c477dcd4e7cc3473d1befbb290c77b27ed1ec91 languageName: node linkType: hard @@ -1974,20 +1970,20 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.3.3": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.23.9, @babel/template@npm:^7.3.3": + version: 7.23.9 + resolution: "@babel/template@npm:7.23.9" dependencies: - "@babel/code-frame": "npm:^7.22.13" - "@babel/parser": "npm:^7.22.15" - "@babel/types": "npm:^7.22.15" - checksum: 9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 + "@babel/code-frame": "npm:^7.23.5" + "@babel/parser": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + checksum: 0e8b60119433787742bc08ae762bbd8d6755611c4cabbcb7627b292ec901a55af65d93d1c88572326069efb64136ef151ec91ffb74b2df7689bbab237030833a languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/traverse@npm:7.23.6" +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.23.2, @babel/traverse@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/traverse@npm:7.23.9" dependencies: "@babel/code-frame": "npm:^7.23.5" "@babel/generator": "npm:^7.23.6" @@ -1995,22 +1991,22 @@ __metadata: "@babel/helper-function-name": "npm:^7.23.0" "@babel/helper-hoist-variables": "npm:^7.22.5" "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" + "@babel/parser": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 5b4ebb94a00a7e1daf111e4b0b45a7998d5b7598637a14e75e855e88cc1b702789e09a958726b5d599a003be1e9032dbdfde4b88ea6061332228738950d5582d + checksum: d1615d1d02f04d47111a7ea4446a1a6275668ca39082f31d51f08380de9502e19862be434eaa34b022ce9a17dbb8f9e2b73a746c654d9575f3a680a7ffdf5630 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.1.6, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.23.6 - resolution: "@babel/types@npm:7.23.6" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.1.6, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.9 + resolution: "@babel/types@npm:7.23.9" dependencies: "@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: 42cefce8a68bd09bb5828b4764aa5586c53c60128ac2ac012e23858e1c179347a4aac9c66fc577994fbf57595227611c5ec8270bf0cfc94ff033bbfac0550b70 + checksum: edc7bb180ce7e4d2aea10c6972fb10474341ac39ba8fdc4a27ffb328368dfdfbf40fca18e441bbe7c483774500d5c05e222cec276c242e952853dcaf4eb884f7 languageName: node linkType: hard @@ -7485,9 +7481,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/api-server@workspace:packages/api-server" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@fastify/url-data": "npm:5.4.0" "@redwoodjs/context": "npm:6.0.7" "@redwoodjs/fastify-web": "npm:6.0.7" @@ -7533,9 +7529,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/api@workspace:packages/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@prisma/client": "npm:5.8.1" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" @@ -7575,9 +7571,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-auth0-api@workspace:packages/auth-providers/auth0/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.34.0" @@ -7592,9 +7588,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-auth0-setup@workspace:packages/auth-providers/auth0/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7608,9 +7604,9 @@ __metadata: resolution: "@redwoodjs/auth-auth0-web@workspace:packages/auth-providers/auth0/web" dependencies: "@auth0/auth0-spa-js": "npm:2.1.2" - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" core-js: "npm:3.34.0" @@ -7626,9 +7622,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-azure-active-directory-api@workspace:packages/auth-providers/azureActiveDirectory/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" @@ -7644,9 +7640,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-azure-active-directory-setup@workspace:packages/auth-providers/azureActiveDirectory/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7660,9 +7656,9 @@ __metadata: resolution: "@redwoodjs/auth-azure-active-directory-web@workspace:packages/auth-providers/azureActiveDirectory/web" dependencies: "@azure/msal-browser": "npm:2.38.3" - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/netlify-identity-widget": "npm:1.9.6" "@types/react": "npm:18.2.37" @@ -7679,9 +7675,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-clerk-api@workspace:packages/auth-providers/clerk/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@clerk/clerk-sdk-node": "npm:4.13.1" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" @@ -7695,9 +7691,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-clerk-setup@workspace:packages/auth-providers/clerk/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7709,9 +7705,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-clerk-web@workspace:packages/auth-providers/clerk/web" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@clerk/clerk-react": "npm:4.28.3" "@clerk/types": "npm:3.60.0" "@redwoodjs/auth": "npm:6.0.7" @@ -7729,9 +7725,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-custom-setup@workspace:packages/auth-providers/custom/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7744,9 +7740,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-dbauth-api@workspace:packages/auth-providers/dbAuth/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@simplewebauthn/server": "npm:7.4.0" @@ -7765,9 +7761,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-dbauth-setup@workspace:packages/auth-providers/dbAuth/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" @@ -7783,9 +7779,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-dbauth-web@workspace:packages/auth-providers/dbAuth/web" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" @@ -7801,9 +7797,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-firebase-api@workspace:packages/auth-providers/firebase/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" core-js: "npm:3.34.0" @@ -7817,9 +7813,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-firebase-setup@workspace:packages/auth-providers/firebase/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7832,9 +7828,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-firebase-web@workspace:packages/auth-providers/firebase/web" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" core-js: "npm:3.34.0" @@ -7851,9 +7847,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-netlify-api@workspace:packages/auth-providers/netlify/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" @@ -7868,9 +7864,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-netlify-setup@workspace:packages/auth-providers/netlify/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7883,9 +7879,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-netlify-web@workspace:packages/auth-providers/netlify/web" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/netlify-identity-widget": "npm:1.9.6" "@types/react": "npm:18.2.37" @@ -7902,9 +7898,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-supabase-api@workspace:packages/auth-providers/supabase/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" @@ -7919,9 +7915,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-supabase-setup@workspace:packages/auth-providers/supabase/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7933,9 +7929,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-supabase-web@workspace:packages/auth-providers/supabase/web" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@supabase/supabase-js": "npm:2.39.0" "@types/react": "npm:18.2.37" core-js: "npm:3.34.0" @@ -7951,9 +7947,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-supertokens-api@workspace:packages/auth-providers/supertokens/api" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.34.0" @@ -7970,9 +7966,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-supertokens-setup@workspace:packages/auth-providers/supertokens/setup" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" @@ -7986,9 +7982,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth-supertokens-web@workspace:packages/auth-providers/supertokens/web" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" core-js: "npm:3.34.0" @@ -8005,9 +8001,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/auth@workspace:packages/auth" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" core-js: "npm:3.34.0" @@ -8028,12 +8024,12 @@ __metadata: "@babel/plugin-transform-private-methods": "npm:^7.22.5" "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11" "@babel/plugin-transform-react-jsx": "npm:^7.22.15" - "@babel/plugin-transform-runtime": "npm:7.23.6" + "@babel/plugin-transform-runtime": "npm:7.23.9" "@babel/preset-env": "npm:^7.22.20" "@babel/preset-react": "npm:^7.22.15" "@babel/preset-typescript": "npm:^7.22.15" "@babel/register": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@babel/traverse": "npm:^7.22.20" "@redwoodjs/project-config": "npm:6.0.7" "@types/babel-plugin-tester": "npm:9.0.9" @@ -8126,9 +8122,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/cli@workspace:packages/cli" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@iarna/toml": "npm:2.2.5" "@opentelemetry/api": "npm:1.7.0" "@opentelemetry/core": "npm:1.18.1" @@ -8198,11 +8194,11 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/codemods@workspace:packages/codemods" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/parser": "npm:^7.22.16" "@babel/plugin-transform-typescript": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@babel/traverse": "npm:^7.22.20" "@iarna/toml": "npm:2.2.5" "@redwoodjs/project-config": "npm:6.0.7" @@ -8248,8 +8244,8 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/core@workspace:packages/core" dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/cli": "npm:7.23.9" + "@babel/runtime-corejs3": "npm:7.23.9" "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.11" "@redwoodjs/cli": "npm:6.0.7" "@redwoodjs/eslint-config": "npm:6.0.7" @@ -8305,9 +8301,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/eslint-config@workspace:packages/eslint-config" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/eslint-parser": "npm:7.23.3" + "@babel/eslint-parser": "npm:7.23.9" "@babel/eslint-plugin": "npm:7.23.5" "@redwoodjs/eslint-plugin": "npm:6.0.7" "@redwoodjs/internal": "npm:6.0.7" @@ -8386,9 +8382,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/forms@workspace:packages/forms" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@testing-library/dom": "npm:9.3.3" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" @@ -8415,9 +8411,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/graphql-server@workspace:packages/graphql-server" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@envelop/core": "npm:5.0.0" "@envelop/depth-limit": "npm:3.0.3" "@envelop/disable-introspection": "npm:5.0.3" @@ -8457,12 +8453,12 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/internal@workspace:packages/internal" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/parser": "npm:^7.22.16" "@babel/plugin-transform-react-jsx": "npm:^7.22.15" "@babel/plugin-transform-typescript": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@babel/traverse": "npm:^7.22.20" "@graphql-codegen/add": "npm:4.0.1" "@graphql-codegen/cli": "npm:3.3.1" @@ -8584,9 +8580,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/prerender@workspace:packages/prerender" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@redwoodjs/internal": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" @@ -8656,9 +8652,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/record@workspace:packages/record" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@prisma/client": "npm:5.8.1" "@prisma/internals": "npm:5.8.1" "@redwoodjs/project-config": "npm:6.0.7" @@ -8672,9 +8668,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/router@workspace:packages/router" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@reach/skip-nav": "npm:0.18.0" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" @@ -8695,9 +8691,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/structure@workspace:packages/structure" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@iarna/toml": "npm:2.2.5" "@prisma/internals": "npm:5.8.1" "@redwoodjs/project-config": "npm:6.0.7" @@ -8734,9 +8730,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/telemetry@workspace:packages/telemetry" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/project-config": "npm:6.0.7" "@redwoodjs/structure": "npm:6.0.7" "@types/envinfo": "npm:7.8.3" @@ -8757,9 +8753,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/testing@workspace:packages/testing" dependencies: - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@redwoodjs/babel-config": "npm:6.0.7" "@redwoodjs/context": "npm:6.0.7" @@ -8807,8 +8803,8 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/vite@workspace:packages/vite" dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/cli": "npm:7.23.9" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/internal": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@types/react": "npm:18.2.37" @@ -8849,9 +8845,9 @@ __metadata: resolution: "@redwoodjs/web@workspace:packages/web" dependencies: "@apollo/client": "npm:3.8.8" - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" @@ -13577,39 +13573,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.6": - version: 0.4.6 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.6" +"babel-plugin-polyfill-corejs2@npm:^0.4.8": + version: 0.4.8 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.8" dependencies: "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 64a98811f343492aa6970ab253760194e389c0417e5b830522f944009c1f0c78e1251975fd1b9869cd48cc4623111b20a3389cf6732a1d10ba0d19de6fa5114f + checksum: 843e7528de0e03a31a6f3837896a95f75b0b24b0294a077246282372279e974400b0bdd82399e8f9cbfe42c87ed56540fd71c33eafb7c8e8b9adac546ecc5fe5 languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.8.5": - version: 0.8.6 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.6" +"babel-plugin-polyfill-corejs3@npm:^0.9.0": + version: 0.9.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.9.0" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.4.3" - core-js-compat: "npm:^3.33.1" + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + core-js-compat: "npm:^3.34.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 97d974c1dfbefdf27866e21a1ac757f6ab1626379b544d6f8ddb05f7bfa02173f8347b6140295b0f770394549f9321775d3048e466a9a02b99b88ad5f0346858 + checksum: b857010736c5e42e20b683973dae862448a42082fcc95b3ef188305a6864a4f94b5cbd568e49e4cd7172c6b2eace7bc403c3ba0984fbe5479474ade01126d559 languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.5.3": - version: 0.5.3 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.3" +"babel-plugin-polyfill-regenerator@npm:^0.5.5": + version: 0.5.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.4.3" + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: cc32313b9ebbf1d7bedc33524a861136b9e5d3b6e9be317ac360a1c2a59ae5ed1b465a6c68b2715cdefb089780ddfb0c11f4a148e49827a947beee76e43da598 + checksum: 2aab692582082d54e0df9f9373dca1b223e65b4e7e96440160f27ed8803d417a1fa08da550f08aa3820d2010329ca91b68e2b6e9bd7aed51c93d46dfe79629bb languageName: node linkType: hard @@ -14126,7 +14122,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.4, browserslist@npm:^4.22.1, browserslist@npm:^4.22.2": +"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.4, browserslist@npm:^4.22.2": version: 4.22.2 resolution: "browserslist@npm:4.22.2" dependencies: @@ -15626,12 +15622,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": - version: 3.33.1 - resolution: "core-js-compat@npm:3.33.1" +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.34.0": + version: 3.35.1 + resolution: "core-js-compat@npm:3.35.1" dependencies: - browserslist: "npm:^4.22.1" - checksum: 9c7361b370eac30756e6ec52469988d62c6110759efa1c85edd15e6b30f05ace8319a9cc0671bf596a98e7e81c67ad693ceaab2691b85cb62c636da1afe8feb9 + browserslist: "npm:^4.22.2" + checksum: c3b872e1f9703aa9554cce816207d85730da4703f1776c540b4da11bbbef6d9a1e6041625b5c1f58d2ada3d05f4a2b92897b7de5315c5ecd5d33d50dec86cca7 languageName: node linkType: hard @@ -27323,7 +27319,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4, pirates@npm:^4.0.5": +"pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 @@ -29577,21 +29573,21 @@ __metadata: "@actions/core": "npm:1.10.1" "@actions/exec": "npm:1.1.1" "@actions/glob": "npm:0.4.0" - "@babel/cli": "npm:7.23.4" + "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/generator": "npm:7.23.6" - "@babel/node": "npm:7.22.19" - "@babel/plugin-proposal-decorators": "npm:7.23.6" + "@babel/node": "npm:7.23.9" + "@babel/plugin-proposal-decorators": "npm:7.23.9" "@babel/plugin-transform-class-properties": "npm:^7.22.5" "@babel/plugin-transform-nullish-coalescing-operator": "npm:7.23.4" "@babel/plugin-transform-private-methods": "npm:^7.22.5" "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11" "@babel/plugin-transform-react-jsx": "npm:^7.22.15" - "@babel/plugin-transform-runtime": "npm:7.23.6" + "@babel/plugin-transform-runtime": "npm:7.23.9" "@babel/preset-env": "npm:^7.22.20" "@babel/preset-react": "npm:^7.22.15" "@babel/preset-typescript": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" + "@babel/runtime-corejs3": "npm:7.23.9" "@faker-js/faker": "npm:8.0.2" "@npmcli/arborist": "npm:7.2.2" "@playwright/test": "npm:1.40.1" From 5b1e20179b93652de31f2600f3dfab68d0a01be4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 18:43:36 +0000 Subject: [PATCH 011/119] chore(deps): update dependency esbuild to v0.20.0 (#9897) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [esbuild](https://togithub.com/evanw/esbuild) | [`0.19.9` -> `0.20.0`](https://renovatebot.com/diffs/npm/esbuild/0.19.9/0.20.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/esbuild/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/esbuild/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/esbuild/0.19.9/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/esbuild/0.19.9/0.20.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
evanw/esbuild (esbuild) ### [`v0.20.0`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#0200) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.19.12...v0.20.0) **This release deliberately contains backwards-incompatible changes.** To avoid automatically picking up releases like this, you should either be pinning the exact version of `esbuild` in your `package.json` file (recommended) or be using a version range syntax that only accepts patch upgrades such as `^0.19.0` or `~0.19.0`. See npm's documentation about [semver](https://docs.npmjs.com/cli/v6/using-npm/semver/) for more information. This time there is only one breaking change, and it only matters for people using Deno. Deno tests that use esbuild will now fail unless you make the change described below. - Work around API deprecations in Deno 1.40.x ([#​3609](https://togithub.com/evanw/esbuild/issues/3609), [#​3611](https://togithub.com/evanw/esbuild/pull/3611)) [Deno 1.40.0](https://deno.com/blog/v1.40) was just released and introduced run-time warnings about certain APIs that esbuild uses. With this release, esbuild will work around these run-time warnings by using newer APIs if they are present and falling back to the original APIs otherwise. This should avoid the warnings without breaking compatibility with older versions of Deno. Unfortunately, doing this introduces a breaking change. The newer child process APIs lack a way to synchronously terminate esbuild's child process, so calling `esbuild.stop()` from within a Deno test is no longer sufficient to prevent Deno from failing a test that uses esbuild's API (Deno fails tests that create a child process without killing it before the test ends). To work around this, esbuild's `stop()` function has been changed to return a promise, and you now have to change `esbuild.stop()` to `await esbuild.stop()` in all of your Deno tests. - Reorder implicit file extensions within `node_modules` ([#​3341](https://togithub.com/evanw/esbuild/issues/3341), [#​3608](https://togithub.com/evanw/esbuild/issues/3608)) In [version 0.18.0](https://togithub.com/evanw/esbuild/releases/v0.18.0), esbuild changed the behavior of implicit file extensions within `node_modules` directories (i.e. in published packages) to prefer `.js` over `.ts` even when the `--resolve-extensions=` order prefers `.ts` over `.js` (which it does by default). However, doing that also accidentally made esbuild prefer `.css` over `.ts`, which caused problems for people that published packages containing both TypeScript and CSS in files with the same name. With this release, esbuild will reorder TypeScript file extensions immediately after the last JavaScript file extensions in the implicit file extension order instead of putting them at the end of the order. Specifically the default implicit file extension order is `.tsx,.ts,.jsx,.js,.css,.json` which used to become `.jsx,.js,.css,.json,.tsx,.ts` in `node_modules` directories. With this release it will now become `.jsx,.js,.tsx,.ts,.css,.json` instead. Why even rewrite the implicit file extension order at all? One reason is because the `.js` file is more likely to behave correctly than the `.ts` file. The behavior of the `.ts` file may depend on `tsconfig.json` and the `tsconfig.json` file may not even be published, or may use `extends` to refer to a base `tsconfig.json` file that wasn't published. People can get into this situation when they forget to add all `.ts` files to their `.npmignore` file before publishing to npm. Picking `.js` over `.ts` helps make it more likely that resulting bundle will behave correctly. ### [`v0.19.12`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#01912) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.19.11...v0.19.12) - The "preserve" JSX mode now preserves JSX text verbatim ([#​3605](https://togithub.com/evanw/esbuild/issues/3605)) The [JSX specification](https://facebook.github.io/jsx/) deliberately doesn't specify how JSX text is supposed to be interpreted and there is no canonical way to interpret JSX text. Two most popular interpretations are Babel and TypeScript. Yes [they are different](https://twitter.com/jarredsumner/status/1456118847937781764) (esbuild [deliberately follows TypeScript](https://twitter.com/evanwallace/status/1456122279453208576) by the way). Previously esbuild normalized text to the TypeScript interpretation when the "preserve" JSX mode is active. However, "preserve" should arguably reproduce the original JSX text verbatim so that whatever JSX transform runs after esbuild is free to interpret it however it wants. So with this release, esbuild will now pass JSX text through unmodified: ```jsx // Original code let el = some text {foo} more text // Old output (with --loader=jsx --jsx=preserve) let el = {" some text"} {foo} {"more text "} ; // New output (with --loader=jsx --jsx=preserve) let el = some text {foo} more text ; ``` - Allow JSX elements as JSX attribute values JSX has an obscure feature where you can use JSX elements in attribute position without surrounding them with `{...}`. It looks like this: ```jsx let el =
/>; ``` I think I originally didn't implement it even though it's part of the [JSX specification](https://facebook.github.io/jsx/) because it previously didn't work in TypeScript (and potentially also in Babel?). However, support for it was [silently added in TypeScript 4.8](https://togithub.com/microsoft/TypeScript/pull/47994) without me noticing and Babel has also since fixed their [bugs regarding this feature](https://togithub.com/babel/babel/pull/6006). So I'm adding it to esbuild too now that I know it's widely supported. Keep in mind that there is some ongoing discussion about [removing this feature from JSX](https://togithub.com/facebook/jsx/issues/53). I agree that the syntax seems out of place (it does away with the elegance of "JSX is basically just XML with `{...}` escapes" for something arguably harder to read, which doesn't seem like a good trade-off), but it's in the specification and TypeScript and Babel both implement it so I'm going to have esbuild implement it too. However, I reserve the right to remove it from esbuild if it's ever removed from the specification in the future. So use it with caution. - Fix a bug with TypeScript type parsing ([#​3574](https://togithub.com/evanw/esbuild/issues/3574)) This release fixes a bug with esbuild's TypeScript parser where a conditional type containing a union type that ends with an infer type that ends with a constraint could fail to parse. This was caused by the "don't parse a conditional type" flag not getting passed through the union type parser. Here's an example of valid TypeScript code that previously failed to parse correctly: ```ts type InferUnion = T extends { a: infer U extends number } | infer U extends number ? U : never ``` ### [`v0.19.11`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#01911) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.19.10...v0.19.11) - Fix TypeScript-specific class transform edge case ([#​3559](https://togithub.com/evanw/esbuild/issues/3559)) The previous release introduced an optimization that avoided transforming `super()` in the class constructor for TypeScript code compiled with `useDefineForClassFields` set to `false` if all class instance fields have no initializers. The rationale was that in this case, all class instance fields are omitted in the output so no changes to the constructor are needed. However, if all of this is the case *and* there are `#private` instance fields with initializers, those private instance field initializers were still being moved into the constructor. This was problematic because they were being inserted before the call to `super()` (since `super()` is now no longer transformed in that case). This release introduces an additional optimization that avoids moving the private instance field initializers into the constructor in this edge case, which generates smaller code, matches the TypeScript compiler's output more closely, and avoids this bug: ```ts // Original code class Foo extends Bar { #private = 1; public: any; constructor() { super(); } } // Old output (with esbuild v0.19.9) class Foo extends Bar { constructor() { super(); this.#private = 1; } #private; } // Old output (with esbuild v0.19.10) class Foo extends Bar { constructor() { this.#private = 1; super(); } #private; } // New output class Foo extends Bar { #private = 1; constructor() { super(); } } ``` - Minifier: allow reording a primitive past a side-effect ([#​3568](https://togithub.com/evanw/esbuild/issues/3568)) The minifier previously allowed reordering a side-effect past a primitive, but didn't handle the case of reordering a primitive past a side-effect. This additional case is now handled: ```js // Original code function f() { let x = false; let y = x; const boolean = y; let frag = $.template(`

hello world

`); return frag; } // Old output (with --minify) function f(){const e=!1;return $.template(`

hello world

`)} // New output (with --minify) function f(){return $.template('

hello world

')} ``` - Minifier: consider properties named using known `Symbol` instances to be side-effect free ([#​3561](https://togithub.com/evanw/esbuild/issues/3561)) Many things in JavaScript can have side effects including property accesses and ToString operations, so using a symbol such as `Symbol.iterator` as a computed property name is not obviously side-effect free. This release adds a special case for known `Symbol` instances so that they are considered side-effect free when used as property names. For example, this class declaration will now be considered side-effect free: ```js class Foo { *[Symbol.iterator]() { } } ``` - Provide the `stop()` API in node to exit esbuild's child process ([#​3558](https://togithub.com/evanw/esbuild/issues/3558)) You can now call `stop()` in esbuild's node API to exit esbuild's child process to reclaim the resources used. It only makes sense to do this for a long-lived node process when you know you will no longer be making any more esbuild API calls. It is not necessary to call this to allow node to exit, and it's advantageous to not call this in between calls to esbuild's API as sharing a single long-lived esbuild child process is more efficient than re-creating a new esbuild child process for every API call. This API call used to exist but was removed in [version 0.9.0](https://togithub.com/evanw/esbuild/releases/v0.9.0). This release adds it back due to a user request. ### [`v0.19.10`](https://togithub.com/evanw/esbuild/blob/HEAD/CHANGELOG.md#01910) [Compare Source](https://togithub.com/evanw/esbuild/compare/v0.19.9...v0.19.10) - Fix glob imports in TypeScript files ([#​3319](https://togithub.com/evanw/esbuild/issues/3319)) This release fixes a problem where bundling a TypeScript file containing a glob import could emit a call to a helper function that doesn't exist. The problem happened because esbuild's TypeScript transformation removes unused imports (which is required for correctness, as they may be type-only imports) and esbuild's glob import transformation wasn't correctly marking the imported helper function as used. This wasn't caught earlier because most of esbuild's glob import tests were written in JavaScript, not in TypeScript. - Fix `require()` glob imports with bundling disabled ([#​3546](https://togithub.com/evanw/esbuild/issues/3546)) Previously `require()` calls containing glob imports were incorrectly transformed when bundling was disabled. All glob imports should only be transformed when bundling is enabled. This bug has been fixed. - Fix a panic when transforming optional chaining with `define` ([#​3551](https://togithub.com/evanw/esbuild/issues/3551), [#​3554](https://togithub.com/evanw/esbuild/pull/3554)) This release fixes a case where esbuild could crash with a panic, which was triggered by using `define` to replace an expression containing an optional chain. Here is an example: ```js // Original code console.log(process?.env.SHELL) // Old output (with --define:process.env={}) /* panic: Internal error (while parsing "") */ // New output (with --define:process.env={}) var define_process_env_default = {}; console.log(define_process_env_default.SHELL); ``` This fix was contributed by [@​hi-ogawa](https://togithub.com/hi-ogawa). - Work around a bug in node's CommonJS export name detector ([#​3544](https://togithub.com/evanw/esbuild/issues/3544)) The export names of a CommonJS module are dynamically-determined at run time because CommonJS exports are properties on a mutable object. But the export names of an ES module are statically-determined at module instantiation time by using `import` and `export` syntax and cannot be changed at run time. When you import a CommonJS module into an ES module in node, node scans over the source code to attempt to detect the set of export names that the CommonJS module will end up using. That statically-determined set of names is used as the set of names that the ES module is allowed to import at module instantiation time. However, this scan appears to have bugs (or at least, can cause false positives) because it doesn't appear to do any scope analysis. Node will incorrectly consider the module to export something even if the assignment is done to a local variable instead of to the module-level `exports` object. For example: ```js // confuseNode.js exports.confuseNode = function(exports) { // If this local is called "exports", node incorrectly // thinks this file has an export called "notAnExport". exports.notAnExport = function() { }; }; ``` You can see that node incorrectly thinks the file `confuseNode.js` has an export called `notAnExport` when that file is loaded in an ES module context: ```console $ node -e 'import("./confuseNode.js").then(console.log)' [Module: null prototype] { confuseNode: [Function (anonymous)], default: { confuseNode: [Function (anonymous)] }, notAnExport: undefined } ``` To avoid this, esbuild will now rename local variables that use the names `exports` and `module` when generating CommonJS output for the `node` platform. - Fix the return value of esbuild's `super()` shim ([#​3538](https://togithub.com/evanw/esbuild/issues/3538)) Some people write `constructor` methods that use the return value of `super()` instead of using `this`. This isn't too common because [TypeScript doesn't let you do that](https://togithub.com/microsoft/TypeScript/issues/37847) but it can come up when writing JavaScript. Previously esbuild's class lowering transform incorrectly transformed the return value of `super()` into `undefined`. With this release, the return value of `super()` will now be `this` instead: ```js // Original code class Foo extends Object { field constructor() { console.log(typeof super()) } } new Foo // Old output (with --target=es6) class Foo extends Object { constructor() { var __super = (...args) => { super(...args); __publicField(this, "field"); }; console.log(typeof __super()); } } new Foo(); // New output (with --target=es6) class Foo extends Object { constructor() { var __super = (...args) => { super(...args); __publicField(this, "field"); return this; }; console.log(typeof __super()); } } new Foo(); ``` - Terminate the Go GC when esbuild's `stop()` API is called ([#​3552](https://togithub.com/evanw/esbuild/issues/3552)) If you use esbuild with WebAssembly and pass the `worker: false` flag to `esbuild.initialize()`, then esbuild will run the WebAssembly module on the main thread. If you do this within a Deno test and that test calls `esbuild.stop()` to clean up esbuild's resources, Deno may complain that a `setTimeout()` call lasted past the end of the test. This happens when the Go is in the middle of a garbage collection pass and has scheduled additional ongoing garbage collection work. Normally calling `esbuild.stop()` will terminate the web worker that the WebAssembly module runs in, which will terminate the Go GC, but that doesn't happen if you disable the web worker with `worker: false`. With this release, esbuild will now attempt to terminate the Go GC in this edge case by calling `clearTimeout()` on these pending timeouts. - Apply `/* @​__NO_SIDE_EFFECTS__ */` on tagged template literals ([#​3511](https://togithub.com/evanw/esbuild/issues/3511)) Tagged template literals that reference functions annotated with a `@__NO_SIDE_EFFECTS__` comment are now able to be removed via tree-shaking if the result is unused. This is a convention from [Rollup](https://togithub.com/rollup/rollup/pull/5024). Here is an example: ```js // Original code const html = /* @​__NO_SIDE_EFFECTS__ */ (a, ...b) => ({ a, b }) html`
remove` x = html`keep` // Old output (with --tree-shaking=true) const html = /* @​__NO_SIDE_EFFECTS__ */ (a, ...b) => ({ a, b }); html`remove`; x = html`keep`; // New output (with --tree-shaking=true) const html = /* @​__NO_SIDE_EFFECTS__ */ (a, ...b) => ({ a, b }); x = html`keep`; ``` Note that this feature currently only works within a single file, so it's not especially useful. This feature does not yet work across separate files. I still recommend using `@__PURE__` annotations instead of this feature, as they have wider tooling support. The drawback of course is that `@__PURE__` annotations need to be added at each call site, not at the declaration, and for non-call expressions such as template literals you need to wrap the expression in an IIFE (immediately-invoked function expression) to create a call expression to apply the `@__PURE__` annotation to. - Publish builds for IBM AIX PowerPC 64-bit ([#​3549](https://togithub.com/evanw/esbuild/issues/3549)) This release publishes a binary executable to npm for IBM AIX PowerPC 64-bit, which means that in theory esbuild can now be installed in that environment with `npm install esbuild`. This hasn't actually been tested yet. If you have access to such a system, it would be helpful to confirm whether or not doing this actually works.
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/internal/package.json | 2 +- packages/record/package.json | 2 +- yarn.lock | 200 +++++++++++++++++---------------- 3 files changed, 107 insertions(+), 97 deletions(-) diff --git a/packages/internal/package.json b/packages/internal/package.json index 770df9c36bf1..551a7aeb86bd 100644 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -54,7 +54,7 @@ "chalk": "4.1.2", "core-js": "3.34.0", "deepmerge": "4.3.1", - "esbuild": "0.19.9", + "esbuild": "0.20.0", "fast-glob": "3.3.2", "fs-extra": "11.2.0", "graphql": "16.8.1", diff --git a/packages/record/package.json b/packages/record/package.json index 3e9691edf12d..d9d1d7614c99 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -32,7 +32,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@prisma/internals": "5.8.1", - "esbuild": "0.19.9", + "esbuild": "0.20.0", "vitest": "1.2.1" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/yarn.lock b/yarn.lock index 0bd301697c35..61091f7596f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2381,6 +2381,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/aix-ppc64@npm:0.20.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-arm64@npm:0.18.20" @@ -2395,9 +2402,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/android-arm64@npm:0.19.9" +"@esbuild/android-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm64@npm:0.20.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -2416,9 +2423,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/android-arm@npm:0.19.9" +"@esbuild/android-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm@npm:0.20.0" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -2437,9 +2444,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/android-x64@npm:0.19.9" +"@esbuild/android-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-x64@npm:0.20.0" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -2458,9 +2465,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/darwin-arm64@npm:0.19.9" +"@esbuild/darwin-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-arm64@npm:0.20.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -2479,9 +2486,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/darwin-x64@npm:0.19.9" +"@esbuild/darwin-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-x64@npm:0.20.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -2500,9 +2507,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/freebsd-arm64@npm:0.19.9" +"@esbuild/freebsd-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-arm64@npm:0.20.0" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -2521,9 +2528,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/freebsd-x64@npm:0.19.9" +"@esbuild/freebsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-x64@npm:0.20.0" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -2542,9 +2549,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-arm64@npm:0.19.9" +"@esbuild/linux-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm64@npm:0.20.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -2563,9 +2570,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-arm@npm:0.19.9" +"@esbuild/linux-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm@npm:0.20.0" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -2584,9 +2591,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-ia32@npm:0.19.9" +"@esbuild/linux-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ia32@npm:0.20.0" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -2605,9 +2612,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-loong64@npm:0.19.9" +"@esbuild/linux-loong64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-loong64@npm:0.20.0" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -2626,9 +2633,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-mips64el@npm:0.19.9" +"@esbuild/linux-mips64el@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-mips64el@npm:0.20.0" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -2647,9 +2654,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-ppc64@npm:0.19.9" +"@esbuild/linux-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ppc64@npm:0.20.0" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -2668,9 +2675,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-riscv64@npm:0.19.9" +"@esbuild/linux-riscv64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-riscv64@npm:0.20.0" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -2689,9 +2696,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-s390x@npm:0.19.9" +"@esbuild/linux-s390x@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-s390x@npm:0.20.0" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -2710,9 +2717,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-x64@npm:0.19.9" +"@esbuild/linux-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-x64@npm:0.20.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -2731,9 +2738,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/netbsd-x64@npm:0.19.9" +"@esbuild/netbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/netbsd-x64@npm:0.20.0" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -2752,9 +2759,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/openbsd-x64@npm:0.19.9" +"@esbuild/openbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/openbsd-x64@npm:0.20.0" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -2773,9 +2780,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/sunos-x64@npm:0.19.9" +"@esbuild/sunos-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/sunos-x64@npm:0.20.0" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -2794,9 +2801,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/win32-arm64@npm:0.19.9" +"@esbuild/win32-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-arm64@npm:0.20.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -2815,9 +2822,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/win32-ia32@npm:0.19.9" +"@esbuild/win32-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-ia32@npm:0.20.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -2836,9 +2843,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/win32-x64@npm:0.19.9" +"@esbuild/win32-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-x64@npm:0.20.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -8481,7 +8488,7 @@ __metadata: chalk: "npm:4.1.2" core-js: "npm:3.34.0" deepmerge: "npm:4.3.1" - esbuild: "npm:0.19.9" + esbuild: "npm:0.20.0" fast-glob: "npm:3.3.2" fs-extra: "npm:11.2.0" graphql: "npm:16.8.1" @@ -8659,7 +8666,7 @@ __metadata: "@prisma/internals": "npm:5.8.1" "@redwoodjs/project-config": "npm:6.0.7" core-js: "npm:3.34.0" - esbuild: "npm:0.19.9" + esbuild: "npm:0.20.0" vitest: "npm:1.2.1" languageName: unknown linkType: soft @@ -17540,33 +17547,36 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:0.19.9": - version: 0.19.9 - resolution: "esbuild@npm:0.19.9" - dependencies: - "@esbuild/android-arm": "npm:0.19.9" - "@esbuild/android-arm64": "npm:0.19.9" - "@esbuild/android-x64": "npm:0.19.9" - "@esbuild/darwin-arm64": "npm:0.19.9" - "@esbuild/darwin-x64": "npm:0.19.9" - "@esbuild/freebsd-arm64": "npm:0.19.9" - "@esbuild/freebsd-x64": "npm:0.19.9" - "@esbuild/linux-arm": "npm:0.19.9" - "@esbuild/linux-arm64": "npm:0.19.9" - "@esbuild/linux-ia32": "npm:0.19.9" - "@esbuild/linux-loong64": "npm:0.19.9" - "@esbuild/linux-mips64el": "npm:0.19.9" - "@esbuild/linux-ppc64": "npm:0.19.9" - "@esbuild/linux-riscv64": "npm:0.19.9" - "@esbuild/linux-s390x": "npm:0.19.9" - "@esbuild/linux-x64": "npm:0.19.9" - "@esbuild/netbsd-x64": "npm:0.19.9" - "@esbuild/openbsd-x64": "npm:0.19.9" - "@esbuild/sunos-x64": "npm:0.19.9" - "@esbuild/win32-arm64": "npm:0.19.9" - "@esbuild/win32-ia32": "npm:0.19.9" - "@esbuild/win32-x64": "npm:0.19.9" +"esbuild@npm:0.20.0": + version: 0.20.0 + resolution: "esbuild@npm:0.20.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.20.0" + "@esbuild/android-arm": "npm:0.20.0" + "@esbuild/android-arm64": "npm:0.20.0" + "@esbuild/android-x64": "npm:0.20.0" + "@esbuild/darwin-arm64": "npm:0.20.0" + "@esbuild/darwin-x64": "npm:0.20.0" + "@esbuild/freebsd-arm64": "npm:0.20.0" + "@esbuild/freebsd-x64": "npm:0.20.0" + "@esbuild/linux-arm": "npm:0.20.0" + "@esbuild/linux-arm64": "npm:0.20.0" + "@esbuild/linux-ia32": "npm:0.20.0" + "@esbuild/linux-loong64": "npm:0.20.0" + "@esbuild/linux-mips64el": "npm:0.20.0" + "@esbuild/linux-ppc64": "npm:0.20.0" + "@esbuild/linux-riscv64": "npm:0.20.0" + "@esbuild/linux-s390x": "npm:0.20.0" + "@esbuild/linux-x64": "npm:0.20.0" + "@esbuild/netbsd-x64": "npm:0.20.0" + "@esbuild/openbsd-x64": "npm:0.20.0" + "@esbuild/sunos-x64": "npm:0.20.0" + "@esbuild/win32-arm64": "npm:0.20.0" + "@esbuild/win32-ia32": "npm:0.20.0" + "@esbuild/win32-x64": "npm:0.20.0" dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true "@esbuild/android-arm": optional: true "@esbuild/android-arm64": @@ -17613,7 +17623,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 85cf167596f52ec5cde47ec27013d49f04e3052e6b00cd4534095cd74a776955040b03b326d54a9588921dc631f76b97ebda76b52bb5152f3ef4a45cfba81dca + checksum: 355f13fe91110155404b12b4e0eeb840aceddffb609e63ebd03bf039b9576db791d51fcd22992b155ad9249bcd9cab838e34577770cff974ecf1d245dcb1b16e languageName: node linkType: hard From 74296a2df6825b5181684a2db41b5ffa84a8028d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 10:46:47 -0800 Subject: [PATCH 012/119] chore(deps): update dependency @envelop/types to v5 (#9899) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/types](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/types)) | [`4.0.1` -> `5.0.0`](https://renovatebot.com/diffs/npm/@envelop%2ftypes/4.0.1/5.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2ftypes/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2ftypes/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2ftypes/4.0.1/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2ftypes/4.0.1/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/types) ### [`v5.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/types/CHANGELOG.md#500) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/types@4.0.1...@envelop/types@5.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped.
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- packages/realtime/package.json | 2 +- yarn.lock | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 2873c1883f48..47f5fc1f2703 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -49,7 +49,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@envelop/testing": "6.0.3", - "@envelop/types": "4.0.1", + "@envelop/types": "5.0.0", "@redwoodjs/project-config": "6.0.7", "@redwoodjs/realtime": "6.0.7", "@types/jsonwebtoken": "9.0.5", diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 71727572f266..f2248832fb22 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@envelop/core": "5.0.0", "@envelop/testing": "6.0.3", - "@envelop/types": "4.0.1", + "@envelop/types": "5.0.0", "jest": "29.7.0", "nodemon": "3.0.2", "typescript": "5.3.3" diff --git a/yarn.lock b/yarn.lock index 61091f7596f5..ad8ce713fe9a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8427,7 +8427,7 @@ __metadata: "@envelop/filter-operation-type": "npm:5.0.3" "@envelop/on-resolve": "npm:3.0.3" "@envelop/testing": "npm:6.0.3" - "@envelop/types": "npm:4.0.1" + "@envelop/types": "npm:5.0.0" "@escape.tech/graphql-armor": "npm:2.3.1" "@graphql-tools/merge": "npm:9.0.1" "@graphql-tools/schema": "npm:10.0.2" @@ -8633,7 +8633,7 @@ __metadata: "@envelop/core": "npm:5.0.0" "@envelop/live-query": "npm:6.0.3" "@envelop/testing": "npm:6.0.3" - "@envelop/types": "npm:4.0.1" + "@envelop/types": "npm:5.0.0" "@graphql-tools/schema": "npm:10.0.2" "@graphql-tools/utils": "npm:10.0.11" "@graphql-yoga/plugin-defer-stream": "npm:2.0.5" From 9cece494697e24e5ee477fdcdd2f12c4bef473e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 11:23:50 -0800 Subject: [PATCH 013/119] fix(deps): update dependency @envelop/disable-introspection to v6 (#9901) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/disable-introspection](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/plugins/disable-introspection)) | [`5.0.3` -> `6.0.0`](https://renovatebot.com/diffs/npm/@envelop%2fdisable-introspection/5.0.3/6.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2fdisable-introspection/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2fdisable-introspection/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2fdisable-introspection/5.0.3/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2fdisable-introspection/5.0.3/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/disable-introspection) ### [`v6.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/plugins/disable-introspection/CHANGELOG.md#600) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/disable-introspection@5.0.3...@envelop/disable-introspection@6.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped. - Updated dependencies \[[`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487), [`f7ef03c0`](https://togithub.com/n1ru4l/envelop/commit/f7ef03c07ae1af3abf08de86bc95fe626bbc7913)]: - [@​envelop/core](https://togithub.com/envelop/core)[@​5](https://togithub.com/5).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 47f5fc1f2703..393d33dd70de 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -26,7 +26,7 @@ "@babel/runtime-corejs3": "7.23.9", "@envelop/core": "5.0.0", "@envelop/depth-limit": "3.0.3", - "@envelop/disable-introspection": "5.0.3", + "@envelop/disable-introspection": "6.0.0", "@envelop/filter-operation-type": "5.0.3", "@envelop/on-resolve": "3.0.3", "@escape.tech/graphql-armor": "2.3.1", diff --git a/yarn.lock b/yarn.lock index ad8ce713fe9a..4db0e4c56a4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2292,15 +2292,15 @@ __metadata: languageName: node linkType: hard -"@envelop/disable-introspection@npm:5.0.3": - version: 5.0.3 - resolution: "@envelop/disable-introspection@npm:5.0.3" +"@envelop/disable-introspection@npm:6.0.0": + version: 6.0.0 + resolution: "@envelop/disable-introspection@npm:6.0.0" dependencies: tslib: "npm:^2.5.0" peerDependencies: - "@envelop/core": ^4.0.3 + "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: e6a22aae5a25f79a414a9de56930f358fc084be69d99f8641b684d45d3a4d727a7e16cb5d79f195eda4bb482952331098758dcc9cc81892ffd072701cf5495e8 + checksum: 48b3a2c98514cd629eadc09f741a1a21cb363a6ebf940a40e39c69054cd61b3d73b37575c1c3573fdc57685b76d58694b14dfae63d357d015040e69f4363ad98 languageName: node linkType: hard @@ -8423,7 +8423,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@envelop/core": "npm:5.0.0" "@envelop/depth-limit": "npm:3.0.3" - "@envelop/disable-introspection": "npm:5.0.3" + "@envelop/disable-introspection": "npm:6.0.0" "@envelop/filter-operation-type": "npm:5.0.3" "@envelop/on-resolve": "npm:3.0.3" "@envelop/testing": "npm:6.0.3" From 975c60e0ec6654507c171e7d36d093975e6eb524 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 11:24:54 -0800 Subject: [PATCH 014/119] chore(deps): update dependency @envelop/testing to v7 (#9898) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/testing](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/testing)) | [`6.0.3` -> `7.0.0`](https://renovatebot.com/diffs/npm/@envelop%2ftesting/6.0.3/7.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2ftesting/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2ftesting/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2ftesting/6.0.3/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2ftesting/6.0.3/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/testing) ### [`v7.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/testing/CHANGELOG.md#700) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/testing@6.0.3...@envelop/testing@7.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped. - Updated dependencies \[[`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487), [`f7ef03c0`](https://togithub.com/n1ru4l/envelop/commit/f7ef03c07ae1af3abf08de86bc95fe626bbc7913)]: - [@​envelop/core](https://togithub.com/envelop/core)[@​5](https://togithub.com/5).0.0 - [@​envelop/types](https://togithub.com/envelop/types)[@​5](https://togithub.com/5).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- packages/realtime/package.json | 2 +- yarn.lock | 16 ++++++++-------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 393d33dd70de..7dbc76feb9a6 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -48,7 +48,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@envelop/testing": "6.0.3", + "@envelop/testing": "7.0.0", "@envelop/types": "5.0.0", "@redwoodjs/project-config": "6.0.7", "@redwoodjs/realtime": "6.0.7", diff --git a/packages/realtime/package.json b/packages/realtime/package.json index f2248832fb22..c53b41fbfa0d 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -38,7 +38,7 @@ }, "devDependencies": { "@envelop/core": "5.0.0", - "@envelop/testing": "6.0.3", + "@envelop/testing": "7.0.0", "@envelop/types": "5.0.0", "jest": "29.7.0", "nodemon": "3.0.2", diff --git a/yarn.lock b/yarn.lock index 4db0e4c56a4e..7cf89f5d72ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2342,17 +2342,17 @@ __metadata: languageName: node linkType: hard -"@envelop/testing@npm:6.0.3": - version: 6.0.3 - resolution: "@envelop/testing@npm:6.0.3" +"@envelop/testing@npm:7.0.0": + version: 7.0.0 + resolution: "@envelop/testing@npm:7.0.0" dependencies: "@graphql-tools/utils": "npm:^10.0.0" tslib: "npm:^2.5.0" peerDependencies: - "@envelop/core": ^4.0.3 - "@envelop/types": ^4.0.1 + "@envelop/core": ^5.0.0 + "@envelop/types": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 7397d0bb734397c9a2962e94440a3502f4772169eb6dc507439d1847cac0f9d4a3d170b0bf337a24a5f735fd796b135303afd485e87e2a3e94f24c6824069501 + checksum: 1ce29b19f880a926aca1352c72e607bc3017eb46b416fbb523fd189beea033d6584f4ce884bede265aafaf4ca333c12a4e3d04628cf0d3b08ab119eaefcc4061 languageName: node linkType: hard @@ -8426,7 +8426,7 @@ __metadata: "@envelop/disable-introspection": "npm:6.0.0" "@envelop/filter-operation-type": "npm:5.0.3" "@envelop/on-resolve": "npm:3.0.3" - "@envelop/testing": "npm:6.0.3" + "@envelop/testing": "npm:7.0.0" "@envelop/types": "npm:5.0.0" "@escape.tech/graphql-armor": "npm:2.3.1" "@graphql-tools/merge": "npm:9.0.1" @@ -8632,7 +8632,7 @@ __metadata: dependencies: "@envelop/core": "npm:5.0.0" "@envelop/live-query": "npm:6.0.3" - "@envelop/testing": "npm:6.0.3" + "@envelop/testing": "npm:7.0.0" "@envelop/types": "npm:5.0.0" "@graphql-tools/schema": "npm:10.0.2" "@graphql-tools/utils": "npm:10.0.11" From 90807f375cac4c0f13d6aeb7c6254b6f84247741 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 11:26:59 -0800 Subject: [PATCH 015/119] fix(deps): update dependency @envelop/filter-operation-type to v6 (#9902) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/filter-operation-type](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/plugins/filter-operation-type)) | [`5.0.3` -> `6.0.0`](https://renovatebot.com/diffs/npm/@envelop%2ffilter-operation-type/5.0.3/6.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2ffilter-operation-type/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2ffilter-operation-type/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2ffilter-operation-type/5.0.3/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2ffilter-operation-type/5.0.3/6.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/filter-operation-type) ### [`v6.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/plugins/filter-operation-type/CHANGELOG.md#600) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/filter-operation-type@5.0.3...@envelop/filter-operation-type@6.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped. - Updated dependencies \[[`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487), [`f7ef03c0`](https://togithub.com/n1ru4l/envelop/commit/f7ef03c07ae1af3abf08de86bc95fe626bbc7913)]: - [@​envelop/core](https://togithub.com/envelop/core)[@​5](https://togithub.com/5).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 7dbc76feb9a6..61154db18f03 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -27,7 +27,7 @@ "@envelop/core": "5.0.0", "@envelop/depth-limit": "3.0.3", "@envelop/disable-introspection": "6.0.0", - "@envelop/filter-operation-type": "5.0.3", + "@envelop/filter-operation-type": "6.0.0", "@envelop/on-resolve": "3.0.3", "@escape.tech/graphql-armor": "2.3.1", "@graphql-tools/merge": "9.0.1", diff --git a/yarn.lock b/yarn.lock index 7cf89f5d72ec..a0152a5c54e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2304,15 +2304,15 @@ __metadata: languageName: node linkType: hard -"@envelop/filter-operation-type@npm:5.0.3": - version: 5.0.3 - resolution: "@envelop/filter-operation-type@npm:5.0.3" +"@envelop/filter-operation-type@npm:6.0.0": + version: 6.0.0 + resolution: "@envelop/filter-operation-type@npm:6.0.0" dependencies: tslib: "npm:^2.5.0" peerDependencies: - "@envelop/core": ^4.0.3 + "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c48af3ca4608e703b2825d2e2ee1d615f1b0e07c617f99b3dd76eabe84937970b5e5d9f99c3ccdfb30e05e263b0159f87fa86b763904bc80898a3ab7dde6e6e5 + checksum: 9d454dd67da800293b6cfde9e49512e0c84261cdd65dc521ae4c472ce0a2b4a4645b4d39596e3d4157bac31b120fae1fc985cb94c5d8d07590f94fdbc36b9c7b languageName: node linkType: hard @@ -8424,7 +8424,7 @@ __metadata: "@envelop/core": "npm:5.0.0" "@envelop/depth-limit": "npm:3.0.3" "@envelop/disable-introspection": "npm:6.0.0" - "@envelop/filter-operation-type": "npm:5.0.3" + "@envelop/filter-operation-type": "npm:6.0.0" "@envelop/on-resolve": "npm:3.0.3" "@envelop/testing": "npm:7.0.0" "@envelop/types": "npm:5.0.0" From 5cc0d0c126a128de8179ebdb52c2b23b5de1d57b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 11:29:44 -0800 Subject: [PATCH 016/119] fix(deps): update dependency @envelop/live-query to v7 (#9903) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/live-query](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/plugins/live-query)) | [`6.0.3` -> `7.0.0`](https://renovatebot.com/diffs/npm/@envelop%2flive-query/6.0.3/7.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2flive-query/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2flive-query/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2flive-query/6.0.3/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2flive-query/6.0.3/7.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/live-query) ### [`v7.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/plugins/live-query/CHANGELOG.md#700) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/live-query@6.0.3...@envelop/live-query@7.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped. - Updated dependencies \[[`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487), [`f7ef03c0`](https://togithub.com/n1ru4l/envelop/commit/f7ef03c07ae1af3abf08de86bc95fe626bbc7913)]: - [@​envelop/core](https://togithub.com/envelop/core)[@​5](https://togithub.com/5).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/realtime/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/realtime/package.json b/packages/realtime/package.json index c53b41fbfa0d..73a434c22dd1 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -24,7 +24,7 @@ "test:watch": "run test --watch" }, "dependencies": { - "@envelop/live-query": "6.0.3", + "@envelop/live-query": "7.0.0", "@graphql-tools/schema": "10.0.2", "@graphql-tools/utils": "10.0.11", "@graphql-yoga/plugin-defer-stream": "2.0.5", diff --git a/yarn.lock b/yarn.lock index a0152a5c54e6..6fa0332821c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2316,9 +2316,9 @@ __metadata: languageName: node linkType: hard -"@envelop/live-query@npm:6.0.3": - version: 6.0.3 - resolution: "@envelop/live-query@npm:6.0.3" +"@envelop/live-query@npm:7.0.0": + version: 7.0.0 + resolution: "@envelop/live-query@npm:7.0.0" dependencies: "@graphql-tools/utils": "npm:^10.0.0" "@n1ru4l/graphql-live-query": "npm:^0.10.0" @@ -2326,9 +2326,9 @@ __metadata: "@n1ru4l/in-memory-live-query-store": "npm:^0.10.0" tslib: "npm:^2.5.0" peerDependencies: - "@envelop/core": ^4.0.3 + "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: bf8648a68ad43ac90cdf5615601e2973f371e283e35f9e9232837d2948cc9e41e056b731512f4c9341b0c95e3ed37bf26fa7cb83dc94b76b7630c79ff04ad49a + checksum: b158af86ffd56fd54306aac39ad541de115f346bbf32ee9ec51e1feb383e45b4bdfd5a91ab3eca8a1fae05ed1d75cad6ceeeb6945e4f72b1bc5ac14a8fdc20c9 languageName: node linkType: hard @@ -8631,7 +8631,7 @@ __metadata: resolution: "@redwoodjs/realtime@workspace:packages/realtime" dependencies: "@envelop/core": "npm:5.0.0" - "@envelop/live-query": "npm:6.0.3" + "@envelop/live-query": "npm:7.0.0" "@envelop/testing": "npm:7.0.0" "@envelop/types": "npm:5.0.0" "@graphql-tools/schema": "npm:10.0.2" From 97fe9fc36a9d63d9f2c3e5a9254ed5678fcc6fe1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 12:02:47 -0800 Subject: [PATCH 017/119] fix(deps): update dependency @envelop/on-resolve to v4 (#9904) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/on-resolve](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/plugins/on-resolve)) | [`3.0.3` -> `4.1.0`](https://renovatebot.com/diffs/npm/@envelop%2fon-resolve/3.0.3/4.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2fon-resolve/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2fon-resolve/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2fon-resolve/3.0.3/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2fon-resolve/3.0.3/4.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/on-resolve) ### [`v4.1.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/plugins/on-resolve/CHANGELOG.md#410) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/on-resolve@4.0.0...@envelop/on-resolve@4.1.0) ##### Minor Changes - [#​1982](https://togithub.com/n1ru4l/envelop/pull/1982) [`408f5be3`](https://togithub.com/n1ru4l/envelop/commit/408f5be3943775157c9ae29f0d9c7ee78c3c369e) Thanks [@​darren-west](https://togithub.com/darren-west)! - Option to skip executing the `onResolve` hook during introspection queries ### [`v4.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/plugins/on-resolve/CHANGELOG.md#400) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/on-resolve@3.0.3...@envelop/on-resolve@4.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped. - Updated dependencies \[[`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487), [`f7ef03c0`](https://togithub.com/n1ru4l/envelop/commit/f7ef03c07ae1af3abf08de86bc95fe626bbc7913)]: - [@​envelop/core](https://togithub.com/envelop/core)[@​5](https://togithub.com/5).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 61154db18f03..a64f8a4ab417 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -28,7 +28,7 @@ "@envelop/depth-limit": "3.0.3", "@envelop/disable-introspection": "6.0.0", "@envelop/filter-operation-type": "6.0.0", - "@envelop/on-resolve": "3.0.3", + "@envelop/on-resolve": "4.1.0", "@escape.tech/graphql-armor": "2.3.1", "@graphql-tools/merge": "9.0.1", "@graphql-tools/schema": "10.0.2", diff --git a/yarn.lock b/yarn.lock index 6fa0332821c1..58007769ef43 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2332,13 +2332,13 @@ __metadata: languageName: node linkType: hard -"@envelop/on-resolve@npm:3.0.3": - version: 3.0.3 - resolution: "@envelop/on-resolve@npm:3.0.3" +"@envelop/on-resolve@npm:4.1.0": + version: 4.1.0 + resolution: "@envelop/on-resolve@npm:4.1.0" peerDependencies: - "@envelop/core": ^4.0.3 + "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 56e791a35b41a21f9f856f33c4d22de15876c1b40f97f50db1880e128ca6495affe1ab35689aa2c4ee30880daa1bde19fabc2a90af4af8d255502d7625ffba8b + checksum: 4eb454df4b446303711edd0cd31e707fec06337c2e8327c7987d279fef8785e47e47ffe72c7444b4650a83efbf3234c6b85f550a8044ca181dcd10c05dcb3650 languageName: node linkType: hard @@ -8425,7 +8425,7 @@ __metadata: "@envelop/depth-limit": "npm:3.0.3" "@envelop/disable-introspection": "npm:6.0.0" "@envelop/filter-operation-type": "npm:6.0.0" - "@envelop/on-resolve": "npm:3.0.3" + "@envelop/on-resolve": "npm:4.1.0" "@envelop/testing": "npm:7.0.0" "@envelop/types": "npm:5.0.0" "@escape.tech/graphql-armor": "npm:2.3.1" From b99b05e2640f88f36375d96f5bc0a03578eb25ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 12:31:40 -0800 Subject: [PATCH 018/119] fix(deps): update dependency @envelop/depth-limit to v4 (#9905) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@envelop/depth-limit](https://togithub.com/n1ru4l/envelop) ([source](https://togithub.com/n1ru4l/envelop/tree/HEAD/packages/plugins/depth-limit)) | [`3.0.3` -> `4.0.0`](https://renovatebot.com/diffs/npm/@envelop%2fdepth-limit/3.0.3/4.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@envelop%2fdepth-limit/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@envelop%2fdepth-limit/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@envelop%2fdepth-limit/3.0.3/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@envelop%2fdepth-limit/3.0.3/4.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
n1ru4l/envelop (@​envelop/depth-limit) ### [`v4.0.0`](https://togithub.com/n1ru4l/envelop/blob/HEAD/packages/plugins/depth-limit/CHANGELOG.md#400) [Compare Source](https://togithub.com/n1ru4l/envelop/compare/@envelop/depth-limit@3.0.3...@envelop/depth-limit@4.0.0) ##### Major Changes - [#​1986](https://togithub.com/n1ru4l/envelop/pull/1986) [`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Support of Node 16 is dropped. - Updated dependencies \[[`68e7a2a5`](https://togithub.com/n1ru4l/envelop/commit/68e7a2a59a2f9872652b4bae28f30c3a2fb70487), [`f7ef03c0`](https://togithub.com/n1ru4l/envelop/commit/f7ef03c07ae1af3abf08de86bc95fe626bbc7913)]: - [@​envelop/core](https://togithub.com/envelop/core)[@​5](https://togithub.com/5).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- packages/graphql-server/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index a64f8a4ab417..62e951c32889 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@envelop/core": "5.0.0", - "@envelop/depth-limit": "3.0.3", + "@envelop/depth-limit": "4.0.0", "@envelop/disable-introspection": "6.0.0", "@envelop/filter-operation-type": "6.0.0", "@envelop/on-resolve": "4.1.0", diff --git a/yarn.lock b/yarn.lock index 58007769ef43..530647176de5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2279,16 +2279,16 @@ __metadata: languageName: node linkType: hard -"@envelop/depth-limit@npm:3.0.3": - version: 3.0.3 - resolution: "@envelop/depth-limit@npm:3.0.3" +"@envelop/depth-limit@npm:4.0.0": + version: 4.0.0 + resolution: "@envelop/depth-limit@npm:4.0.0" dependencies: graphql-depth-limit: "npm:^1.1.0" tslib: "npm:^2.5.0" peerDependencies: - "@envelop/core": ^4.0.3 + "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 062d15cf8c51b37454a3b64d504f756501353e33702ded9c13e183c13ed01be249bc66fc1967de869d163eb1c5dc56f7bae0b2ec757b1543266b171c5f3dc6bd + checksum: 5a08a2a666632399ca5ced484a8eaddfc41f8c81e5e793c4401d17861acb8a67ae5e41fc0595012a8fecc43111287f89b4fef529d7bb00d4b58273e0f955cbc5 languageName: node linkType: hard @@ -8422,7 +8422,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@envelop/core": "npm:5.0.0" - "@envelop/depth-limit": "npm:3.0.3" + "@envelop/depth-limit": "npm:4.0.0" "@envelop/disable-introspection": "npm:6.0.0" "@envelop/filter-operation-type": "npm:6.0.0" "@envelop/on-resolve": "npm:4.1.0" From 7c2316ae183ec8a9fae1478e743b462f4b77e32e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 20:55:54 +0000 Subject: [PATCH 019/119] fix(deps): update dependency webpack to v5.90.0 (#9911) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [webpack](https://togithub.com/webpack/webpack) | [`5.89.0` -> `5.90.0`](https://renovatebot.com/diffs/npm/webpack/5.89.0/5.90.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/webpack/5.90.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/webpack/5.90.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/webpack/5.89.0/5.90.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/webpack/5.89.0/5.90.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
webpack/webpack (webpack) ### [`v5.90.0`](https://togithub.com/webpack/webpack/releases/tag/v5.90.0) [Compare Source](https://togithub.com/webpack/webpack/compare/v5.89.0...v5.90.0) #### Bug Fixes - Fixed inner graph for classes - Optimized `RemoveParentModulesPlugin` via bigint arithmetic - Fixed worklet detection in production mode - Fixed an error for cyclic importModule - Fixed types for `Server` and `Dirent` - Added the `fetchPriority` to hmr runtime's `ensureChunk` function - Don't warn about dynamic import for build dependencies - External module generation respects the `output.environment.arrowFunction` option - Fixed consumimng shared runtime module logic - Fixed a runtime logic of multiple chunks - Fixed destructing assignment of dynamic import json file - Passing errors array for a module hash - Added `/*#__PURE__*/` to generated `JSON.parse()` - Generated a library manifest after clean plugin - Fixed non `amd` externals and `amd` library - Fixed a bug in `SideEffectsFlagPlugin` with namespace re-exports - Fixed an error message for condition `or` - The `strictModuleErrorHandling` is now working - Clean up child compilation chunk graph to avoid memory leak - \[CSS] - Fixed CSS import prefer relative resolution - \[CSS] - Fixed CSS runtime chunk loading error message #### New Features - Allow to set `false` for dev server in `webpack.config.js` - Added a warning for async external when not supported - Added a warning for async module when not supported - Added the `node-module` option for the `node.__filename/__dirname` and enable it by default for ESM target - Added the `snapshot.unmanagedPaths` option - Exposed the `MultiCompilerOptions` type - \[CSS] - Added CSS parser options to enable/disable named exports - \[CSS] - Moved CSS the `exportsOnly` option to CSS generator options #### Dependencies & Maintenance - use node.js LTS version for lint - bump actions/cache from 3 to 4 - bump prettier from 3.2.1 to 3.2.3 - bump assemblyscript - bump actions/checkout from 3 to 4 **Full Changelog**: https://github.com/webpack/webpack/compare/v5.89.0...v5.90.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/core/package.json | 2 +- yarn.lock | 96 ++++++++++++++++---------------------- 2 files changed, 42 insertions(+), 56 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index a0393545cb7d..5c35cf30b40f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -63,7 +63,7 @@ "style-loader": "3.3.3", "typescript": "5.3.3", "url-loader": "4.1.1", - "webpack": "5.89.0", + "webpack": "5.90.0", "webpack-bundle-analyzer": "4.9.1", "webpack-cli": "5.1.4", "webpack-dev-server": "4.15.1", diff --git a/yarn.lock b/yarn.lock index 530647176de5..782568695956 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5133,14 +5133,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: 78055e2526108331126366572045355051a930f017d1904a4f753d3f4acee8d92a14854948095626f6163cffc24ea4e3efa30637417bb866b84743dec7ef6fd9 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf @@ -5164,14 +5157,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 3fbaff1387c1338b097eeb6ff92890d7838f7de0dde259e4983763b44540bfd5ca6a1f7644dc8ad003a57f7e80670d5b96a8402f1386ba9aee074743ae9bad51 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.15": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 @@ -5188,13 +5174,13 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.22 + resolution: "@jridgewell/trace-mapping@npm:0.3.22" dependencies: - "@jridgewell/resolve-uri": "npm:3.1.0" - "@jridgewell/sourcemap-codec": "npm:1.4.14" - checksum: e5045775f076022b6c7cc64a7b55742faa5442301cb3389fd0e6712fafc46a2bb13c68fa1ffaf7b8bb665a91196f050b4115885fc802094ebc06a1cf665935ac + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 18cf19f88e2792c1c91515f2b629aae05f3cdbb2e60c3886e16e80725234ce26dd10144c4981c05d9366e7094498c0b4fe5c1a89f4a730d7376a4ba4af448149 languageName: node linkType: hard @@ -8281,7 +8267,7 @@ __metadata: style-loader: "npm:3.3.3" typescript: "npm:5.3.3" url-loader: "npm:4.1.1" - webpack: "npm:5.89.0" + webpack: "npm:5.90.0" webpack-bundle-analyzer: "npm:4.9.1" webpack-cli: "npm:5.1.4" webpack-dev-server: "npm:4.15.1" @@ -10775,7 +10761,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": +"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d @@ -14129,17 +14115,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.14.5, browserslist@npm:^4.21.4, browserslist@npm:^4.22.2": - version: 4.22.2 - resolution: "browserslist@npm:4.22.2" +"browserslist@npm:^4.0.0, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.22.2": + version: 4.22.3 + resolution: "browserslist@npm:4.22.3" dependencies: - caniuse-lite: "npm:^1.0.30001565" - electron-to-chromium: "npm:^1.4.601" + caniuse-lite: "npm:^1.0.30001580" + electron-to-chromium: "npm:^1.4.648" node-releases: "npm:^2.0.14" update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: 2a331aab90503130043ca41dd5d281fa1e89d5e076d07a2d75e76bf4d693bd56e73d5abcd8c4f39119da6328d450578c216cf1cd5c99b82d8a90a2ae6271b465 + checksum: 5a1f673ce0d6e61a68369835a6b66e199669bde02c3bed5ec51e77598d8daafd91719dba55b15af2021b9ad0bbaa94951fd702eb71087449eb28be8002815ece languageName: node linkType: hard @@ -14477,10 +14463,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001565": - version: 1.0.30001570 - resolution: "caniuse-lite@npm:1.0.30001570" - checksum: e47230d2016edea56e002fa462a5289f697b48dcfbf703fb01aecc6c98ad4ecaf945ab23c253cb7af056c2d05f266e4e4cbebf45132100e2c9367439cb95b95b +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001580": + version: 1.0.30001581 + resolution: "caniuse-lite@npm:1.0.30001581" + checksum: 34b048156514eab5932212807428905cbecdef918f7c3d2153d5e8b6885d929e5c0b649f9e135cb1e03e413fbad8e00d1f24ed04cbcca52adc660ef98cad9032 languageName: node linkType: hard @@ -17144,10 +17130,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.601": - version: 1.4.613 - resolution: "electron-to-chromium@npm:1.4.613" - checksum: 34c1f2a244db7f628373a4f9a25bf7b6e4d16755a92aebea7882434683abe550e72bd06fb3b4c673dffebddc5d4cc6a5aef8fb11cb5cceb37a8d0f1801ca802e +"electron-to-chromium@npm:^1.4.648": + version: 1.4.648 + resolution: "electron-to-chromium@npm:1.4.648" + checksum: 9f9ab328744a9d593e170c46743c76b41052341176310d481ba184098cea2541d8e04a9bd309e1d77e6e9e010ee27a4f573b149f6f23404d239613816d1d072a languageName: node linkType: hard @@ -31506,15 +31492,15 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.7": - version: 5.3.9 - resolution: "terser-webpack-plugin@npm:5.3.9" +"terser-webpack-plugin@npm:^5.3.1, terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.17" + "@jridgewell/trace-mapping": "npm:^0.3.20" jest-worker: "npm:^27.4.5" schema-utils: "npm:^3.1.1" serialize-javascript: "npm:^6.0.1" - terser: "npm:^5.16.8" + terser: "npm:^5.26.0" peerDependencies: webpack: ^5.1.0 peerDependenciesMeta: @@ -31524,7 +31510,7 @@ __metadata: optional: true uglify-js: optional: true - checksum: 8a757106101ea1504e5dc549c722506506e7d3f0d38e72d6c8108ad814c994ca0d67ac5d0825ba59704a4b2b04548201b2137f198bfce897b09fe9e36727a1e9 + checksum: 66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 languageName: node linkType: hard @@ -31541,9 +31527,9 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.16.8": - version: 5.18.2 - resolution: "terser@npm:5.18.2" +"terser@npm:^5.10.0, terser@npm:^5.26.0": + version: 5.27.0 + resolution: "terser@npm:5.27.0" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -31551,7 +31537,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 7a7203eceef379c6381f5b43aaed509d12381c7453baee28b320fcd968523347f1bf4ba297cd3155ec860e9604279a1c9bc7060b35d9c34fae94c80cfa2738c2 + checksum: bed0d39d9a7f2b82c87173e48081c46426a8820ba1dcb864bbfccd2df2b7fb8498a7ea4c8ef045ccce5713b23a6b4c3a784967f1b9f3115adaa7f51712f6e6ae languageName: node linkType: hard @@ -33574,18 +33560,18 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5, webpack@npm:5.89.0, webpack@npm:^5": - version: 5.89.0 - resolution: "webpack@npm:5.89.0" +"webpack@npm:5, webpack@npm:5.90.0, webpack@npm:^5": + version: 5.90.0 + resolution: "webpack@npm:5.90.0" dependencies: "@types/eslint-scope": "npm:^3.7.3" - "@types/estree": "npm:^1.0.0" + "@types/estree": "npm:^1.0.5" "@webassemblyjs/ast": "npm:^1.11.5" "@webassemblyjs/wasm-edit": "npm:^1.11.5" "@webassemblyjs/wasm-parser": "npm:^1.11.5" acorn: "npm:^8.7.1" acorn-import-assertions: "npm:^1.9.0" - browserslist: "npm:^4.14.5" + browserslist: "npm:^4.21.10" chrome-trace-event: "npm:^1.0.2" enhanced-resolve: "npm:^5.15.0" es-module-lexer: "npm:^1.2.1" @@ -33599,7 +33585,7 @@ __metadata: neo-async: "npm:^2.6.2" schema-utils: "npm:^3.2.0" tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.7" + terser-webpack-plugin: "npm:^5.3.10" watchpack: "npm:^2.4.0" webpack-sources: "npm:^3.2.3" peerDependenciesMeta: @@ -33607,7 +33593,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 2562bf48788d651634fb7db6a5378c2fe3fce7f66831af38468da3944bd98756d68efea94a6909593993fb57b2d14cf802cbef2c83c6ef0047f7f606d59bec50 + checksum: 4acec1a719a9c5b890a30a9fb18519e671e55382f2c51120b76a2c1c1c521285b6510327faf79f85a4b11c7a2c5c01e1d2e7bf73e5cddbada1503f4d51a63441 languageName: node linkType: hard From 6bd1b783f6446c97dc8b501bd21ed721be4a2530 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 20:57:37 +0000 Subject: [PATCH 020/119] fix(deps): update dependency react-hook-form to v7.49.3 (#9910) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [react-hook-form](https://www.react-hook-form.com) ([source](https://togithub.com/react-hook-form/react-hook-form)) | [`7.48.2` -> `7.49.3`](https://renovatebot.com/diffs/npm/react-hook-form/7.48.2/7.49.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/react-hook-form/7.49.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/react-hook-form/7.49.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/react-hook-form/7.48.2/7.49.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/react-hook-form/7.48.2/7.49.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ---
react-hook-form/react-hook-form (react-hook-form) [`v7.49.3`](https://togithub.com/react-hook-form/react-hook-form/releases/tag/v7.49.3): Version 7.49.3 [Compare Source](https://togithub.com/react-hook-form/react-hook-form/compare/v7.49.2...v7.49.3) 🐛 fix(formState, disabled): infer controlled disabled form state ([#​11361](https://togithub.com/react-hook-form/react-hook-form/issues/11361)) 🐛 fix(reset): remove global reset option flag ([#​11355](https://togithub.com/react-hook-form/react-hook-form/issues/11355)) 🐛 fix(useController): check if disabled state was set by user ([#​11353](https://togithub.com/react-hook-form/react-hook-form/issues/11353)) 🖨️ fix: Change DeepPartial type definition to be compatible with unknown ([#​11333](https://togithub.com/react-hook-form/react-hook-form/issues/11333)) 🐞 fix [#​11328](https://togithub.com/react-hook-form/react-hook-form/issues/11328) resetField with object as defaultValue ([#​11329](https://togithub.com/react-hook-form/react-hook-form/issues/11329)) thanks to [@​Moshyfawn](https://togithub.com/Moshyfawn), [@​geeee](https://togithub.com/geeee) and [@​RulerOfCakes](https://togithub.com/RulerOfCakes) [`v7.49.2`](https://togithub.com/react-hook-form/react-hook-form/releases/tag/v7.49.2): Version 7.49.2 [Compare Source](https://togithub.com/react-hook-form/react-hook-form/compare/v7.49.1...v7.49.2) 🐞 fix [#​11292](https://togithub.com/react-hook-form/react-hook-form/issues/11292) issue with controller validation prop ([#​11294](https://togithub.com/react-hook-form/react-hook-form/issues/11294)) [`v7.49.1`](https://togithub.com/react-hook-form/react-hook-form/releases/tag/v7.49.1): Version 7.49.1 [Compare Source](https://togithub.com/react-hook-form/react-hook-form/compare/v7.49.0...v7.49.1) 🐞 fix [#​11276](https://togithub.com/react-hook-form/react-hook-form/issues/11276) issue with disabled omit on Controller ([#​11277](https://togithub.com/react-hook-form/react-hook-form/issues/11277)) 🐞 fix [#​11287](https://togithub.com/react-hook-form/react-hook-form/issues/11287) disabled prop cause const dirtyFields update ([#​11291](https://togithub.com/react-hook-form/react-hook-form/issues/11291)) [`v7.49.0`](https://togithub.com/react-hook-form/react-hook-form/blob/HEAD/CHANGELOG.md#7490---2023-12-10) [Compare Source](https://togithub.com/react-hook-form/react-hook-form/compare/v7.48.2...v7.49.0) - add reactive `errors` prop at `useForm` ```tsx useForm({ errors, // Server errors }); ```
--- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/forms/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/forms/package.json b/packages/forms/package.json index a4aec0b6e6db..2e4a47b364bd 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -26,7 +26,7 @@ "@babel/runtime-corejs3": "7.23.9", "core-js": "3.34.0", "pascalcase": "1.0.0", - "react-hook-form": "7.48.2" + "react-hook-form": "7.49.3" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/yarn.lock b/yarn.lock index 782568695956..4f3a9b401987 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8392,7 +8392,7 @@ __metadata: pascalcase: "npm:1.0.0" react: "npm:18.2.0" react-dom: "npm:18.2.0" - react-hook-form: "npm:7.48.2" + react-hook-form: "npm:7.49.3" typescript: "npm:5.3.3" peerDependencies: graphql: 16.8.1 @@ -28545,12 +28545,12 @@ __metadata: languageName: node linkType: hard -"react-hook-form@npm:7.48.2": - version: 7.48.2 - resolution: "react-hook-form@npm:7.48.2" +"react-hook-form@npm:7.49.3": + version: 7.49.3 + resolution: "react-hook-form@npm:7.49.3" peerDependencies: react: ^16.8.0 || ^17 || ^18 - checksum: 77663276288d3e240da76c469612fec2bfb2dd34ed0512adb8554b8567e89a316c3df62266e51639f66a9a9d50ce175e8dc965f94bc31afecb460ed48333dafa + checksum: f8e5b2dcc3d97c820b4fbac262d7e914d74f385f26f34da31b8efc6c0f32ba995f2a2330bdfd3d8b7c8b56a52349a0cbc0c0dbe9053b3971e5e0c78003dfb7f0 languageName: node linkType: hard From 915bf540513b7824b3f979d4aee0a5eb199ad7f2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 21:10:25 +0000 Subject: [PATCH 021/119] fix(deps): update dependency graphql-yoga to v5.1.1 (#9913) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [graphql-yoga](https://togithub.com/dotansimha/graphql-yoga) ([source](https://togithub.com/dotansimha/graphql-yoga/tree/HEAD/packages/graphql-yoga)) | [`5.1.0` -> `5.1.1`](https://renovatebot.com/diffs/npm/graphql-yoga/5.1.0/5.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-yoga/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-yoga/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-yoga/5.1.0/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-yoga/5.1.0/5.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dotansimha/graphql-yoga (graphql-yoga) ### [`v5.1.1`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/graphql-yoga/CHANGELOG.md#511) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/graphql-yoga@5.1.0...graphql-yoga@5.1.1) ##### Patch Changes - [`3ef877a7`](https://togithub.com/dotansimha/graphql-yoga/commit/3ef877a75c5b19e082121ece08981183422618f0) Thanks [@​ardatan](https://togithub.com/ardatan)! - Support errors with extensions set undefined
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 62e951c32889..096152cce96e 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -41,7 +41,7 @@ "graphql": "16.8.1", "graphql-scalars": "1.22.4", "graphql-tag": "2.12.6", - "graphql-yoga": "5.1.0", + "graphql-yoga": "5.1.1", "lodash": "4.17.21", "uuid": "9.0.1" }, diff --git a/yarn.lock b/yarn.lock index 4f3a9b401987..769a2412856e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8433,7 +8433,7 @@ __metadata: graphql: "npm:16.8.1" graphql-scalars: "npm:1.22.4" graphql-tag: "npm:2.12.6" - graphql-yoga: "npm:5.1.0" + graphql-yoga: "npm:5.1.1" jest: "npm:29.7.0" jsonwebtoken: "npm:9.0.2" lodash: "npm:4.17.21" @@ -20161,9 +20161,9 @@ __metadata: languageName: node linkType: hard -"graphql-yoga@npm:5.1.0": - version: 5.1.0 - resolution: "graphql-yoga@npm:5.1.0" +"graphql-yoga@npm:5.1.1": + version: 5.1.1 + resolution: "graphql-yoga@npm:5.1.1" dependencies: "@envelop/core": "npm:^5.0.0" "@graphql-tools/executor": "npm:^1.0.0" @@ -20178,7 +20178,7 @@ __metadata: tslib: "npm:^2.5.2" peerDependencies: graphql: ^15.2.0 || ^16.0.0 - checksum: 9814a12c279ea52050367a2c803d50669a180347e94ddd48bfc0579ecf0b0c686bcc824df564a47f5c280c91214779515e35955c00ccdee6ac60fe45bd7f69ed + checksum: 282b46c3539528c767b08351a7ddc3e2a171c5f8187ffaa70aaff144607da97a48fba7af3c4e43e97c9bd724ad867fa1861ab795be17e7d89f5f12f8cc56eb11 languageName: node linkType: hard From 0b029c9f55f4dae9dba0798e2ea622a223c074e4 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sun, 28 Jan 2024 22:17:33 +0100 Subject: [PATCH 022/119] chore(tests): api-server: Improve types (#9896) --- packages/api-server/package.json | 2 +- .../src/__tests__/createServer.test.ts | 4 +-- .../api-server/src/__tests__/fastify.test.ts | 2 +- .../src/__tests__/lambdaLoader.test.ts | 2 +- .../lambdaLoaderNumberFunctions.test.ts | 2 +- .../requestHandlers/awsLambdaFastify.test.ts | 33 +++++++++---------- .../src/__tests__/withFunctions.test.ts | 6 ++-- packages/api-server/tsconfig.build.json | 15 +++++++++ packages/api-server/tsconfig.json | 8 +++++ 9 files changed, 48 insertions(+), 26 deletions(-) create mode 100644 packages/api-server/tsconfig.build.json diff --git a/packages/api-server/package.json b/packages/api-server/package.json index b46eb4286954..007aacd8ace2 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -21,7 +21,7 @@ "build": "yarn build:js && yarn build:types", "build:js": "babel src -d dist --extensions \".js,.jsx,.ts,.tsx\"", "build:pack": "yarn pack -o redwoodjs-api-server.tgz", - "build:types": "tsc --build --verbose", + "build:types": "tsc --build --verbose tsconfig.build.json", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build && yarn fix:permissions\"", "fix:permissions": "chmod +x dist/index.js; chmod +x dist/watch.js", "prepublishOnly": "NODE_ENV=production yarn build", diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index 5b60161b6a13..dfb3de9e725e 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -23,8 +23,8 @@ afterAll(() => { process.env.RWJS_CWD = original_RWJS_CWD }) -let consoleWarnSpy: jest.SpyInstance -let consoleLogSpy: jest.SpyInstance +let consoleWarnSpy: jest.SpyInstance +let consoleLogSpy: jest.SpyInstance describe('createServer', () => { // Create a server for most tests. Some that test initialization create their own diff --git a/packages/api-server/src/__tests__/fastify.test.ts b/packages/api-server/src/__tests__/fastify.test.ts index dad4b55b33e3..add3b2751f50 100644 --- a/packages/api-server/src/__tests__/fastify.test.ts +++ b/packages/api-server/src/__tests__/fastify.test.ts @@ -17,7 +17,7 @@ jest.mock('fastify', () => { console.log = jest.fn() // Set up RWJS_CWD. -let original_RWJS_CWD +let original_RWJS_CWD: string | undefined const FIXTURE_PATH = '/redwood-app' beforeAll(() => { diff --git a/packages/api-server/src/__tests__/lambdaLoader.test.ts b/packages/api-server/src/__tests__/lambdaLoader.test.ts index 3228ff0d68fe..c7355be6c956 100644 --- a/packages/api-server/src/__tests__/lambdaLoader.test.ts +++ b/packages/api-server/src/__tests__/lambdaLoader.test.ts @@ -10,7 +10,7 @@ console.log = jest.fn() console.warn = jest.fn() // Set up RWJS_CWD. -let original_RWJS_CWD +let original_RWJS_CWD: string | undefined beforeAll(() => { original_RWJS_CWD = process.env.RWJS_CWD diff --git a/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts b/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts index ddeaba9bc151..4cb7165099a9 100644 --- a/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts +++ b/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts @@ -9,7 +9,7 @@ import { console.log = jest.fn() // Set up RWJS_CWD. -let original_RWJS_CWD +let original_RWJS_CWD: string | undefined beforeAll(() => { original_RWJS_CWD = process.env.RWJS_CWD diff --git a/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts b/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts index ed29c9330cb6..7886d8a3823c 100644 --- a/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts +++ b/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts @@ -1,3 +1,4 @@ +import type { Handler } from 'aws-lambda' import type { FastifyRequest, FastifyReply } from 'fastify' import { requestHandler } from '../../requestHandlers/awsLambdaFastify' @@ -19,12 +20,12 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = } as unknown as FastifyRequest const mockedReply = { - status: (code) => { + status: (code: number) => { return { code, send: jest.fn() } }, - headers: (h) => jest.fn(h), - header: (h) => jest.fn(h), - send: (body) => jest.fn(body), + headers: () => jest.fn(), + header: () => jest.fn(), + send: () => jest.fn(), log: console as unknown, } as unknown as FastifyReply @@ -32,9 +33,10 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = jest.spyOn(mockedReply, 'send') jest.spyOn(mockedReply, 'status') - const handler = async (req, mockedReply) => { - mockedReply = { body: { foo: 'bar' } } - return mockedReply + const handler: Handler = async () => { + return { + body: { foo: 'bar' }, + } } await requestHandler(request, mockedReply, handler) @@ -47,12 +49,11 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = jest.spyOn(mockedReply, 'send') jest.spyOn(mockedReply, 'status') - const handler = async (req, mockedReply) => { - mockedReply = { + const handler: Handler = async () => { + return { body: 'this_is_a_test_of_base64Encoding', isBase64Encoded: true, } - return mockedReply } await requestHandler(request, mockedReply, handler) @@ -64,7 +65,7 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = }) describe('error handling', () => { - let consoleError + let consoleError: typeof console.error beforeEach(() => { consoleError = console.error @@ -103,15 +104,14 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = jest.spyOn(mockedReply, 'headers') jest.spyOn(mockedReply, 'header') - const handler = async (req, mockedReply) => { - mockedReply = { + const handler: Handler = async () => { + return { body: { foo: 'bar' }, headers: { 'content-type': 'application/json', authorization: 'Bearer token 123', }, } - return mockedReply } await requestHandler(headersRequest, mockedReply, handler) @@ -142,15 +142,14 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = jest.spyOn(mockedReply, 'headers') jest.spyOn(mockedReply, 'header') - const handler = async (_req, mockedReply) => { - mockedReply = { + const handler: Handler = async () => { + return { body: {}, headers: {}, multiValueHeaders: { 'content-type': ['application/json', 'text/html'], }, } - return mockedReply } await requestHandler(headersRequest, mockedReply, handler) diff --git a/packages/api-server/src/__tests__/withFunctions.test.ts b/packages/api-server/src/__tests__/withFunctions.test.ts index 45cd602f5d67..35a2086f430a 100644 --- a/packages/api-server/src/__tests__/withFunctions.test.ts +++ b/packages/api-server/src/__tests__/withFunctions.test.ts @@ -8,7 +8,7 @@ console.log = jest.fn() console.warn = jest.fn() // Set up RWJS_CWD. -let original_RWJS_CWD +let original_RWJS_CWD: string | undefined beforeAll(() => { original_RWJS_CWD = process.env.RWJS_CWD @@ -20,8 +20,8 @@ afterAll(() => { }) // Set up and teardown the fastify instance for each test. -let fastifyInstance -let returnedFastifyInstance +let fastifyInstance: ReturnType +let returnedFastifyInstance: Awaited> beforeAll(async () => { fastifyInstance = createFastifyInstance() diff --git a/packages/api-server/tsconfig.build.json b/packages/api-server/tsconfig.build.json new file mode 100644 index 000000000000..8175f1e8f671 --- /dev/null +++ b/packages/api-server/tsconfig.build.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.compilerOption.json", + "compilerOptions": { + "baseUrl": ".", + "rootDir": "src", + "outDir": "dist", + }, + "include": ["src", "ambient.d.ts"], + "references": [ + { "path": "../internal" }, + { "path": "../project-config" }, + { "path": "../adapters/fastify/web" }, + { "path": "../web-server" } + ], +} diff --git a/packages/api-server/tsconfig.json b/packages/api-server/tsconfig.json index d162d30123b6..35b7ec58eb87 100644 --- a/packages/api-server/tsconfig.json +++ b/packages/api-server/tsconfig.json @@ -4,6 +4,8 @@ "baseUrl": ".", "rootDir": "src", "outDir": "dist", + "emitDeclarationOnly": false, + "noEmit": true, }, "include": ["src", "ambient.d.ts"], "references": [ @@ -11,5 +13,11 @@ { "path": "../project-config" }, { "path": "../adapters/fastify/web" }, { "path": "../web-server" } + ], + "exclude": [ + "dist", + "node_modules", + "**/__mocks__", + "**/__tests__/fixtures", ] } From 31b5cf06dead960e67c8c7171827895397731931 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 13:26:32 -0800 Subject: [PATCH 023/119] fix(deps): update dependency @graphql-yoga/subscription to v5 (#9912) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@graphql-yoga/subscription](https://togithub.com/dotansimha/graphql-yoga) ([source](https://togithub.com/dotansimha/graphql-yoga/tree/HEAD/packages/subscription)) | [`4.0.0` -> `5.0.0`](https://renovatebot.com/diffs/npm/@graphql-yoga%2fsubscription/4.0.0/5.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-yoga%2fsubscription/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-yoga%2fsubscription/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-yoga%2fsubscription/4.0.0/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-yoga%2fsubscription/4.0.0/5.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dotansimha/graphql-yoga (@​graphql-yoga/subscription) ### [`v5.0.0`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/subscription/CHANGELOG.md#500) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/subscription@4.0.0...@graphql-yoga/subscription@5.0.0) ##### Major Changes - [#​3063](https://togithub.com/dotansimha/graphql-yoga/pull/3063) [`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Drop support of Node.js 16 ##### Patch Changes - Updated dependencies \[[`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f)]: - [@​graphql-yoga/typed-event-target](https://togithub.com/graphql-yoga/typed-event-target)[@​3](https://togithub.com/3).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/realtime/package.json | 2 +- yarn.lock | 16 ++-------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 73a434c22dd1..c7604a4d21e0 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -30,7 +30,7 @@ "@graphql-yoga/plugin-defer-stream": "2.0.5", "@graphql-yoga/plugin-graphql-sse": "2.0.5", "@graphql-yoga/redis-event-target": "2.0.0", - "@graphql-yoga/subscription": "4.0.0", + "@graphql-yoga/subscription": "5.0.0", "@n1ru4l/graphql-live-query": "0.10.0", "@n1ru4l/in-memory-live-query-store": "0.10.0", "graphql": "16.8.1", diff --git a/yarn.lock b/yarn.lock index 769a2412856e..7d34ec677dd5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4720,19 +4720,7 @@ __metadata: languageName: node linkType: hard -"@graphql-yoga/subscription@npm:4.0.0": - version: 4.0.0 - resolution: "@graphql-yoga/subscription@npm:4.0.0" - dependencies: - "@graphql-yoga/typed-event-target": "npm:^2.0.0" - "@repeaterjs/repeater": "npm:^3.0.4" - "@whatwg-node/events": "npm:^0.1.0" - tslib: "npm:^2.5.2" - checksum: 2fb1c8e8b46b00b4bfaa214cc5efb309e4f1ae156b7116b32c61b28238bf99c852630cf287ebb0ec9bcda1070e88aa5693f59e2bdd9666db2cc5e7f54067bb14 - languageName: node - linkType: hard - -"@graphql-yoga/subscription@npm:^5.0.0": +"@graphql-yoga/subscription@npm:5.0.0, @graphql-yoga/subscription@npm:^5.0.0": version: 5.0.0 resolution: "@graphql-yoga/subscription@npm:5.0.0" dependencies: @@ -8625,7 +8613,7 @@ __metadata: "@graphql-yoga/plugin-defer-stream": "npm:2.0.5" "@graphql-yoga/plugin-graphql-sse": "npm:2.0.5" "@graphql-yoga/redis-event-target": "npm:2.0.0" - "@graphql-yoga/subscription": "npm:4.0.0" + "@graphql-yoga/subscription": "npm:5.0.0" "@n1ru4l/graphql-live-query": "npm:0.10.0" "@n1ru4l/in-memory-live-query-store": "npm:0.10.0" graphql: "npm:16.8.1" From d4b1fe906f9c8aa88df778d1d605cd6d64c2c8f0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 13:26:40 -0800 Subject: [PATCH 024/119] fix(deps): update dependency @graphql-yoga/plugin-defer-stream to v3 (#9906) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@graphql-yoga/plugin-defer-stream](https://togithub.com/dotansimha/graphql-yoga) ([source](https://togithub.com/dotansimha/graphql-yoga/tree/HEAD/packages/plugins/defer)) | [`2.0.5` -> `3.1.1`](https://renovatebot.com/diffs/npm/@graphql-yoga%2fplugin-defer-stream/2.0.5/3.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-yoga%2fplugin-defer-stream/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-yoga%2fplugin-defer-stream/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-yoga%2fplugin-defer-stream/2.0.5/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-yoga%2fplugin-defer-stream/2.0.5/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dotansimha/graphql-yoga (@​graphql-yoga/plugin-defer-stream) ### [`v3.1.1`](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.1.0...@graphql-yoga/plugin-defer-stream@3.1.1) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.1.0...@graphql-yoga/plugin-defer-stream@3.1.1) ### [`v3.1.0`](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.3...@graphql-yoga/plugin-defer-stream@3.1.0) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.3...@graphql-yoga/plugin-defer-stream@3.1.0) ### [`v3.0.3`](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.2...@graphql-yoga/plugin-defer-stream@3.0.3) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.2...@graphql-yoga/plugin-defer-stream@3.0.3) ### [`v3.0.2`](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.1...@graphql-yoga/plugin-defer-stream@3.0.2) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.1...@graphql-yoga/plugin-defer-stream@3.0.2) ### [`v3.0.1`](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.0...@graphql-yoga/plugin-defer-stream@3.0.1) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@3.0.0...@graphql-yoga/plugin-defer-stream@3.0.1) ### [`v3.0.0`](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@2.0.5...@graphql-yoga/plugin-defer-stream@3.0.0) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-defer-stream@2.0.5...@graphql-yoga/plugin-defer-stream@3.0.0)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/realtime/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/realtime/package.json b/packages/realtime/package.json index c7604a4d21e0..1c72820d24e6 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -27,7 +27,7 @@ "@envelop/live-query": "7.0.0", "@graphql-tools/schema": "10.0.2", "@graphql-tools/utils": "10.0.11", - "@graphql-yoga/plugin-defer-stream": "2.0.5", + "@graphql-yoga/plugin-defer-stream": "3.1.1", "@graphql-yoga/plugin-graphql-sse": "2.0.5", "@graphql-yoga/redis-event-target": "2.0.0", "@graphql-yoga/subscription": "5.0.0", diff --git a/yarn.lock b/yarn.lock index 7d34ec677dd5..6591d087f86d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4673,15 +4673,15 @@ __metadata: languageName: node linkType: hard -"@graphql-yoga/plugin-defer-stream@npm:2.0.5": - version: 2.0.5 - resolution: "@graphql-yoga/plugin-defer-stream@npm:2.0.5" +"@graphql-yoga/plugin-defer-stream@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-yoga/plugin-defer-stream@npm:3.1.1" dependencies: "@graphql-tools/utils": "npm:^10.0.0" peerDependencies: graphql: ^15.2.0 || ^16.0.0 - graphql-yoga: ^4.0.5 - checksum: 3a0075b8c592f86c6deb54a48c7dceb2ebeffb1271197db13ffa0b2d336bc155fa0b364a4cb1bfb51581bd7c0642911084222beecbf9af8c67b2ae9ffcf4888f + graphql-yoga: ^5.1.1 + checksum: 0f6f490e5830d52ebab964599558475de4b1bb2191fcc987fa8914b5550bca55e624e319670674a01403ef963449e7e99fea699259519f65726636fe587193ea languageName: node linkType: hard @@ -8610,7 +8610,7 @@ __metadata: "@envelop/types": "npm:5.0.0" "@graphql-tools/schema": "npm:10.0.2" "@graphql-tools/utils": "npm:10.0.11" - "@graphql-yoga/plugin-defer-stream": "npm:2.0.5" + "@graphql-yoga/plugin-defer-stream": "npm:3.1.1" "@graphql-yoga/plugin-graphql-sse": "npm:2.0.5" "@graphql-yoga/redis-event-target": "npm:2.0.0" "@graphql-yoga/subscription": "npm:5.0.0" From 3e17ca8a43abd6748559195a4ef384589f4022bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 13:26:57 -0800 Subject: [PATCH 025/119] fix(deps): update dependency @graphql-yoga/plugin-persisted-operations to v3 (#9908) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@graphql-yoga/plugin-persisted-operations](https://togithub.com/dotansimha/graphql-yoga) ([source](https://togithub.com/dotansimha/graphql-yoga/tree/HEAD/packages/plugins/persisted-operations)) | [`2.0.5` -> `3.1.1`](https://renovatebot.com/diffs/npm/@graphql-yoga%2fplugin-persisted-operations/2.0.5/3.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-yoga%2fplugin-persisted-operations/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-yoga%2fplugin-persisted-operations/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-yoga%2fplugin-persisted-operations/2.0.5/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-yoga%2fplugin-persisted-operations/2.0.5/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dotansimha/graphql-yoga (@​graphql-yoga/plugin-persisted-operations) ### [`v3.1.1`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/persisted-operations/CHANGELOG.md#311) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-persisted-operations@3.1.0...@graphql-yoga/plugin-persisted-operations@3.1.1) ##### Patch Changes - Updated dependencies \[[`3ef877a7`](https://togithub.com/dotansimha/graphql-yoga/commit/3ef877a75c5b19e082121ece08981183422618f0)]: - graphql-yoga@5.1.1 ### [`v3.1.0`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/persisted-operations/CHANGELOG.md#310) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-persisted-operations@3.0.2...@graphql-yoga/plugin-persisted-operations@3.1.0) ##### Patch Changes - Updated dependencies \[[`b1f0e3a2`](https://togithub.com/dotansimha/graphql-yoga/commit/b1f0e3a2986956c6791a251df908e3f8b50ec966)]: - graphql-yoga@5.1.0 ### [`v3.0.2`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/persisted-operations/CHANGELOG.md#302) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-persisted-operations@3.0.1...@graphql-yoga/plugin-persisted-operations@3.0.2) ##### Patch Changes - Updated dependencies \[[`77d107fe`](https://togithub.com/dotansimha/graphql-yoga/commit/77d107fe1a01044f4ba017ca960bb1bd58407ed7)]: - graphql-yoga@5.0.2 ### [`v3.0.1`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/persisted-operations/CHANGELOG.md#301) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-persisted-operations@3.0.0...@graphql-yoga/plugin-persisted-operations@3.0.1) ##### Patch Changes - Updated dependencies \[[`3fea19f2`](https://togithub.com/dotansimha/graphql-yoga/commit/3fea19f2a01c85b7d837163d763fae107e8f5a53)]: - graphql-yoga@5.0.1 ### [`v3.0.0`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/persisted-operations/CHANGELOG.md#300) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-persisted-operations@2.0.5...@graphql-yoga/plugin-persisted-operations@3.0.0) ##### Major Changes - [#​3063](https://togithub.com/dotansimha/graphql-yoga/pull/3063) [`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Drop support of Node.js 16 ##### Patch Changes - Updated dependencies \[[`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f), [`5b615478`](https://togithub.com/dotansimha/graphql-yoga/commit/5b6154783957874281bdf180575cdf57fadb75bf), [`350bb851`](https://togithub.com/dotansimha/graphql-yoga/commit/350bb85195c01cc5b5721f7a90f6cfbe1af36aff)]: - graphql-yoga@5.0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/graphql-server/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 096152cce96e..60448300c981 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -33,7 +33,7 @@ "@graphql-tools/merge": "9.0.1", "@graphql-tools/schema": "10.0.2", "@graphql-tools/utils": "10.0.11", - "@graphql-yoga/plugin-persisted-operations": "2.0.5", + "@graphql-yoga/plugin-persisted-operations": "3.1.1", "@opentelemetry/api": "1.7.0", "@redwoodjs/api": "6.0.7", "@redwoodjs/context": "6.0.7", diff --git a/yarn.lock b/yarn.lock index 6591d087f86d..49a604a95f7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4697,14 +4697,14 @@ __metadata: languageName: node linkType: hard -"@graphql-yoga/plugin-persisted-operations@npm:2.0.5": - version: 2.0.5 - resolution: "@graphql-yoga/plugin-persisted-operations@npm:2.0.5" +"@graphql-yoga/plugin-persisted-operations@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-yoga/plugin-persisted-operations@npm:3.1.1" peerDependencies: "@graphql-tools/utils": ^10.0.0 graphql: ^15.2.0 || ^16.0.0 - graphql-yoga: ^4.0.5 - checksum: af87ff6a0ff2088bd25d1fd6dabea80c31153533fdda6fc3342a301b3106e49d19bc70e2486d2254eab978054b5a9c89b36cfb7b643fc9e0000bced9c03a1927 + graphql-yoga: ^5.1.1 + checksum: 19c00017f75df4aed065d30e67da5728a1ef6ee852dd7f30c052628b465e8d3e1a24c4ed70995d6ca2018b750649cea5e5902eadf0c75a2c65c7e487dd295169 languageName: node linkType: hard @@ -8406,7 +8406,7 @@ __metadata: "@graphql-tools/merge": "npm:9.0.1" "@graphql-tools/schema": "npm:10.0.2" "@graphql-tools/utils": "npm:10.0.11" - "@graphql-yoga/plugin-persisted-operations": "npm:2.0.5" + "@graphql-yoga/plugin-persisted-operations": "npm:3.1.1" "@opentelemetry/api": "npm:1.7.0" "@redwoodjs/api": "npm:6.0.7" "@redwoodjs/context": "npm:6.0.7" From eb89e6dc3e4bd92a1e0e8eb082a197ce1eec56eb Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sun, 28 Jan 2024 22:48:50 +0100 Subject: [PATCH 026/119] cli-helpers: Don't emit tests to dist/ (#9900) --- packages/cli-helpers/package.json | 2 +- packages/cli-helpers/tsconfig.build.json | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 packages/cli-helpers/tsconfig.build.json diff --git a/packages/cli-helpers/package.json b/packages/cli-helpers/package.json index d7678c25d735..7dbbab87b260 100644 --- a/packages/cli-helpers/package.json +++ b/packages/cli-helpers/package.json @@ -20,7 +20,7 @@ "scripts": { "build": "yarn node ./build.js && yarn build:types", "build:pack": "yarn pack -o redwoodjs-cli-helpers.tgz", - "build:types": "tsc --build --verbose", + "build:types": "tsc --build --verbose tsconfig.build.json", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build", "test": "vitest run", diff --git a/packages/cli-helpers/tsconfig.build.json b/packages/cli-helpers/tsconfig.build.json new file mode 100644 index 000000000000..34f2ac98ff3f --- /dev/null +++ b/packages/cli-helpers/tsconfig.build.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.compilerOption.json", + "compilerOptions": { + "moduleResolution": "NodeNext", + "module": "NodeNext", + "baseUrl": ".", + "rootDir": "src", + "outDir": "dist", + }, + "include": ["src"], + "references": [ + { "path": "../telemetry" }, + { "path": "../project-config" } + ], +} From 60a4a9022ecb6c404db6c7d2fd509beb389bbbc6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 14:03:01 -0800 Subject: [PATCH 027/119] fix(deps): update dependency @graphql-yoga/plugin-graphql-sse to v3 (#9907) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@graphql-yoga/plugin-graphql-sse](https://togithub.com/dotansimha/graphql-yoga) ([source](https://togithub.com/dotansimha/graphql-yoga/tree/HEAD/packages/plugins/graphql-sse)) | [`2.0.5` -> `3.1.1`](https://renovatebot.com/diffs/npm/@graphql-yoga%2fplugin-graphql-sse/2.0.5/3.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-yoga%2fplugin-graphql-sse/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-yoga%2fplugin-graphql-sse/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-yoga%2fplugin-graphql-sse/2.0.5/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-yoga%2fplugin-graphql-sse/2.0.5/3.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dotansimha/graphql-yoga (@​graphql-yoga/plugin-graphql-sse) ### [`v3.1.1`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/graphql-sse/CHANGELOG.md#311) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-graphql-sse@3.1.0...@graphql-yoga/plugin-graphql-sse@3.1.1) ##### Patch Changes - Updated dependencies \[[`3ef877a7`](https://togithub.com/dotansimha/graphql-yoga/commit/3ef877a75c5b19e082121ece08981183422618f0)]: - graphql-yoga@5.1.1 ### [`v3.1.0`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/graphql-sse/CHANGELOG.md#310) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-graphql-sse@3.0.2...@graphql-yoga/plugin-graphql-sse@3.1.0) ##### Patch Changes - Updated dependencies \[[`b1f0e3a2`](https://togithub.com/dotansimha/graphql-yoga/commit/b1f0e3a2986956c6791a251df908e3f8b50ec966)]: - graphql-yoga@5.1.0 ### [`v3.0.2`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/graphql-sse/CHANGELOG.md#302) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-graphql-sse@3.0.1...@graphql-yoga/plugin-graphql-sse@3.0.2) ##### Patch Changes - Updated dependencies \[[`77d107fe`](https://togithub.com/dotansimha/graphql-yoga/commit/77d107fe1a01044f4ba017ca960bb1bd58407ed7)]: - graphql-yoga@5.0.2 ### [`v3.0.1`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/graphql-sse/CHANGELOG.md#301) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-graphql-sse@3.0.0...@graphql-yoga/plugin-graphql-sse@3.0.1) ##### Patch Changes - Updated dependencies \[[`3fea19f2`](https://togithub.com/dotansimha/graphql-yoga/commit/3fea19f2a01c85b7d837163d763fae107e8f5a53)]: - graphql-yoga@5.0.1 ### [`v3.0.0`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/plugins/graphql-sse/CHANGELOG.md#300) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/plugin-graphql-sse@2.0.5...@graphql-yoga/plugin-graphql-sse@3.0.0) ##### Major Changes - [#​3063](https://togithub.com/dotansimha/graphql-yoga/pull/3063) [`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Drop support of Node.js 16 ##### Patch Changes - Updated dependencies \[[`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f), [`5b615478`](https://togithub.com/dotansimha/graphql-yoga/commit/5b6154783957874281bdf180575cdf57fadb75bf), [`350bb851`](https://togithub.com/dotansimha/graphql-yoga/commit/350bb85195c01cc5b5721f7a90f6cfbe1af36aff)]: - graphql-yoga@5.0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/realtime/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 1c72820d24e6..43a5b44ba89f 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -28,7 +28,7 @@ "@graphql-tools/schema": "10.0.2", "@graphql-tools/utils": "10.0.11", "@graphql-yoga/plugin-defer-stream": "3.1.1", - "@graphql-yoga/plugin-graphql-sse": "2.0.5", + "@graphql-yoga/plugin-graphql-sse": "3.1.1", "@graphql-yoga/redis-event-target": "2.0.0", "@graphql-yoga/subscription": "5.0.0", "@n1ru4l/graphql-live-query": "0.10.0", diff --git a/yarn.lock b/yarn.lock index 49a604a95f7f..3cf2f7d1821b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4685,15 +4685,15 @@ __metadata: languageName: node linkType: hard -"@graphql-yoga/plugin-graphql-sse@npm:2.0.5": - version: 2.0.5 - resolution: "@graphql-yoga/plugin-graphql-sse@npm:2.0.5" +"@graphql-yoga/plugin-graphql-sse@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-yoga/plugin-graphql-sse@npm:3.1.1" dependencies: graphql-sse: "npm:^2.0.0" peerDependencies: graphql: ^15.2.0 || ^16.0.0 - graphql-yoga: ^4.0.5 - checksum: 5da378feeef61c134ff7a95dfe8d8cab38df33a64218209e4ab918310fef853a975f354a2d23174fab506f47153a35fd6fa51f2204b427070680011a8b9d5cc9 + graphql-yoga: ^5.1.1 + checksum: e4adfbce8b0c50be9f384df5477a285615e2a54c602b57cbc4448d4b0874d2052892b6cddd6a96d85a75820683ebdfb22b56db08ce61a34e080e0e7f39c63297 languageName: node linkType: hard @@ -8611,7 +8611,7 @@ __metadata: "@graphql-tools/schema": "npm:10.0.2" "@graphql-tools/utils": "npm:10.0.11" "@graphql-yoga/plugin-defer-stream": "npm:3.1.1" - "@graphql-yoga/plugin-graphql-sse": "npm:2.0.5" + "@graphql-yoga/plugin-graphql-sse": "npm:3.1.1" "@graphql-yoga/redis-event-target": "npm:2.0.0" "@graphql-yoga/subscription": "npm:5.0.0" "@n1ru4l/graphql-live-query": "npm:0.10.0" From 40c85b71637e796dcb92bb49183c6f6f4a0758c5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 14:05:25 -0800 Subject: [PATCH 028/119] fix(deps): update dependency @graphql-yoga/redis-event-target to v3 (#9909) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@graphql-yoga/redis-event-target](https://togithub.com/dotansimha/graphql-yoga) ([source](https://togithub.com/dotansimha/graphql-yoga/tree/HEAD/packages/event-target/redis-event-target)) | [`2.0.0` -> `3.0.0`](https://renovatebot.com/diffs/npm/@graphql-yoga%2fredis-event-target/2.0.0/3.0.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@graphql-yoga%2fredis-event-target/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@graphql-yoga%2fredis-event-target/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@graphql-yoga%2fredis-event-target/2.0.0/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@graphql-yoga%2fredis-event-target/2.0.0/3.0.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
dotansimha/graphql-yoga (@​graphql-yoga/redis-event-target) ### [`v3.0.0`](https://togithub.com/dotansimha/graphql-yoga/blob/HEAD/packages/event-target/redis-event-target/CHANGELOG.md#300) [Compare Source](https://togithub.com/dotansimha/graphql-yoga/compare/@graphql-yoga/redis-event-target@2.0.0...@graphql-yoga/redis-event-target@3.0.0) ##### Major Changes - [#​3063](https://togithub.com/dotansimha/graphql-yoga/pull/3063) [`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f) Thanks [@​EmrysMyrddin](https://togithub.com/EmrysMyrddin)! - **Breaking Change:** Drop support of Node.js 16 ##### Minor Changes - [#​3037](https://togithub.com/dotansimha/graphql-yoga/pull/3037) [`8d143e4e`](https://togithub.com/dotansimha/graphql-yoga/commit/8d143e4ee18d24eec20dbdacc554e9ae336460aa) Thanks [@​Akryum](https://togithub.com/Akryum)! - Added `serializeMessage` and `deserializeMessage` options to `createRedisEventTarget` ##### Patch Changes - Updated dependencies \[[`01430e03`](https://togithub.com/dotansimha/graphql-yoga/commit/01430e03288f072a9cb09b0b898316b1f5b58a5f)]: - [@​graphql-yoga/typed-event-target](https://togithub.com/graphql-yoga/typed-event-target)[@​3](https://togithub.com/3).0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/realtime/package.json | 2 +- yarn.lock | 22 ++++++---------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 43a5b44ba89f..2b629d02808d 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -29,7 +29,7 @@ "@graphql-tools/utils": "10.0.11", "@graphql-yoga/plugin-defer-stream": "3.1.1", "@graphql-yoga/plugin-graphql-sse": "3.1.1", - "@graphql-yoga/redis-event-target": "2.0.0", + "@graphql-yoga/redis-event-target": "3.0.0", "@graphql-yoga/subscription": "5.0.0", "@n1ru4l/graphql-live-query": "0.10.0", "@n1ru4l/in-memory-live-query-store": "0.10.0", diff --git a/yarn.lock b/yarn.lock index 3cf2f7d1821b..ba8617a159fa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4708,15 +4708,15 @@ __metadata: languageName: node linkType: hard -"@graphql-yoga/redis-event-target@npm:2.0.0": - version: 2.0.0 - resolution: "@graphql-yoga/redis-event-target@npm:2.0.0" +"@graphql-yoga/redis-event-target@npm:3.0.0": + version: 3.0.0 + resolution: "@graphql-yoga/redis-event-target@npm:3.0.0" dependencies: - "@graphql-yoga/typed-event-target": "npm:^2.0.0" + "@graphql-yoga/typed-event-target": "npm:^3.0.0" "@whatwg-node/events": "npm:^0.1.0" peerDependencies: ioredis: ^5.0.6 - checksum: e7c015be8eb122648ed17a82d2b87171b91d66673b6fbbf1f5f66ec55ca59ef84efaf739f1d90b4024b2164091475126db16fc1ac8b2316a0e67a91208cc85b2 + checksum: 16035ed1c10b7f8a582edaa99a3d1fb740ea81e73203a176f9e5115144165a3b8661cdb00d7e7a3572100af65daac0ff3f6d565c897a9244d0e0e7d9d1f9fcdd languageName: node linkType: hard @@ -4732,16 +4732,6 @@ __metadata: languageName: node linkType: hard -"@graphql-yoga/typed-event-target@npm:^2.0.0": - version: 2.0.0 - resolution: "@graphql-yoga/typed-event-target@npm:2.0.0" - dependencies: - "@repeaterjs/repeater": "npm:^3.0.4" - tslib: "npm:^2.5.2" - checksum: 41d9c84f4935151d78a5c07db041d3a96f6ac62c10e71ea77f76b79fc00835dd042b5d91ef6cf67a7e766cd9718fa8ee301ee7b3a39d445c7618b3a23988df77 - languageName: node - linkType: hard - "@graphql-yoga/typed-event-target@npm:^3.0.0": version: 3.0.0 resolution: "@graphql-yoga/typed-event-target@npm:3.0.0" @@ -8612,7 +8602,7 @@ __metadata: "@graphql-tools/utils": "npm:10.0.11" "@graphql-yoga/plugin-defer-stream": "npm:3.1.1" "@graphql-yoga/plugin-graphql-sse": "npm:3.1.1" - "@graphql-yoga/redis-event-target": "npm:2.0.0" + "@graphql-yoga/redis-event-target": "npm:3.0.0" "@graphql-yoga/subscription": "npm:5.0.0" "@n1ru4l/graphql-live-query": "npm:0.10.0" "@n1ru4l/in-memory-live-query-store": "npm:0.10.0" From 89c275ea3f5cab6f181e8977b6b979a133d8a94c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 14:23:11 -0800 Subject: [PATCH 029/119] chore(deps): bump follow-redirects from 1.15.3 to 1.15.4 in /docs (#9818) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.4.
Commits
  • 6585820 Release version 1.15.4 of the npm package.
  • 7a6567e Disallow bracketed hostnames.
  • 05629af Prefer native URL instead of deprecated url.parse.
  • 1cba8e8 Prefer native URL instead of legacy url.resolve.
  • 72bc2a4 Simplify _processResponse error handling.
  • 3d42aec Add bracket tests.
  • bcbb096 Do not directly set Error properties.
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.3&new-version=1.15.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/redwoodjs/redwood/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- docs/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/yarn.lock b/docs/yarn.lock index 4f35ce2a7b90..59aadbcf575d 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -5591,12 +5591,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.0.0": - version: 1.15.3 - resolution: "follow-redirects@npm:1.15.3" + version: 1.15.4 + resolution: "follow-redirects@npm:1.15.4" peerDependenciesMeta: debug: optional: true - checksum: 915a2cf22e667bdf47b1a43cc6b7dce14d95039e9bbf9a24d0e739abfbdfa00077dd43c86d4a7a19efefcc7a99af144920a175eedc3888d268af5df67c272ee5 + checksum: 5f37ed9170c9eb19448c5418fdb0f2b73f644b5364834e70791a76ecc7db215246f9773bbef4852cfae4067764ffc852e047f744b661b0211532155b73556a6a languageName: node linkType: hard From 2eee77e9b4228bd035b1aee335e71dc8d23391a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 14:35:45 -0800 Subject: [PATCH 030/119] chore(deps): bump @fastify/reply-from from 9.4.0 to 9.6.0 (#9813) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@fastify/reply-from](https://github.com/fastify/fastify-reply-from) from 9.4.0 to 9.6.0.
Release notes

Sourced from @​fastify/reply-from's releases.

v9.6.0

⚠️ Security Release ⚠️

Fixes CVE-2023-51701, see https://github.com/fastify/fastify-reply-from/security/advisories/GHSA-v2v2-hph8-q5xp for more details. Severity: moderate.

Full Changelog: https://github.com/fastify/fastify-reply-from/compare/v9.5.0...v9.6.0

v9.5.0

What's Changed

New Contributors

Full Changelog: https://github.com/fastify/fastify-reply-from/compare/v4.18.0...v9.5.0

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@fastify/reply-from&package-manager=npm_and_yarn&previous-version=9.4.0&new-version=9.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/redwoodjs/redwood/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- yarn.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ba8617a159fa..5def59d5a52e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3117,17 +3117,18 @@ __metadata: linkType: hard "@fastify/reply-from@npm:^9.0.0": - version: 9.4.0 - resolution: "@fastify/reply-from@npm:9.4.0" + version: 9.6.0 + resolution: "@fastify/reply-from@npm:9.6.0" dependencies: "@fastify/error": "npm:^3.0.0" end-of-stream: "npm:^1.4.4" + fast-content-type-parse: "npm:^1.1.0" fast-querystring: "npm:^1.0.0" fastify-plugin: "npm:^4.0.0" pump: "npm:^3.0.0" tiny-lru: "npm:^11.0.0" undici: "npm:^5.19.1" - checksum: 2090866e5d381685cf553918921fb27cd229aa3aa9d03353f91facf2f0637ee66a56391704a0bcb88344d7f10ff0360c4159e7f31eca5fa181271474da8a0d31 + checksum: 01d6dd4cffb6810415ccf04718d1477acf7acc18ec2f7b26537b994b6037b9ff25df6e2778e1f1017fd35f9cad85a1b7d540db2aa20e21db04b30f4fd3449913 languageName: node linkType: hard From 53d16b9700d2ea29e67b93d05c9ee781a125a952 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 22:49:20 +0000 Subject: [PATCH 031/119] fix(deps): update dependency vite to v4.5.2 [security] (#9852) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [vite](https://vitejs.dev) ([source](https://togithub.com/vitejs/vite/tree/HEAD/packages/vite)) | [`4.5.1` -> `4.5.2`](https://renovatebot.com/diffs/npm/vite/4.5.1/4.5.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vite/4.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vite/4.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vite/4.5.1/4.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vite/4.5.1/4.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [CVE-2024-23331](https://togithub.com/vitejs/vite/security/advisories/GHSA-c24v-8rfc-w8vw) [Vite dev server option](https://vitejs.dev/config/server-options.html#server-fs-deny) `server.fs.deny` can be bypassed on case-insensitive file systems using case-augmented versions of filenames. Notably this affects servers hosted on Windows. This bypass is similar to https://nvd.nist.gov/vuln/detail/CVE-2023-34092 -- with surface area reduced to hosts having case-insensitive filesystems. Fixed in vite@5.0.12, vite@4.5.2, vite@3.2.8, vite@2.9.17 Since `picomatch` defaults to case-sensitive glob matching, but the file server doesn't discriminate; a blacklist bypass is possible. See `picomatch` usage, where `nocase` is defaulted to `false`: https://github.com/vitejs/vite/blob/v5.1.0-beta.1/packages/vite/src/node/server/index.ts#L632 By requesting raw filesystem paths using augmented casing, the matcher derived from `config.server.fs.deny` fails to block access to sensitive files. **Setup** 1. Created vanilla Vite project using `npm create vite@latest` on a Standard Azure hosted Windows 10 instance. - `npm run dev -- --host 0.0.0.0` - Publicly accessible for the time being here: http://20.12.242.81:5173/ 2. Created dummy secret files, e.g. `custom.secret` and `production.pem` 3. Populated `vite.config.js` with ```javascript export default { server: { fs: { deny: ['.env', '.env.*', '*.{crt,pem}', 'custom.secret'] } } } ``` **Reproduction** 1. `curl -s http://20.12.242.81:5173/@​fs//` - Descriptive error page reveals absolute filesystem path to project root 2. `curl -s http://20.12.242.81:5173/@​fs/C:/Users/darbonzo/Desktop/vite-project/vite.config.js` - Discoverable configuration file reveals locations of secrets 3. `curl -s http://20.12.242.81:5173/@​fs/C:/Users/darbonzo/Desktop/vite-project/custom.sEcReT` - Secrets are directly accessible using case-augmented version of filename **Proof** ![Screenshot 2024-01-19 022736](https://user-images.githubusercontent.com/907968/298020728-3a8d3c06-fcfd-4009-9182-e842f66a6ea5.png) **Who** - Users with exposed dev servers on environments with case-insensitive filesystems **What** - Files protected by `server.fs.deny` are both discoverable, and accessible ---
vitejs/vite (vite) [Compare Source](https://togithub.com/vitejs/vite/compare/v4.5.1...v4.5.2) Please refer to [CHANGELOG.md](https://togithub.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md) for details.
--- 📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- packages/vite/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/vite/package.json b/packages/vite/package.json index a455e8f677bf..b467a6fa7cde 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -32,7 +32,7 @@ "@vitejs/plugin-react": "4.2.1", "buffer": "6.0.3", "core-js": "3.34.0", - "vite": "4.5.1", + "vite": "4.5.2", "yargs-parser": "21.1.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 5def59d5a52e..bf01d5f94d01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8786,7 +8786,7 @@ __metadata: core-js: "npm:3.34.0" glob: "npm:10.3.10" typescript: "npm:5.3.3" - vite: "npm:4.5.1" + vite: "npm:4.5.2" vitest: "npm:1.2.1" yargs-parser: "npm:21.1.1" bin: @@ -32992,9 +32992,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:4.5.1": - version: 4.5.1 - resolution: "vite@npm:4.5.1" +"vite@npm:4.5.2": + version: 4.5.2 + resolution: "vite@npm:4.5.2" dependencies: esbuild: "npm:^0.18.10" fsevents: "npm:~2.3.2" @@ -33028,7 +33028,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 352a94b13f793e4bcbc424d680a32507343223eeda8917fde0f23c1fa1ba3db7c806dade8461ca5cfb270154ddb8895a219fdd4384519fe9b8e46d1cf491a890 + checksum: 68969ccf72ad2078aec7d9e023fce6de03746a4761f9308924212fff7bd42487145b270166cec66cddacfd7b1315ec5aa39ead174fbd7fcd463637a96ff4c9d1 languageName: node linkType: hard From 25bb6b8716062cd29a1629e6f33e8cac4f2448a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 14:49:54 -0800 Subject: [PATCH 032/119] chore(deps): bump follow-redirects from 1.15.2 to 1.15.4 (#9817) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.4.
Commits
  • 6585820 Release version 1.15.4 of the npm package.
  • 7a6567e Disallow bracketed hostnames.
  • 05629af Prefer native URL instead of deprecated url.parse.
  • 1cba8e8 Prefer native URL instead of legacy url.resolve.
  • 72bc2a4 Simplify _processResponse error handling.
  • 3d42aec Add bracket tests.
  • bcbb096 Do not directly set Error properties.
  • 192dbe7 Release version 1.15.3 of the npm package.
  • bd8c81e Fix resource leak on destroy.
  • 9c728c3 Split linting and testing.
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.2&new-version=1.15.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/redwoodjs/redwood/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index bf01d5f94d01..5c67d1ac598b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19082,12 +19082,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.15.0": - version: 1.15.2 - resolution: "follow-redirects@npm:1.15.2" + version: 1.15.4 + resolution: "follow-redirects@npm:1.15.4" peerDependenciesMeta: debug: optional: true - checksum: da5932b70e63944d38eecaa16954bac4347036f08303c913d166eda74809d8797d38386e3a0eb1d2fe37d2aaff2764cce8e9dbd99459d860cf2cdfa237923b5f + checksum: 5f37ed9170c9eb19448c5418fdb0f2b73f644b5364834e70791a76ecc7db215246f9773bbef4852cfae4067764ffc852e047f744b661b0211532155b73556a6a languageName: node linkType: hard From 217ea66be94c5d82b9c9ba201e8fdc29eca49897 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 15:11:52 -0800 Subject: [PATCH 033/119] chore(deps): update dependency lerna to v8.0.2 (#9914) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [lerna](https://lerna.js.org) ([source](https://togithub.com/lerna/lerna/tree/HEAD/packages/lerna)) | [`8.0.0` -> `8.0.2`](https://renovatebot.com/diffs/npm/lerna/8.0.0/8.0.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/lerna/8.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/lerna/8.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/lerna/8.0.0/8.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/lerna/8.0.0/8.0.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
lerna/lerna (lerna) ### [`v8.0.2`](https://togithub.com/lerna/lerna/blob/HEAD/packages/lerna/CHANGELOG.md#802-2024-01-05) [Compare Source](https://togithub.com/lerna/lerna/compare/v8.0.1...v8.0.2) ##### Bug Fixes - **add-caching:** explicitly set targetDefaults for all scripts ([#​3929](https://togithub.com/lerna/lerna/issues/3929)) ([dae18c9](https://togithub.com/lerna/lerna/commit/dae18c927a47326b29d35f8897e02632adb93790)) ### [`v8.0.1`](https://togithub.com/lerna/lerna/blob/HEAD/packages/lerna/CHANGELOG.md#801-2023-12-15) [Compare Source](https://togithub.com/lerna/lerna/compare/v8.0.0...v8.0.1) ##### Bug Fixes - update node-gyp usage to v10 to resolve npm warning ([#​3919](https://togithub.com/lerna/lerna/issues/3919)) ([f5fdcba](https://togithub.com/lerna/lerna/commit/f5fdcba1ef53fa8d779dcaf6c617cba3461f343c))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 208 ++++++++++++++++++--------------------------------- 2 files changed, 72 insertions(+), 138 deletions(-) diff --git a/package.json b/package.json index de480397d71c..8fe9344b8f1a 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "fs-extra": "11.2.0", "jest": "29.7.0", "jscodeshift": "0.15.0", - "lerna": "8.0.0", + "lerna": "8.0.2", "listr2": "6.6.1", "make-dir-cli": "3.0.0", "msw": "1.3.2", diff --git a/yarn.lock b/yarn.lock index 5c67d1ac598b..c8d0b3c36075 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5186,11 +5186,11 @@ __metadata: languageName: node linkType: hard -"@lerna/create@npm:8.0.0": - version: 8.0.0 - resolution: "@lerna/create@npm:8.0.0" +"@lerna/create@npm:8.0.2": + version: 8.0.2 + resolution: "@lerna/create@npm:8.0.2" dependencies: - "@npmcli/run-script": "npm:6.0.2" + "@npmcli/run-script": "npm:7.0.2" "@nx/devkit": "npm:>=17.1.2 < 18" "@octokit/plugin-enterprise-rest": "npm:6.0.1" "@octokit/rest": "npm:19.0.11" @@ -5233,7 +5233,7 @@ __metadata: p-map-series: "npm:2.1.0" p-queue: "npm:6.6.2" p-reduce: "npm:^2.1.0" - pacote: "npm:^15.2.0" + pacote: "npm:^17.0.5" pify: "npm:5.0.0" read-cmd-shim: "npm:4.0.0" read-package-json: "npm:6.0.4" @@ -5254,7 +5254,7 @@ __metadata: write-pkg: "npm:4.0.0" yargs: "npm:17.7.2" yargs-parser: "npm:21.1.1" - checksum: ebd657657f2bcdcf5085bc717bef2bbff7486b202c037a65d4d0abc38ce2dbf40adafd829a41621f863a1705798efda9b1174e777e6fd77d33247bd6da5e29d2 + checksum: 1569183c38fb627f80f3b953119a07d12bdfd7a511899d0608d5ce27fd386bcf1a66f869d00e2bf3dc82a1e0e27f09b3f95b194a5b8ac4e213f4e8b04fed1bac languageName: node linkType: hard @@ -5464,22 +5464,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/git@npm:^4.0.0": - version: 4.1.0 - resolution: "@npmcli/git@npm:4.1.0" - dependencies: - "@npmcli/promise-spawn": "npm:^6.0.0" - lru-cache: "npm:^7.4.4" - npm-pick-manifest: "npm:^8.0.0" - proc-log: "npm:^3.0.0" - promise-inflight: "npm:^1.0.1" - promise-retry: "npm:^2.0.1" - semver: "npm:^7.3.5" - which: "npm:^3.0.0" - checksum: 78591ba8f03de3954a5b5b83533455696635a8f8140c74038685fec4ee28674783a5b34a3d43840b2c5f9aa37fd0dce57eaf4ef136b52a8ec2ee183af2e40724 - languageName: node - linkType: hard - "@npmcli/git@npm:^5.0.0": version: 5.0.3 resolution: "@npmcli/git@npm:5.0.3" @@ -5561,15 +5545,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/promise-spawn@npm:^6.0.0, @npmcli/promise-spawn@npm:^6.0.1": - version: 6.0.2 - resolution: "@npmcli/promise-spawn@npm:6.0.2" - dependencies: - which: "npm:^3.0.0" - checksum: d0696b8d9f7e16562cd1e520e4919000164be042b5c9998a45b4e87d41d9619fcecf2a343621c6fa85ed2671cbe87ab07e381a7faea4e5132c371dbb05893f31 - languageName: node - linkType: hard - "@npmcli/promise-spawn@npm:^7.0.0": version: 7.0.0 resolution: "@npmcli/promise-spawn@npm:7.0.0" @@ -5588,20 +5563,7 @@ __metadata: languageName: node linkType: hard -"@npmcli/run-script@npm:6.0.2, @npmcli/run-script@npm:^6.0.0": - version: 6.0.2 - resolution: "@npmcli/run-script@npm:6.0.2" - dependencies: - "@npmcli/node-gyp": "npm:^3.0.0" - "@npmcli/promise-spawn": "npm:^6.0.0" - node-gyp: "npm:^9.0.0" - read-package-json-fast: "npm:^3.0.0" - which: "npm:^3.0.0" - checksum: 8c6ab2895eb6a2f24b1cd85dc934edae2d1c02af3acfc383655857f3893ed133d393876add800600d2e1702f8b62133d7cf8da00d81a1c885cc6029ef9e8e691 - languageName: node - linkType: hard - -"@npmcli/run-script@npm:^7.0.0, @npmcli/run-script@npm:^7.0.2": +"@npmcli/run-script@npm:7.0.2, @npmcli/run-script@npm:^7.0.0, @npmcli/run-script@npm:^7.0.2": version: 7.0.2 resolution: "@npmcli/run-script@npm:7.0.2" dependencies: @@ -8989,12 +8951,19 @@ __metadata: languageName: node linkType: hard -"@sigstore/bundle@npm:^2.1.0": - version: 2.1.0 - resolution: "@sigstore/bundle@npm:2.1.0" +"@sigstore/bundle@npm:^2.1.1": + version: 2.1.1 + resolution: "@sigstore/bundle@npm:2.1.1" dependencies: "@sigstore/protobuf-specs": "npm:^0.2.1" - checksum: 785b48d9def9cde91880bfd656b32e5808861a3f81e1513041635bbab5763c35cfd5c854d0d7dd7283a5c6aeadac036ead4396281aa0cbb356e1311bd239eff5 + checksum: d3e358569e9b0f1a2c5bfa3ab8608046fc11f42424ea717b4871044cf9ecbff374fc08673b9858ec93f993fa1a6166d416b1245a0d13d0f856ea5de99e27a594 + languageName: node + linkType: hard + +"@sigstore/core@npm:^0.2.0": + version: 0.2.0 + resolution: "@sigstore/core@npm:0.2.0" + checksum: b3da01c5369ba7e02b3f56921d0e3da8d6527d005d1bf6e90fbebf4211541c068a2a18e65f205ff7bcaa9ca3f41c7261396e7d4b4ad05b0aedca2e3bae0405eb languageName: node linkType: hard @@ -9012,14 +8981,15 @@ __metadata: languageName: node linkType: hard -"@sigstore/sign@npm:^2.1.0": - version: 2.2.0 - resolution: "@sigstore/sign@npm:2.2.0" +"@sigstore/sign@npm:^2.2.1": + version: 2.2.1 + resolution: "@sigstore/sign@npm:2.2.1" dependencies: - "@sigstore/bundle": "npm:^2.1.0" + "@sigstore/bundle": "npm:^2.1.1" + "@sigstore/core": "npm:^0.2.0" "@sigstore/protobuf-specs": "npm:^0.2.1" make-fetch-happen: "npm:^13.0.0" - checksum: f3a24809940688b2e7dac1ec7097caf73cc25a440efc67d138227f73154ecd7c95d1962b4cb11fe7de1495659c4784c068002d7f8a14fdc6099d830e50a7bc08 + checksum: 482206264bdf517fe54d08171942219b4541704f5dec9ecb169687d545b1437c5a1493ab5ea84e87180f777d7476f0154828f0ce978f55071b0117d5687f3f9c languageName: node linkType: hard @@ -9033,13 +9003,24 @@ __metadata: languageName: node linkType: hard -"@sigstore/tuf@npm:^2.1.0": - version: 2.2.0 - resolution: "@sigstore/tuf@npm:2.2.0" +"@sigstore/tuf@npm:^2.3.0": + version: 2.3.0 + resolution: "@sigstore/tuf@npm:2.3.0" dependencies: "@sigstore/protobuf-specs": "npm:^0.2.1" - tuf-js: "npm:^2.1.0" - checksum: d20c0fd1c13e7054b9569eb70b427439546cfd864e891f8dce48e6c59b782b1dede109e02e3ac33ce381a3fd8b8fbffd6719a17cdcaca18972c2c5a000ba816e + tuf-js: "npm:^2.2.0" + checksum: a214561e143f553132428597eaa68cfdcb36c6bf757f3dea30b2e55038433b0ffc53c446036e6d104487fb55f8d6bc6e01764090d29f42497fb44d55017f360c + languageName: node + linkType: hard + +"@sigstore/verify@npm:^0.1.0": + version: 0.1.0 + resolution: "@sigstore/verify@npm:0.1.0" + dependencies: + "@sigstore/bundle": "npm:^2.1.1" + "@sigstore/core": "npm:^0.2.0" + "@sigstore/protobuf-specs": "npm:^0.2.1" + checksum: 3eeb4817ac38dc7b337a48e75c4e88226a5553c32594fa8c22221087a69656a7ccfe68e6f59eb12f1ecc506ea6c6db90e4b312c7dcc4a66c04e01434dc607fc7 languageName: node linkType: hard @@ -20913,7 +20894,7 @@ __metadata: languageName: node linkType: hard -"ignore-walk@npm:^6.0.0, ignore-walk@npm:^6.0.4": +"ignore-walk@npm:^6.0.4": version: 6.0.4 resolution: "ignore-walk@npm:6.0.4" dependencies: @@ -23262,12 +23243,12 @@ __metadata: languageName: node linkType: hard -"lerna@npm:8.0.0": - version: 8.0.0 - resolution: "lerna@npm:8.0.0" +"lerna@npm:8.0.2": + version: 8.0.2 + resolution: "lerna@npm:8.0.2" dependencies: - "@lerna/create": "npm:8.0.0" - "@npmcli/run-script": "npm:6.0.2" + "@lerna/create": "npm:8.0.2" + "@npmcli/run-script": "npm:7.0.2" "@nx/devkit": "npm:>=17.1.2 < 18" "@octokit/plugin-enterprise-rest": "npm:6.0.1" "@octokit/rest": "npm:19.0.11" @@ -23318,7 +23299,7 @@ __metadata: p-queue: "npm:6.6.2" p-reduce: "npm:2.1.0" p-waterfall: "npm:2.1.1" - pacote: "npm:^15.2.0" + pacote: "npm:^17.0.5" pify: "npm:5.0.0" read-cmd-shim: "npm:4.0.0" read-package-json: "npm:6.0.4" @@ -23342,7 +23323,7 @@ __metadata: yargs-parser: "npm:21.1.1" bin: lerna: dist/cli.js - checksum: 8708f23eea66e59e97b022fa2c9457032195d04a2b71b8f99e68d92e0bfad4e8ff3a4ea19a95e739d58403452849339cf03f7d1b229971acb69696445ec2ab1e + checksum: 0b9eee6c962a6fe242ee9c7d0fd4f5a65206c9102a7f44cb862c7a2b8f269f0736b7abfdbf5b07b72335a7c429278f78550bbabb35c91b9b78ea6f22c78c2466 languageName: node linkType: hard @@ -23953,7 +23934,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:7.18.3, lru-cache@npm:^7.4.4, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": +"lru-cache@npm:7.18.3, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" checksum: b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed @@ -25636,7 +25617,7 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^9.0.0, node-gyp@npm:latest": +"node-gyp@npm:latest": version: 9.4.0 resolution: "node-gyp@npm:9.4.0" dependencies: @@ -25939,27 +25920,6 @@ __metadata: languageName: node linkType: hard -"npm-packlist@npm:^7.0.0": - version: 7.0.4 - resolution: "npm-packlist@npm:7.0.4" - dependencies: - ignore-walk: "npm:^6.0.0" - checksum: a6528b2d0aa09288166a21a04bb152231d29fd8c0e40e551ea5edb323a12d0580aace11b340387ba3a01c614db25bb4100a10c20d0ff53976eed786f95b82536 - languageName: node - linkType: hard - -"npm-pick-manifest@npm:^8.0.0": - version: 8.0.1 - resolution: "npm-pick-manifest@npm:8.0.1" - dependencies: - npm-install-checks: "npm:^6.0.0" - npm-normalize-package-bin: "npm:^3.0.0" - npm-package-arg: "npm:^10.0.0" - semver: "npm:^7.3.5" - checksum: 920cc33167b52f5fb26a5cfcf78486ea62c3c04c7716a3a0c973754b4ea13dd00cedcd9bbd772845d914b91d0ad6d5d06c52e6be189fbcefcdeba7f8293deb14 - languageName: node - linkType: hard - "npm-pick-manifest@npm:^9.0.0": version: 9.0.0 resolution: "npm-pick-manifest@npm:9.0.0" @@ -25972,7 +25932,7 @@ __metadata: languageName: node linkType: hard -"npm-registry-fetch@npm:^14.0.0, npm-registry-fetch@npm:^14.0.3, npm-registry-fetch@npm:^14.0.5": +"npm-registry-fetch@npm:^14.0.3, npm-registry-fetch@npm:^14.0.5": version: 14.0.5 resolution: "npm-registry-fetch@npm:14.0.5" dependencies: @@ -26719,37 +26679,9 @@ __metadata: languageName: node linkType: hard -"pacote@npm:^15.2.0": - version: 15.2.0 - resolution: "pacote@npm:15.2.0" - dependencies: - "@npmcli/git": "npm:^4.0.0" - "@npmcli/installed-package-contents": "npm:^2.0.1" - "@npmcli/promise-spawn": "npm:^6.0.1" - "@npmcli/run-script": "npm:^6.0.0" - cacache: "npm:^17.0.0" - fs-minipass: "npm:^3.0.0" - minipass: "npm:^5.0.0" - npm-package-arg: "npm:^10.0.0" - npm-packlist: "npm:^7.0.0" - npm-pick-manifest: "npm:^8.0.0" - npm-registry-fetch: "npm:^14.0.0" - proc-log: "npm:^3.0.0" - promise-retry: "npm:^2.0.1" - read-package-json: "npm:^6.0.0" - read-package-json-fast: "npm:^3.0.0" - sigstore: "npm:^1.3.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - bin: - pacote: lib/bin.js - checksum: 0e680a360d7577df61c36c671dcc9c63a1ef176518a6ec19a3200f91da51205432559e701cba90f0ba6901372765dde68a07ff003474d656887eb09b54f35c5f - languageName: node - linkType: hard - -"pacote@npm:^17.0.0, pacote@npm:^17.0.4": - version: 17.0.5 - resolution: "pacote@npm:17.0.5" +"pacote@npm:^17.0.0, pacote@npm:^17.0.4, pacote@npm:^17.0.5": + version: 17.0.6 + resolution: "pacote@npm:17.0.6" dependencies: "@npmcli/git": "npm:^5.0.0" "@npmcli/installed-package-contents": "npm:^2.0.1" @@ -26766,12 +26698,12 @@ __metadata: promise-retry: "npm:^2.0.1" read-package-json: "npm:^7.0.0" read-package-json-fast: "npm:^3.0.0" - sigstore: "npm:^2.0.0" + sigstore: "npm:^2.2.0" ssri: "npm:^10.0.0" tar: "npm:^6.1.11" bin: pacote: lib/bin.js - checksum: ff3b80fd89f031e3df51122aeab72ca1420aed9fd085e8b2746a1ea4da7a4da88084bb25e85c6d7d7539fc802876272a3798fb575b7c4bee962831c1337a10cc + checksum: d8fc116cb91d453d2a42493ea5ced3ff57dbfdb6e5b9b514f1d0465422e80042c69013fb4f77be5f27751185c6b174a40d8a53debdfb57cc4ba82a9650d970db languageName: node linkType: hard @@ -29592,7 +29524,7 @@ __metadata: fs-extra: "npm:11.2.0" jest: "npm:29.7.0" jscodeshift: "npm:0.15.0" - lerna: "npm:8.0.0" + lerna: "npm:8.0.2" listr2: "npm:6.6.1" make-dir-cli: "npm:3.0.0" msw: "npm:1.3.2" @@ -30152,7 +30084,7 @@ __metadata: languageName: node linkType: hard -"sigstore@npm:^1.3.0, sigstore@npm:^1.4.0": +"sigstore@npm:^1.4.0": version: 1.7.0 resolution: "sigstore@npm:1.7.0" dependencies: @@ -30165,15 +30097,17 @@ __metadata: languageName: node linkType: hard -"sigstore@npm:^2.0.0": - version: 2.1.0 - resolution: "sigstore@npm:2.1.0" +"sigstore@npm:^2.2.0": + version: 2.2.0 + resolution: "sigstore@npm:2.2.0" dependencies: - "@sigstore/bundle": "npm:^2.1.0" + "@sigstore/bundle": "npm:^2.1.1" + "@sigstore/core": "npm:^0.2.0" "@sigstore/protobuf-specs": "npm:^0.2.1" - "@sigstore/sign": "npm:^2.1.0" - "@sigstore/tuf": "npm:^2.1.0" - checksum: 44e9ed0ea337f5bb37cf54b065789be4fba4c2f45aa5c1cd19c33eee7bc5683a24df67e45b46698c6192bdf13e85052251ea994c4873c6d86d21392e0cd45618 + "@sigstore/sign": "npm:^2.2.1" + "@sigstore/tuf": "npm:^2.3.0" + "@sigstore/verify": "npm:^0.1.0" + checksum: 0e4d0f4301ecab3d176b6fc528368a360bb6d9a3916bfd6ed26c3a3e815ac3aa160044eb2024c38270275cdeb1025df3cd3e90af977dd305204510daa0fb0de0 languageName: node linkType: hard @@ -32071,14 +32005,14 @@ __metadata: languageName: node linkType: hard -"tuf-js@npm:^2.1.0": - version: 2.1.0 - resolution: "tuf-js@npm:2.1.0" +"tuf-js@npm:^2.2.0": + version: 2.2.0 + resolution: "tuf-js@npm:2.2.0" dependencies: "@tufjs/models": "npm:2.0.0" debug: "npm:^4.3.4" make-fetch-happen: "npm:^13.0.0" - checksum: aba49761e5f06776632c1d7855488dc9f6fb030c483ce011cd5ffb168e2145c634bf3161e762cd7f90e5b5d009e6ac57b5e62dd11bdb9f20a072a98aae96709d + checksum: 9a11793feed2aa798c1a50107a0f031034b4a670016684e0d0b7d97be3fff7f98f53783c30120bce795c16d58f1b951410bb673aae92cc2437d641cc7457e215 languageName: node linkType: hard From fb6deceaafb3d6bf6d3186f2684ae7f795701275 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 23:33:43 +0000 Subject: [PATCH 034/119] fix(deps): update storybook monorepo to v7.6.10 (#9917) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@storybook/addon-a11y](https://togithub.com/storybookjs/storybook/tree/next/code/addons/a11y) ([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/addons/a11y)) | [`7.6.4` -> `7.6.10`](https://renovatebot.com/diffs/npm/@storybook%2faddon-a11y/7.6.4/7.6.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-a11y/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-a11y/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-a11y/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-a11y/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/addon-docs](https://togithub.com/storybookjs/storybook/tree/next/code/addons/docs) ([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/addons/docs)) | [`7.6.4` -> `7.6.10`](https://renovatebot.com/diffs/npm/@storybook%2faddon-docs/7.6.4/7.6.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-docs/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-docs/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-docs/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-docs/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/addon-essentials](https://togithub.com/storybookjs/storybook/tree/next/code/addons/essentials) ([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/addons/essentials)) | [`7.6.4` -> `7.6.10`](https://renovatebot.com/diffs/npm/@storybook%2faddon-essentials/7.6.4/7.6.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2faddon-essentials/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2faddon-essentials/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2faddon-essentials/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2faddon-essentials/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@storybook/react-webpack5](https://togithub.com/storybookjs/storybook/tree/next/code/frameworks/react-webpack5) ([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5)) | [`7.6.4` -> `7.6.10`](https://renovatebot.com/diffs/npm/@storybook%2freact-webpack5/7.6.4/7.6.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@storybook%2freact-webpack5/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@storybook%2freact-webpack5/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@storybook%2freact-webpack5/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@storybook%2freact-webpack5/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [storybook](https://togithub.com/storybookjs/storybook/tree/next/code/lib/cli) ([source](https://togithub.com/storybookjs/storybook/tree/HEAD/code/lib/cli)) | [`7.6.4` -> `7.6.10`](https://renovatebot.com/diffs/npm/storybook/7.6.4/7.6.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/storybook/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/storybook/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/storybook/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/storybook/7.6.4/7.6.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
storybookjs/storybook (@​storybook/addon-a11y) ### [`v7.6.10`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#7610) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.9...v7.6.10) - CLI: Fix existing version detection in `upgrade` - [#​25642](https://togithub.com/storybookjs/storybook/pull/25642), thanks [@​JReinhold](https://togithub.com/JReinhold)! - React: Fix acorn ecma version warning - [#​25634](https://togithub.com/storybookjs/storybook/pull/25634), thanks [@​dannyhw](https://togithub.com/dannyhw)! ### [`v7.6.9`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#769) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.8...v7.6.9) - ConfigFile: Fix export specifiers - [#​25590](https://togithub.com/storybookjs/storybook/pull/25590), thanks [@​shilman](https://togithub.com/shilman)! - Webpack5: Make export-order-loader compatible with both esm and cjs - [#​25540](https://togithub.com/storybookjs/storybook/pull/25540), thanks [@​mlazari](https://togithub.com/mlazari)! - CLI: Support version specifiers in `init`, `upgrade` and `sandbox` - [#​25526](https://togithub.com/storybookjs/storybook/pull/25526), thanks [@​ndelangen](https://togithub.com/ndelangen), [@​jreinhold](https://togithub.com/jreinhold)! ### [`v7.6.8`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#768) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.7...v7.6.8) - Addon-actions: Fix module resolution for react-native - [#​25296](https://togithub.com/storybookjs/storybook/pull/25296), thanks [@​dannyhw](https://togithub.com/dannyhw)! - Storysource: Fix import error - [#​25391](https://togithub.com/storybookjs/storybook/pull/25391), thanks [@​unional](https://togithub.com/unional)! ### [`v7.6.7`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#767) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.6...v7.6.7) - Core: Skip no-framework error when ignorePreview=true - [#​25286](https://togithub.com/storybookjs/storybook/pull/25286), thanks [@​ndelangen](https://togithub.com/ndelangen)! - Dependencies: Semver dependency fixes - [#​25283](https://togithub.com/storybookjs/storybook/pull/25283), thanks [@​ndelangen](https://togithub.com/ndelangen)! - Vite: Fix pre-transform error in Vite 5 - [#​25329](https://togithub.com/storybookjs/storybook/pull/25329), thanks [@​yannbf](https://togithub.com/yannbf)! - Vue3: Fix pnp by making compiler-core a dependency - [#​25311](https://togithub.com/storybookjs/storybook/pull/25311), thanks [@​shilman](https://togithub.com/shilman)! ### [`v7.6.6`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#766) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.5...v7.6.6) - SvelteKit: Support 2.0 modules with mocks - [#​25244](https://togithub.com/storybookjs/storybook/pull/25244), thanks [@​paoloricciuti](https://togithub.com/paoloricciuti)! ### [`v7.6.5`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#765) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.4...v7.6.5) - Angular: Update Angular cli templates - [#​25152](https://togithub.com/storybookjs/storybook/pull/25152), thanks [@​Marklb](https://togithub.com/Marklb)! - Blocks: Fix Subtitle block for unattached docs pages - [#​25157](https://togithub.com/storybookjs/storybook/pull/25157), thanks [@​kripod](https://togithub.com/kripod)! - SvelteKit: Fix missing `$app` modules - [#​25132](https://togithub.com/storybookjs/storybook/pull/25132), thanks [@​paoloricciuti](https://togithub.com/paoloricciuti)!
storybookjs/storybook (storybook) ### [`v7.6.10`](https://togithub.com/storybookjs/storybook/compare/v7.6.9...0a8f25a5711b32f5b029979f89eef57cac63a5d5) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.9...v7.6.10) ### [`v7.6.9`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#769) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.8...v7.6.9) - ConfigFile: Fix export specifiers - [#​25590](https://togithub.com/storybookjs/storybook/pull/25590), thanks [@​shilman](https://togithub.com/shilman)! - Webpack5: Make export-order-loader compatible with both esm and cjs - [#​25540](https://togithub.com/storybookjs/storybook/pull/25540), thanks [@​mlazari](https://togithub.com/mlazari)! - CLI: Support version specifiers in `init`, `upgrade` and `sandbox` - [#​25526](https://togithub.com/storybookjs/storybook/pull/25526), thanks [@​ndelangen](https://togithub.com/ndelangen), [@​jreinhold](https://togithub.com/jreinhold)! ### [`v7.6.8`](https://togithub.com/storybookjs/storybook/compare/v7.6.7...2eded2e062ff7f984706a066090b7c699ee5c71e) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.7...v7.6.8) ### [`v7.6.7`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#767) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.6...v7.6.7) - Core: Skip no-framework error when ignorePreview=true - [#​25286](https://togithub.com/storybookjs/storybook/pull/25286), thanks [@​ndelangen](https://togithub.com/ndelangen)! - Dependencies: Semver dependency fixes - [#​25283](https://togithub.com/storybookjs/storybook/pull/25283), thanks [@​ndelangen](https://togithub.com/ndelangen)! - Vite: Fix pre-transform error in Vite 5 - [#​25329](https://togithub.com/storybookjs/storybook/pull/25329), thanks [@​yannbf](https://togithub.com/yannbf)! - Vue3: Fix pnp by making compiler-core a dependency - [#​25311](https://togithub.com/storybookjs/storybook/pull/25311), thanks [@​shilman](https://togithub.com/shilman)! ### [`v7.6.6`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#766) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.5...v7.6.6) - SvelteKit: Support 2.0 modules with mocks - [#​25244](https://togithub.com/storybookjs/storybook/pull/25244), thanks [@​paoloricciuti](https://togithub.com/paoloricciuti)! ### [`v7.6.5`](https://togithub.com/storybookjs/storybook/blob/HEAD/CHANGELOG.md#765) [Compare Source](https://togithub.com/storybookjs/storybook/compare/v7.6.4...v7.6.5) - Angular: Update Angular cli templates - [#​25152](https://togithub.com/storybookjs/storybook/pull/25152), thanks [@​Marklb](https://togithub.com/Marklb)! - Blocks: Fix Subtitle block for unattached docs pages - [#​25157](https://togithub.com/storybookjs/storybook/pull/25157), thanks [@​kripod](https://togithub.com/kripod)! - SvelteKit: Fix missing `$app` modules - [#​25132](https://togithub.com/storybookjs/storybook/pull/25132), thanks [@​paoloricciuti](https://togithub.com/paoloricciuti)!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/cli-packages/storybook/package.json | 10 +- yarn.lock | 591 +++++++++---------- 2 files changed, 300 insertions(+), 301 deletions(-) diff --git a/packages/cli-packages/storybook/package.json b/packages/cli-packages/storybook/package.json index 4a3dce4ad0c6..246fd257f6a2 100644 --- a/packages/cli-packages/storybook/package.json +++ b/packages/cli-packages/storybook/package.json @@ -23,13 +23,13 @@ "@redwoodjs/cli-helpers": "6.0.7", "@redwoodjs/project-config": "6.0.7", "@redwoodjs/telemetry": "6.0.7", - "@storybook/addon-a11y": "7.6.4", - "@storybook/addon-docs": "7.6.4", - "@storybook/addon-essentials": "7.6.4", - "@storybook/react-webpack5": "7.6.4", + "@storybook/addon-a11y": "7.6.10", + "@storybook/addon-docs": "7.6.10", + "@storybook/addon-essentials": "7.6.10", + "@storybook/react-webpack5": "7.6.10", "chalk": "4.1.2", "execa": "5.1.1", - "storybook": "7.6.4", + "storybook": "7.6.10", "terminal-link": "2.1.1", "yargs": "17.7.2" }, diff --git a/yarn.lock b/yarn.lock index c8d0b3c36075..16da61d83313 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8038,14 +8038,14 @@ __metadata: "@redwoodjs/cli-helpers": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@redwoodjs/telemetry": "npm:6.0.7" - "@storybook/addon-a11y": "npm:7.6.4" - "@storybook/addon-docs": "npm:7.6.4" - "@storybook/addon-essentials": "npm:7.6.4" - "@storybook/react-webpack5": "npm:7.6.4" + "@storybook/addon-a11y": "npm:7.6.10" + "@storybook/addon-docs": "npm:7.6.10" + "@storybook/addon-essentials": "npm:7.6.10" + "@storybook/react-webpack5": "npm:7.6.10" "@types/yargs": "npm:17.0.32" chalk: "npm:4.1.2" execa: "npm:5.1.1" - storybook: "npm:7.6.4" + storybook: "npm:7.6.10" terminal-link: "npm:2.1.1" typescript: "npm:5.3.3" yargs: "npm:17.7.2" @@ -9103,71 +9103,71 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-a11y@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-a11y@npm:7.6.4" +"@storybook/addon-a11y@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-a11y@npm:7.6.10" dependencies: - "@storybook/addon-highlight": "npm:7.6.4" + "@storybook/addon-highlight": "npm:7.6.10" axe-core: "npm:^4.2.0" - checksum: a4195ce7847c52669d8201c6414f651c3b7cde13dbb649840d6d87d88cdc421442ba2bd11cc3c55844e9871fa1c3e403135da418ba5241b747f53baff0c548a8 + checksum: dfbf9d1ea10d313cb3855693c68264c0ced28c88aaecd0556bb62ce9ee01e38294aaa5298d9a136313c35cb9edaed447d9aef063802d1862119e78d8d03404db languageName: node linkType: hard -"@storybook/addon-actions@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-actions@npm:7.6.4" +"@storybook/addon-actions@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-actions@npm:7.6.10" dependencies: - "@storybook/core-events": "npm:7.6.4" + "@storybook/core-events": "npm:7.6.10" "@storybook/global": "npm:^5.0.0" "@types/uuid": "npm:^9.0.1" dequal: "npm:^2.0.2" polished: "npm:^4.2.2" uuid: "npm:^9.0.0" - checksum: 78190605717819df25586096b3aa53fe7b027382f607f35569ec4d669830c290434eaa8365cd03b11185ba53696a66f5d64165574719007beda10a23f72679b0 + checksum: 1b394d0be63400963fcecc0f50ef8554185d628f8c5b29f357656eaa9d6a52e40560ac8f34140fa7c7de15c13b910d7c0585a23e3e23bbf0068e94f7bcc4f382 languageName: node linkType: hard -"@storybook/addon-backgrounds@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-backgrounds@npm:7.6.4" +"@storybook/addon-backgrounds@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-backgrounds@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" memoizerific: "npm:^1.11.3" ts-dedent: "npm:^2.0.0" - checksum: 9747e4bac721c2dc27f3e80617036dd7251ba15a4b1d5c0325193e01d8052f213dd7f99c3b0f811da7eb7569e3dc54aaf0e14794d7755ea2f0a8e7b72f0c7528 + checksum: 3dab198f8bec8525e9ad0f31d9b8a98d4debb224ce81b91cd96199018de300cb08b36b337e580a532646db4de3580fee3606be4bf2f86867b1e02ec4bca54bff languageName: node linkType: hard -"@storybook/addon-controls@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-controls@npm:7.6.4" +"@storybook/addon-controls@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-controls@npm:7.6.10" dependencies: - "@storybook/blocks": "npm:7.6.4" + "@storybook/blocks": "npm:7.6.10" lodash: "npm:^4.17.21" ts-dedent: "npm:^2.0.0" - checksum: 9abd7669f7f2315c82337e72c62ece1ee7edfdf659fbffc085d3bce0addf515debe464b9211c6c7b722f8cfff1fd927b6027f7de47ff524ab5c2e7c370c6787c + checksum: 4af41964c74c8eeb2420a8922a1a2725efd7ea8d8a06a5c897885a3fc09cccaa05035738cff7089df352e345696ae6781ceef0e6e9626c749760bb2d5ad37513 languageName: node linkType: hard -"@storybook/addon-docs@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-docs@npm:7.6.4" +"@storybook/addon-docs@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-docs@npm:7.6.10" dependencies: "@jest/transform": "npm:^29.3.1" "@mdx-js/react": "npm:^2.1.5" - "@storybook/blocks": "npm:7.6.4" - "@storybook/client-logger": "npm:7.6.4" - "@storybook/components": "npm:7.6.4" - "@storybook/csf-plugin": "npm:7.6.4" - "@storybook/csf-tools": "npm:7.6.4" + "@storybook/blocks": "npm:7.6.10" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/components": "npm:7.6.10" + "@storybook/csf-plugin": "npm:7.6.10" + "@storybook/csf-tools": "npm:7.6.10" "@storybook/global": "npm:^5.0.0" "@storybook/mdx2-csf": "npm:^1.0.0" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/postinstall": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" - "@storybook/react-dom-shim": "npm:7.6.4" - "@storybook/theming": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/postinstall": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" + "@storybook/react-dom-shim": "npm:7.6.10" + "@storybook/theming": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" fs-extra: "npm:^11.1.0" remark-external-links: "npm:^8.0.0" remark-slug: "npm:^6.0.0" @@ -9175,95 +9175,95 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a5fa7ef509981778ebcc1930caac0250a6df031109dd9b7c60291f338a8379dcf2d9fb3040f938375cce42e2b55d8609fdc87a69a77ff887e9c824e9abd9f24f - languageName: node - linkType: hard - -"@storybook/addon-essentials@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-essentials@npm:7.6.4" - dependencies: - "@storybook/addon-actions": "npm:7.6.4" - "@storybook/addon-backgrounds": "npm:7.6.4" - "@storybook/addon-controls": "npm:7.6.4" - "@storybook/addon-docs": "npm:7.6.4" - "@storybook/addon-highlight": "npm:7.6.4" - "@storybook/addon-measure": "npm:7.6.4" - "@storybook/addon-outline": "npm:7.6.4" - "@storybook/addon-toolbars": "npm:7.6.4" - "@storybook/addon-viewport": "npm:7.6.4" - "@storybook/core-common": "npm:7.6.4" - "@storybook/manager-api": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" + checksum: d30f0cbd4f6edd454b47fad2ece36de0fe246d2b2a5b90f505ad76b9991dc8572822c758e0b48ae5f9d04b46581ebf9bd86d1ed257317d7453fe1cbc4d58cf93 + languageName: node + linkType: hard + +"@storybook/addon-essentials@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-essentials@npm:7.6.10" + dependencies: + "@storybook/addon-actions": "npm:7.6.10" + "@storybook/addon-backgrounds": "npm:7.6.10" + "@storybook/addon-controls": "npm:7.6.10" + "@storybook/addon-docs": "npm:7.6.10" + "@storybook/addon-highlight": "npm:7.6.10" + "@storybook/addon-measure": "npm:7.6.10" + "@storybook/addon-outline": "npm:7.6.10" + "@storybook/addon-toolbars": "npm:7.6.10" + "@storybook/addon-viewport": "npm:7.6.10" + "@storybook/core-common": "npm:7.6.10" + "@storybook/manager-api": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" ts-dedent: "npm:^2.0.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 0b75b2c2dbab5f0fbcd655ef319264b17333f35c85084cf0e7a20cc242ec0a2d78c7aaa2c7ba9ffc7e1459476bec1d5cb91ffdd14742310ceb24e32faed16eca + checksum: 4fdaac14b2b0be6ac6cfe7d43760cbffd6be612917c4f3f553512b655ef6460fe9f4734eccc85b0358ca1a51e8b0f82ce94f70866ac56729903e4626a0ee39ae languageName: node linkType: hard -"@storybook/addon-highlight@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-highlight@npm:7.6.4" +"@storybook/addon-highlight@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-highlight@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" - checksum: 7578f4d008eccb3ea4f3db09671c7728a1f77a5deacca93edec3d22a4de2ecaa119f19bb995917d0a00214c3bb6cc96446f4a66191c0cb5a4c5812524b55d494 + checksum: 879fa4723150fa1c0d7eb975144d0194571f1343c10c3b105032ecf1f678da8d1b65fa895b1e74b68f0770596fc90ca43c734b81b88b79722b63f726a66827fc languageName: node linkType: hard -"@storybook/addon-measure@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-measure@npm:7.6.4" +"@storybook/addon-measure@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-measure@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" tiny-invariant: "npm:^1.3.1" - checksum: e4dc046387a62c9b0e079b6ba899315fd681cf23648601afe641769b824f7ab03b452b95bf04ba3983e0ad3b05fdb18a2f6b906738cce63b2496223ec16e288f + checksum: ee5bcebfe1827fc290d8f26b673f3b209037c08b2e7f3711b581238bb9a58214ef318bd63f0ceb6ce162e0976260d5f880b73c72226da0ba5e6ec7a0777e282b languageName: node linkType: hard -"@storybook/addon-outline@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-outline@npm:7.6.4" +"@storybook/addon-outline@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-outline@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" ts-dedent: "npm:^2.0.0" - checksum: bbe65c41fcf4f556bfcdc75e18d072e138af5130a0e9328ed2c90857c441a7ed455d54ad85c8e892426c32fc787632284e6bc1c923f9da30082491011a2e2070 + checksum: 81fa670e385311a9430fc7037aa20a90bf8c5e8731c52cac2d0f575e893c24e8747e961267a4d4d72ba8bd440063d5cb7671d97527b1403fbd17cca2c79611b8 languageName: node linkType: hard -"@storybook/addon-toolbars@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-toolbars@npm:7.6.4" - checksum: fd7cfc6912a6e92303593a10fdcab2156a405011a2198ea542e64516864f9f5f284f3cee0894bc5a8d8d48d50a282c638ce3ae6553fa2619dc3f0211e08c16ac +"@storybook/addon-toolbars@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-toolbars@npm:7.6.10" + checksum: 876808b468b0baf60c275349fde43e12f3aa1a362d7b3d72f78f3ac63e54020b4999da21cee4a542c671cd01238da051c2ecbcf7ce05e063bdde801453230e2e languageName: node linkType: hard -"@storybook/addon-viewport@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/addon-viewport@npm:7.6.4" +"@storybook/addon-viewport@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/addon-viewport@npm:7.6.10" dependencies: memoizerific: "npm:^1.11.3" - checksum: 91481ce2c209f91bad7f35389b1348190ae11e150f56326189145b2136a59dc3c84e131211307aa8d7969652941bf510ad507f1f467d109bca7df28e5de07a64 + checksum: 97ee1bd3a64a715b0bbf28eeb430107fc02cf568d2e0a6f2b8b1ac161b8355a2e384de6a81ded98f08f9bd1f78329d928f3c73ff0556c57b8dc0684c05e5ed64 languageName: node linkType: hard -"@storybook/blocks@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/blocks@npm:7.6.4" +"@storybook/blocks@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/blocks@npm:7.6.10" dependencies: - "@storybook/channels": "npm:7.6.4" - "@storybook/client-logger": "npm:7.6.4" - "@storybook/components": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" + "@storybook/channels": "npm:7.6.10" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/components": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" "@storybook/csf": "npm:^0.1.2" - "@storybook/docs-tools": "npm:7.6.4" + "@storybook/docs-tools": "npm:7.6.10" "@storybook/global": "npm:^5.0.0" - "@storybook/manager-api": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" - "@storybook/theming": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/manager-api": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" + "@storybook/theming": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/lodash": "npm:^4.14.167" color-convert: "npm:^2.0.1" dequal: "npm:^2.0.2" @@ -9279,18 +9279,18 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: d16c2436a572a8c3588c497fee987e8751c3082e991fccb670f59b44e77cd8ba242adf61cc47d028e34525b62937f97e0c4d416b3ec6626a6b8c3de0a28acee9 + checksum: a24947dcfbfda75f1a2f5c07f1a2a35d98960ce985c4dde1520169020b40ba85192c25e61b31e104d739bfecc4b7f03e05e31c8954024f2a08e6c13a54b1acd1 languageName: node linkType: hard -"@storybook/builder-manager@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/builder-manager@npm:7.6.4" +"@storybook/builder-manager@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/builder-manager@npm:7.6.10" dependencies: "@fal-works/esbuild-plugin-global-externals": "npm:^2.1.2" - "@storybook/core-common": "npm:7.6.4" - "@storybook/manager": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" + "@storybook/core-common": "npm:7.6.10" + "@storybook/manager": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" "@types/ejs": "npm:^3.1.1" "@types/find-cache-dir": "npm:^3.2.1" "@yarnpkg/esbuild-plugin-pnp": "npm:^3.0.0-rc.10" @@ -9303,29 +9303,30 @@ __metadata: fs-extra: "npm:^11.1.0" process: "npm:^0.11.10" util: "npm:^0.12.4" - checksum: e03c4be8fabdcfe4f699249ce3f9cd3fb19b983fb2b7d74eacfb7708f4bc7a5fbfe45c910f8ec718825ec71b6bd3c6969b50f55aee2d950a9544a3f54f26e902 + checksum: 06294f7a54241b320c92a241812d4e8a36b6ecf7d76fe1befd855f8fae77f8545d1168f3f6f005a5224afdc788e529cf822162b31fcd9a172b271ae46f815d38 languageName: node linkType: hard -"@storybook/builder-webpack5@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/builder-webpack5@npm:7.6.4" +"@storybook/builder-webpack5@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/builder-webpack5@npm:7.6.10" dependencies: "@babel/core": "npm:^7.23.2" - "@storybook/channels": "npm:7.6.4" - "@storybook/client-logger": "npm:7.6.4" - "@storybook/core-common": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" - "@storybook/core-webpack": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/preview": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" + "@storybook/channels": "npm:7.6.10" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/core-common": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" + "@storybook/core-webpack": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/preview": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" "@swc/core": "npm:^1.3.82" "@types/node": "npm:^18.0.0" "@types/semver": "npm:^7.3.4" babel-loader: "npm:^9.0.0" browser-assert: "npm:^1.2.1" case-sensitive-paths-webpack-plugin: "npm:^2.4.0" + cjs-module-lexer: "npm:^1.2.3" constants-browserify: "npm:^1.0.0" css-loader: "npm:^6.7.1" es-module-lexer: "npm:^1.4.1" @@ -9351,40 +9352,40 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: da4fc48a7bf7d5b0e6149e6373c0eac828da16703ac1997948ba8a91f9d43971661a13ec5dd4bfb47599d8febf2eb07fa0ffc0616fe0ced72b7c1e82a8276d13 + checksum: 8771a1666d41d3318d5fbb34c5307ca75c3e526293cc9db8b915750526ea5f238c0e3368eb2980f9dc205f2b0f5c29263ed38238461591d006abeb9ab34efa60 languageName: node linkType: hard -"@storybook/channels@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/channels@npm:7.6.4" +"@storybook/channels@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/channels@npm:7.6.10" dependencies: - "@storybook/client-logger": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" "@storybook/global": "npm:^5.0.0" qs: "npm:^6.10.0" telejson: "npm:^7.2.0" tiny-invariant: "npm:^1.3.1" - checksum: ba97fed32104eef5985fc0dd930a453c46d95d8f81d42d6c0e0d604022e9de15b23ca81bcbfdac4a4903f7d5a28204c56c63b7a310018c1bfb165d0cafd15516 + checksum: 4c7522701fd4b0e2c6c9bca2513ff38f97cdbbaf4f9d3d3d02f3aafce4b7395151232aaa70af5b33b9c830008b6e7ab6149d16ab6b6bebcce4593dbb0c42aec2 languageName: node linkType: hard -"@storybook/cli@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/cli@npm:7.6.4" +"@storybook/cli@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/cli@npm:7.6.10" dependencies: "@babel/core": "npm:^7.23.2" "@babel/preset-env": "npm:^7.23.2" "@babel/types": "npm:^7.23.0" "@ndelangen/get-tarball": "npm:^3.0.7" - "@storybook/codemod": "npm:7.6.4" - "@storybook/core-common": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" - "@storybook/core-server": "npm:7.6.4" - "@storybook/csf-tools": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/telemetry": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/codemod": "npm:7.6.10" + "@storybook/core-common": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" + "@storybook/core-server": "npm:7.6.10" + "@storybook/csf-tools": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/telemetry": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/semver": "npm:^7.3.4" "@yarnpkg/fslib": "npm:2.10.3" "@yarnpkg/libzip": "npm:2.3.0" @@ -9409,7 +9410,6 @@ __metadata: puppeteer-core: "npm:^2.1.1" read-pkg-up: "npm:^7.0.1" semver: "npm:^7.3.7" - simple-update-notifier: "npm:^2.0.0" strip-json-comments: "npm:^3.0.1" tempy: "npm:^1.0.1" ts-dedent: "npm:^2.0.0" @@ -9417,30 +9417,30 @@ __metadata: bin: getstorybook: ./bin/index.js sb: ./bin/index.js - checksum: f67239b3341ae846129c92634ca00375a62bc03bc75f71b637e5fcf5f877e448c9ea9ec1a0df6e468164ddef35afce1230b3417c8a12eaf02b9f6848a7da369b + checksum: 7f6d5193f1fd7e2ff89189925e82f52bda1ada726d9cf368179e62e34d29fe9540c33a7f8df5e24340ce254a7743c78631dd6dc4469c33d565aaf015096ecd32 languageName: node linkType: hard -"@storybook/client-logger@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/client-logger@npm:7.6.4" +"@storybook/client-logger@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/client-logger@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" - checksum: d981bbc348ad870feacef869a049d6e1fff549b5a79da8ba4abeabd68922bfb632b4f221f4a6466673589a7d9661328c4918ff6cee0bb833f54169cfcc95a91d + checksum: 055ddeedb39a172c1d2f5ee3b3806c8a3fa1b060faea496520aecc513a79661498be1f08ab8720465054bc958910cfceb652b8a725a5254a33e6747a4eb5d869 languageName: node linkType: hard -"@storybook/codemod@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/codemod@npm:7.6.4" +"@storybook/codemod@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/codemod@npm:7.6.10" dependencies: "@babel/core": "npm:^7.23.2" "@babel/preset-env": "npm:^7.23.2" "@babel/types": "npm:^7.23.0" "@storybook/csf": "npm:^0.1.2" - "@storybook/csf-tools": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/csf-tools": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/cross-spawn": "npm:^6.0.2" cross-spawn: "npm:^7.0.3" globby: "npm:^11.0.2" @@ -9448,48 +9448,48 @@ __metadata: lodash: "npm:^4.17.21" prettier: "npm:^2.8.0" recast: "npm:^0.23.1" - checksum: 79c37ed82bfe8747632d1edc470facc4172ceb4ba271f6c24711d10b647b467ba5faf5a447d43b0dbd36ff1fe5c1d739e77f005d45849f7b6cf802bc5596f6e3 + checksum: f6073a99fd7f6cde73bfa3146642a8d1c131274c1c890e1a2c159e9b1442c767839b265e713145507195a1fa8c3b1b962bad4e79d689aa2edccf6805422552ee languageName: node linkType: hard -"@storybook/components@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/components@npm:7.6.4" +"@storybook/components@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/components@npm:7.6.10" dependencies: "@radix-ui/react-select": "npm:^1.2.2" "@radix-ui/react-toolbar": "npm:^1.0.4" - "@storybook/client-logger": "npm:7.6.4" + "@storybook/client-logger": "npm:7.6.10" "@storybook/csf": "npm:^0.1.2" "@storybook/global": "npm:^5.0.0" - "@storybook/theming": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/theming": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" memoizerific: "npm:^1.11.3" use-resize-observer: "npm:^9.1.0" util-deprecate: "npm:^1.0.2" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 374b3b9493ddb6952aecc37959b1a5927e055eb4fd26f3ad9df0d769d436c850ddac6e7722cd4b9ef40cbf33fc8e07ac80a73558605b11c2ee6d9f6d7fd543e8 + checksum: 1f8d9d22a0fc929cbc61704ee0234a0a3b31c163e250801022d9a6e896980963773b47840c26a55911afd2d52e0041a450458f9a9e7916cc34572287f40b2035 languageName: node linkType: hard -"@storybook/core-client@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/core-client@npm:7.6.4" +"@storybook/core-client@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/core-client@npm:7.6.10" dependencies: - "@storybook/client-logger": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" - checksum: fbc9ff4a873b5a646333d4a45ed27a77459fa7ddde417b5d6b417cf4065fdda6da5d0507c23d333c543fab9c888d9926d595a4ec2140a505eda014f9724881d4 + "@storybook/client-logger": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" + checksum: 15e27a56778789cfd2afe03a7722b6bc72302eb5aaea7f0d641008e3a01fa57f2651db5839c539f43cf42ac7783870be67f12411a56a763fa9f38ad74d8cd94c languageName: node linkType: hard -"@storybook/core-common@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/core-common@npm:7.6.4" +"@storybook/core-common@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/core-common@npm:7.6.10" dependencies: - "@storybook/core-events": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/core-events": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/find-cache-dir": "npm:^3.2.1" "@types/node": "npm:^18.0.0" "@types/node-fetch": "npm:^2.6.4" @@ -9510,38 +9510,38 @@ __metadata: pretty-hrtime: "npm:^1.0.3" resolve-from: "npm:^5.0.0" ts-dedent: "npm:^2.0.0" - checksum: 7923244037a29eb25dc8832805026568a23a499f38dadb1730192819abc871a54af5b2913793542e19981f7d95fb99abd5450eb4a4a1b89e5a8678fa01e911fe + checksum: 0d08aa5b36385ae323f4d4fb940954df90ac4d91ba4f5960d1287b23b43d51116ad92cd4037349f8aace1c0770aac39d2f7d6723e50cf9e79634ea2a42c990e8 languageName: node linkType: hard -"@storybook/core-events@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/core-events@npm:7.6.4" +"@storybook/core-events@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/core-events@npm:7.6.10" dependencies: ts-dedent: "npm:^2.0.0" - checksum: df87c293aaebb4cb9c8b723af955986a38ea34caaae37c5cad4c57e6d2de4085c99f675977824e9e953d5da33577e7cb38228f680ffcd35d3348e6ec00760f0d + checksum: 9432820a7742621f2eba58e4a121b9f00cf052977d059a32e4e9fe15e877b75c21b4ffd3c925138b59c18c06b3e3ef00c0e67ff3769ee3125e6423cec5a2bc91 languageName: node linkType: hard -"@storybook/core-server@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/core-server@npm:7.6.4" +"@storybook/core-server@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/core-server@npm:7.6.10" dependencies: "@aw-web-design/x-default-browser": "npm:1.4.126" "@discoveryjs/json-ext": "npm:^0.5.3" - "@storybook/builder-manager": "npm:7.6.4" - "@storybook/channels": "npm:7.6.4" - "@storybook/core-common": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" + "@storybook/builder-manager": "npm:7.6.10" + "@storybook/channels": "npm:7.6.10" + "@storybook/core-common": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" "@storybook/csf": "npm:^0.1.2" - "@storybook/csf-tools": "npm:7.6.4" + "@storybook/csf-tools": "npm:7.6.10" "@storybook/docs-mdx": "npm:^0.1.0" "@storybook/global": "npm:^5.0.0" - "@storybook/manager": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" - "@storybook/telemetry": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/manager": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" + "@storybook/telemetry": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/detect-port": "npm:^1.3.0" "@types/node": "npm:^18.0.0" "@types/pretty-hrtime": "npm:^1.0.0" @@ -9568,47 +9568,47 @@ __metadata: util-deprecate: "npm:^1.0.2" watchpack: "npm:^2.2.0" ws: "npm:^8.2.3" - checksum: 44cb88f04c6e192d9631adb8a5cfa2ea9fe44cdf93431f7b84248f91650e7b0ce3ea591053ca9f450ce933e348408e551c6402b9948c9373f21a4f796e896ac1 + checksum: 68e9f02f8e8d405c2cfa50d8eb343515ed93594d4035dbcb7951ae861eeacea22fed865fa2f6b793e804e8b4e252c38cf222aea4b9ef0e2a6b6c5b83f3449195 languageName: node linkType: hard -"@storybook/core-webpack@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/core-webpack@npm:7.6.4" +"@storybook/core-webpack@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/core-webpack@npm:7.6.10" dependencies: - "@storybook/core-common": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/core-common": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/node": "npm:^18.0.0" ts-dedent: "npm:^2.0.0" - checksum: e81210ab0abf1eb44dde8acf174dd69bb85a65158dbe25321300d42a02e7dd412105b8f631043bf90daa57877131bc5adc3050e1e159012b07b177a906313139 + checksum: e7b6a78921753a099bf6e53a990460f1b0b6103e9996490b6f323468cf2466282ec2513654f8aee6c38dbe1498b402ff6e79f009791b2cdadd53e34ccb9d4a35 languageName: node linkType: hard -"@storybook/csf-plugin@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/csf-plugin@npm:7.6.4" +"@storybook/csf-plugin@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/csf-plugin@npm:7.6.10" dependencies: - "@storybook/csf-tools": "npm:7.6.4" + "@storybook/csf-tools": "npm:7.6.10" unplugin: "npm:^1.3.1" - checksum: f88fb370ddaa185101707879291936e408f0336cfc949d319d3586804c58a567ebb0f4e860a8d36bdadbeb9462701e06fdb258e46399ee19f5602e6e621edfec + checksum: 82e5704db25b4fe41a0a5b6dacec5f01971aa0f69e8bf89f0b6f2867bbb935df986aec74aac2e69d568e53aa06fba45cde6cfa27885344db70bc587d923502bb languageName: node linkType: hard -"@storybook/csf-tools@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/csf-tools@npm:7.6.4" +"@storybook/csf-tools@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/csf-tools@npm:7.6.10" dependencies: "@babel/generator": "npm:^7.23.0" "@babel/parser": "npm:^7.23.0" "@babel/traverse": "npm:^7.23.2" "@babel/types": "npm:^7.23.0" "@storybook/csf": "npm:^0.1.2" - "@storybook/types": "npm:7.6.4" + "@storybook/types": "npm:7.6.10" fs-extra: "npm:^11.1.0" recast: "npm:^0.23.1" ts-dedent: "npm:^2.0.0" - checksum: e356689135a86c395d183326c8783abc2e771b9850eba2757312fbfe66e0e88818225c1b29f79f12c8135c460090e076180a9720dc35d0c6f60760fb01a7f460 + checksum: ab0d3ab39fb3a2c1b6e88f504ba23b42717c5186f4bf2222edd800f01f7f2ff781b8651d90e21a844c24b744ce3ffb25b176a619f866ed40c9db45ba5e3a0534 languageName: node linkType: hard @@ -9628,18 +9628,18 @@ __metadata: languageName: node linkType: hard -"@storybook/docs-tools@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/docs-tools@npm:7.6.4" +"@storybook/docs-tools@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/docs-tools@npm:7.6.10" dependencies: - "@storybook/core-common": "npm:7.6.4" - "@storybook/preview-api": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/core-common": "npm:7.6.10" + "@storybook/preview-api": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/doctrine": "npm:^0.0.3" assert: "npm:^2.1.0" doctrine: "npm:^3.0.0" lodash: "npm:^4.17.21" - checksum: db150df61534336a09ce9a95d4121e6b20028f160292d33d79786bb2edfb64d4abf6e0cf893875e097d63d60b20209e5e8b929749b56b883345caebb9d8ebbd3 + checksum: 6d4a7c8385589c9f9ee8bc3847c031452d22491bd6877e6112c241dbf8a1666cc7df3fd5eed09079d15eb6d01325d32b3db9b397e20328237fcc7ba0431d4d9f languageName: node linkType: hard @@ -9650,33 +9650,32 @@ __metadata: languageName: node linkType: hard -"@storybook/manager-api@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/manager-api@npm:7.6.4" +"@storybook/manager-api@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/manager-api@npm:7.6.10" dependencies: - "@storybook/channels": "npm:7.6.4" - "@storybook/client-logger": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" + "@storybook/channels": "npm:7.6.10" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" "@storybook/csf": "npm:^0.1.2" "@storybook/global": "npm:^5.0.0" - "@storybook/router": "npm:7.6.4" - "@storybook/theming": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/router": "npm:7.6.10" + "@storybook/theming": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" dequal: "npm:^2.0.2" lodash: "npm:^4.17.21" memoizerific: "npm:^1.11.3" - semver: "npm:^7.3.7" store2: "npm:^2.14.2" telejson: "npm:^7.2.0" ts-dedent: "npm:^2.0.0" - checksum: 180e8d0c3190ea29d3eef1da30eeaa7973d87990be700ce8f34106322477fb51e0665dcb063d15a21b91d53342075599a22e9144e24491dc686159ff5880ab40 + checksum: 99c2cdd18a581f7bc1adb2a167036f61ea72bf48df1c942dabf01674ffa1eb0be7caa96b4b2999a028b35b3bff745af37fc6c52e1f2f2581e8492164c97398e2 languageName: node linkType: hard -"@storybook/manager@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/manager@npm:7.6.4" - checksum: 98ab523b39478a80d7fcb88bbb130350d86e268c4108103adb8519530f60b72ab39a7ef4d1f39ebc60ebb411719e1cdc7a3c7cfeb78266abab5e00e5c2b85a26 +"@storybook/manager@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/manager@npm:7.6.10" + checksum: c5e6c2ca8c016d2d2b9482f2b72a63718850929993d50eca1d30e0b24b54b25986416deda2dd52fe6c36aaa41498a66066844dfa3bac4db6a2f112789e8607ef languageName: node linkType: hard @@ -9687,31 +9686,31 @@ __metadata: languageName: node linkType: hard -"@storybook/node-logger@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/node-logger@npm:7.6.4" - checksum: 7231e3284ed8c8583940b54b6f4d04d10a7a5027e510885bfd15ee1ce3cb786fe7e6d994938e7b6182a338d78b6ce639eedf10fe0793a80a7b47e183c61eef4e +"@storybook/node-logger@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/node-logger@npm:7.6.10" + checksum: 6e1946d48c1ed756c3c0a8b082ece63d1e3bd437afdd3abc711ebd68ed913af7e50b3f6b1f79f8b8b94b07e3d3f8bd8adccd42aac9b5c6f886557dd21a0a947e languageName: node linkType: hard -"@storybook/postinstall@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/postinstall@npm:7.6.4" - checksum: 8d75602655eca66f80ea2703b833178f14e9317daf7c975f1fac3287ded389e11f899b5345a00d241a2a05c9955d23c0714f5b7e9613879e147f1d32821a16fd +"@storybook/postinstall@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/postinstall@npm:7.6.10" + checksum: 54b1b0712dbe9091e07e35b52a6fc2a06ca40550df1674182f0b819491aea4e232cb605c03ef460b74b04bf5dc331a1b6cd47e8d27d9bcadc61819e136d0ec2e languageName: node linkType: hard -"@storybook/preset-react-webpack@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/preset-react-webpack@npm:7.6.4" +"@storybook/preset-react-webpack@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/preset-react-webpack@npm:7.6.10" dependencies: "@babel/preset-flow": "npm:^7.22.15" "@babel/preset-react": "npm:^7.22.15" "@pmmmwh/react-refresh-webpack-plugin": "npm:^0.5.11" - "@storybook/core-webpack": "npm:7.6.4" - "@storybook/docs-tools": "npm:7.6.4" - "@storybook/node-logger": "npm:7.6.4" - "@storybook/react": "npm:7.6.4" + "@storybook/core-webpack": "npm:7.6.10" + "@storybook/docs-tools": "npm:7.6.10" + "@storybook/node-logger": "npm:7.6.10" + "@storybook/react": "npm:7.6.10" "@storybook/react-docgen-typescript-plugin": "npm:1.0.6--canary.9.0c3f3b7.0" "@types/node": "npm:^18.0.0" "@types/semver": "npm:^7.3.4" @@ -9731,20 +9730,20 @@ __metadata: optional: true typescript: optional: true - checksum: eb5cf3bef11ae78bc073c84d005c260bdd66a0cd6b2b563825dd82f13290d9310dadcc17740022ad9a2786bdd6770423b4f90c598d23888991880f05811459c6 + checksum: 25b4ad5650c5a73a9b4502d0b275760d9c9ad1b0b28357f5eda3659020bba411719765790c373930edcf80bc9c7cc845cb5d8ec5626bd978cdfa7db466a5b261 languageName: node linkType: hard -"@storybook/preview-api@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/preview-api@npm:7.6.4" +"@storybook/preview-api@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/preview-api@npm:7.6.10" dependencies: - "@storybook/channels": "npm:7.6.4" - "@storybook/client-logger": "npm:7.6.4" - "@storybook/core-events": "npm:7.6.4" + "@storybook/channels": "npm:7.6.10" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/core-events": "npm:7.6.10" "@storybook/csf": "npm:^0.1.2" "@storybook/global": "npm:^5.0.0" - "@storybook/types": "npm:7.6.4" + "@storybook/types": "npm:7.6.10" "@types/qs": "npm:^6.9.5" dequal: "npm:^2.0.2" lodash: "npm:^4.17.21" @@ -9753,14 +9752,14 @@ __metadata: synchronous-promise: "npm:^2.0.15" ts-dedent: "npm:^2.0.0" util-deprecate: "npm:^1.0.2" - checksum: 7577f8076d78238ff1b997dc2b8e306211a2181ed8c5b11b421a79731032cfec68d5ba2c9f1e2ec8e0858c11ef8e08ee61c34650363a28aba98bbb2e24a20654 + checksum: 57d82b807e5d20e6582f0ebd38d0edda393f9712c71aabad16b72567e8978d005e5bf3d8470a8a64ad49b7929bf4ef67f172c66797375273e64fa26db542aabf languageName: node linkType: hard -"@storybook/preview@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/preview@npm:7.6.4" - checksum: 149c914dce7e4e3842ab8d6f2278af1af259243773afc4bfe013eae8a9d965640d0aac9d61869fa5d87fba5391056da8b9db4eb6023a0ff144bf1abdf0c27c43 +"@storybook/preview@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/preview@npm:7.6.10" + checksum: 519dd85d1c560ee4aa960c4fe9354c5ba5a51eca711bc498f55e5b846860352da53c27939982ab79edebafa4fcb2c7465ccb6e25ba15e5c699d8ed48e6499b8c languageName: node linkType: hard @@ -9782,23 +9781,23 @@ __metadata: languageName: node linkType: hard -"@storybook/react-dom-shim@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/react-dom-shim@npm:7.6.4" +"@storybook/react-dom-shim@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/react-dom-shim@npm:7.6.10" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: b173fbb3fddf6154fecd14e38a404b878df3e6a81cf623ee0b4ea5923d0cf9169677d75b0b324966388d2c927cad4dc7f6dd7442c889126492ed0d8609820094 + checksum: 4626bfa823440f142835e9a7750a1e6aeeb573ba80eb94d42435814168b52288dc0dd79373ebe54699107f2a7b6d0f10f76fac786e17c9208dbec47ef73806a0 languageName: node linkType: hard -"@storybook/react-webpack5@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/react-webpack5@npm:7.6.4" +"@storybook/react-webpack5@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/react-webpack5@npm:7.6.10" dependencies: - "@storybook/builder-webpack5": "npm:7.6.4" - "@storybook/preset-react-webpack": "npm:7.6.4" - "@storybook/react": "npm:7.6.4" + "@storybook/builder-webpack5": "npm:7.6.10" + "@storybook/preset-react-webpack": "npm:7.6.10" + "@storybook/react": "npm:7.6.10" "@types/node": "npm:^18.0.0" peerDependencies: "@babel/core": ^7.22.0 @@ -9810,21 +9809,21 @@ __metadata: optional: true typescript: optional: true - checksum: 625d2acf43f7326e802e5f4c37d86c9fac5b172160ef78ac004de6fb53a403046dd4be1fcb61e382b4347e8e5b43c39b538b2c87e6be67639c5f7bda6726b598 + checksum: 9406f464f0fcfb9c226b1b962194e06b9445527bd2d6c0e6e99074d4174b69992fb99b8d2e069977030c879cf4296c6ea0cc6675e0022cc51f9c54f05fe2ca07 languageName: node linkType: hard -"@storybook/react@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/react@npm:7.6.4" +"@storybook/react@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/react@npm:7.6.10" dependencies: - "@storybook/client-logger": "npm:7.6.4" - "@storybook/core-client": "npm:7.6.4" - "@storybook/docs-tools": "npm:7.6.4" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/core-client": "npm:7.6.10" + "@storybook/docs-tools": "npm:7.6.10" "@storybook/global": "npm:^5.0.0" - "@storybook/preview-api": "npm:7.6.4" - "@storybook/react-dom-shim": "npm:7.6.4" - "@storybook/types": "npm:7.6.4" + "@storybook/preview-api": "npm:7.6.10" + "@storybook/react-dom-shim": "npm:7.6.10" + "@storybook/types": "npm:7.6.10" "@types/escodegen": "npm:^0.0.6" "@types/estree": "npm:^0.0.51" "@types/node": "npm:^18.0.0" @@ -9846,61 +9845,61 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: fbca191940cb9cb3db066882bafd17a8d9627491b597f7729da6aa909c7c8f6c095431fa12372c1e4c0e6dc1e2ae5888a3c702efdcf99311814a5a6b555b58ea + checksum: eabdeb5420a24b4fe7b80d31ae4eb9a230af68f16e57117eccb08adea785c623f4863afd97596329d77992e550dc64490871dad65d9b1e2c3e64d3d4e7f3046e languageName: node linkType: hard -"@storybook/router@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/router@npm:7.6.4" +"@storybook/router@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/router@npm:7.6.10" dependencies: - "@storybook/client-logger": "npm:7.6.4" + "@storybook/client-logger": "npm:7.6.10" memoizerific: "npm:^1.11.3" qs: "npm:^6.10.0" - checksum: 1297d011e18d24d17e1a0f319a40ee3102c1bdbf3b79af048e719284f22ab59b6a433898baacf5f78c0e4b79d9b38361476005eca8f8f2e2a5789c13f3401869 + checksum: 3899b7aa525243ce57f26621d9e5602d7168887d26a98c03b0cc935c8fd98d17ec6dde3cca34226f8fe29f5f292b1fa329e762a4a6a75edbe87592512640705e languageName: node linkType: hard -"@storybook/telemetry@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/telemetry@npm:7.6.4" +"@storybook/telemetry@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/telemetry@npm:7.6.10" dependencies: - "@storybook/client-logger": "npm:7.6.4" - "@storybook/core-common": "npm:7.6.4" - "@storybook/csf-tools": "npm:7.6.4" + "@storybook/client-logger": "npm:7.6.10" + "@storybook/core-common": "npm:7.6.10" + "@storybook/csf-tools": "npm:7.6.10" chalk: "npm:^4.1.0" detect-package-manager: "npm:^2.0.1" fetch-retry: "npm:^5.0.2" fs-extra: "npm:^11.1.0" read-pkg-up: "npm:^7.0.1" - checksum: 5647f049c1977693b5fb5ae0bcde9e7ee307e715a8f4b4832e32026cb9b8e62e74f7f28efe92d05dfde132964af22421bcad3908cd436862421817b4e17887ff + checksum: a0cc6b2b4979cf91917f21e200bb58e29080d252c86e4ea58f7776e6991fc9ff8f1e43122caa87e80b630a43630da2b16e451cb5cd903f3554ff531e9764052e languageName: node linkType: hard -"@storybook/theming@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/theming@npm:7.6.4" +"@storybook/theming@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/theming@npm:7.6.10" dependencies: "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.0" - "@storybook/client-logger": "npm:7.6.4" + "@storybook/client-logger": "npm:7.6.10" "@storybook/global": "npm:^5.0.0" memoizerific: "npm:^1.11.3" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a4061353568cd242c527e6c52afe5cf731e0aeaff31c49bdb0ff4e7f3c173faea9f8baf28ee01976aa8212ceef38bacb2946cf3e3e560083e7cdc4ec1187e357 + checksum: 999bd56a2914d247c82c6b723eb3244e34add13d6c504c8913dbfdb6e5b16144e12e4d9ceba2371e69ba374498117dbc39c609c78fb58375459dcf62e84f31e8 languageName: node linkType: hard -"@storybook/types@npm:7.6.4": - version: 7.6.4 - resolution: "@storybook/types@npm:7.6.4" +"@storybook/types@npm:7.6.10": + version: 7.6.10 + resolution: "@storybook/types@npm:7.6.10" dependencies: - "@storybook/channels": "npm:7.6.4" + "@storybook/channels": "npm:7.6.10" "@types/babel__core": "npm:^7.0.0" "@types/express": "npm:^4.7.0" file-system-cache: "npm:2.3.0" - checksum: 95c4f9cc4c28112b38879d49340de204c4cb24a9b39e31b7184d0c64cb9a6c095829be2bb121d9e80f5726c8206f105e13f86cfc46b1d6b991d3f446b3cbf154 + checksum: 21a8a3a0820ce934467860c10a170d1abd49dc1a005003a07cc2674cf0f53e188c031b7800573d96debe8c248431d87d543b6d631ab1252554d42e10215a912d languageName: node linkType: hard @@ -14816,7 +14815,7 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0": +"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.3": version: 1.2.3 resolution: "cjs-module-lexer@npm:1.2.3" checksum: 0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab @@ -30705,15 +30704,15 @@ __metadata: languageName: node linkType: hard -"storybook@npm:7.6.4": - version: 7.6.4 - resolution: "storybook@npm:7.6.4" +"storybook@npm:7.6.10": + version: 7.6.10 + resolution: "storybook@npm:7.6.10" dependencies: - "@storybook/cli": "npm:7.6.4" + "@storybook/cli": "npm:7.6.10" bin: sb: ./index.js storybook: ./index.js - checksum: f6a3e80345faee6ffe6e607fb12f59d2b6fd5a23cf12c14e1897f261c7514d5ad6a9ed5a9263ad74e2ccffb81961087304124da1e6414892cf2f7559bc20a19f + checksum: 1bfa9f355ff45755153b8edeb31917469cd765961b4a2213432934118c5199b30e01673b264601077758f7a886e62cb56aa1e73ee9901aeaf2fcca190e093a04 languageName: node linkType: hard From 6b2b3e7b16e9b0624edb98eb51de23a950d01619 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 23:35:12 +0000 Subject: [PATCH 035/119] chore(deps): update dependency vitest to v1.2.2 (#9915) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [vitest](https://togithub.com/vitest-dev/vitest) ([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`1.2.1` -> `1.2.2`](https://renovatebot.com/diffs/npm/vitest/1.2.1/1.2.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/1.2.1/1.2.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
vitest-dev/vitest (vitest) ### [`v1.2.2`](https://togithub.com/vitest-dev/vitest/releases/tag/v1.2.2) [Compare Source](https://togithub.com/vitest-dev/vitest/compare/v1.2.1...v1.2.2) #####    🐞 Bug Fixes - **coverage**: - Remove `coverage/.tmp` files after run  -  by [@​AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5008](https://togithub.com/vitest-dev/vitest/issues/5008) [(d53b8)](https://togithub.com/vitest-dev/vitest/commit/d53b8580) - Don't crash when re-run removes earlier run's reports  -  by [@​AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5022](https://togithub.com/vitest-dev/vitest/issues/5022) [(66898)](https://togithub.com/vitest-dev/vitest/commit/6689856f) - **expect**: - Improve `toThrow(asymmetricMatcher)` failure message  -  by [@​hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5000](https://togithub.com/vitest-dev/vitest/issues/5000) [(a199a)](https://togithub.com/vitest-dev/vitest/commit/a199ac2d) - **forks**: - Set correct `VITEST_POOL_ID`  -  by [@​AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5002](https://togithub.com/vitest-dev/vitest/issues/5002) [(7d0a4)](https://togithub.com/vitest-dev/vitest/commit/7d0a4692) - **threads**: - Mention common work-around for the logged error  -  by [@​AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5024](https://togithub.com/vitest-dev/vitest/issues/5024) [(915d6)](https://togithub.com/vitest-dev/vitest/commit/915d6c43) - **typecheck**: - Fix `ignoreSourceErrors` in run mode  -  by [@​hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5044](https://togithub.com/vitest-dev/vitest/issues/5044) [(6dae3)](https://togithub.com/vitest-dev/vitest/commit/6dae3feb) - **vite-node**: - Provide import.meta.filename and dirname  -  by [@​sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5011](https://togithub.com/vitest-dev/vitest/issues/5011) [(73148)](https://togithub.com/vitest-dev/vitest/commit/73148575) - **vitest**: - Expose getHooks & setHooks  -  by [@​adriencaccia](https://togithub.com/adriencaccia) in [https://github.com/vitest-dev/vitest/issues/5032](https://togithub.com/vitest-dev/vitest/issues/5032) [(73448)](https://togithub.com/vitest-dev/vitest/commit/73448706) - Test deep dependencies change detection  -  by [@​blake-newman](https://togithub.com/blake-newman) in [https://github.com/vitest-dev/vitest/issues/4934](https://togithub.com/vitest-dev/vitest/issues/4934) [(9c7c0)](https://togithub.com/vitest-dev/vitest/commit/9c7c0fc9) - Throw an error if vi.mock is exported  -  by [@​sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5034](https://togithub.com/vitest-dev/vitest/issues/5034) [(253df)](https://togithub.com/vitest-dev/vitest/commit/253df1cc) - Allow `useFakeTimers` to fake `requestIdleCallback` on non browser  -  by [@​hi-ogawa](https://togithub.com/hi-ogawa) in [https://github.com/vitest-dev/vitest/issues/5028](https://togithub.com/vitest-dev/vitest/issues/5028) [(a9a48)](https://togithub.com/vitest-dev/vitest/commit/a9a486f2) - Support older NodeJS with async `import.meta.resolve`  -  by [@​AriPerkkio](https://togithub.com/AriPerkkio) in [https://github.com/vitest-dev/vitest/issues/5045](https://togithub.com/vitest-dev/vitest/issues/5045) [(cf564)](https://togithub.com/vitest-dev/vitest/commit/cf5641a9) - Don't throw an error if mocked file was already imported  -  by [@​sheremet-va](https://togithub.com/sheremet-va) in [https://github.com/vitest-dev/vitest/issues/5050](https://togithub.com/vitest-dev/vitest/issues/5050) [(fff1a)](https://togithub.com/vitest-dev/vitest/commit/fff1a270) #####     [View changes on GitHub](https://togithub.com/vitest-dev/vitest/compare/v1.2.1...v1.2.2)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/adapters/fastify/web/package.json | 2 +- packages/api/package.json | 2 +- .../auth-providers/auth0/api/package.json | 2 +- .../auth-providers/auth0/setup/package.json | 2 +- .../auth-providers/auth0/web/package.json | 2 +- .../azureActiveDirectory/api/package.json | 2 +- .../azureActiveDirectory/setup/package.json | 2 +- .../azureActiveDirectory/web/package.json | 2 +- .../auth-providers/clerk/api/package.json | 2 +- .../auth-providers/clerk/web/package.json | 2 +- .../auth-providers/custom/setup/package.json | 2 +- .../auth-providers/dbAuth/api/package.json | 2 +- .../auth-providers/firebase/api/package.json | 2 +- .../firebase/setup/package.json | 2 +- .../auth-providers/netlify/api/package.json | 2 +- .../auth-providers/netlify/setup/package.json | 2 +- .../auth-providers/netlify/web/package.json | 2 +- .../auth-providers/supabase/api/package.json | 2 +- .../auth-providers/supabase/web/package.json | 2 +- .../supertokens/api/package.json | 2 +- .../supertokens/setup/package.json | 2 +- .../supertokens/web/package.json | 2 +- packages/cli-helpers/package.json | 2 +- packages/cli/package.json | 2 +- packages/create-redwood-app/package.json | 2 +- packages/mailer/core/package.json | 2 +- packages/project-config/package.json | 2 +- packages/record/package.json | 2 +- packages/structure/package.json | 2 +- packages/telemetry/package.json | 2 +- packages/vite/package.json | 2 +- yarn.lock | 142 +++++++++--------- 33 files changed, 103 insertions(+), 103 deletions(-) diff --git a/package.json b/package.json index 8fe9344b8f1a..6be50da9af37 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "tstyche": "1.0.0-beta.9", "tsx": "4.6.2", "typescript": "5.3.3", - "vitest": "1.2.1", + "vitest": "1.2.2", "yargs": "17.7.2", "zx": "7.2.3" }, diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index 7bce3ca7735a..5fff5b85e3d9 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -39,7 +39,7 @@ "devDependencies": { "fastify": "4.24.3", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/api/package.json b/packages/api/package.json index 82132b8363d9..c8749e0b2893 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -55,7 +55,7 @@ "split2": "4.2.0", "ts-toolbelt": "9.6.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "memjs": "1.3.1", diff --git a/packages/auth-providers/auth0/api/package.json b/packages/auth-providers/auth0/api/package.json index 444a30091c7c..ba2a913a79e1 100644 --- a/packages/auth-providers/auth0/api/package.json +++ b/packages/auth-providers/auth0/api/package.json @@ -34,7 +34,7 @@ "@redwoodjs/api": "6.0.7", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/auth0/setup/package.json b/packages/auth-providers/auth0/setup/package.json index fbf60779dac9..9180232405be 100644 --- a/packages/auth-providers/auth0/setup/package.json +++ b/packages/auth-providers/auth0/setup/package.json @@ -32,7 +32,7 @@ "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/auth0/web/package.json b/packages/auth-providers/auth0/web/package.json index 383502fda6a1..f406a675ad4d 100644 --- a/packages/auth-providers/auth0/web/package.json +++ b/packages/auth-providers/auth0/web/package.json @@ -34,7 +34,7 @@ "@types/react": "18.2.37", "react": "18.2.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "@auth0/auth0-spa-js": "2.1.2" diff --git a/packages/auth-providers/azureActiveDirectory/api/package.json b/packages/auth-providers/azureActiveDirectory/api/package.json index 9dc51a22c714..6759c819fa61 100644 --- a/packages/auth-providers/azureActiveDirectory/api/package.json +++ b/packages/auth-providers/azureActiveDirectory/api/package.json @@ -35,7 +35,7 @@ "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/azureActiveDirectory/setup/package.json b/packages/auth-providers/azureActiveDirectory/setup/package.json index 8344f8f538ae..46178db54857 100644 --- a/packages/auth-providers/azureActiveDirectory/setup/package.json +++ b/packages/auth-providers/azureActiveDirectory/setup/package.json @@ -32,7 +32,7 @@ "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/azureActiveDirectory/web/package.json b/packages/auth-providers/azureActiveDirectory/web/package.json index bddd4caaf12b..d607ab2adeb0 100644 --- a/packages/auth-providers/azureActiveDirectory/web/package.json +++ b/packages/auth-providers/azureActiveDirectory/web/package.json @@ -35,7 +35,7 @@ "@types/react": "18.2.37", "react": "18.2.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "@azure/msal-browser": "2.38.3" diff --git a/packages/auth-providers/clerk/api/package.json b/packages/auth-providers/clerk/api/package.json index e4a9964e09d1..cbf8089af707 100644 --- a/packages/auth-providers/clerk/api/package.json +++ b/packages/auth-providers/clerk/api/package.json @@ -33,7 +33,7 @@ "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/clerk/web/package.json b/packages/auth-providers/clerk/web/package.json index b53f682e97a9..4f618a3c71f4 100644 --- a/packages/auth-providers/clerk/web/package.json +++ b/packages/auth-providers/clerk/web/package.json @@ -35,7 +35,7 @@ "@types/react": "18.2.37", "react": "18.2.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "@clerk/clerk-react": "4.28.3" diff --git a/packages/auth-providers/custom/setup/package.json b/packages/auth-providers/custom/setup/package.json index 8cb5e56259b4..007bb3d3bb6d 100644 --- a/packages/auth-providers/custom/setup/package.json +++ b/packages/auth-providers/custom/setup/package.json @@ -32,7 +32,7 @@ "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/dbAuth/api/package.json b/packages/auth-providers/dbAuth/api/package.json index 2272965389fa..a49cb638969e 100644 --- a/packages/auth-providers/dbAuth/api/package.json +++ b/packages/auth-providers/dbAuth/api/package.json @@ -38,7 +38,7 @@ "@types/md5": "2.3.5", "@types/uuid": "9.0.7", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/firebase/api/package.json b/packages/auth-providers/firebase/api/package.json index cfc743c3b731..8aafbc7533ab 100644 --- a/packages/auth-providers/firebase/api/package.json +++ b/packages/auth-providers/firebase/api/package.json @@ -33,7 +33,7 @@ "@redwoodjs/api": "6.0.7", "@types/aws-lambda": "8.10.126", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/firebase/setup/package.json b/packages/auth-providers/firebase/setup/package.json index af71ae08e121..be1438dc1736 100644 --- a/packages/auth-providers/firebase/setup/package.json +++ b/packages/auth-providers/firebase/setup/package.json @@ -32,7 +32,7 @@ "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/netlify/api/package.json b/packages/auth-providers/netlify/api/package.json index d4ca87e01641..2a8737cceefd 100644 --- a/packages/auth-providers/netlify/api/package.json +++ b/packages/auth-providers/netlify/api/package.json @@ -34,7 +34,7 @@ "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/netlify/setup/package.json b/packages/auth-providers/netlify/setup/package.json index 9640fe1ed982..a649b1365893 100644 --- a/packages/auth-providers/netlify/setup/package.json +++ b/packages/auth-providers/netlify/setup/package.json @@ -32,7 +32,7 @@ "@babel/core": "^7.22.20", "@types/yargs": "17.0.32", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/netlify/web/package.json b/packages/auth-providers/netlify/web/package.json index 5865314c2378..0f160b714992 100644 --- a/packages/auth-providers/netlify/web/package.json +++ b/packages/auth-providers/netlify/web/package.json @@ -34,7 +34,7 @@ "@types/react": "18.2.37", "react": "18.2.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "netlify-identity-widget": "1.9.2" diff --git a/packages/auth-providers/supabase/api/package.json b/packages/auth-providers/supabase/api/package.json index 259f51e0f915..53c6ae4450b4 100644 --- a/packages/auth-providers/supabase/api/package.json +++ b/packages/auth-providers/supabase/api/package.json @@ -34,7 +34,7 @@ "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/supabase/web/package.json b/packages/auth-providers/supabase/web/package.json index a096f5224840..31896464e9df 100644 --- a/packages/auth-providers/supabase/web/package.json +++ b/packages/auth-providers/supabase/web/package.json @@ -33,7 +33,7 @@ "@types/react": "18.2.37", "react": "18.2.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "@supabase/supabase-js": "2.39.0" diff --git a/packages/auth-providers/supertokens/api/package.json b/packages/auth-providers/supertokens/api/package.json index c2a9c026337f..31ac9b93a154 100644 --- a/packages/auth-providers/supertokens/api/package.json +++ b/packages/auth-providers/supertokens/api/package.json @@ -34,7 +34,7 @@ "@redwoodjs/api": "6.0.7", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "supertokens-node": "15.2.1" diff --git a/packages/auth-providers/supertokens/setup/package.json b/packages/auth-providers/supertokens/setup/package.json index 36803e8b7a77..b1de165d4a5b 100644 --- a/packages/auth-providers/supertokens/setup/package.json +++ b/packages/auth-providers/supertokens/setup/package.json @@ -33,7 +33,7 @@ "@types/yargs": "17.0.32", "memfs": "4.6.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/auth-providers/supertokens/web/package.json b/packages/auth-providers/supertokens/web/package.json index f77ec0ffd622..91a15bb7d269 100644 --- a/packages/auth-providers/supertokens/web/package.json +++ b/packages/auth-providers/supertokens/web/package.json @@ -34,7 +34,7 @@ "react": "18.2.0", "supertokens-auth-react": "0.34.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "peerDependencies": { "supertokens-auth-react": "0.34.0" diff --git a/packages/cli-helpers/package.json b/packages/cli-helpers/package.json index 7dbbab87b260..0606eba890a7 100644 --- a/packages/cli-helpers/package.json +++ b/packages/cli-helpers/package.json @@ -47,7 +47,7 @@ "@types/pascalcase": "1.0.3", "@types/yargs": "17.0.32", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/cli/package.json b/packages/cli/package.json index 52e27758b136..7134c86a10bd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -91,7 +91,7 @@ "@types/archiver": "^6", "memfs": "4.6.0", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/create-redwood-app/package.json b/packages/create-redwood-app/package.json index 951c59d2ed98..7317e7e525e4 100644 --- a/packages/create-redwood-app/package.json +++ b/packages/create-redwood-app/package.json @@ -46,7 +46,7 @@ "terminal-link": "2.1.1", "untildify": "4.0.0", "uuid": "9.0.1", - "vitest": "1.2.1", + "vitest": "1.2.2", "yargs": "17.7.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/core/package.json b/packages/mailer/core/package.json index 58a9a4975b15..8da5f9a62b07 100644 --- a/packages/mailer/core/package.json +++ b/packages/mailer/core/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@redwoodjs/api": "6.0.7", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/project-config/package.json b/packages/project-config/package.json index e6d3d8748126..4395e6d6116e 100644 --- a/packages/project-config/package.json +++ b/packages/project-config/package.json @@ -35,7 +35,7 @@ "devDependencies": { "rimraf": "5.0.5", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/record/package.json b/packages/record/package.json index d9d1d7614c99..9b30720a1cf2 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -33,7 +33,7 @@ "@babel/core": "^7.22.20", "@prisma/internals": "5.8.1", "esbuild": "0.20.0", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/structure/package.json b/packages/structure/package.json index 0bacb1e6029a..437a5d156a1e 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -58,7 +58,7 @@ "@types/node": "20.10.4", "@types/vscode": "1.79.1", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 56d2daef708d..d21d48be88db 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -39,7 +39,7 @@ "@types/envinfo": "7.8.3", "@types/uuid": "9.0.7", "@types/yargs": "17.0.32", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/vite/package.json b/packages/vite/package.json index b467a6fa7cde..90b33f244047 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -41,7 +41,7 @@ "@types/yargs-parser": "21.0.3", "glob": "10.3.10", "typescript": "5.3.3", - "vitest": "1.2.1" + "vitest": "1.2.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/yarn.lock b/yarn.lock index 16da61d83313..9b888acac99a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7484,7 +7484,7 @@ __metadata: title-case: "npm:3.0.3" ts-toolbelt: "npm:9.6.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: memjs: 1.3.1 redis: 4.6.7 @@ -7514,7 +7514,7 @@ __metadata: jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7529,7 +7529,7 @@ __metadata: "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7546,7 +7546,7 @@ __metadata: core-js: "npm:3.34.0" react: "npm:18.2.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: "@auth0/auth0-spa-js": 2.1.2 languageName: unknown @@ -7566,7 +7566,7 @@ __metadata: jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7581,7 +7581,7 @@ __metadata: "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7599,7 +7599,7 @@ __metadata: core-js: "npm:3.34.0" react: "npm:18.2.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: "@azure/msal-browser": 2.38.3 languageName: unknown @@ -7617,7 +7617,7 @@ __metadata: "@types/aws-lambda": "npm:8.10.126" core-js: "npm:3.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7649,7 +7649,7 @@ __metadata: core-js: "npm:3.34.0" react: "npm:18.2.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: "@clerk/clerk-react": 4.28.3 languageName: unknown @@ -7666,7 +7666,7 @@ __metadata: "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7687,7 +7687,7 @@ __metadata: md5: "npm:2.3.0" typescript: "npm:5.3.3" uuid: "npm:9.0.1" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7739,7 +7739,7 @@ __metadata: core-js: "npm:3.34.0" firebase-admin: "npm:11.11.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7754,7 +7754,7 @@ __metadata: "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7790,7 +7790,7 @@ __metadata: core-js: "npm:3.34.0" jsonwebtoken: "npm:9.0.2" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7805,7 +7805,7 @@ __metadata: "@types/yargs": "npm:17.0.32" core-js: "npm:3.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7822,7 +7822,7 @@ __metadata: core-js: "npm:3.34.0" react: "npm:18.2.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: netlify-identity-widget: 1.9.2 languageName: unknown @@ -7841,7 +7841,7 @@ __metadata: core-js: "npm:3.34.0" jsonwebtoken: "npm:9.0.2" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7871,7 +7871,7 @@ __metadata: core-js: "npm:3.34.0" react: "npm:18.2.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: "@supabase/supabase-js": 2.39.0 languageName: unknown @@ -7890,7 +7890,7 @@ __metadata: jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: supertokens-node: 15.2.1 languageName: unknown @@ -7908,7 +7908,7 @@ __metadata: core-js: "npm:3.34.0" memfs: "npm:4.6.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -7925,7 +7925,7 @@ __metadata: react: "npm:18.2.0" supertokens-auth-react: "npm:0.34.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" peerDependencies: supertokens-auth-react: 0.34.0 languageName: unknown @@ -8027,7 +8027,7 @@ __metadata: prompts: "npm:2.4.2" terminal-link: "npm:2.1.1" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -8115,7 +8115,7 @@ __metadata: title-case: "npm:3.0.3" typescript: "npm:5.3.3" uuid: "npm:9.0.1" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" yargs: "npm:17.7.2" bin: redwood: ./dist/index.js @@ -8286,7 +8286,7 @@ __metadata: fast-glob: "npm:3.3.2" fastify: "npm:4.24.3" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -8443,7 +8443,7 @@ __metadata: dependencies: "@redwoodjs/api": "npm:6.0.7" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -8549,7 +8549,7 @@ __metadata: rimraf: "npm:5.0.5" string-env-interpolation: "npm:1.0.1" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -8594,7 +8594,7 @@ __metadata: "@redwoodjs/project-config": "npm:6.0.7" core-js: "npm:3.34.0" esbuild: "npm:0.20.0" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" languageName: unknown linkType: soft @@ -8652,7 +8652,7 @@ __metadata: proxyquire: "npm:2.1.3" ts-morph: "npm:15.1.0" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" vscode-languageserver: "npm:6.1.1" vscode-languageserver-textdocument: "npm:1.0.8" vscode-languageserver-types: "npm:3.17.3" @@ -8678,7 +8678,7 @@ __metadata: envinfo: "npm:7.11.0" systeminformation: "npm:5.21.20" uuid: "npm:9.0.1" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" yargs: "npm:17.7.2" languageName: unknown linkType: soft @@ -8749,7 +8749,7 @@ __metadata: glob: "npm:10.3.10" typescript: "npm:5.3.3" vite: "npm:4.5.2" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" yargs-parser: "npm:21.1.1" bin: rw-vite-build: ./bins/rw-vite-build.mjs @@ -11655,57 +11655,57 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:1.2.1": - version: 1.2.1 - resolution: "@vitest/expect@npm:1.2.1" +"@vitest/expect@npm:1.2.2": + version: 1.2.2 + resolution: "@vitest/expect@npm:1.2.2" dependencies: - "@vitest/spy": "npm:1.2.1" - "@vitest/utils": "npm:1.2.1" + "@vitest/spy": "npm:1.2.2" + "@vitest/utils": "npm:1.2.2" chai: "npm:^4.3.10" - checksum: ee44ba89db92698cab9b5464ce5b7f0da57a0b4809f98545dede2af1237408ecca0a261f867dce280ad7a4cb1eca5d6c677a27e784d631554eae9ecfd19926cf + checksum: 920e80b956d9d5ef7909cbe2bf883c8556da11c5123ea037396cb672d7038116c9773bd36915a3df7be2ffd76b661d5a6487e7e5ded78f39e2500cb36ae81e59 languageName: node linkType: hard -"@vitest/runner@npm:1.2.1": - version: 1.2.1 - resolution: "@vitest/runner@npm:1.2.1" +"@vitest/runner@npm:1.2.2": + version: 1.2.2 + resolution: "@vitest/runner@npm:1.2.2" dependencies: - "@vitest/utils": "npm:1.2.1" + "@vitest/utils": "npm:1.2.2" p-limit: "npm:^5.0.0" pathe: "npm:^1.1.1" - checksum: 19f1c738eecfc27220392fda180c5087cda297893c93490a3ef7dbb1cbb0c1fc57aa4bc9f7e7d5ef1b4573b31dd277236529fb61d420b640f0024fae5a26c6f0 + checksum: 25a9c03cca5b40738fe606757b14ee9d60d25193115b4674e3cc402c2b2c3844d234902d48bfa7646cb205455ea27891fef96733e033a570b85fe74ed29ff81c languageName: node linkType: hard -"@vitest/snapshot@npm:1.2.1": - version: 1.2.1 - resolution: "@vitest/snapshot@npm:1.2.1" +"@vitest/snapshot@npm:1.2.2": + version: 1.2.2 + resolution: "@vitest/snapshot@npm:1.2.2" dependencies: magic-string: "npm:^0.30.5" pathe: "npm:^1.1.1" pretty-format: "npm:^29.7.0" - checksum: c92a1291c8b8579df640acb39863a5a49dd797a68b60482868cccf780d1acda44e31e1b64e5ed6788a5274a1990192d3901243399934f31ec5eed7fe32ff4ca9 + checksum: 0f8a69a289aa6466c7dd56f8327190d56a0bc7ad10412127de001c94784f6dba5e5bccb757def21f565f4efa3e00c307b92e8b6c302f11fc57889b743ba18a95 languageName: node linkType: hard -"@vitest/spy@npm:1.2.1": - version: 1.2.1 - resolution: "@vitest/spy@npm:1.2.1" +"@vitest/spy@npm:1.2.2": + version: 1.2.2 + resolution: "@vitest/spy@npm:1.2.2" dependencies: tinyspy: "npm:^2.2.0" - checksum: 1382e3641423fe85791d9a6c82b0abac88beea53a65f01355134d22503aa723760f00f0e52807bc1ff99bd342257d3f94e83da29e0bbfc17d76ebb69403e43c6 + checksum: 5480048d26c0d82b524317552fbdcc05fed6ea626d887620647826453a344798a360f2a75af477512a1569b1b6c918eae62338e8b35575f875fc2d7ef51419f3 languageName: node linkType: hard -"@vitest/utils@npm:1.2.1": - version: 1.2.1 - resolution: "@vitest/utils@npm:1.2.1" +"@vitest/utils@npm:1.2.2": + version: 1.2.2 + resolution: "@vitest/utils@npm:1.2.2" dependencies: diff-sequences: "npm:^29.6.3" estree-walker: "npm:^3.0.3" loupe: "npm:^2.3.7" pretty-format: "npm:^29.7.0" - checksum: 8943d48e0b2c6f266e4f5eab549787dc7506841e95cb498b17521a339032a99ddd3f4df8ba9844dfb9b80693fb58850f0bda74ea15d1356c644caedfc864cc37 + checksum: 32449cb7eca8ecea56e0fce280c9770f65fa6b60bbba73be06ca2891096818899b4b3220bd3c815df8beb4266034db394fcf235e4de8959cce686b8b360948d1 languageName: node linkType: hard @@ -15747,7 +15747,7 @@ __metadata: terminal-link: "npm:2.1.1" untildify: "npm:4.0.0" uuid: "npm:9.0.1" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" yargs: "npm:17.7.2" bin: create-redwood-app: ./dist/create-redwood-app.js @@ -29538,7 +29538,7 @@ __metadata: tstyche: "npm:1.0.0-beta.9" tsx: "npm:4.6.2" typescript: "npm:5.3.3" - vitest: "npm:1.2.1" + vitest: "npm:1.2.2" yargs: "npm:17.7.2" zx: "npm:7.2.3" languageName: unknown @@ -31564,7 +31564,7 @@ __metadata: languageName: node linkType: hard -"tinypool@npm:^0.8.1": +"tinypool@npm:^0.8.2": version: 0.8.2 resolution: "tinypool@npm:0.8.2" checksum: 8998626614172fc37c394e9a14e701dc437727fc6525488a4d4fd42044a4b2b59d6f076d750cbf5c699f79c58dd4e40599ab09e2f1ae0df4b23516b98c9c3055 @@ -32910,9 +32910,9 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:1.2.1": - version: 1.2.1 - resolution: "vite-node@npm:1.2.1" +"vite-node@npm:1.2.2": + version: 1.2.2 + resolution: "vite-node@npm:1.2.2" dependencies: cac: "npm:^6.7.14" debug: "npm:^4.3.4" @@ -32921,7 +32921,7 @@ __metadata: vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 5c2393129299ecbbd0716ffc1de46479f4a7afa0d043d31e3175e69ceaaf0c363c637513fe5fa1e5e1c61ab8c55d82c7004f71a846ee8ded4d434a3370b4253f + checksum: 39a5b9d9c806a012aab208eee0f59e4e12446ec19a4cf149a6459e7ff86491c289e189fda4f55a63b7e37d713f5edbda0e9efed95af4f7ebefa6d39eee093c0b languageName: node linkType: hard @@ -33005,15 +33005,15 @@ __metadata: languageName: node linkType: hard -"vitest@npm:1.2.1": - version: 1.2.1 - resolution: "vitest@npm:1.2.1" +"vitest@npm:1.2.2": + version: 1.2.2 + resolution: "vitest@npm:1.2.2" dependencies: - "@vitest/expect": "npm:1.2.1" - "@vitest/runner": "npm:1.2.1" - "@vitest/snapshot": "npm:1.2.1" - "@vitest/spy": "npm:1.2.1" - "@vitest/utils": "npm:1.2.1" + "@vitest/expect": "npm:1.2.2" + "@vitest/runner": "npm:1.2.2" + "@vitest/snapshot": "npm:1.2.2" + "@vitest/spy": "npm:1.2.2" + "@vitest/utils": "npm:1.2.2" acorn-walk: "npm:^8.3.2" cac: "npm:^6.7.14" chai: "npm:^4.3.10" @@ -33026,9 +33026,9 @@ __metadata: std-env: "npm:^3.5.0" strip-literal: "npm:^1.3.0" tinybench: "npm:^2.5.1" - tinypool: "npm:^0.8.1" + tinypool: "npm:^0.8.2" vite: "npm:^5.0.0" - vite-node: "npm:1.2.1" + vite-node: "npm:1.2.2" why-is-node-running: "npm:^2.2.2" peerDependencies: "@edge-runtime/vm": "*" @@ -33052,7 +33052,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: eb1c8a6f1bd5cef85e701cbe45a11d3ebec50264ebd499d122f35928e40cd3729cdbef21b024491ba2c36fdd3122ca57e013725c67247c6cbd274c4790edccd5 + checksum: 085cb62146191b32dc98fac1a5b0de6d1c63c44cc1e7946a7d38309dd4135539432ec27b4bfad38ce79736688a0ce20d9b93f58de4ce4a41677cb3c5ca6ad980 languageName: node linkType: hard From 1bf0814ac997d20f72730adf8f21b359217296d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 15:36:12 -0800 Subject: [PATCH 036/119] fix(deps): update apollo graphql packages (#9916) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@apollo/client](https://www.apollographql.com/docs/react/) ([source](https://togithub.com/apollographql/apollo-client)) | [`3.8.8` -> `3.8.10`](https://renovatebot.com/diffs/npm/@apollo%2fclient/3.8.8/3.8.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@apollo%2fclient/3.8.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@apollo%2fclient/3.8.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@apollo%2fclient/3.8.8/3.8.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@apollo%2fclient/3.8.8/3.8.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@apollo/experimental-nextjs-app-support](https://togithub.com/apollographql/apollo-client-nextjs) | [`0.5.2` -> `0.6.0`](https://renovatebot.com/diffs/npm/@apollo%2fexperimental-nextjs-app-support/0.5.2/0.6.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@apollo%2fexperimental-nextjs-app-support/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@apollo%2fexperimental-nextjs-app-support/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@apollo%2fexperimental-nextjs-app-support/0.5.2/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@apollo%2fexperimental-nextjs-app-support/0.5.2/0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ---
apollographql/apollo-client (@​apollo/client) [`v3.8.10`](https://togithub.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md#3810) [Compare Source](https://togithub.com/apollographql/apollo-client/compare/v3.8.9...v3.8.10) - [#​11489](https://togithub.com/apollographql/apollo-client/pull/11489) [`abfd02a`](https://togithub.com/apollographql/apollo-client/commit/abfd02abeb8585e44377e9e87e5d20e5d95be002) Thanks [@​gronxb](https://togithub.com/gronxb)! - Fix `networkStatus` with `useSuspenseQuery` not properly updating to ready state when using a `cache-and-network` fetch policy that returns data equal to what is already in the cache. - [#​11483](https://togithub.com/apollographql/apollo-client/pull/11483) [`6394dda`](https://togithub.com/apollographql/apollo-client/commit/6394dda47fa83d9ddd922e0d05e62bd872e4ea8e) Thanks [@​pipopotamasu](https://togithub.com/pipopotamasu)! - Fix cache override warning output [`v3.8.9`](https://togithub.com/apollographql/apollo-client/blob/HEAD/CHANGELOG.md#389) [Compare Source](https://togithub.com/apollographql/apollo-client/compare/v3.8.8...v3.8.9) - [#​11472](https://togithub.com/apollographql/apollo-client/pull/11472) [`afc844d`](https://togithub.com/apollographql/apollo-client/commit/afc844dd8d6f9f7a3e2003f9a5b541291dfe3fb4) Thanks [@​alessbell](https://togithub.com/alessbell)! - Fix delay: Infinity when set on a MockResponse passed to Mocked Provider so it indefinitely enters loading state. - [#​11464](https://togithub.com/apollographql/apollo-client/pull/11464) [`aac12b2`](https://togithub.com/apollographql/apollo-client/commit/aac12b221a6cb776d4941b6c8aadf04f0f0acd27) Thanks [@​jerelmiller](https://togithub.com/jerelmiller)! - Prevent `useFragment` from excessively unsubscribing and resubscribing the fragment with the cache on every render. - [#​11449](https://togithub.com/apollographql/apollo-client/pull/11449) [`f40cda4`](https://togithub.com/apollographql/apollo-client/commit/f40cda45841e93b056c781c19651b54464f7346a) Thanks [@​phryneas](https://togithub.com/phryneas)! - Removes refences to the typescript "dom" lib. - [#​11470](https://togithub.com/apollographql/apollo-client/pull/11470) [`e293bc9`](https://togithub.com/apollographql/apollo-client/commit/e293bc90d6f7937a6fc7c169f7b16eeb39d5fd49) Thanks [@​phryneas](https://togithub.com/phryneas)! - Remove an unnecessary check from parseAndCheckHttpResponse.
apollographql/apollo-client-nextjs (@​apollo/experimental-nextjs-app-support) [`v0.6.0`](https://togithub.com/apollographql/apollo-client-nextjs/compare/v0.5.2...452ebc4932957e7bd05df50b31fc9493190f06ed) [Compare Source](https://togithub.com/apollographql/apollo-client-nextjs/compare/v0.5.2...452ebc4932957e7bd05df50b31fc9493190f06ed)
--- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/web/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/web/package.json b/packages/web/package.json index c5e3ef88a5e3..d77b816ea95a 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -37,7 +37,7 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@apollo/client": "3.8.8", + "@apollo/client": "3.8.10", "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0", diff --git a/yarn.lock b/yarn.lock index 9b888acac99a..ed327f5a9efd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -103,9 +103,9 @@ __metadata: languageName: node linkType: hard -"@apollo/client@npm:3.8.8": - version: 3.8.8 - resolution: "@apollo/client@npm:3.8.8" +"@apollo/client@npm:3.8.10": + version: 3.8.10 + resolution: "@apollo/client@npm:3.8.10" dependencies: "@graphql-typed-document-node/core": "npm:^3.1.1" "@wry/equality": "npm:^0.5.6" @@ -134,7 +134,7 @@ __metadata: optional: true subscriptions-transport-ws: optional: true - checksum: a097fb49d68fa77d59f8d63f73f0335624608102ebe2a30270d679b50f3fc2d697298fde8619571b419c93660a5ba90874d93e3b10efc8d910d752f14df1770b + checksum: 983306f61de042aca2f02e414533fbdac0c9c905648a98b42bb79bccb19012306eebb3c55c6d665523addbc1948625d1aae70bdc2dd511775b7a962a40dfc5b1 languageName: node linkType: hard @@ -8778,7 +8778,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/web@workspace:packages/web" dependencies: - "@apollo/client": "npm:3.8.8" + "@apollo/client": "npm:3.8.10" "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" From 02fac7dc2c4f1ba1b822ed8b01f3a6c9358883ed Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 15:37:30 -0800 Subject: [PATCH 037/119] chore(deps): update dependency @playwright/test to v1.41.1 (#9918) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://togithub.com/microsoft/playwright)) | [`1.40.1` -> `1.41.1`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.40.1/1.41.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.41.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.41.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.40.1/1.41.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.40.1/1.41.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
microsoft/playwright (@​playwright/test) ### [`v1.41.1`](https://togithub.com/microsoft/playwright/releases/tag/v1.41.1) [Compare Source](https://togithub.com/microsoft/playwright/compare/v1.41.0...v1.41.1) ##### Highlights [https://github.com/microsoft/playwright/issues/29067](https://togithub.com/microsoft/playwright/issues/29067) - \[REGRESSION] Codegen/Recorder: not all clicks are being actioned nor recorded[https://github.com/microsoft/playwright/issues/29028](https://togithub.com/microsoft/playwright/issues/29028)8 - \[REGRESSION] React component tests throw type error when passing null/undefined to componen[https://github.com/microsoft/playwright/issues/29027](https://togithub.com/microsoft/playwright/issues/29027)27 - \[REGRESSION] React component tests not passing Date prop valu[https://github.com/microsoft/playwright/issues/29023](https://togithub.com/microsoft/playwright/issues/29023)023 - \[REGRESSION] React component tests not rendering children p[https://github.com/microsoft/playwright/issues/29019](https://togithub.com/microsoft/playwright/issues/29019)9019 - \[REGRESSION] trace.playwright.dev does not currently support the loading from URL #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 ### [`v1.41.0`](https://togithub.com/microsoft/playwright/releases/tag/v1.41.0) [Compare Source](https://togithub.com/microsoft/playwright/compare/v1.40.1...v1.41.0) #### New APIs - New method [page.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-page#page-unroute-all) removes all routes registered by [page.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-page#page-route) and [page.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-page#page-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New method [browserContext.unrouteAll(\[options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-unroute-all) removes all routes registered by [browserContext.route(url, handler, handler\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route) and [browserContext.routeFromHAR(har\[, options\])](https://playwright.dev/docs/api/class-browsercontext#browser-context-route-from-har). Optionally allows to wait for ongoing routes to finish, or ignore any errors from them. - New option `style` in [page.screenshot(\[options\])](https://playwright.dev/docs/api/class-page#page-screenshot) and [locator.screenshot(\[options\])](https://playwright.dev/docs/api/class-locator#locator-screenshot) to add custom CSS to the page before taking a screenshot. - New option `stylePath` for methods [expect(page).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-pageassertions#page-assertions-to-have-screenshot-1) and [expect(locator).toHaveScreenshot(name\[, options\])](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-have-screenshot-1) to apply a custom stylesheet while making the screenshot. - New `fileName` option for [Blob reporter](https://playwright.dev/docs/test-reporters#blob-reporter), to specify the name of the report to be created. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 6be50da9af37..47020a59fcef 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@babel/runtime-corejs3": "7.23.9", "@faker-js/faker": "8.0.2", "@npmcli/arborist": "7.2.2", - "@playwright/test": "1.40.1", + "@playwright/test": "1.41.1", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.1", diff --git a/yarn.lock b/yarn.lock index ed327f5a9efd..49633f8fa549 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6522,14 +6522,14 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:1.40.1": - version: 1.40.1 - resolution: "@playwright/test@npm:1.40.1" +"@playwright/test@npm:1.41.1": + version: 1.41.1 + resolution: "@playwright/test@npm:1.41.1" dependencies: - playwright: "npm:1.40.1" + playwright: "npm:1.41.1" bin: playwright: cli.js - checksum: 1edbc9659fb6a9c5299cacd9a0c7d3fdc88939036642d8f367e13d267d808ae3f88ca9d00e9981e3bcd5f584ccefba38d24eda6b23d27895908f203dc35f339e + checksum: 72bd5bb67c512027d214b9c54c2a22a469bd19d7809771e53a5bfdcc11330591e01579bb22f807d1ebbcdcea35d625e0fc9eb9791cebcc63bf55b82dd1cdefdd languageName: node linkType: hard @@ -27288,27 +27288,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.40.1": - version: 1.40.1 - resolution: "playwright-core@npm:1.40.1" +"playwright-core@npm:1.41.1": + version: 1.41.1 + resolution: "playwright-core@npm:1.41.1" bin: playwright-core: cli.js - checksum: 56c283012974982313a6ae583b975ee4af76d52059fb9a25d9cc616a11224685ec64682b391910c795d2b12d2ab5c7eec31124722c75c0b1703a76ac9b6fd1c2 + checksum: cdd91267ca23e3f65d519100e956859c70e3e9ca29e3fe00e700b457903129e41dfa17752f1ea37ad0a8a7c6330baf9f3be503e4cbfa3e8833e80a037f899aee languageName: node linkType: hard -"playwright@npm:1.40.1": - version: 1.40.1 - resolution: "playwright@npm:1.40.1" +"playwright@npm:1.41.1": + version: 1.41.1 + resolution: "playwright@npm:1.41.1" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.40.1" + playwright-core: "npm:1.41.1" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 5dae164d1f69162da8d7eee52da651296fb885c76a8b36049f216975c751a0a826ff05795a1c0902dc0bd193fe606ae17d5def655f4cbcccb8d8b71afb74b950 + checksum: 32d48c1f8ff881770a19c9245fb4191fc36b5e97ab5f48effa0b1cf5e83fa958f6fdd7e4268dd984aa306ac5fe9e4324510211910751fb52cebb9bae819d13ca languageName: node linkType: hard @@ -29496,7 +29496,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@faker-js/faker": "npm:8.0.2" "@npmcli/arborist": "npm:7.2.2" - "@playwright/test": "npm:1.40.1" + "@playwright/test": "npm:1.41.1" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.1" From 411fe2938c17c9eeca734b01b41d740e2f5097ef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 23:57:05 +0000 Subject: [PATCH 038/119] fix(deps): update dependency graphql-sse to v2.5.2 (#9921) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [graphql-sse](https://togithub.com/enisdenjo/graphql-sse) | [`2.4.0` -> `2.5.2`](https://renovatebot.com/diffs/npm/graphql-sse/2.4.0/2.5.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/graphql-sse/2.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/graphql-sse/2.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/graphql-sse/2.4.0/2.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/graphql-sse/2.4.0/2.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
enisdenjo/graphql-sse (graphql-sse) ### [`v2.5.2`](https://togithub.com/enisdenjo/graphql-sse/blob/HEAD/CHANGELOG.md#252-2023-12-20) [Compare Source](https://togithub.com/enisdenjo/graphql-sse/compare/v2.5.1...v2.5.2) ##### Bug Fixes - remove package.json workspaces entry in release ([c6dc093](https://togithub.com/enisdenjo/graphql-sse/commit/c6dc0933dc776657adaaa7b9a6183839bca35836)) ### [`v2.5.1`](https://togithub.com/enisdenjo/graphql-sse/blob/HEAD/CHANGELOG.md#251-2023-12-14) [Compare Source](https://togithub.com/enisdenjo/graphql-sse/compare/v2.5.0...v2.5.1) ##### Bug Fixes - **use/koa:** Use parsed body from request ([#​87](https://togithub.com/enisdenjo/graphql-sse/issues/87)) ([b290b90](https://togithub.com/enisdenjo/graphql-sse/commit/b290b90920f98236963b6e6ddfd095e19254634c)) ### [`v2.5.0`](https://togithub.com/enisdenjo/graphql-sse/blob/HEAD/CHANGELOG.md#250-2023-12-13) [Compare Source](https://togithub.com/enisdenjo/graphql-sse/compare/v2.4.1...v2.5.0) ##### Features - **use/koa:** expose full Koa context to options ([#​86](https://togithub.com/enisdenjo/graphql-sse/issues/86)) ([b37a6f9](https://togithub.com/enisdenjo/graphql-sse/commit/b37a6f92f32ac15bb40df2753545c48b054141de)) #### [2.4.1](https://togithub.com/enisdenjo/graphql-sse/compare/v2.4.0...v2.4.1) (2023-12-13) ##### Bug Fixes - Add koa exports to package.json ([#​85](https://togithub.com/enisdenjo/graphql-sse/issues/85)) ([e99cf99](https://togithub.com/enisdenjo/graphql-sse/commit/e99cf99d6c011e931353fdf876f91989e6cd3d70)) ### [`v2.4.1`](https://togithub.com/enisdenjo/graphql-sse/blob/HEAD/CHANGELOG.md#241-2023-12-13) [Compare Source](https://togithub.com/enisdenjo/graphql-sse/compare/v2.4.0...v2.4.1) ##### Bug Fixes - Add koa exports to package.json ([#​85](https://togithub.com/enisdenjo/graphql-sse/issues/85)) ([e99cf99](https://togithub.com/enisdenjo/graphql-sse/commit/e99cf99d6c011e931353fdf876f91989e6cd3d70))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/web/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/web/package.json b/packages/web/package.json index d77b816ea95a..008cb55b5164 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -42,7 +42,7 @@ "@redwoodjs/auth": "6.0.7", "core-js": "3.34.0", "graphql": "16.8.1", - "graphql-sse": "2.4.0", + "graphql-sse": "2.5.2", "graphql-tag": "2.12.6", "react-helmet-async": "2.0.3", "react-hot-toast": "2.4.1", diff --git a/yarn.lock b/yarn.lock index 49633f8fa549..d0fee7017a72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8789,7 +8789,7 @@ __metadata: "@types/react-dom": "npm:18.2.15" core-js: "npm:3.34.0" graphql: "npm:16.8.1" - graphql-sse: "npm:2.4.0" + graphql-sse: "npm:2.5.2" graphql-tag: "npm:2.12.6" jest: "npm:29.7.0" nodemon: "npm:3.0.2" @@ -20091,12 +20091,12 @@ __metadata: languageName: node linkType: hard -"graphql-sse@npm:2.4.0, graphql-sse@npm:^2.0.0": - version: 2.4.0 - resolution: "graphql-sse@npm:2.4.0" +"graphql-sse@npm:2.5.2, graphql-sse@npm:^2.0.0": + version: 2.5.2 + resolution: "graphql-sse@npm:2.5.2" peerDependencies: graphql: ">=0.11 <=16" - checksum: 8653b334653fe232a1632f3ec3aa1af1fe77369e43fe9fc4e8a1e113af5ea9db673279df671d74ced49bfcd8f61d24ec824e2381eab0eab85232a3a4b611dd48 + checksum: 0ceb6fd4b858d9a89a3e77e15157b94cc04f8ed0077a1581169f9bd4e6114940a448f5bcc8cc22be0562056b5e0f515960b239cccf1e7907e708ed4da6f12279 languageName: node linkType: hard From 4869b7a526f6f9aa7efc1829114224edd8b8432e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 00:23:29 +0000 Subject: [PATCH 039/119] fix(deps): update dependency fastify to v4.25.2 (#9920) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [fastify](https://www.fastify.dev/) ([source](https://togithub.com/fastify/fastify)) | [`4.24.3` -> `4.25.2`](https://renovatebot.com/diffs/npm/fastify/4.24.3/4.25.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/fastify/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fastify/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fastify/4.24.3/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fastify/4.24.3/4.25.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
fastify/fastify (fastify) ### [`v4.25.2`](https://togithub.com/fastify/fastify/releases/tag/v4.25.2) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.25.1...v4.25.2) #### What's Changed - fix: `npm run test:watch` by [@​domdomegg](https://togithub.com/domdomegg) in [https://github.com/fastify/fastify/pull/5221](https://togithub.com/fastify/fastify/pull/5221) - fix: always consume stream payloads when responding to 204 with no body by [@​mcollina](https://togithub.com/mcollina) in [https://github.com/fastify/fastify/pull/5231](https://togithub.com/fastify/fastify/pull/5231) - docs: update setErrorHandler to explain not found behaviour by [@​domdomegg](https://togithub.com/domdomegg) in [https://github.com/fastify/fastify/pull/5218](https://togithub.com/fastify/fastify/pull/5218) #### New Contributors - [@​domdomegg](https://togithub.com/domdomegg) made their first contribution in [https://github.com/fastify/fastify/pull/5221](https://togithub.com/fastify/fastify/pull/5221) **Full Changelog**: https://github.com/fastify/fastify/compare/v4.25.1...v4.25.2 ### [`v4.25.1`](https://togithub.com/fastify/fastify/releases/tag/v4.25.1) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.25.0...v4.25.1) #### What's Changed - fix: route constraints by [@​climba03003](https://togithub.com/climba03003) in [https://github.com/fastify/fastify/pull/5207](https://togithub.com/fastify/fastify/pull/5207) - fix: Better plugin name detection for FSTWRN002 by [@​mcollina](https://togithub.com/mcollina) in [https://github.com/fastify/fastify/pull/5209](https://togithub.com/fastify/fastify/pull/5209) - chore: at-large project by [@​Eomm](https://togithub.com/Eomm) in [https://github.com/fastify/fastify/pull/5211](https://togithub.com/fastify/fastify/pull/5211) **Full Changelog**: https://github.com/fastify/fastify/compare/v4.25.0...v4.25.1 ### [`v4.25.0`](https://togithub.com/fastify/fastify/releases/tag/v4.25.0) [Compare Source](https://togithub.com/fastify/fastify/compare/v4.24.3...v4.25.0) #### What's Changed - feat: Improve RouteShorthandOptions\['constraints'] type by [@​Fcmam5](https://togithub.com/Fcmam5) in [https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097) - fix: add [@​eomm](https://togithub.com/eomm) and [@​jsumners](https://togithub.com/jsumners) as lead maintainers by [@​mcollina](https://togithub.com/mcollina) in [https://github.com/fastify/fastify/pull/5115](https://togithub.com/fastify/fastify/pull/5115) - fix: reply.send supports Uint8Array payload by [@​SgtPooki](https://togithub.com/SgtPooki) in [https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124) - refactor: migrate deprecation warnings to actual deprecation warnings by [@​jsumners](https://togithub.com/jsumners) in [https://github.com/fastify/fastify/pull/5126](https://togithub.com/fastify/fastify/pull/5126) - docs: added documentation about warnings by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [https://github.com/fastify/fastify/pull/5108](https://togithub.com/fastify/fastify/pull/5108) - test(logger): restrict temp file permissions by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/fastify/pull/5128](https://togithub.com/fastify/fastify/pull/5128) - refactor(lib/hooks): replace `typeof` undefined check by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/fastify/pull/5127](https://togithub.com/fastify/fastify/pull/5127) - chore: replace mention of fastify `.io` domain with `.dev` by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/fastify/pull/5129](https://togithub.com/fastify/fastify/pull/5129) - docs(security): add prose explaining OpenSSF CII Best Practices badge results by [@​ljharb](https://togithub.com/ljharb) in [https://github.com/fastify/fastify/pull/5111](https://togithub.com/fastify/fastify/pull/5111) - chore: Bump actions/setup-node from 3 to 4 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/fastify/pull/5134](https://togithub.com/fastify/fastify/pull/5134) - fix(types): add handler property to routeOptions by [@​MikeJeffers](https://togithub.com/MikeJeffers) in [https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136) - docs(readme): fix ci badge path by [@​Fdawgs](https://togithub.com/Fdawgs) in [https://github.com/fastify/fastify/pull/5138](https://togithub.com/fastify/fastify/pull/5138) - docs: Fix small typo in Typescript docs by [@​john-ko](https://togithub.com/john-ko) in [https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145) - feat(plugins): mixing async and callback style now returns a warning by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [https://github.com/fastify/fastify/pull/5139](https://togithub.com/fastify/fastify/pull/5139) - docs: mention about multipart support by [@​fawazahmed0](https://togithub.com/fawazahmed0) in [https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144) - docs: add [@​fastify/vite](https://togithub.com/fastify/vite) to core plugins list by [@​galvez](https://togithub.com/galvez) in [https://github.com/fastify/fastify/pull/5153](https://togithub.com/fastify/fastify/pull/5153) - docs: add [@​scalar/fastify-api-reference](https://togithub.com/scalar/fastify-api-reference) to community plugins list by [@​hanspagel](https://togithub.com/hanspagel) in [https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154) - docs: Remove routeOptions reference in Reply.md by [@​shadahmad7](https://togithub.com/shadahmad7) in [https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156) - docs(ecosystem): add fastify-uws by [@​tinchoz49](https://togithub.com/tinchoz49) in [https://github.com/fastify/fastify/pull/5160](https://togithub.com/fastify/fastify/pull/5160) - docs: removed unmaintained fastify-nodemailer from ecosystem by [@​giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli) in [https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161) - docs: clarify handling of streams and buffers by [@​brettwillis](https://togithub.com/brettwillis) in [https://github.com/fastify/fastify/pull/5166](https://togithub.com/fastify/fastify/pull/5166) - docs([#​5142](https://togithub.com/fastify/fastify/issues/5142)): aligned errors and warnings documentation by [@​giuliowaitforitdavide](https://togithub.com/giuliowaitforitdavide) in [https://github.com/fastify/fastify/pull/5162](https://togithub.com/fastify/fastify/pull/5162) - docs(reference/hooks): add information about prehandler by [@​RjManhas](https://togithub.com/RjManhas) in [https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163) - fix: type FastifyInstance\['route'] and RouteShorthandMethod by [@​MunifTanjim](https://togithub.com/MunifTanjim) in [https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155) - docs (reference): Fix small typo in Request by [@​bngarren](https://togithub.com/bngarren) in [https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186) - chore: gitpodify by [@​ghostdevv](https://togithub.com/ghostdevv) in [https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168) - docs(ecosystem): Add Apitally by [@​itssimon](https://togithub.com/itssimon) in [https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175) - fix: Update reply.context deprecation warning by [@​avaly](https://togithub.com/avaly) in [https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179) - docs(ecosystem): adds @​blastorg/fastify/aws-dynamodb-cache to community plugins list by [@​fredrikj31](https://togithub.com/fredrikj31) in [https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158) - docs: update preHandler hook example by [@​tarunrajput](https://togithub.com/tarunrajput) in [https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189) - types: added http header types to reply by [@​skwee357](https://togithub.com/skwee357) in [https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046) - test: add tests for TOC of errors.md by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/fastify/pull/5194](https://togithub.com/fastify/fastify/pull/5194) - ci: pin node 18 to 18.18.2 by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/fastify/pull/5197](https://togithub.com/fastify/fastify/pull/5197) - docs(ecosystem): add http-wizard by [@​flodlc](https://togithub.com/flodlc) in [https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132) - chore: Bump actions/github-script from 6 to 7 by [@​dependabot](https://togithub.com/dependabot) in [https://github.com/fastify/fastify/pull/5183](https://togithub.com/fastify/fastify/pull/5183) - ci: fix broken ci by skipping tests if node v > 18.19.0 by [@​Uzlopak](https://togithub.com/Uzlopak) in [https://github.com/fastify/fastify/pull/5195](https://togithub.com/fastify/fastify/pull/5195) - fix: allow async hooks in `RouteShorthandOptions` without breaking `request` and `reply` types by [@​bienzaaron](https://togithub.com/bienzaaron) in [https://github.com/fastify/fastify/pull/5147](https://togithub.com/fastify/fastify/pull/5147) - fix([#​5180](https://togithub.com/fastify/fastify/issues/5180)): close secondary bindings after primary is closed by [@​metcoder95](https://togithub.com/metcoder95) in [https://github.com/fastify/fastify/pull/5201](https://togithub.com/fastify/fastify/pull/5201) - chore: update process-warning by [@​Eomm](https://togithub.com/Eomm) in [https://github.com/fastify/fastify/pull/5206](https://togithub.com/fastify/fastify/pull/5206) - types: nullish error types in callback function's parameter for `after` and `ready` method by [@​nokazn](https://togithub.com/nokazn) in [https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191) - fix([#​5049](https://togithub.com/fastify/fastify/issues/5049)): Remove duplicated calls to onReady by [@​metcoder95](https://togithub.com/metcoder95) in [https://github.com/fastify/fastify/pull/5051](https://togithub.com/fastify/fastify/pull/5051) - chore: remove unused type assertion by [@​UndefinedBehaviour](https://togithub.com/UndefinedBehaviour) in [https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184) #### New Contributors - [@​Fcmam5](https://togithub.com/Fcmam5) made their first contribution in [https://github.com/fastify/fastify/pull/5097](https://togithub.com/fastify/fastify/pull/5097) - [@​SgtPooki](https://togithub.com/SgtPooki) made their first contribution in [https://github.com/fastify/fastify/pull/5124](https://togithub.com/fastify/fastify/pull/5124) - [@​MikeJeffers](https://togithub.com/MikeJeffers) made their first contribution in [https://github.com/fastify/fastify/pull/5136](https://togithub.com/fastify/fastify/pull/5136) - [@​john-ko](https://togithub.com/john-ko) made their first contribution in [https://github.com/fastify/fastify/pull/5145](https://togithub.com/fastify/fastify/pull/5145) - [@​fawazahmed0](https://togithub.com/fawazahmed0) made their first contribution in [https://github.com/fastify/fastify/pull/5144](https://togithub.com/fastify/fastify/pull/5144) - [@​hanspagel](https://togithub.com/hanspagel) made their first contribution in [https://github.com/fastify/fastify/pull/5154](https://togithub.com/fastify/fastify/pull/5154) - [@​shadahmad7](https://togithub.com/shadahmad7) made their first contribution in [https://github.com/fastify/fastify/pull/5156](https://togithub.com/fastify/fastify/pull/5156) - [@​giovanni-bertoncelli](https://togithub.com/giovanni-bertoncelli) made their first contribution in [https://github.com/fastify/fastify/pull/5161](https://togithub.com/fastify/fastify/pull/5161) - [@​RjManhas](https://togithub.com/RjManhas) made their first contribution in [https://github.com/fastify/fastify/pull/5163](https://togithub.com/fastify/fastify/pull/5163) - [@​MunifTanjim](https://togithub.com/MunifTanjim) made their first contribution in [https://github.com/fastify/fastify/pull/5155](https://togithub.com/fastify/fastify/pull/5155) - [@​bngarren](https://togithub.com/bngarren) made their first contribution in [https://github.com/fastify/fastify/pull/5186](https://togithub.com/fastify/fastify/pull/5186) - [@​ghostdevv](https://togithub.com/ghostdevv) made their first contribution in [https://github.com/fastify/fastify/pull/5168](https://togithub.com/fastify/fastify/pull/5168) - [@​itssimon](https://togithub.com/itssimon) made their first contribution in [https://github.com/fastify/fastify/pull/5175](https://togithub.com/fastify/fastify/pull/5175) - [@​avaly](https://togithub.com/avaly) made their first contribution in [https://github.com/fastify/fastify/pull/5179](https://togithub.com/fastify/fastify/pull/5179) - [@​fredrikj31](https://togithub.com/fredrikj31) made their first contribution in [https://github.com/fastify/fastify/pull/5158](https://togithub.com/fastify/fastify/pull/5158) - [@​tarunrajput](https://togithub.com/tarunrajput) made their first contribution in [https://github.com/fastify/fastify/pull/5189](https://togithub.com/fastify/fastify/pull/5189) - [@​skwee357](https://togithub.com/skwee357) made their first contribution in [https://github.com/fastify/fastify/pull/5046](https://togithub.com/fastify/fastify/pull/5046) - [@​flodlc](https://togithub.com/flodlc) made their first contribution in [https://github.com/fastify/fastify/pull/5132](https://togithub.com/fastify/fastify/pull/5132) - [@​nokazn](https://togithub.com/nokazn) made their first contribution in [https://github.com/fastify/fastify/pull/5191](https://togithub.com/fastify/fastify/pull/5191) - [@​UndefinedBehaviour](https://togithub.com/UndefinedBehaviour) made their first contribution in [https://github.com/fastify/fastify/pull/5184](https://togithub.com/fastify/fastify/pull/5184) **Full Changelog**: https://github.com/fastify/fastify/compare/v4.24.3...v4.25.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/adapters/fastify/web/package.json | 2 +- packages/api-server/package.json | 2 +- packages/fastify/package.json | 2 +- packages/web-server/package.json | 2 +- yarn.lock | 52 +++++++++++++++++----- 5 files changed, 44 insertions(+), 16 deletions(-) diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index 5fff5b85e3d9..1e35b18351ed 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -37,7 +37,7 @@ "fast-glob": "3.3.2" }, "devDependencies": { - "fastify": "4.24.3", + "fastify": "4.25.2", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/api-server/package.json b/packages/api-server/package.json index 007aacd8ace2..b879d31d102b 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -42,7 +42,7 @@ "dotenv-defaults": "5.0.2", "fast-glob": "3.3.2", "fast-json-parse": "1.0.3", - "fastify": "4.24.3", + "fastify": "4.25.2", "fastify-raw-body": "4.3.0", "lodash": "4.17.21", "pretty-bytes": "5.6.0", diff --git a/packages/fastify/package.json b/packages/fastify/package.json index d180343d8405..d380b2888022 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -26,7 +26,7 @@ "@redwoodjs/project-config": "6.0.7", "ansi-colors": "4.1.3", "fast-glob": "3.3.2", - "fastify": "4.24.3", + "fastify": "4.25.2", "fastify-raw-body": "4.3.0", "lodash": "4.17.21", "qs": "6.11.2" diff --git a/packages/web-server/package.json b/packages/web-server/package.json index 25417012b6d1..b870ce886326 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -35,7 +35,7 @@ "@redwoodjs/project-config": "6.0.7", "chalk": "4.1.2", "dotenv-defaults": "5.0.2", - "fastify": "4.24.3", + "fastify": "4.25.2", "yargs": "17.7.2" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index d0fee7017a72..afa50bbbfa62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7436,7 +7436,7 @@ __metadata: dotenv-defaults: "npm:5.0.2" fast-glob: "npm:3.3.2" fast-json-parse: "npm:1.0.3" - fastify: "npm:4.24.3" + fastify: "npm:4.25.2" fastify-raw-body: "npm:4.3.0" jest: "npm:29.7.0" lodash: "npm:4.17.21" @@ -8284,7 +8284,7 @@ __metadata: "@fastify/url-data": "npm:5.4.0" "@redwoodjs/project-config": "npm:6.0.7" fast-glob: "npm:3.3.2" - fastify: "npm:4.24.3" + fastify: "npm:4.25.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -8304,7 +8304,7 @@ __metadata: "@types/qs": "npm:6.9.11" ansi-colors: "npm:4.1.3" fast-glob: "npm:3.3.2" - fastify: "npm:4.24.3" + fastify: "npm:4.25.2" fastify-raw-body: "npm:4.3.0" lodash: "npm:4.17.21" qs: "npm:6.11.2" @@ -8766,7 +8766,7 @@ __metadata: "@redwoodjs/project-config": "npm:6.0.7" chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" - fastify: "npm:4.24.3" + fastify: "npm:4.25.2" typescript: "npm:5.3.3" yargs: "npm:17.7.2" bin: @@ -18645,9 +18645,9 @@ __metadata: languageName: node linkType: hard -"fastify@npm:4.24.3": - version: 4.24.3 - resolution: "fastify@npm:4.24.3" +"fastify@npm:4.25.2": + version: 4.25.2 + resolution: "fastify@npm:4.25.2" dependencies: "@fastify/ajv-compiler": "npm:^3.5.0" "@fastify/error": "npm:^3.4.0" @@ -18658,14 +18658,14 @@ __metadata: fast-json-stringify: "npm:^5.8.0" find-my-way: "npm:^7.7.0" light-my-request: "npm:^5.11.0" - pino: "npm:^8.16.0" - process-warning: "npm:^2.2.0" + pino: "npm:^8.17.0" + process-warning: "npm:^3.0.0" proxy-addr: "npm:^2.0.7" rfdc: "npm:^1.3.0" secure-json-parse: "npm:^2.7.0" semver: "npm:^7.5.4" toad-cache: "npm:^3.3.0" - checksum: 36018767b25cde307942f52172eedfc7c1ce186162222334e19caa607e3d29fe3de04cff2c08f21096d45fa4b071cd58a319392a6dbb5b5dbdf8230b38405c3e + checksum: 3ae9e8cdfd6ee4ada4b198f33cd6e152ae751f93e31ce628222e17249544ff34057118c8903d43cb1134c8b1614b7ce19768d8c9f3fde5befa6e236376d97f01 languageName: node linkType: hard @@ -27204,7 +27204,7 @@ __metadata: languageName: node linkType: hard -"pino@npm:8.16.2, pino@npm:^8.16.0": +"pino@npm:8.16.2": version: 8.16.2 resolution: "pino@npm:8.16.2" dependencies: @@ -27225,6 +27225,27 @@ __metadata: languageName: node linkType: hard +"pino@npm:^8.17.0": + version: 8.17.2 + resolution: "pino@npm:8.17.2" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.1.1" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:v1.1.0" + pino-std-serializers: "npm:^6.0.0" + process-warning: "npm:^3.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^3.7.0" + thread-stream: "npm:^2.0.0" + bin: + pino: bin.js + checksum: 9e55af6cd9d1833a4dbe64924fc73163295acd3c988a9c7db88926669f2574ab7ec607e8487b6dd71dbdad2d7c1c1aac439f37e59233f37220b1a9d88fa2ce01 + languageName: node + linkType: hard + "pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" @@ -27859,13 +27880,20 @@ __metadata: languageName: node linkType: hard -"process-warning@npm:^2.0.0, process-warning@npm:^2.2.0": +"process-warning@npm:^2.0.0": version: 2.2.0 resolution: "process-warning@npm:2.2.0" checksum: 22b252ca6c1edf7fe3c6ab30c39f9a2fa240dc5af46fd0f94c4dcbc577e7570dcccfc1cbfb4510db4759906b9170cb8b18c519d581cdf2ea649e5ac6bb9a0e60 languageName: node linkType: hard +"process-warning@npm:^3.0.0": + version: 3.0.0 + resolution: "process-warning@npm:3.0.0" + checksum: 60f3c8ddee586f0706c1e6cb5aa9c86df05774b9330d792d7c8851cf0031afd759d665404d07037e0b4901b55c44a423f07bdc465c63de07d8d23196bb403622 + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" From e80a311570e55742d59fe1fd6ff55a25f337e31b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 00:39:35 +0000 Subject: [PATCH 040/119] fix(deps): update dependency core-js to v3.35.1 (#9919) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [core-js](https://togithub.com/zloirock/core-js) ([source](https://togithub.com/zloirock/core-js/tree/HEAD/packages/core-js)) | [`3.34.0` -> `3.35.1`](https://renovatebot.com/diffs/npm/core-js/3.34.0/3.35.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/core-js/3.35.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/core-js/3.35.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/core-js/3.34.0/3.35.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/core-js/3.34.0/3.35.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ---
zloirock/core-js (core-js) [`v3.35.1`](https://togithub.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3351---20240121) [Compare Source](https://togithub.com/zloirock/core-js/compare/v3.35.0...v3.35.1) - Fixed internal `ToLength` operation with bigints, [#​1318](https://togithub.com/zloirock/core-js/issues/1318) - Removed significant redundant code from `String#split` polyfill - Fixed setting names of methods with symbol keys in some old engines - Minor fix of prototype methods export logic in the pure version - Compat data improvements: - [`Iterator` helpers proposal](https://togithub.com/tc39/proposal-iterator-helpers) methods marked as supported from V8 ~ Chrome 122 - Note that V8 ~ Chrome 122 add [`Set` methods](https://togithub.com/tc39/proposal-set-methods), but they have [a bug](https://bugs.chromium.org/p/v8/issues/detail?id=14559) [similar to Safari](https://bugs.webkit.org/show_bug.cgi?id=267494) - `self` marked as fixed from Bun 1.0.22 - [`SuppressedError` and `Symbol.{ dispose , asyncDispose }`](https://togithub.com/tc39/proposal-explicit-resource-management) marked as [supported from Bun 1.0.23](https://bun.sh/blog/bun-v1.0.23#resource-management-is-now-supported) - Added Oculus Quest Browser 31 compat data mapping - Updated Electron 29 and added Electron 30 compat data mapping [`v3.35.0`](https://togithub.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3350---20231229) [Compare Source](https://togithub.com/zloirock/core-js/compare/v3.34.0...v3.35.0) - [`{ Map, Set, WeakMap, WeakSet }.{ from, of }`](https://togithub.com/tc39/proposal-setmap-offrom) became non-generic, following [this](https://togithub.com/tc39/proposal-setmap-offrom/issues/16#issuecomment-1843346541) and some other notes. Now they can be invoked without `this`, but no longer return subclass instances - Fixed handling some cases of non-enumerable symbol keys from `Symbol` polyfill - Removed unneeded NodeJS domains-related logic from `queueMicrotask` polyfill - Fixed subclassing of wrapped `ArrayBuffer` - Refactoring, many different minor optimizations - Compat data improvements: - [`Array.fromAsync`](https://togithub.com/tc39/proposal-array-from-async) marked as [supported from V8 ~ Chrome 121](https://bugs.chromium.org/p/v8/issues/detail?id=13321#c13) - It seems that the ancient [`Array.prototype.push` bug](https://bugs.chromium.org/p/v8/issues/detail?id=12681) is fixed in V8 ~ Chrome 122 (Hallelujah!) - [`ArrayBuffer.prototype.transfer` and friends proposal](https://togithub.com/tc39/proposal-arraybuffer-transfer) features marked as [supported from FF 122](https://bugzilla.mozilla.org/show_bug.cgi?id=1865103#c8) and Bun 1.0.19 - [`Object.groupBy` and `Map.groupBy`](https://togithub.com/tc39/proposal-array-grouping) marked as supported from Bun 1.0.19 - Since [`Iterator` helpers proposal](https://togithub.com/tc39/proposal-iterator-helpers) methods are still not disabled in Deno, the web compatibility issue why it was disabled in Chromium makes no sense for Deno and fixed in the spec, they marked as supported from Deno 1.37 - Added Opera Android 80 and updated [Opera Android 79](https://forums.opera.com/topic/68490/opera-for-android-79) compat data mapping - Added Samsung Internet 24 compat data mapping
--- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- package.json | 2 +- packages/api-server/package.json | 2 +- packages/api/package.json | 2 +- .../auth-providers/auth0/api/package.json | 2 +- .../auth-providers/auth0/setup/package.json | 2 +- .../auth-providers/auth0/web/package.json | 2 +- .../azureActiveDirectory/api/package.json | 2 +- .../azureActiveDirectory/setup/package.json | 2 +- .../azureActiveDirectory/web/package.json | 2 +- .../auth-providers/clerk/api/package.json | 2 +- .../auth-providers/clerk/setup/package.json | 2 +- .../auth-providers/clerk/web/package.json | 2 +- .../auth-providers/custom/setup/package.json | 2 +- .../auth-providers/dbAuth/api/package.json | 2 +- .../auth-providers/dbAuth/setup/package.json | 2 +- .../auth-providers/dbAuth/web/package.json | 2 +- .../auth-providers/firebase/api/package.json | 2 +- .../firebase/setup/package.json | 2 +- .../auth-providers/firebase/web/package.json | 2 +- .../auth-providers/netlify/api/package.json | 2 +- .../auth-providers/netlify/setup/package.json | 2 +- .../auth-providers/netlify/web/package.json | 2 +- .../auth-providers/supabase/api/package.json | 2 +- .../supabase/setup/package.json | 2 +- .../auth-providers/supabase/web/package.json | 2 +- .../supertokens/api/package.json | 2 +- .../supertokens/setup/package.json | 2 +- .../supertokens/web/package.json | 2 +- packages/auth/package.json | 2 +- packages/babel-config/package.json | 2 +- .../babel-config/src/__tests__/api.test.ts | 2 +- packages/cli/package.json | 2 +- packages/codemods/package.json | 2 +- packages/core/package.json | 2 +- packages/forms/package.json | 2 +- packages/graphql-server/package.json | 2 +- packages/internal/package.json | 2 +- packages/prerender/package.json | 2 +- packages/record/package.json | 2 +- packages/router/package.json | 2 +- packages/structure/package.json | 2 +- packages/telemetry/package.json | 2 +- packages/testing/package.json | 2 +- packages/vite/package.json | 2 +- packages/web/package.json | 2 +- yarn.lock | 96 +++++++++---------- 46 files changed, 93 insertions(+), 93 deletions(-) diff --git a/package.json b/package.json index 47020a59fcef..6cae04e0eb46 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "babel-plugin-auto-import": "1.1.0", "babel-plugin-remove-code": "0.0.6", "boxen": "5.1.2", - "core-js": "3.34.0", + "core-js": "3.35.1", "cypress": "13.6.1", "cypress-fail-fast": "7.1.0", "cypress-wait-until": "3.0.1", diff --git a/packages/api-server/package.json b/packages/api-server/package.json index b879d31d102b..4c0b8de6949d 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -38,7 +38,7 @@ "ansi-colors": "4.1.3", "chalk": "4.1.2", "chokidar": "3.5.3", - "core-js": "3.34.0", + "core-js": "3.35.1", "dotenv-defaults": "5.0.2", "fast-glob": "3.3.2", "fast-json-parse": "1.0.3", diff --git a/packages/api/package.json b/packages/api/package.json index c8749e0b2893..cfacf19d45b2 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -35,7 +35,7 @@ "@babel/runtime-corejs3": "7.23.9", "@prisma/client": "5.8.1", "@whatwg-node/fetch": "0.9.14", - "core-js": "3.34.0", + "core-js": "3.35.1", "humanize-string": "2.1.0", "jsonwebtoken": "9.0.2", "pascalcase": "1.0.0", diff --git a/packages/auth-providers/auth0/api/package.json b/packages/auth-providers/auth0/api/package.json index ba2a913a79e1..9380412fd0b5 100644 --- a/packages/auth-providers/auth0/api/package.json +++ b/packages/auth-providers/auth0/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "jsonwebtoken": "9.0.2", "jwks-rsa": "3.1.0" }, diff --git a/packages/auth-providers/auth0/setup/package.json b/packages/auth-providers/auth0/setup/package.json index 9180232405be..da9767d3176b 100644 --- a/packages/auth-providers/auth0/setup/package.json +++ b/packages/auth-providers/auth0/setup/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/auth0/web/package.json b/packages/auth-providers/auth0/web/package.json index f406a675ad4d..77c775a08e1b 100644 --- a/packages/auth-providers/auth0/web/package.json +++ b/packages/auth-providers/auth0/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@auth0/auth0-spa-js": "2.1.2", diff --git a/packages/auth-providers/azureActiveDirectory/api/package.json b/packages/auth-providers/azureActiveDirectory/api/package.json index 6759c819fa61..083ee460df2f 100644 --- a/packages/auth-providers/azureActiveDirectory/api/package.json +++ b/packages/auth-providers/azureActiveDirectory/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "jsonwebtoken": "9.0.2", "jwks-rsa": "3.1.0" }, diff --git a/packages/auth-providers/azureActiveDirectory/setup/package.json b/packages/auth-providers/azureActiveDirectory/setup/package.json index 46178db54857..73a96b750efa 100644 --- a/packages/auth-providers/azureActiveDirectory/setup/package.json +++ b/packages/auth-providers/azureActiveDirectory/setup/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/azureActiveDirectory/web/package.json b/packages/auth-providers/azureActiveDirectory/web/package.json index d607ab2adeb0..dcea401521b1 100644 --- a/packages/auth-providers/azureActiveDirectory/web/package.json +++ b/packages/auth-providers/azureActiveDirectory/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@azure/msal-browser": "2.38.3", diff --git a/packages/auth-providers/clerk/api/package.json b/packages/auth-providers/clerk/api/package.json index cbf8089af707..e3aa15225626 100644 --- a/packages/auth-providers/clerk/api/package.json +++ b/packages/auth-providers/clerk/api/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@clerk/clerk-sdk-node": "4.13.1", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/clerk/setup/package.json b/packages/auth-providers/clerk/setup/package.json index 2d20fae5df00..c40024ccac78 100644 --- a/packages/auth-providers/clerk/setup/package.json +++ b/packages/auth-providers/clerk/setup/package.json @@ -23,7 +23,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/clerk/web/package.json b/packages/auth-providers/clerk/web/package.json index 4f618a3c71f4..5c16d7258770 100644 --- a/packages/auth-providers/clerk/web/package.json +++ b/packages/auth-providers/clerk/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/custom/setup/package.json b/packages/auth-providers/custom/setup/package.json index 007bb3d3bb6d..5ae5e8233715 100644 --- a/packages/auth-providers/custom/setup/package.json +++ b/packages/auth-providers/custom/setup/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/dbAuth/api/package.json b/packages/auth-providers/dbAuth/api/package.json index a49cb638969e..a0ca9520ce8f 100644 --- a/packages/auth-providers/dbAuth/api/package.json +++ b/packages/auth-providers/dbAuth/api/package.json @@ -26,7 +26,7 @@ "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/project-config": "6.0.7", "base64url": "3.0.1", - "core-js": "3.34.0", + "core-js": "3.35.1", "md5": "2.3.0", "uuid": "9.0.1" }, diff --git a/packages/auth-providers/dbAuth/setup/package.json b/packages/auth-providers/dbAuth/setup/package.json index 735302d6a2c6..b2b7ac41d723 100644 --- a/packages/auth-providers/dbAuth/setup/package.json +++ b/packages/auth-providers/dbAuth/setup/package.json @@ -24,7 +24,7 @@ "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", "@simplewebauthn/browser": "7.4.0", - "core-js": "3.34.0", + "core-js": "3.35.1", "prompts": "2.4.2", "terminal-link": "2.1.1" }, diff --git a/packages/auth-providers/dbAuth/web/package.json b/packages/auth-providers/dbAuth/web/package.json index becc349adc5f..984f6f7a8a73 100644 --- a/packages/auth-providers/dbAuth/web/package.json +++ b/packages/auth-providers/dbAuth/web/package.json @@ -27,7 +27,7 @@ "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", "@simplewebauthn/browser": "7.4.0", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/firebase/api/package.json b/packages/auth-providers/firebase/api/package.json index 8aafbc7533ab..4a8f4ea56575 100644 --- a/packages/auth-providers/firebase/api/package.json +++ b/packages/auth-providers/firebase/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "firebase-admin": "11.11.0" }, "devDependencies": { diff --git a/packages/auth-providers/firebase/setup/package.json b/packages/auth-providers/firebase/setup/package.json index be1438dc1736..62ffdb2927db 100644 --- a/packages/auth-providers/firebase/setup/package.json +++ b/packages/auth-providers/firebase/setup/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/firebase/web/package.json b/packages/auth-providers/firebase/web/package.json index 6c2fa95170c8..93d6393587c5 100644 --- a/packages/auth-providers/firebase/web/package.json +++ b/packages/auth-providers/firebase/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/netlify/api/package.json b/packages/auth-providers/netlify/api/package.json index 2a8737cceefd..f80cfa916c32 100644 --- a/packages/auth-providers/netlify/api/package.json +++ b/packages/auth-providers/netlify/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "jsonwebtoken": "9.0.2" }, "devDependencies": { diff --git a/packages/auth-providers/netlify/setup/package.json b/packages/auth-providers/netlify/setup/package.json index a649b1365893..f4f0b325e500 100644 --- a/packages/auth-providers/netlify/setup/package.json +++ b/packages/auth-providers/netlify/setup/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/netlify/web/package.json b/packages/auth-providers/netlify/web/package.json index 0f160b714992..b6a4b6cf1b37 100644 --- a/packages/auth-providers/netlify/web/package.json +++ b/packages/auth-providers/netlify/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/supabase/api/package.json b/packages/auth-providers/supabase/api/package.json index 53c6ae4450b4..c4cb4b4239b7 100644 --- a/packages/auth-providers/supabase/api/package.json +++ b/packages/auth-providers/supabase/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "jsonwebtoken": "9.0.2" }, "devDependencies": { diff --git a/packages/auth-providers/supabase/setup/package.json b/packages/auth-providers/supabase/setup/package.json index a9b3531b8896..0db831b27abb 100644 --- a/packages/auth-providers/supabase/setup/package.json +++ b/packages/auth-providers/supabase/setup/package.json @@ -23,7 +23,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/supabase/web/package.json b/packages/auth-providers/supabase/web/package.json index 31896464e9df..a536288079b5 100644 --- a/packages/auth-providers/supabase/web/package.json +++ b/packages/auth-providers/supabase/web/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/supertokens/api/package.json b/packages/auth-providers/supertokens/api/package.json index 31ac9b93a154..4773ed13f360 100644 --- a/packages/auth-providers/supertokens/api/package.json +++ b/packages/auth-providers/supertokens/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "jsonwebtoken": "9.0.2", "jwks-rsa": "3.1.0" }, diff --git a/packages/auth-providers/supertokens/setup/package.json b/packages/auth-providers/supertokens/setup/package.json index b1de165d4a5b..029f5aeeca47 100644 --- a/packages/auth-providers/supertokens/setup/package.json +++ b/packages/auth-providers/supertokens/setup/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/cli-helpers": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth-providers/supertokens/web/package.json b/packages/auth-providers/supertokens/web/package.json index 91a15bb7d269..5ae5ee1044d3 100644 --- a/packages/auth-providers/supertokens/web/package.json +++ b/packages/auth-providers/supertokens/web/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/auth/package.json b/packages/auth/package.json index 6e02ca6d6661..c515f676b966 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "react": "18.2.0" }, "devDependencies": { diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index 8efeec51e7bb..c64d621fd71d 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -39,7 +39,7 @@ "babel-plugin-auto-import": "1.1.0", "babel-plugin-graphql-tag": "3.3.0", "babel-plugin-module-resolver": "5.0.0", - "core-js": "3.34.0", + "core-js": "3.35.1", "fast-glob": "3.3.2", "graphql": "16.8.1", "typescript": "5.3.3" diff --git a/packages/babel-config/src/__tests__/api.test.ts b/packages/babel-config/src/__tests__/api.test.ts index 284ceed380f2..97581def11d9 100644 --- a/packages/babel-config/src/__tests__/api.test.ts +++ b/packages/babel-config/src/__tests__/api.test.ts @@ -58,7 +58,7 @@ describe('api', () => { { "corejs": { "proposals": true, - "version": "3.34", + "version": "3.35", }, "exclude": [ "@babel/plugin-transform-class-properties", diff --git a/packages/cli/package.json b/packages/cli/package.json index 7134c86a10bd..9cc70b6046b0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -55,7 +55,7 @@ "ci-info": "4.0.0", "concurrently": "8.2.2", "configstore": "3.1.5", - "core-js": "3.34.0", + "core-js": "3.35.1", "cross-env": "7.0.3", "decamelize": "5.0.1", "dotenv-defaults": "5.0.2", diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 0cce97583c60..ff67bc89a411 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -36,7 +36,7 @@ "@vscode/ripgrep": "1.15.6", "@whatwg-node/fetch": "0.9.14", "cheerio": "1.0.0-rc.12", - "core-js": "3.34.0", + "core-js": "3.35.1", "deepmerge": "4.3.1", "execa": "5.1.1", "fast-glob": "3.3.2", diff --git a/packages/core/package.json b/packages/core/package.json index 5c35cf30b40f..73b1e301323f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -47,7 +47,7 @@ "babel-loader": "^9.1.3", "babel-timing": "0.9.1", "copy-webpack-plugin": "11.0.0", - "core-js": "3.34.0", + "core-js": "3.35.1", "css-loader": "6.8.1", "css-minimizer-webpack-plugin": "5.0.1", "dotenv-webpack": "8.0.1", diff --git a/packages/forms/package.json b/packages/forms/package.json index 2e4a47b364bd..b6bb5405fd08 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "core-js": "3.34.0", + "core-js": "3.35.1", "pascalcase": "1.0.0", "react-hook-form": "7.49.3" }, diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 60448300c981..633888dc67aa 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -37,7 +37,7 @@ "@opentelemetry/api": "1.7.0", "@redwoodjs/api": "6.0.7", "@redwoodjs/context": "6.0.7", - "core-js": "3.34.0", + "core-js": "3.35.1", "graphql": "16.8.1", "graphql-scalars": "1.22.4", "graphql-tag": "2.12.6", diff --git a/packages/internal/package.json b/packages/internal/package.json index 551a7aeb86bd..907f731b94ea 100644 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -52,7 +52,7 @@ "@redwoodjs/router": "6.0.7", "@sdl-codegen/node": "0.0.10", "chalk": "4.1.2", - "core-js": "3.34.0", + "core-js": "3.35.1", "deepmerge": "4.3.1", "esbuild": "0.20.0", "fast-glob": "3.3.2", diff --git a/packages/prerender/package.json b/packages/prerender/package.json index 92fa2ea9b366..fe9beefdaf36 100644 --- a/packages/prerender/package.json +++ b/packages/prerender/package.json @@ -35,7 +35,7 @@ "@whatwg-node/fetch": "0.9.14", "babel-plugin-ignore-html-and-css-imports": "0.1.0", "cheerio": "1.0.0-rc.12", - "core-js": "3.34.0", + "core-js": "3.35.1", "graphql": "16.8.1", "mime-types": "2.1.35" }, diff --git a/packages/record/package.json b/packages/record/package.json index 9b30720a1cf2..0911fb78a98e 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -26,7 +26,7 @@ "@babel/runtime-corejs3": "7.23.9", "@prisma/client": "5.8.1", "@redwoodjs/project-config": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/router/package.json b/packages/router/package.json index 32f3bec05c50..474025887fa3 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -27,7 +27,7 @@ "@babel/runtime-corejs3": "7.23.9", "@reach/skip-nav": "0.18.0", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0" + "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/packages/structure/package.json b/packages/structure/package.json index 437a5d156a1e..0dde5e6ff212 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -31,7 +31,7 @@ "@redwoodjs/project-config": "6.0.7", "@types/line-column": "1.0.0", "camelcase": "6.3.0", - "core-js": "3.34.0", + "core-js": "3.35.1", "deepmerge": "4.3.1", "dotenv-defaults": "5.0.2", "enquirer": "2.4.1", diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index d21d48be88db..75b966f2d391 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -27,7 +27,7 @@ "@redwoodjs/structure": "6.0.7", "@whatwg-node/fetch": "0.9.14", "ci-info": "4.0.0", - "core-js": "3.34.0", + "core-js": "3.35.1", "envinfo": "7.11.0", "systeminformation": "5.21.20", "uuid": "9.0.1", diff --git a/packages/testing/package.json b/packages/testing/package.json index 2cc9269ee94b..c45f0e63a77f 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -48,7 +48,7 @@ "@types/webpack": "5.28.5", "@types/webpack-env": "1.18.4", "babel-jest": "^29.7.0", - "core-js": "3.34.0", + "core-js": "3.35.1", "fast-glob": "3.3.2", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", diff --git a/packages/vite/package.json b/packages/vite/package.json index 90b33f244047..23dc6fa000fb 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -31,7 +31,7 @@ "@redwoodjs/project-config": "6.0.7", "@vitejs/plugin-react": "4.2.1", "buffer": "6.0.3", - "core-js": "3.34.0", + "core-js": "3.35.1", "vite": "4.5.2", "yargs-parser": "21.1.1" }, diff --git a/packages/web/package.json b/packages/web/package.json index 008cb55b5164..8b059f93f56b 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -40,7 +40,7 @@ "@apollo/client": "3.8.10", "@babel/runtime-corejs3": "7.23.9", "@redwoodjs/auth": "6.0.7", - "core-js": "3.34.0", + "core-js": "3.35.1", "graphql": "16.8.1", "graphql-sse": "2.5.2", "graphql-tag": "2.12.6", diff --git a/yarn.lock b/yarn.lock index afa50bbbfa62..5800b8e57398 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7432,7 +7432,7 @@ __metadata: aws-lambda: "npm:1.0.7" chalk: "npm:4.1.2" chokidar: "npm:3.5.3" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" dotenv-defaults: "npm:5.0.2" fast-glob: "npm:3.3.2" fast-json-parse: "npm:1.0.3" @@ -7473,7 +7473,7 @@ __metadata: "@types/pascalcase": "npm:1.0.3" "@types/split2": "npm:4.2.3" "@whatwg-node/fetch": "npm:0.9.14" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" humanize-string: "npm:2.1.0" jsonwebtoken: "npm:9.0.2" memjs: "npm:1.3.1" @@ -7510,7 +7510,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/jsonwebtoken": "npm:9.0.5" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" typescript: "npm:5.3.3" @@ -7527,7 +7527,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -7543,7 +7543,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7562,7 +7562,7 @@ __metadata: "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" typescript: "npm:5.3.3" @@ -7579,7 +7579,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -7596,7 +7596,7 @@ __metadata: "@redwoodjs/auth": "npm:6.0.7" "@types/netlify-identity-widget": "npm:1.9.6" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7615,7 +7615,7 @@ __metadata: "@clerk/clerk-sdk-node": "npm:4.13.1" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -7630,7 +7630,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -7646,7 +7646,7 @@ __metadata: "@clerk/types": "npm:3.60.0" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7664,7 +7664,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -7683,7 +7683,7 @@ __metadata: "@types/md5": "npm:2.3.5" "@types/uuid": "npm:9.0.7" base64url: "npm:3.0.1" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" md5: "npm:2.3.0" typescript: "npm:5.3.3" uuid: "npm:9.0.1" @@ -7702,7 +7702,7 @@ __metadata: "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" prompts: "npm:2.4.2" terminal-link: "npm:2.1.1" typescript: "npm:5.3.3" @@ -7720,7 +7720,7 @@ __metadata: "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jest: "npm:29.7.0" react: "npm:18.2.0" typescript: "npm:5.3.3" @@ -7736,7 +7736,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" firebase-admin: "npm:11.11.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7752,7 +7752,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -7767,7 +7767,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" firebase: "npm:10.6.0" jest: "npm:29.7.0" react: "npm:18.2.0" @@ -7787,7 +7787,7 @@ __metadata: "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7803,7 +7803,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -7819,7 +7819,7 @@ __metadata: "@redwoodjs/auth": "npm:6.0.7" "@types/netlify-identity-widget": "npm:1.9.6" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7838,7 +7838,7 @@ __metadata: "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7854,7 +7854,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -7868,7 +7868,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@supabase/supabase-js": "npm:2.39.0" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7886,7 +7886,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/api": "npm:6.0.7" "@types/jsonwebtoken": "npm:9.0.5" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" jwks-rsa: "npm:3.1.0" typescript: "npm:5.3.3" @@ -7905,7 +7905,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/cli-helpers": "npm:6.0.7" "@types/yargs": "npm:17.0.32" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" memfs: "npm:4.6.0" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -7921,7 +7921,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" react: "npm:18.2.0" supertokens-auth-react: "npm:0.34.0" typescript: "npm:5.3.3" @@ -7940,7 +7940,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jest: "npm:29.7.0" msw: "npm:1.3.2" react: "npm:18.2.0" @@ -7973,7 +7973,7 @@ __metadata: babel-plugin-graphql-tag: "npm:3.3.0" babel-plugin-module-resolver: "npm:5.0.0" babel-plugin-tester: "npm:11.0.4" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" fast-glob: "npm:3.3.2" graphql: "npm:16.8.1" jest: "npm:29.7.0" @@ -8085,7 +8085,7 @@ __metadata: ci-info: "npm:4.0.0" concurrently: "npm:8.2.2" configstore: "npm:3.1.5" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" cross-env: "npm:7.0.3" decamelize: "npm:5.0.1" dotenv-defaults: "npm:5.0.2" @@ -8147,7 +8147,7 @@ __metadata: "@vscode/ripgrep": "npm:1.15.6" "@whatwg-node/fetch": "npm:0.9.14" cheerio: "npm:1.0.0-rc.12" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" deepmerge: "npm:4.3.1" execa: "npm:5.1.1" fast-glob: "npm:3.3.2" @@ -8191,7 +8191,7 @@ __metadata: babel-loader: "npm:^9.1.3" babel-timing: "npm:0.9.1" copy-webpack-plugin: "npm:11.0.0" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" css-loader: "npm:6.8.1" css-minimizer-webpack-plugin: "npm:5.0.1" dotenv-webpack: "npm:8.0.1" @@ -8326,7 +8326,7 @@ __metadata: "@types/pascalcase": "npm:1.0.3" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" graphql: "npm:16.8.1" jest: "npm:29.7.0" nodemon: "npm:3.0.2" @@ -8370,7 +8370,7 @@ __metadata: "@types/uuid": "npm:9.0.7" "@whatwg-node/fetch": "npm:0.9.14" aws-lambda: "npm:1.0.7" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" graphql: "npm:16.8.1" graphql-scalars: "npm:1.22.4" graphql-tag: "npm:2.12.6" @@ -8413,7 +8413,7 @@ __metadata: "@sdl-codegen/node": "npm:0.0.10" "@types/fs-extra": "npm:11.0.4" chalk: "npm:4.1.2" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" deepmerge: "npm:4.3.1" esbuild: "npm:0.20.0" fast-glob: "npm:3.3.2" @@ -8528,7 +8528,7 @@ __metadata: babel-plugin-ignore-html-and-css-imports: "npm:0.1.0" babel-plugin-tester: "npm:11.0.4" cheerio: "npm:1.0.0-rc.12" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" graphql: "npm:16.8.1" jest: "npm:29.7.0" mime-types: "npm:2.1.35" @@ -8592,7 +8592,7 @@ __metadata: "@prisma/client": "npm:5.8.1" "@prisma/internals": "npm:5.8.1" "@redwoodjs/project-config": "npm:6.0.7" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" esbuild: "npm:0.20.0" vitest: "npm:1.2.2" languageName: unknown @@ -8609,7 +8609,7 @@ __metadata: "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" jest: "npm:29.7.0" react: "npm:18.2.0" react-dom: "npm:18.2.0" @@ -8638,7 +8638,7 @@ __metadata: "@types/node": "npm:20.10.4" "@types/vscode": "npm:1.79.1" camelcase: "npm:6.3.0" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" deepmerge: "npm:4.3.1" dotenv-defaults: "npm:5.0.2" enquirer: "npm:2.4.1" @@ -8674,7 +8674,7 @@ __metadata: "@types/yargs": "npm:17.0.32" "@whatwg-node/fetch": "npm:0.9.14" ci-info: "npm:4.0.0" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" envinfo: "npm:7.11.0" systeminformation: "npm:5.21.20" uuid: "npm:9.0.1" @@ -8709,7 +8709,7 @@ __metadata: "@types/webpack": "npm:5.28.5" "@types/webpack-env": "npm:1.18.4" babel-jest: "npm:^29.7.0" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" fast-glob: "npm:3.3.2" jest: "npm:29.7.0" jest-environment-jsdom: "npm:29.7.0" @@ -8745,7 +8745,7 @@ __metadata: "@types/yargs-parser": "npm:21.0.3" "@vitejs/plugin-react": "npm:4.2.1" buffer: "npm:6.0.3" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" glob: "npm:10.3.10" typescript: "npm:5.3.3" vite: "npm:4.5.2" @@ -8787,7 +8787,7 @@ __metadata: "@testing-library/react": "npm:14.1.2" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" graphql: "npm:16.8.1" graphql-sse: "npm:2.5.2" graphql-tag: "npm:2.12.6" @@ -15590,10 +15590,10 @@ __metadata: languageName: node linkType: hard -"core-js@npm:3.34.0, core-js@npm:^3.27.2, core-js@npm:^3.30.2": - version: 3.34.0 - resolution: "core-js@npm:3.34.0" - checksum: 408a77898abe03bf3e5dec2a451c36f4745081cca9022f8bdf9b817d57bb6d3a534d555f47a4b95e1daa5e21dbc79122eac2402e25720d425f5925127e55dcd8 +"core-js@npm:3.35.1, core-js@npm:^3.27.2, core-js@npm:^3.30.2": + version: 3.35.1 + resolution: "core-js@npm:3.35.1" + checksum: ebc8e22c36d13bcf2140cbc1d8ad65d1b08192bff4c43ade70c72eac103cb4dcfbc521f2b1ad1c74881b0a4353e64986537893ae4f07888e49228340efa13ae6 languageName: node linkType: hard @@ -29539,7 +29539,7 @@ __metadata: babel-plugin-auto-import: "npm:1.1.0" babel-plugin-remove-code: "npm:0.0.6" boxen: "npm:5.1.2" - core-js: "npm:3.34.0" + core-js: "npm:3.35.1" cypress: "npm:13.6.1" cypress-fail-fast: "npm:7.1.0" cypress-wait-until: "npm:3.0.1" From 07972e41039748723c639026fe14804b9d1af14c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 01:18:33 +0000 Subject: [PATCH 041/119] fix(deps): update dependency @clerk/clerk-sdk-node to v4.13.7 (#9923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@clerk/clerk-sdk-node](https://clerk.com/) ([source](https://togithub.com/clerk/javascript/tree/HEAD/packages/sdk-node)) | [`4.13.1` -> `4.13.7`](https://renovatebot.com/diffs/npm/@clerk%2fclerk-sdk-node/4.13.1/4.13.7) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@clerk%2fclerk-sdk-node/4.13.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@clerk%2fclerk-sdk-node/4.13.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@clerk%2fclerk-sdk-node/4.13.1/4.13.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@clerk%2fclerk-sdk-node/4.13.1/4.13.7?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
clerk/javascript (@​clerk/clerk-sdk-node) ### [`v4.13.7`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-sdk-node%404.13.7) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-sdk-node@4.13.6...@clerk/clerk-sdk-node@4.13.7) ##### Patch Changes - Updated dependencies \[[`fee77c8a8`](https://togithub.com/clerk/javascript/commit/fee77c8a82e27ce0222efd3256111898e3388558)]: - [@​clerk/backend](https://togithub.com/clerk/backend)[@​0](https://togithub.com/0).37.3 ### [`v4.13.6`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-sdk-node%404.13.6) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-sdk-node@4.13.5...@clerk/clerk-sdk-node@4.13.6) ##### Patch Changes - Replace the `Clerk-Backend-SDK` header with `User-Agent` in BAPI requests and update it's value to contain both the package name and the package version of the clerk package ([#​2579](https://togithub.com/clerk/javascript/pull/2579)) by [@​nikosdouvlis](https://togithub.com/nikosdouvlis) executing the request. Eg request from `@clerk/nextjs` to BAPI with append `User-Agent: @​clerk/nextjs@5.0.0-alpha-v5.16` using the latest version. Miscellaneous changes: The backend test build changed to use tsup. - Updated dependencies \[[`c59a2d4a2`](https://togithub.com/clerk/javascript/commit/c59a2d4a22166076340b3c5c5e20c112a138acbe), [`2a615bf98`](https://togithub.com/clerk/javascript/commit/2a615bf98a22250c9105671ce72bf5374602802f)]: - [@​clerk/backend](https://togithub.com/clerk/backend)[@​0](https://togithub.com/0).37.2 ### [`v4.13.5`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-sdk-node%404.13.5) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-sdk-node@4.13.4...@clerk/clerk-sdk-node@4.13.5) ##### Patch Changes - Updated dependencies \[[`71b4b9ca2`](https://togithub.com/clerk/javascript/commit/71b4b9ca26db9b4f3b74b0de3eaa1584b656847a), [`65332d744`](https://togithub.com/clerk/javascript/commit/65332d7440419e275e76ffde104b7d0fe98ceeda)]: - [@​clerk/backend](https://togithub.com/clerk/backend)[@​0](https://togithub.com/0).37.1 - [@​clerk/shared](https://togithub.com/clerk/shared)[@​1](https://togithub.com/1).3.1 ### [`v4.13.4`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-sdk-node%404.13.4) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-sdk-node@4.13.3...@clerk/clerk-sdk-node@4.13.4) ##### Patch Changes - Updated dependencies \[[`3ece3f80f`](https://togithub.com/clerk/javascript/commit/3ece3f80fbcfc4066796248f72f3a82fb261e23d), [`0bf0bdd56`](https://togithub.com/clerk/javascript/commit/0bf0bdd56268f53aa8b27f5d136c288afb10944b)]: - [@​clerk/backend](https://togithub.com/clerk/backend)[@​0](https://togithub.com/0).37.0 - [@​clerk/shared](https://togithub.com/clerk/shared)[@​1](https://togithub.com/1).3.0 ### [`v4.13.3`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-sdk-node%404.13.3) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-sdk-node@4.13.2...@clerk/clerk-sdk-node@4.13.3) ##### Patch Changes - Updated dependencies \[[`df40705d3`](https://togithub.com/clerk/javascript/commit/df40705d3fbb22b8b4d6fd8ee0a52b100146d88a), [`a8feab74a`](https://togithub.com/clerk/javascript/commit/a8feab74ade1521df091cfc15295942e418034df)]: - [@​clerk/shared](https://togithub.com/clerk/shared)[@​1](https://togithub.com/1).2.0 - [@​clerk/backend](https://togithub.com/clerk/backend)[@​0](https://togithub.com/0).36.1 ### [`v4.13.2`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-sdk-node%404.13.2) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-sdk-node@4.13.1...@clerk/clerk-sdk-node@4.13.2) ##### Patch Changes - Updated dependencies \[[`b4868ab8f`](https://togithub.com/clerk/javascript/commit/b4868ab8fdb84144d2016b49e67e7fdd2c348316), [`2dc93d4d8`](https://togithub.com/clerk/javascript/commit/2dc93d4d8dcdc5f83c21576400ae6d6f43705847)]: - [@​clerk/types](https://togithub.com/clerk/types)[@​3](https://togithub.com/3).60.0 - [@​clerk/backend](https://togithub.com/clerk/backend)[@​0](https://togithub.com/0).36.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../auth-providers/clerk/api/package.json | 2 +- yarn.lock | 53 +++++++++++-------- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/packages/auth-providers/clerk/api/package.json b/packages/auth-providers/clerk/api/package.json index e3aa15225626..255b5a54f6c7 100644 --- a/packages/auth-providers/clerk/api/package.json +++ b/packages/auth-providers/clerk/api/package.json @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@clerk/clerk-sdk-node": "4.13.1", + "@clerk/clerk-sdk-node": "4.13.7", "core-js": "3.35.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 5800b8e57398..b170883de97d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2101,12 +2101,12 @@ __metadata: languageName: node linkType: hard -"@clerk/backend@npm:0.35.1": - version: 0.35.1 - resolution: "@clerk/backend@npm:0.35.1" +"@clerk/backend@npm:0.37.3": + version: 0.37.3 + resolution: "@clerk/backend@npm:0.37.3" dependencies: - "@clerk/shared": "npm:1.1.1" - "@clerk/types": "npm:3.59.0" + "@clerk/shared": "npm:1.3.1" + "@clerk/types": "npm:3.60.0" "@peculiar/webcrypto": "npm:1.4.1" "@types/node": "npm:16.18.6" cookie: "npm:0.5.0" @@ -2114,7 +2114,7 @@ __metadata: node-fetch-native: "npm:1.0.1" snakecase-keys: "npm:5.4.4" tslib: "npm:2.4.1" - checksum: 83d89ab874304a334b9c49884d2194a1c09fe85634e734b5c086f464db433527f19cfea685d1aef3e7705827c5369bc3f61f07eb4b7875b06a574e9441c19ef0 + checksum: 9a5497b35a23cc12beb91a88823608bf4e59869c367fb794e5c26f01dec81151a53d94f3bf197e09e4cb629797e53fc38cef9671973f62e8834d5b67bf9b85a5 languageName: node linkType: hard @@ -2131,20 +2131,20 @@ __metadata: languageName: node linkType: hard -"@clerk/clerk-sdk-node@npm:4.13.1": - version: 4.13.1 - resolution: "@clerk/clerk-sdk-node@npm:4.13.1" +"@clerk/clerk-sdk-node@npm:4.13.7": + version: 4.13.7 + resolution: "@clerk/clerk-sdk-node@npm:4.13.7" dependencies: - "@clerk/backend": "npm:0.35.1" - "@clerk/shared": "npm:1.1.1" - "@clerk/types": "npm:3.59.0" + "@clerk/backend": "npm:0.37.3" + "@clerk/shared": "npm:1.3.1" + "@clerk/types": "npm:3.60.0" "@types/cookies": "npm:0.7.7" "@types/express": "npm:4.17.14" "@types/node-fetch": "npm:2.6.2" camelcase-keys: "npm:6.2.2" snakecase-keys: "npm:3.2.1" tslib: "npm:2.4.1" - checksum: 6ef16ff5edc84563883f141935bc0c34d1c69dfa09a23cda135cd48feb5521d0cbcd6d6f275bb710f10a5dcb322750ddafda408a6ab01903af430104219e6309 + checksum: 51bf5e0b1a7dbd4733d9a722cb21618f869c52dacd9925f84eccd65b3faea2cf55d16360c68ccca5f5a30d2611ee728a382e7ff2a9396ff93e56a6ffc8a2a01b languageName: node linkType: hard @@ -2164,21 +2164,28 @@ __metadata: languageName: node linkType: hard -"@clerk/types@npm:3.58.1": - version: 3.58.1 - resolution: "@clerk/types@npm:3.58.1" +"@clerk/shared@npm:1.3.1": + version: 1.3.1 + resolution: "@clerk/shared@npm:1.3.1" dependencies: - csstype: "npm:3.1.1" - checksum: 4d87820ab676cc8897e91d4f37ad1074200790c6fe1c866470c786877930e9eda42dea25f778518171a6e56f16f4965fa750bdfc1b32b7ebf1c3f81770ae1055 + glob-to-regexp: "npm:0.4.1" + js-cookie: "npm:3.0.1" + swr: "npm:2.2.0" + peerDependencies: + react: ">=16" + peerDependenciesMeta: + react: + optional: true + checksum: 03a2683fedef91d3a1a5123dffacd2698b13f15327ad22e7908d4e9770fb988cff8faae52d2028285fadbd759612b4afb77128bc5f44f6845adf9d3f7db207f7 languageName: node linkType: hard -"@clerk/types@npm:3.59.0": - version: 3.59.0 - resolution: "@clerk/types@npm:3.59.0" +"@clerk/types@npm:3.58.1": + version: 3.58.1 + resolution: "@clerk/types@npm:3.58.1" dependencies: csstype: "npm:3.1.1" - checksum: 1ca212fd94ddc22386a5151e51584d96dd62738916b8bf88269c6459bc87d62913f9e80c88a8ea27a4724fe6511fcc9923e68fd54f1467f620a88ce1c345bfe9 + checksum: 4d87820ab676cc8897e91d4f37ad1074200790c6fe1c866470c786877930e9eda42dea25f778518171a6e56f16f4965fa750bdfc1b32b7ebf1c3f81770ae1055 languageName: node linkType: hard @@ -7612,7 +7619,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@clerk/clerk-sdk-node": "npm:4.13.1" + "@clerk/clerk-sdk-node": "npm:4.13.7" "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" core-js: "npm:3.35.1" From 020c2debfb53c4d96ccb7a49bbf7441710435916 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 01:20:08 +0000 Subject: [PATCH 042/119] chore(deps): update dependency @testing-library/dom to v9.3.4 (#9924) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@testing-library/dom](https://togithub.com/testing-library/dom-testing-library) | [`9.3.3` -> `9.3.4`](https://renovatebot.com/diffs/npm/@testing-library%2fdom/9.3.3/9.3.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@testing-library%2fdom/9.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@testing-library%2fdom/9.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@testing-library%2fdom/9.3.3/9.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@testing-library%2fdom/9.3.3/9.3.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
testing-library/dom-testing-library (@​testing-library/dom) ### [`v9.3.4`](https://togithub.com/testing-library/dom-testing-library/releases/tag/v9.3.4) [Compare Source](https://togithub.com/testing-library/dom-testing-library/compare/v9.3.3...v9.3.4) ##### Bug Fixes - Stop calling `waitFor` callback after timeout ([#​1271](https://togithub.com/testing-library/dom-testing-library/issues/1271)) ([9aaf715](https://togithub.com/testing-library/dom-testing-library/commit/9aaf71524beaeafdf9d8b690a4a78867fa50a5d2))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/forms/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/forms/package.json b/packages/forms/package.json index b6bb5405fd08..c7ec5ec29e2a 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -31,7 +31,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@testing-library/dom": "9.3.3", + "@testing-library/dom": "9.3.4", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.1", diff --git a/yarn.lock b/yarn.lock index b170883de97d..02ed6a4890aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8326,7 +8326,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@testing-library/dom": "npm:9.3.3" + "@testing-library/dom": "npm:9.3.4" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.1" @@ -10247,9 +10247,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:9.3.3, @testing-library/dom@npm:^9.0.0": - version: 9.3.3 - resolution: "@testing-library/dom@npm:9.3.3" +"@testing-library/dom@npm:9.3.4, @testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" dependencies: "@babel/code-frame": "npm:^7.10.4" "@babel/runtime": "npm:^7.12.5" @@ -10259,7 +10259,7 @@ __metadata: dom-accessibility-api: "npm:^0.5.9" lz-string: "npm:^1.5.0" pretty-format: "npm:^27.0.2" - checksum: c3bbd67503634fd955233dc172531640656701fe35ecb9a83f85e5965874b786452f5e7c26b4f8b3b4fc4379f3a80193c74425b57843ba191f4845e22b0ac483 + checksum: 147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 languageName: node linkType: hard From 0cd7a1234a7b4a1448e8d0a2ddd61713403926a5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 01:21:55 +0000 Subject: [PATCH 043/119] fix(deps): update dependency @testing-library/user-event to v14.5.2 (#9925) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@testing-library/user-event](https://togithub.com/testing-library/user-event) | [`14.5.1` -> `14.5.2`](https://renovatebot.com/diffs/npm/@testing-library%2fuser-event/14.5.1/14.5.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@testing-library%2fuser-event/14.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@testing-library%2fuser-event/14.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@testing-library%2fuser-event/14.5.1/14.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@testing-library%2fuser-event/14.5.1/14.5.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
testing-library/user-event (@​testing-library/user-event) ### [`v14.5.2`](https://togithub.com/testing-library/user-event/releases/tag/v14.5.2) [Compare Source](https://togithub.com/testing-library/user-event/compare/v14.5.1...v14.5.2) ##### Bug Fixes - remove interop and deep DTL imports ([6a3c896](https://togithub.com/testing-library/user-event/commit/6a3c896bd2d77d284c6deab4f4f02c0fb366824b))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/forms/package.json | 2 +- packages/testing/package.json | 2 +- yarn.lock | 14 +++++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 6cae04e0eb46..3c9670801ff9 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@playwright/test": "1.41.1", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", - "@testing-library/user-event": "14.5.1", + "@testing-library/user-event": "14.5.2", "@types/babel__generator": "7.6.7", "@types/fs-extra": "11.0.4", "@types/jest": "29.5.8", diff --git a/packages/forms/package.json b/packages/forms/package.json index c7ec5ec29e2a..9b6299d1f0a3 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -34,7 +34,7 @@ "@testing-library/dom": "9.3.4", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", - "@testing-library/user-event": "14.5.1", + "@testing-library/user-event": "14.5.2", "@types/pascalcase": "1.0.3", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", diff --git a/packages/testing/package.json b/packages/testing/package.json index c45f0e63a77f..de5c47239ff8 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -38,7 +38,7 @@ "@redwoodjs/web": "6.0.7", "@testing-library/jest-dom": "6.1.5", "@testing-library/react": "14.1.2", - "@testing-library/user-event": "14.5.1", + "@testing-library/user-event": "14.5.2", "@types/aws-lambda": "8.10.126", "@types/babel-core": "6.25.10", "@types/jest": "29.5.8", diff --git a/yarn.lock b/yarn.lock index 02ed6a4890aa..c160bea9c4f4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8329,7 +8329,7 @@ __metadata: "@testing-library/dom": "npm:9.3.4" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" - "@testing-library/user-event": "npm:14.5.1" + "@testing-library/user-event": "npm:14.5.2" "@types/pascalcase": "npm:1.0.3" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" @@ -8706,7 +8706,7 @@ __metadata: "@redwoodjs/web": "npm:6.0.7" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" - "@testing-library/user-event": "npm:14.5.1" + "@testing-library/user-event": "npm:14.5.2" "@types/aws-lambda": "npm:8.10.126" "@types/babel-core": "npm:6.25.10" "@types/jest": "npm:29.5.8" @@ -10323,12 +10323,12 @@ __metadata: languageName: node linkType: hard -"@testing-library/user-event@npm:14.5.1": - version: 14.5.1 - resolution: "@testing-library/user-event@npm:14.5.1" +"@testing-library/user-event@npm:14.5.2": + version: 14.5.2 + resolution: "@testing-library/user-event@npm:14.5.2" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 1e00d6ead23377885b906db6e46e259161a0efb4138f7527481d7435f3c8f65cb7e3eab2900e2ac1886fa6dd03416e773a3a60dea87a9a2086a7127dee315f6f + checksum: 68a0c2aa28a3c8e6eb05cafee29705438d7d8a9427423ce5064d44f19c29e89b5636de46dd2f28620fb10abba75c67130185bbc3aa23ac1163a227a5f36641e1 languageName: node linkType: hard @@ -29534,7 +29534,7 @@ __metadata: "@playwright/test": "npm:1.41.1" "@testing-library/jest-dom": "npm:6.1.5" "@testing-library/react": "npm:14.1.2" - "@testing-library/user-event": "npm:14.5.1" + "@testing-library/user-event": "npm:14.5.2" "@types/babel__generator": "npm:7.6.7" "@types/fs-extra": "npm:11.0.4" "@types/jest": "npm:29.5.8" From 717aa471abfbeeef9d72a10fcd6a999ecf1acf28 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 17:23:16 -0800 Subject: [PATCH 044/119] chore(deps): update dependency @clerk/clerk-react to v4.30.3 (#9922) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@clerk/clerk-react](https://clerk.com/) ([source](https://togithub.com/clerk/javascript/tree/HEAD/packages/react)) | [`4.28.3` -> `4.30.3`](https://renovatebot.com/diffs/npm/@clerk%2fclerk-react/4.28.3/4.30.3) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@clerk%2fclerk-react/4.30.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@clerk%2fclerk-react/4.30.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@clerk%2fclerk-react/4.28.3/4.30.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@clerk%2fclerk-react/4.28.3/4.30.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
clerk/javascript (@​clerk/clerk-react) ### [`v4.30.3`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-react%404.30.3) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-react@4.30.2...@clerk/clerk-react@4.30.3) ##### Patch Changes - Updated dependencies \[[`65332d744`](https://togithub.com/clerk/javascript/commit/65332d7440419e275e76ffde104b7d0fe98ceeda)]: - [@​clerk/shared](https://togithub.com/clerk/shared)[@​1](https://togithub.com/1).3.1 ### [`v4.30.2`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-react%404.30.2) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-react@4.30.1...@clerk/clerk-react@4.30.2) ##### Patch Changes - Fix support of Clerk@v3 instance from `` ([#​2441](https://togithub.com/clerk/javascript/pull/2441)) by [@​dimkl](https://togithub.com/dimkl) - Updated dependencies \[[`0bf0bdd56`](https://togithub.com/clerk/javascript/commit/0bf0bdd56268f53aa8b27f5d136c288afb10944b)]: - [@​clerk/shared](https://togithub.com/clerk/shared)[@​1](https://togithub.com/1).3.0 ### [`v4.30.1`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-react%404.30.1) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-react@4.30.0...@clerk/clerk-react@4.30.1) ##### Patch Changes - Updated dependencies \[[`df40705d3`](https://togithub.com/clerk/javascript/commit/df40705d3fbb22b8b4d6fd8ee0a52b100146d88a)]: - [@​clerk/shared](https://togithub.com/clerk/shared)[@​1](https://togithub.com/1).2.0 ### [`v4.30.0`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-react%404.30.0) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-react@4.29.0...@clerk/clerk-react@4.30.0) ##### Minor Changes - Introduce Protect for authorization. ([#​2309](https://togithub.com/clerk/javascript/pull/2309)) by [@​panteliselef](https://togithub.com/panteliselef) Changes in public APIs: - Rename Gate to Protect - Support for permission checks. (Previously only roles could be used) - Remove the `experimental` tags and prefixes - Drop `some` from the `has` utility and Protect. Protect now accepts a `condition` prop where a function is expected with the `has` being exposed as the param. - Protect can now be used without required props. In this case behaves as ``, if no authorization props are passed. - `has` will throw an error if neither `permission` or `role` is passed. - `auth().protect()` for Nextjs App Router. Allow per page protection in app router. This utility will automatically throw a 404 error if user is not authorized or authenticated. - inside a page or layout file it will render the nearest `not-found` component set by the developer - inside a route handler it will return empty response body with a 404 status code ##### Patch Changes - Updated dependencies \[[`b4868ab8f`](https://togithub.com/clerk/javascript/commit/b4868ab8fdb84144d2016b49e67e7fdd2c348316), [`2dc93d4d8`](https://togithub.com/clerk/javascript/commit/2dc93d4d8dcdc5f83c21576400ae6d6f43705847)]: - [@​clerk/types](https://togithub.com/clerk/types)[@​3](https://togithub.com/3).60.0 ### [`v4.29.0`](https://togithub.com/clerk/javascript/releases/tag/%40clerk/clerk-react%404.29.0) [Compare Source](https://togithub.com/clerk/javascript/compare/@clerk/clerk-react@4.28.3...@clerk/clerk-react@4.29.0) ##### Minor Changes - Deprecate `Clerk.isReady()` in favor of `Clerk.loaded` ([#​2293](https://togithub.com/clerk/javascript/pull/2293)) by [@​dimkl](https://togithub.com/dimkl) ##### Patch Changes - Updated dependencies \[[`a62479810`](https://togithub.com/clerk/javascript/commit/a624798102236f77a667d8da13363b77486640f8)]: - [@​clerk/types](https://togithub.com/clerk/types)[@​3](https://togithub.com/3).59.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../auth-providers/clerk/web/package.json | 4 +- yarn.lock | 41 ++++--------------- 2 files changed, 10 insertions(+), 35 deletions(-) diff --git a/packages/auth-providers/clerk/web/package.json b/packages/auth-providers/clerk/web/package.json index 5c16d7258770..c4efdbb0f775 100644 --- a/packages/auth-providers/clerk/web/package.json +++ b/packages/auth-providers/clerk/web/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@clerk/clerk-react": "4.28.3", + "@clerk/clerk-react": "4.30.3", "@clerk/types": "3.60.0", "@types/react": "18.2.37", "react": "18.2.0", @@ -38,7 +38,7 @@ "vitest": "1.2.2" }, "peerDependencies": { - "@clerk/clerk-react": "4.28.3" + "@clerk/clerk-react": "4.30.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/yarn.lock b/yarn.lock index c160bea9c4f4..2c1831ec9ab0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2118,16 +2118,16 @@ __metadata: languageName: node linkType: hard -"@clerk/clerk-react@npm:4.28.3": - version: 4.28.3 - resolution: "@clerk/clerk-react@npm:4.28.3" +"@clerk/clerk-react@npm:4.30.3": + version: 4.30.3 + resolution: "@clerk/clerk-react@npm:4.30.3" dependencies: - "@clerk/shared": "npm:1.1.1" - "@clerk/types": "npm:3.58.1" + "@clerk/shared": "npm:1.3.1" + "@clerk/types": "npm:3.60.0" tslib: "npm:2.4.1" peerDependencies: react: ">=16" - checksum: 5b360bc43d35a9a66b8fe387df4283ad217221e90822bc12b3dbb8d41df9f638a877f9e6cfd2b7aac800f940744f94670668b239bc65732afcdbcbe04d7bc8d7 + checksum: 4db23f01d71b4f07f9ac7f76e26b3f7a826c8d72657f9110beb838ba62be6ff1553b7eb4d49415d574b463c261077bde28e17a7b79a9b0d6fd69f2bcad24030f languageName: node linkType: hard @@ -2148,22 +2148,6 @@ __metadata: languageName: node linkType: hard -"@clerk/shared@npm:1.1.1": - version: 1.1.1 - resolution: "@clerk/shared@npm:1.1.1" - dependencies: - glob-to-regexp: "npm:0.4.1" - js-cookie: "npm:3.0.1" - swr: "npm:2.2.0" - peerDependencies: - react: ">=16" - peerDependenciesMeta: - react: - optional: true - checksum: b46df70a1a5ae1381b760241700a78c2f08a7ca0890bc49dd8d3fd8d825db205dc9101283674c51aef49b19bc46cf367b0a022d4f39512d1074264c023314a5a - languageName: node - linkType: hard - "@clerk/shared@npm:1.3.1": version: 1.3.1 resolution: "@clerk/shared@npm:1.3.1" @@ -2180,15 +2164,6 @@ __metadata: languageName: node linkType: hard -"@clerk/types@npm:3.58.1": - version: 3.58.1 - resolution: "@clerk/types@npm:3.58.1" - dependencies: - csstype: "npm:3.1.1" - checksum: 4d87820ab676cc8897e91d4f37ad1074200790c6fe1c866470c786877930e9eda42dea25f778518171a6e56f16f4965fa750bdfc1b32b7ebf1c3f81770ae1055 - languageName: node - linkType: hard - "@clerk/types@npm:3.60.0": version: 3.60.0 resolution: "@clerk/types@npm:3.60.0" @@ -7649,7 +7624,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@clerk/clerk-react": "npm:4.28.3" + "@clerk/clerk-react": "npm:4.30.3" "@clerk/types": "npm:3.60.0" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" @@ -7658,7 +7633,7 @@ __metadata: typescript: "npm:5.3.3" vitest: "npm:1.2.2" peerDependencies: - "@clerk/clerk-react": 4.28.3 + "@clerk/clerk-react": 4.30.3 languageName: unknown linkType: soft From 443c3af31b4e96b25edd9c2e47020fd25e90a565 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 02:07:53 +0000 Subject: [PATCH 045/119] chore(deps): update dependency @testing-library/jest-dom to v6.3.0 (#9926) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@testing-library/jest-dom](https://togithub.com/testing-library/jest-dom) | [`6.1.5` -> `6.3.0`](https://renovatebot.com/diffs/npm/@testing-library%2fjest-dom/6.1.5/6.3.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@testing-library%2fjest-dom/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@testing-library%2fjest-dom/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@testing-library%2fjest-dom/6.1.5/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@testing-library%2fjest-dom/6.1.5/6.3.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
testing-library/jest-dom (@​testing-library/jest-dom) ### [`v6.3.0`](https://togithub.com/testing-library/jest-dom/releases/tag/v6.3.0) [Compare Source](https://togithub.com/testing-library/jest-dom/compare/v6.2.1...v6.3.0) ##### Features - Support for regular expressions in toHaveClass ([#​563](https://togithub.com/testing-library/jest-dom/issues/563)) ([9787ed5](https://togithub.com/testing-library/jest-dom/commit/9787ed59fcc930e3d33c8a6efe473da3eca01707)) ### [`v6.2.1`](https://togithub.com/testing-library/jest-dom/releases/tag/v6.2.1) [Compare Source](https://togithub.com/testing-library/jest-dom/compare/v6.2.0...v6.2.1) ##### Bug Fixes - Standalone types for "./matchers" export and add Bun support ([#​566](https://togithub.com/testing-library/jest-dom/issues/566)) ([5675b86](https://togithub.com/testing-library/jest-dom/commit/5675b8668c09345e064001784338a85b7bf9f2af)) ### [`v6.2.0`](https://togithub.com/testing-library/jest-dom/releases/tag/v6.2.0) [Compare Source](https://togithub.com/testing-library/jest-dom/compare/v6.1.6...v6.2.0) ##### Features - toHaveAccessibleDescription supports aria-description ([#​565](https://togithub.com/testing-library/jest-dom/issues/565)) ([1fb156c](https://togithub.com/testing-library/jest-dom/commit/1fb156c2b544e0069c56a72a2f1909fe04850f6c)) ### [`v6.1.6`](https://togithub.com/testing-library/jest-dom/releases/tag/v6.1.6) [Compare Source](https://togithub.com/testing-library/jest-dom/compare/v6.1.5...v6.1.6) ##### Bug Fixes - Upgrade [@​adobe/css-tools](https://togithub.com/adobe/css-tools) to v4.3.2 ([#​553](https://togithub.com/testing-library/jest-dom/issues/553)) ([b64b953](https://togithub.com/testing-library/jest-dom/commit/b64b953f76170f282c73329ee3479ede13610713))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- packages/auth/package.json | 2 +- packages/forms/package.json | 2 +- packages/testing/package.json | 2 +- packages/web/package.json | 2 +- yarn.lock | 42 ++++++++++++++++++++++------------- 6 files changed, 31 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 3c9670801ff9..1232053c9c4a 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "@faker-js/faker": "8.0.2", "@npmcli/arborist": "7.2.2", "@playwright/test": "1.41.1", - "@testing-library/jest-dom": "6.1.5", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", "@types/babel__generator": "7.6.7", diff --git a/packages/auth/package.json b/packages/auth/package.json index c515f676b966..495e70d328a0 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@testing-library/jest-dom": "6.1.5", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "jest": "29.7.0", "msw": "1.3.2", diff --git a/packages/forms/package.json b/packages/forms/package.json index 9b6299d1f0a3..bf0762661c17 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -32,7 +32,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@testing-library/dom": "9.3.4", - "@testing-library/jest-dom": "6.1.5", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", "@types/pascalcase": "1.0.3", diff --git a/packages/testing/package.json b/packages/testing/package.json index de5c47239ff8..5e0634222cc3 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -36,7 +36,7 @@ "@redwoodjs/project-config": "6.0.7", "@redwoodjs/router": "6.0.7", "@redwoodjs/web": "6.0.7", - "@testing-library/jest-dom": "6.1.5", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", "@types/aws-lambda": "8.10.126", diff --git a/packages/web/package.json b/packages/web/package.json index 8b059f93f56b..05df5194a87c 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -52,7 +52,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@testing-library/jest-dom": "6.1.5", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", diff --git a/yarn.lock b/yarn.lock index 2c1831ec9ab0..60ee86bac985 100644 --- a/yarn.lock +++ b/yarn.lock @@ -86,10 +86,10 @@ __metadata: languageName: node linkType: hard -"@adobe/css-tools@npm:^4.3.1": - version: 4.3.2 - resolution: "@adobe/css-tools@npm:4.3.2" - checksum: 296a03dd29f227c60500d2da8c7f64991fecf1d8b456ce2b4adb8cec7363d9c08b5b03f1463673fc8cbfe54b538745588e7a13c736d2dd14a80c01a20f127f39 +"@adobe/css-tools@npm:^4.3.2": + version: 4.3.3 + resolution: "@adobe/css-tools@npm:4.3.3" + checksum: e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 languageName: node linkType: hard @@ -7920,7 +7920,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@testing-library/jest-dom": "npm:6.1.5" + "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" core-js: "npm:3.35.1" jest: "npm:29.7.0" @@ -8302,7 +8302,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@testing-library/dom": "npm:9.3.4" - "@testing-library/jest-dom": "npm:6.1.5" + "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.2" "@types/pascalcase": "npm:1.0.3" @@ -8679,7 +8679,7 @@ __metadata: "@redwoodjs/project-config": "npm:6.0.7" "@redwoodjs/router": "npm:6.0.7" "@redwoodjs/web": "npm:6.0.7" - "@testing-library/jest-dom": "npm:6.1.5" + "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.2" "@types/aws-lambda": "npm:8.10.126" @@ -8765,7 +8765,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" - "@testing-library/jest-dom": "npm:6.1.5" + "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" @@ -10254,33 +10254,36 @@ __metadata: languageName: node linkType: hard -"@testing-library/jest-dom@npm:6.1.5": - version: 6.1.5 - resolution: "@testing-library/jest-dom@npm:6.1.5" +"@testing-library/jest-dom@npm:6.3.0": + version: 6.3.0 + resolution: "@testing-library/jest-dom@npm:6.3.0" dependencies: - "@adobe/css-tools": "npm:^4.3.1" + "@adobe/css-tools": "npm:^4.3.2" "@babel/runtime": "npm:^7.9.2" aria-query: "npm:^5.0.0" chalk: "npm:^3.0.0" css.escape: "npm:^1.5.1" - dom-accessibility-api: "npm:^0.5.6" + dom-accessibility-api: "npm:^0.6.3" lodash: "npm:^4.17.15" redent: "npm:^3.0.0" peerDependencies: "@jest/globals": ">= 28" + "@types/bun": "*" "@types/jest": ">= 28" jest: ">= 28" vitest: ">= 0.32" peerDependenciesMeta: "@jest/globals": optional: true + "@types/bun": + optional: true "@types/jest": optional: true jest: optional: true vitest: optional: true - checksum: f3643a56fcd970b5c7e8fd10faf3c4817d8ab0e74fb1198d726643bdc5ac675ceaac3b0068c5b4fbad254470e8f98ed50028741de875a29ceaa2f854570979c9 + checksum: 38ef0dc054b90b253015adaa16828046b1eff8137b86506d5233c10c85a8d8516d55dddb0af5ada46ef98ce9d9bbdad94de42acd29ed07adfb2924fc7bfc6429 languageName: node linkType: hard @@ -16773,13 +16776,20 @@ __metadata: languageName: node linkType: hard -"dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": +"dom-accessibility-api@npm:^0.5.9": version: 0.5.16 resolution: "dom-accessibility-api@npm:0.5.16" checksum: b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 languageName: node linkType: hard +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: 10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + languageName: node + linkType: hard + "dom-converter@npm:^0.2.0": version: 0.2.0 resolution: "dom-converter@npm:0.2.0" @@ -29507,7 +29517,7 @@ __metadata: "@faker-js/faker": "npm:8.0.2" "@npmcli/arborist": "npm:7.2.2" "@playwright/test": "npm:1.41.1" - "@testing-library/jest-dom": "npm:6.1.5" + "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.2" "@types/babel__generator": "npm:7.6.7" From 389051491d085f07d356bbebb600818338c74b3f Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Mon, 29 Jan 2024 14:52:14 +0000 Subject: [PATCH 046/119] fix(web): import helmet from node_modules (#9927) We can import this straight from node_modules instead of loading all the index which imports a bunch of other files and node_modules first. --- packages/web/jest.config.js | 4 ---- packages/web/src/components/Metadata.tsx | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/web/jest.config.js b/packages/web/jest.config.js index df0b39dd2621..ffd37e1b9d20 100644 --- a/packages/web/jest.config.js +++ b/packages/web/jest.config.js @@ -5,8 +5,4 @@ module.exports = { '**/*.test.+(ts|tsx|js|jsx)', '!**/__typetests__/*.+(ts|tsx|js|jsx)', ], - globals: { - // Required for code that use experimental flags - RWJS_ENV: {}, - }, } diff --git a/packages/web/src/components/Metadata.tsx b/packages/web/src/components/Metadata.tsx index 14473a600541..65fb559e0439 100644 --- a/packages/web/src/components/Metadata.tsx +++ b/packages/web/src/components/Metadata.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { Head as HelmetHead } from '../index' +import { Helmet as HelmetHead } from 'react-helmet-async' type ValueOrCollection = T | ValueOrCollection[] | Record type ParentValue = ValueOrCollection From 95126edf2144da95843daec9cabf62b682d8d4b3 Mon Sep 17 00:00:00 2001 From: Josh GM Walker <56300765+Josh-Walker-GM@users.noreply.github.com> Date: Mon, 29 Jan 2024 17:22:51 +0000 Subject: [PATCH 047/119] chore(forms): switch tests to vitest (#9928) ~~In this case I have not explicitly imported the vitest functions as we have to enable globals for the third party testing libraries to work.~~ --------- Co-authored-by: Tobbe Lundberg --- packages/forms/jest.config.js | 5 --- packages/forms/jest.setup.ts | 1 - packages/forms/package.json | 8 ++-- packages/forms/src/__tests__/form.test.tsx | 43 +++++++++++----------- packages/forms/vitest.config.mts | 8 ++++ packages/forms/vitest.setup.mts | 11 ++++++ yarn.lock | 2 +- 7 files changed, 46 insertions(+), 32 deletions(-) delete mode 100644 packages/forms/jest.config.js delete mode 100644 packages/forms/jest.setup.ts create mode 100644 packages/forms/vitest.config.mts create mode 100644 packages/forms/vitest.setup.mts diff --git a/packages/forms/jest.config.js b/packages/forms/jest.config.js deleted file mode 100644 index e53963f4f146..000000000000 --- a/packages/forms/jest.config.js +++ /dev/null @@ -1,5 +0,0 @@ -/** @type {import('@jest/types').Config.InitialOptions} */ -module.exports = { - setupFilesAfterEnv: ['/jest.setup.ts'], - testEnvironment: 'jest-environment-jsdom', -} diff --git a/packages/forms/jest.setup.ts b/packages/forms/jest.setup.ts deleted file mode 100644 index c44951a680db..000000000000 --- a/packages/forms/jest.setup.ts +++ /dev/null @@ -1 +0,0 @@ -import '@testing-library/jest-dom' diff --git a/packages/forms/package.json b/packages/forms/package.json index bf0762661c17..d39eb80877bf 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -19,8 +19,8 @@ "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build", - "test": "jest src", - "test:watch": "yarn test --watch" + "test": "vitest run", + "test:watch": "vitest watch" }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", @@ -39,11 +39,11 @@ "@types/react": "18.2.37", "@types/react-dom": "18.2.15", "graphql": "16.8.1", - "jest": "29.7.0", "nodemon": "3.0.2", "react": "18.2.0", "react-dom": "18.2.0", - "typescript": "5.3.3" + "typescript": "5.3.3", + "vitest": "1.2.2" }, "peerDependencies": { "graphql": "16.8.1", diff --git a/packages/forms/src/__tests__/form.test.tsx b/packages/forms/src/__tests__/form.test.tsx index e4ea6006241c..e1edc0dc8fda 100644 --- a/packages/forms/src/__tests__/form.test.tsx +++ b/packages/forms/src/__tests__/form.test.tsx @@ -8,6 +8,7 @@ import { waitFor, } from '@testing-library/react' import userEvent from '@testing-library/user-event' +import { vi, describe, it, expect, afterEach } from 'vitest' import { Form, @@ -123,7 +124,7 @@ describe('Form', () => { }) it('calls onSubmit', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render() @@ -133,7 +134,7 @@ describe('Form', () => { }) it('renders and coerces user-supplied values', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render() @@ -170,7 +171,7 @@ describe('Form', () => { }) it('finds nested form fields to coerce', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render() @@ -193,7 +194,7 @@ describe('Form', () => { }) it('lets users pass custom coercion functions', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() const coercionFunctionNumber = (value: string) => parseInt(value.replace('_', ''), 10) const coercionFunctionText = (value: string) => value.replace('_', '-') @@ -227,7 +228,7 @@ describe('Form', () => { }) it('sets the value to null for empty string on relational fields', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render(
@@ -253,7 +254,7 @@ describe('Form', () => { }) it('ensures required textField is enforced by validation', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -276,7 +277,7 @@ describe('Form', () => { }) it('ensures required selectField is enforced by validation', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -304,7 +305,7 @@ describe('Form', () => { }) it('handles int and float blank values gracefully', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() console.log('handles int and float blank values gracefully') render( @@ -332,7 +333,7 @@ describe('Form', () => { // Note the good JSON case is tested in an earlier test it('does not call the onSubmit function for a bad entry into a TextAreaField with valueAsJSON', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -355,7 +356,7 @@ describe('Form', () => { }) it('displays a FieldError for a bad entry into a TextAreaField with valueAsJSON', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -378,7 +379,7 @@ describe('Form', () => { }) it('for a FieldError with name set to path', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -483,7 +484,7 @@ describe('Form', () => { }) it('returns appropriate values for fields with emptyAs not defined ', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -530,7 +531,7 @@ describe('Form', () => { }) it(`returns appropriate values for non-empty fields with emptyAs={'undefined'}`, async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -586,7 +587,7 @@ describe('Form', () => { }) it('returns null for empty fields with emptyAs={null}', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -630,7 +631,7 @@ describe('Form', () => { }) it('returns appropriate value empty fields with emptyAs={0}', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -675,7 +676,7 @@ describe('Form', () => { }) it(`returns an empty string empty fields with emptyAs={''}`, async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -720,7 +721,7 @@ describe('Form', () => { }) it('should have appropriate validation for NumberFields and DateFields with emptyAs={null}', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -748,7 +749,7 @@ describe('Form', () => { }) it(`handles invalid emptyAs values with default values`, async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -803,7 +804,7 @@ describe('Form', () => { }) it('should return a number for a textfield with valueAsNumber, regardless of emptyAs', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -850,7 +851,7 @@ describe('Form', () => { }) it('should return a date for a textfield with valueAsDate, regardless of emptyAs', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() render( @@ -897,7 +898,7 @@ describe('Form', () => { }) it('should throw an intelligible error if the name prop is missing', async () => { - const mockFn = jest.fn() + const mockFn = vi.fn() const testRender = () => render( diff --git a/packages/forms/vitest.config.mts b/packages/forms/vitest.config.mts new file mode 100644 index 000000000000..5ebb91492751 --- /dev/null +++ b/packages/forms/vitest.config.mts @@ -0,0 +1,8 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + environment: 'jsdom', + setupFiles: ['vitest.setup.mts'], + }, +}) diff --git a/packages/forms/vitest.setup.mts b/packages/forms/vitest.setup.mts new file mode 100644 index 000000000000..8ad7daa202a6 --- /dev/null +++ b/packages/forms/vitest.setup.mts @@ -0,0 +1,11 @@ +import { afterEach } from 'vitest' +import { cleanup } from '@testing-library/react' +import '@testing-library/jest-dom/vitest' + +afterEach(() => { + // If vitest globals are enabled testing-library will clean up after each + // test automatically, but we don't enable globals, so we have to manually + // clean up here + // https://testing-library.com/docs/react-testing-library/api/#cleanup + cleanup() +}) diff --git a/yarn.lock b/yarn.lock index 60ee86bac985..cd1beeec2470 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8310,13 +8310,13 @@ __metadata: "@types/react-dom": "npm:18.2.15" core-js: "npm:3.35.1" graphql: "npm:16.8.1" - jest: "npm:29.7.0" nodemon: "npm:3.0.2" pascalcase: "npm:1.0.0" react: "npm:18.2.0" react-dom: "npm:18.2.0" react-hook-form: "npm:7.49.3" typescript: "npm:5.3.3" + vitest: "npm:1.2.2" peerDependencies: graphql: 16.8.1 react: 18.2.0 From eba906e1675099e3e354f323d440c746a1990e88 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Mon, 29 Jan 2024 20:37:35 +0000 Subject: [PATCH 048/119] fix(server): don't mix async and callback styles (#9931) Running `yarn rw serve` in the v7 RC emits two warnings: ``` $ yarn rw serve ... (node:69556) [FSTWRN002] FastifyWarning: The redwoodFastifyWeb plugin being registered mixes async and callback styles, which will result in an error in `fastify@5` (Use `node --trace-warnings ...` to show where the warning was created) (node:69556) [FSTWRN002] FastifyWarning: The redwoodFastifyAPI plugin being registered mixes async and callback styles, which will result in an error in `fastify@5` ``` These seem to be because the fastify plugins are async but use the `done` param, which is the callback style. This PR removes the callback style in favor of the async. I'm also removing this warn log which we've already handled on the frontend by registering a warning route for. Right now there's no correct configuration for it when both plugins are registered on the same instance, which is what we've been doing since forever, and I don't want logs to become meaningless: ``` {"level":40,"time":1706557821043,"pid":69556,"hostname":"evaM1.local","msg":"apiUrl is relative but there's no proxy target"} ``` --- packages/adapters/fastify/web/src/web.ts | 14 ++------------ packages/api-server/src/createServer.ts | 6 +----- packages/api-server/src/plugins/graphql.ts | 6 +----- packages/fastify/src/api.ts | 7 ++----- 4 files changed, 6 insertions(+), 27 deletions(-) diff --git a/packages/adapters/fastify/web/src/web.ts b/packages/adapters/fastify/web/src/web.ts index 3e023cf9cf0d..461aa38f7ae0 100644 --- a/packages/adapters/fastify/web/src/web.ts +++ b/packages/adapters/fastify/web/src/web.ts @@ -5,12 +5,7 @@ import httpProxy from '@fastify/http-proxy' import fastifyStatic from '@fastify/static' import fastifyUrlData from '@fastify/url-data' import fg from 'fast-glob' -import type { - FastifyInstance, - FastifyReply, - FastifyRequest, - HookHandlerDoneFunction, -} from 'fastify' +import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify' import { getPaths } from '@redwoodjs/project-config' @@ -22,8 +17,7 @@ export { coerceRootPath, RedwoodFastifyWebOptions } export async function redwoodFastifyWeb( fastify: FastifyInstance, - opts: RedwoodFastifyWebOptions, - done: HookHandlerDoneFunction + opts: RedwoodFastifyWebOptions ) { const { redwoodOptions, flags } = resolveOptions(opts) @@ -53,8 +47,6 @@ export async function redwoodFastifyWeb( // but TS doesn't know that so it complains about `apiUrl` being undefined // in `fastify.all(...)` below. So we have to do this check for now if (redwoodOptions.apiUrl && flags.shouldRegisterApiUrl) { - fastify.log.warn("apiUrl is relative but there's no proxy target") - const apiUrlHandler = (_req: FastifyRequest, reply: FastifyReply) => { reply.code(200) reply.send({ @@ -113,6 +105,4 @@ export async function redwoodFastifyWeb( reply.code(404) return reply.send('Not Found') }) - - done() } diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 768f810058ea..798cb351a751 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -11,7 +11,6 @@ import type { FastifyListenOptions, FastifyServerOptions, FastifyInstance, - HookHandlerDoneFunction, } from 'fastify' import fastifyRawBody from 'fastify-raw-body' @@ -312,8 +311,7 @@ export interface RedwoodFastifyAPIOptions { export async function redwoodFastifyFunctions( fastify: FastifyInstance, - opts: RedwoodFastifyAPIOptions, - done: HookHandlerDoneFunction + opts: RedwoodFastifyAPIOptions ) { fastify.register(fastifyUrlData) await fastify.register(fastifyRawBody) @@ -332,6 +330,4 @@ export async function redwoodFastifyFunctions( ignore: ['**/dist/functions/graphql.js'], }, }) - - done() } diff --git a/packages/api-server/src/plugins/graphql.ts b/packages/api-server/src/plugins/graphql.ts index d33e47bd82ea..d2912d86cbdb 100644 --- a/packages/api-server/src/plugins/graphql.ts +++ b/packages/api-server/src/plugins/graphql.ts @@ -3,7 +3,6 @@ import fg from 'fast-glob' import type { FastifyInstance, HTTPMethods, - HookHandlerDoneFunction, FastifyReply, FastifyRequest, } from 'fastify' @@ -35,8 +34,7 @@ export interface RedwoodFastifyGraphQLOptions { */ export async function redwoodFastifyGraphQLServer( fastify: FastifyInstance, - options: RedwoodFastifyGraphQLOptions, - done: HookHandlerDoneFunction + options: RedwoodFastifyGraphQLOptions ) { // These two plugins are needed to transform a Fastify Request to a Lambda event // which is used by the RedwoodGraphQLContext and mimics the behavior of the @@ -126,8 +124,6 @@ export async function redwoodFastifyGraphQLServer( done() }) - - done() } catch (e) { console.log(e) } diff --git a/packages/fastify/src/api.ts b/packages/fastify/src/api.ts index d060edbd3656..50e69548ecae 100644 --- a/packages/fastify/src/api.ts +++ b/packages/fastify/src/api.ts @@ -1,5 +1,5 @@ import fastifyUrlData from '@fastify/url-data' -import type { FastifyInstance, HookHandlerDoneFunction } from 'fastify' +import type { FastifyInstance } from 'fastify' import fastifyRawBody from 'fastify-raw-body' import type { GlobalContext } from '@redwoodjs/context' @@ -11,8 +11,7 @@ import type { RedwoodFastifyAPIOptions } from './types' export async function redwoodFastifyAPI( fastify: FastifyInstance, - opts: RedwoodFastifyAPIOptions, - done: HookHandlerDoneFunction + opts: RedwoodFastifyAPIOptions ) { if (!fastify.hasPlugin('@fastify/url-data')) { await fastify.register(fastifyUrlData) @@ -41,6 +40,4 @@ export async function redwoodFastifyAPI( fastify.all(`${apiRootPath}:routeName`, lambdaRequestHandler) fastify.all(`${apiRootPath}:routeName/*`, lambdaRequestHandler) await loadFunctionsFromDist() - - done() } From 0fe344e0c49a4d1e0db9cea23fc68235633e213e Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 30 Jan 2024 15:51:55 +0100 Subject: [PATCH 049/119] fix(docusaurus): Make {jsx,tsx} file extensions switch properly (#9933) --- docs/docusaurus.config.ts | 4 ++-- docs/src/components/FileExtSwitcher.tsx | 11 ++++++----- docs/src/remark/file-ext-switcher.mjs | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 7f6a739d00ef..2ec259ca2192 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -1,8 +1,8 @@ import type * as PresetClassic from '@docusaurus/preset-classic' import type { Config } from '@docusaurus/types' -import autoImportTabs from './src/remark/auto-import-tabs' -import fileExtSwitcher from './src/remark/file-ext-switcher' +import autoImportTabs from './src/remark/auto-import-tabs.mjs' +import fileExtSwitcher from './src/remark/file-ext-switcher.mjs' const config: Config = { customFields: { diff --git a/docs/src/components/FileExtSwitcher.tsx b/docs/src/components/FileExtSwitcher.tsx index 7697311a1360..1b6a90235837 100644 --- a/docs/src/components/FileExtSwitcher.tsx +++ b/docs/src/components/FileExtSwitcher.tsx @@ -7,17 +7,18 @@ interface Props { } /** - * Takes a path on the form web/src/layouts/BlogLayout/BlogLayout.{js,tsx} and - * replaces the end part, {js,tsx}, with the correct file extension depending - * on what language the user has selected for the code blocks + * Takes a path on the form web/src/layouts/BlogLayout/BlogLayout.{jsx,tsx} and + * replaces the end part, {jsx,tsx}, with the correct file extension depending + * on what language the user has selected for the code blocks. + * Supports js, jsx, ts and tsx file extensions */ export default function FileExtSwitcher({ path }: Props) { const [jsTs] = useStorageSlot('docusaurus.tab.js-ts') const extensionStart = path.lastIndexOf('{') const extensions = path.slice(extensionStart + 1, path.length - 1) - const ts = extensions.split(',')[1] + const [js, ts] = extensions.split(',') const pathWithoutExt = path.slice(0, extensionStart) - return {pathWithoutExt + (jsTs === 'js' ? 'js' : ts)} + return {pathWithoutExt + (jsTs === 'js' ? js : ts)} } diff --git a/docs/src/remark/file-ext-switcher.mjs b/docs/src/remark/file-ext-switcher.mjs index 19e9118776a9..9525549ea28d 100644 --- a/docs/src/remark/file-ext-switcher.mjs +++ b/docs/src/remark/file-ext-switcher.mjs @@ -5,7 +5,7 @@ const plugin = () => { return (tree, _file) => { visit(tree, (node, _index, parent) => { - if (node.type === 'inlineCode' && /\w\.\{js,tsx?}$/.test(node.value)) { + if (node.type === 'inlineCode' && /\w\.\{jsx?,tsx?}$/.test(node.value)) { needImport = true const pathValue = `${node.value}` From ff5306ec1cfdaf7294b11e3486914212513fbf20 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 18:51:22 +0000 Subject: [PATCH 050/119] fix(deps): update prisma monorepo to v5.9.0 (#9935) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@prisma/client](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/client)) | [`5.8.1` -> `5.9.0`](https://renovatebot.com/diffs/npm/@prisma%2fclient/5.8.1/5.9.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2fclient/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2fclient/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2fclient/5.8.1/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2fclient/5.8.1/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@prisma/internals](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/internals)) | [`5.8.1` -> `5.9.0`](https://renovatebot.com/diffs/npm/@prisma%2finternals/5.8.1/5.9.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2finternals/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2finternals/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2finternals/5.8.1/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2finternals/5.8.1/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [prisma](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/cli)) | [`5.8.1` -> `5.9.0`](https://renovatebot.com/diffs/npm/prisma/5.8.1/5.9.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prisma/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prisma/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prisma/5.8.1/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prisma/5.8.1/5.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
prisma/prisma (@​prisma/client) ### [`v5.9.0`](https://togithub.com/prisma/prisma/releases/tag/5.9.0) [Compare Source](https://togithub.com/prisma/prisma/compare/5.8.1...5.9.0) Today, we are excited to share the `5.9.0` stable release 🎉  🌟 **Help us spread the word about Prisma by starring the repo ☝️ or [posting on X](https://twitter.com/intent/tweet?text=Check) about the release.** This release brings a number of small improvements as we continue our work on larger features which you will hear more about in the coming weeks: - Improve the performance of relation queries by introducing JOINs (see [last release](https://togithub.com/prisma/prisma/releases/tag/5.8.0)). - Support deployment to edge functions (already available in Early Access, you can apply for trying it out by taking our [survey](https://pris.ly/survey/edge-functions-release-notes-5-9-0)). ##### Highlights ##### Optimized result sets for more efficient queries We continue our efforts of the performance of Prisma Client queries. In [`5.1.0`](https://togithub.com/prisma/prisma/releases/tag/5.1.0), we introduced the `RETURNING` keyword for several queries on PostrgeSQL and CockroachDB. We now expanded the use of `RETURNING` to SQLite and a broader range of queries for existing databases (e.g. `delete` on PostgreSQL and MongoDB). You can learn more about the optimizations of the result sets in these PRs: - [feat(qe): avoid extra select on delete queries](https://togithub.com/prisma/prisma-engines/pull/4595) - [feat(qe): enable queries with returning for sqlite](https://togithub.com/prisma/prisma-engines/pull/46) ##### SQL Server: Return proper error for unreachable database When trying migrate/introspect a SQL server instance that’s unreachable, Prisma ORM now returns the correct `P1001` error instead of failing without an error. Learn more in this PR: [SQL Server: Migrate/Introspection engine doesn't return P1001 error for unreachable url](https://togithub.com/prisma/prisma/issues/11407). ##### Fixes and improvements ##### Prisma Client - [Skip unnecessary `select` queries on create/update/delete](https://togithub.com/prisma/prisma/issues/8069) - [.prisma/client: Name can't start with a dot](https://togithub.com/prisma/prisma/issues/17685) - [Nested json is transformed to string when used “$type” key in object](https://togithub.com/prisma/prisma/issues/21454) - [Parallel execution with Promise.all causes P2024 error in version 5.8.0 due to connection limit](https://togithub.com/prisma/prisma/issues/22610) ##### Prisma Migrate - [SQL Server: Migrate/Introspection engine doesn't return P1001 error for unreachable url](https://togithub.com/prisma/prisma/issues/11407) - [Prisma errors fetching table 'CHECK_CONSTRAINTS' (which only exists in MySQL 8.0.16+) in MySQL 8.0.14](https://togithub.com/prisma/prisma/issues/19775) - [`ERROR: column "..." being dropped, try again later` when applying migrations with CRDB 23.1](https://togithub.com/prisma/prisma/issues/20851) ##### Language tools (e.g. VS Code) - [Extension wrongfully suggests Json as a valid type completion on Sqlite](https://togithub.com/prisma/language-tools/issues/1638) ##### Company News ##### Test edge functions support in Early Access Today, the only way how to use Prisma ORM in edge functions (e.g. Cloudflare Workers or Vercel Edge Functions) is by using [Prisma Accelerate](https://www.prisma.io/data-platform/accelerate). However, we are actively working on making Prisma ORM compatible with edge functions natively as well. If you want to become an early tester, you can apply for the private Early Accessing program by taking this [survey](https://pris.ly/survey/edge-functions-release-notes-5-9-0). ##### We Transitioned Prisma Accelerate to IPv6 Without Anyone Noticing Last year, AWS announced the decision to begin charging for IPv4 addresses beginning in February 2024. This move had a major impact on Prisma Accelerate, prompting us to go all-in on IPv6. [Learn more in this technical deep dive](https://www.prisma.io/blog/accelerate-ipv6-first) into how we approached our IPv6 migration, lessons learned, and the outcome for users of Prisma Accelerate. ##### Credits Huge thanks to [@​laplab](https://togithub.com/laplab), [@​Druue](https://togithub.com/Druue), [@​anuraaga](https://togithub.com/anuraaga), [@​onichandame](https://togithub.com/onichandame), [@​LucianBuzzo](https://togithub.com/LucianBuzzo), [@​RobertCraigie](https://togithub.com/RobertCraigie), [@​almeidx](https://togithub.com/almeidx), [@​victorgdb](https://togithub.com/victorgdb), [@​tinola](https://togithub.com/tinola), [@​sampolahtinen](https://togithub.com/sampolahtinen), [@​AikoRamalho](https://togithub.com/AikoRamalho), [@​petradonka](https://togithub.com/petradonka) for helping!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- __fixtures__/test-project/web/package.json | 2 +- packages/api/package.json | 2 +- .../cli-packages/dataMigrate/package.json | 2 +- packages/cli/package.json | 4 +- packages/record/package.json | 4 +- packages/structure/package.json | 2 +- yarn.lock | 126 +++++++++--------- 7 files changed, 71 insertions(+), 71 deletions(-) diff --git a/__fixtures__/test-project/web/package.json b/__fixtures__/test-project/web/package.json index 6fd3fdda337c..35963e3dc276 100644 --- a/__fixtures__/test-project/web/package.json +++ b/__fixtures__/test-project/web/package.json @@ -25,7 +25,7 @@ "@types/react-dom": "18.2.15", "autoprefixer": "^10.4.17", "postcss": "^8.4.33", - "postcss-loader": "^8.0.0", + "postcss-loader": "^8.1.0", "prettier-plugin-tailwindcss": "0.4.1", "tailwindcss": "^3.4.1" } diff --git a/packages/api/package.json b/packages/api/package.json index cfacf19d45b2..ed33f1946b20 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@prisma/client": "5.8.1", + "@prisma/client": "5.9.0", "@whatwg-node/fetch": "0.9.14", "core-js": "3.35.1", "humanize-string": "2.1.0", diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index 2f7ea0050cfc..b34f6c9ea645 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -36,7 +36,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@prisma/client": "5.8.1", + "@prisma/client": "5.9.0", "@types/fs-extra": "11.0.4", "@types/yargs": "17.0.32", "jest": "29.7.0", diff --git a/packages/cli/package.json b/packages/cli/package.json index 9cc70b6046b0..e5b1e9f274fb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -37,7 +37,7 @@ "@opentelemetry/resources": "1.18.1", "@opentelemetry/sdk-trace-node": "1.18.1", "@opentelemetry/semantic-conventions": "1.18.1", - "@prisma/internals": "5.8.1", + "@prisma/internals": "5.9.0", "@redwoodjs/api-server": "6.0.7", "@redwoodjs/cli-helpers": "6.0.7", "@redwoodjs/fastify": "6.0.7", @@ -74,7 +74,7 @@ "pluralize": "8.0.0", "portfinder": "1.0.32", "prettier": "2.8.8", - "prisma": "5.8.1", + "prisma": "5.9.0", "prompts": "2.4.2", "rimraf": "5.0.5", "semver": "7.5.4", diff --git a/packages/record/package.json b/packages/record/package.json index 0911fb78a98e..b59b6b64d9a9 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -24,14 +24,14 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@prisma/client": "5.8.1", + "@prisma/client": "5.9.0", "@redwoodjs/project-config": "6.0.7", "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@prisma/internals": "5.8.1", + "@prisma/internals": "5.9.0", "esbuild": "0.20.0", "vitest": "1.2.2" }, diff --git a/packages/structure/package.json b/packages/structure/package.json index 0dde5e6ff212..92d278f17b5d 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -27,7 +27,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@iarna/toml": "2.2.5", - "@prisma/internals": "5.8.1", + "@prisma/internals": "5.9.0", "@redwoodjs/project-config": "6.0.7", "@types/line-column": "1.0.0", "camelcase": "6.3.0", diff --git a/yarn.lock b/yarn.lock index cd1beeec2470..aa074f70e970 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6561,93 +6561,93 @@ __metadata: languageName: node linkType: hard -"@prisma/client@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/client@npm:5.8.1" +"@prisma/client@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/client@npm:5.9.0" peerDependencies: prisma: "*" peerDependenciesMeta: prisma: optional: true - checksum: 08a0eb392b1b7773545faa08bb1501352a999b7c215fa16977c61596abdd86b573723c244fbc096d8a42bab9a9bbc31a9d761aa8a85c03d2f94d6a68c04ff17f + checksum: 3619163048e018765e5bc045738bcd1be1e464235348e5b083cf7e36b1e884946148206f5a64ec6187ef84ab42ffdc5e34ddbe78cba68dfd27febeeb156ba9df languageName: node linkType: hard -"@prisma/debug@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/debug@npm:5.8.1" - checksum: d3f9d6c65e5c9ba7ad9337091b78691677a5fed8b660fedaacbbf29eb0c3dfeaf188c396610eb340aed8e00c80f3dc7789b52d7c1f7cbb8144e9b6b12c0ad1e6 +"@prisma/debug@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/debug@npm:5.9.0" + checksum: dfd1fe301a74217ce5896d0b6e4b40085664f5af4104490709502745b154109c7419613c7df7bf083e6c92cf35119ecea6f1d82bdb892bc1c6d6edd914c18149 languageName: node linkType: hard -"@prisma/engines-version@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2": - version: 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - resolution: "@prisma/engines-version@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" - checksum: 5646f14343fc5d8a6c141c4faf4481c1de84d684d986001cb220e09236c91146c7bddb56c5e6b8a3224eb9bf8c030273f0dfee802246ac8b8846d3e403a3b63b +"@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": + version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 + resolution: "@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + checksum: 861dd5f88fec224c5bd5885f0a33f8ab0cd39190497806d27d411ea8abde2b684eb27518c47bb0b560e025219284b94d2c5d85abc715f2765f2500e766bf2fdd languageName: node linkType: hard -"@prisma/engines@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/engines@npm:5.8.1" +"@prisma/engines@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/engines@npm:5.9.0" dependencies: - "@prisma/debug": "npm:5.8.1" - "@prisma/engines-version": "npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" - "@prisma/fetch-engine": "npm:5.8.1" - "@prisma/get-platform": "npm:5.8.1" - checksum: b444b09549b20acfcd7e2ccbbb87beaa01247802bbc3b8f8d9ac7aa972df043158f07bfcb50a7caa97b9bc543ec26223e47a1b5529c79eac60123ce51f8faf8d + "@prisma/debug": "npm:5.9.0" + "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + "@prisma/fetch-engine": "npm:5.9.0" + "@prisma/get-platform": "npm:5.9.0" + checksum: d4e321f7b6b78992032a41d116765aee9258508d5e58bdf402823fed8b5585dc4ad39a149fce529dadbf1f2ae220a2daf4422ed0afecb81023713783b08c9349 languageName: node linkType: hard -"@prisma/fetch-engine@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/fetch-engine@npm:5.8.1" +"@prisma/fetch-engine@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/fetch-engine@npm:5.9.0" dependencies: - "@prisma/debug": "npm:5.8.1" - "@prisma/engines-version": "npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" - "@prisma/get-platform": "npm:5.8.1" - checksum: 1020fbae8dbb6e68bca62ef788fc5e0696e89fc2c77ff94fe6a935f6a9ef1a2be21bb8102fab63d93b2a345b17fe1648305312b9516db62324cf0c58c5caa033 + "@prisma/debug": "npm:5.9.0" + "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + "@prisma/get-platform": "npm:5.9.0" + checksum: f16452a57feedf9dcb5b1524b4d6c7693256ce49f7651ded2fca39b97e44e27fc72c8b68ea7020f90ba8474fdd8cca66ca29d88674bfdc33bbefc18bdd2e9c0b languageName: node linkType: hard -"@prisma/generator-helper@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/generator-helper@npm:5.8.1" +"@prisma/generator-helper@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/generator-helper@npm:5.9.0" dependencies: - "@prisma/debug": "npm:5.8.1" - checksum: 8a4cca6e5ca46c6b550785124fa85b79fd5118c6ac968ff03497a35f9a56976138703a7a92d9603f43f80d0b8810bd3d4bed44b140f969402cece46f5a2c9490 + "@prisma/debug": "npm:5.9.0" + checksum: 3586d83d1a665c2811425790e8985087c5d9d6ce623451f9ef09b92094c72b099cf5c63868715c5d2dd15494dd650c70efb0cc524f98d382817d7580ed1290ac languageName: node linkType: hard -"@prisma/get-platform@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/get-platform@npm:5.8.1" +"@prisma/get-platform@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/get-platform@npm:5.9.0" dependencies: - "@prisma/debug": "npm:5.8.1" - checksum: c46c8d21892d44d459b2567aef5f9db8d4801adb04e4be08d58d4c0ef3a450eaaa58b868e09fc2b1a05fd7f603fe8b3e2bd5c06ea665d959f3828828509ad535 + "@prisma/debug": "npm:5.9.0" + checksum: ed0161fe56974ac1461f44d13a46f06895f9a59f365a8b4ee9cbcb0bf1aa9bd4b6b51389394a52d538a8ebd795f4f4ecb787427fdd0bf29e123c3270c35e8273 languageName: node linkType: hard -"@prisma/internals@npm:5.8.1": - version: 5.8.1 - resolution: "@prisma/internals@npm:5.8.1" +"@prisma/internals@npm:5.9.0": + version: 5.9.0 + resolution: "@prisma/internals@npm:5.9.0" dependencies: - "@prisma/debug": "npm:5.8.1" - "@prisma/engines": "npm:5.8.1" - "@prisma/fetch-engine": "npm:5.8.1" - "@prisma/generator-helper": "npm:5.8.1" - "@prisma/get-platform": "npm:5.8.1" - "@prisma/prisma-schema-wasm": "npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" + "@prisma/debug": "npm:5.9.0" + "@prisma/engines": "npm:5.9.0" + "@prisma/fetch-engine": "npm:5.9.0" + "@prisma/generator-helper": "npm:5.9.0" + "@prisma/get-platform": "npm:5.9.0" + "@prisma/prisma-schema-wasm": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" arg: "npm:5.0.2" prompts: "npm:2.4.2" - checksum: 98e3d266e41eab73f9931b9bcb99554ba880b10546e7332b17d558e1d5c64dd11011c42f8a67f120756fca93ee04e1f656f7d1668a867acfd2a72540d72911e3 + checksum: 165c87f7891671bf25492f3d049b54b8b8a4a3cf166c19fef1feed8cb8df579afd3a09ab42fea60648d1322ec891030443eea71c893c6cf3730ad908db108fcd languageName: node linkType: hard -"@prisma/prisma-schema-wasm@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2": - version: 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 - resolution: "@prisma/prisma-schema-wasm@npm:5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2" - checksum: 17f1d45721701e1a6908767f2db5ad6ab3ba65c0f6dbc506630f4c5cff2cd205605ebebf8fcbbb50c6f6f1c3e7c4d9e39ab96e7b65a6fb35e0d9f80a23ad4e4c +"@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": + version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 + resolution: "@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + checksum: ad61814eb28b57f540fbaa508db7056742905305e0393ee6a5bc3624ed9e54dba75f8472f1bff620b6c47364355e3caa69a1dd2009735e4c4ecbe5cd2110204e languageName: node linkType: hard @@ -7448,7 +7448,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@prisma/client": "npm:5.8.1" + "@prisma/client": "npm:5.9.0" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" "@types/memjs": "npm:1" @@ -7967,7 +7967,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/cli-data-migrate@workspace:packages/cli-packages/dataMigrate" dependencies: - "@prisma/client": "npm:5.8.1" + "@prisma/client": "npm:5.9.0" "@redwoodjs/babel-config": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@types/fs-extra": "npm:11.0.4" @@ -8048,7 +8048,7 @@ __metadata: "@opentelemetry/resources": "npm:1.18.1" "@opentelemetry/sdk-trace-node": "npm:1.18.1" "@opentelemetry/semantic-conventions": "npm:1.18.1" - "@prisma/internals": "npm:5.8.1" + "@prisma/internals": "npm:5.9.0" "@redwoodjs/api-server": "npm:6.0.7" "@redwoodjs/cli-helpers": "npm:6.0.7" "@redwoodjs/fastify": "npm:6.0.7" @@ -8087,7 +8087,7 @@ __metadata: pluralize: "npm:8.0.0" portfinder: "npm:1.0.32" prettier: "npm:2.8.8" - prisma: "npm:5.8.1" + prisma: "npm:5.9.0" prompts: "npm:2.4.2" rimraf: "npm:5.0.5" semver: "npm:7.5.4" @@ -8571,8 +8571,8 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@prisma/client": "npm:5.8.1" - "@prisma/internals": "npm:5.8.1" + "@prisma/client": "npm:5.9.0" + "@prisma/internals": "npm:5.9.0" "@redwoodjs/project-config": "npm:6.0.7" core-js: "npm:3.35.1" esbuild: "npm:0.20.0" @@ -8611,7 +8611,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@iarna/toml": "npm:2.2.5" - "@prisma/internals": "npm:5.8.1" + "@prisma/internals": "npm:5.9.0" "@redwoodjs/project-config": "npm:6.0.7" "@types/fs-extra": "npm:11.0.4" "@types/line-column": "npm:1.0.0" @@ -27847,14 +27847,14 @@ __metadata: languageName: node linkType: hard -"prisma@npm:5.8.1": - version: 5.8.1 - resolution: "prisma@npm:5.8.1" +"prisma@npm:5.9.0": + version: 5.9.0 + resolution: "prisma@npm:5.9.0" dependencies: - "@prisma/engines": "npm:5.8.1" + "@prisma/engines": "npm:5.9.0" bin: prisma: build/index.js - checksum: 30b7cfd54829ece68ed3b4cfb7616d25744bcb2dfda7fadb39be59d49958f50c8dd62455d738ca7b4fff7edf710e21e50ae98f9d86fbd04c156e9b7f27fcec9f + checksum: b57f384a29ec94baeecec8b5af9557420edb92079556bcecb065d262b6272f5cfbf0958676d47c70113b45a2760b9e4ba7efdaabb8e0dcb8bc41d3a4b5c24be2 languageName: node linkType: hard From f3bbbdcebaa3893424c2a3c9b35482d32f507a8d Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 30 Jan 2024 21:00:07 +0100 Subject: [PATCH 051/119] docs(monitoring): Add Sentry docs (#9934) --- docs/docs/monitoring/sentry.md | 177 +++++++++++++++++++++++++++++++++ docs/sidebars.js | 10 ++ 2 files changed, 187 insertions(+) create mode 100644 docs/docs/monitoring/sentry.md diff --git a/docs/docs/monitoring/sentry.md b/docs/docs/monitoring/sentry.md new file mode 100644 index 000000000000..700b28809337 --- /dev/null +++ b/docs/docs/monitoring/sentry.md @@ -0,0 +1,177 @@ +--- +description: Monitor errors, performance and more in your Redwood app using Sentry +--- + +# Sentry + +**Setup [Sentry](https://sentry.io/welcome/) error and performance monitoring across your Redwood application.** + +From your command line, run: +``` +yarn redwood setup monitoring sentry +``` + +This command installs and sets up [`@sentry/node`](https://docs.sentry.io/platforms/node/) and [`@sentry/react`](https://docs.sentry.io/platforms/javascript/guides/react/), enabling [Prisma](https://docs.sentry.io/platforms/node/performance/database/opt-in/#prisma-orm-integration) and [Browser](https://docs.sentry.io/platforms/javascript/performance/instrumentation/automatic-instrumentation/) tracing to capture 100% of events. The following sections detail how you may further integrate Sentry in your Redwood application. + +## Sentry Envelop Plugin + +The setup command will install and attempt to setup the [`@envelop/sentry`](https://the-guild.dev/graphql/envelop/plugins/use-sentry) plugin in your application's GraphQL handler. If there is a problem installing it, the following can be used to do so manually. + + + + +```js title="api/src/functions/graphql.js" +import { useSentry } from '@envelop/sentry' + +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +import 'src/lib/sentry' + +... + +export const handler = createGraphQLHandler({ + directives, + sdls, + services, + extraPlugins: [useSentry()], + ... +}) +``` + + + + + +```ts title="api/src/functions/graphql.ts" +import { useSentry } from '@envelop/sentry' + +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +import 'src/lib/sentry' + +... + +export const handler = createGraphQLHandler({ + directives, + sdls, + services, + extraPlugins: [useSentry()], + ... +}) +``` + + + + +## Setting the current user + +You can associate error and performance events with a unique identity using [`Sentry.setUser`](https://docs.sentry.io/platforms/node/enriching-events/identify-user/). Below is an example of doing so on the API by setting the identity to the user returned by `getCurrentUser`. + + + + +```js title="api/src/lib/auth.js" +import Sentry from 'src/lib/sentry' + +export const getCurrentUser = async (...) => { + const user = await db.user.findUnique(...) + + Sentry.setUser(user) + + ... +} +``` + + + + +```ts title="api/src/lib/auth.ts" +import Sentry from 'src/lib/sentry' + +export const getCurrentUser = async (...) => { + const user = await db.user.findUnique(...) + + Sentry.setUser(user) + + ... +} +``` + + + + +Below we set the current user on the web-side from within a [layout](#generate-layout). Note that the `useEffect` dependency array may vary depending on where you place `Sentry.setUser` in your own application. + + + + +```jsx title="web/src/layouts/SentryLayout/SentryLayout.jsx" +import { useEffect } from 'react' + +import { useAuth } from 'src/lib/auth' +import Sentry from 'src/lib/sentry' + +const SentryLayout = ({ children }) => { + const { currentUser } = useAuth() + + useEffect(() => Sentry.setUser(currentUser), [currentUser]) + + return <>{children} +} + +export default SentryLayout + +``` + + + + +```tsx title="web/src/layouts/SentryLayout/SentryLayout.tsx" +import React, { useEffect } from 'react' + +import { useAuth } from 'src/lib/auth' +import Sentry from 'src/lib/sentry' + +interface Props { + children: React.ReactNode +} + +const SentryLayout = ({ children }: Props) => { + const { currentUser } = useAuth() + + useEffect(() => Sentry.setUser(currentUser), [currentUser]) + + return <>{children} +} + +export default SentryLayout + +``` + + + + + +## Capturing exceptions + +You can make use of Sentry to capture exceptions which occur while executing API [Functions](#generate-function). + +```ts title="api/src/functions/foo.{js,ts}" +import Sentry from 'src/lib/sentry' + +export const handler = async (event, context) => { + try { + ... + } catch (err) { + Sentry.captureException(err) + } +} +``` diff --git a/docs/sidebars.js b/docs/sidebars.js index 4be162237cfa..7d4d191a52e8 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -174,6 +174,16 @@ module.exports = { 'local-postgres-setup', 'logger', 'mailer', + { + type: 'category', + label: 'Monitoring', + link: { + type: 'generated-index', + title: 'Monitoring', + slug: 'monitoring/index', + }, + items: [{ type: 'doc', label: 'Sentry', id: 'monitoring/sentry' }], + }, 'prerender', 'project-configuration-dev-test-build', 'redwoodrecord', From d0fe1792ea526fcb97a89276ce0513193e49f425 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 30 Jan 2024 23:02:21 +0100 Subject: [PATCH 052/119] feat(crwa): Make the seed template idempotent (#9937) Makes it so that the default seed script we ship with our templates are safe to run multiple times. It'll now just skip updating the DB if it already has records in there. This also makes the template more closely match what we have for our CI tests --- __fixtures__/test-project/scripts/seed.ts | 26 +++++++++++-------- .../templates/js/scripts/seed.js | 26 +++++++++++-------- .../templates/ts/scripts/seed.ts | 26 +++++++++++-------- 3 files changed, 45 insertions(+), 33 deletions(-) diff --git a/__fixtures__/test-project/scripts/seed.ts b/__fixtures__/test-project/scripts/seed.ts index dcbfc7a9abe9..ceee7b6687bc 100644 --- a/__fixtures__/test-project/scripts/seed.ts +++ b/__fixtures__/test-project/scripts/seed.ts @@ -83,17 +83,21 @@ export default async () => { "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" ) - // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster - // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany - await Promise.all( - // - // Change to match your data model and seeding needs - // - data.map(async (data: Prisma.UserExampleCreateArgs['data']) => { - const record = await db.userExample.create({ data }) - console.log(record) - }) - ) + if ((await db.userExample.count()) === 0) { + // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster + // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany + await Promise.all( + // + // Change to match your data model and seeding needs + // + data.map(async (data: Prisma.UserExampleCreateArgs['data']) => { + const record = await db.userExample.create({ data }) + console.log(record) + }) + ) + } else { + console.log('Users already seeded') + } // If using dbAuth and seeding users, you'll need to add a `hashedPassword` // and associated `salt` to their record. Here's how to create them using diff --git a/packages/create-redwood-app/templates/js/scripts/seed.js b/packages/create-redwood-app/templates/js/scripts/seed.js index 4e95cc2da063..f6e27427a29a 100644 --- a/packages/create-redwood-app/templates/js/scripts/seed.js +++ b/packages/create-redwood-app/templates/js/scripts/seed.js @@ -21,17 +21,21 @@ export default async () => { "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" ) - // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster - // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany - await Promise.all( - // - // Change to match your data model and seeding needs - // - data.map(async (data) => { - const record = await db.userExample.create({ data }) - console.log(record) - }) - ) + if ((await db.userExample.count()) === 0) { + // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster + // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany + await Promise.all( + // + // Change to match your data model and seeding needs + // + data.map(async (data) => { + const record = await db.userExample.create({ data }) + console.log(record) + }) + ) + } else { + console.log('Users already seeded') + } // If using dbAuth and seeding users, you'll need to add a `hashedPassword` // and associated `salt` to their record. Here's how to create them using diff --git a/packages/create-redwood-app/templates/ts/scripts/seed.ts b/packages/create-redwood-app/templates/ts/scripts/seed.ts index ecfa0b1ad268..e0517ef61ef9 100644 --- a/packages/create-redwood-app/templates/ts/scripts/seed.ts +++ b/packages/create-redwood-app/templates/ts/scripts/seed.ts @@ -22,17 +22,21 @@ export default async () => { "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" ) - // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster - // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany - await Promise.all( - // - // Change to match your data model and seeding needs - // - data.map(async (data: Prisma.UserExampleCreateArgs['data']) => { - const record = await db.userExample.create({ data }) - console.log(record) - }) - ) + if ((await db.userExample.count()) === 0) { + // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster + // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany + await Promise.all( + // + // Change to match your data model and seeding needs + // + data.map(async (data: Prisma.UserExampleCreateArgs['data']) => { + const record = await db.userExample.create({ data }) + console.log(record) + }) + ) + } else { + console.log('Users already seeded') + } // If using dbAuth and seeding users, you'll need to add a `hashedPassword` // and associated `salt` to their record. Here's how to create them using From 4ddc4db1d0ade68196a3cd22689d4fbae6d9e9be Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 14:02:40 -0800 Subject: [PATCH 053/119] chore(deps): update node.js to v20 (#9936) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---|---|---| | [node](https://togithub.com/nodejs/node) | engines | major | [`>=14.17 <=16.x` -> `>=14.17 <=20.11`](https://renovatebot.com/diffs/npm/node/v16.20.2/v20.11.0) | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/node/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/node/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/node/v16.20.2/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/node/v16.20.2/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [node](https://togithub.com/nodejs/node) | | minor | `20.10.0` -> `20.11.0` | [![age](https://developer.mend.io/api/mc/badges/age/github-tags/node/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/github-tags/node/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/github-tags/node/20.10.0/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/github-tags/node/20.10.0/v20.11.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | dependencies | minor | [`20.10.4` -> `20.11.10`](https://renovatebot.com/diffs/npm/@types%2fnode/20.10.4/20.11.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.10.4/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.10.4/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@types/node](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node) ([source](https://togithub.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)) | devDependencies | minor | [`20.10.4` -> `20.11.10`](https://renovatebot.com/diffs/npm/@types%2fnode/20.10.4/20.11.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@types%2fnode/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@types%2fnode/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@types%2fnode/20.10.4/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@types%2fnode/20.10.4/20.11.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
nodejs/node (node) ### [`v20.11.0`](https://togithub.com/nodejs/node/compare/v20.10.0...v20.11.0) [Compare Source](https://togithub.com/nodejs/node/compare/v20.10.0...v20.11.0) ### [`v20.10.0`](https://togithub.com/nodejs/node/compare/v20.9.0...v20.10.0) [Compare Source](https://togithub.com/nodejs/node/compare/v20.9.0...v20.10.0) ### [`v20.9.0`](https://togithub.com/nodejs/node/compare/v20.8.1...v20.9.0) [Compare Source](https://togithub.com/nodejs/node/compare/v20.8.1...v20.9.0) ### [`v20.8.1`](https://togithub.com/nodejs/node/releases/tag/v20.8.1): 2023-10-13, Version 20.8.1 (Current), @​RafaelGSS [Compare Source](https://togithub.com/nodejs/node/compare/v20.8.0...v20.8.1) This is a security release. ##### Notable Changes The following CVEs are fixed in this release: - [CVE-2023-44487](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-44487): `nghttp2` Security Release (High) - [CVE-2023-45143](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-45143): `undici` Security Release (High) - [CVE-2023-39332](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39332): Path traversal through path stored in Uint8Array (High) - [CVE-2023-39331](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39331): Permission model improperly protects against path traversal (High) - [CVE-2023-38552](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-38552): Integrity checks according to policies can be circumvented (Medium) - [CVE-2023-39333](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-39333): Code injection via WebAssembly export names (Low) More detailed information on each of the vulnerabilities can be found in [October 2023 Security Releases](https://nodejs.org/en/blog/vulnerability/october-2023-security-releases/) blog post. ##### Commits - \[[`c86883e844`](https://togithub.com/nodejs/node/commit/c86883e844)] - **deps**: update nghttp2 to 1.57.0 (James M Snell) [#​50121](https://togithub.com/nodejs/node/pull/50121) - \[[`2860631359`](https://togithub.com/nodejs/node/commit/2860631359)] - **deps**: update undici to v5.26.3 (Matteo Collina) [#​50153](https://togithub.com/nodejs/node/pull/50153) - \[[`cd37838bf8`](https://togithub.com/nodejs/node/commit/cd37838bf8)] - **lib**: let deps require `node` prefixed modules (Matthew Aitken) [#​50047](https://togithub.com/nodejs/node/pull/50047) - \[[`f5c90b2951`](https://togithub.com/nodejs/node/commit/f5c90b2951)] - **module**: fix code injection through export names (Tobias Nießen) [nodejs-private/node-private#461](https://togithub.com/nodejs-private/node-private/pull/461) - \[[`fa5dae1944`](https://togithub.com/nodejs/node/commit/fa5dae1944)] - **permission**: fix Uint8Array path traversal (Tobias Nießen) [nodejs-private/node-private#456](https://togithub.com/nodejs-private/node-private/pull/456) - \[[`cd35275111`](https://togithub.com/nodejs/node/commit/cd35275111)] - **permission**: improve path traversal protection (Tobias Nießen) [nodejs-private/node-private#456](https://togithub.com/nodejs-private/node-private/pull/456) - \[[`a4cb7fc7c0`](https://togithub.com/nodejs/node/commit/a4cb7fc7c0)] - **policy**: use tamper-proof integrity check function (Tobias Nießen) [nodejs-private/node-private#462](https://togithub.com/nodejs-private/node-private/pull/462) ### [`v20.8.0`](https://togithub.com/nodejs/node/releases/tag/v20.8.0): 2023-09-28, Version 20.8.0 (Current), @​ruyadorno [Compare Source](https://togithub.com/nodejs/node/compare/v20.7.0...v20.8.0) ##### Notable Changes ##### Stream performance improvements Performance improvements to writable and readable streams, improving the creation and destruction by ±15% and reducing the memory overhead each stream takes in Node.js Contributed by Benjamin Gruenbaum in [#​49745](https://togithub.com/nodejs/node/pull/49745) and Raz Luvaton in [#​49834](https://togithub.com/nodejs/node/pull/49834). Performance improvements for readable webstream, improving readable stream async iterator consumption by ±140% and improving readable stream `pipeTo` consumption by ±60% Contributed by Raz Luvaton in [#​49662](https://togithub.com/nodejs/node/pull/49662) and [#​49690](https://togithub.com/nodejs/node/pull/49690). ##### Rework of memory management in `vm` APIs with the `importModuleDynamically` option This rework addressed a series of long-standing memory leaks and use-after-free issues in the following APIs that support `importModuleDynamically`: - `vm.Script` - `vm.compileFunction` - `vm.SyntheticModule` - `vm.SourceTextModule` This should enable affected users (in particular Jest users) to upgrade from older versions of Node.js. Contributed by Joyee Cheung in [#​48510](https://togithub.com/nodejs/node/pull/48510). ##### Other notable changes - \[[`32d4d29d02`](https://togithub.com/nodejs/node/commit/32d4d29d02)] - **deps**: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) [#​49874](https://togithub.com/nodejs/node/pull/49874) - \[[`0e686d096b`](https://togithub.com/nodejs/node/commit/0e686d096b)] - **doc**: deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#​49683](https://togithub.com/nodejs/node/pull/49683) - \[[`a5dd057540`](https://togithub.com/nodejs/node/commit/a5dd057540)] - **doc**: deprecate `util.toUSVString` (Yagiz Nizipli) [#​49725](https://togithub.com/nodejs/node/pull/49725) - \[[`7b6a73172f`](https://togithub.com/nodejs/node/commit/7b6a73172f)] - **doc**: deprecate calling `promisify` on a function that returns a promise (Antoine du Hamel) [#​49647](https://togithub.com/nodejs/node/pull/49647) - \[[`1beefd5f16`](https://togithub.com/nodejs/node/commit/1beefd5f16)] - **esm**: set all hooks as release candidate (Geoffrey Booth) [#​49597](https://togithub.com/nodejs/node/pull/49597) - \[[`b0ce78a75b`](https://togithub.com/nodejs/node/commit/b0ce78a75b)] - **module**: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`4e578f8ab1`](https://togithub.com/nodejs/node/commit/4e578f8ab1)] - **module**: fix leak of vm.SyntheticModule (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`69e4218772`](https://togithub.com/nodejs/node/commit/69e4218772)] - **module**: use symbol in WeakMap to manage host defined options (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`14ece0aa76`](https://togithub.com/nodejs/node/commit/14ece0aa76)] - **(SEMVER-MINOR)** **src**: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) [#​49279](https://togithub.com/nodejs/node/pull/49279) - \[[`9fd67fbff0`](https://togithub.com/nodejs/node/commit/9fd67fbff0)] - **stream**: use bitmap in writable state (Raz Luvaton) [#​49834](https://togithub.com/nodejs/node/pull/49834) - \[[`0ccd4638ac`](https://togithub.com/nodejs/node/commit/0ccd4638ac)] - **stream**: use bitmap in readable state (Benjamin Gruenbaum) [#​49745](https://togithub.com/nodejs/node/pull/49745) - \[[`7c5e322346`](https://togithub.com/nodejs/node/commit/7c5e322346)] - **stream**: improve webstream readable async iterator performance (Raz Luvaton) [#​49662](https://togithub.com/nodejs/node/pull/49662) - \[[`80b342cc38`](https://togithub.com/nodejs/node/commit/80b342cc38)] - **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe Atlow) [#​49753](https://togithub.com/nodejs/node/pull/49753) - \[[`17a05b141d`](https://togithub.com/nodejs/node/commit/17a05b141d)] - **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow) [#​49614](https://togithub.com/nodejs/node/pull/49614) ##### Commits - \[[`4879e3fbbe`](https://togithub.com/nodejs/node/commit/4879e3fbbe)] - **benchmark**: add a benchmark for read() of ReadableStreams (Debadree Chatterjee) [#​49622](https://togithub.com/nodejs/node/pull/49622) - \[[`78a6c73157`](https://togithub.com/nodejs/node/commit/78a6c73157)] - **benchmark**: shorten pipe-to by reducing number of chunks (Raz Luvaton) [#​49577](https://togithub.com/nodejs/node/pull/49577) - \[[`4126a6e4c9`](https://togithub.com/nodejs/node/commit/4126a6e4c9)] - **benchmark**: fix webstream pipe-to (Raz Luvaton) [#​49552](https://togithub.com/nodejs/node/pull/49552) - \[[`6010a91825`](https://togithub.com/nodejs/node/commit/6010a91825)] - **bootstrap**: do not expand argv1 for snapshots (Joyee Cheung) [#​49506](https://togithub.com/nodejs/node/pull/49506) - \[[`8480280c4b`](https://togithub.com/nodejs/node/commit/8480280c4b)] - **bootstrap**: only use the isolate snapshot when compiling code cache (Joyee Cheung) [#​49288](https://togithub.com/nodejs/node/pull/49288) - \[[`b30754aa87`](https://togithub.com/nodejs/node/commit/b30754aa87)] - **build**: run embedtest using node executable (Joyee Cheung) [#​49506](https://togithub.com/nodejs/node/pull/49506) - \[[`31db0b8e2b`](https://togithub.com/nodejs/node/commit/31db0b8e2b)] - **build**: add --write-snapshot-as-array-literals to configure.py (Joyee Cheung) [#​49312](https://togithub.com/nodejs/node/pull/49312) - \[[`6fcb51d3ba`](https://togithub.com/nodejs/node/commit/6fcb51d3ba)] - **debugger**: use `internal/url.URL` instead of `url.parse` (LiviaMedeiros) [#​49590](https://togithub.com/nodejs/node/pull/49590) - \[[`32d4d29d02`](https://togithub.com/nodejs/node/commit/32d4d29d02)] - **deps**: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) [#​49874](https://togithub.com/nodejs/node/pull/49874) - \[[`ad37cadc3f`](https://togithub.com/nodejs/node/commit/ad37cadc3f)] - **deps**: V8: backport [`de9a5de`](https://togithub.com/nodejs/node/commit/de9a5de2274f) (Joyee Cheung) [#​49703](https://togithub.com/nodejs/node/pull/49703) - \[[`cdd1c66222`](https://togithub.com/nodejs/node/commit/cdd1c66222)] - **deps**: V8: cherry-pick [`b33bf2d`](https://togithub.com/nodejs/node/commit/b33bf2dfd261) (Joyee Cheung) [#​49703](https://togithub.com/nodejs/node/pull/49703) - \[[`61d18d6473`](https://togithub.com/nodejs/node/commit/61d18d6473)] - **deps**: update undici to 5.24.0 (Node.js GitHub Bot) [#​49559](https://togithub.com/nodejs/node/pull/49559) - \[[`b8a4fef393`](https://togithub.com/nodejs/node/commit/b8a4fef393)] - **deps**: remove pthread-fixes.c from uv.gyp (Ben Noordhuis) [#​49744](https://togithub.com/nodejs/node/pull/49744) - \[[`6c86c0683c`](https://togithub.com/nodejs/node/commit/6c86c0683c)] - **deps**: update googletest to [`d1467f5`](https://togithub.com/nodejs/node/commit/d1467f5) (Node.js GitHub Bot) [#​49676](https://togithub.com/nodejs/node/pull/49676) - \[[`1424404742`](https://togithub.com/nodejs/node/commit/1424404742)] - **deps**: update nghttp2 to 1.56.0 (Node.js GitHub Bot) [#​49582](https://togithub.com/nodejs/node/pull/49582) - \[[`15b54ff95d`](https://togithub.com/nodejs/node/commit/15b54ff95d)] - **deps**: update googletest to [`8a6feab`](https://togithub.com/nodejs/node/commit/8a6feab) (Node.js GitHub Bot) [#​49463](https://togithub.com/nodejs/node/pull/49463) - \[[`2ceab877c2`](https://togithub.com/nodejs/node/commit/2ceab877c2)] - **deps**: update corepack to 0.20.0 (Node.js GitHub Bot) [#​49464](https://togithub.com/nodejs/node/pull/49464) - \[[`4814872ddc`](https://togithub.com/nodejs/node/commit/4814872ddc)] - **doc**: fix `DEP0176` number (LiviaMedeiros) [#​49858](https://togithub.com/nodejs/node/pull/49858) - \[[`0e686d096b`](https://togithub.com/nodejs/node/commit/0e686d096b)] - **doc**: deprecate `fs.F_OK`, `fs.R_OK`, `fs.W_OK`, `fs.X_OK` (Livia Medeiros) [#​49683](https://togithub.com/nodejs/node/pull/49683) - \[[`5877c403a2`](https://togithub.com/nodejs/node/commit/5877c403a2)] - **doc**: add mertcanaltin as a triager (mert.altin) [#​49826](https://togithub.com/nodejs/node/pull/49826) - \[[`864fe56432`](https://togithub.com/nodejs/node/commit/864fe56432)] - **doc**: add `git node backport` way to the backporting guide (Raz Luvaton) [#​49760](https://togithub.com/nodejs/node/pull/49760) - \[[`e0f93492d5`](https://togithub.com/nodejs/node/commit/e0f93492d5)] - **doc**: improve documentation about ICU data fallback (Joyee Cheung) [#​49666](https://togithub.com/nodejs/node/pull/49666) - \[[`a5dd057540`](https://togithub.com/nodejs/node/commit/a5dd057540)] - **doc**: deprecate `util.toUSVString` (Yagiz Nizipli) [#​49725](https://togithub.com/nodejs/node/pull/49725) - \[[`774c1cfd52`](https://togithub.com/nodejs/node/commit/774c1cfd52)] - **doc**: add missing function call to example for `util.promisify` (Jungku Lee) [#​49719](https://togithub.com/nodejs/node/pull/49719) - \[[`fe78a34845`](https://togithub.com/nodejs/node/commit/fe78a34845)] - **doc**: update output of example in `mimeParams.set()` (Deokjin Kim) [#​49718](https://togithub.com/nodejs/node/pull/49718) - \[[`4175ea33bd`](https://togithub.com/nodejs/node/commit/4175ea33bd)] - **doc**: add missed `inspect` with numericSeparator to example (Deokjin Kim) [#​49717](https://togithub.com/nodejs/node/pull/49717) - \[[`3a88571972`](https://togithub.com/nodejs/node/commit/3a88571972)] - **doc**: fix history comments (Antoine du Hamel) [#​49701](https://togithub.com/nodejs/node/pull/49701) - \[[`db4ab1ccbb`](https://togithub.com/nodejs/node/commit/db4ab1ccbb)] - **doc**: add missing history info for `import.meta.resolve` (Antoine du Hamel) [#​49700](https://togithub.com/nodejs/node/pull/49700) - \[[`a304d1ee19`](https://togithub.com/nodejs/node/commit/a304d1ee19)] - **doc**: link maintaining deps to pull-request.md (Marco Ippolito) [#​49716](https://togithub.com/nodejs/node/pull/49716) - \[[`35294486ad`](https://togithub.com/nodejs/node/commit/35294486ad)] - **doc**: fix print results in `events` (Jungku Lee) [#​49548](https://togithub.com/nodejs/node/pull/49548) - \[[`9f0b0e15c9`](https://togithub.com/nodejs/node/commit/9f0b0e15c9)] - **doc**: alphabetize cli.md sections (Geoffrey Booth) [#​49668](https://togithub.com/nodejs/node/pull/49668) - \[[`7b6a73172f`](https://togithub.com/nodejs/node/commit/7b6a73172f)] - **doc**: deprecate calling `promisify` on a function that returns a promise (Antoine du Hamel) [#​49647](https://togithub.com/nodejs/node/pull/49647) - \[[`d316b32fff`](https://togithub.com/nodejs/node/commit/d316b32fff)] - **doc**: update `corepack.md` to account for 0.20.0 changes (Antoine du Hamel) [#​49486](https://togithub.com/nodejs/node/pull/49486) - \[[`c2eac7dc7c`](https://togithub.com/nodejs/node/commit/c2eac7dc7c)] - **doc**: remove `@anonrig` from performance initiative (Yagiz Nizipli) [#​49641](https://togithub.com/nodejs/node/pull/49641) - \[[`3d839fbf87`](https://togithub.com/nodejs/node/commit/3d839fbf87)] - **doc**: mark Node.js 16 as End-of-Life (Richard Lau) [#​49651](https://togithub.com/nodejs/node/pull/49651) - \[[`53fb5aead8`](https://togithub.com/nodejs/node/commit/53fb5aead8)] - **doc**: save user preference for JS flavor (Vidar Eldøy) [#​49526](https://togithub.com/nodejs/node/pull/49526) - \[[`e3594d5658`](https://togithub.com/nodejs/node/commit/e3594d5658)] - **doc**: update documentation for node:process warning (Shubham Pandey) [#​49517](https://togithub.com/nodejs/node/pull/49517) - \[[`8e033c3963`](https://togithub.com/nodejs/node/commit/8e033c3963)] - **doc**: rename possibly confusing variable and CSS class (Antoine du Hamel) [#​49536](https://togithub.com/nodejs/node/pull/49536) - \[[`d0e0eb4bb3`](https://togithub.com/nodejs/node/commit/d0e0eb4bb3)] - **doc**: update outdated history info (Antoine du Hamel) [#​49530](https://togithub.com/nodejs/node/pull/49530) - \[[`b4724e2e3a`](https://togithub.com/nodejs/node/commit/b4724e2e3a)] - **doc**: close a parenthesis (Sébastien Règne) [#​49525](https://togithub.com/nodejs/node/pull/49525) - \[[`0471c5798e`](https://togithub.com/nodejs/node/commit/0471c5798e)] - **doc**: cast GetInternalField() return type to v8::Value in addons.md (Joyee Cheung) [#​49439](https://togithub.com/nodejs/node/pull/49439) - \[[`9f8bea3dda`](https://togithub.com/nodejs/node/commit/9f8bea3dda)] - **doc**: fix documentation for input option in child_process (Ariel Weiss) [#​49481](https://togithub.com/nodejs/node/pull/49481) - \[[`f3fea92f8a`](https://togithub.com/nodejs/node/commit/f3fea92f8a)] - **doc**: fix missing imports in `test.run` code examples (Oshri Asulin) [#​49489](https://togithub.com/nodejs/node/pull/49489) - \[[`e426b77b67`](https://togithub.com/nodejs/node/commit/e426b77b67)] - **doc**: fix documentation for fs.createWriteStream highWaterMark option (Mert Can Altın) [#​49456](https://togithub.com/nodejs/node/pull/49456) - \[[`2b119108ff`](https://togithub.com/nodejs/node/commit/2b119108ff)] - **doc**: updated releasers instructions for node.js website (Claudio W) [#​49427](https://togithub.com/nodejs/node/pull/49427) - \[[`b9d4a80183`](https://togithub.com/nodejs/node/commit/b9d4a80183)] - **doc**: edit `import.meta.resolve` documentation (Antoine du Hamel) [#​49247](https://togithub.com/nodejs/node/pull/49247) - \[[`f67433f666`](https://togithub.com/nodejs/node/commit/f67433f666)] - **doc,tools**: switch to `@node-core/utils` (Michaël Zasso) [#​49851](https://togithub.com/nodejs/node/pull/49851) - \[[`142e256fc5`](https://togithub.com/nodejs/node/commit/142e256fc5)] - **errors**: improve classRegExp in errors.js (Uzlopak) [#​49643](https://togithub.com/nodejs/node/pull/49643) - \[[`6377f1bce2`](https://togithub.com/nodejs/node/commit/6377f1bce2)] - **errors**: use `determineSpecificType` in more error messages (Antoine du Hamel) [#​49580](https://togithub.com/nodejs/node/pull/49580) - \[[`05f0fcb4c4`](https://togithub.com/nodejs/node/commit/05f0fcb4c4)] - **esm**: identify parent importing a url with invalid host (Jacob Smith) [#​49736](https://togithub.com/nodejs/node/pull/49736) - \[[`8a6f5fb8f3`](https://togithub.com/nodejs/node/commit/8a6f5fb8f3)] - **esm**: fix return type of `import.meta.resolve` (Antoine du Hamel) [#​49698](https://togithub.com/nodejs/node/pull/49698) - \[[`a6140f1b8c`](https://togithub.com/nodejs/node/commit/a6140f1b8c)] - **esm**: update loaders warning (Geoffrey Booth) [#​49633](https://togithub.com/nodejs/node/pull/49633) - \[[`521a9327e0`](https://togithub.com/nodejs/node/commit/521a9327e0)] - **esm**: fix support for `URL` instances in `register` (Antoine du Hamel) [#​49655](https://togithub.com/nodejs/node/pull/49655) - \[[`3a9ea0925a`](https://togithub.com/nodejs/node/commit/3a9ea0925a)] - **esm**: clarify ERR_REQUIRE_ESM errors (Daniel Compton) [#​49521](https://togithub.com/nodejs/node/pull/49521) - \[[`1beefd5f16`](https://togithub.com/nodejs/node/commit/1beefd5f16)] - **esm**: set all hooks as release candidate (Geoffrey Booth) [#​49597](https://togithub.com/nodejs/node/pull/49597) - \[[`be48267888`](https://togithub.com/nodejs/node/commit/be48267888)] - **esm**: remove return value for `Module.register` (Antoine du Hamel) [#​49529](https://togithub.com/nodejs/node/pull/49529) - \[[`e74a075124`](https://togithub.com/nodejs/node/commit/e74a075124)] - **esm**: refactor test-esm-loader-resolve-type (Geoffrey Booth) [#​49493](https://togithub.com/nodejs/node/pull/49493) - \[[`17823b3533`](https://togithub.com/nodejs/node/commit/17823b3533)] - **esm**: refactor test-esm-named-exports (Geoffrey Booth) [#​49493](https://togithub.com/nodejs/node/pull/49493) - \[[`f34bd15ac1`](https://togithub.com/nodejs/node/commit/f34bd15ac1)] - **esm**: refactor mocking test (Geoffrey Booth) [#​49465](https://togithub.com/nodejs/node/pull/49465) - \[[`ec323bbd99`](https://togithub.com/nodejs/node/commit/ec323bbd99)] - **fs**: replace `SetMethodNoSideEffect` in node_file (CanadaHonk) [#​49857](https://togithub.com/nodejs/node/pull/49857) - \[[`6acf800123`](https://togithub.com/nodejs/node/commit/6acf800123)] - **fs**: improve error performance for `unlinkSync` (CanadaHonk) [#​49856](https://togithub.com/nodejs/node/pull/49856) - \[[`31702c9403`](https://togithub.com/nodejs/node/commit/31702c9403)] - **fs**: improve `readFileSync` with file descriptors (Yagiz Nizipli) [#​49691](https://togithub.com/nodejs/node/pull/49691) - \[[`835f9fe7b9`](https://togithub.com/nodejs/node/commit/835f9fe7b9)] - **fs**: fix file descriptor validator (Yagiz Nizipli) [#​49752](https://togithub.com/nodejs/node/pull/49752) - \[[`b618fe262f`](https://togithub.com/nodejs/node/commit/b618fe262f)] - **fs**: improve error performance of `opendirSync` (Yagiz Nizipli) [#​49705](https://togithub.com/nodejs/node/pull/49705) - \[[`938471ef55`](https://togithub.com/nodejs/node/commit/938471ef55)] - **fs**: improve error performance of sync methods (Yagiz Nizipli) [#​49593](https://togithub.com/nodejs/node/pull/49593) - \[[`db3fc6d087`](https://togithub.com/nodejs/node/commit/db3fc6d087)] - **fs**: fix readdir and opendir recursive with unknown file types (William Marlow) [#​49603](https://togithub.com/nodejs/node/pull/49603) - \[[`0f020ed22d`](https://togithub.com/nodejs/node/commit/0f020ed22d)] - **gyp**: put cctest filenames in variables (Cheng Zhao) [#​49178](https://togithub.com/nodejs/node/pull/49178) - \[[`0ce1e94d12`](https://togithub.com/nodejs/node/commit/0ce1e94d12)] - **lib**: update encoding sets in `WHATWG API` (Jungku Lee) [#​49610](https://togithub.com/nodejs/node/pull/49610) - \[[`efd6815a7a`](https://togithub.com/nodejs/node/commit/efd6815a7a)] - **lib**: fix `internalBinding` typings (Yagiz Nizipli) [#​49742](https://togithub.com/nodejs/node/pull/49742) - \[[`1287d5b74e`](https://togithub.com/nodejs/node/commit/1287d5b74e)] - **lib**: allow byob reader for 'blob.stream()' (Debadree Chatterjee) [#​49713](https://togithub.com/nodejs/node/pull/49713) - \[[`bbc710522d`](https://togithub.com/nodejs/node/commit/bbc710522d)] - **lib**: reset the cwd cache before execution (Maël Nison) [#​49684](https://togithub.com/nodejs/node/pull/49684) - \[[`f62d649e4d`](https://togithub.com/nodejs/node/commit/f62d649e4d)] - **lib**: use internal `fileURLToPath` (Deokjin Kim) [#​49558](https://togithub.com/nodejs/node/pull/49558) - \[[`e515046941`](https://togithub.com/nodejs/node/commit/e515046941)] - **lib**: use internal `pathToFileURL` (Livia Medeiros) [#​49553](https://togithub.com/nodejs/node/pull/49553) - \[[`00608e8070`](https://togithub.com/nodejs/node/commit/00608e8070)] - **lib**: check SharedArrayBuffer availability in freeze_intrinsics.js (Milan Burda) [#​49482](https://togithub.com/nodejs/node/pull/49482) - \[[`8bfbe7079c`](https://togithub.com/nodejs/node/commit/8bfbe7079c)] - **meta**: fix linter error (Antoine du Hamel) [#​49755](https://togithub.com/nodejs/node/pull/49755) - \[[`58f7a9e096`](https://togithub.com/nodejs/node/commit/58f7a9e096)] - **meta**: add primordials strategic initiative (Benjamin Gruenbaum) [#​49706](https://togithub.com/nodejs/node/pull/49706) - \[[`5366027756`](https://togithub.com/nodejs/node/commit/5366027756)] - **meta**: bump github/codeql-action from 2.21.2 to 2.21.5 (dependabot\[bot]) [#​49438](https://togithub.com/nodejs/node/pull/49438) - \[[`fe26b74082`](https://togithub.com/nodejs/node/commit/fe26b74082)] - **meta**: bump rtCamp/action-slack-notify from 2.2.0 to 2.2.1 (dependabot\[bot]) [#​49437](https://togithub.com/nodejs/node/pull/49437) - \[[`b0ce78a75b`](https://togithub.com/nodejs/node/commit/b0ce78a75b)] - **module**: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`4e578f8ab1`](https://togithub.com/nodejs/node/commit/4e578f8ab1)] - **module**: fix leak of vm.SyntheticModule (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`69e4218772`](https://togithub.com/nodejs/node/commit/69e4218772)] - **module**: use symbol in WeakMap to manage host defined options (Joyee Cheung) [#​48510](https://togithub.com/nodejs/node/pull/48510) - \[[`96874e8fbc`](https://togithub.com/nodejs/node/commit/96874e8fbc)] - **node-api**: enable uncaught exceptions policy by default (Chengzhong Wu) [#​49313](https://togithub.com/nodejs/node/pull/49313) - \[[`b931aeadfd`](https://togithub.com/nodejs/node/commit/b931aeadfd)] - **perf_hooks**: reduce overhead of new performance_entries (Vinicius Lourenço) [#​49803](https://togithub.com/nodejs/node/pull/49803) - \[[`ad043bac31`](https://togithub.com/nodejs/node/commit/ad043bac31)] - **process**: add custom dir support for heapsnapshot-signal (Jithil P Ponnan) [#​47854](https://togithub.com/nodejs/node/pull/47854) - \[[`8a7c10194c`](https://togithub.com/nodejs/node/commit/8a7c10194c)] - **repl**: don't accumulate excess indentation in .load (Daniel X Moore) [#​49461](https://togithub.com/nodejs/node/pull/49461) - \[[`10a2adeed5`](https://togithub.com/nodejs/node/commit/10a2adeed5)] - **src**: improve error message when ICU data cannot be initialized (Joyee Cheung) [#​49666](https://togithub.com/nodejs/node/pull/49666) - \[[`ce37688bac`](https://togithub.com/nodejs/node/commit/ce37688bac)] - **src**: remove unnecessary todo (Rafael Gonzaga) [#​49227](https://togithub.com/nodejs/node/pull/49227) - \[[`f611583b71`](https://togithub.com/nodejs/node/commit/f611583b71)] - **src**: use SNAPSHOT_SERDES to log snapshot ser/deserialization (Joyee Cheung) [#​49637](https://togithub.com/nodejs/node/pull/49637) - \[[`a597cb8457`](https://togithub.com/nodejs/node/commit/a597cb8457)] - **src**: port Pipe to uv_pipe_bind2, uv_pipe_connect2 (Geoff Goodman) [#​49667](https://togithub.com/nodejs/node/pull/49667) - \[[`fb21062338`](https://togithub.com/nodejs/node/commit/fb21062338)] - **src**: set --rehash-snapshot explicitly (Joyee Cheung) [#​49556](https://togithub.com/nodejs/node/pull/49556) - \[[`14ece0aa76`](https://togithub.com/nodejs/node/commit/14ece0aa76)] - **(SEMVER-MINOR)** **src**: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) [#​49279](https://togithub.com/nodejs/node/pull/49279) - \[[`4b5e23c71b`](https://togithub.com/nodejs/node/commit/4b5e23c71b)] - **src**: set ModuleWrap internal fields only once (Joyee Cheung) [#​49391](https://togithub.com/nodejs/node/pull/49391) - \[[`2d3f5c7cab`](https://togithub.com/nodejs/node/commit/2d3f5c7cab)] - **src**: fix fs_type_to_name default value (Mustafa Ateş Uzun) [#​49239](https://togithub.com/nodejs/node/pull/49239) - \[[`cfbcb1059c`](https://togithub.com/nodejs/node/commit/cfbcb1059c)] - **src**: fix comment on StreamResource (rogertyang) [#​49193](https://togithub.com/nodejs/node/pull/49193) - \[[`39fb83ad16`](https://togithub.com/nodejs/node/commit/39fb83ad16)] - **src**: do not rely on the internal field being default to undefined (Joyee Cheung) [#​49413](https://togithub.com/nodejs/node/pull/49413) - \[[`9fd67fbff0`](https://togithub.com/nodejs/node/commit/9fd67fbff0)] - **stream**: use bitmap in writable state (Raz Luvaton) [#​49834](https://togithub.com/nodejs/node/pull/49834) - \[[`0ccd4638ac`](https://togithub.com/nodejs/node/commit/0ccd4638ac)] - **stream**: use bitmap in readable state (Benjamin Gruenbaum) [#​49745](https://togithub.com/nodejs/node/pull/49745) - \[[`b29d927010`](https://togithub.com/nodejs/node/commit/b29d927010)] - **stream**: improve readable webstream `pipeTo` (Raz Luvaton) [#​49690](https://togithub.com/nodejs/node/pull/49690) - \[[`7c5e322346`](https://togithub.com/nodejs/node/commit/7c5e322346)] - **stream**: improve webstream readable async iterator performance (Raz Luvaton) [#​49662](https://togithub.com/nodejs/node/pull/49662) - \[[`be211ef818`](https://togithub.com/nodejs/node/commit/be211ef818)] - **test**: deflake test-vm-contextified-script-leak (Joyee Cheung) [#​49710](https://togithub.com/nodejs/node/pull/49710) - \[[`355f10dab2`](https://togithub.com/nodejs/node/commit/355f10dab2)] - **test**: use checkIfCollectable in vm leak tests (Joyee Cheung) [#​49671](https://togithub.com/nodejs/node/pull/49671) - \[[`17cfc531aa`](https://togithub.com/nodejs/node/commit/17cfc531aa)] - **test**: add checkIfCollectable to test/common/gc.js (Joyee Cheung) [#​49671](https://togithub.com/nodejs/node/pull/49671) - \[[`e49a573752`](https://togithub.com/nodejs/node/commit/e49a573752)] - **test**: add os setPriority, getPriority test coverage (Wael) [#​38771](https://togithub.com/nodejs/node/pull/38771) - \[[`5f02711522`](https://togithub.com/nodejs/node/commit/5f02711522)] - **test**: deflake test-runner-output (Moshe Atlow) [#​49878](https://togithub.com/nodejs/node/pull/49878) - \[[`cd9754d6a7`](https://togithub.com/nodejs/node/commit/cd9754d6a7)] - **test**: mark test-runner-output as flaky (Joyee Cheung) [#​49854](https://togithub.com/nodejs/node/pull/49854) - \[[`5ad00424dd`](https://togithub.com/nodejs/node/commit/5ad00424dd)] - **test**: use mustSucceed instead of mustCall (SiddharthDevulapalli) [#​49788](https://togithub.com/nodejs/node/pull/49788) - \[[`3db9b40081`](https://togithub.com/nodejs/node/commit/3db9b40081)] - **test**: refactor test-readline-async-iterators into a benchmark (Shubham Pandey) [#​49237](https://togithub.com/nodejs/node/pull/49237) - \[[`2cc5ad7859`](https://togithub.com/nodejs/node/commit/2cc5ad7859)] - ***Revert*** "**test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky" (Luigi Pinca) [#​49708](https://togithub.com/nodejs/node/pull/49708) - \[[`e5185b053c`](https://togithub.com/nodejs/node/commit/e5185b053c)] - **test**: use `fs.constants` for `fs.access` constants (Livia Medeiros) [#​49685](https://togithub.com/nodejs/node/pull/49685) - \[[`b9e5b43462`](https://togithub.com/nodejs/node/commit/b9e5b43462)] - **test**: deflake test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) (Luigi Pinca) [#​49574](https://togithub.com/nodejs/node/pull/49574) - \[[`1fffda504e`](https://togithub.com/nodejs/node/commit/1fffda504e)] - **test**: fix argument computation in embedtest (Joyee Cheung) [#​49506](https://togithub.com/nodejs/node/pull/49506) - \[[`6e56f2db52`](https://togithub.com/nodejs/node/commit/6e56f2db52)] - **test**: skip test-child-process-stdio-reuse-readable-stdio on Windows (Joyee Cheung) [#​49621](https://togithub.com/nodejs/node/pull/49621) - \[[`ab3afb330d`](https://togithub.com/nodejs/node/commit/ab3afb330d)] - **test**: mark test-runner-watch-mode as flaky (Joyee Cheung) [#​49627](https://togithub.com/nodejs/node/pull/49627) - \[[`185d9b50db`](https://togithub.com/nodejs/node/commit/185d9b50db)] - **test**: deflake test-tls-socket-close (Luigi Pinca) [#​49575](https://togithub.com/nodejs/node/pull/49575) - \[[`c70c74a9e6`](https://togithub.com/nodejs/node/commit/c70c74a9e6)] - **test**: show more info on failure in test-cli-syntax-require.js (Joyee Cheung) [#​49561](https://togithub.com/nodejs/node/pull/49561) - \[[`ed7c6d1114`](https://togithub.com/nodejs/node/commit/ed7c6d1114)] - **test**: mark test-http-regr-[gh-2928](https://togithub.com/nodejs/node/issues/2928) as flaky (Joyee Cheung) [#​49565](https://togithub.com/nodejs/node/pull/49565) - \[[`3599eebab9`](https://togithub.com/nodejs/node/commit/3599eebab9)] - **test**: use spawnSyncAndExitWithoutError in sea tests (Joyee Cheung) [#​49543](https://togithub.com/nodejs/node/pull/49543) - \[[`f79b153e89`](https://togithub.com/nodejs/node/commit/f79b153e89)] - **test**: use spawnSyncAndExitWithoutError in test/common/sea.js (Joyee Cheung) [#​49543](https://togithub.com/nodejs/node/pull/49543) - \[[`c079c73769`](https://togithub.com/nodejs/node/commit/c079c73769)] - **test**: use setImmediate() in test-heapdump-shadowrealm.js (Joyee Cheung) [#​49573](https://togithub.com/nodejs/node/pull/49573) - \[[`667a92493c`](https://togithub.com/nodejs/node/commit/667a92493c)] - **test**: skip test-child-process-pipe-dataflow.js on Windows (Joyee Cheung) [#​49563](https://togithub.com/nodejs/node/pull/49563) - \[[`91af0a9a3c`](https://togithub.com/nodejs/node/commit/91af0a9a3c)] - ***Revert*** "**test**: ignore the copied entry_point.c" (Chengzhong Wu) [#​49515](https://togithub.com/nodejs/node/pull/49515) - \[[`567afc71b8`](https://togithub.com/nodejs/node/commit/567afc71b8)] - **test**: avoid copying test source files (Chengzhong Wu) [#​49515](https://togithub.com/nodejs/node/pull/49515) - \[[`ced25a976d`](https://togithub.com/nodejs/node/commit/ced25a976d)] - **test**: increase coverage of `Module.register` and `initialize` hook (Antoine du Hamel) [#​49532](https://togithub.com/nodejs/node/pull/49532) - \[[`be02fbdb8a`](https://togithub.com/nodejs/node/commit/be02fbdb8a)] - **test**: isolate `globalPreload` tests (Geoffrey Booth) [#​49545](https://togithub.com/nodejs/node/pull/49545) - \[[`f214428845`](https://togithub.com/nodejs/node/commit/f214428845)] - **test**: split test-crypto-dh to avoid timeout on slow machines in the CI (Joyee Cheung) [#​49492](https://togithub.com/nodejs/node/pull/49492) - \[[`3987094569`](https://togithub.com/nodejs/node/commit/3987094569)] - **test**: make `test-dotenv-node-options` locale-independent (Livia Medeiros) [#​49470](https://togithub.com/nodejs/node/pull/49470) - \[[`34c1741792`](https://togithub.com/nodejs/node/commit/34c1741792)] - **test**: add test for urlstrings usage in `node:fs` (Livia Medeiros) [#​49471](https://togithub.com/nodejs/node/pull/49471) - \[[`c3c6c4f007`](https://togithub.com/nodejs/node/commit/c3c6c4f007)] - **test**: make test-worker-prof more robust (Joyee Cheung) [#​49274](https://togithub.com/nodejs/node/pull/49274) - \[[`843df1a4da`](https://togithub.com/nodejs/node/commit/843df1a4da)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#​49714](https://togithub.com/nodejs/node/pull/49714) - \[[`80b342cc38`](https://togithub.com/nodejs/node/commit/80b342cc38)] - **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe Atlow) [#​49753](https://togithub.com/nodejs/node/pull/49753) - \[[`76865515b9`](https://togithub.com/nodejs/node/commit/76865515b9)] - **test_runner**: fix test runner watch mode when no positional arguments (Moshe Atlow) [#​49578](https://togithub.com/nodejs/node/pull/49578) - \[[`17a05b141d`](https://togithub.com/nodejs/node/commit/17a05b141d)] - **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow) [#​49614](https://togithub.com/nodejs/node/pull/49614) - \[[`5672e38457`](https://togithub.com/nodejs/node/commit/5672e38457)] - **test_runner**: add jsdocs to mock.js (Caio Borghi) [#​49555](https://togithub.com/nodejs/node/pull/49555) - \[[`b4d42a8f2b`](https://togithub.com/nodejs/node/commit/b4d42a8f2b)] - **test_runner**: fix invalid timer call (Erick Wendel) [#​49477](https://togithub.com/nodejs/node/pull/49477) - \[[`f755e6786b`](https://togithub.com/nodejs/node/commit/f755e6786b)] - **test_runner**: add jsdocs to MockTimers (Erick Wendel) [#​49476](https://togithub.com/nodejs/node/pull/49476) - \[[`e7285d4bf0`](https://togithub.com/nodejs/node/commit/e7285d4bf0)] - **test_runner**: fix typescript coverage (Moshe Atlow) [#​49406](https://togithub.com/nodejs/node/pull/49406) - \[[`07a2e29bf3`](https://togithub.com/nodejs/node/commit/07a2e29bf3)] - **tools**: support updating [@​reporters/github](https://togithub.com/reporters/github) manually (Moshe Atlow) [#​49871](https://togithub.com/nodejs/node/pull/49871) - \[[`5ac6722031`](https://togithub.com/nodejs/node/commit/5ac6722031)] - **tools**: skip ruff on tools/node_modules (Moshe Atlow) [#​49838](https://togithub.com/nodejs/node/pull/49838) - \[[`462228bd24`](https://togithub.com/nodejs/node/commit/462228bd24)] - **tools**: fix uvwasi updater (Michael Dawson) [#​49682](https://togithub.com/nodejs/node/pull/49682) - \[[`ff81bfb958`](https://togithub.com/nodejs/node/commit/ff81bfb958)] - **tools**: update lint-md-dependencies to rollup@3.29.2 (Node.js GitHub Bot) [#​49679](https://togithub.com/nodejs/node/pull/49679) - \[[`08ffc6344c`](https://togithub.com/nodejs/node/commit/08ffc6344c)] - **tools**: restrict internal code from using public `url` module (LiviaMedeiros) [#​49590](https://togithub.com/nodejs/node/pull/49590) - \[[`728ebf6c97`](https://togithub.com/nodejs/node/commit/728ebf6c97)] - **tools**: update eslint to 8.49.0 (Node.js GitHub Bot) [#​49586](https://togithub.com/nodejs/node/pull/49586) - \[[`20d038ffb1`](https://togithub.com/nodejs/node/commit/20d038ffb1)] - **tools**: update lint-md-dependencies to rollup@3.29.0 unified@11.0.3 (Node.js GitHub Bot) [#​49584](https://togithub.com/nodejs/node/pull/49584) - \[[`210c15bd12`](https://togithub.com/nodejs/node/commit/210c15bd12)] - **tools**: allow passing absolute path of config.gypi in js2c (Cheng Zhao) [#​49162](https://togithub.com/nodejs/node/pull/49162) - \[[`e341efe173`](https://togithub.com/nodejs/node/commit/e341efe173)] - **tools**: configure never-stale label correctly (Michaël Zasso) [#​49498](https://togithub.com/nodejs/node/pull/49498) - \[[`a8a8a498ce`](https://togithub.com/nodejs/node/commit/a8a8a498ce)] - **tools**: update doc dependencies (Node.js GitHub Bot) [#​49467](https://togithub.com/nodejs/node/pull/49467) - \[[`ac06607f9e`](https://togithub.com/nodejs/node/commit/ac06607f9e)] - **typings**: fix missing property in `ExportedHooks` (Antoine du Hamel) [#​49567](https://togithub.com/nodejs/node/pull/49567) - \[[`097b59807a`](https://togithub.com/nodejs/node/commit/097b59807a)] - **url**: improve invalid url performance (Yagiz Nizipli) [#​49692](https://togithub.com/nodejs/node/pull/49692) - \[[`7c2060cfac`](https://togithub.com/nodejs/node/commit/7c2060cfac)] - **util**: add `getCwdSafe` internal util fn (João Lenon) [#​48434](https://togithub.com/nodejs/node/pull/48434) - \[[`c23c60f545`](https://togithub.com/nodejs/node/commit/c23c60f545)] - **zlib**: disable CRC32 SIMD optimization (Luigi Pinca) [#​49511](https://togithub.com/nodejs/node/pull/49511) ### [`v20.7.0`](https://togithub.com/nodejs/node/releases/tag/v20.7.0): 2023-09-18, Version 20.7.0 (Current), @​UlisesGascon [Compare Source](https://togithub.com/nodejs/node/compare/v20.6.1...v20.7.0) ##### Notable Changes - \[[`022f1b70c1`](https://togithub.com/nodejs/node/commit/022f1b70c1)] - **src**: support multiple `--env-file` declarations (Yagiz Nizipli) [#​49542](https://togithub.com/nodejs/node/pull/49542) - \[[`4a1d1cad61`](https://togithub.com/nodejs/node/commit/4a1d1cad61)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#​49341](https://togithub.com/nodejs/node/pull/49341) - \[[`a1a65f593c`](https://togithub.com/nodejs/node/commit/a1a65f593c)] - **deps**: upgrade npm to 10.1.0 (npm team) [#​49570](https://togithub.com/nodejs/node/pull/49570) - \[[`6c2480cad9`](https://togithub.com/nodejs/node/commit/6c2480cad9)] - **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team) [#​49423](https://togithub.com/nodejs/node/pull/49423) - \[[`bef900e56b`](https://togithub.com/nodejs/node/commit/bef900e56b)] - **doc**: move and rename loaders section (Geoffrey Booth) [#​49261](https://togithub.com/nodejs/node/pull/49261) - \[[`db4ce8a593`](https://togithub.com/nodejs/node/commit/db4ce8a593)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#​49196](https://togithub.com/nodejs/node/pull/49196) - \[[`11c85ffa98`](https://togithub.com/nodejs/node/commit/11c85ffa98)] - **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are enabled (翠 / green) [#​46391](https://togithub.com/nodejs/node/pull/46391) - \[[`ec51e25ed7`](https://togithub.com/nodejs/node/commit/ec51e25ed7)] - **src,permission**: add multiple allow-fs-\* flags (Carlos Espa) [#​49047](https://togithub.com/nodejs/node/pull/49047) - \[[`efdc95fbc0`](https://togithub.com/nodejs/node/commit/efdc95fbc0)] - **(SEMVER-MINOR)** **test_runner**: expose location of tests (Colin Ihrig) [#​48975](https://togithub.com/nodejs/node/pull/48975) ##### Commits - \[[`e84515594e`](https://togithub.com/nodejs/node/commit/e84515594e)] - **benchmark**: use `tmpdir.resolve()` (Livia Medeiros) [#​49137](https://togithub.com/nodejs/node/pull/49137) - \[[`f37444e896`](https://togithub.com/nodejs/node/commit/f37444e896)] - **bootstrap**: build code cache from deserialized isolate (Joyee Cheung) [#​49099](https://togithub.com/nodejs/node/pull/49099) - \[[`af6dc1754d`](https://togithub.com/nodejs/node/commit/af6dc1754d)] - **bootstrap**: do not generate code cache in an unfinalized isolate (Joyee Cheung) [#​49108](https://togithub.com/nodejs/node/pull/49108) - \[[`cade5716df`](https://togithub.com/nodejs/node/commit/cade5716df)] - **build**: add symlink to `compile_commands.json` file if needed (Juan José) [#​49260](https://togithub.com/nodejs/node/pull/49260) - \[[`34a2590b05`](https://togithub.com/nodejs/node/commit/34a2590b05)] - **build**: expand when we run internet tests (Michael Dawson) [#​49218](https://togithub.com/nodejs/node/pull/49218) - \[[`f637fd46ab`](https://togithub.com/nodejs/node/commit/f637fd46ab)] - **build**: fix typo `libray` -> `library` (configure.py) (michalbiesek) [#​49106](https://togithub.com/nodejs/node/pull/49106) - \[[`ef3d8dd493`](https://togithub.com/nodejs/node/commit/ef3d8dd493)] - **crypto**: remove webcrypto EdDSA key checks and properties (Filip Skokan) [#​49408](https://togithub.com/nodejs/node/pull/49408) - \[[`4a1d1cad61`](https://togithub.com/nodejs/node/commit/4a1d1cad61)] - **crypto**: update root certificates to NSS 3.93 (Node.js GitHub Bot) [#​49341](https://togithub.com/nodejs/node/pull/49341) - \[[`7eb10a38ea`](https://togithub.com/nodejs/node/commit/7eb10a38ea)] - **crypto**: remove getDefaultEncoding() (Tobias Nießen) [#​49170](https://togithub.com/nodejs/node/pull/49170) - \[[`772496c030`](https://togithub.com/nodejs/node/commit/772496c030)] - **crypto**: remove default encoding from DiffieHellman (Tobias Nießen) [#​49169](https://togithub.com/nodejs/node/pull/49169) - \[[`c795083232`](https://togithub.com/nodejs/node/commit/c795083232)] - **crypto**: remove default encoding from Hash/Hmac (Tobias Nießen) [#​49167](https://togithub.com/nodejs/node/pull/49167) - \[[`08197aa010`](https://togithub.com/nodejs/node/commit/08197aa010)] - **crypto**: remove default encoding from sign/verify (Tobias Nießen) [#​49145](https://togithub.com/nodejs/node/pull/49145) - \[[`a1a65f593c`](https://togithub.com/nodejs/node/commit/a1a65f593c)] - **deps**: upgrade npm to 10.1.0 (npm team) [#​49570](https://togithub.com/nodejs/node/pull/49570) - \[[`6c2480cad9`](https://togithub.com/nodejs/node/commit/6c2480cad9)] - **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team) [#​49423](https://togithub.com/nodejs/node/pull/49423) - \[[`84195d9584`](https://togithub.com/nodejs/node/commit/84195d9584)] - **deps**: add missing thread-common.c in uv.gyp (Santiago Gimeno) [#​49410](https://togithub.com/nodejs/node/pull/49410) - \[[`5b70b68b3d`](https://togithub.com/nodejs/node/commit/5b70b68b3d)] - **deps**: V8: cherry-pick [`eadaef5`](https://togithub.com/nodejs/node/commit/eadaef581c29) (Adam Majer) [#​49401](https://togithub.com/nodejs/node/pull/49401) - \[[`fe34d632e8`](https://togithub.com/nodejs/node/commit/fe34d632e8)] - **deps**: update zlib to 1.2.13.1-motley-f5fd0ad (Node.js GitHub Bot) [#​49252](https://togithub.com/nodejs/node/pull/49252) - \[[`db4ce8a593`](https://togithub.com/nodejs/node/commit/db4ce8a593)] - **doc**: add release key for Ulises Gascon (Ulises Gascón) [#​49196](https://togithub.com/nodejs/node/pull/49196) - \[[`e5f3a694cf`](https://togithub.com/nodejs/node/commit/e5f3a694cf)] - **doc**: fix node-api call example (Chengzhong Wu) [#​49395](https://togithub.com/nodejs/node/pull/49395) - \[[`021345a724`](https://togithub.com/nodejs/node/commit/021345a724)] - **doc**: add news issue for Diagnostics WG (Michael Dawson) [#​49306](https://togithub.com/nodejs/node/pull/49306) - \[[`f82347266b`](https://togithub.com/nodejs/node/commit/f82347266b)] - **doc**: clarify policy expectations (Rafael Gonzaga) [#​48947](https://togithub.com/nodejs/node/pull/48947) - \[[`73cfd9c895`](https://togithub.com/nodejs/node/commit/73cfd9c895)] - **doc**: add print results for examples in `StringDecoder` (Jungku Lee) [#​49326](https://togithub.com/nodejs/node/pull/49326) - \[[`63ab591416`](https://togithub.com/nodejs/node/commit/63ab591416)] - **doc**: update outdated reference to NIST SP 800-131A (Tobias Nießen) [#​49316](https://togithub.com/nodejs/node/pull/49316) - \[[`935dfe2afd`](https://togithub.com/nodejs/node/commit/935dfe2afd)] - **doc**: use `cjs` as block code's type in `MockTimers` (Deokjin Kim) [#​49309](https://togithub.com/nodejs/node/pull/49309) - \[[`7c0cd2fb87`](https://togithub.com/nodejs/node/commit/7c0cd2fb87)] - **doc**: update `options.filter` description for `fs.cp` (Shubham Pandey) [#​49289](https://togithub.com/nodejs/node/pull/49289) - \[[`f72e79ea67`](https://togithub.com/nodejs/node/commit/f72e79ea67)] - **doc**: add riscv64 to list of architectures (Stewart X Addison) [#​49284](https://togithub.com/nodejs/node/pull/49284) - \[[`d19c710064`](https://togithub.com/nodejs/node/commit/d19c710064)] - **doc**: avoid "not currently recommended" (Tobias Nießen) [#​49300](https://togithub.com/nodejs/node/pull/49300) - \[[`ae656101c0`](https://togithub.com/nodejs/node/commit/ae656101c0)] - **doc**: update module hooks docs (Geoffrey Booth) [#​49265](https://togithub.com/nodejs/node/pull/49265) - \[[`fefbdb92f2`](https://togithub.com/nodejs/node/commit/fefbdb92f2)] - **doc**: modify param description for end(),write() in `StringDecoder` (Jungku Lee) [#​49285](https://togithub.com/nodejs/node/pull/49285) - \[[`59e66a1ebe`](https://togithub.com/nodejs/node/commit/59e66a1ebe)] - **doc**: use NODE_API_SUPPORTED_VERSION_MAX in release doc (Cheng Zhao) [#​49268](https://togithub.com/nodejs/node/pull/49268) - \[[`ac3b88449b`](https://togithub.com/nodejs/node/commit/ac3b88449b)] - **doc**: fix typo in `stream.finished` documentation (Antoine du Hamel) [#​49271](https://togithub.com/nodejs/node/pull/49271) - \[[`7428ebf6c3`](https://togithub.com/nodejs/node/commit/7428ebf6c3)] - **doc**: update description for `percent_encode` sets in `WHATWG API` (Jungku Lee) [#​49258](https://togithub.com/nodejs/node/pull/49258) - \[[`bef900e56b`](https://togithub.com/nodejs/node/commit/bef900e56b)] - **doc**: move and rename loaders section (Geoffrey Booth) [#​49261](https://togithub.com/nodejs/node/pull/49261) - \[[`a22e0d9696`](https://togithub.com/nodejs/node/commit/a22e0d9696)] - **doc**: clarify use of Uint8Array for n-api (Fedor Indutny) [#​48742](https://togithub.com/nodejs/node/pull/48742) - \[[`1704f24cb9`](https://togithub.com/nodejs/node/commit/1704f24cb9)] - **doc**: add signature for `module.register` (Geoffrey Booth) [#​49251](https://togithub.com/nodejs/node/pull/49251) - \[[`5a363bb01b`](https://togithub.com/nodejs/node/commit/5a363bb01b)] - **doc**: caveat unavailability of `import.meta.resolve` in custom loaders (Jacob Smith) [#​49242](https://togithub.com/nodejs/node/pull/49242) - \[[`8101f2b259`](https://togithub.com/nodejs/node/commit/8101f2b259)] - **doc**: use same name in the doc as in the code (Hyunjin Kim) [#​49216](https://togithub.com/nodejs/node/pull/49216) - \[[`edf278d60d`](https://togithub.com/nodejs/node/commit/edf278d60d)] - **doc**: add notable-change label mention to PR template (Rafael Gonzaga) [#​49188](https://togithub.com/nodejs/node/pull/49188) - \[[`3df2251a6a`](https://togithub.com/nodejs/node/commit/3df2251a6a)] - **doc**: add h1 summary to security release process (Rafael Gonzaga) [#​49112](https://togithub.com/nodejs/node/pull/49112) - \[[`9fcd99a744`](https://togithub.com/nodejs/node/commit/9fcd99a744)] - **doc**: update to semver-minor releases by default (Rafael Gonzaga) [#​49175](https://togithub.com/nodejs/node/pull/49175) - \[[`777931f499`](https://togithub.com/nodejs/node/commit/777931f499)] - **doc**: fix wording in napi_async_init (Tobias Nießen) [#​49180](https://togithub.com/nodejs/node/pull/49180) - \[[`f45c8e10c0`](https://togithub.com/nodejs/node/commit/f45c8e10c0)] - **doc,test**: add known path resolution issue in permission model (Tobias Nießen) [#​49155](https://togithub.com/nodejs/node/pull/49155) - \[[`a6cfea3f74`](https://togithub.com/nodejs/node/commit/a6cfea3f74)] - **esm**: align sync and async load implementations (Antoine du Hamel) [#​49152](https://togithub.com/nodejs/node/pull/49152) - \[[`9fac310b33`](https://togithub.com/nodejs/node/commit/9fac310b33)] - **fs**: add the options param description in openAsBlob() (Yeseul Lee) [#​49308](https://togithub.com/nodejs/node/pull/49308) - \[[`92772a8175`](https://togithub.com/nodejs/node/commit/92772a8175)] - **fs**: remove redundant code in readableWebStream() (Deokjin Kim) [#​49298](https://togithub.com/nodejs/node/pull/49298) - \[[`88ba79b083`](https://togithub.com/nodejs/node/commit/88ba79b083)] - **fs**: make sure to write entire buffer (Robert Nagy) [#​49211](https://togithub.com/nodejs/node/pull/49211) - \[[`11c85ffa98`](https://togithub.com/nodejs/node/commit/11c85ffa98)] - **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are enabled (翠 / green) [#​46391](https://togithub.com/nodejs/node/pull/46391) - \[[`c12711ebfe`](https://togithub.com/nodejs/node/commit/c12711ebfe)] - **lib**: implement WeakReference on top of JS WeakRef (Joyee Cheung) [#​49053](https://togithub.com/nodejs/node/pull/49053) - \[[`9a0891f88d`](https://togithub.com/nodejs/node/commit/9a0891f88d)] - **meta**: bump step-security/harden-runner from 2.5.0 to 2.5.1 (dependabot\[bot]) [#​49435](https://togithub.com/nodejs/node/pull/49435) - \[[`ae67f41ef1`](https://togithub.com/nodejs/node/commit/ae67f41ef1)] - **meta**: bump actions/checkout from 3.5.3 to 3.6.0 (dependabot\[bot]) [#​49436](https://togithub.com/nodejs/node/pull/49436) - \[[`71b4411fb2`](https://togithub.com/nodejs/node/commit/71b4411fb2)] - **meta**: bump actions/setup-node from 3.7.0 to 3.8.1 (dependabot\[bot]) [#​49434](https://togithub.com/nodejs/node/pull/49434) - \[[`83b7d3a395`](https://togithub.com/nodejs/node/commit/83b7d3a395)] - **meta**: remove modules team from CODEOWNERS (Benjamin Gruenbaum) [#​49412](https://togithub.com/nodejs/node/pull/49412) - \[[`81ff68c45c`](https://togithub.com/nodejs/node/commit/81ff68c45c)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#​49264](https://togithub.com/nodejs/node/pull/49264) - \[[`ab975233cc`](https://togithub.com/nodejs/node/commit/ab975233cc)] - **meta**: mention nodejs/tsc when changing GH templates (Rafael Gonzaga) [#​49189](https://togithub.com/nodejs/node/pull/49189) - \[[`ceaa5494de`](https://togithub.com/nodejs/node/commit/ceaa5494de)] - **meta**: add test/reporters to codeowners (Chemi Atlow) [#​49186](https://togithub.com/nodejs/node/pull/49186) - \[[`de0a51b7cf`](https://togithub.com/nodejs/node/commit/de0a51b7cf)] - **net**: improve performance of isIPv4 and isIPv6 (Uzlopak) [#​49568](https://togithub.com/nodejs/node/pull/49568) - \[[`8d0913bf95`](https://togithub.com/nodejs/node/commit/8d0913bf95)] - **net**: use asserts in JS Socket Stream to catch races in future (Tim Perry) [#​49400](https://togithub.com/nodejs/node/pull/49400) - \[[`2486836a7d`](https://togithub.com/nodejs/node/commit/2486836a7d)] - **net**: fix crash due to simultaneous close/shutdown on JS Stream Sockets (Tim Perry) [#​49400](https://togithub.com/nodejs/node/pull/49400) - \[[`7a808340cd`](https://togithub.com/nodejs/node/commit/7a808340cd)] - **node-api**: fix compiler warning in node_api.h (Michael Graeb) [#​49103](https://togithub.com/nodejs/node/pull/49103) - \[[`30f26a99f4`](https://togithub.com/nodejs/node/commit/30f26a99f4)] - **permission**: ensure to resolve path when calling mkdtemp (RafaelGSS) [nodejs-private/node-private#440](https://togithub.com/nodejs-private/node-private/pull/440) - \[[`5051c75a5b`](https://togithub.com/nodejs/node/commit/5051c75a5b)] - **policy**: fix path to URL conversion (Antoine du Hamel) [#​49133](https://togithub.com/nodejs/node/pull/49133) - \[[`173aed4757`](https://togithub.com/nodejs/node/commit/173aed4757)] - **report**: fix recent coverity warning (Michael Dawson) [#​48954](https://togithub.com/nodejs/node/pull/48954) - \[[`d7ff78b442`](https://togithub.com/nodejs/node/commit/d7ff78b442)] - **sea**: generate code cache with deserialized isolate (Joyee Cheung) [#​49226](https://togithub.com/nodejs/node/pull/49226) - \[[`022f1b70c1`](https://togithub.com/nodejs/node/commit/022f1b70c1)] - **src**: support multiple `--env-file` declarations (Yagiz Nizipli) [#​49542](https://togithub.com/nodejs/node/pull/49542) - \[[`154b1c2115`](https://togithub.com/nodejs/node/commit/154b1c2115)] - **src**: don't overwrite environment from .env file (Phil Nash) [#​49424](https://togithub.com/nodejs/node/pull/49424) - \[[`dc4de1c69b`](https://togithub.com/nodejs/node/commit/dc4de1c69b)] - **src**: modify code for empty string (pluris) [#​49336](https://togithub.com/nodejs/node/pull/49336) - \[[`701c46f967`](https://togithub.com/nodejs/node/commit/701c46f967)] - **src**: remove unused PromiseWrap-related code (Joyee Cheung) [#​49335](https://togithub.com/nodejs/node/pull/49335) - \[[`4a094dc7af`](https://togithub.com/nodejs/node/commit/4a094dc7af)] - **src**: rename IsAnyByteSource to IsAnyBufferSource (Tobias Nießen) [#​49346](https://togithub.com/nodejs/node/pull/49346) - \[[`55d6649175`](https://togithub.com/nodejs/node/commit/55d6649175)] - **src**: support snapshot deserialization in RAIIIsolate (Joyee Cheung) [#​49226](https://togithub.com/nodejs/node/pull/49226) - \[[`dc092864ef`](https://togithub.com/nodejs/node/commit/dc092864ef)] - **src**: remove unused function `GetName()` in node_perf (Jungku Lee) [#​49244](https://togithub.com/nodejs/node/pull/49244) - \[[`f2552a410e`](https://togithub.com/nodejs/node/commit/f2552a410e)] - **src**: use ARES_SUCCESS instead of 0 (Jungku Lee) [#​49048](https://togithub.com/nodejs/node/pull/49048) - \[[`4a9ae31519`](https://togithub.com/nodejs/node/commit/4a9ae31519)] - **src**: add a condition if the argument
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi --- docs/.node-version | 2 +- packages/babel-config/package.json | 2 +- .../__testfixtures__/default/input/package.json | 2 +- .../__testfixtures__/default/output/package.json | 2 +- packages/structure/package.json | 2 +- packages/testing/package.json | 2 +- yarn.lock | 14 +++++++------- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/.node-version b/docs/.node-version index d5a159609d09..8b0beab16a58 100644 --- a/docs/.node-version +++ b/docs/.node-version @@ -1 +1 @@ -20.10.0 +20.11.0 diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index c64d621fd71d..eed2ea9cdce5 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -47,7 +47,7 @@ "devDependencies": { "@types/babel-plugin-tester": "9.0.9", "@types/babel__core": "7.20.4", - "@types/node": "20.10.4", + "@types/node": "20.11.10", "babel-plugin-tester": "11.0.4", "jest": "29.7.0" }, diff --git a/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/input/package.json b/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/input/package.json index 73f2e6ba0517..821722f00f24 100644 --- a/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/input/package.json +++ b/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/input/package.json @@ -15,7 +15,7 @@ "root": true }, "engines": { - "node": ">=14.17 <=16.x", + "node": ">=14.17 <=20.11", "yarn": ">=1.15 <2" }, "prisma": { diff --git a/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/output/package.json b/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/output/package.json index 21636434dc0f..5e38c7b6dfd0 100644 --- a/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/output/package.json +++ b/packages/codemods/src/codemods/v0.48.x/upgradeYarn/__testfixtures__/default/output/package.json @@ -15,7 +15,7 @@ "root": true }, "engines": { - "node": ">=14.17 <=16.x", + "node": ">=14.17 <=20.11", "yarn": ">=1.15 <2" }, "prisma": { diff --git a/packages/structure/package.json b/packages/structure/package.json index 92d278f17b5d..e4b16cbf1a53 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -55,7 +55,7 @@ "@types/fs-extra": "11.0.4", "@types/lodash": "4.14.201", "@types/lru-cache": "7.10.10", - "@types/node": "20.10.4", + "@types/node": "20.11.10", "@types/vscode": "1.79.1", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/testing/package.json b/packages/testing/package.json index 5e0634222cc3..ed80885886f0 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -42,7 +42,7 @@ "@types/aws-lambda": "8.10.126", "@types/babel-core": "6.25.10", "@types/jest": "29.5.8", - "@types/node": "20.10.4", + "@types/node": "20.11.10", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", "@types/webpack": "5.28.5", diff --git a/yarn.lock b/yarn.lock index aa074f70e970..523d5f5ed488 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7950,7 +7950,7 @@ __metadata: "@redwoodjs/project-config": "npm:6.0.7" "@types/babel-plugin-tester": "npm:9.0.9" "@types/babel__core": "npm:7.20.4" - "@types/node": "npm:20.10.4" + "@types/node": "npm:20.11.10" babel-plugin-auto-import: "npm:1.1.0" babel-plugin-graphql-tag: "npm:3.3.0" babel-plugin-module-resolver: "npm:5.0.0" @@ -8617,7 +8617,7 @@ __metadata: "@types/line-column": "npm:1.0.0" "@types/lodash": "npm:4.14.201" "@types/lru-cache": "npm:7.10.10" - "@types/node": "npm:20.10.4" + "@types/node": "npm:20.11.10" "@types/vscode": "npm:1.79.1" camelcase: "npm:6.3.0" core-js: "npm:3.35.1" @@ -8685,7 +8685,7 @@ __metadata: "@types/aws-lambda": "npm:8.10.126" "@types/babel-core": "npm:6.25.10" "@types/jest": "npm:29.5.8" - "@types/node": "npm:20.10.4" + "@types/node": "npm:20.11.10" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" "@types/webpack": "npm:5.28.5" @@ -11117,12 +11117,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:20.10.4, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 20.10.4 - resolution: "@types/node@npm:20.10.4" +"@types/node@npm:*, @types/node@npm:20.11.10, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": + version: 20.11.10 + resolution: "@types/node@npm:20.11.10" dependencies: undici-types: "npm:~5.26.4" - checksum: 2c8b70cba731eb2ae3ae046daa74903bfcbb0e7b9196da767e5895054f6d252296ae7a04fb1dbbcb53bb004c4c658c05eaea2731bc9e2dd9e08f7e88d672f563 + checksum: aced8595c2786d4e60471772659add1e2e0d1f2b73d119820b2e1815426d6e52c6a77f1c7fca8ea46490c36f7959cc46b0dc609fa2e80b7fd24f9a7d696c2210 languageName: node linkType: hard From f4248fa22ff7ce352cfadb0e92b3caefec2860d4 Mon Sep 17 00:00:00 2001 From: Josh GM Walker <56300765+Josh-Walker-GM@users.noreply.github.com> Date: Wed, 31 Jan 2024 09:49:03 +0000 Subject: [PATCH 054/119] fix(cli): Prevent caching blank information about plugins (#9942) **Problem** Currently we cache command information which we can later use to show help information without the need to fully load the plugin back into memory. This was done for performance and also to avoid the need to have plugins installed to show help output - otherwise it would not have been possible to have `rw storybook` be a plugin and show it's help information before installation. This was highlighted during the development of the zenstack plugin for the redwood CLI. **Changes** 1. We no longer add cache entries where we gathered no useful data. Previously we would have written an entry like `command: { aliases: undefined, description: undefined }` which then would have prevented showing any help information when the cache was used. Now no cache entry will be present and the plugin will have to be loaded into memory to show the correct help output. --------- Co-authored-by: Tobbe Lundberg --- packages/cli/src/__tests__/plugin.test.js | 34 +++++++++++------------ packages/cli/src/lib/plugin.js | 4 +-- packages/cli/src/plugin.js | 19 +++++++++---- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/packages/cli/src/__tests__/plugin.test.js b/packages/cli/src/__tests__/plugin.test.js index e318292f6f01..c11b4fff73a3 100644 --- a/packages/cli/src/__tests__/plugin.test.js +++ b/packages/cli/src/__tests__/plugin.test.js @@ -54,7 +54,7 @@ describe('command information caching', () => { }) test('returns the correct cache when no local cache exists', () => { - const cache = pluginLib.loadCommadCache() + const cache = pluginLib.loadCommandCache() expect(cache).toEqual({ ...pluginLib.PLUGIN_CACHE_DEFAULT, _builtin: pluginLib.PLUGIN_CACHE_BUILTIN, @@ -87,7 +87,7 @@ describe('command information caching', () => { }), }) - const cache = pluginLib.loadCommadCache() + const cache = pluginLib.loadCommandCache() expect(cache).toEqual({ ...pluginLib.PLUGIN_CACHE_DEFAULT, ...exampleCacheEntry, @@ -108,14 +108,14 @@ describe('plugin loading', () => { }, }) - vi.spyOn(pluginLib, 'loadCommadCache') + vi.spyOn(pluginLib, 'loadCommandCache') vi.spyOn(pluginLib, 'loadPluginPackage') vi.spyOn(pluginLib, 'checkPluginListAndWarn') vi.spyOn(pluginLib, 'saveCommandCache') }) afterEach(() => { - pluginLib.loadCommadCache.mockRestore() + pluginLib.loadCommandCache.mockRestore() pluginLib.checkPluginListAndWarn.mockRestore() pluginLib.loadPluginPackage.mockRestore() pluginLib.saveCommandCache.mockRestore() @@ -134,7 +134,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(0) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(0) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(0) expect(pluginLib.loadPluginPackage).toHaveBeenCalledTimes(0) expect(pluginLib.saveCommandCache).toHaveBeenCalledTimes(0) @@ -158,7 +158,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(0) expect(pluginLib.loadPluginPackage).toHaveBeenCalledTimes(0) expect(pluginLib.saveCommandCache).toHaveBeenCalledTimes(0) @@ -226,7 +226,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package when it was not in the cache @@ -326,7 +326,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package when it was not in the cache @@ -426,7 +426,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have NOT loaded the package when it was not in the cache @@ -514,7 +514,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package when it was not in the cache @@ -610,7 +610,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package when it was not in the cache @@ -726,7 +726,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package - only the one we need @@ -848,7 +848,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package - all in the namespace @@ -974,7 +974,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package that we couldn't rule out from the cache @@ -1095,7 +1095,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package - only the one we need @@ -1190,7 +1190,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package - only the one we need @@ -1286,7 +1286,7 @@ describe('plugin loading', () => { const yargsInstance = getMockYargsInstance() await loadPlugins(yargsInstance) - expect(pluginLib.loadCommadCache).toHaveBeenCalledTimes(1) + expect(pluginLib.loadCommandCache).toHaveBeenCalledTimes(1) expect(pluginLib.checkPluginListAndWarn).toHaveBeenCalledTimes(1) // Should have loaded the package that we couldn't rule out from the cache diff --git a/packages/cli/src/lib/plugin.js b/packages/cli/src/lib/plugin.js index ba9473fb2527..eaa888552cfb 100644 --- a/packages/cli/src/lib/plugin.js +++ b/packages/cli/src/lib/plugin.js @@ -73,7 +73,7 @@ export const PLUGIN_CACHE_BUILTIN = [ 'upgrade', ] -export function loadCommadCache() { +export function loadCommandCache() { // Always default to the default cache let pluginCommandCache = PLUGIN_CACHE_DEFAULT const commandCachePath = path.join( @@ -214,7 +214,7 @@ export async function loadPluginPackage( * @returns True if the plugin was installed successfully, false otherwise */ async function installPluginPackage(packageName, packageVersion) { - // We use a simple heuristic here to try and be a little more convienient for the user + // We use a simple heuristic here to try and be a little more convenient for the user // when no version is specified. let versionToInstall = packageVersion diff --git a/packages/cli/src/plugin.js b/packages/cli/src/plugin.js index a3463e62e393..a2f912452538 100644 --- a/packages/cli/src/plugin.js +++ b/packages/cli/src/plugin.js @@ -1,6 +1,6 @@ import { getConfig } from './lib' import { - loadCommadCache, + loadCommandCache, checkPluginListAndWarn, saveCommandCache, loadPluginPackage, @@ -30,7 +30,7 @@ export async function loadPlugins(yargs) { // TODO: We should have some mechanism to fetch the cache from an online or precomputed // source this will allow us to have a cache hit on the first run of a command - const pluginCommandCache = loadCommadCache() + const pluginCommandCache = loadCommandCache() // Check if the command is built in to the base CLI package if ( @@ -238,7 +238,7 @@ export async function loadPlugins(yargs) { } } - // We need to nest the commands under the namespace rememebering that the + // We need to nest the commands under the namespace remembering that the // @redwoodjs namespace is special and doesn't need to be nested if (namespaceInUse === '@redwoodjs') { yargs.command(commandsToRegister) @@ -302,12 +302,21 @@ async function loadCommandsFromCacheOrPackage( const commands = plugin.commands ?? [] const cacheUpdate = {} for (const command of commands) { - cacheUpdate[command.command] = { + const info = { aliases: command.aliases, description: command.description, } + + // If we have any information about the command we'll update the cache + if (Object.values(info).some((value) => value !== undefined)) { + cacheUpdate[command.command] = info + } + } + + // Only update the entry if we got any cache information + if (Object.keys(cacheUpdate).length > 0) { + cache[packageName] = cacheUpdate } - cache[packageName] = cacheUpdate return commands } From 68c090ff20b74e4a96b988638ec5a4dc32ef4cc1 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Wed, 31 Jan 2024 16:51:06 +0100 Subject: [PATCH 055/119] chore(crwa): Use actual filename in seed file template (#9945) --- __fixtures__/fragment-test-project/scripts/seed.ts | 2 +- __fixtures__/test-project/scripts/seed.ts | 2 +- packages/create-redwood-app/scripts/tsToJS.js | 10 ++++++++++ .../create-redwood-app/templates/js/scripts/seed.js | 2 +- .../create-redwood-app/templates/ts/scripts/seed.ts | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/__fixtures__/fragment-test-project/scripts/seed.ts b/__fixtures__/fragment-test-project/scripts/seed.ts index 899534721c78..46378476943e 100644 --- a/__fixtures__/fragment-test-project/scripts/seed.ts +++ b/__fixtures__/fragment-test-project/scripts/seed.ts @@ -151,7 +151,7 @@ export default async () => { // { name: 'bob', email: 'bob@example.com' }, ] console.log( - "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" + "\nUsing the default './scripts/seed.ts' template\nEdit the file to add seed data\n" ) // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster diff --git a/__fixtures__/test-project/scripts/seed.ts b/__fixtures__/test-project/scripts/seed.ts index ceee7b6687bc..215900151faa 100644 --- a/__fixtures__/test-project/scripts/seed.ts +++ b/__fixtures__/test-project/scripts/seed.ts @@ -80,7 +80,7 @@ export default async () => { // { name: 'bob', email: 'bob@example.com' }, ] console.log( - "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" + "\nUsing the default './scripts/seed.ts' template\nEdit the file to add seed data\n" ) if ((await db.userExample.count()) === 0) { diff --git a/packages/create-redwood-app/scripts/tsToJS.js b/packages/create-redwood-app/scripts/tsToJS.js index 7e5c881330d9..5d03a7c94a27 100644 --- a/packages/create-redwood-app/scripts/tsToJS.js +++ b/packages/create-redwood-app/scripts/tsToJS.js @@ -111,3 +111,13 @@ for (const tsConfigFilePath of tsConfigFilePaths) { } console.groupEnd() + +console.group('Updating file extension in seed.js') + +const seedFilePath = path.join(JS_TEMPLATE_PATH, 'scripts', 'seed.js') +const seedFile = fs + .readFileSync(seedFilePath, 'utf-8') + .replace('seed.ts', 'seed.js') +fs.writeFileSync(seedFilePath, seedFile) + +console.groupEnd() diff --git a/packages/create-redwood-app/templates/js/scripts/seed.js b/packages/create-redwood-app/templates/js/scripts/seed.js index f6e27427a29a..84ef62a4f014 100644 --- a/packages/create-redwood-app/templates/js/scripts/seed.js +++ b/packages/create-redwood-app/templates/js/scripts/seed.js @@ -18,7 +18,7 @@ export default async () => { // { name: 'bob', email: 'bob@example.com' }, ] console.log( - "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" + "\nUsing the default './scripts/seed.js' template\nEdit the file to add seed data\n" ) if ((await db.userExample.count()) === 0) { diff --git a/packages/create-redwood-app/templates/ts/scripts/seed.ts b/packages/create-redwood-app/templates/ts/scripts/seed.ts index e0517ef61ef9..a8ccfa6f40bb 100644 --- a/packages/create-redwood-app/templates/ts/scripts/seed.ts +++ b/packages/create-redwood-app/templates/ts/scripts/seed.ts @@ -19,7 +19,7 @@ export default async () => { // { name: 'bob', email: 'bob@example.com' }, ] console.log( - "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" + "\nUsing the default './scripts/seed.ts' template\nEdit the file to add seed data\n" ) if ((await db.userExample.count()) === 0) { From 2d3fe704b00558e81ff9c08e480d76afc73026f5 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Wed, 31 Jan 2024 17:47:01 +0100 Subject: [PATCH 056/119] fix(internal): Remove unused import (#9946) --- .../typeDefinitions.test.ts.snap | 31 +++++++++++++++++++ .../src/__tests__/typeDefinitions.test.ts | 16 ++++++++++ .../templates/web-routerRoutes.d.ts.template | 2 -- .../internal/src/generate/typeDefinitions.ts | 6 ++-- 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/packages/internal/src/__tests__/__snapshots__/typeDefinitions.test.ts.snap b/packages/internal/src/__tests__/__snapshots__/typeDefinitions.test.ts.snap index b691f096019f..03727f2a51c5 100644 --- a/packages/internal/src/__tests__/__snapshots__/typeDefinitions.test.ts.snap +++ b/packages/internal/src/__tests__/__snapshots__/typeDefinitions.test.ts.snap @@ -1,5 +1,36 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`generates global page imports source maps 1`] = ` +{ + "file": "web-routesPages.d.ts", + "mappings": ";;;;;;;;;;;;AAAA;ACQA;ACRA;ACKA;ACLA;ACAA;ACAA;ACAA", + "names": [], + "sources": [ + "../../../web/src/pages/BarPage/BarPage.tsx", + "../../../web/src/pages/FatalErrorPage/FatalErrorPage.js", + "../../../web/src/pages/FooPage/FooPage.tsx", + "../../../web/src/pages/HomePage/HomePage.tsx", + "../../../web/src/pages/NotFoundPage/NotFoundPage.js", + "../../../web/src/pages/PrivatePage/PrivatePage.tsx", + "../../../web/src/pages/TypeScriptPage/TypeScriptPage.tsx", + "../../../web/src/pages/admin/EditUserPage/EditUserPage.jsx", + ], + "version": 3, +} +`; + +exports[`generates source maps for the router routes 1`] = ` +{ + "file": "web-routerRoutes.d.ts", + "mappings": ";;;;;;IAiBM;IACA;IACA;IAEE;IACA;IAGA", + "names": [], + "sources": [ + "../../../web/src/Routes.js", + ], + "version": 3, +} +`; + exports[`mirror path for directory named modules 1`] = `".redwood/types/mirror/web/src/graphql"`; exports[`mirror path for directory named modules 2`] = `"../../packages/internal/index.d.ts"`; diff --git a/packages/internal/src/__tests__/typeDefinitions.test.ts b/packages/internal/src/__tests__/typeDefinitions.test.ts index 12d5d835f137..db07027e5f43 100644 --- a/packages/internal/src/__tests__/typeDefinitions.test.ts +++ b/packages/internal/src/__tests__/typeDefinitions.test.ts @@ -134,6 +134,13 @@ declare global { }`) }) +test('generates global page imports source maps', () => { + const paths = generateTypeDefRouterPages() + const sourceMap = JSON.parse(fs.readFileSync(paths[0] + '.map', 'utf-8')) + sourceMap.sources = sourceMap.sources.map((source) => ensurePosixPath(source)) + expect(sourceMap).toMatchSnapshot() +}) + test('generate current user ', () => { const paths = generateTypeDefCurrentUser() const p = paths.map(cleanPaths) @@ -157,6 +164,15 @@ test('generates the router routes', () => { `) }) +test('generates source maps for the router routes', () => { + const paths = generateTypeDefRouterRoutes() + const sourceMap = JSON.parse(fs.readFileSync(paths[0] + '.map', 'utf-8')) + sourceMap.sources = sourceMap.sources.map((source: string) => + ensurePosixPath(source) + ) + expect(sourceMap).toMatchSnapshot() +}) + test('generate glob imports', () => { const paths = generateTypeDefGlobImports() const p = paths.map(cleanPaths) diff --git a/packages/internal/src/generate/templates/web-routerRoutes.d.ts.template b/packages/internal/src/generate/templates/web-routerRoutes.d.ts.template index f1432bbabee8..2c6bca1f1548 100644 --- a/packages/internal/src/generate/templates/web-routerRoutes.d.ts.template +++ b/packages/internal/src/generate/templates/web-routerRoutes.d.ts.template @@ -1,6 +1,4 @@ import { RouteParams, QueryParams } from '@redwoodjs/router' -import { A } from 'ts-toolbelt' - declare module '@redwoodjs/router' { interface AvailableRoutes { diff --git a/packages/internal/src/generate/typeDefinitions.ts b/packages/internal/src/generate/typeDefinitions.ts index 578293878bd2..ba9641693fbb 100644 --- a/packages/internal/src/generate/typeDefinitions.ts +++ b/packages/internal/src/generate/typeDefinitions.ts @@ -260,8 +260,10 @@ export const generateTypeDefRouterRoutes = () => { file: 'web-routerRoutes.d.ts', }) - // Start line is based on where in the template the ` ${name}: (params?: RouteParams<"${path}"> & QueryParams) => "${path}"` are defined - const startLine = 9 + // Start line is based on where in the template the + // ` ${name}: (params?: RouteParams<"${path}"> & QueryParams) => "${path}"` + // line is defined + const startLine = 7 // Map the location of the default export for each page for (let i = 0; i < routes.length; i++) { From ef5a2f30b7d6c7b4da9403017ff0b4788edc2c0b Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Wed, 31 Jan 2024 20:26:10 +0100 Subject: [PATCH 057/119] @redwoodjs/framework-tools for buildDefaults (#9947) Move `buildDefaults` from project root into a package. This is in preparation of hopefully moving more files/scripts and packages over to TS --------- Co-authored-by: Dominic Saadi --- nx.json | 1 - packages/adapters/fastify/web/build.mjs | 2 +- packages/adapters/fastify/web/package.json | 1 + packages/babel-config/build.mjs | 2 +- packages/babel-config/package.json | 1 + packages/cli-packages/dataMigrate/build.mjs | 2 +- .../cli-packages/dataMigrate/package.json | 1 + packages/cli-packages/storybook/build.mjs | 2 +- packages/cli-packages/storybook/package.json | 1 + packages/context/build.mjs | 2 +- packages/context/package.json | 1 + packages/create-redwood-app/package.json | 1 + packages/create-redwood-app/scripts/build.js | 2 +- packages/eslint-plugin/build.mjs | 2 +- packages/eslint-plugin/package.json | 1 + packages/fastify/build.mjs | 2 +- packages/fastify/package.json | 1 + packages/framework-tools/README.md | 4 +++ packages/framework-tools/build.ts | 8 +++++ packages/framework-tools/package.json | 35 +++++++++++++++++++ .../framework-tools/src/buildDefaults.ts | 28 +++++++-------- packages/framework-tools/tsconfig.json | 11 ++++++ packages/mailer/core/build.mjs | 2 +- packages/mailer/core/package.json | 1 + packages/mailer/handlers/in-memory/build.mjs | 2 +- .../mailer/handlers/in-memory/package.json | 1 + packages/mailer/handlers/nodemailer/build.mjs | 2 +- .../mailer/handlers/nodemailer/package.json | 1 + packages/mailer/handlers/resend/build.mjs | 2 +- packages/mailer/handlers/resend/package.json | 1 + packages/mailer/handlers/studio/build.mjs | 2 +- packages/mailer/handlers/studio/package.json | 1 + .../mailer/renderers/mjml-react/build.mjs | 2 +- .../mailer/renderers/mjml-react/package.json | 1 + .../mailer/renderers/react-email/build.mjs | 2 +- .../mailer/renderers/react-email/package.json | 1 + packages/project-config/build.js | 2 +- packages/project-config/package.json | 1 + packages/realtime/build.mjs | 2 +- packages/realtime/package.json | 1 + packages/tui/build.mjs | 2 +- packages/tui/package.json | 1 + packages/web-server/build.mjs | 2 +- packages/web-server/package.json | 1 + yarn.lock | 32 +++++++++++++++++ 45 files changed, 141 insertions(+), 35 deletions(-) create mode 100644 packages/framework-tools/README.md create mode 100644 packages/framework-tools/build.ts create mode 100644 packages/framework-tools/package.json rename buildDefaults.mjs => packages/framework-tools/src/buildDefaults.ts (81%) create mode 100644 packages/framework-tools/tsconfig.json diff --git a/nx.json b/nx.json index d06435391a24..207455780f38 100644 --- a/nx.json +++ b/nx.json @@ -10,7 +10,6 @@ "!{projectRoot}/**/*.test.{js,jsx,ts,tsx}", "{workspaceRoot}/babel.config.js", "{workspaceRoot}/tsconfig.json", - "{workspaceRoot}/buildDefaults.mjs", { "runtime": "node -v" }, diff --git a/packages/adapters/fastify/web/build.mjs b/packages/adapters/fastify/web/build.mjs index 2a8e800737ef..ee256d3da098 100644 --- a/packages/adapters/fastify/web/build.mjs +++ b/packages/adapters/fastify/web/build.mjs @@ -1,4 +1,4 @@ -import { build, defaultBuildOptions } from '../../../../buildDefaults.mjs' +import { build, defaultBuildOptions } from '@redwoodjs/framework-tools' // Build the main entry point await build({ diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index 1e35b18351ed..e6ae98ad9fcd 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -37,6 +37,7 @@ "fast-glob": "3.3.2" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "fastify": "4.25.2", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/babel-config/build.mjs b/packages/babel-config/build.mjs index 75e861b63346..16175a6725c0 100644 --- a/packages/babel-config/build.mjs +++ b/packages/babel-config/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index eed2ea9cdce5..bfcdc449ebf1 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -45,6 +45,7 @@ "typescript": "5.3.3" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/babel-plugin-tester": "9.0.9", "@types/babel__core": "7.20.4", "@types/node": "20.11.10", diff --git a/packages/cli-packages/dataMigrate/build.mjs b/packages/cli-packages/dataMigrate/build.mjs index a0d3e3a4ac7a..c9a710836d2e 100644 --- a/packages/cli-packages/dataMigrate/build.mjs +++ b/packages/cli-packages/dataMigrate/build.mjs @@ -2,7 +2,7 @@ import { build, defaultBuildOptions, defaultIgnorePatterns, -} from '../../../buildDefaults.mjs' +} from '@redwoodjs/framework-tools' // Build the package. await build({ diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index b34f6c9ea645..cfa186eb497c 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -37,6 +37,7 @@ }, "devDependencies": { "@prisma/client": "5.9.0", + "@redwoodjs/framework-tools": "6.0.7", "@types/fs-extra": "11.0.4", "@types/yargs": "17.0.32", "jest": "29.7.0", diff --git a/packages/cli-packages/storybook/build.mjs b/packages/cli-packages/storybook/build.mjs index 14b2d70d4a73..16175a6725c0 100644 --- a/packages/cli-packages/storybook/build.mjs +++ b/packages/cli-packages/storybook/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/cli-packages/storybook/package.json b/packages/cli-packages/storybook/package.json index 246fd257f6a2..0f8eb24eb56d 100644 --- a/packages/cli-packages/storybook/package.json +++ b/packages/cli-packages/storybook/package.json @@ -34,6 +34,7 @@ "yargs": "17.7.2" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/yargs": "17.0.32", "typescript": "5.3.3" }, diff --git a/packages/context/build.mjs b/packages/context/build.mjs index 75e861b63346..16175a6725c0 100644 --- a/packages/context/build.mjs +++ b/packages/context/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/context/package.json b/packages/context/package.json index 1ddb8e2d1f4d..7bf9f35931a0 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -20,6 +20,7 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/create-redwood-app/package.json b/packages/create-redwood-app/package.json index 7317e7e525e4..2436281a6d6c 100644 --- a/packages/create-redwood-app/package.json +++ b/packages/create-redwood-app/package.json @@ -31,6 +31,7 @@ "@opentelemetry/resources": "1.18.1", "@opentelemetry/sdk-trace-node": "1.18.1", "@opentelemetry/semantic-conventions": "1.18.1", + "@redwoodjs/framework-tools": "6.0.7", "@redwoodjs/tui": "6.0.7", "@types/babel__core": "7.20.4", "chalk": "4.1.2", diff --git a/packages/create-redwood-app/scripts/build.js b/packages/create-redwood-app/scripts/build.js index 6e69287e22fa..a050c90bcc37 100644 --- a/packages/create-redwood-app/scripts/build.js +++ b/packages/create-redwood-app/scripts/build.js @@ -1,4 +1,4 @@ -import { build, defaultBuildOptions } from '../../../buildDefaults.mjs' +import { build, defaultBuildOptions } from '@redwoodjs/framework-tools' const jsBanner = `\ #!/usr/bin/env node diff --git a/packages/eslint-plugin/build.mjs b/packages/eslint-plugin/build.mjs index 75e861b63346..16175a6725c0 100644 --- a/packages/eslint-plugin/build.mjs +++ b/packages/eslint-plugin/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 1f65a702e6fd..9275646475f1 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -26,6 +26,7 @@ "eslint": "8.55.0" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/eslint": "8", "@types/estree": "1.0.5", "@typescript-eslint/parser": "5.62.0", diff --git a/packages/fastify/build.mjs b/packages/fastify/build.mjs index 75e861b63346..16175a6725c0 100644 --- a/packages/fastify/build.mjs +++ b/packages/fastify/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/fastify/package.json b/packages/fastify/package.json index d380b2888022..6015c44dd078 100644 --- a/packages/fastify/package.json +++ b/packages/fastify/package.json @@ -32,6 +32,7 @@ "qs": "6.11.2" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/aws-lambda": "8.10.126", "@types/lodash": "4.14.201", "@types/qs": "6.9.11", diff --git a/packages/framework-tools/README.md b/packages/framework-tools/README.md new file mode 100644 index 000000000000..f961dc25b138 --- /dev/null +++ b/packages/framework-tools/README.md @@ -0,0 +1,4 @@ +# Framework Tools + +Tooling used internally by the Redwood framework. +This package isn't published to NPM. diff --git a/packages/framework-tools/build.ts b/packages/framework-tools/build.ts new file mode 100644 index 000000000000..6bc37992873c --- /dev/null +++ b/packages/framework-tools/build.ts @@ -0,0 +1,8 @@ +import { build, defaultBuildOptions } from './src/buildDefaults' + +await build({ + buildOptions: { + ...defaultBuildOptions, + format: 'esm', + }, +}) diff --git a/packages/framework-tools/package.json b/packages/framework-tools/package.json new file mode 100644 index 000000000000..c3059a0db87e --- /dev/null +++ b/packages/framework-tools/package.json @@ -0,0 +1,35 @@ +{ + "name": "@redwoodjs/framework-tools", + "version": "6.0.7", + "private": true, + "repository": { + "type": "git", + "url": "https://github.com/redwoodjs/redwood.git", + "directory": "packages/framework-tools" + }, + "license": "MIT", + "type": "module", + "exports": { + "types": "./dist/buildDefaults.d.ts", + "default": "./dist/buildDefaults.js" + }, + "types": "./dist/buildDefaults.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsx ./build.ts && run build:types", + "build:types": "tsc --build --verbose" + }, + "dependencies": { + "esbuild": "0.20.0", + "fast-glob": "3.3.2", + "fs-extra": "11.2.0" + }, + "devDependencies": { + "@types/fs-extra": "11.0.4", + "tsx": "4.6.2", + "typescript": "5.3.3" + }, + "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" +} diff --git a/buildDefaults.mjs b/packages/framework-tools/src/buildDefaults.ts similarity index 81% rename from buildDefaults.mjs rename to packages/framework-tools/src/buildDefaults.ts index 18ce22c8a586..c068bcee6fd0 100644 --- a/buildDefaults.mjs +++ b/packages/framework-tools/src/buildDefaults.ts @@ -1,10 +1,11 @@ import path from 'node:path' import * as esbuild from 'esbuild' +import type { BuildOptions as ESBuildOptions } from 'esbuild' import fg from 'fast-glob' import fs from 'fs-extra' -export const defaultBuildOptions = { +export const defaultBuildOptions: ESBuildOptions = { outdir: 'dist', platform: 'node', @@ -27,25 +28,22 @@ export const defaultIgnorePatterns = [ '**/__fixtures__', ] -/** - * @typedef {{ - * cwd?: string - * buildOptions?: import('esbuild').BuildOptions - * entryPointOptions?: { - * patterns?: string[] - * ignore?: string[] - * } - * metafileName?: string - * }} BuildOptions - * - * @param {BuildOptions} options - */ +interface BuildOptions { + cwd?: string + buildOptions?: ESBuildOptions + entryPointOptions?: { + patterns?: string[] + ignore?: string[] + } + metafileName?: string +} + export async function build({ cwd, buildOptions, entryPointOptions, metafileName, -} = {}) { +}: BuildOptions = {}) { // Yarn and Nx both set this to the package's root dir path cwd ??= process.cwd() diff --git a/packages/framework-tools/tsconfig.json b/packages/framework-tools/tsconfig.json new file mode 100644 index 000000000000..23e3bf19df5b --- /dev/null +++ b/packages/framework-tools/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.compilerOption.json", + "compilerOptions": { + "moduleResolution": "NodeNext", + "module": "NodeNext", + "baseUrl": ".", + "rootDir": "src", + "outDir": "dist", + }, + "include": ["src"], +} diff --git a/packages/mailer/core/build.mjs b/packages/mailer/core/build.mjs index 14b2d70d4a73..16175a6725c0 100644 --- a/packages/mailer/core/build.mjs +++ b/packages/mailer/core/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/core/package.json b/packages/mailer/core/package.json index 8da5f9a62b07..40ddba42190b 100644 --- a/packages/mailer/core/package.json +++ b/packages/mailer/core/package.json @@ -23,6 +23,7 @@ }, "devDependencies": { "@redwoodjs/api": "6.0.7", + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/mailer/handlers/in-memory/build.mjs b/packages/mailer/handlers/in-memory/build.mjs index 2a6302021b2a..16175a6725c0 100644 --- a/packages/mailer/handlers/in-memory/build.mjs +++ b/packages/mailer/handlers/in-memory/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/handlers/in-memory/package.json b/packages/mailer/handlers/in-memory/package.json index 06494f4c6585..0784b1ee5926 100644 --- a/packages/mailer/handlers/in-memory/package.json +++ b/packages/mailer/handlers/in-memory/package.json @@ -23,6 +23,7 @@ "@redwoodjs/mailer-core": "6.0.7" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/nodemailer/build.mjs b/packages/mailer/handlers/nodemailer/build.mjs index 2a6302021b2a..16175a6725c0 100644 --- a/packages/mailer/handlers/nodemailer/build.mjs +++ b/packages/mailer/handlers/nodemailer/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/handlers/nodemailer/package.json b/packages/mailer/handlers/nodemailer/package.json index 935881edb622..58efef8045d2 100644 --- a/packages/mailer/handlers/nodemailer/package.json +++ b/packages/mailer/handlers/nodemailer/package.json @@ -24,6 +24,7 @@ "nodemailer": "6.9.7" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/nodemailer": "^6", "typescript": "5.3.3" }, diff --git a/packages/mailer/handlers/resend/build.mjs b/packages/mailer/handlers/resend/build.mjs index 2a6302021b2a..16175a6725c0 100644 --- a/packages/mailer/handlers/resend/build.mjs +++ b/packages/mailer/handlers/resend/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/handlers/resend/package.json b/packages/mailer/handlers/resend/package.json index d77df3465cf6..a1d9c040e93d 100644 --- a/packages/mailer/handlers/resend/package.json +++ b/packages/mailer/handlers/resend/package.json @@ -24,6 +24,7 @@ "resend": "1.1.0" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/studio/build.mjs b/packages/mailer/handlers/studio/build.mjs index 2a6302021b2a..16175a6725c0 100644 --- a/packages/mailer/handlers/studio/build.mjs +++ b/packages/mailer/handlers/studio/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/handlers/studio/package.json b/packages/mailer/handlers/studio/package.json index 149e32d024d1..34d7abee2755 100644 --- a/packages/mailer/handlers/studio/package.json +++ b/packages/mailer/handlers/studio/package.json @@ -24,6 +24,7 @@ "@redwoodjs/mailer-handler-nodemailer": "6.0.7" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/nodemailer": "^6", "typescript": "5.3.3" }, diff --git a/packages/mailer/renderers/mjml-react/build.mjs b/packages/mailer/renderers/mjml-react/build.mjs index 2a6302021b2a..16175a6725c0 100644 --- a/packages/mailer/renderers/mjml-react/build.mjs +++ b/packages/mailer/renderers/mjml-react/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/renderers/mjml-react/package.json b/packages/mailer/renderers/mjml-react/package.json index 278f48e088f7..b836a9a1745a 100644 --- a/packages/mailer/renderers/mjml-react/package.json +++ b/packages/mailer/renderers/mjml-react/package.json @@ -25,6 +25,7 @@ "mjml": "4.14.1" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "@types/mjml": "4", "typescript": "5.3.3" }, diff --git a/packages/mailer/renderers/react-email/build.mjs b/packages/mailer/renderers/react-email/build.mjs index 2a6302021b2a..16175a6725c0 100644 --- a/packages/mailer/renderers/react-email/build.mjs +++ b/packages/mailer/renderers/react-email/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/mailer/renderers/react-email/package.json b/packages/mailer/renderers/react-email/package.json index 252724127dee..32e13b92e64d 100644 --- a/packages/mailer/renderers/react-email/package.json +++ b/packages/mailer/renderers/react-email/package.json @@ -24,6 +24,7 @@ "@redwoodjs/mailer-core": "6.0.7" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/project-config/build.js b/packages/project-config/build.js index 6db5ba7e0e40..e9a4c639db2d 100644 --- a/packages/project-config/build.js +++ b/packages/project-config/build.js @@ -1,4 +1,4 @@ -import { build, defaultBuildOptions } from '../../buildDefaults.mjs' +import { build, defaultBuildOptions } from '@redwoodjs/framework-tools' const options = { ...defaultBuildOptions, diff --git a/packages/project-config/package.json b/packages/project-config/package.json index 4395e6d6116e..e4973e2ae450 100644 --- a/packages/project-config/package.json +++ b/packages/project-config/package.json @@ -33,6 +33,7 @@ "string-env-interpolation": "1.0.1" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "rimraf": "5.0.5", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/realtime/build.mjs b/packages/realtime/build.mjs index ff512ad9698a..9ee28aeccb2c 100644 --- a/packages/realtime/build.mjs +++ b/packages/realtime/build.mjs @@ -1,4 +1,4 @@ -import { build, defaultBuildOptions } from '../../buildDefaults.mjs' +import { build, defaultBuildOptions } from '@redwoodjs/framework-tools' await build({ buildOptions: { diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 2b629d02808d..12a335416eaf 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -40,6 +40,7 @@ "@envelop/core": "5.0.0", "@envelop/testing": "7.0.0", "@envelop/types": "5.0.0", + "@redwoodjs/framework-tools": "6.0.7", "jest": "29.7.0", "nodemon": "3.0.2", "typescript": "5.3.3" diff --git a/packages/tui/build.mjs b/packages/tui/build.mjs index 75e861b63346..16175a6725c0 100644 --- a/packages/tui/build.mjs +++ b/packages/tui/build.mjs @@ -1,3 +1,3 @@ -import { build } from '../../buildDefaults.mjs' +import { build } from '@redwoodjs/framework-tools' await build() diff --git a/packages/tui/package.json b/packages/tui/package.json index 9c47deab1214..13e83b8e8c5d 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -26,6 +26,7 @@ "stdout-update": "1.6.8" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/web-server/build.mjs b/packages/web-server/build.mjs index dabb578c00ad..2f6b2e73ab84 100644 --- a/packages/web-server/build.mjs +++ b/packages/web-server/build.mjs @@ -4,7 +4,7 @@ import { build, defaultBuildOptions, defaultIgnorePatterns, -} from '../../buildDefaults.mjs' +} from '@redwoodjs/framework-tools' // This package uses the name of the bin as `scriptName` for Yargs to keep things in sync. // There should only be one bin entry for this to work. diff --git a/packages/web-server/package.json b/packages/web-server/package.json index b870ce886326..108ef7cfdffb 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -39,6 +39,7 @@ "yargs": "17.7.2" }, "devDependencies": { + "@redwoodjs/framework-tools": "6.0.7", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/yarn.lock b/yarn.lock index 523d5f5ed488..bacb9df580ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7947,6 +7947,7 @@ __metadata: "@babel/register": "npm:^7.22.15" "@babel/runtime-corejs3": "npm:7.23.9" "@babel/traverse": "npm:^7.22.20" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@types/babel-plugin-tester": "npm:9.0.9" "@types/babel__core": "npm:7.20.4" @@ -7969,6 +7970,7 @@ __metadata: dependencies: "@prisma/client": "npm:5.9.0" "@redwoodjs/babel-config": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@types/fs-extra": "npm:11.0.4" "@types/yargs": "npm:17.0.32" @@ -8018,6 +8020,7 @@ __metadata: resolution: "@redwoodjs/cli-storybook@workspace:packages/cli-packages/storybook" dependencies: "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@redwoodjs/telemetry": "npm:6.0.7" "@storybook/addon-a11y": "npm:7.6.10" @@ -8152,6 +8155,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/context@workspace:packages/context" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8246,6 +8250,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/eslint-plugin@workspace:packages/eslint-plugin" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" "@types/eslint": "npm:8" "@types/estree": "npm:1.0.5" "@typescript-eslint/parser": "npm:5.62.0" @@ -8264,6 +8269,7 @@ __metadata: "@fastify/http-proxy": "npm:9.3.0" "@fastify/static": "npm:6.12.0" "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" fast-glob: "npm:3.3.2" fastify: "npm:4.25.2" @@ -8280,6 +8286,7 @@ __metadata: "@fastify/static": "npm:6.12.0" "@fastify/url-data": "npm:5.4.0" "@redwoodjs/context": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" "@types/lodash": "npm:4.14.201" @@ -8323,6 +8330,19 @@ __metadata: languageName: unknown linkType: soft +"@redwoodjs/framework-tools@npm:6.0.7, @redwoodjs/framework-tools@workspace:packages/framework-tools": + version: 0.0.0-use.local + resolution: "@redwoodjs/framework-tools@workspace:packages/framework-tools" + dependencies: + "@types/fs-extra": "npm:11.0.4" + esbuild: "npm:0.20.0" + fast-glob: "npm:3.3.2" + fs-extra: "npm:11.2.0" + tsx: "npm:4.6.2" + typescript: "npm:5.3.3" + languageName: unknown + linkType: soft + "@redwoodjs/graphql-server@npm:6.0.7, @redwoodjs/graphql-server@workspace:packages/graphql-server": version: 0.0.0-use.local resolution: "@redwoodjs/graphql-server@workspace:packages/graphql-server" @@ -8424,6 +8444,7 @@ __metadata: resolution: "@redwoodjs/mailer-core@workspace:packages/mailer/core" dependencies: "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:6.0.7" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -8433,6 +8454,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-in-memory@workspace:packages/mailer/handlers/in-memory" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" typescript: "npm:5.3.3" languageName: unknown @@ -8442,6 +8464,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-nodemailer@workspace:packages/mailer/handlers/nodemailer" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" "@types/nodemailer": "npm:^6" nodemailer: "npm:6.9.7" @@ -8453,6 +8476,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-resend@workspace:packages/mailer/handlers/resend" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" resend: "npm:1.1.0" typescript: "npm:5.3.3" @@ -8463,6 +8487,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-studio@workspace:packages/mailer/handlers/studio" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" "@redwoodjs/mailer-handler-nodemailer": "npm:6.0.7" "@types/nodemailer": "npm:^6" @@ -8475,6 +8500,7 @@ __metadata: resolution: "@redwoodjs/mailer-renderer-mjml-react@workspace:packages/mailer/renderers/mjml-react" dependencies: "@faire/mjml-react": "npm:3.3.0" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" "@types/mjml": "npm:4" mjml: "npm:4.14.1" @@ -8487,6 +8513,7 @@ __metadata: resolution: "@redwoodjs/mailer-renderer-react-email@workspace:packages/mailer/renderers/react-email" dependencies: "@react-email/render": "npm:0.0.10" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" typescript: "npm:5.3.3" languageName: unknown @@ -8526,6 +8553,7 @@ __metadata: resolution: "@redwoodjs/project-config@workspace:packages/project-config" dependencies: "@iarna/toml": "npm:2.2.5" + "@redwoodjs/framework-tools": "npm:6.0.7" deepmerge: "npm:4.3.1" fast-glob: "npm:3.3.2" rimraf: "npm:5.0.5" @@ -8551,6 +8579,7 @@ __metadata: "@graphql-yoga/subscription": "npm:5.0.0" "@n1ru4l/graphql-live-query": "npm:0.10.0" "@n1ru4l/in-memory-live-query-store": "npm:0.10.0" + "@redwoodjs/framework-tools": "npm:6.0.7" graphql: "npm:16.8.1" ioredis: "npm:^5.3.2" jest: "npm:29.7.0" @@ -8707,6 +8736,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/tui@workspace:packages/tui" dependencies: + "@redwoodjs/framework-tools": "npm:6.0.7" boxen: "npm:5.1.2" chalk: "npm:4.1.2" enquirer: "npm:2.4.1" @@ -8745,6 +8775,7 @@ __metadata: resolution: "@redwoodjs/web-server@workspace:packages/web-server" dependencies: "@redwoodjs/fastify-web": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" @@ -15717,6 +15748,7 @@ __metadata: "@opentelemetry/resources": "npm:1.18.1" "@opentelemetry/sdk-trace-node": "npm:1.18.1" "@opentelemetry/semantic-conventions": "npm:1.18.1" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/tui": "npm:6.0.7" "@types/babel__core": "npm:7.20.4" chalk: "npm:4.1.2" From bbc9bd2f6033b65e8ab6c350710fe6ddfa4dc00f Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Thu, 1 Feb 2024 03:29:21 +0700 Subject: [PATCH 058/119] chore(ts): Remove src alias and baseUrl from all tsconfigs (#9944) --- __fixtures__/test-project/api/tsconfig.json | 1 - __fixtures__/test-project/scripts/tsconfig.json | 1 - __fixtures__/test-project/web/tsconfig.json | 1 - docs/tsconfig.json | 3 --- packages/adapters/fastify/web/tsconfig.json | 1 - packages/api-server/tsconfig.build.json | 1 - packages/api-server/tsconfig.json | 1 - packages/api/tsconfig.json | 1 - packages/auth-providers/auth0/api/tsconfig.json | 1 - packages/auth-providers/auth0/setup/tsconfig.json | 1 - packages/auth-providers/auth0/web/tsconfig.json | 1 - .../auth-providers/azureActiveDirectory/api/tsconfig.json | 1 - .../auth-providers/azureActiveDirectory/setup/tsconfig.json | 1 - .../auth-providers/azureActiveDirectory/web/tsconfig.json | 1 - packages/auth-providers/clerk/api/tsconfig.json | 1 - packages/auth-providers/clerk/setup/tsconfig.json | 1 - packages/auth-providers/clerk/web/tsconfig.json | 1 - packages/auth-providers/custom/setup/tsconfig.json | 1 - packages/auth-providers/dbAuth/api/tsconfig.json | 1 - packages/auth-providers/dbAuth/setup/tsconfig.json | 1 - packages/auth-providers/dbAuth/web/tsconfig.json | 1 - packages/auth-providers/firebase/api/tsconfig.json | 1 - packages/auth-providers/firebase/setup/tsconfig.json | 1 - packages/auth-providers/firebase/web/tsconfig.json | 1 - packages/auth-providers/netlify/api/tsconfig.json | 1 - packages/auth-providers/netlify/setup/tsconfig.json | 1 - packages/auth-providers/netlify/web/tsconfig.json | 1 - packages/auth-providers/supabase/api/tsconfig.json | 1 - packages/auth-providers/supabase/setup/tsconfig.json | 1 - packages/auth-providers/supabase/web/tsconfig.json | 1 - packages/auth-providers/supertokens/api/tsconfig.json | 1 - packages/auth-providers/supertokens/setup/tsconfig.json | 1 - packages/auth-providers/supertokens/web/tsconfig.json | 1 - packages/auth/tsconfig.json | 1 - packages/babel-config/tsconfig.json | 1 - packages/cli-helpers/tsconfig.json | 1 - packages/cli-packages/dataMigrate/tsconfig.json | 1 - packages/cli-packages/storybook/tsconfig.json | 1 - packages/cli/tsconfig.json | 1 - .../__testfixtures__/default/input/web/tsconfig.json | 1 - .../__testfixtures__/default/output/web/tsconfig.json | 1 - packages/codemods/tsconfig.json | 1 - packages/context/tsconfig.json | 1 - packages/create-redwood-app/templates/js/api/jsconfig.json | 1 - .../create-redwood-app/templates/js/scripts/jsconfig.json | 1 - packages/create-redwood-app/templates/js/web/jsconfig.json | 1 - packages/create-redwood-app/templates/ts/api/tsconfig.json | 1 - .../create-redwood-app/templates/ts/scripts/tsconfig.json | 1 - packages/create-redwood-app/templates/ts/web/tsconfig.json | 1 - packages/eslint-plugin/tsconfig.json | 1 - packages/fastify/tsconfig.json | 1 - packages/forms/tsconfig.json | 1 - .../graphql-server/src/plugins/useRedwoodOpenTelemetry.ts | 2 +- packages/graphql-server/src/types.ts | 3 +-- packages/graphql-server/tsconfig.json | 1 - packages/internal/tsconfig.json | 1 - packages/mailer/core/tsconfig.json | 1 - packages/mailer/handlers/in-memory/tsconfig.json | 1 - packages/mailer/handlers/nodemailer/tsconfig.json | 1 - packages/mailer/handlers/resend/tsconfig.json | 1 - packages/mailer/handlers/studio/tsconfig.json | 1 - packages/mailer/renderers/mjml-react/tsconfig.json | 1 - packages/mailer/renderers/react-email/tsconfig.json | 1 - packages/prerender/tsconfig.json | 4 ---- packages/project-config/tsconfig.json | 1 - packages/realtime/tsconfig.json | 1 - packages/router/tsconfig.json | 4 ---- packages/structure/tsconfig.json | 1 - packages/telemetry/tsconfig.json | 1 - packages/testing/tsconfig.json | 4 ---- packages/tui/tsconfig.json | 1 - packages/vite/tsconfig.json | 1 - packages/web-server/tsconfig.json | 1 - packages/web/tsconfig.json | 1 - 74 files changed, 2 insertions(+), 86 deletions(-) diff --git a/__fixtures__/test-project/api/tsconfig.json b/__fixtures__/test-project/api/tsconfig.json index fcbbf9872e43..a3a4bcdf5b58 100644 --- a/__fixtures__/test-project/api/tsconfig.json +++ b/__fixtures__/test-project/api/tsconfig.json @@ -7,7 +7,6 @@ "module": "esnext", "moduleResolution": "node", "skipLibCheck": false, - "baseUrl": "./", "rootDirs": [ "./src", "../.redwood/types/mirror/api/src" diff --git a/__fixtures__/test-project/scripts/tsconfig.json b/__fixtures__/test-project/scripts/tsconfig.json index babc7c436be6..1e6487a5ffa6 100644 --- a/__fixtures__/test-project/scripts/tsconfig.json +++ b/__fixtures__/test-project/scripts/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "paths": { "$api/*": [ "../api/*" diff --git a/__fixtures__/test-project/web/tsconfig.json b/__fixtures__/test-project/web/tsconfig.json index b6b53c03d1f4..5a46380573d0 100644 --- a/__fixtures__/test-project/web/tsconfig.json +++ b/__fixtures__/test-project/web/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "skipLibCheck": false, "rootDirs": [ "./src", diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 314eab8a418b..cbd6fdb37d18 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,7 +1,4 @@ { // This file is not used in compilation. It is here just for a nice editor experience. "extends": "@docusaurus/tsconfig", - "compilerOptions": { - "baseUrl": "." - } } diff --git a/packages/adapters/fastify/web/tsconfig.json b/packages/adapters/fastify/web/tsconfig.json index 939871b3db57..46ab57ea6866 100644 --- a/packages/adapters/fastify/web/tsconfig.json +++ b/packages/adapters/fastify/web/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/api-server/tsconfig.build.json b/packages/api-server/tsconfig.build.json index 8175f1e8f671..8a250c48ae62 100644 --- a/packages/api-server/tsconfig.build.json +++ b/packages/api-server/tsconfig.build.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/api-server/tsconfig.json b/packages/api-server/tsconfig.json index 35b7ec58eb87..1d359338047d 100644 --- a/packages/api-server/tsconfig.json +++ b/packages/api-server/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", "emitDeclarationOnly": false, diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index e9440671d9f5..cf64a32dfc99 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/auth-providers/auth0/api/tsconfig.json b/packages/auth-providers/auth0/api/tsconfig.json index 992f3e8dfddf..6b8ec4efb25c 100644 --- a/packages/auth-providers/auth0/api/tsconfig.json +++ b/packages/auth-providers/auth0/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/auth0/setup/tsconfig.json b/packages/auth-providers/auth0/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/auth0/setup/tsconfig.json +++ b/packages/auth-providers/auth0/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/auth0/web/tsconfig.json b/packages/auth-providers/auth0/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/auth0/web/tsconfig.json +++ b/packages/auth-providers/auth0/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/azureActiveDirectory/api/tsconfig.json b/packages/auth-providers/azureActiveDirectory/api/tsconfig.json index 992f3e8dfddf..6b8ec4efb25c 100644 --- a/packages/auth-providers/azureActiveDirectory/api/tsconfig.json +++ b/packages/auth-providers/azureActiveDirectory/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/azureActiveDirectory/setup/tsconfig.json b/packages/auth-providers/azureActiveDirectory/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/azureActiveDirectory/setup/tsconfig.json +++ b/packages/auth-providers/azureActiveDirectory/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/azureActiveDirectory/web/tsconfig.json b/packages/auth-providers/azureActiveDirectory/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/azureActiveDirectory/web/tsconfig.json +++ b/packages/auth-providers/azureActiveDirectory/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/clerk/api/tsconfig.json b/packages/auth-providers/clerk/api/tsconfig.json index 992f3e8dfddf..6b8ec4efb25c 100644 --- a/packages/auth-providers/clerk/api/tsconfig.json +++ b/packages/auth-providers/clerk/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/clerk/setup/tsconfig.json b/packages/auth-providers/clerk/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/clerk/setup/tsconfig.json +++ b/packages/auth-providers/clerk/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/clerk/web/tsconfig.json b/packages/auth-providers/clerk/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/clerk/web/tsconfig.json +++ b/packages/auth-providers/clerk/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/custom/setup/tsconfig.json b/packages/auth-providers/custom/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/custom/setup/tsconfig.json +++ b/packages/auth-providers/custom/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/dbAuth/api/tsconfig.json b/packages/auth-providers/dbAuth/api/tsconfig.json index de5a32a0ae66..97e5791b8a59 100644 --- a/packages/auth-providers/dbAuth/api/tsconfig.json +++ b/packages/auth-providers/dbAuth/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/dbAuth/setup/tsconfig.json b/packages/auth-providers/dbAuth/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/dbAuth/setup/tsconfig.json +++ b/packages/auth-providers/dbAuth/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/dbAuth/web/tsconfig.json b/packages/auth-providers/dbAuth/web/tsconfig.json index 3221c1501034..9e1aebbd3c46 100644 --- a/packages/auth-providers/dbAuth/web/tsconfig.json +++ b/packages/auth-providers/dbAuth/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/firebase/api/tsconfig.json b/packages/auth-providers/firebase/api/tsconfig.json index 992f3e8dfddf..6b8ec4efb25c 100644 --- a/packages/auth-providers/firebase/api/tsconfig.json +++ b/packages/auth-providers/firebase/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/firebase/setup/tsconfig.json b/packages/auth-providers/firebase/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/firebase/setup/tsconfig.json +++ b/packages/auth-providers/firebase/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/firebase/web/tsconfig.json b/packages/auth-providers/firebase/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/firebase/web/tsconfig.json +++ b/packages/auth-providers/firebase/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/netlify/api/tsconfig.json b/packages/auth-providers/netlify/api/tsconfig.json index 992f3e8dfddf..6b8ec4efb25c 100644 --- a/packages/auth-providers/netlify/api/tsconfig.json +++ b/packages/auth-providers/netlify/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/netlify/setup/tsconfig.json b/packages/auth-providers/netlify/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/netlify/setup/tsconfig.json +++ b/packages/auth-providers/netlify/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/netlify/web/tsconfig.json b/packages/auth-providers/netlify/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/netlify/web/tsconfig.json +++ b/packages/auth-providers/netlify/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/supabase/api/tsconfig.json b/packages/auth-providers/supabase/api/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/supabase/api/tsconfig.json +++ b/packages/auth-providers/supabase/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/supabase/setup/tsconfig.json b/packages/auth-providers/supabase/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/supabase/setup/tsconfig.json +++ b/packages/auth-providers/supabase/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/supabase/web/tsconfig.json b/packages/auth-providers/supabase/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/supabase/web/tsconfig.json +++ b/packages/auth-providers/supabase/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/supertokens/api/tsconfig.json b/packages/auth-providers/supertokens/api/tsconfig.json index 992f3e8dfddf..6b8ec4efb25c 100644 --- a/packages/auth-providers/supertokens/api/tsconfig.json +++ b/packages/auth-providers/supertokens/api/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/supertokens/setup/tsconfig.json b/packages/auth-providers/supertokens/setup/tsconfig.json index 5be9707b2f05..31fd2566f42e 100644 --- a/packages/auth-providers/supertokens/setup/tsconfig.json +++ b/packages/auth-providers/supertokens/setup/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth-providers/supertokens/web/tsconfig.json b/packages/auth-providers/supertokens/web/tsconfig.json index bf6fbe8951bd..6f1f5acde3b9 100644 --- a/packages/auth-providers/supertokens/web/tsconfig.json +++ b/packages/auth-providers/supertokens/web/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/auth/tsconfig.json b/packages/auth/tsconfig.json index 2ee6274e91d4..35c7dc051767 100644 --- a/packages/auth/tsconfig.json +++ b/packages/auth/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/babel-config/tsconfig.json b/packages/babel-config/tsconfig.json index 3b0700b39db5..57ce97c35a79 100644 --- a/packages/babel-config/tsconfig.json +++ b/packages/babel-config/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", "types": ["node", "jest"], diff --git a/packages/cli-helpers/tsconfig.json b/packages/cli-helpers/tsconfig.json index c17ae44a61d8..8e96c16e435f 100644 --- a/packages/cli-helpers/tsconfig.json +++ b/packages/cli-helpers/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "moduleResolution": "NodeNext", "module": "NodeNext", - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/cli-packages/dataMigrate/tsconfig.json b/packages/cli-packages/dataMigrate/tsconfig.json index 96510ef2be8c..7a43be6a30f3 100644 --- a/packages/cli-packages/dataMigrate/tsconfig.json +++ b/packages/cli-packages/dataMigrate/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/cli-packages/storybook/tsconfig.json b/packages/cli-packages/storybook/tsconfig.json index 9625d97d662f..dd7dbdbcd0ae 100644 --- a/packages/cli-packages/storybook/tsconfig.json +++ b/packages/cli-packages/storybook/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 7b2d2f747a61..c88edb9572d1 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "emitDeclarationOnly": false, "noEmit": true diff --git a/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/input/web/tsconfig.json b/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/input/web/tsconfig.json index 9399141e3463..5e4cb7df930e 100644 --- a/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/input/web/tsconfig.json +++ b/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/input/web/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "rootDirs": [ "./src", "../.redwood/types/mirror/web/src", diff --git a/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/output/web/tsconfig.json b/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/output/web/tsconfig.json index d006deea2792..0d220677ea37 100644 --- a/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/output/web/tsconfig.json +++ b/packages/codemods/src/codemods/v2.3.x/tsconfigForRouteHooks/__testfixtures__/default/output/web/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "rootDirs": [ "./src", "../.redwood/types/mirror/web/src", diff --git a/packages/codemods/tsconfig.json b/packages/codemods/tsconfig.json index a12c30f06606..43e8728515c0 100644 --- a/packages/codemods/tsconfig.json +++ b/packages/codemods/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "emitDeclarationOnly": false, "noEmit": true diff --git a/packages/context/tsconfig.json b/packages/context/tsconfig.json index fabf60e3eb27..1af155f31922 100644 --- a/packages/context/tsconfig.json +++ b/packages/context/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo", "outDir": "dist", diff --git a/packages/create-redwood-app/templates/js/api/jsconfig.json b/packages/create-redwood-app/templates/js/api/jsconfig.json index 369b35f515a3..c95ae8d949b2 100644 --- a/packages/create-redwood-app/templates/js/api/jsconfig.json +++ b/packages/create-redwood-app/templates/js/api/jsconfig.json @@ -6,7 +6,6 @@ "module": "esnext", "moduleResolution": "node", "skipLibCheck": false, - "baseUrl": "./", "rootDirs": [ "./src", "../.redwood/types/mirror/api/src" diff --git a/packages/create-redwood-app/templates/js/scripts/jsconfig.json b/packages/create-redwood-app/templates/js/scripts/jsconfig.json index 546b327815db..2c98694fb6f4 100644 --- a/packages/create-redwood-app/templates/js/scripts/jsconfig.json +++ b/packages/create-redwood-app/templates/js/scripts/jsconfig.json @@ -5,7 +5,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "paths": { "$api/*": [ "../api/*" diff --git a/packages/create-redwood-app/templates/js/web/jsconfig.json b/packages/create-redwood-app/templates/js/web/jsconfig.json index cfaf517b955a..fe187ce40c72 100644 --- a/packages/create-redwood-app/templates/js/web/jsconfig.json +++ b/packages/create-redwood-app/templates/js/web/jsconfig.json @@ -5,7 +5,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "skipLibCheck": false, "rootDirs": [ "./src", diff --git a/packages/create-redwood-app/templates/ts/api/tsconfig.json b/packages/create-redwood-app/templates/ts/api/tsconfig.json index fcbbf9872e43..a3a4bcdf5b58 100644 --- a/packages/create-redwood-app/templates/ts/api/tsconfig.json +++ b/packages/create-redwood-app/templates/ts/api/tsconfig.json @@ -7,7 +7,6 @@ "module": "esnext", "moduleResolution": "node", "skipLibCheck": false, - "baseUrl": "./", "rootDirs": [ "./src", "../.redwood/types/mirror/api/src" diff --git a/packages/create-redwood-app/templates/ts/scripts/tsconfig.json b/packages/create-redwood-app/templates/ts/scripts/tsconfig.json index babc7c436be6..1e6487a5ffa6 100644 --- a/packages/create-redwood-app/templates/ts/scripts/tsconfig.json +++ b/packages/create-redwood-app/templates/ts/scripts/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "paths": { "$api/*": [ "../api/*" diff --git a/packages/create-redwood-app/templates/ts/web/tsconfig.json b/packages/create-redwood-app/templates/ts/web/tsconfig.json index b6b53c03d1f4..5a46380573d0 100644 --- a/packages/create-redwood-app/templates/ts/web/tsconfig.json +++ b/packages/create-redwood-app/templates/ts/web/tsconfig.json @@ -6,7 +6,6 @@ "target": "esnext", "module": "esnext", "moduleResolution": "node", - "baseUrl": "./", "skipLibCheck": false, "rootDirs": [ "./src", diff --git a/packages/eslint-plugin/tsconfig.json b/packages/eslint-plugin/tsconfig.json index 999e7b69a94c..a16ec4441da3 100644 --- a/packages/eslint-plugin/tsconfig.json +++ b/packages/eslint-plugin/tsconfig.json @@ -2,7 +2,6 @@ "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { "strict": true, - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/fastify/tsconfig.json b/packages/fastify/tsconfig.json index 79a0db168ed0..e4431bdae5ae 100644 --- a/packages/fastify/tsconfig.json +++ b/packages/fastify/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/forms/tsconfig.json b/packages/forms/tsconfig.json index b5f78cfe089b..c1c035e4d5e4 100644 --- a/packages/forms/tsconfig.json +++ b/packages/forms/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/graphql-server/src/plugins/useRedwoodOpenTelemetry.ts b/packages/graphql-server/src/plugins/useRedwoodOpenTelemetry.ts index ff95562f927e..6334b7eb2cb3 100644 --- a/packages/graphql-server/src/plugins/useRedwoodOpenTelemetry.ts +++ b/packages/graphql-server/src/plugins/useRedwoodOpenTelemetry.ts @@ -6,7 +6,7 @@ import { SpanKind } from '@opentelemetry/api' import * as opentelemetry from '@opentelemetry/api' import { print } from 'graphql' -import type { RedwoodOpenTelemetryConfig } from 'src/types' +import type { RedwoodOpenTelemetryConfig } from '../types' export enum AttributeName { EXECUTION_ERROR = 'graphql.execute.error', diff --git a/packages/graphql-server/src/types.ts b/packages/graphql-server/src/types.ts index 06fb3b755265..7310a47d1664 100644 --- a/packages/graphql-server/src/types.ts +++ b/packages/graphql-server/src/types.ts @@ -13,8 +13,7 @@ import type { AuthContextPayload, Decoder } from '@redwoodjs/api' import type { CorsConfig } from '@redwoodjs/api' import type { RedwoodRealtimeOptions } from '@redwoodjs/realtime' -import type { DirectiveGlobImports } from 'src/directives/makeDirectives' - +import type { DirectiveGlobImports } from './directives/makeDirectives' import type { useRedwoodDirectiveReturn, DirectivePluginOptions, diff --git a/packages/graphql-server/tsconfig.json b/packages/graphql-server/tsconfig.json index f0240cb8f495..1d50da1fc74f 100644 --- a/packages/graphql-server/tsconfig.json +++ b/packages/graphql-server/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/internal/tsconfig.json b/packages/internal/tsconfig.json index a84aaa5bec77..039ec13b1c0e 100644 --- a/packages/internal/tsconfig.json +++ b/packages/internal/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/core/tsconfig.json b/packages/mailer/core/tsconfig.json index 3e87becf1fb2..ba1b79da77b4 100644 --- a/packages/mailer/core/tsconfig.json +++ b/packages/mailer/core/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/handlers/in-memory/tsconfig.json b/packages/mailer/handlers/in-memory/tsconfig.json index 31d835aec8b3..3575bbf2b703 100644 --- a/packages/mailer/handlers/in-memory/tsconfig.json +++ b/packages/mailer/handlers/in-memory/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/handlers/nodemailer/tsconfig.json b/packages/mailer/handlers/nodemailer/tsconfig.json index 31d835aec8b3..3575bbf2b703 100644 --- a/packages/mailer/handlers/nodemailer/tsconfig.json +++ b/packages/mailer/handlers/nodemailer/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/handlers/resend/tsconfig.json b/packages/mailer/handlers/resend/tsconfig.json index 31d835aec8b3..3575bbf2b703 100644 --- a/packages/mailer/handlers/resend/tsconfig.json +++ b/packages/mailer/handlers/resend/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/handlers/studio/tsconfig.json b/packages/mailer/handlers/studio/tsconfig.json index 31d835aec8b3..3575bbf2b703 100644 --- a/packages/mailer/handlers/studio/tsconfig.json +++ b/packages/mailer/handlers/studio/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/renderers/mjml-react/tsconfig.json b/packages/mailer/renderers/mjml-react/tsconfig.json index 31d835aec8b3..3575bbf2b703 100644 --- a/packages/mailer/renderers/mjml-react/tsconfig.json +++ b/packages/mailer/renderers/mjml-react/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/mailer/renderers/react-email/tsconfig.json b/packages/mailer/renderers/react-email/tsconfig.json index 31d835aec8b3..3575bbf2b703 100644 --- a/packages/mailer/renderers/react-email/tsconfig.json +++ b/packages/mailer/renderers/react-email/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/prerender/tsconfig.json b/packages/prerender/tsconfig.json index 7c7e238bbb66..67ef72c916af 100644 --- a/packages/prerender/tsconfig.json +++ b/packages/prerender/tsconfig.json @@ -1,12 +1,8 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", - "paths": { - "src/*": ["./src/*"] - }, "allowJs": true }, "include": ["./src/**/*", "ambient.d.ts"], diff --git a/packages/project-config/tsconfig.json b/packages/project-config/tsconfig.json index 23e3bf19df5b..a49a8af31aba 100644 --- a/packages/project-config/tsconfig.json +++ b/packages/project-config/tsconfig.json @@ -3,7 +3,6 @@ "compilerOptions": { "moduleResolution": "NodeNext", "module": "NodeNext", - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/realtime/tsconfig.json b/packages/realtime/tsconfig.json index 74bdeb595478..7c363bd8f139 100644 --- a/packages/realtime/tsconfig.json +++ b/packages/realtime/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/router/tsconfig.json b/packages/router/tsconfig.json index 2d34bcb6b768..053b3f8aa42c 100644 --- a/packages/router/tsconfig.json +++ b/packages/router/tsconfig.json @@ -1,12 +1,8 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", - "paths": { - "src/*": ["./src/*"] - } }, "include": ["src", "./ambient.d.ts"], "references": [ diff --git a/packages/structure/tsconfig.json b/packages/structure/tsconfig.json index fb5f03b70121..234a4b7cb881 100644 --- a/packages/structure/tsconfig.json +++ b/packages/structure/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", "experimentalDecorators": true, diff --git a/packages/telemetry/tsconfig.json b/packages/telemetry/tsconfig.json index a20bd6bbd951..5ff176fedb19 100644 --- a/packages/telemetry/tsconfig.json +++ b/packages/telemetry/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/testing/tsconfig.json b/packages/testing/tsconfig.json index db0c5ab530cc..0b3357df380b 100644 --- a/packages/testing/tsconfig.json +++ b/packages/testing/tsconfig.json @@ -1,12 +1,8 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", - "paths": { - "src/*": ["./src/*"], - }, }, "include": [ "src", diff --git a/packages/tui/tsconfig.json b/packages/tui/tsconfig.json index 42d8f7c0aa1e..60ab1005e25b 100644 --- a/packages/tui/tsconfig.json +++ b/packages/tui/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/vite/tsconfig.json b/packages/vite/tsconfig.json index 4c5eb4dae27e..492d3f2e17f9 100644 --- a/packages/vite/tsconfig.json +++ b/packages/vite/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, diff --git a/packages/web-server/tsconfig.json b/packages/web-server/tsconfig.json index 688f857dd67e..0a5c9c2c641f 100644 --- a/packages/web-server/tsconfig.json +++ b/packages/web-server/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist", }, diff --git a/packages/web/tsconfig.json b/packages/web/tsconfig.json index b06c68cab7cd..5787b2d0b025 100644 --- a/packages/web/tsconfig.json +++ b/packages/web/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../../tsconfig.compilerOption.json", "compilerOptions": { - "baseUrl": ".", "rootDir": "src", "outDir": "dist" }, From 032a7664a55261197bb74d9648985ecfd2f539ea Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 1 Feb 2024 14:06:39 +0000 Subject: [PATCH 059/119] feat(server): dedupe api server code, make host configurable (#9948) Follow up to https://github.com/redwoodjs/redwood/pull/9884. Does something similar for the api server but I didn't go quite as far. The crux of this PR is: we duplicated code between `@redwoodjs/api-server` and `@redwoodjs/fastify` while we were working on experimental features. This PR brings the changes from `@redwoodjs/fastify` into `@redwoodjs/api-server`. There's still a few types I need help with, and there's some duplicated helper-like function code that I have some ideas around deduplicating, but here's a summary of the changes: - Removes `ansi-colors` We only use one colors package across the framework now, `chalk`. This saves us ~27 kBs. I'm not attached to chalk or anything, but it's used by far more of the framework and we don't need two colors packages. - Adds the ability to configure the api/web host and port where possible in many ways In working on Docker and with "severful" deploy providers, many of them expect to be able to configure the host and port the server is listening at. Right now in Redwood you really can't configure the host at all. I've added the ability to do this in the ways they'd all expect: - Via CLI flag (`--apiHost`, or just `--host` depending on the entry point) - Via env var (`REDWOOD_API_HOST`, etc) - Via TOML (`[api].host`) And of course if none of these are set, there's our default which is based on `NODE_ENV`. To do this, I had to remove the default for host from `@redwoodjs/project-config`. The api's value was never hooked up but there may be some code that depended on the web one. I've tested dev and CI tests dev though so I'm fairly certain that things still work out of the box. - Changes some file names `@redwoodjs/api-server` had a file called `index.ts` that wasn't the index (e.g. `"main"` in the package.json didn't point to it). This file was really the entry point to the package's primary bin, `rw-server`, so I named it `bin.ts`. - `@redwoodjs/api-server` uses the package.json exports field If there's one explicitly breaking change here, it's this. I know some startups were using this package's default export in a hacky way to create their own server file. I'll have to highlight this in the release notes and emphasize the move to `createServer`. This package also provides the logFormatter bin. You can still run the bin, but I'm not sure if other packages are depending on parts of the code in this directory in an indirect way (I couldn't find any explicit imports). - Most fastify plugins don't have to be awaited `fastify-raw-body` is the only plugin that has to be awaited and we were inconsistent with all the others (some packages awaited them; some didn't). I've consistently not awaited those that don't need to be, but I have moved them all above our logic which is important since fastify's loading is graph-based. - All code in `@redwoodjs/api-server` is a fastify plugin Most of the plugins were in a kind of decorator `with` style where you'd pass the object along a series of function calls that'd mutate it. This isn't how fastify prefers to do things; it has a strong encapsulation model built around plugins. Making our functionality plugins goes with instead of against fastify's way of doing things, and we should stop getting "plugin already registered" errors. Todos after this PR is merged: - [ ] Update studio which may be affected? --------- Co-authored-by: Tobbe Lundberg --- .vscode/settings.json | 8 +- .../empty-project/api/server.config.js | 23 - .../api/server.config.js | 52 -- .../test-project/api/server.config.js | 52 -- packages/adapters/fastify/web/package.json | 11 +- packages/adapters/fastify/web/src/types.ts | 6 +- packages/adapters/fastify/web/src/web.ts | 46 +- packages/api-server/build.mjs | 61 ++ packages/api-server/dist.test.ts | 72 +-- packages/api-server/package.json | 14 +- .../{withFunctions.test.ts => api.test.ts} | 26 +- .../src/__tests__/createServer.test.ts | 29 +- packages/api-server/src/apiCLIConfig.ts | 37 ++ .../api-server/src/apiCLIConfigHandler.ts | 61 ++ packages/api-server/src/bin.ts | 63 ++ packages/api-server/src/bothCLIConfig.ts | 43 ++ .../api-server/src/bothCLIConfigHandler.ts | 95 +++ packages/api-server/src/cliHandlers.ts | 112 ---- packages/api-server/src/cliHelpers.ts | 27 + packages/api-server/src/createServer.ts | 198 +----- .../api-server/src/createServerHelpers.ts | 129 ++++ packages/api-server/src/index.ts | 63 -- packages/api-server/src/logFormatter/bin.ts | 1 - packages/api-server/src/plugins/api.ts | 62 ++ packages/api-server/src/plugins/graphql.ts | 57 +- .../api-server/src/plugins/lambdaLoader.ts | 12 +- .../api-server/src/plugins/withFunctions.ts | 44 -- packages/api-server/src/server.ts | 42 -- packages/api-server/src/types.ts | 35 +- packages/api-server/src/watch.ts | 63 +- packages/cli/package.json | 1 - .../cli/src/commands/__tests__/serve.test.js | 38 +- .../cli/src/commands/deploy/flightcontrol.js | 4 +- packages/cli/src/commands/deploy/render.js | 4 +- packages/cli/src/commands/serve.js | 74 +-- packages/cli/src/commands/serveHandler.js | 142 +---- packages/cli/src/index.js | 1 + packages/cli/tsconfig.json | 1 - .../tasks/generateCodemod/generateCodemod.mjs | 8 +- .../templates/js/api/server.config.js | 52 -- .../templates/ts/api/server.config.js | 52 -- .../tests/templates.test.ts | 2 - packages/fastify/README.md | 7 - packages/fastify/build.mjs | 3 - packages/fastify/package.json | 42 -- packages/fastify/src/api.ts | 43 -- packages/fastify/src/config.ts | 77 --- packages/fastify/src/index.ts | 16 - packages/fastify/src/lambda/index.ts | 266 -------- packages/fastify/src/types.ts | 18 - packages/fastify/tsconfig.json | 10 - packages/internal/src/generate/watch.ts | 10 +- .../src/__tests__/config.test.ts | 2 - packages/project-config/src/config.ts | 6 +- packages/vite/src/index.ts | 13 +- packages/web-server/README.md | 31 +- packages/web-server/package.json | 8 +- packages/web-server/src/bin.ts | 17 + packages/web-server/src/cliConfig.ts | 22 +- packages/web-server/src/cliConfigHandler.ts | 16 - packages/web-server/src/webServer.ts | 25 +- .../__snapshots__/bothServer.test.mts.snap | 139 +++++ .../__snapshots__/server.test.mts.snap | 240 ------- tasks/server-tests/bothServer.test.mts | 191 ++++++ tasks/server-tests/helpers.mts | 3 + tasks/server-tests/server.test.mts | 583 ------------------ yarn.lock | 46 +- 67 files changed, 1228 insertions(+), 2529 deletions(-) delete mode 100644 __fixtures__/empty-project/api/server.config.js delete mode 100644 __fixtures__/fragment-test-project/api/server.config.js delete mode 100644 __fixtures__/test-project/api/server.config.js create mode 100644 packages/api-server/build.mjs rename packages/api-server/src/__tests__/{withFunctions.test.ts => api.test.ts} (81%) create mode 100644 packages/api-server/src/apiCLIConfig.ts create mode 100644 packages/api-server/src/apiCLIConfigHandler.ts create mode 100644 packages/api-server/src/bin.ts create mode 100644 packages/api-server/src/bothCLIConfig.ts create mode 100644 packages/api-server/src/bothCLIConfigHandler.ts delete mode 100644 packages/api-server/src/cliHandlers.ts create mode 100644 packages/api-server/src/cliHelpers.ts create mode 100644 packages/api-server/src/createServerHelpers.ts delete mode 100644 packages/api-server/src/index.ts create mode 100644 packages/api-server/src/plugins/api.ts delete mode 100644 packages/api-server/src/plugins/withFunctions.ts delete mode 100644 packages/api-server/src/server.ts delete mode 100644 packages/create-redwood-app/templates/js/api/server.config.js delete mode 100644 packages/create-redwood-app/templates/ts/api/server.config.js delete mode 100644 packages/fastify/README.md delete mode 100644 packages/fastify/build.mjs delete mode 100644 packages/fastify/package.json delete mode 100644 packages/fastify/src/api.ts delete mode 100644 packages/fastify/src/config.ts delete mode 100644 packages/fastify/src/index.ts delete mode 100644 packages/fastify/src/lambda/index.ts delete mode 100644 packages/fastify/src/types.ts delete mode 100644 packages/fastify/tsconfig.json create mode 100644 tasks/server-tests/__snapshots__/bothServer.test.mts.snap delete mode 100644 tasks/server-tests/__snapshots__/server.test.mts.snap create mode 100644 tasks/server-tests/bothServer.test.mts create mode 100644 tasks/server-tests/helpers.mts delete mode 100644 tasks/server-tests/server.test.mts diff --git a/.vscode/settings.json b/.vscode/settings.json index fe09e853a9bc..26702c59a1f0 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,5 +20,11 @@ "files.trimTrailingWhitespace": false }, "typescript.tsdk": "node_modules/typescript/lib", - "peacock.color": "#b85833" + "peacock.color": "#b85833", + "cSpell.words": [ + "Fastify", + "pino", + "redwoodjs", + "RWJS" + ] } diff --git a/__fixtures__/empty-project/api/server.config.js b/__fixtures__/empty-project/api/server.config.js deleted file mode 100644 index 9fa6aaa05871..000000000000 --- a/__fixtures__/empty-project/api/server.config.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * This file allows you to configure the Fastify Server settings - * used by the RedwoodJS dev server. - * - * It also applies when running the api server with `yarn rw serve`. - * - * For the Fastify server options that you can set, see: - * https://www.fastify.io/docs/latest/Reference/Server/#factory - * - * Examples include: logger settings, timeouts, maximum payload limits, and more. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('fastify').FastifyServerOptions} */ -const config = { - requestTimeout: 15_000, - logger: { - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, -} - -module.exports = config diff --git a/__fixtures__/fragment-test-project/api/server.config.js b/__fixtures__/fragment-test-project/api/server.config.js deleted file mode 100644 index 73dca9225a3e..000000000000 --- a/__fixtures__/fragment-test-project/api/server.config.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file allows you to configure the Fastify Server settings - * used by the RedwoodJS dev server. - * - * It also applies when running RedwoodJS with `yarn rw serve`. - * - * For the Fastify server options that you can set, see: - * https://www.fastify.io/docs/latest/Reference/Server/#factory - * - * Examples include: logger settings, timeouts, maximum payload limits, and more. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('fastify').FastifyServerOptions} */ -const config = { - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adjust - // the default non-development level to `info` - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, -} - -/** - * You can also register Fastify plugins and additional routes for the API and Web sides - * in the configureFastify function. - * - * This function has access to the Fastify instance and options, such as the side - * (web, api, or proxy) that is being configured and other settings like the apiRootPath - * of the functions endpoint. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('@redwoodjs/api-server/dist/types').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - } - - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - } - - return fastify -} - -module.exports = { - config, - configureFastify, -} diff --git a/__fixtures__/test-project/api/server.config.js b/__fixtures__/test-project/api/server.config.js deleted file mode 100644 index 73dca9225a3e..000000000000 --- a/__fixtures__/test-project/api/server.config.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file allows you to configure the Fastify Server settings - * used by the RedwoodJS dev server. - * - * It also applies when running RedwoodJS with `yarn rw serve`. - * - * For the Fastify server options that you can set, see: - * https://www.fastify.io/docs/latest/Reference/Server/#factory - * - * Examples include: logger settings, timeouts, maximum payload limits, and more. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('fastify').FastifyServerOptions} */ -const config = { - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adjust - // the default non-development level to `info` - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, -} - -/** - * You can also register Fastify plugins and additional routes for the API and Web sides - * in the configureFastify function. - * - * This function has access to the Fastify instance and options, such as the side - * (web, api, or proxy) that is being configured and other settings like the apiRootPath - * of the functions endpoint. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('@redwoodjs/api-server/dist/types').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - } - - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - } - - return fastify -} - -module.exports = { - config, - configureFastify, -} diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index e6ae98ad9fcd..2ee7d8ed6450 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -7,16 +7,7 @@ "directory": "packages/adapters/fastify/web" }, "license": "MIT", - "exports": { - ".": { - "types": "./dist/web.d.ts", - "default": "./dist/web.js" - }, - "./helpers": { - "types": "./dist/helpers.d.ts", - "default": "./dist/helpers.js" - } - }, + "main": "./dist/web.js", "types": "./dist/web.d.ts", "files": [ "dist" diff --git a/packages/adapters/fastify/web/src/types.ts b/packages/adapters/fastify/web/src/types.ts index b6ef71673d76..4809ce1da851 100644 --- a/packages/adapters/fastify/web/src/types.ts +++ b/packages/adapters/fastify/web/src/types.ts @@ -4,14 +4,14 @@ export interface RedwoodFastifyWebOptions { * Specify the URL to your API server. * This can be a relative URL on the current domain (`/.redwood/functions`), * in which case the `apiProxyTarget` option must be set, - * or a fully qualified URL (`https://api.redwood.horse`). + * or a fully-qualified URL (`https://api.redwood.horse`). * * Note: This should not include the path to the GraphQL Server. **/ apiUrl?: string /** - * The fully qualified URL to proxy requests to from apiUrl. - * Only valid when apiUrl is a relative URL. + * The fully-qualified URL to proxy requests to from `apiUrl`. + * Only valid when `apiUrl` is a relative URL. */ apiProxyTarget?: string diff --git a/packages/adapters/fastify/web/src/web.ts b/packages/adapters/fastify/web/src/web.ts index 461aa38f7ae0..ac5e25b64f8e 100644 --- a/packages/adapters/fastify/web/src/web.ts +++ b/packages/adapters/fastify/web/src/web.ts @@ -21,28 +21,19 @@ export async function redwoodFastifyWeb( ) { const { redwoodOptions, flags } = resolveOptions(opts) - await fastify.register(fastifyUrlData) + fastify.register(fastifyUrlData) + fastify.register(fastifyStatic, { root: getPaths().web.dist }) - // Serve prerendered files directly, instead of the index - const prerenderedFiles = await fg('**/*.html', { - cwd: getPaths().web.dist, - ignore: ['index.html', '200.html', '404.html'], - }) - - for (const prerenderedFile of prerenderedFiles) { - const [pathName] = prerenderedFile.split('.html') - - fastify.get(`/${pathName}`, (_, reply) => { - reply.header('Content-Type', 'text/html; charset=UTF-8') - reply.sendFile(prerenderedFile) + // If `apiProxyTarget` is set, proxy requests from `apiUrl` to `apiProxyTarget`. + // In this case, `apiUrl` has to be relative; `resolveOptions` above throws if it's not + if (redwoodOptions.apiProxyTarget) { + fastify.register(httpProxy, { + prefix: redwoodOptions.apiUrl, + upstream: redwoodOptions.apiProxyTarget, + disableCache: true, }) } - // Serve static assets - fastify.register(fastifyStatic, { - root: getPaths().web.dist, - }) - // If `shouldRegisterApiUrl` is true, `apiUrl` has to be defined // but TS doesn't know that so it complains about `apiUrl` being undefined // in `fastify.all(...)` below. So we have to do this check for now @@ -69,20 +60,23 @@ export async function redwoodFastifyWeb( fastify.all(`${apiUrlWarningPath}*`, apiUrlHandler) } - // If `apiProxyTarget` is set, proxy requests from `apiUrl` to `apiProxyTarget`. - // In this case, `apiUrl` has to be relative; `resolveOptions` above throws if it's not - if (redwoodOptions.apiProxyTarget) { - fastify.register(httpProxy, { - prefix: redwoodOptions.apiUrl, - upstream: redwoodOptions.apiProxyTarget, - disableCache: true, + // Serve prerendered files directly, instead of the index + const prerenderedFiles = await fg('**/*.html', { + cwd: getPaths().web.dist, + ignore: ['index.html', '200.html', '404.html'], + }) + + for (const prerenderedFile of prerenderedFiles) { + const [pathName] = prerenderedFile.split('.html') + fastify.get(`/${pathName}`, (_, reply) => { + reply.header('Content-Type', 'text/html; charset=UTF-8') + reply.sendFile(prerenderedFile) }) } // If `200.html` exists, the project has been prerendered. // If it doesn't, fallback to the default (`index.html`) const prerenderIndexPath = path.join(getPaths().web.dist, '200.html') - const fallbackIndexPath = fs.existsSync(prerenderIndexPath) ? '200.html' : 'index.html' diff --git a/packages/api-server/build.mjs b/packages/api-server/build.mjs new file mode 100644 index 000000000000..0791dabccd29 --- /dev/null +++ b/packages/api-server/build.mjs @@ -0,0 +1,61 @@ +import { + build, + defaultBuildOptions, + defaultIgnorePatterns, +} from '@redwoodjs/framework-tools' + +// Build the package +await build({ + entryPointOptions: { + ignore: [ + ...defaultIgnorePatterns, + './src/bin.ts', + './src/logFormatter/bin.ts', + './src/types.ts', + './src/watch.ts', + ], + }, +}) + +// Build the rw-server bin +await build({ + buildOptions: { + ...defaultBuildOptions, + banner: { + js: '#!/usr/bin/env node', + }, + bundle: true, + entryPoints: ['./src/bin.ts'], + packages: 'external', + }, + metafileName: 'meta.rwServer.json', +}) + +// Build the logFormatter bin +await build({ + buildOptions: { + ...defaultBuildOptions, + banner: { + js: '#!/usr/bin/env node', + }, + bundle: true, + entryPoints: ['./src/logFormatter/bin.ts'], + outdir: './dist/logFormatter', + packages: 'external', + }, + metafileName: 'meta.logFormatter.json', +}) + +// Build the watch bin +await build({ + buildOptions: { + ...defaultBuildOptions, + banner: { + js: '#!/usr/bin/env node', + }, + bundle: true, + entryPoints: ['./src/watch.ts'], + packages: 'external', + }, + metafileName: 'meta.watch.json', +}) diff --git a/packages/api-server/dist.test.ts b/packages/api-server/dist.test.ts index ef10ff84ea68..c65362034211 100644 --- a/packages/api-server/dist.test.ts +++ b/packages/api-server/dist.test.ts @@ -9,82 +9,12 @@ describe('dist', () => { expect(fs.existsSync(path.join(distPath, '__tests__'))).toEqual(false) }) - // The way this package was written, you can't just import it. It expects to be in a Redwood project. - it('fails if imported outside a Redwood app', async () => { - try { - await import(path.join(distPath, 'cliHandlers.js')) - } catch (e) { - expect(e.message).toMatchInlineSnapshot( - `"Could not find a "redwood.toml" file, are you sure you're in a Redwood project?"` - ) - } - }) - - it('exports CLI options and handlers', async () => { - const original_RWJS_CWD = process.env.RWJS_CWD - - process.env.RWJS_CWD = path.join( - __dirname, - 'src/__tests__/fixtures/redwood-app' - ) - - const mod = await import( - path.resolve(distPath, packageConfig.main.replace('dist/', '')) - ) - - expect(mod).toMatchInlineSnapshot(` - { - "apiCliOptions": { - "apiRootPath": { - "alias": [ - "api-root-path", - "rootPath", - "root-path", - ], - "coerce": [Function], - "default": "/", - "desc": "Root path where your api functions are served", - "type": "string", - }, - "loadEnvFiles": { - "description": "Deprecated; env files are always loaded. This flag is a no-op", - "hidden": true, - "type": "boolean", - }, - "port": { - "alias": "p", - "default": 8911, - "type": "number", - }, - "socket": { - "type": "string", - }, - }, - "apiServerHandler": [Function], - "bothServerHandler": [Function], - "commonOptions": { - "port": { - "alias": "p", - "default": 8910, - "type": "number", - }, - "socket": { - "type": "string", - }, - }, - "createServer": [Function], - } - `) - - process.env.RWJS_CWD = original_RWJS_CWD - }) - it('ships three bins', () => { expect(packageConfig.bin).toMatchInlineSnapshot(` { "rw-api-server-watch": "./dist/watch.js", "rw-log-formatter": "./dist/logFormatter/bin.js", - "rw-server": "./dist/index.js", + "rw-server": "./dist/bin.js", } `) }) diff --git a/packages/api-server/package.json b/packages/api-server/package.json index 4c0b8de6949d..e2fcd4b15e4b 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -8,18 +8,18 @@ "directory": "packages/api-server" }, "license": "MIT", - "main": "dist/cliHandlers", + "main": "./dist/createServer.js", + "types": "./dist/createServer.d.ts", "bin": { "rw-api-server-watch": "./dist/watch.js", "rw-log-formatter": "./dist/logFormatter/bin.js", - "rw-server": "./dist/index.js" + "rw-server": "./dist/bin.js" }, "files": [ "dist" ], "scripts": { - "build": "yarn build:js && yarn build:types", - "build:js": "babel src -d dist --extensions \".js,.jsx,.ts,.tsx\"", + "build": "yarn node ./build.mjs && yarn build:types", "build:pack": "yarn pack -o redwoodjs-api-server.tgz", "build:types": "tsc --build --verbose tsconfig.build.json", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build && yarn fix:permissions\"", @@ -29,16 +29,13 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@babel/runtime-corejs3": "7.23.9", "@fastify/url-data": "5.4.0", "@redwoodjs/context": "6.0.7", "@redwoodjs/fastify-web": "6.0.7", "@redwoodjs/project-config": "6.0.7", "@redwoodjs/web-server": "6.0.7", - "ansi-colors": "4.1.3", "chalk": "4.1.2", "chokidar": "3.5.3", - "core-js": "3.35.1", "dotenv-defaults": "5.0.2", "fast-glob": "3.3.2", "fast-json-parse": "1.0.3", @@ -52,8 +49,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@babel/cli": "7.23.9", - "@babel/core": "^7.22.20", + "@redwoodjs/framework-tools": "6.0.7", "@types/aws-lambda": "8.10.126", "@types/lodash": "4.14.201", "@types/qs": "6.9.11", diff --git a/packages/api-server/src/__tests__/withFunctions.test.ts b/packages/api-server/src/__tests__/api.test.ts similarity index 81% rename from packages/api-server/src/__tests__/withFunctions.test.ts rename to packages/api-server/src/__tests__/api.test.ts index 35a2086f430a..bb5863a70361 100644 --- a/packages/api-server/src/__tests__/withFunctions.test.ts +++ b/packages/api-server/src/__tests__/api.test.ts @@ -1,7 +1,7 @@ import path from 'path' import createFastifyInstance from '../fastify' -import withFunctions from '../plugins/withFunctions' +import { redwoodFastifyAPI } from '../plugins/api' // Suppress terminal logging. console.log = jest.fn() @@ -21,14 +21,14 @@ afterAll(() => { // Set up and teardown the fastify instance for each test. let fastifyInstance: ReturnType -let returnedFastifyInstance: Awaited> beforeAll(async () => { fastifyInstance = createFastifyInstance() - returnedFastifyInstance = await withFunctions(fastifyInstance, { - port: 8911, - apiRootPath: '/', + fastifyInstance.register(redwoodFastifyAPI, { + redwood: { + loadUserConfig: true, + }, }) await fastifyInstance.ready() @@ -38,12 +38,7 @@ afterAll(async () => { await fastifyInstance.close() }) -describe('withFunctions', () => { - // Deliberately using `toBe` here to check for referential equality. - it('returns the same fastify instance', async () => { - expect(returnedFastifyInstance).toBe(fastifyInstance) - }) - +describe('redwoodFastifyAPI', () => { it('configures the `@fastify/url-data` and `fastify-raw-body` plugins', async () => { const plugins = fastifyInstance.printPlugins() @@ -51,15 +46,6 @@ describe('withFunctions', () => { expect(plugins.includes('fastify-raw-body')).toEqual(true) }) - it('configures two additional content type parsers, `application/x-www-form-urlencoded` and `multipart/form-data`', async () => { - expect( - fastifyInstance.hasContentTypeParser('application/x-www-form-urlencoded') - ).toEqual(true) - expect(fastifyInstance.hasContentTypeParser('multipart/form-data')).toEqual( - true - ) - }) - it('can be configured by the user', async () => { const res = await fastifyInstance.inject({ method: 'GET', diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index dfb3de9e725e..7b4e98013fe1 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -5,11 +5,11 @@ import build from 'pino-abstract-transport' import { getConfig } from '@redwoodjs/project-config' +import { createServer } from '../createServer' import { - createServer, resolveOptions, DEFAULT_CREATE_SERVER_OPTIONS, -} from '../createServer' +} from '../createServerHelpers' // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined @@ -221,6 +221,7 @@ describe('resolveOptions', () => { logger: DEFAULT_CREATE_SERVER_OPTIONS.logger, }, port: 8911, + host: '::', }) }) @@ -290,25 +291,35 @@ describe('resolveOptions', () => { }) it('parses `--port`', () => { - expect(resolveOptions({}, ['--port', '8930']).port).toEqual(8930) + expect( + resolveOptions({ parseArgs: true }, ['--port', '8930']).port + ).toEqual(8930) }) it("throws if `--port` can't be converted to an integer", () => { expect(() => { - resolveOptions({}, ['--port', 'eight-nine-ten']) + resolveOptions({ parseArgs: true }, ['--port', 'eight-nine-ten']) }).toThrowErrorMatchingInlineSnapshot(`"\`port\` must be an integer"`) }) it('parses `--apiRootPath`', () => { - expect(resolveOptions({}, ['--apiRootPath', 'foo']).apiRootPath).toEqual( - '/foo/' - ) + expect( + resolveOptions({ parseArgs: true }, ['--apiRootPath', 'foo']).apiRootPath + ).toEqual('/foo/') }) it('the `--apiRootPath` flag has precedence', () => { expect( - resolveOptions({ apiRootPath: 'foo' }, ['--apiRootPath', 'bar']) - .apiRootPath + resolveOptions({ parseArgs: true, apiRootPath: 'foo' }, [ + '--apiRootPath', + 'bar', + ]).apiRootPath ).toEqual('/bar/') }) + + it('parses `--host`', () => { + expect( + resolveOptions({ parseArgs: true }, ['--host', '127.0.0.1']).host + ).toEqual('127.0.0.1') + }) }) diff --git a/packages/api-server/src/apiCLIConfig.ts b/packages/api-server/src/apiCLIConfig.ts new file mode 100644 index 000000000000..42d60a29372e --- /dev/null +++ b/packages/api-server/src/apiCLIConfig.ts @@ -0,0 +1,37 @@ +import type { Argv } from 'yargs' + +import type { APIParsedOptions } from './types' + +export const description = 'Start a server for serving the api side' + +export function builder(yargs: Argv) { + yargs.options({ + port: { + description: 'The port to listen at', + type: 'number', + alias: 'p', + }, + host: { + description: + "The host to listen at. Note that you most likely want this to be '0.0.0.0' in production", + type: 'string', + }, + apiRootPath: { + description: 'Root path where your api functions are served', + type: 'string', + alias: ['api-root-path', 'rootPath', 'root-path'], + default: '/', + }, + // This became a no-op in v7 because env files weren't loaded by default + // but removing it would break yargs parsing for older projects, + // so leaving it here so that yargs doesn't throw an error + loadEnvFiles: { + hidden: true, + }, + }) +} + +export async function handler(options: APIParsedOptions) { + const { handler } = await import('./apiCLIConfigHandler.js') + await handler(options) +} diff --git a/packages/api-server/src/apiCLIConfigHandler.ts b/packages/api-server/src/apiCLIConfigHandler.ts new file mode 100644 index 000000000000..8a7051a4b546 --- /dev/null +++ b/packages/api-server/src/apiCLIConfigHandler.ts @@ -0,0 +1,61 @@ +import chalk from 'chalk' + +import { getAPIPort, getAPIHost } from './cliHelpers' +import createFastifyInstance from './fastify' +import { redwoodFastifyAPI } from './plugins/api' +import type { APIParsedOptions } from './types' + +export async function handler(options: APIParsedOptions) { + const timeStart = Date.now() + console.log(chalk.dim.italic('Starting API Server...')) + + const fastify = createFastifyInstance() + fastify.register(redwoodFastifyAPI, { + redwood: { + ...options, + loadUserConfig: true, + }, + }) + + options.host ??= getAPIHost() + options.port ??= getAPIPort() + + await fastify.listen({ + port: options.port, + host: options.host, + listenTextResolver: (address) => { + // In the past, in development, we've prioritized showing a friendlier + // host than the listen-on-all-ipv6-addresses '[::]'. Here we replace it + // with 'localhost' only if 1) we're not in production and 2) it's there. + // In production it's important to be transparent. + if (process.env.NODE_ENV !== 'production') { + address = address.replace(/http:\/\/\[::\]/, 'http://localhost') + } + + return `Server listening at ${address}` + }, + }) + + fastify.log.trace( + { custom: { ...fastify.initialConfig } }, + 'Fastify server configuration' + ) + fastify.log.trace(`Registered plugins\n${fastify.printPlugins()}`) + + console.log(chalk.dim.italic('Took ' + (Date.now() - timeStart) + ' ms')) + + // We have this logic for `apiServerHandler` because this is the only + // handler called by the watch bin (which is called by `yarn rw dev`). + let address = fastify.listeningOrigin + if (process.env.NODE_ENV !== 'production') { + address = address.replace(/http:\/\/\[::\]/, 'http://localhost') + } + + const apiServer = chalk.magenta(`${address}${options.apiRootPath}`) + const graphqlEndpoint = chalk.magenta(`${apiServer}graphql`) + + console.log(`API server listening at ${apiServer}`) + console.log(`GraphQL endpoint at ${graphqlEndpoint}`) + + process?.send?.('ready') +} diff --git a/packages/api-server/src/bin.ts b/packages/api-server/src/bin.ts new file mode 100644 index 000000000000..cb30140aa0cd --- /dev/null +++ b/packages/api-server/src/bin.ts @@ -0,0 +1,63 @@ +import path from 'path' + +import { config } from 'dotenv-defaults' +import { hideBin } from 'yargs/helpers' +import yargs from 'yargs/yargs' + +import { getPaths } from '@redwoodjs/project-config' +import { + description as webDescription, + builder as webBuilder, + handler as webHandler, +} from '@redwoodjs/web-server' + +import { + description as apiDescription, + builder as apiBuilder, +} from './apiCLIConfig' +import { handler as apiHandler } from './apiCLIConfigHandler' +import { + description as bothDescription, + builder as bothBuilder, +} from './bothCLIConfig' +import { handler as bothHandler } from './bothCLIConfigHandler' + +if (!process.env.REDWOOD_ENV_FILES_LOADED) { + config({ + path: path.join(getPaths().base, '.env'), + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' +} + +process.env.NODE_ENV ??= 'production' + +yargs(hideBin(process.argv)) + .scriptName('rw-server') + .strict() + .alias('h', 'help') + .alias('v', 'version') + .command( + '$0', + bothDescription, + // @ts-expect-error The yargs types seem wrong; it's ok for builder to be a function + bothBuilder, + bothHandler + ) + .command( + 'api', + apiDescription, + // @ts-expect-error The yargs types seem wrong; it's ok for builder to be a function + apiBuilder, + apiHandler + ) + .command( + 'web', + webDescription, + // @ts-expect-error The yargs types seem wrong; it's ok for builder to be a function + webBuilder, + webHandler + ) + .parse() diff --git a/packages/api-server/src/bothCLIConfig.ts b/packages/api-server/src/bothCLIConfig.ts new file mode 100644 index 000000000000..2ecb2c4491e8 --- /dev/null +++ b/packages/api-server/src/bothCLIConfig.ts @@ -0,0 +1,43 @@ +import type { Argv } from 'yargs' + +import type { BothParsedOptions } from './types' + +export const description = 'Start a server for serving the api and web sides' + +export function builder(yargs: Argv) { + yargs.options({ + webPort: { + description: 'The port for the web server to listen on', + type: 'number', + alias: ['web-port'], + }, + webHost: { + description: + "The host for the web server to listen on. Note that you most likely want this to be '0.0.0.0' in production", + type: 'string', + alias: ['web-host'], + }, + apiPort: { + description: 'The port for the api server to listen on', + type: 'number', + alias: ['api-port'], + }, + apiHost: { + description: + "The host for the api server to listen on. Note that you most likely want this to be '0.0.0.0' in production", + type: 'string', + alias: ['api-host'], + }, + apiRootPath: { + description: 'Root path where your api functions are served', + type: 'string', + alias: ['api-root-path', 'rootPath', 'root-path'], + default: '/', + }, + }) +} + +export async function handler(options: BothParsedOptions) { + const { handler } = await import('./bothCLIConfigHandler.js') + await handler(options) +} diff --git a/packages/api-server/src/bothCLIConfigHandler.ts b/packages/api-server/src/bothCLIConfigHandler.ts new file mode 100644 index 000000000000..e9b24f1d2ca5 --- /dev/null +++ b/packages/api-server/src/bothCLIConfigHandler.ts @@ -0,0 +1,95 @@ +import chalk from 'chalk' + +import { redwoodFastifyWeb, coerceRootPath } from '@redwoodjs/fastify-web' + +import { getWebHost, getWebPort, getAPIHost, getAPIPort } from './cliHelpers' +import createFastifyInstance from './fastify' +import { redwoodFastifyAPI } from './plugins/api' +import type { BothParsedOptions } from './types' + +export async function handler(options: BothParsedOptions) { + const timeStart = Date.now() + console.log(chalk.dim.italic('Starting API and Web Servers...')) + + options.webHost ??= getWebHost() + options.webPort ??= getWebPort() + options.apiHost ??= getAPIHost() + options.apiPort ??= getAPIPort() + + options.apiRootPath = coerceRootPath(options.apiRootPath ?? '/') + + const apiProxyTarget = [ + 'http://', + options.apiHost.includes(':') ? `[${options.apiHost}]` : options.apiHost, + ':', + options.apiPort, + options.apiRootPath, + ].join('') + + const webFastify = createFastifyInstance() + webFastify.register(redwoodFastifyWeb, { + redwood: { + apiProxyTarget, + }, + }) + + const apiFastify = createFastifyInstance() + apiFastify.register(redwoodFastifyAPI, { + redwood: { + apiRootPath: options.apiRootPath, + loadUserConfig: true, + }, + }) + + await webFastify.listen({ + port: options.webPort, + host: options.webHost, + listenTextResolver: getListenTextResolver('Web'), + }) + + webFastify.log.trace( + { custom: { ...webFastify.initialConfig } }, + 'Fastify server configuration' + ) + webFastify.log.trace(`Registered plugins\n${webFastify.printPlugins()}`) + + await apiFastify.listen({ + port: options.apiPort, + host: options.apiHost, + listenTextResolver: getListenTextResolver('API'), + }) + + apiFastify.log.trace( + { custom: { ...apiFastify.initialConfig } }, + 'Fastify server configuration' + ) + apiFastify.log.trace(`Registered plugins\n${apiFastify.printPlugins()}`) + + console.log(chalk.dim.italic('Took ' + (Date.now() - timeStart) + ' ms')) + + const webServer = chalk.green(webFastify.listeningOrigin) + const apiServer = chalk.magenta( + `${apiFastify.listeningOrigin}${options.apiRootPath}` + ) + const graphqlEndpoint = chalk.magenta(`${apiServer}graphql`) + + console.log(`Web server listening at ${webServer}`) + console.log(`API server listening at ${apiServer}`) + console.log(`GraphQL endpoint at ${graphqlEndpoint}`) + + process?.send?.('ready') +} + +function getListenTextResolver(side: string) { + return (address: string) => { + // In the past, in development, we've prioritized showing a friendlier + // host than the listen-on-all-ipv6-addresses '[::]'. Here we replace it + // with 'localhost' only if 1) we're not in production and 2) it's there. + // In production it's important to be transparent. + if (process.env.NODE_ENV !== 'production') { + address = address.replace(/http:\/\/\[::\]/, 'http://localhost') + } + + return `${side} server listening at ${address}` + } +} diff --git a/packages/api-server/src/cliHandlers.ts b/packages/api-server/src/cliHandlers.ts deleted file mode 100644 index 3ef2117e8ecd..000000000000 --- a/packages/api-server/src/cliHandlers.ts +++ /dev/null @@ -1,112 +0,0 @@ -import c from 'ansi-colors' - -import { redwoodFastifyWeb, coerceRootPath } from '@redwoodjs/fastify-web' -import { getConfig } from '@redwoodjs/project-config' - -import createFastifyInstance from './fastify' -import withFunctions from './plugins/withFunctions' -import { startServer as startFastifyServer } from './server' -import type { BothServerArgs, ApiServerArgs } from './types' - -/* - * This file has defines CLI handlers used by the redwood cli, for `rw serve` - * Also used in index.ts for the api server - */ - -const sendProcessReady = () => { - return process.send && process.send('ready') -} - -export const commonOptions = { - port: { default: getConfig().web?.port || 8910, type: 'number', alias: 'p' }, - socket: { type: 'string' }, -} as const - -export const apiCliOptions = { - port: { default: getConfig().api?.port || 8911, type: 'number', alias: 'p' }, - socket: { type: 'string' }, - apiRootPath: { - alias: ['api-root-path', 'rootPath', 'root-path'], - default: '/', - type: 'string', - desc: 'Root path where your api functions are served', - coerce: coerceRootPath, - }, - loadEnvFiles: { - description: - 'Deprecated; env files are always loaded. This flag is a no-op', - type: 'boolean', - hidden: true, - }, -} as const - -export const apiServerHandler = async (options: ApiServerArgs) => { - const { port, socket, apiRootPath } = options - const tsApiServer = Date.now() - console.log(c.dim.italic('Starting API Server...')) - - let fastify = createFastifyInstance() - - // Import Server Functions. - fastify = await withFunctions(fastify, options) - - fastify = await startFastifyServer({ port, socket, fastify }) - - fastify.ready(() => { - console.log(c.dim.italic('Took ' + (Date.now() - tsApiServer) + ' ms')) - - // In the past, in development, we've prioritized showing a friendlier - // host than the listen-on-all-ipv6-addresses '[::]'. Here we replace it - // with 'localhost' only if 1) we're not in production and 2) it's there. - // In production it's important to be transparent. - // - // We have this logic for `apiServerHandler` because this is the only - // handler called by the watch bin (which is called by `yarn rw dev`). - let address = fastify.listeningOrigin - if (process.env.NODE_ENV !== 'production') { - address = address.replace(/http:\/\/\[::\]/, 'http://localhost') - } - - const apiServer = c.magenta(`${address}${apiRootPath}`) - const graphqlEndpoint = c.magenta(`${apiServer}graphql`) - - console.log(`API server listening at ${apiServer}`) - console.log(`GraphQL endpoint at ${graphqlEndpoint}`) - - sendProcessReady() - }) - process.on('exit', () => { - fastify?.close() - }) -} - -export const bothServerHandler = async (options: BothServerArgs) => { - const { port, socket } = options - const tsServer = Date.now() - console.log(c.dim.italic('Starting API and Web Servers...')) - const apiRootPath = coerceRootPath(getConfig().web.apiUrl) - - let fastify = createFastifyInstance() - - await fastify.register(redwoodFastifyWeb) - fastify = await withFunctions(fastify, { ...options, apiRootPath }) - - fastify = await startFastifyServer({ port, socket, fastify }) - - fastify.ready(() => { - console.log(c.dim.italic('Took ' + (Date.now() - tsServer) + ' ms')) - - const webServer = c.green(fastify.listeningOrigin) - const apiServer = c.magenta(`${fastify.listeningOrigin}${apiRootPath}`) - const graphqlEndpoint = c.magenta(`${apiServer}graphql`) - - console.log(`Web server listening at ${webServer}`) - console.log(`API server listening at ${apiServer}`) - console.log(`GraphQL endpoint at ${graphqlEndpoint}`) - - sendProcessReady() - }) -} - -// Temporarily here till we refactor server code -export { createServer } from './createServer' diff --git a/packages/api-server/src/cliHelpers.ts b/packages/api-server/src/cliHelpers.ts new file mode 100644 index 000000000000..6e2c7c7a8e6c --- /dev/null +++ b/packages/api-server/src/cliHelpers.ts @@ -0,0 +1,27 @@ +import { getConfig } from '@redwoodjs/project-config' + +export function getAPIHost() { + let host = process.env.REDWOOD_API_HOST + host ??= getConfig().api.host + host ??= process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' + return host +} + +export function getAPIPort() { + return process.env.REDWOOD_API_PORT + ? parseInt(process.env.REDWOOD_API_PORT) + : getConfig().api.port +} + +export function getWebHost() { + let host = process.env.REDWOOD_WEB_HOST + host ??= getConfig().web.host + host ??= process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' + return host +} + +export function getWebPort() { + return process.env.REDWOOD_WEB_PORT + ? parseInt(process.env.REDWOOD_WEB_PORT) + : getConfig().web.port +} diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 798cb351a751..6f990686ed89 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -1,27 +1,19 @@ import fs from 'fs' import path from 'path' -import { parseArgs } from 'util' -import fastifyUrlData from '@fastify/url-data' -import c from 'ansi-colors' +import chalk from 'chalk' import { config } from 'dotenv-defaults' import fg from 'fast-glob' import fastify from 'fastify' -import type { - FastifyListenOptions, - FastifyServerOptions, - FastifyInstance, -} from 'fastify' -import fastifyRawBody from 'fastify-raw-body' +import type { FastifyListenOptions, FastifyInstance } from 'fastify' import type { GlobalContext } from '@redwoodjs/context' import { getAsyncStoreInstance } from '@redwoodjs/context/dist/store' import { getConfig, getPaths } from '@redwoodjs/project-config' -import { - loadFunctionsFromDist, - lambdaRequestHandler, -} from './plugins/lambdaLoader' +import { resolveOptions } from './createServerHelpers' +import type { CreateServerOptions } from './createServerHelpers' +import { redwoodFastifyAPI } from './plugins/api' type StartOptions = Omit @@ -47,24 +39,6 @@ if (process.env.RWJS_CWD && !process.env.REDWOOD_ENV_FILES_LOADED) { process.env.REDWOOD_ENV_FILES_LOADED = 'true' } -export interface CreateServerOptions { - /** - * The prefix for all routes. Defaults to `/`. - */ - apiRootPath?: string - - /** - * Logger instance or options. - */ - logger?: FastifyServerOptions['logger'] - - /** - * Options for the fastify server instance. - * Omitting logger here because we move it up. - */ - fastifyServerOptions?: Omit -} - /** * Creates a server for api functions: * @@ -90,7 +64,8 @@ export interface CreateServerOptions { * ``` */ export async function createServer(options: CreateServerOptions = {}) { - const { apiRootPath, fastifyServerOptions, port } = resolveOptions(options) + const { apiRootPath, fastifyServerOptions, port, host } = + resolveOptions(options) // Warn about `api/server.config.js` const serverConfigPath = path.join( @@ -100,7 +75,7 @@ export async function createServer(options: CreateServerOptions = {}) { if (fs.existsSync(serverConfigPath)) { console.warn( - c.yellow( + chalk.yellow( [ '', `Ignoring \`config\` and \`configureServer\` in api/server.config.js.`, @@ -133,7 +108,14 @@ export async function createServer(options: CreateServerOptions = {}) { getAsyncStoreInstance().run(new Map(), done) }) - await server.register(redwoodFastifyFunctions, { redwood: { apiRootPath } }) + await server.register(redwoodFastifyAPI, { + redwood: { + apiRootPath, + fastGlobOptions: { + ignore: ['**/dist/functions/graphql.js'], + }, + }, + }) // If we can find `api/dist/functions/graphql.js`, register the GraphQL plugin const [graphqlFunctionPath] = await fg('dist/functions/graphql.{ts,js}', { @@ -162,7 +144,7 @@ export async function createServer(options: CreateServerOptions = {}) { server.addHook('onListen', (done) => { console.log( - `Server listening at ${c.magenta( + `Server listening at ${chalk.magenta( `${server.listeningOrigin}${apiRootPath}` )}` ) @@ -181,153 +163,9 @@ export async function createServer(options: CreateServerOptions = {}) { return server.listen({ ...options, port, - host: process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::', + host, }) } return server } - -type ResolvedOptions = Required< - Omit & { - fastifyServerOptions: FastifyServerOptions - port: number - } -> - -export function resolveOptions( - options: CreateServerOptions = {}, - args?: string[] -) { - options.logger ??= DEFAULT_CREATE_SERVER_OPTIONS.logger - - let defaultPort: number | undefined - - if (process.env.REDWOOD_API_PORT === undefined) { - defaultPort = getConfig().api.port - } else { - defaultPort = parseInt(process.env.REDWOOD_API_PORT) - } - - // Set defaults. - const resolvedOptions: ResolvedOptions = { - apiRootPath: - options.apiRootPath ?? DEFAULT_CREATE_SERVER_OPTIONS.apiRootPath, - - fastifyServerOptions: options.fastifyServerOptions ?? { - requestTimeout: - DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout, - logger: options.logger ?? DEFAULT_CREATE_SERVER_OPTIONS.logger, - }, - - port: defaultPort, - } - - // Merge fastifyServerOptions. - resolvedOptions.fastifyServerOptions.requestTimeout ??= - DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout - resolvedOptions.fastifyServerOptions.logger = options.logger - - const { values } = parseArgs({ - options: { - apiRootPath: { - type: 'string', - }, - port: { - type: 'string', - short: 'p', - }, - }, - - // When running Jest, `process.argv` is... - // - // ```js - // [ - // 'path/to/node' - // 'path/to/jest.js' - // 'file/under/test.js' - // ] - // ``` - // - // `parseArgs` strips the first two, leaving the third, which is interpreted as a positional argument. - // Which fails our options. We'd still like to be strict, but can't do it for tests. - strict: process.env.NODE_ENV === 'test' ? false : true, - ...(args && { args }), - }) - - if (values.apiRootPath && typeof values.apiRootPath !== 'string') { - throw new Error('`apiRootPath` must be a string') - } - - if (values.apiRootPath) { - resolvedOptions.apiRootPath = values.apiRootPath - } - - // Format `apiRootPath` - if (resolvedOptions.apiRootPath.charAt(0) !== '/') { - resolvedOptions.apiRootPath = `/${resolvedOptions.apiRootPath}` - } - - if ( - resolvedOptions.apiRootPath.charAt( - resolvedOptions.apiRootPath.length - 1 - ) !== '/' - ) { - resolvedOptions.apiRootPath = `${resolvedOptions.apiRootPath}/` - } - - if (values.port) { - resolvedOptions.port = +values.port - - if (isNaN(resolvedOptions.port)) { - throw new Error('`port` must be an integer') - } - } - - return resolvedOptions -} - -type DefaultCreateServerOptions = Required< - Omit & { - fastifyServerOptions: Pick - } -> - -export const DEFAULT_CREATE_SERVER_OPTIONS: DefaultCreateServerOptions = { - apiRootPath: '/', - logger: { - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, - fastifyServerOptions: { - requestTimeout: 15_000, - }, -} - -export interface RedwoodFastifyAPIOptions { - redwood: { - apiRootPath: string - } -} - -export async function redwoodFastifyFunctions( - fastify: FastifyInstance, - opts: RedwoodFastifyAPIOptions -) { - fastify.register(fastifyUrlData) - await fastify.register(fastifyRawBody) - - fastify.addContentTypeParser( - ['application/x-www-form-urlencoded', 'multipart/form-data'], - { parseAs: 'string' }, - fastify.defaultTextParser - ) - - fastify.all(`${opts.redwood.apiRootPath}:routeName`, lambdaRequestHandler) - fastify.all(`${opts.redwood.apiRootPath}:routeName/*`, lambdaRequestHandler) - - await loadFunctionsFromDist({ - fastGlobOptions: { - ignore: ['**/dist/functions/graphql.js'], - }, - }) -} diff --git a/packages/api-server/src/createServerHelpers.ts b/packages/api-server/src/createServerHelpers.ts new file mode 100644 index 000000000000..1ec62083534d --- /dev/null +++ b/packages/api-server/src/createServerHelpers.ts @@ -0,0 +1,129 @@ +import { parseArgs } from 'util' + +import type { FastifyServerOptions } from 'fastify' + +import { coerceRootPath } from '@redwoodjs/fastify-web/dist/helpers' + +import { getAPIHost, getAPIPort } from './cliHelpers' + +export interface CreateServerOptions { + /** + * The prefix for all routes. Defaults to `/`. + */ + apiRootPath?: string + + /** + * Logger instance or options. + */ + logger?: FastifyServerOptions['logger'] + + /** + * Options for the fastify server instance. + * Omitting logger here because we move it up. + */ + fastifyServerOptions?: Omit + + /** + * Whether to parse args or not. Defaults to `true`. + */ + parseArgs?: boolean +} + +type DefaultCreateServerOptions = Required< + Omit & { + fastifyServerOptions: Pick + } +> + +export const DEFAULT_CREATE_SERVER_OPTIONS: DefaultCreateServerOptions = { + apiRootPath: '/', + logger: { + level: + process.env.LOG_LEVEL ?? + (process.env.NODE_ENV === 'development' ? 'debug' : 'warn'), + }, + fastifyServerOptions: { + requestTimeout: 15_000, + }, + parseArgs: true, +} + +type ResolvedOptions = Required< + Omit & { + fastifyServerOptions: FastifyServerOptions + port: number + host: string + } +> + +export function resolveOptions( + options: CreateServerOptions = {}, + args?: string[] +) { + options.logger ??= DEFAULT_CREATE_SERVER_OPTIONS.logger + + // Set defaults. + const resolvedOptions: ResolvedOptions = { + apiRootPath: + options.apiRootPath ?? DEFAULT_CREATE_SERVER_OPTIONS.apiRootPath, + + fastifyServerOptions: options.fastifyServerOptions ?? { + requestTimeout: + DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout, + logger: options.logger ?? DEFAULT_CREATE_SERVER_OPTIONS.logger, + }, + + host: getAPIHost(), + port: getAPIPort(), + } + + // Merge fastifyServerOptions. + resolvedOptions.fastifyServerOptions.requestTimeout ??= + DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout + resolvedOptions.fastifyServerOptions.logger = options.logger + + if (options.parseArgs) { + const { values } = parseArgs({ + options: { + host: { + type: 'string', + short: 'p', + }, + port: { + type: 'string', + short: 'p', + }, + apiRootPath: { + type: 'string', + }, + }, + ...(args && { args }), + }) + + if (values.host && typeof values.host !== 'string') { + throw new Error('`host` must be a string') + } + if (values.host) { + resolvedOptions.host = values.host + } + + if (values.port) { + resolvedOptions.port = +values.port + + if (isNaN(resolvedOptions.port)) { + throw new Error('`port` must be an integer') + } + } + + if (values.apiRootPath && typeof values.apiRootPath !== 'string') { + throw new Error('`apiRootPath` must be a string') + } + if (values.apiRootPath) { + resolvedOptions.apiRootPath = values.apiRootPath + } + } + + resolvedOptions.apiRootPath = coerceRootPath(resolvedOptions.apiRootPath) + + return resolvedOptions +} diff --git a/packages/api-server/src/index.ts b/packages/api-server/src/index.ts deleted file mode 100644 index db0df9ac03fb..000000000000 --- a/packages/api-server/src/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env node - -import path from 'path' - -import { config } from 'dotenv-defaults' -import { hideBin } from 'yargs/helpers' -import yargs from 'yargs/yargs' - -import { getPaths } from '@redwoodjs/project-config' -import * as webServerCLIConfig from '@redwoodjs/web-server' - -import { - apiCliOptions, - commonOptions, - apiServerHandler, - bothServerHandler, -} from './cliHandlers' - -export * from './types' - -if (!process.env.REDWOOD_ENV_FILES_LOADED) { - config({ - path: path.join(getPaths().base, '.env'), - defaults: path.join(getPaths().base, '.env.defaults'), - multiline: true, - }) - - process.env.REDWOOD_ENV_FILES_LOADED = 'true' -} - -if (require.main === module) { - yargs(hideBin(process.argv)) - .scriptName('rw-server') - .usage('usage: $0 ') - .strict() - - .command( - '$0', - 'Run both api and web servers', - // @ts-expect-error just passing yargs though - (yargs) => { - yargs.options(commonOptions) - }, - bothServerHandler - ) - .command( - 'api', - 'Start server for serving only the api', - // @ts-expect-error just passing yargs though - (yargs) => { - yargs.options(apiCliOptions) - }, - apiServerHandler - ) - .command( - 'web', - webServerCLIConfig.description, - // @ts-expect-error just passing yargs though - webServerCLIConfig.builder, - webServerCLIConfig.handler - ) - .parse() -} diff --git a/packages/api-server/src/logFormatter/bin.ts b/packages/api-server/src/logFormatter/bin.ts index d583ebff5de3..e3695b27f706 100644 --- a/packages/api-server/src/logFormatter/bin.ts +++ b/packages/api-server/src/logFormatter/bin.ts @@ -1,4 +1,3 @@ -#! /usr/bin/env node import split from 'split2' import { LogFormatter } from './index' diff --git a/packages/api-server/src/plugins/api.ts b/packages/api-server/src/plugins/api.ts new file mode 100644 index 000000000000..cfe1ca0317c0 --- /dev/null +++ b/packages/api-server/src/plugins/api.ts @@ -0,0 +1,62 @@ +import fastifyUrlData from '@fastify/url-data' +import type { Options as FastGlobOptions } from 'fast-glob' +import type { FastifyInstance } from 'fastify' +import fastifyRawBody from 'fastify-raw-body' + +import type { GlobalContext } from '@redwoodjs/context' +import { getAsyncStoreInstance } from '@redwoodjs/context/dist/store' +import { coerceRootPath } from '@redwoodjs/fastify-web/dist/helpers' + +import { loadFastifyConfig } from '../fastify' + +import { lambdaRequestHandler, loadFunctionsFromDist } from './lambdaLoader' + +export interface RedwoodFastifyAPIOptions { + redwood: { + apiRootPath?: string + fastGlobOptions?: FastGlobOptions + loadUserConfig?: boolean + } +} + +export async function redwoodFastifyAPI( + fastify: FastifyInstance, + opts: RedwoodFastifyAPIOptions +) { + const redwoodOptions = opts.redwood ?? {} + redwoodOptions.apiRootPath ??= '/' + redwoodOptions.apiRootPath = coerceRootPath(redwoodOptions.apiRootPath) + redwoodOptions.fastGlobOptions ??= {} + redwoodOptions.loadUserConfig ??= false + + fastify.register(fastifyUrlData) + // Starting in Fastify v4, we have to await the fastifyRawBody plugin's registration + // to ensure it's ready + await fastify.register(fastifyRawBody) + + fastify.addHook('onRequest', (_req, _reply, done) => { + getAsyncStoreInstance().run(new Map(), done) + }) + + fastify.addContentTypeParser( + ['application/x-www-form-urlencoded', 'multipart/form-data'], + { parseAs: 'string' }, + fastify.defaultTextParser + ) + + if (redwoodOptions.loadUserConfig) { + const { configureFastify } = loadFastifyConfig() + if (configureFastify) { + await configureFastify(fastify, { + side: 'api', + apiRootPath: redwoodOptions.apiRootPath, + }) + } + } + + fastify.all(`${redwoodOptions.apiRootPath}:routeName`, lambdaRequestHandler) + fastify.all(`${redwoodOptions.apiRootPath}:routeName/*`, lambdaRequestHandler) + await loadFunctionsFromDist({ + fastGlobOptions: redwoodOptions.fastGlobOptions, + }) +} diff --git a/packages/api-server/src/plugins/graphql.ts b/packages/api-server/src/plugins/graphql.ts index d2912d86cbdb..bfc0b37e0d09 100644 --- a/packages/api-server/src/plugins/graphql.ts +++ b/packages/api-server/src/plugins/graphql.ts @@ -9,56 +9,53 @@ import type { import fastifyRawBody from 'fastify-raw-body' import type { Plugin } from 'graphql-yoga' +import type { GlobalContext } from '@redwoodjs/context' +import { getAsyncStoreInstance } from '@redwoodjs/context/dist/store' +import { coerceRootPath } from '@redwoodjs/fastify-web/dist/helpers' import { createGraphQLYoga } from '@redwoodjs/graphql-server' import type { GraphQLYogaOptions } from '@redwoodjs/graphql-server' import { getPaths } from '@redwoodjs/project-config' -/** - * Transform a Fastify Request to an event compatible with the RedwoodGraphQLContext's event - * which is based on the AWS Lambda event - */ import { lambdaEventForFastifyRequest } from '../requestHandlers/awsLambdaFastify' export interface RedwoodFastifyGraphQLOptions { redwood: { - apiRootPath: string + apiRootPath?: string graphql?: GraphQLYogaOptions } } -/** - * Redwood GraphQL Server Fastify plugin based on GraphQL Yoga - * - * @param {FastifyInstance} fastify Encapsulated Fastify Instance - * @param {GraphQLYogaOptions} options GraphQLYogaOptions options used to configure the GraphQL Yoga Server - */ export async function redwoodFastifyGraphQLServer( fastify: FastifyInstance, options: RedwoodFastifyGraphQLOptions ) { - // These two plugins are needed to transform a Fastify Request to a Lambda event - // which is used by the RedwoodGraphQLContext and mimics the behavior of the - // api-server withFunction plugin - if (!fastify.hasPlugin('@fastify/url-data')) { - await fastify.register(fastifyUrlData) - } + const redwoodOptions = options.redwood ?? {} + redwoodOptions.apiRootPath ??= '/' + redwoodOptions.apiRootPath = coerceRootPath(redwoodOptions.apiRootPath) + + fastify.register(fastifyUrlData) + // Starting in Fastify v4, we have to await the fastifyRawBody plugin's registration + // to ensure it's ready await fastify.register(fastifyRawBody) - try { - const method = ['GET', 'POST', 'OPTIONS'] as HTTPMethods[] + const method = ['GET', 'POST', 'OPTIONS'] as HTTPMethods[] + + fastify.addHook('onRequest', (_req, _reply, done) => { + getAsyncStoreInstance().run(new Map(), done) + }) - // Load the graphql options from the graphql function if none are explicitly provided - if (!options.redwood.graphql) { + try { + // Load the graphql options from the user's graphql function if none are explicitly provided + if (!redwoodOptions.graphql) { const [graphqlFunctionPath] = await fg('dist/functions/graphql.{ts,js}', { cwd: getPaths().api.base, absolute: true, }) - const { __rw_graphqlOptions } = await import(graphqlFunctionPath) - options.redwood.graphql = __rw_graphqlOptions as GraphQLYogaOptions + redwoodOptions.graphql = __rw_graphqlOptions as GraphQLYogaOptions } - const graphqlOptions = options.redwood.graphql + const graphqlOptions = redwoodOptions.graphql // Here we can add any plugins that we want to use with GraphQL Yoga Server // that we do not want to add the the GraphQLHandler in the graphql-server @@ -69,7 +66,7 @@ export async function redwoodFastifyGraphQLServer( const { useRedwoodRealtime } = await import('@redwoodjs/realtime') const originalExtraPlugins: Array> = - graphqlOptions.extraPlugins || [] + graphqlOptions.extraPlugins ?? [] originalExtraPlugins.push(useRedwoodRealtime(graphqlOptions.realtime)) graphqlOptions.extraPlugins = originalExtraPlugins @@ -105,11 +102,9 @@ export async function redwoodFastifyGraphQLServer( const routePaths = ['', '/health', '/readiness', '/stream'] for (const routePath of routePaths) { fastify.route({ - url: `${options.redwood.apiRootPath}${formatGraphQLEndpoint( - yoga.graphqlEndpoint - )}${routePath}`, + url: `${redwoodOptions.apiRootPath}${yoga.graphqlEndpoint}${routePath}`, method, - handler: async (req, reply) => await graphQLYogaHandler(req, reply), + handler: (req, reply) => graphQLYogaHandler(req, reply), }) } @@ -128,7 +123,3 @@ export async function redwoodFastifyGraphQLServer( console.log(e) } } - -function formatGraphQLEndpoint(endpoint: string) { - return endpoint.replace(/^\//, '').replace(/\/$/, '') -} diff --git a/packages/api-server/src/plugins/lambdaLoader.ts b/packages/api-server/src/plugins/lambdaLoader.ts index c002ee601e62..03d8e0342d8d 100644 --- a/packages/api-server/src/plugins/lambdaLoader.ts +++ b/packages/api-server/src/plugins/lambdaLoader.ts @@ -1,7 +1,7 @@ import path from 'path' -import c from 'ansi-colors' import type { Handler } from 'aws-lambda' +import chalk from 'chalk' import fg from 'fast-glob' import type { Options as FastGlobOptions } from 'fast-glob' import type { @@ -22,7 +22,7 @@ export const LAMBDA_FUNCTIONS: Lambdas = {} export const setLambdaFunctions = async (foundFunctions: string[]) => { const tsImport = Date.now() - console.log(c.dim.italic('Importing Server Functions... ')) + console.log(chalk.dim.italic('Importing Server Functions... ')) const imports = foundFunctions.map((fnPath) => { return new Promise((resolve) => { @@ -41,8 +41,8 @@ export const setLambdaFunctions = async (foundFunctions: string[]) => { } // TODO: Use terminal link. console.log( - c.magenta('/' + routeName), - c.dim.italic(Date.now() - ts + ' ms') + chalk.magenta('/' + routeName), + chalk.dim.italic(Date.now() - ts + ' ms') ) return resolve(true) }) @@ -50,7 +50,9 @@ export const setLambdaFunctions = async (foundFunctions: string[]) => { Promise.all(imports).then((_results) => { console.log( - c.dim.italic('...Done importing in ' + (Date.now() - tsImport) + ' ms') + chalk.dim.italic( + '...Done importing in ' + (Date.now() - tsImport) + ' ms' + ) ) }) } diff --git a/packages/api-server/src/plugins/withFunctions.ts b/packages/api-server/src/plugins/withFunctions.ts deleted file mode 100644 index dd0a2006bb79..000000000000 --- a/packages/api-server/src/plugins/withFunctions.ts +++ /dev/null @@ -1,44 +0,0 @@ -import fastifyUrlData from '@fastify/url-data' -import type { FastifyInstance } from 'fastify' -import fastifyRawBody from 'fastify-raw-body' - -import { loadFastifyConfig } from '../fastify' -import type { ApiServerArgs } from '../types' - -import { lambdaRequestHandler, loadFunctionsFromDist } from './lambdaLoader' - -const withFunctions = async ( - fastify: FastifyInstance, - options: Omit -) => { - const { apiRootPath } = options - // Add extra fastify plugins - if (!fastify.hasPlugin('@fastify/url-data')) { - await fastify.register(fastifyUrlData) - } - - // Fastify v4 must await the fastifyRawBody plugin - // registration to ensure the plugin is ready - await fastify.register(fastifyRawBody) - - fastify.addContentTypeParser( - ['application/x-www-form-urlencoded', 'multipart/form-data'], - { parseAs: 'string' }, - fastify.defaultTextParser - ) - - const { configureFastify } = loadFastifyConfig() - - if (configureFastify) { - await configureFastify(fastify, { side: 'api', ...options }) - } - - fastify.all(`${apiRootPath}:routeName`, lambdaRequestHandler) - fastify.all(`${apiRootPath}:routeName/*`, lambdaRequestHandler) - - await loadFunctionsFromDist() - - return fastify -} - -export default withFunctions diff --git a/packages/api-server/src/server.ts b/packages/api-server/src/server.ts deleted file mode 100644 index 1d6a3b540572..000000000000 --- a/packages/api-server/src/server.ts +++ /dev/null @@ -1,42 +0,0 @@ -import type { FastifyInstance } from 'fastify' - -export interface HttpServerParams { - port: number - socket?: string - fastify: FastifyInstance -} - -export const startServer = async ({ - port = 8911, - socket, - fastify, -}: HttpServerParams) => { - const host = process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' - const serverPort = socket ? parseInt(socket) : port - - await fastify.listen({ - port: serverPort, - host, - listenTextResolver: (address) => { - // In the past, in development, we've prioritized showing a friendlier - // host than the listen-on-all-ipv6-addresses '[::]'. Here we replace it - // with 'localhost' only if 1) we're not in production and 2) it's there. - // In production it's important to be transparent. - if (process.env.NODE_ENV !== 'production') { - address = address.replace(/http:\/\/\[::\]/, 'http://localhost') - } - - return `Server listening at ${address}` - }, - }) - - fastify.ready(() => { - fastify.log.trace( - { custom: { ...fastify.initialConfig } }, - 'Fastify server configuration' - ) - fastify.log.trace(`Registered plugins \n${fastify.printPlugins()}`) - }) - - return fastify -} diff --git a/packages/api-server/src/types.ts b/packages/api-server/src/types.ts index fc049055a904..55b350ab59a4 100644 --- a/packages/api-server/src/types.ts +++ b/packages/api-server/src/types.ts @@ -1,25 +1,28 @@ import type { FastifyInstance } from 'fastify' -import type { HttpServerParams } from './server' - -export interface WebServerArgs extends Omit { - apiHost?: string -} - -export interface ApiServerArgs extends Omit { - apiRootPath: string // either user supplied or '/' - loadEnvFiles: boolean -} - -export type BothServerArgs = Omit +import type { RedwoodFastifyAPIOptions } from './plugins/api' // Types for using server.config.js export type FastifySideConfigFnOptions = { - side: SupportedSides -} & (WebServerArgs | BothServerArgs | ApiServerArgs) + side: 'api' | 'web' +} -export type SupportedSides = 'api' | 'web' export type FastifySideConfigFn = ( fastify: FastifyInstance, - options?: FastifySideConfigFnOptions + options?: FastifySideConfigFnOptions & + Pick ) => Promise | void + +export type APIParsedOptions = { + port?: number + host?: string + loadEnvFiles?: boolean +} & Omit + +export type BothParsedOptions = { + webPort?: number + webHost?: string + apiPort?: number + apiHost?: string + apiRootPath?: string +} & Omit diff --git a/packages/api-server/src/watch.ts b/packages/api-server/src/watch.ts index aee598579d97..d1d52046b346 100644 --- a/packages/api-server/src/watch.ts +++ b/packages/api-server/src/watch.ts @@ -1,11 +1,9 @@ -#!/usr/bin/env node - import type { ChildProcess } from 'child_process' import { fork } from 'child_process' import fs from 'fs' import path from 'path' -import c from 'ansi-colors' +import chalk from 'chalk' import chokidar from 'chokidar' import dotenv from 'dotenv' import { debounce } from 'lodash' @@ -25,34 +23,32 @@ import { resolveFile, } from '@redwoodjs/project-config' -const argv = yargs(hideBin(process.argv)) - .option('debug-port', { - alias: 'dp', - description: 'Debugging port', - type: 'number', - }) - .option('port', { - alias: 'p', - description: 'Port', - type: 'number', - }) - .help() - .alias('help', 'h') - .parseSync() - const rwjsPaths = getPaths() if (!process.env.REDWOOD_ENV_FILES_LOADED) { dotenv.config({ - path: path.join(getPaths().base, '.env'), + path: path.join(rwjsPaths.base, '.env'), // @ts-expect-error The types for dotenv-defaults are using an outdated version of dotenv - defaults: path.join(getPaths().base, '.env.defaults'), + defaults: path.join(rwjsPaths.base, '.env.defaults'), multiline: true, }) process.env.REDWOOD_ENV_FILES_LOADED = 'true' } +const argv = yargs(hideBin(process.argv)) + .option('debugPort', { + description: 'Port on which to expose API server debugger', + type: 'number', + alias: ['debug-port', 'dp'], + }) + .option('port', { + description: 'The port to listen at', + type: 'number', + alias: 'p', + }) + .parseSync() + let httpServerProcess: ChildProcess const killApiServer = () => { @@ -66,9 +62,11 @@ const validate = async () => { return true } catch (e: any) { killApiServer() - console.log(c.redBright(`[GQL Server Error] - Schema validation failed`)) - console.error(c.red(e?.message)) - console.log(c.redBright('-'.repeat(40))) + console.error( + chalk.redBright(`[GQL Server Error] - Schema validation failed`) + ) + console.error(chalk.red(e?.message)) + console.error(chalk.redBright('-'.repeat(40))) debouncedBuild.cancel() debouncedRebuild.cancel() @@ -85,7 +83,7 @@ const buildAndRestart = async ({ killApiServer() const buildTs = Date.now() - console.log(c.dim.italic('Building...')) + console.log(chalk.dim.italic('Building...')) if (clean) { await cleanApiBuild() @@ -96,7 +94,7 @@ const buildAndRestart = async ({ } else { await buildApi() } - console.log(c.dim.italic('Took ' + (Date.now() - buildTs) + ' ms')) + console.log(chalk.dim.italic('Took ' + (Date.now() - buildTs) + ' ms')) const forkOpts = { execArgv: process.execArgv, @@ -106,11 +104,11 @@ const buildAndRestart = async ({ if (getConfig().experimental.opentelemetry.enabled) { // We expect the OpenTelemetry SDK setup file to be in a specific location const opentelemetrySDKScriptPath = path.join( - getPaths().api.dist, + rwjsPaths.api.dist, 'opentelemetry.js' ) const opentelemetrySDKScriptPathRelative = path.relative( - getPaths().base, + rwjsPaths.base, opentelemetrySDKScriptPath ) console.log( @@ -145,7 +143,7 @@ const buildAndRestart = async ({ ) } else { httpServerProcess = fork( - path.join(__dirname, 'index.js'), + path.join(__dirname, 'bin.js'), ['api', '--port', port.toString()], forkOpts ) @@ -214,9 +212,10 @@ chokidar await validate() }) .on('all', async (eventName, filePath) => { - // On sufficiently large projects (500+ files, or >= 2000 ms build times) on older machines, esbuild writing to the api directory - // makes chokidar emit an `addDir` event. This starts an infinite loop where the api starts building itself as soon as it's finished. - // This could probably be fixed with some sort of build caching. + // On sufficiently large projects (500+ files, or >= 2000 ms build times) on older machines, + // esbuild writing to the api directory makes chokidar emit an `addDir` event. + // This starts an infinite loop where the api starts building itself as soon as it's finished. + // This could probably be fixed with some sort of build caching if (eventName === 'addDir' && filePath === rwjsPaths.api.base) { return } @@ -235,7 +234,7 @@ chokidar } console.log( - c.dim(`[${eventName}] ${filePath.replace(rwjsPaths.api.base, '')}`) + chalk.dim(`[${eventName}] ${filePath.replace(rwjsPaths.api.base, '')}`) ) if (eventName === 'add' || eventName === 'unlink') { diff --git a/packages/cli/package.json b/packages/cli/package.json index e5b1e9f274fb..383b1c3f9043 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -40,7 +40,6 @@ "@prisma/internals": "5.9.0", "@redwoodjs/api-server": "6.0.7", "@redwoodjs/cli-helpers": "6.0.7", - "@redwoodjs/fastify": "6.0.7", "@redwoodjs/fastify-web": "6.0.7", "@redwoodjs/internal": "6.0.7", "@redwoodjs/prerender": "6.0.7", diff --git a/packages/cli/src/commands/__tests__/serve.test.js b/packages/cli/src/commands/__tests__/serve.test.js index 54bee6089e47..54f8c24c20d9 100644 --- a/packages/cli/src/commands/__tests__/serve.test.js +++ b/packages/cli/src/commands/__tests__/serve.test.js @@ -1,3 +1,11 @@ +import { vi, describe, afterEach, it, expect } from 'vitest' +import yargs from 'yargs/yargs' + +import * as apiServerCLIConfig from '@redwoodjs/api-server/dist/apiCLIConfig' +import * as bothServerCLIConfig from '@redwoodjs/api-server/dist/bothCLIConfig' + +import { builder } from '../serve' + globalThis.__dirname = __dirname // We mock these to skip the check for web/dist and api/dist @@ -41,12 +49,20 @@ vi.mock('fs-extra', async (importOriginal) => { } }) -vi.mock('../serveHandler', async (importOriginal) => { - const originalHandler = await importOriginal() +vi.mock('@redwoodjs/api-server/dist/apiCLIConfig', async (importOriginal) => { + const originalAPICLIConfig = await importOriginal() + return { + description: originalAPICLIConfig.desciption, + builder: originalAPICLIConfig.builder, + handler: vi.fn(), + } +}) +vi.mock('@redwoodjs/api-server/dist/bothCLIConfig', async (importOriginal) => { + const originalBothCLIConfig = await importOriginal() return { - ...originalHandler, - apiServerHandler: vi.fn(), - bothServerHandler: vi.fn(), + description: originalBothCLIConfig.desciption, + builder: originalBothCLIConfig.builder, + handler: vi.fn(), } }) vi.mock('execa', () => ({ @@ -56,12 +72,6 @@ vi.mock('execa', () => ({ })), })) -import { vi, describe, afterEach, it, expect } from 'vitest' -import yargs from 'yargs/yargs' - -import { builder } from '../serve' -import { apiServerHandler, bothServerHandler } from '../serveHandler' - describe('yarn rw serve', () => { afterEach(() => { vi.clearAllMocks() @@ -72,7 +82,7 @@ describe('yarn rw serve', () => { await parser.parse('serve api --port 5555 --apiRootPath funkyFunctions') - expect(apiServerHandler).toHaveBeenCalledWith( + expect(apiServerCLIConfig.handler).toHaveBeenCalledWith( expect.objectContaining({ port: 5555, apiRootPath: expect.stringMatching(/^\/?funkyFunctions\/?$/), @@ -87,7 +97,7 @@ describe('yarn rw serve', () => { 'serve api --port 5555 --rootPath funkyFunctions/nested/' ) - expect(apiServerHandler).toHaveBeenCalledWith( + expect(apiServerCLIConfig.handler).toHaveBeenCalledWith( expect.objectContaining({ port: 5555, rootPath: expect.stringMatching(/^\/?funkyFunctions\/nested\/$/), @@ -100,7 +110,7 @@ describe('yarn rw serve', () => { await parser.parse('serve --port 9898 --socket abc') - expect(bothServerHandler).toHaveBeenCalledWith( + expect(bothServerCLIConfig.handler).toHaveBeenCalledWith( expect.objectContaining({ port: 9898, socket: 'abc', diff --git a/packages/cli/src/commands/deploy/flightcontrol.js b/packages/cli/src/commands/deploy/flightcontrol.js index c5645105a3aa..6ffa41e95fcd 100644 --- a/packages/cli/src/commands/deploy/flightcontrol.js +++ b/packages/cli/src/commands/deploy/flightcontrol.js @@ -3,11 +3,11 @@ import path from 'path' import execa from 'execa' import terminalLink from 'terminal-link' +import { handler as apiServerHandler } from '@redwoodjs/api-server/dist/apiCLIConfigHandler' import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' import { getConfig } from '@redwoodjs/project-config' import { getPaths } from '../../lib' -import { apiServerHandler } from '../serveHandler' export const command = 'flightcontrol ' export const alias = 'fc' @@ -65,7 +65,7 @@ export const handler = async ({ side, serve, prisma, dm: dataMigrate }) => { async function runApiCommands() { if (serve) { console.log('\nStarting api...') - await apiServerHandler({ + await apiServerHandler.handler({ port: getConfig().api?.port || 8911, apiRootPath: '/', }) diff --git a/packages/cli/src/commands/deploy/render.js b/packages/cli/src/commands/deploy/render.js index 5e0ee249fadb..01eceb01535b 100644 --- a/packages/cli/src/commands/deploy/render.js +++ b/packages/cli/src/commands/deploy/render.js @@ -3,11 +3,11 @@ import path from 'path' import execa from 'execa' import terminalLink from 'terminal-link' +import { handler as apiServerHandler } from '@redwoodjs/api-server/dist/apiCLIConfigHandler' import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' import { getConfig } from '@redwoodjs/project-config' import { getPaths } from '../../lib' -import { apiServerHandler } from '../serveHandler' export const command = 'render ' export const description = 'Build, Migrate, and Serve command for Render deploy' @@ -70,7 +70,7 @@ export const handler = async ({ side, prisma, dm: dataMigrate }) => { execaConfig ) dataMigrate && execa.sync('yarn rw dataMigrate up', execaConfig) - await apiServerHandler({ + await apiServerHandler.handler({ port: getConfig().api?.port || 8911, apiRootPath: '/', }) diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index e725d69b6d32..0aaf99e3ed0d 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -3,15 +3,17 @@ import path from 'path' import fs from 'fs-extra' import terminalLink from 'terminal-link' +import * as apiServerCLIConfig from '@redwoodjs/api-server/dist/apiCLIConfig' +import * as bothServerCLIConfig from '@redwoodjs/api-server/dist/bothCLIConfig' import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' -import { coerceRootPath } from '@redwoodjs/fastify-web/helpers' import * as webServerCLIConfig from '@redwoodjs/web-server' -import { getPaths, getConfig } from '../lib' +import { getPaths } from '../lib' import c from '../lib/colors' export const command = 'serve [side]' -export const description = 'Run server for api or web in production' +export const description = + 'Start a server for serving both the api and web sides' function hasServerFile() { const serverFilePath = path.join(getPaths().api.dist, 'server.js') @@ -20,37 +22,38 @@ function hasServerFile() { export const builder = async (yargs) => { yargs - .usage('usage: $0 ') .command({ command: '$0', - description: 'Run both api and web servers', + description: bothServerCLIConfig.description, builder: (yargs) => { - if (!hasServerFile()) { + if (hasServerFile()) { yargs.options({ - port: { - default: getConfig().web?.port || 8910, - type: 'number', - alias: 'p', - }, - socket: { type: 'string' }, - }) - - return - } - - yargs - .options({ webPort: { - default: getConfig().web?.port || 8910, + description: 'The port for the web server to listen on', type: 'number', + alias: ['web-port'], + }, + webHost: { + description: + "The host for the web server to listen on. Note that you most likely want this to be '0.0.0.0' in production", + type: 'string', + alias: ['web-host'], }, - }) - .options({ apiPort: { - default: getConfig().api?.port || 8911, + description: 'The port for the api server to listen on', type: 'number', + alias: ['api-port'], + }, + apiHost: { + description: + "The host for the api server to listen on. Note that you most likely want this to be '0.0.0.0' in production", + type: 'string', + alias: ['api-host'], }, }) + } + + bothServerCLIConfig.builder(yargs) }, handler: async (argv) => { recordTelemetryAttributes({ @@ -65,30 +68,14 @@ export const builder = async (yargs) => { const { bothServerFileHandler } = await import('./serveHandler.js') await bothServerFileHandler(argv) } else { - const { bothServerHandler } = await import('./serveHandler.js') - await bothServerHandler(argv) + await bothServerCLIConfig.handler(argv) } }, }) .command({ command: 'api', - description: 'Start server for serving only the api', - builder: (yargs) => - yargs.options({ - port: { - default: getConfig().api?.port || 8911, - type: 'number', - alias: 'p', - }, - socket: { type: 'string' }, - apiRootPath: { - alias: ['api-root-path', 'rootPath', 'root-path'], - default: '/', - type: 'string', - desc: 'Root path where your api functions are served', - coerce: coerceRootPath, - }, - }), + description: apiServerCLIConfig.description, + builder: apiServerCLIConfig.builder, handler: async (argv) => { recordTelemetryAttributes({ command: 'serve', @@ -103,8 +90,7 @@ export const builder = async (yargs) => { const { apiServerFileHandler } = await import('./serveHandler.js') await apiServerFileHandler(argv) } else { - const { apiServerHandler } = await import('./serveHandler.js') - await apiServerHandler(argv) + await apiServerCLIConfig.handler(argv) } }, }) diff --git a/packages/cli/src/commands/serveHandler.js b/packages/cli/src/commands/serveHandler.js index c7e03abb4816..1cd6f0e88969 100644 --- a/packages/cli/src/commands/serveHandler.js +++ b/packages/cli/src/commands/serveHandler.js @@ -1,19 +1,32 @@ import path from 'path' -import chalk from 'chalk' import concurrently from 'concurrently' import execa from 'execa' -import { createFastifyInstance, redwoodFastifyAPI } from '@redwoodjs/fastify' -import { redwoodFastifyWeb, coerceRootPath } from '@redwoodjs/fastify-web' -import { getConfig, getPaths } from '@redwoodjs/project-config' +import { + getAPIHost, + getAPIPort, + getWebHost, + getWebPort, +} from '@redwoodjs/api-server/dist/cliHelpers' +import { getPaths } from '@redwoodjs/project-config' import { errorTelemetry } from '@redwoodjs/telemetry' import { exitWithError } from '../lib/exit' export const bothServerFileHandler = async (options) => { - const apiHost = process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' - const apiProxyTarget = `http://${apiHost}:${options.apiPort}` + options.apiPort ??= getAPIPort() + options.apiHost ??= getAPIHost() + options.webPort ??= getWebPort() + options.webHost ??= getWebHost() + + const apiProxyTarget = [ + 'http://', + options.apiHost.includes(':') ? `[${options.apiHost}]` : options.apiHost, + ':', + options.apiPort, + options.apiRootPath, + ].join('') const { result } = concurrently( [ @@ -21,13 +34,13 @@ export const bothServerFileHandler = async (options) => { name: 'api', command: `yarn node ${path.join('dist', 'server.js')} --port ${ options.apiPort - }`, + } --host ${options.apiHost}`, cwd: getPaths().api.base, prefixColor: 'cyan', }, { name: 'web', - command: `yarn rw-web-server --port ${options.webPort} --api-proxy-target ${apiProxyTarget}`, + command: `yarn rw-web-server --port ${options.webPort} --host ${options.webHost} --api-proxy-target ${apiProxyTarget}`, cwd: getPaths().base, prefixColor: 'blue', }, @@ -52,129 +65,20 @@ export const bothServerFileHandler = async (options) => { } } -export const bothServerHandler = async (options) => { - const { port, socket } = options - const tsServer = Date.now() - - console.log(chalk.italic.dim('Starting API and Web Servers...')) - - const fastify = createFastifyInstance() - - process.on('exit', () => { - fastify?.close() - }) - - await fastify.register(redwoodFastifyWeb, { - redwood: { - ...options, - }, - }) - - const apiRootPath = coerceRootPath(getConfig().web.apiUrl) - - await fastify.register(redwoodFastifyAPI, { - redwood: { - ...options, - apiRootPath, - }, - }) - - let listenOptions - - if (socket) { - listenOptions = { path: socket } - } else { - listenOptions = { - port, - host: process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::', - } - } - - const address = await fastify.listen(listenOptions) - - fastify.ready(() => { - console.log(chalk.dim.italic('Took ' + (Date.now() - tsServer) + ' ms')) - - const webServer = chalk.green(address) - const apiServer = chalk.magenta(`${address}${apiRootPath}`) - const graphqlEndpoint = chalk.magenta(`${apiServer}graphql`) - - console.log(`Web server listening at ${webServer}`) - console.log(`API server listening at ${apiServer}`) - console.log(`GraphQL endpoint at ${graphqlEndpoint}`) - - sendProcessReady() - }) -} - -function sendProcessReady() { - return process.send && process.send('ready') -} - export const apiServerFileHandler = async (options) => { await execa( 'yarn', [ 'node', - path.join('dist', 'server.js'), + 'server.js', '--port', options.port, '--apiRootPath', options.apiRootPath, ], { - cwd: getPaths().api.base, + cwd: getPaths().api.dist, stdio: 'inherit', } ) } - -export const apiServerHandler = async (options) => { - const { port, socket, apiRootPath } = options - const tsApiServer = Date.now() - - console.log(chalk.dim.italic('Starting API Server...')) - - const fastify = createFastifyInstance() - - process.on('exit', () => { - fastify?.close() - }) - - await fastify.register(redwoodFastifyAPI, { - redwood: { - ...options, - }, - }) - - let listenOptions - - if (socket) { - listenOptions = { path: socket } - } else { - listenOptions = { - port, - host: process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::', - } - } - - const address = await fastify.listen(listenOptions) - - fastify.ready(() => { - fastify.log.trace( - { custom: { ...fastify.initialConfig } }, - 'Fastify server configuration' - ) - fastify.log.trace(`Registered plugins \n${fastify.printPlugins()}`) - - console.log(chalk.dim.italic('Took ' + (Date.now() - tsApiServer) + ' ms')) - - const apiServer = chalk.magenta(`${address}${apiRootPath}`) - const graphqlEndpoint = chalk.magenta(`${apiServer}graphql`) - - console.log(`API server listening at ${apiServer}`) - console.log(`GraphQL endpoint at ${graphqlEndpoint}`) - - sendProcessReady() - }) -} diff --git a/packages/cli/src/index.js b/packages/cli/src/index.js index 735bbddc3df8..ff8281269ee2 100644 --- a/packages/cli/src/index.js +++ b/packages/cli/src/index.js @@ -193,6 +193,7 @@ async function runYargs() { .demandCommand() .strict() .exitProcess(false) + .alias('h', 'help') // Commands (Built in or pre-plugin support) .command(buildCommand) diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index c88edb9572d1..e473397e5900 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -10,7 +10,6 @@ "references": [ { "path": "../api-server" }, { "path": "../cli-helpers" }, - { "path": "../fastify" }, { "path": "../internal" }, { "path": "../prerender" }, { "path": "../project-config" }, diff --git a/packages/codemods/tasks/generateCodemod/generateCodemod.mjs b/packages/codemods/tasks/generateCodemod/generateCodemod.mjs index e2ac106007dd..32d5347ddc4f 100644 --- a/packages/codemods/tasks/generateCodemod/generateCodemod.mjs +++ b/packages/codemods/tasks/generateCodemod/generateCodemod.mjs @@ -2,7 +2,7 @@ import fs from 'node:fs' import url from 'node:url' -import c from 'ansi-colors' +import chalk from 'chalk' import fse from 'fs-extra' // lodash is commonjs import template from 'lodash/template.js' @@ -57,9 +57,9 @@ await generateCodemod(version, name, kind) */ async function generateCodemod(version, name, kind) { console.log( - `Generating ${c.green(kind)} codemod ${c.green(name)} for ${c.green( - version - )}...` + `Generating ${chalk.green(kind)} codemod ${chalk.green( + name + )} for ${chalk.green(version)}...` ) // Make the destination. diff --git a/packages/create-redwood-app/templates/js/api/server.config.js b/packages/create-redwood-app/templates/js/api/server.config.js deleted file mode 100644 index 73dca9225a3e..000000000000 --- a/packages/create-redwood-app/templates/js/api/server.config.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file allows you to configure the Fastify Server settings - * used by the RedwoodJS dev server. - * - * It also applies when running RedwoodJS with `yarn rw serve`. - * - * For the Fastify server options that you can set, see: - * https://www.fastify.io/docs/latest/Reference/Server/#factory - * - * Examples include: logger settings, timeouts, maximum payload limits, and more. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('fastify').FastifyServerOptions} */ -const config = { - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adjust - // the default non-development level to `info` - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, -} - -/** - * You can also register Fastify plugins and additional routes for the API and Web sides - * in the configureFastify function. - * - * This function has access to the Fastify instance and options, such as the side - * (web, api, or proxy) that is being configured and other settings like the apiRootPath - * of the functions endpoint. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('@redwoodjs/api-server/dist/types').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - } - - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - } - - return fastify -} - -module.exports = { - config, - configureFastify, -} diff --git a/packages/create-redwood-app/templates/ts/api/server.config.js b/packages/create-redwood-app/templates/ts/api/server.config.js deleted file mode 100644 index 73dca9225a3e..000000000000 --- a/packages/create-redwood-app/templates/ts/api/server.config.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * This file allows you to configure the Fastify Server settings - * used by the RedwoodJS dev server. - * - * It also applies when running RedwoodJS with `yarn rw serve`. - * - * For the Fastify server options that you can set, see: - * https://www.fastify.io/docs/latest/Reference/Server/#factory - * - * Examples include: logger settings, timeouts, maximum payload limits, and more. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('fastify').FastifyServerOptions} */ -const config = { - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adjust - // the default non-development level to `info` - level: process.env.NODE_ENV === 'development' ? 'debug' : 'warn', - }, -} - -/** - * You can also register Fastify plugins and additional routes for the API and Web sides - * in the configureFastify function. - * - * This function has access to the Fastify instance and options, such as the side - * (web, api, or proxy) that is being configured and other settings like the apiRootPath - * of the functions endpoint. - * - * Note: This configuration does not apply in a serverless deploy. - */ - -/** @type {import('@redwoodjs/api-server/dist/types').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - } - - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - } - - return fastify -} - -module.exports = { - config, - configureFastify, -} diff --git a/packages/create-redwood-app/tests/templates.test.ts b/packages/create-redwood-app/tests/templates.test.ts index be70e2c81a01..9743e7c80f2d 100644 --- a/packages/create-redwood-app/tests/templates.test.ts +++ b/packages/create-redwood-app/tests/templates.test.ts @@ -28,7 +28,6 @@ describe('TS template', () => { "/api/db/schema.prisma", "/api/jest.config.js", "/api/package.json", - "/api/server.config.js", "/api/src", "/api/src/directives", "/api/src/directives/requireAuth", @@ -112,7 +111,6 @@ describe('JS template', () => { "/api/jest.config.js", "/api/jsconfig.json", "/api/package.json", - "/api/server.config.js", "/api/src", "/api/src/directives", "/api/src/directives/requireAuth", diff --git a/packages/fastify/README.md b/packages/fastify/README.md deleted file mode 100644 index 884b5f977dbf..000000000000 --- a/packages/fastify/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Fastify - -> **Warning** -> -> This package is experimental. - -Redwood plugin for [Fastify](https://www.fastify.io/). diff --git a/packages/fastify/build.mjs b/packages/fastify/build.mjs deleted file mode 100644 index 16175a6725c0..000000000000 --- a/packages/fastify/build.mjs +++ /dev/null @@ -1,3 +0,0 @@ -import { build } from '@redwoodjs/framework-tools' - -await build() diff --git a/packages/fastify/package.json b/packages/fastify/package.json deleted file mode 100644 index 6015c44dd078..000000000000 --- a/packages/fastify/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@redwoodjs/fastify", - "version": "6.0.7", - "repository": { - "type": "git", - "url": "https://github.com/redwoodjs/redwood.git", - "directory": "packages/fastify" - }, - "license": "MIT", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "dist" - ], - "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", - "build:pack": "yarn pack -o redwoodjs-fastify.tgz", - "build:types": "tsc --build --verbose", - "prepublishOnly": "NODE_ENV=production yarn build" - }, - "dependencies": { - "@fastify/http-proxy": "9.3.0", - "@fastify/static": "6.12.0", - "@fastify/url-data": "5.4.0", - "@redwoodjs/context": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "ansi-colors": "4.1.3", - "fast-glob": "3.3.2", - "fastify": "4.25.2", - "fastify-raw-body": "4.3.0", - "lodash": "4.17.21", - "qs": "6.11.2" - }, - "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", - "@types/aws-lambda": "8.10.126", - "@types/lodash": "4.14.201", - "@types/qs": "6.9.11", - "typescript": "5.3.3" - }, - "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" -} diff --git a/packages/fastify/src/api.ts b/packages/fastify/src/api.ts deleted file mode 100644 index 50e69548ecae..000000000000 --- a/packages/fastify/src/api.ts +++ /dev/null @@ -1,43 +0,0 @@ -import fastifyUrlData from '@fastify/url-data' -import type { FastifyInstance } from 'fastify' -import fastifyRawBody from 'fastify-raw-body' - -import type { GlobalContext } from '@redwoodjs/context' -import { getAsyncStoreInstance } from '@redwoodjs/context/dist/store' - -import { loadFastifyConfig } from './config' -import { lambdaRequestHandler, loadFunctionsFromDist } from './lambda' -import type { RedwoodFastifyAPIOptions } from './types' - -export async function redwoodFastifyAPI( - fastify: FastifyInstance, - opts: RedwoodFastifyAPIOptions -) { - if (!fastify.hasPlugin('@fastify/url-data')) { - await fastify.register(fastifyUrlData) - } - await fastify.register(fastifyRawBody) - - // TODO: This should be refactored to only be defined once and it might not live here - // Ensure that each request has a unique global context - fastify.addHook('onRequest', (_req, _reply, done) => { - getAsyncStoreInstance().run(new Map(), done) - }) - - fastify.addContentTypeParser( - ['application/x-www-form-urlencoded', 'multipart/form-data'], - { parseAs: 'string' }, - fastify.defaultTextParser - ) - - // NOTE: Deprecate this when we move to a `server.ts` file. - const { configureFastify } = loadFastifyConfig() - if (configureFastify) { - await configureFastify(fastify, { side: 'api', ...opts }) - } - - const apiRootPath = opts.redwood?.apiRootPath || '/' - fastify.all(`${apiRootPath}:routeName`, lambdaRequestHandler) - fastify.all(`${apiRootPath}:routeName/*`, lambdaRequestHandler) - await loadFunctionsFromDist() -} diff --git a/packages/fastify/src/config.ts b/packages/fastify/src/config.ts deleted file mode 100644 index f9c6e59796c8..000000000000 --- a/packages/fastify/src/config.ts +++ /dev/null @@ -1,77 +0,0 @@ -import fs from 'node:fs' -import path from 'node:path' - -import type { FastifyInstance, FastifyServerOptions } from 'fastify' - -import { getPaths, getConfig } from '@redwoodjs/project-config' - -import type { FastifySideConfigFn, FastifySideConfigFnOptions } from './types' - -export const DEFAULT_REDWOOD_FASTIFY_CONFIG: FastifyServerOptions = { - requestTimeout: 15_000, - logger: { - // Note: If running locally using `yarn rw serve` you may want to adust - // the default non-development level to `info` - level: - process.env.LOG_LEVEL ?? process.env.NODE_ENV === 'development' - ? 'debug' - : 'warn', - }, -} - -let isServerConfigLoaded = false - -let serverConfigFile: { - config: FastifyServerOptions - configureFastify: FastifySideConfigFn -} = { - config: DEFAULT_REDWOOD_FASTIFY_CONFIG, - configureFastify: async (fastify, options) => { - fastify.log.trace( - options, - `In configureFastify hook for side: ${options?.side}` - ) - return fastify - }, -} - -export function loadFastifyConfig() { - const serverTsFileExists = fs.existsSync( - path.join(getPaths().api.src, 'server.ts') - ) - const serverJsFileExists = - !serverTsFileExists && - fs.existsSync(path.join(getPaths().api.src, 'server.js')) - - if (serverTsFileExists || serverJsFileExists) { - const ext = serverTsFileExists ? 'ts' : 'js' - console.log(`Ignoring Fastify config inside 'api/src/server.config.${ext}`) - - return { - config: {}, - configureFastify: async ( - fastify: FastifyInstance, - _options: FastifySideConfigFnOptions - ) => fastify, - } - } - - // TODO: Use `require.resolve` to find the config file. Do we need to babel first? - const serverConfigPath = path.join( - getPaths().base, - getConfig().api.serverConfig - ) - - // If a server.config.js is not found, use the default options. - if (!fs.existsSync(serverConfigPath)) { - return serverConfigFile - } - - if (!isServerConfigLoaded) { - console.log(`Loading server config from ${serverConfigPath}`) - serverConfigFile = { ...require(serverConfigPath) } - isServerConfigLoaded = true - } - - return serverConfigFile -} diff --git a/packages/fastify/src/index.ts b/packages/fastify/src/index.ts deleted file mode 100644 index 3df9716916ad..000000000000 --- a/packages/fastify/src/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { FastifyServerOptions } from 'fastify' -import Fastify from 'fastify' - -import { loadFastifyConfig, DEFAULT_REDWOOD_FASTIFY_CONFIG } from './config.js' - -// NOTE: Needed for backwards compatibility in the CLI. -export function createFastifyInstance(options?: FastifyServerOptions) { - const { config } = loadFastifyConfig() - return Fastify(options || config || DEFAULT_REDWOOD_FASTIFY_CONFIG) -} - -export { redwoodFastifyAPI } from './api.js' - -export type * from './types.js' - -export { DEFAULT_REDWOOD_FASTIFY_CONFIG } from './config.js' diff --git a/packages/fastify/src/lambda/index.ts b/packages/fastify/src/lambda/index.ts deleted file mode 100644 index 1a02b6448ea2..000000000000 --- a/packages/fastify/src/lambda/index.ts +++ /dev/null @@ -1,266 +0,0 @@ -import path from 'node:path' - -import c from 'ansi-colors' -import type { - APIGatewayProxyResult, - APIGatewayProxyEvent, - Handler, -} from 'aws-lambda' -import fg from 'fast-glob' -import type { - FastifyReply, - FastifyRequest, - RequestGenericInterface, -} from 'fastify' -import { escape } from 'lodash' -import qs from 'qs' - -import { getPaths } from '@redwoodjs/project-config' - -// NOTE: Copied from @redwoodjs/internal/dist/files to avoid depending on @redwoodjs/internal. -// import { findApiDistFunctions } from '@redwoodjs/internal/dist/files' -function findApiDistFunctions(cwd: string = getPaths().api.base) { - return fg.sync('dist/functions/**/*.{ts,js}', { - cwd, - deep: 2, // We don't support deeply nested api functions, to maximise compatibility with deployment providers - absolute: true, - }) -} - -export type Lambdas = Record -export const LAMBDA_FUNCTIONS: Lambdas = {} - -/** - * Imports the API functions and add them to the LAMBDA_FUNCTIONS object. - */ -export const setLambdaFunctions = async (foundFunctions: string[]) => { - const tsImport = Date.now() - console.log(c.italic(c.dim('Importing Server Functions... '))) - const imports = foundFunctions.map((fnPath) => { - return new Promise((resolve) => { - const ts = Date.now() - const routeName = path.basename(fnPath).replace('.js', '') - - const { handler } = require(fnPath) - LAMBDA_FUNCTIONS[routeName] = handler - if (!handler) { - console.warn( - routeName, - 'at', - fnPath, - 'does not have a function called handler defined.' - ) - } - console.log( - c.magenta('/' + routeName), - c.italic(c.dim(Date.now() - ts + ' ms')) - ) - return resolve(true) - }) - }) - - Promise.all(imports).then((_results) => { - console.log( - c.italic(c.dim('...Done importing in ' + (Date.now() - tsImport) + ' ms')) - ) - }) -} - -// TODO: Use v8 caching to load these crazy fast. -export const loadFunctionsFromDist = async () => { - const serverFunctions = findApiDistFunctions() - // Place `GraphQL` serverless function at the start. - const i = serverFunctions.findIndex((x) => x.indexOf('graphql') !== -1) - if (i >= 0) { - const graphQLFn = serverFunctions.splice(i, 1)[0] - serverFunctions.unshift(graphQLFn) - } - await setLambdaFunctions(serverFunctions) -} - -interface LambdaHandlerRequest extends RequestGenericInterface { - Params: { - routeName: string - } -} - -/** - * This converts a Fastify request to a lambdaEvent, and passes it to the the appropriate handler for the routeName. - * At this point, the LAMBDA_FUNCTIONS lookup has been populated. - **/ -export async function lambdaRequestHandler( - req: FastifyRequest, - reply: FastifyReply -) { - const { routeName } = req.params - - if (!LAMBDA_FUNCTIONS[routeName]) { - const errorMessage = `Function "${routeName}" was not found.` - req.log.error(errorMessage) - reply.status(404) - - if (process.env.NODE_ENV === 'development') { - const devError = { - error: errorMessage, - availableFunctions: Object.keys(LAMBDA_FUNCTIONS), - } - reply.send(devError) - } else { - reply.send(escape(errorMessage)) - } - - return - } - return requestHandler(req, reply, LAMBDA_FUNCTIONS[routeName]) -} - -export function lambdaEventForFastifyRequest( - request: FastifyRequest -): APIGatewayProxyEvent { - return { - httpMethod: request.method, - headers: request.headers, - path: request.urlData('path'), - queryStringParameters: qs.parse(request.url.split(/\?(.+)/)[1]), - requestContext: { - requestId: request.id, - identity: { - sourceIp: request.ip, - }, - }, - ...parseBody(request.rawBody || ''), // adds `body` and `isBase64Encoded` - } as APIGatewayProxyEvent -} - -function fastifyResponseForLambdaResult( - reply: FastifyReply, - lambdaResult: APIGatewayProxyResult -) { - const { - statusCode = 200, - headers, - body = '', - multiValueHeaders, - } = lambdaResult - const mergedHeaders = mergeMultiValueHeaders(headers, multiValueHeaders) - Object.entries(mergedHeaders).forEach(([name, values]) => - values.forEach((value) => reply.header(name, value)) - ) - reply.status(statusCode) - - if (lambdaResult.isBase64Encoded) { - // Correctly handle base 64 encoded binary data. See - // https://aws.amazon.com/blogs/compute/handling-binary-data-using-amazon-api-gateway-http-apis - return reply.send(Buffer.from(body, 'base64')) - } else { - return reply.send(body) - } -} - -const fastifyResponseForLambdaError = ( - req: FastifyRequest, - reply: FastifyReply, - error: Error -) => { - req.log.error(error) - reply.status(500).send() -} - -export async function requestHandler( - req: FastifyRequest, - reply: FastifyReply, - handler: Handler -) { - // We take the fastify request object and convert it into a lambda function event. - const event = lambdaEventForFastifyRequest(req) - - const handlerCallback = - (reply: FastifyReply) => - (error: Error, lambdaResult: APIGatewayProxyResult) => { - if (error) { - fastifyResponseForLambdaError(req, reply, error) - return - } - - fastifyResponseForLambdaResult(reply, lambdaResult) - } - - // Execute the lambda function. - // https://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html - const handlerPromise = handler( - event, - // @ts-expect-error - Add support for context: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/0bb210867d16170c4a08d9ce5d132817651a0f80/types/aws-lambda/index.d.ts#L443-L467 - {}, - handlerCallback(reply) - ) - - // In this case the handlerCallback should not be called. - if (handlerPromise && typeof handlerPromise.then === 'function') { - try { - const lambdaResponse = await handlerPromise - - return fastifyResponseForLambdaResult(reply, lambdaResponse) - } catch (error: any) { - return fastifyResponseForLambdaError(req, reply, error) - } - } -} - -type ParseBodyResult = { - body: string - isBase64Encoded: boolean -} - -type FastifyHeaderValue = string | number | boolean - -type FastifyMergedHeaders = { [name: string]: FastifyHeaderValue[] } - -type FastifyRequestHeader = { [header: string]: FastifyHeaderValue } - -type FastifyLambdaHeaders = FastifyRequestHeader | undefined - -type FastifyLambdaMultiValueHeaders = FastifyMergedHeaders | undefined - -export function parseBody(rawBody: string | Buffer): ParseBodyResult { - if (typeof rawBody === 'string') { - return { body: rawBody, isBase64Encoded: false } - } - if (rawBody instanceof Buffer) { - return { body: rawBody.toString('base64'), isBase64Encoded: true } - } - return { body: '', isBase64Encoded: false } -} - -/** - * `headers` and `multiValueHeaders` are merged into a single object where the - * key is the header name in lower-case and the value is a list of values for - * that header. Most multi-values are merged into a single value separated by a - * semi-colon. The only exception is set-cookie. set-cookie headers should not - * be merged, they should be set individually by multiple calls to - * reply.header(). See - * https://www.fastify.io/docs/latest/Reference/Reply/#set-cookie - */ -export function mergeMultiValueHeaders( - headers: FastifyLambdaHeaders, - multiValueHeaders: FastifyLambdaMultiValueHeaders -) { - const mergedHeaders = Object.entries( - headers || {} - ).reduce((acc, [name, value]) => { - acc[name.toLowerCase()] = [value] - - return acc - }, {}) - - Object.entries(multiValueHeaders || {}).forEach(([headerName, values]) => { - const name = headerName.toLowerCase() - - if (name.toLowerCase() === 'set-cookie') { - mergedHeaders['set-cookie'] = values - } else { - mergedHeaders[name] = [values.join('; ')] - } - }) - - return mergedHeaders -} diff --git a/packages/fastify/src/types.ts b/packages/fastify/src/types.ts deleted file mode 100644 index 32a56536e83a..000000000000 --- a/packages/fastify/src/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { FastifyInstance } from 'fastify' - -export interface RedwoodFastifyAPIOptions { - redwood?: { - apiRootPath?: string - } -} - -// Types for using server.config.js -export type FastifySideConfigFnOptions = { - side: SupportedSides -} & RedwoodFastifyAPIOptions - -export type SupportedSides = 'api' | 'web' -export type FastifySideConfigFn = ( - fastify: FastifyInstance, - options?: FastifySideConfigFnOptions -) => Promise | void diff --git a/packages/fastify/tsconfig.json b/packages/fastify/tsconfig.json deleted file mode 100644 index e4431bdae5ae..000000000000 --- a/packages/fastify/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.compilerOption.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "dist" - }, - "include": ["src"], - "references": [ - { "path": "../project-config" }] -} diff --git a/packages/internal/src/generate/watch.ts b/packages/internal/src/generate/watch.ts index 7a564046825a..b98f85ac60d9 100644 --- a/packages/internal/src/generate/watch.ts +++ b/packages/internal/src/generate/watch.ts @@ -3,7 +3,7 @@ import fs from 'fs' import path from 'path' -import c from 'ansi-colors' +import chalk from 'chalk' import chokidar from 'chokidar' import { getPaths } from '@redwoodjs/project-config' @@ -82,7 +82,9 @@ watcher } }) .on('all', async (eventName, p) => { - cliLogger.trace(`File system change: ${c.magenta(eventName)} ${c.dim(p)}`) + cliLogger.trace( + `File system change: ${chalk.magenta(eventName)} ${chalk.dim(p)}` + ) if (!['add', 'change', 'unlink'].includes(eventName)) { return } @@ -95,8 +97,8 @@ watcher cliLogger.debug( action[eventTigger], type + ':', - c.dim(p), - c.italic(c.dim(Date.now() - start + ' ms')) + chalk.dim(p), + chalk.dim.italic(Date.now() - start + ' ms') ) if (absPath.indexOf('Cell') !== -1 && isCellFile(absPath)) { diff --git a/packages/project-config/src/__tests__/config.test.ts b/packages/project-config/src/__tests__/config.test.ts index 1c5070d037f6..0388c4930211 100644 --- a/packages/project-config/src/__tests__/config.test.ts +++ b/packages/project-config/src/__tests__/config.test.ts @@ -33,7 +33,6 @@ describe('getConfig', () => { { "api": { "debugPort": 18911, - "host": "localhost", "path": "./api", "port": 8911, "schemaPath": "./api/db/schema.prisma", @@ -96,7 +95,6 @@ describe('getConfig', () => { "apiUrl": "/.redwood/functions", "bundler": "vite", "fastRefresh": true, - "host": "localhost", "includeEnvironmentVariables": [], "path": "./web", "port": 8910, diff --git a/packages/project-config/src/config.ts b/packages/project-config/src/config.ts index 89c00a461210..5021dc29ad23 100644 --- a/packages/project-config/src/config.ts +++ b/packages/project-config/src/config.ts @@ -21,7 +21,7 @@ export enum BundlerEnum { export interface NodeTargetConfig { title: string name?: string - host: string + host?: string port: number path: string target: TargetEnum.NODE @@ -33,7 +33,7 @@ export interface NodeTargetConfig { interface BrowserTargetConfig { title: string name?: string - host: string + host?: string port: number path: string target: TargetEnum.BROWSER @@ -126,7 +126,6 @@ export interface CLIPlugin { const DEFAULT_CONFIG: Config = { web: { title: 'Redwood App', - host: 'localhost', port: 8910, path: './web', target: TargetEnum.BROWSER, @@ -139,7 +138,6 @@ const DEFAULT_CONFIG: Config = { }, api: { title: 'Redwood App', - host: 'localhost', port: 8911, path: './api', target: TargetEnum.NODE, diff --git a/packages/vite/src/index.ts b/packages/vite/src/index.ts index 4d5fb9d1fff3..d145e036cc96 100644 --- a/packages/vite/src/index.ts +++ b/packages/vite/src/index.ts @@ -118,6 +118,17 @@ export default function redwoodPluginVite(): PluginOption[] { // ---------- End Bundle injection ---------- config: (options: UserConfig, env: ConfigEnv): UserConfig => { + let apiHost = process.env.REDWOOD_API_HOST + apiHost ??= rwConfig.api.host + apiHost ??= process.env.NODE_ENV === 'production' ? '0.0.0.0' : '[::]' + + let apiPort + if (process.env.REDWOOD_API_PORT) { + apiPort = parseInt(process.env.REDWOOD_API_PORT) + } else { + apiPort = rwConfig.api.port + } + return { root: rwPaths.web.src, // Disabling for now, let babel handle this for consistency @@ -188,7 +199,7 @@ export default function redwoodPluginVite(): PluginOption[] { host: true, // Listen to all hosts proxy: { [rwConfig.web.apiUrl]: { - target: `http://${rwConfig.api.host}:${rwConfig.api.port}`, + target: `http://${apiHost}:${apiPort}`, changeOrigin: false, // Remove the `.redwood/functions` part, but leave the `/graphql` rewrite: (path) => path.replace(rwConfig.web.apiUrl, ''), diff --git a/packages/web-server/README.md b/packages/web-server/README.md index 228b3125ef49..f14acb674e8e 100644 --- a/packages/web-server/README.md +++ b/packages/web-server/README.md @@ -1,31 +1,6 @@ # Redwood's server for the Web side -## About +This package contains code for Redwood's web server. -This package contains code for Redwood's Fastify Web side server: -- Used when running `yarn rw serve web` -- Used directly when doing Docker-based deploys - -## package.json Server Binaries - -Used to run the Redwood Fastify server for the Web side programmatically - -From package.json -``` -"bin": { - "rw-web-server": "./dist/server.js" -}, -``` - -### `rw-web-server` -Intended for dev and Docker-based deploys. - -Not optimized for production use at scale on its own. Recommended to use CDN or -Nginx as performant alternatives. Or, at least along with a tool like PM2 - -- Runs web on redwood.toml web.port (default 8910) -- GraphQL endpoint is set to redwood.toml web.apiUrl/graphql -- Command Options: - - port (default 8910) - - socket (optional, overrides port if specified) - - apiHost (should point to your api-side server) +This package isn't optimized for production use at scale on it's own. +It's recommended to use a CDN or a web server like Nginx as performant alternatives. diff --git a/packages/web-server/package.json b/packages/web-server/package.json index 108ef7cfdffb..8838fe7a07c4 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -8,13 +8,7 @@ "directory": "packages/web-server" }, "license": "MIT", - "exports": { - ".": { - "types": "./dist/cliConfig.d.ts", - "default": "./dist/cliConfig.js" - }, - "./package.json": "./package.json" - }, + "main": "./dist/cliConfig.js", "types": "./dist/cliConfig.d.ts", "bin": { "rw-web-server": "./dist/bin.js" diff --git a/packages/web-server/src/bin.ts b/packages/web-server/src/bin.ts index 51d64b224757..36759468c8c4 100644 --- a/packages/web-server/src/bin.ts +++ b/packages/web-server/src/bin.ts @@ -1,17 +1,34 @@ +import path from 'path' + +import { config } from 'dotenv-defaults' import { hideBin } from 'yargs/helpers' import yargs from 'yargs/yargs' +import { getPaths } from '@redwoodjs/project-config' + import { bin } from '../package.json' import { description, builder } from './cliConfig' import { handler } from './cliConfigHandler' +if (!process.env.REDWOOD_ENV_FILES_LOADED) { + config({ + path: path.join(getPaths().base, '.env'), + defaults: path.join(getPaths().base, '.env.defaults'), + multiline: true, + }) + + process.env.REDWOOD_ENV_FILES_LOADED = 'true' +} + process.env.NODE_ENV ??= 'production' const [scriptName] = Object.keys(bin) yargs(hideBin(process.argv)) .scriptName(scriptName) + .alias('h', 'help') + .alias('v', 'version') .strict() .example( 'yarn $0 --api-url=/api --api-proxy-target=https://api.redwood.horse', diff --git a/packages/web-server/src/cliConfig.ts b/packages/web-server/src/cliConfig.ts index 48a32b041ca0..a1a47b7756ce 100644 --- a/packages/web-server/src/cliConfig.ts +++ b/packages/web-server/src/cliConfig.ts @@ -1,10 +1,8 @@ import type { Argv } from 'yargs' -import { getConfig } from '@redwoodjs/project-config' - import type { ParsedOptions } from './types' -export const description = 'Start a server for serving only the web side' +export const description = 'Start a server for serving the web side' export function builder(yargs: Argv) { yargs.options({ @@ -12,34 +10,22 @@ export function builder(yargs: Argv) { description: 'The port to listen on', type: 'number', alias: 'p', - default: getConfig().web.port, }, host: { description: - "The host to listen on. Defaults to '0.0.0.0' in production, '::' in development", + "The host to listen on. Note that you most likely want this to be '0.0.0.0' in production", type: 'string', }, - - apiUrl: { - description: - 'Relative URL for proxying requests from or a fully-qualified URL to the API server', - type: 'string', - alias: 'api-url', - default: getConfig().web.apiUrl, - }, apiProxyTarget: { description: - 'Forward requests from the apiUrl to this target. apiUrl must be a relative URL', + 'Forward requests from the apiUrl (in the redwood.toml) to this target. apiUrl must be a relative URL', type: 'string', alias: 'api-proxy-target', }, // Deprecated alias of `apiProxyTarget` apiHost: { - description: - '[Deprecated; use apiProxyTarget] Forward requests from the apiUrl to this target. apiUrl must be a relative URL', - type: 'string', + hidden: true, alias: 'api-host', - deprecated: true, }, }) } diff --git a/packages/web-server/src/cliConfigHandler.ts b/packages/web-server/src/cliConfigHandler.ts index b6138b785f3c..dc4d04e3c5bd 100644 --- a/packages/web-server/src/cliConfigHandler.ts +++ b/packages/web-server/src/cliConfigHandler.ts @@ -1,23 +1,7 @@ -import path from 'path' - -import { config } from 'dotenv-defaults' - -import { getPaths } from '@redwoodjs/project-config' - import type { ParsedOptions } from './types' import { serveWeb } from './webServer' export async function handler(options: ParsedOptions) { - if (!process.env.REDWOOD_ENV_FILES_LOADED) { - config({ - path: path.join(getPaths().base, '.env'), - defaults: path.join(getPaths().base, '.env.defaults'), - multiline: true, - }) - - process.env.REDWOOD_ENV_FILES_LOADED = 'true' - } - try { // Change this to a dynamic import when we add other handlers await serveWeb(options) diff --git a/packages/web-server/src/webServer.ts b/packages/web-server/src/webServer.ts index 7698fcd13a0c..57bdf8559709 100644 --- a/packages/web-server/src/webServer.ts +++ b/packages/web-server/src/webServer.ts @@ -5,7 +5,7 @@ import Fastify from 'fastify' import fs from 'fs-extra' import { redwoodFastifyWeb } from '@redwoodjs/fastify-web' -import { getPaths } from '@redwoodjs/project-config' +import { getConfig, getPaths } from '@redwoodjs/project-config' import type { ParsedOptions } from './types' @@ -18,14 +18,22 @@ export async function serveWeb(options: ParsedOptions = {}) { ) if (!distIndexExists) { throw new Error( - 'no built files to serve; run `yarn rw build web` before serving web' + 'no built files to serve; run `yarn rw build web` before serving the web side' ) } + if (process.env.REDWOOD_WEB_PORT) { + options.port ??= parseInt(process.env.REDWOOD_WEB_PORT) + } + options.port ??= getConfig().web.port + + options.host ??= process.env.REDWOOD_WEB_HOST + options.host ??= getConfig().web.host options.host ??= process.env.NODE_ENV === 'production' ? '0.0.0.0' : '::' + if (process.env.NODE_ENV === 'production' && options.host !== '0.0.0.0') { console.warn( - `Warning: host '${options.host}' may need to be '0.0.0.0' in production` + `Warning: host '${options.host}' may need to be '0.0.0.0' in production for containerized deployments` ) } @@ -33,21 +41,18 @@ export async function serveWeb(options: ParsedOptions = {}) { requestTimeout: 15_000, logger: { level: - process.env.LOG_LEVEL ?? process.env.NODE_ENV === 'development' - ? 'debug' - : 'warn', + process.env.LOG_LEVEL ?? + (process.env.NODE_ENV === 'development' ? 'debug' : 'warn'), }, }) - await fastify.register(redwoodFastifyWeb, { - redwood: options, - }) + fastify.register(redwoodFastifyWeb, { redwood: options }) const address = await fastify.listen({ port: options.port, host: options.host, }) - console.log(chalk.italic.dim('Took ' + (Date.now() - start) + ' ms')) + console.log(chalk.dim.italic('Took ' + (Date.now() - start) + ' ms')) console.log(`Web server listening at ${chalk.green(address)}`) } diff --git a/tasks/server-tests/__snapshots__/bothServer.test.mts.snap b/tasks/server-tests/__snapshots__/bothServer.test.mts.snap new file mode 100644 index 000000000000..1c432606f99f --- /dev/null +++ b/tasks/server-tests/__snapshots__/bothServer.test.mts.snap @@ -0,0 +1,139 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`serve both (/Users/dom/projects/redwood/redwood/packages/api-server/dist/bin.js) > errors out on unknown args 1`] = ` +"rw-server + +Start a server for serving the api and web sides + +Commands: + rw-server Start a server for serving the api and web sides [default] + rw-server api Start a server for serving the api side + rw-server web Start a server for serving the web side + +Options: + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + -v, --version Show version number [boolean] + +Unknown arguments: foo, bar, baz +" +`; + +exports[`serve both (/Users/dom/projects/redwood/redwood/packages/api-server/dist/bin.js) > has help configured 1`] = ` +"rw-server + +Start a server for serving the api and web sides + +Commands: + rw-server Start a server for serving the api and web sides [default] + rw-server api Start a server for serving the api side + rw-server web Start a server for serving the web side + +Options: + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + -v, --version Show version number [boolean] +" +`; + +exports[`serve both ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve' ]) > errors out on unknown args 1`] = ` +"rw serve [side] + +Start a server for serving both the api and web sides + +Commands: + rw serve Start a server for serving the api and web sides [default] + rw serve api Start a server for serving the api side + rw serve web Start a server for serving the web side + +Options: + --version Show version number [boolean] + --cwd Working directory to use (where + \`redwood.toml\` is located) + --telemetry Whether to send anonymous usage + telemetry to RedwoodJS [boolean] + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + +Also see the Redwood CLI Reference +(​https://redwoodjs.com/docs/cli-commands#serve​) + +Unknown arguments: foo, bar, baz +" +`; + +exports[`serve both ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve' ]) > has help configured 1`] = ` +"rw serve [side] + +Start a server for serving both the api and web sides + +Commands: + rw serve Start a server for serving the api and web sides [default] + rw serve api Start a server for serving the api side + rw serve web Start a server for serving the web side + +Options: + --version Show version number [boolean] + --cwd Working directory to use (where + \`redwood.toml\` is located) + --telemetry Whether to send anonymous usage + telemetry to RedwoodJS [boolean] + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + +Also see the Redwood CLI Reference +(​https://redwoodjs.com/docs/cli-commands#serve​) +" +`; diff --git a/tasks/server-tests/__snapshots__/server.test.mts.snap b/tasks/server-tests/__snapshots__/server.test.mts.snap deleted file mode 100644 index c439d78914b3..000000000000 --- a/tasks/server-tests/__snapshots__/server.test.mts.snap +++ /dev/null @@ -1,240 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/bin.js) > errors out on unknown args 1`] = ` -"rw-web-server - -Start a server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port The port to listen on - [number] [default: 8910] - --host The host to listen on. Defaults to - '0.0.0.0' in production, '::' in - development [string] - --apiUrl, --api-url Relative URL for proxying requests - from or a fully-qualified URL to the - API server - [string] [default: "/.redwood/functions"] - --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [string] - --apiHost, --api-host [Deprecated; use apiProxyTarget] - Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [deprecated] [string] - -Examples: - yarn rw-web-server --api-url=/api --api- Start the web server and proxy - proxy-target=https://api.redwood.horse requests made to '/api' to - 'https://api.redwood.horse' - yarn rw-web-server Start the web server send api - --api-url=https://api.redwood.horse requests to - 'https://api.redwood.horse' (make - sure to configure CORS) - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/bin.js) > has help configured 1`] = ` -"rw-web-server - -Start a server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port The port to listen on - [number] [default: 8910] - --host The host to listen on. Defaults to - '0.0.0.0' in production, '::' in - development [string] - --apiUrl, --api-url Relative URL for proxying requests - from or a fully-qualified URL to the - API server - [string] [default: "/.redwood/functions"] - --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [string] - --apiHost, --api-host [Deprecated; use apiProxyTarget] - Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [deprecated] [string] - -Examples: - yarn rw-web-server --api-url=/api --api- Start the web server and proxy - proxy-target=https://api.redwood.horse requests made to '/api' to - 'https://api.redwood.horse' - yarn rw-web-server Start the web server send api - --api-url=https://api.redwood.horse requests to - 'https://api.redwood.horse' (make - sure to configure CORS) -" -`; - -exports[`serve web (/Users/dom/projects/redwood/redwood/packages/web-server/dist/bin.js) > works by default; registers a warning at apiUrl 1`] = ` -{ - "data": null, - "errors": [ - { - "extensions": { - "code": "BAD_GATEWAY", - "httpStatus": 502, - }, - "message": "Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.", - }, - ], -} -`; - -exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', 'web' ]) > errors out on unknown args 1`] = ` -"rw-server web - -Start a server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port The port to listen on - [number] [default: 8910] - --host The host to listen on. Defaults to - '0.0.0.0' in production, '::' in - development [string] - --apiUrl, --api-url Relative URL for proxying requests - from or a fully-qualified URL to the - API server - [string] [default: "/.redwood/functions"] - --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [string] - --apiHost, --api-host [Deprecated; use apiProxyTarget] - Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [deprecated] [string] - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', 'web' ]) > has help configured 1`] = ` -"rw-server web - -Start a server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port The port to listen on - [number] [default: 8910] - --host The host to listen on. Defaults to - '0.0.0.0' in production, '::' in - development [string] - --apiUrl, --api-url Relative URL for proxying requests - from or a fully-qualified URL to the - API server - [string] [default: "/.redwood/functions"] - --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [string] - --apiHost, --api-host [Deprecated; use apiProxyTarget] - Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [deprecated] [string] -" -`; - -exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/api-server/dist/index.js', 'web' ]) > works by default; registers a warning at apiUrl 1`] = ` -{ - "data": null, - "errors": [ - { - "extensions": { - "code": "BAD_GATEWAY", - "httpStatus": 502, - }, - "message": "Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.", - }, - ], -} -`; - -exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve', 'web' ]) > errors out on unknown args 1`] = ` -"rw serve web - -Start a server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where - \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage - telemetry to RedwoodJS [boolean] - -p, --port The port to listen on - [number] [default: 8910] - --host The host to listen on. Defaults to - '0.0.0.0' in production, '::' in - development [string] - --apiUrl, --api-url Relative URL for proxying requests - from or a fully-qualified URL to the - API server - [string] [default: "/.redwood/functions"] - --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [string] - --apiHost, --api-host [Deprecated; use apiProxyTarget] - Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [deprecated] [string] - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve', 'web' ]) > has help configured 1`] = ` -"rw serve web - -Start a server for serving only the web side - -Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where - \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage - telemetry to RedwoodJS [boolean] - -p, --port The port to listen on - [number] [default: 8910] - --host The host to listen on. Defaults to - '0.0.0.0' in production, '::' in - development [string] - --apiUrl, --api-url Relative URL for proxying requests - from or a fully-qualified URL to the - API server - [string] [default: "/.redwood/functions"] - --apiProxyTarget, --api-proxy-target Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [string] - --apiHost, --api-host [Deprecated; use apiProxyTarget] - Forward requests from the apiUrl to - this target. apiUrl must be a - relative URL [deprecated] [string] -" -`; - -exports[`serve web ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve', 'web' ]) > works by default; registers a warning at apiUrl 1`] = ` -{ - "data": null, - "errors": [ - { - "extensions": { - "code": "BAD_GATEWAY", - "httpStatus": 502, - }, - "message": "Bad Gateway: you may have misconfigured apiUrl and apiProxyTarget. If apiUrl is a relative URL, you must provide apiProxyTarget.", - }, - ], -} -`; diff --git a/tasks/server-tests/bothServer.test.mts b/tasks/server-tests/bothServer.test.mts new file mode 100644 index 000000000000..e55aa0b60b07 --- /dev/null +++ b/tasks/server-tests/bothServer.test.mts @@ -0,0 +1,191 @@ +import { fileURLToPath } from 'node:url' + +import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest' +import { fs, path, $ } from 'zx' + +import { getConfig } from '@redwoodjs/project-config' +import { sleep } from './helpers.mjs' + +////////// +// Setup +////////// + +$.verbose = !!process.env.VERBOSE + +const __dirname = fileURLToPath(new URL('./', import.meta.url)) +const FIXTURE_PATH = fileURLToPath( + new URL('./fixtures/redwood-app', import.meta.url) +) + +// @redwoodjs/cli (yarn rw) +const rw = path.resolve(__dirname, '../../packages/cli/dist/index.js') +// @redwoodjs/api-server (yarn rw-server) +const rwServer = path.resolve( + __dirname, + '../../packages/api-server/dist/bin.js' +) +// @redwoodjs/web-server (yarn rw-web-server) +const rwWebServer = path.resolve( + __dirname, + '../../packages/web-server/dist/bin.js' +) + +let original_RWJS_CWD +let projectConfig +beforeAll(() => { + original_RWJS_CWD = process.env.RWJS_CWD + process.env.RWJS_CWD = FIXTURE_PATH + projectConfig = getConfig() + console.log([ + 'These tests use the following command to run the server:', + `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rw} serve`, + `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rwServer}`, + `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rwWebServer}`, + ].join('\n')) +}) +afterAll(() => { + process.env.RWJS_CWD = original_RWJS_CWD +}) + +// Clean up the child process after each test +let p +afterEach(async () => { + if (!p) { + return + } + p.kill() + // Wait for child process to terminate + try { + await p + } catch { + // Ignore + } +}) + +const TIMEOUT = 1_000 * 2 + +////////// +// Tests +////////// + +describe.each([ + [[rw, 'serve']], + [rwServer], +])('serve both (%s)', (cmd) => { + it("has help configured", async () => { + const { stdout } = await $`yarn node ${cmd} --help` + expect(stdout).toMatchSnapshot() + }) + + it('errors out on unknown args', async () => { + try { + await $`yarn node ${cmd} --foo --bar --baz` + expect(true).toEqual(false) + } catch (p) { + expect(p.exitCode).toEqual(1) + expect(p.stdout).toEqual('') + expect(p.stderr).toMatchSnapshot() + } + }) + + describe('webPort', () => { + it("`--webPort` changes the web server's port", async () => { + const webPort = 8920 + p = $`yarn node ${cmd} --webPort ${webPort}` + await sleep(TIMEOUT) + await test({ webPort }) + }) + + it("`REDWOOD_WEB_PORT` changes the web server's port", async () => { + process.env.REDWOOD_WEB_PORT = '8921' + const webPort = +process.env.REDWOOD_WEB_PORT + p = $`yarn node ${cmd}` + await sleep(TIMEOUT) + await test({ webPort }) + delete process.env.REDWOOD_WEB_PORT + }) + + it('`--webPort` takes precedence over `REDWOOD_WEB_PORT`', async () => { + const webPort = 8922 + process.env.REDWOOD_WEB_PORT = '8923' + p = $`yarn node ${cmd} --webPort ${webPort}` + await sleep(TIMEOUT) + await test({ webPort }) + delete process.env.REDWOOD_WEB_PORT + }) + + it('`[web].port` changes the port', async () => { + p = $`yarn node ${cmd}` + await sleep(TIMEOUT) + await test({ port: projectConfig.web.port }) + }) + }) + + describe('webHost', () => { + it("`--webHost` changes the web server's host", async () => { + const webHost = '127.0.0.1' + p = $`yarn node ${cmd} --webHost ${webHost}` + await sleep(TIMEOUT) + await test({ webHost }) + }) + + it("`REDWOOD_WEB_HOST` changes the web server's host", async () => { + process.env.REDWOOD_WEB_HOST = '::1' + const webHost = process.env.REDWOOD_WEB_HOST + p = $`yarn node ${cmd}` + await sleep(TIMEOUT) + await test({ webHost }) + delete process.env.REDWOOD_WEB_HOST + }) + + it('`--webHost` takes precedence over `REDWOOD_WEB_HOST`', async () => { + const webHost = '::' + process.env.REDWOOD_WEB_HOST = '0.0.0.0' + p = $`yarn node ${cmd} --webHost ${webHost}` + await sleep(TIMEOUT) + await test({ webHost }) + delete process.env.REDWOOD_WEB_HOST + }) + + it.todo('`[web].host` changes the host') + + it("defaults to '::' if `NODE_ENV` isn't production", async () => { + p = $`yarn node ${cmd}` + await sleep(TIMEOUT) + await test() + }) + + it.todo("defaults to '0.0.0.0' if `NODE_ENV` is production") + }) +}) + +async function test(options = {}) { + options.webHost ??= '::' + if (options.webHost.includes(':')) { + options.webHost = `[${options.webHost}]` + } + options.webPort ??= projectConfig.web.port + + const webRes = await fetch(`http://${options.webHost}:${options.webPort}/about`) + const webBody = await webRes.text() + + expect(webRes.status).toEqual(200) + expect(webBody).toEqual( + fs.readFileSync( + path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), + 'utf-8' + ) + ) + + options.apiHost ??= '::' + if (options.apiHost.includes(':')) { + options.apiHost = `[${options.apiHost}]` + } + options.apiPort ??= projectConfig.api.port + + const apiRes = await fetch(`http://${options.apiHost}:${options.apiPort}/hello`) + const apiBody = await apiRes.json() + + expect(apiRes.status).toEqual(200) + expect(apiBody).toEqual({ data: 'hello function' }) +} diff --git a/tasks/server-tests/helpers.mts b/tasks/server-tests/helpers.mts new file mode 100644 index 000000000000..79f302b950b4 --- /dev/null +++ b/tasks/server-tests/helpers.mts @@ -0,0 +1,3 @@ +export function sleep(time = 1_000) { + return new Promise(resolve => setTimeout(resolve, time)); +} diff --git a/tasks/server-tests/server.test.mts b/tasks/server-tests/server.test.mts deleted file mode 100644 index 0c805777b904..000000000000 --- a/tasks/server-tests/server.test.mts +++ /dev/null @@ -1,583 +0,0 @@ -/* eslint-disable camelcase */ - -import http from 'node:http' -import { fileURLToPath } from 'node:url' - -import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest' -import { fs, path, $ } from 'zx' - -//////////////// -// Tests setup -//////////////// - -const __dirname = fileURLToPath(new URL('./', import.meta.url)) -const FIXTURE_PATH = fileURLToPath( - new URL('./fixtures/redwood-app', import.meta.url) -) -$.verbose = !!process.env.VERBOSE - -let original_RWJS_CWD - -beforeAll(() => { - original_RWJS_CWD = process.env.RWJS_CWD - process.env.RWJS_CWD = FIXTURE_PATH -}) -afterAll(() => { - process.env.RWJS_CWD = original_RWJS_CWD -}) - -// Clean up the child process after each test -let p - -afterEach(async () => { - if (!p) { - return - } - p.kill() - // Wait for child process to terminate - try { - await p - } catch { - // Ignore - } -}) - -const TIMEOUT = 1_000 * 2 - -const commandStrings = { - '@redwoodjs/cli': path.resolve(__dirname, '../../packages/cli/dist/index.js'), - '@redwoodjs/api-server': path.resolve( - __dirname, - '../../packages/api-server/dist/index.js' - ), - '@redwoodjs/web-server': path.resolve( - __dirname, - '../../packages/web-server/dist/bin.js' - ), -} - -const redwoodToml = await fs.readFile( - path.join(__dirname, './fixtures/redwood-app/redwood.toml'), - 'utf-8' -) -const match = redwoodToml.match(/apiUrl = "(?[^"]*)/) -const apiUrl = match?.groups?.apiUrl -if (!apiUrl) { - throw new Error("Couldn't find apiUrl in redwood.toml") -} - -//////////////// -// Tests start -//////////////// - -// `yarn rw serve` and variants -describe.each([ - [[commandStrings['@redwoodjs/cli'], 'serve']], - [commandStrings['@redwoodjs/api-server']], -])('serve both (%s)', (commandString) => { - it('serves both sides, using the apiRootPath in redwood.toml', async () => { - p = $`yarn node ${commandString}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const webRes = await fetch('http://localhost:8910/about') - const webBody = await webRes.text() - - expect(webRes.status).toEqual(200) - expect(webBody).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - - const apiRes = await fetch(`http://localhost:8910${apiUrl}/hello`) - const apiBody = await apiRes.json() - - expect(apiRes.status).toEqual(200) - expect(apiBody).toEqual({ data: 'hello function' }) - }) - - it('--port changes the port', async () => { - const port = 8920 - - p = $`yarn node ${commandString} --port ${port}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const webRes = await fetch(`http://localhost:${port}/about`) - const webBody = await webRes.text() - - expect(webRes.status).toEqual(200) - expect(webBody).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - - const apiRes = await fetch(`http://localhost:${port}${apiUrl}/hello`) - const apiBody = await apiRes.json() - - expect(apiRes.status).toEqual(200) - expect(apiBody).toEqual({ data: 'hello function' }) - }) -}) - -// `yarn rw serve api` and variants -describe.each([ - [[commandStrings['@redwoodjs/cli'], 'serve', 'api']], - [[commandStrings['@redwoodjs/api-server'], 'api']], -])('serve api (%s)', (commandString) => { - it('serves the api side', async () => { - p = $`yarn node ${commandString}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch('http://localhost:8911/hello') - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: 'hello function' }) - }) - - it('--port changes the port', async () => { - const port = 3000 - - p = $`yarn node ${commandString} --port ${port}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:${port}/hello`) - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: 'hello function' }) - }) - - it('--apiRootPath changes the prefix', async () => { - const apiRootPath = '/api' - - p = $`yarn node ${commandString} --apiRootPath ${apiRootPath}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:8911${apiRootPath}/hello`) - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: 'hello function' }) - }) -}) - -// `yarn rw serve web` and variants -describe.each([ - [[`${commandStrings['@redwoodjs/cli']}`, 'serve', 'web']], - [[`${commandStrings['@redwoodjs/api-server']}`, 'web']], - [commandStrings['@redwoodjs/web-server']], -])('serve web (%s)', (commandString) => { - it('has help configured', async () => { - const { stdout } = await $`yarn node ${commandString} --help` - expect(stdout).toMatchSnapshot() - }) - - it("works by default; registers a warning at apiUrl", async () => { - p = $`yarn node ${commandString}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - // it serves some page - const res = await fetch('http://localhost:8910/about') - const body = await res.text() - - expect(res.status).toEqual(200) - expect(body).toEqual( - await fs.readFile( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - - const warningRes = await fetch('http://localhost:8910/.redwood/functions/graphql') - const warningBody = await warningRes.json() - - expect(warningRes.status).toEqual(200) - expect(warningBody).toMatchSnapshot() - }) - - it('--api-proxy-target changes the apiUrl proxy target', async () => { - const apiPort = 8916 - const apiHost = 'localhost' - - const helloData = { data: 'hello from mock server' } - - const server = http.createServer((req, res) => { - if (req.url === '/hello') { - res.end(JSON.stringify(helloData)) - } - }) - - server.listen(apiPort, apiHost) - - p = $`yarn node ${commandString} --apiHost http://${apiHost}:${apiPort}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch('http://localhost:8910/.redwood/functions/hello') - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual(helloData) - - server.close() - }) - - it('--port changes the port', async () => { - const port = 8912 - - p = $`yarn node ${commandString} --apiHost http://localhost:8916 --port ${port}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:${port}/about`) - const body = await res.text() - - expect(res.status).toEqual(200) - expect(body).toEqual( - await fs.readFile( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandString} --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchSnapshot() - } - }) -}) - -describe('@redwoodjs/cli', () => { - describe('both server CLI', () => { - it.todo('handles --socket differently') - - it('has help configured', async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/cli']} serve --help` - - expect(stdout).toMatchInlineSnapshot(` - "usage: rw - - Commands: - rw serve Run both api and web servers [default] - rw serve api Start server for serving only the api - rw serve web Start a server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage telemetry to RedwoodJS - [boolean] - -p, --port [number] [default: 8910] - --socket [string] - - Also see the Redwood CLI Reference - (​https://redwoodjs.com/docs/cli-commands#serve​) - " - `) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandStrings['@redwoodjs/cli']} serve --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchInlineSnapshot(` - "usage: rw - - Commands: - rw serve Run both api and web servers [default] - rw serve api Start server for serving only the api - rw serve web Start a server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage telemetry to RedwoodJS - [boolean] - -p, --port [number] [default: 8910] - --socket [string] - - Also see the Redwood CLI Reference - (​https://redwoodjs.com/docs/cli-commands#serve​) - - Unknown arguments: foo, bar, baz - " - `) - } - }) - }) - - describe('api server CLI', () => { - it.todo('handles --socket differently') - - it('loads dotenv files', async () => { - p = $`yarn node ${commandStrings['@redwoodjs/cli']} serve api` - - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:8911/env`) - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: '42' }) - }) - - it('has help configured', async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/cli']} serve api --help` - - expect(stdout).toMatchInlineSnapshot(` - "rw serve api - - Start server for serving only the api - - Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where - \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage - telemetry to RedwoodJS [boolean] - -p, --port [number] [default: 8911] - --socket [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - " - `) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandStrings['@redwoodjs/cli']} serve api --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchInlineSnapshot(` - "rw serve api - - Start server for serving only the api - - Options: - --help Show help [boolean] - --version Show version number [boolean] - --cwd Working directory to use (where - \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage - telemetry to RedwoodJS [boolean] - -p, --port [number] [default: 8911] - --socket [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - - Unknown arguments: foo, bar, baz - " - `) - } - }) - }) -}) - -describe('@redwoodjs/api-server', () => { - describe('both server CLI', () => { - it('--socket changes the port', async () => { - const socket = 8921 - - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} --socket ${socket}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const webRes = await fetch(`http://localhost:${socket}/about`) - const webBody = await webRes.text() - - expect(webRes.status).toEqual(200) - expect(webBody).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - - const apiRes = await fetch( - `http://localhost:${socket}/.redwood/functions/hello` - ) - const apiBody = await apiRes.json() - - expect(apiRes.status).toEqual(200) - expect(apiBody).toEqual({ data: 'hello function' }) - }) - - it('--socket wins out over --port', async () => { - const socket = 8922 - const port = 8923 - - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} --socket ${socket} --port ${port}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const webRes = await fetch(`http://localhost:${socket}/about`) - const webBody = await webRes.text() - - expect(webRes.status).toEqual(200) - expect(webBody).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - - const apiRes = await fetch( - `http://localhost:${socket}/.redwood/functions/hello` - ) - const apiBody = await apiRes.json() - - expect(apiRes.status).toEqual(200) - expect(apiBody).toEqual({ data: 'hello function' }) - }) - - it("doesn't have help configured", async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/api-server']} --help` - - expect(stdout).toMatchInlineSnapshot(` - "usage: rw-server - - Commands: - rw-server Run both api and web servers [default] - rw-server api Start server for serving only the api - rw-server web Start a server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - " - `) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandStrings['@redwoodjs/api-server']} --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchInlineSnapshot(` - "usage: rw-server - - Commands: - rw-server Run both api and web servers [default] - rw-server api Start server for serving only the api - rw-server web Start a server for serving only the web side - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8910] - --socket [string] - - Unknown arguments: foo, bar, baz - " - `) - } - }) - }) - - describe('api server CLI', () => { - it('--socket changes the port', async () => { - const socket = 3001 - - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} api --socket ${socket}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:${socket}/hello`) - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: 'hello function' }) - }) - - it('--socket wins out over --port', async () => { - const socket = 3002 - const port = 3003 - - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} api --socket ${socket} --port ${port}` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:${socket}/hello`) - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: 'hello function' }) - }) - - it('--loadEnvFiles loads dotenv files', async () => { - p = $`yarn node ${commandStrings['@redwoodjs/api-server']} api --loadEnvFiles` - await new Promise((r) => setTimeout(r, TIMEOUT)) - - const res = await fetch(`http://localhost:8911/env`) - const body = await res.json() - - expect(res.status).toEqual(200) - expect(body).toEqual({ data: '42' }) - }) - - it('has help configured', async () => { - const { stdout } = - await $`yarn node ${commandStrings['@redwoodjs/api-server']} api --help` - - expect(stdout).toMatchInlineSnapshot(` - "rw-server api - - Start server for serving only the api - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8911] - --socket [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - " - `) - }) - - it('errors out on unknown args', async () => { - try { - await $`yarn node ${commandStrings['@redwoodjs/api-server']} api --foo --bar --baz` - expect(true).toEqual(false) - } catch (p) { - expect(p.exitCode).toEqual(1) - expect(p.stdout).toEqual('') - expect(p.stderr).toMatchInlineSnapshot(` - "rw-server api - - Start server for serving only the api - - Options: - --help Show help [boolean] - --version Show version number [boolean] - -p, --port [number] [default: 8911] - --socket [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - - Unknown arguments: foo, bar, baz - " - `) - } - }) - }) -}) diff --git a/yarn.lock b/yarn.lock index bacb9df580ed..71cd0fc3812b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7397,12 +7397,10 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/api-server@workspace:packages/api-server" dependencies: - "@babel/cli": "npm:7.23.9" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.9" "@fastify/url-data": "npm:5.4.0" "@redwoodjs/context": "npm:6.0.7" "@redwoodjs/fastify-web": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" "@redwoodjs/web-server": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" @@ -7410,11 +7408,9 @@ __metadata: "@types/qs": "npm:6.9.11" "@types/split2": "npm:4.2.3" "@types/yargs": "npm:17.0.32" - ansi-colors: "npm:4.1.3" aws-lambda: "npm:1.0.7" chalk: "npm:4.1.2" chokidar: "npm:3.5.3" - core-js: "npm:3.35.1" dotenv-defaults: "npm:5.0.2" fast-glob: "npm:3.3.2" fast-json-parse: "npm:1.0.3" @@ -7437,7 +7433,7 @@ __metadata: bin: rw-api-server-watch: ./dist/watch.js rw-log-formatter: ./dist/logFormatter/bin.js - rw-server: ./dist/index.js + rw-server: ./dist/bin.js languageName: unknown linkType: soft @@ -8054,7 +8050,6 @@ __metadata: "@prisma/internals": "npm:5.9.0" "@redwoodjs/api-server": "npm:6.0.7" "@redwoodjs/cli-helpers": "npm:6.0.7" - "@redwoodjs/fastify": "npm:6.0.7" "@redwoodjs/fastify-web": "npm:6.0.7" "@redwoodjs/internal": "npm:6.0.7" "@redwoodjs/prerender": "npm:6.0.7" @@ -8278,29 +8273,6 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/fastify@npm:6.0.7, @redwoodjs/fastify@workspace:packages/fastify": - version: 0.0.0-use.local - resolution: "@redwoodjs/fastify@workspace:packages/fastify" - dependencies: - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" - "@fastify/url-data": "npm:5.4.0" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@types/aws-lambda": "npm:8.10.126" - "@types/lodash": "npm:4.14.201" - "@types/qs": "npm:6.9.11" - ansi-colors: "npm:4.1.3" - fast-glob: "npm:3.3.2" - fastify: "npm:4.25.2" - fastify-raw-body: "npm:4.3.0" - lodash: "npm:4.17.21" - qs: "npm:6.11.2" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - "@redwoodjs/forms@workspace:packages/forms": version: 0.0.0-use.local resolution: "@redwoodjs/forms@workspace:packages/forms" @@ -12635,7 +12607,7 @@ __metadata: languageName: node linkType: hard -"ansi-colors@npm:4.1.3, ansi-colors@npm:^4.1.1": +"ansi-colors@npm:^4.1.1": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" checksum: ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 @@ -27905,9 +27877,9 @@ __metadata: linkType: hard "process-warning@npm:^2.0.0": - version: 2.2.0 - resolution: "process-warning@npm:2.2.0" - checksum: 22b252ca6c1edf7fe3c6ab30c39f9a2fa240dc5af46fd0f94c4dcbc577e7570dcccfc1cbfb4510db4759906b9170cb8b18c519d581cdf2ea649e5ac6bb9a0e60 + version: 2.3.2 + resolution: "process-warning@npm:2.3.2" + checksum: 6bccf187f604dd63067ae8b5a08f658d1cc5df4948a51525691a564ad9250575802c094dd5d1b69f015934fe5df6d925f2e607d7a589918069129b07a777aa7b languageName: node linkType: hard @@ -31603,9 +31575,9 @@ __metadata: linkType: hard "tiny-lru@npm:^11.0.0": - version: 11.0.1 - resolution: "tiny-lru@npm:11.0.1" - checksum: f1b4c61dcf822747daafc2ec9f6de6722b7c8f028532d89a878315d0c82001fd9c9386916b6af96ee754ed327d3136ba7b55d319ffc1b4c108a34fdd923fd13b + version: 11.2.5 + resolution: "tiny-lru@npm:11.2.5" + checksum: bda6de074035ca108ce179ba4ceb02a3eca6aab78b5cf161736035f2af562644594435d8fa4c07f098eee96e1a483992025af72f25e6033d54a66cf270fa8372 languageName: node linkType: hard From 350c904e249efe60e72dd55e5a117a48ae06a530 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 1 Feb 2024 15:50:59 +0000 Subject: [PATCH 060/119] fix(server): spelling, fix deploy handler imports, dedupe server builder (#9949) Follow up to https://github.com/redwoodjs/redwood/pull/9948; missed a few things at the end there: - misspelled "description" in a test mock - the server file and both server handlers take the same options, so I deduped them - related, I wasn't passing apiRootPath through to the server file handler - I incorrectly accessed `.handler` on `apiServerHandler` in flightcontrol and render --- .vscode/settings.json | 1 + .../cli/src/commands/__tests__/serve.test.js | 4 +-- .../cli/src/commands/deploy/flightcontrol.js | 2 +- packages/cli/src/commands/deploy/render.js | 2 +- packages/cli/src/commands/serve.js | 31 +------------------ packages/cli/src/commands/serveHandler.js | 2 +- 6 files changed, 7 insertions(+), 35 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 26702c59a1f0..f26ebb65101c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,6 +22,7 @@ "typescript.tsdk": "node_modules/typescript/lib", "peacock.color": "#b85833", "cSpell.words": [ + "execa", "Fastify", "pino", "redwoodjs", diff --git a/packages/cli/src/commands/__tests__/serve.test.js b/packages/cli/src/commands/__tests__/serve.test.js index 54f8c24c20d9..78df9d19575d 100644 --- a/packages/cli/src/commands/__tests__/serve.test.js +++ b/packages/cli/src/commands/__tests__/serve.test.js @@ -52,7 +52,7 @@ vi.mock('fs-extra', async (importOriginal) => { vi.mock('@redwoodjs/api-server/dist/apiCLIConfig', async (importOriginal) => { const originalAPICLIConfig = await importOriginal() return { - description: originalAPICLIConfig.desciption, + description: originalAPICLIConfig.description, builder: originalAPICLIConfig.builder, handler: vi.fn(), } @@ -60,7 +60,7 @@ vi.mock('@redwoodjs/api-server/dist/apiCLIConfig', async (importOriginal) => { vi.mock('@redwoodjs/api-server/dist/bothCLIConfig', async (importOriginal) => { const originalBothCLIConfig = await importOriginal() return { - description: originalBothCLIConfig.desciption, + description: originalBothCLIConfig.description, builder: originalBothCLIConfig.builder, handler: vi.fn(), } diff --git a/packages/cli/src/commands/deploy/flightcontrol.js b/packages/cli/src/commands/deploy/flightcontrol.js index 6ffa41e95fcd..8179d3bc4f0a 100644 --- a/packages/cli/src/commands/deploy/flightcontrol.js +++ b/packages/cli/src/commands/deploy/flightcontrol.js @@ -65,7 +65,7 @@ export const handler = async ({ side, serve, prisma, dm: dataMigrate }) => { async function runApiCommands() { if (serve) { console.log('\nStarting api...') - await apiServerHandler.handler({ + await apiServerHandler({ port: getConfig().api?.port || 8911, apiRootPath: '/', }) diff --git a/packages/cli/src/commands/deploy/render.js b/packages/cli/src/commands/deploy/render.js index 01eceb01535b..05a9d1850d5e 100644 --- a/packages/cli/src/commands/deploy/render.js +++ b/packages/cli/src/commands/deploy/render.js @@ -70,7 +70,7 @@ export const handler = async ({ side, prisma, dm: dataMigrate }) => { execaConfig ) dataMigrate && execa.sync('yarn rw dataMigrate up', execaConfig) - await apiServerHandler.handler({ + await apiServerHandler({ port: getConfig().api?.port || 8911, apiRootPath: '/', }) diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index 0aaf99e3ed0d..f0d5f84b7a83 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -25,36 +25,7 @@ export const builder = async (yargs) => { .command({ command: '$0', description: bothServerCLIConfig.description, - builder: (yargs) => { - if (hasServerFile()) { - yargs.options({ - webPort: { - description: 'The port for the web server to listen on', - type: 'number', - alias: ['web-port'], - }, - webHost: { - description: - "The host for the web server to listen on. Note that you most likely want this to be '0.0.0.0' in production", - type: 'string', - alias: ['web-host'], - }, - apiPort: { - description: 'The port for the api server to listen on', - type: 'number', - alias: ['api-port'], - }, - apiHost: { - description: - "The host for the api server to listen on. Note that you most likely want this to be '0.0.0.0' in production", - type: 'string', - alias: ['api-host'], - }, - }) - } - - bothServerCLIConfig.builder(yargs) - }, + builder: bothServerCLIConfig.builder(yargs), handler: async (argv) => { recordTelemetryAttributes({ command: 'serve', diff --git a/packages/cli/src/commands/serveHandler.js b/packages/cli/src/commands/serveHandler.js index 1cd6f0e88969..301fe8b24861 100644 --- a/packages/cli/src/commands/serveHandler.js +++ b/packages/cli/src/commands/serveHandler.js @@ -34,7 +34,7 @@ export const bothServerFileHandler = async (options) => { name: 'api', command: `yarn node ${path.join('dist', 'server.js')} --port ${ options.apiPort - } --host ${options.apiHost}`, + } --host ${options.apiHost} --api-root-path ${options.apiRootPath}`, cwd: getPaths().api.base, prefixColor: 'cyan', }, From c34b9fff8819008a8f9ac3413770d1a1a4e3f02a Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Thu, 1 Feb 2024 21:13:38 +0100 Subject: [PATCH 061/119] fix(api-server): Remove duplicate command alias (#9950) --- packages/api-server/src/createServerHelpers.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/api-server/src/createServerHelpers.ts b/packages/api-server/src/createServerHelpers.ts index 1ec62083534d..a295f63c7495 100644 --- a/packages/api-server/src/createServerHelpers.ts +++ b/packages/api-server/src/createServerHelpers.ts @@ -87,7 +87,6 @@ export function resolveOptions( options: { host: { type: 'string', - short: 'p', }, port: { type: 'string', From cb2f220a745927d2f75085fb3668bb56e2f3db1e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 20:31:51 +0000 Subject: [PATCH 062/119] fix(deps): update dependency nodemailer to v6.9.9 [security] (#9951) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [nodemailer](https://nodemailer.com/) ([source](https://togithub.com/nodemailer/nodemailer)) | [`6.9.7` -> `6.9.9`](https://renovatebot.com/diffs/npm/nodemailer/6.9.7/6.9.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/nodemailer/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/nodemailer/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/nodemailer/6.9.7/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/nodemailer/6.9.7/6.9.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ### GitHub Vulnerability Alerts #### [GHSA-9h6g-pr28-7cqp](https://togithub.com/nodemailer/nodemailer/security/advisories/GHSA-9h6g-pr28-7cqp) ### Summary A ReDoS vulnerability occurs when nodemailer tries to parse img files with the parameter `attachDataUrls` set, causing the stuck of event loop. Another flaw was found when nodemailer tries to parse an attachments with a embedded file, causing the stuck of event loop. ### Details Regex: /^data:((?:[^;]*;)*(?:[^,]*)),(.*)$/ Path: compile -> getAttachments -> _processDataUrl Regex: /(]* src\s*=[\s"']*)(data:([^;]+);[^"'>\s]+)/ Path: _convertDataImages ### PoC https://gist.github.com/francoatmega/890dd5053375333e40c6fdbcc8c58df6 https://gist.github.com/francoatmega/9aab042b0b24968d7b7039818e8b2698 ### Impact ReDoS causes the event loop to stuck a specially crafted evil email can cause this problem. --- ### Release Notes
nodemailer/nodemailer (nodemailer) ### [`v6.9.9`](https://togithub.com/nodemailer/nodemailer/blob/HEAD/CHANGELOG.md#699-2024-02-01) [Compare Source](https://togithub.com/nodemailer/nodemailer/compare/v6.9.8...v6.9.9) ##### Bug Fixes - **security:** Fix issues described in GHSA-9h6g-pr28-7cqp. Do not use eternal matching pattern if only a few occurences are expected ([dd8f5e8](https://togithub.com/nodemailer/nodemailer/commit/dd8f5e8a4ddc99992e31df76bcff9c590035cd4a)) - **tests:** Use native node test runner, added code coverage support, removed grunt ([#​1604](https://togithub.com/nodemailer/nodemailer/issues/1604)) ([be45c1b](https://togithub.com/nodemailer/nodemailer/commit/be45c1b299d012358d69247019391a02734d70af)) ### [`v6.9.8`](https://togithub.com/nodemailer/nodemailer/blob/HEAD/CHANGELOG.md#698-2023-12-30) [Compare Source](https://togithub.com/nodemailer/nodemailer/compare/v6.9.7...v6.9.8) ##### Bug Fixes - **punycode:** do not use native punycode module ([b4d0e0c](https://togithub.com/nodemailer/nodemailer/commit/b4d0e0c7cc4b15bc4d9e287f91d1bcaca87508b0))
--- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/mailer/handlers/nodemailer/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/mailer/handlers/nodemailer/package.json b/packages/mailer/handlers/nodemailer/package.json index 58efef8045d2..1834b961f011 100644 --- a/packages/mailer/handlers/nodemailer/package.json +++ b/packages/mailer/handlers/nodemailer/package.json @@ -21,7 +21,7 @@ }, "dependencies": { "@redwoodjs/mailer-core": "6.0.7", - "nodemailer": "6.9.7" + "nodemailer": "6.9.9" }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", diff --git a/yarn.lock b/yarn.lock index 71cd0fc3812b..775babbca0e3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8439,7 +8439,7 @@ __metadata: "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" "@types/nodemailer": "npm:^6" - nodemailer: "npm:6.9.7" + nodemailer: "npm:6.9.9" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -25685,10 +25685,10 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:6.9.7": - version: 6.9.7 - resolution: "nodemailer@npm:6.9.7" - checksum: 5ea7f781782361890d4492dc2412496e89fb04c498814e6c4fe7b168a27d7491a00f725cf90c26768907506e8afb76e8cfe6f6300def9940bc7f7e323405eaa6 +"nodemailer@npm:6.9.9": + version: 6.9.9 + resolution: "nodemailer@npm:6.9.9" + checksum: ba72da4ca8a003921c86f3d132d64d9bb86c1a3d79d248664b3de28f6a7a621f0476273ad7cf3ecc48d3b78a66ae4ec62b7c4c8ab6f07d9ca26d4bad4d08802e languageName: node linkType: hard From e382268c6187e451e5b78a662f2b7a49a831eddb Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Thu, 1 Feb 2024 21:33:43 +0100 Subject: [PATCH 063/119] chore(test): Remove yarn.lock from some test fixtures (#9952) --- .../example-todo-main-with-errors/yarn.lock | 11850 ----- __fixtures__/example-todo-main/yarn.lock | 44266 ---------------- 2 files changed, 56116 deletions(-) delete mode 100644 __fixtures__/example-todo-main-with-errors/yarn.lock delete mode 100644 __fixtures__/example-todo-main/yarn.lock diff --git a/__fixtures__/example-todo-main-with-errors/yarn.lock b/__fixtures__/example-todo-main-with-errors/yarn.lock deleted file mode 100644 index ea99990a0058..000000000000 --- a/__fixtures__/example-todo-main-with-errors/yarn.lock +++ /dev/null @@ -1,11850 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@apexearth/copy@^1.4.5": - version "1.4.5" - resolved "https://registry.npmjs.org/@apexearth/copy/-/copy-1.4.5.tgz#966716249c831a168ef51eb224f53e0bb642ab79" - integrity sha512-Zws+jNVT54YUjBuNfDKje2uyoTQRYpIPMHDf6v6EI019ZqXnwYxb4/gZMlDjv+O+LnZbBn2Sc8DC5KAbcBNiaQ== - dependencies: - commander "^2.19.0" - mkdirp "^1.0.4" - prettysize "^2.0.0" - sleep-promise "^8.0.1" - -"@apollo/protobufjs@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.2.tgz#4bd92cd7701ccaef6d517cdb75af2755f049f87c" - integrity sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - -"@apollo/protobufjs@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.0.3.tgz#02c655aedd4ba7c7f64cbc3d2b1dd9a000a391ba" - integrity sha512-gqeT810Ect9WIqsrgfUvr+ljSB5m1PyBae9HGdrRyQ3HjHjTcjVvxpsMYXlUk4rUHnrfUqyoGvLSy2yLlRGEOw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - -"@apollo/react-common@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@apollo/react-common/-/react-common-3.1.3.tgz#ddc34f6403f55d47c0da147fd4756dfd7c73dac5" - integrity sha512-Q7ZjDOeqjJf/AOGxUMdGxKF+JVClRXrYBGVq+SuVFqANRpd68MxtVV2OjCWavsFAN0eqYnRqRUrl7vtUCiJqeg== - dependencies: - ts-invariant "^0.4.4" - tslib "^1.10.0" - -"@apollo/react-components@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@apollo/react-components/-/react-components-3.1.3.tgz#8f6726847cd9b0eb4b22586b1a038d29aa8b1da4" - integrity sha512-H0l2JKDQMz+LkM93QK7j3ThbNXkWQCduN3s3eKxFN3Rdg7rXsrikJWvx2wQ868jmqy0VhwJbS1vYdRLdh114uQ== - dependencies: - "@apollo/react-common" "^3.1.3" - "@apollo/react-hooks" "^3.1.3" - prop-types "^15.7.2" - ts-invariant "^0.4.4" - tslib "^1.10.0" - -"@apollo/react-hooks@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@apollo/react-hooks/-/react-hooks-3.1.3.tgz#ad42c7af78e81fee0f30e53242640410d5bd0293" - integrity sha512-reIRO9xKdfi+B4gT/o/hnXuopUnm7WED/ru8VQydPw+C/KG/05Ssg1ZdxFKHa3oxwiTUIDnevtccIH35POanbA== - dependencies: - "@apollo/react-common" "^3.1.3" - "@wry/equality" "^0.1.9" - ts-invariant "^0.4.4" - tslib "^1.10.0" - -"@apollographql/apollo-tools@^0.5.0": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz#cb3998c6cf12e494b90c733f44dd9935e2d8196c" - integrity sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw== - -"@apollographql/graphql-playground-html@1.6.24": - version "1.6.24" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.24.tgz#3ce939cb127fb8aaa3ffc1e90dff9b8af9f2e3dc" - integrity sha512-8GqG48m1XqyXh4mIZrtB5xOhUwSsh1WsrrsaZQOEYYql3YN9DEu9OOSg0ILzXHZo/h2Q74777YE4YzlArQzQEQ== - -"@apollographql/graphql-playground-html@1.6.27": - version "1.6.27" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz#bc9ab60e9445aa2a8813b4e94f152fa72b756335" - integrity sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw== - dependencies: - xss "^1.0.8" - -"@apollographql/graphql-upload-8-fork@^8.1.4": - version "8.1.4" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.4.tgz#898a6826cf53b13e42161884b0090d3bb8c8b2f3" - integrity sha512-lHAj/PUegYu02zza9Pg0bQQYH5I0ah1nyIzu2YIqOv41P0vu3GCBISAmQCfFHThK7N3dy7dLFPhoKcXlXRLPoQ== - dependencies: - "@types/express" "*" - "@types/fs-capacitor" "^2.0.0" - "@types/koa" "*" - busboy "^0.3.1" - fs-capacitor "^2.0.4" - http-errors "^1.7.3" - object-path "^0.11.4" - -"@babel/cli@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" - integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== - dependencies: - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.0.0" - lodash "^4.17.13" - make-dir "^2.1.0" - slash "^2.0.0" - source-map "^0.5.0" - optionalDependencies: - chokidar "^2.1.8" - -"@babel/code-frame@7.5.5": - version "7.5.5" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== - dependencies: - "@babel/highlight" "^7.8.3" - -"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" - integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== - dependencies: - browserslist "^4.9.1" - invariant "^2.2.4" - semver "^5.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.2.2", "@babel/core@^7.7.5", "@babel/core@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" - integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== - dependencies: - "@babel/types" "^7.9.0" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" - integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-builder-react-jsx-experimental@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" - integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-module-imports" "^7.8.3" - "@babel/types" "^7.9.0" - -"@babel/helper-builder-react-jsx@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" - integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/types" "^7.9.0" - -"@babel/helper-compilation-targets@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" - integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== - dependencies: - "@babel/compat-data" "^7.8.6" - browserslist "^4.9.1" - invariant "^2.2.4" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/helper-create-class-features-plugin@^7.8.3": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" - integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-map@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" - integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/types" "^7.8.3" - lodash "^4.17.13" - -"@babel/helper-explode-assignable-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" - integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== - dependencies: - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" - integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-hoist-variables@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" - integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" - integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-wrap-function" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" - integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== - -"@babel/helper-wrap-function@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" - integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.0.0", "@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/node@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.8.7.tgz#4213ea99f0c86cc1cf460e61131e7acbb723e13a" - integrity sha512-o8cBT3cfRPLwoPh7VBYonSeZypIawGUeVfOIt1xSDgcDdirRGDPZ7/x+FLhhgQmKp3PKbz5Juh9/BNP4Jzrr9Q== - dependencies: - "@babel/register" "^7.8.3" - commander "^4.0.1" - core-js "^3.2.1" - lodash "^4.17.13" - node-environment-flags "^1.0.5" - regenerator-runtime "^0.13.4" - resolve "^1.13.1" - v8flags "^3.1.1" - -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.3.2", "@babel/parser@^7.7.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== - -"@babel/plugin-proposal-async-generator-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" - integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - -"@babel/plugin-proposal-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz#5e06654af5cd04b608915aada9b2a6788004464e" - integrity sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-proposal-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" - integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - -"@babel/plugin-proposal-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" - integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.0" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" - integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - -"@babel/plugin-proposal-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" - integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - -"@babel/plugin-proposal-object-rest-spread@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" - integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - -"@babel/plugin-proposal-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" - integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - -"@babel/plugin-proposal-optional-chaining@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" - integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-dynamic-import@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-json-strings@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" - integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-typescript@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" - integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-arrow-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" - integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-async-to-generator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" - integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-remap-async-to-generator" "^7.8.3" - -"@babel/plugin-transform-block-scoped-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" - integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-block-scoping@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" - integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - lodash "^4.17.13" - -"@babel/plugin-transform-classes@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" - integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-define-map" "^7.8.3" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-split-export-declaration" "^7.8.3" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" - integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-destructuring@^7.8.3": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" - integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-duplicate-keys@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" - integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-exponentiation-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" - integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-for-of@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" - integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-function-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" - integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== - dependencies: - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" - integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-member-expression-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" - integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-modules-amd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" - integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" - integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" - integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== - dependencies: - "@babel/helper-hoist-variables" "^7.8.3" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" - -"@babel/plugin-transform-modules-umd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" - integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== - dependencies: - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" - integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - -"@babel/plugin-transform-new-target@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" - integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-object-super@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" - integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.8.7": - version "7.9.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" - integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-property-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" - integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-display-name@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" - integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-react-jsx-development@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" - integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== - dependencies: - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx-self@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" - integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx-source@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" - integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-react-jsx@^7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" - integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== - dependencies: - "@babel/helper-builder-react-jsx" "^7.9.0" - "@babel/helper-builder-react-jsx-experimental" "^7.9.0" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-jsx" "^7.8.3" - -"@babel/plugin-transform-regenerator@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" - integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" - integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-runtime@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz#45468c0ae74cc13204e1d3b1f4ce6ee83258af0b" - integrity sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - resolve "^1.8.1" - semver "^5.5.1" - -"@babel/plugin-transform-shorthand-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" - integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" - integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-sticky-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" - integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - -"@babel/plugin-transform-template-literals@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" - integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typeof-symbol@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" - integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-typescript@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz#4bb4dde4f10bbf2d787fce9707fb09b483e33359" - integrity sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-typescript" "^7.8.3" - -"@babel/plugin-transform-unicode-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" - integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/preset-env@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" - integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== - dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-proposal-async-generator-functions" "^7.8.3" - "@babel/plugin-proposal-dynamic-import" "^7.8.3" - "@babel/plugin-proposal-json-strings" "^7.8.3" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" - "@babel/plugin-proposal-optional-chaining" "^7.9.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" - "@babel/plugin-syntax-async-generators" "^7.8.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.0" - "@babel/plugin-syntax-json-strings" "^7.8.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" - "@babel/plugin-syntax-numeric-separator" "^7.8.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.0" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - "@babel/plugin-transform-arrow-functions" "^7.8.3" - "@babel/plugin-transform-async-to-generator" "^7.8.3" - "@babel/plugin-transform-block-scoped-functions" "^7.8.3" - "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.9.0" - "@babel/plugin-transform-computed-properties" "^7.8.3" - "@babel/plugin-transform-destructuring" "^7.8.3" - "@babel/plugin-transform-dotall-regex" "^7.8.3" - "@babel/plugin-transform-duplicate-keys" "^7.8.3" - "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.9.0" - "@babel/plugin-transform-function-name" "^7.8.3" - "@babel/plugin-transform-literals" "^7.8.3" - "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" - "@babel/plugin-transform-modules-umd" "^7.9.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" - "@babel/plugin-transform-new-target" "^7.8.3" - "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.7" - "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.7" - "@babel/plugin-transform-reserved-words" "^7.8.3" - "@babel/plugin-transform-shorthand-properties" "^7.8.3" - "@babel/plugin-transform-spread" "^7.8.3" - "@babel/plugin-transform-sticky-regex" "^7.8.3" - "@babel/plugin-transform-template-literals" "^7.8.3" - "@babel/plugin-transform-typeof-symbol" "^7.8.4" - "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.0" - browserslist "^4.9.1" - core-js-compat "^3.6.2" - invariant "^2.2.2" - levenary "^1.1.1" - semver "^5.5.0" - -"@babel/preset-modules@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" - integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.9.4": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" - integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-react-display-name" "^7.8.3" - "@babel/plugin-transform-react-jsx" "^7.9.4" - "@babel/plugin-transform-react-jsx-development" "^7.9.0" - "@babel/plugin-transform-react-jsx-self" "^7.9.0" - "@babel/plugin-transform-react-jsx-source" "^7.9.0" - -"@babel/preset-typescript@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" - integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-transform-typescript" "^7.9.0" - -"@babel/register@^7.8.3", "@babel/register@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b" - integrity sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q== - dependencies: - find-cache-dir "^2.0.0" - lodash "^4.17.13" - make-dir "^2.1.0" - pirates "^4.0.0" - source-map-support "^0.5.16" - -"@babel/runtime-corejs3@^7.7.4", "@babel/runtime-corejs3@^7.8.3", "@babel/runtime-corejs3@^7.9.2": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz#26fe4aa77e9f1ecef9b776559bbb8e84d34284b7" - integrity sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA== - dependencies: - core-js-pure "^3.0.0" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.4.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" - integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-function-name" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.0" - debug "^4.1.0" - globals "^11.1.0" - lodash "^4.17.13" - -"@babel/types@^7.0.0", "@babel/types@^7.1.6", "@babel/types@^7.3.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" - integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@emotion/is-prop-valid@^0.8.8": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/stylis@^0.8.4": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== - -"@emotion/unitless@^0.7.4": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@graphql-toolkit/common@0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@graphql-toolkit/common/-/common-0.9.0.tgz#24d1744fa0d6b9331e8032097fcebb74390bad92" - integrity sha512-bLuyt4yV/XIHUS+gP4aF5xjnb5M2K+uuB35Hojw0er+tkNhWiOuWQzRMWPovds/4WN2C9PuknQby/+ntgBOm/g== - dependencies: - "@kamilkisiela/graphql-tools" "4.0.6" - aggregate-error "3.0.1" - lodash "4.17.15" - -"@graphql-toolkit/file-loading@0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@graphql-toolkit/file-loading/-/file-loading-0.9.0.tgz#745cfe22adb0d710d09f43bdd67a2d9b54e0257a" - integrity sha512-Vs7n8VsZm1Oyw/1kKy/Y7fE8CznFA4SK4SEnWll9gpCmVE2vbATUYUlqSqm/W2npDdYB3FODEzhr5HIsQrjg6g== - dependencies: - globby "11.0.0" - unixify "1.0.0" - -"@graphql-toolkit/schema-merging@0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@graphql-toolkit/schema-merging/-/schema-merging-0.9.0.tgz#f4fb380e6be57e0235c25a77fc0aec842414c27e" - integrity sha512-vrzkqkFXxZ4dXQrHeNGDDWONbOAVDeJmGPwK0cRu2aVszftvkYVJXBrmkMYzZJHwk+tGVkNywf1r00GR6prpOw== - dependencies: - "@graphql-toolkit/common" "0.9.0" - "@kamilkisiela/graphql-tools" "4.0.6" - deepmerge "4.2.2" - tslib "1.10.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.2.3.tgz#38ac19b916ff61457173799239472659e1a67c39" - integrity sha512-k+37B1aSvOt9tKHWbZZSOy1jdgzesB0bj96igCVUG1nAH1W5EoUfgc5EXbBVU08KSLvkVdWopLXaO3xfVGlxtQ== - dependencies: - "@jest/source-map" "^25.2.1" - chalk "^3.0.0" - jest-util "^25.2.3" - slash "^3.0.0" - -"@jest/core@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.2.4.tgz#382ef80369d3311f1df79db1ee19e958ae95cdad" - integrity sha512-WcWYShl0Bqfcb32oXtjwbiR78D/djhMdJW+ulp4/bmHgeODcsieqUJfUH+kEv8M7VNV77E6jds5aA+WuGh1nmg== - dependencies: - "@jest/console" "^25.2.3" - "@jest/reporters" "^25.2.4" - "@jest/test-result" "^25.2.4" - "@jest/transform" "^25.2.4" - "@jest/types" "^25.2.3" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.2.3" - jest-config "^25.2.4" - jest-haste-map "^25.2.3" - jest-message-util "^25.2.4" - jest-regex-util "^25.2.1" - jest-resolve "^25.2.3" - jest-resolve-dependencies "^25.2.4" - jest-runner "^25.2.4" - jest-runtime "^25.2.4" - jest-snapshot "^25.2.4" - jest-util "^25.2.3" - jest-validate "^25.2.3" - jest-watcher "^25.2.4" - micromatch "^4.0.2" - p-each-series "^2.1.0" - realpath-native "^2.0.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.2.4.tgz#74f4d8dd87b427434d0b822cde37bc0e78f3e28b" - integrity sha512-wA4xlhD19/gukkDpJ5HQsTle0pgnzI5qMFEjw267lpTDC8d9N7Ihqr5pI+l0p8Qn1SQhai+glSqxrGdzKy4jxw== - dependencies: - "@jest/fake-timers" "^25.2.4" - "@jest/types" "^25.2.3" - jest-mock "^25.2.3" - -"@jest/fake-timers@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.2.4.tgz#6821b6edde74fda2a42467ae92cc93095d4c9527" - integrity sha512-oC1TJiwfMcBttVN7Wz+VZnqEAgYTiEMu0QLOXpypR89nab0uCB31zm/QeBZddhSstn20qe3yqOXygp6OwvKT/Q== - dependencies: - "@jest/types" "^25.2.3" - jest-message-util "^25.2.4" - jest-mock "^25.2.3" - jest-util "^25.2.3" - lolex "^5.0.0" - -"@jest/reporters@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.2.4.tgz#aa01c20aab217150d3a6080d5c98ce0bf34b17ed" - integrity sha512-VHbLxM03jCc+bTLOluW/IqHR2G0Cl0iATwIQbuZtIUast8IXO4fD0oy4jpVGpG5b20S6REA8U3BaQoCW/CeVNQ== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.2.3" - "@jest/test-result" "^25.2.4" - "@jest/transform" "^25.2.4" - "@jest/types" "^25.2.3" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.0" - jest-haste-map "^25.2.3" - jest-resolve "^25.2.3" - jest-util "^25.2.3" - jest-worker "^25.2.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^3.1.0" - terminal-link "^2.0.0" - v8-to-istanbul "^4.0.1" - optionalDependencies: - node-notifier "^6.0.0" - -"@jest/source-map@^25.2.1": - version "25.2.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.1.tgz#b62ecf8ae76170b08eff8859b56eb7576df34ab8" - integrity sha512-PgScGJm1U27+9Te/cxP4oUFqJ2PX6NhBL2a6unQ7yafCgs8k02c0LSyjSIx/ao0AwcAdCczfAPDf5lJ7zoB/7A== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.3" - source-map "^0.6.0" - -"@jest/test-result@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.2.4.tgz#8fc9eac58e82eb2a82e4058e68c3814f98f59cf5" - integrity sha512-AI7eUy+q2lVhFnaibDFg68NGkrxVWZdD6KBr9Hm6EvN0oAe7GxpEwEavgPfNHQjU2mi6g+NsFn/6QPgTUwM1qg== - dependencies: - "@jest/console" "^25.2.3" - "@jest/transform" "^25.2.4" - "@jest/types" "^25.2.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.2.4.tgz#28364aeddec140c696324114f63570f3de536c87" - integrity sha512-TEZm/Rkd6YgskdpTJdYLBtu6Gc11tfWPuSpatq0duH77ekjU8dpqX2zkPdY/ayuHxztV5LTJoV5BLtI9mZfXew== - dependencies: - "@jest/test-result" "^25.2.4" - jest-haste-map "^25.2.3" - jest-runner "^25.2.4" - jest-runtime "^25.2.4" - -"@jest/transform@^25.2.4": - version "25.2.4" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.2.4.tgz#34336f37f13f62f7d1f5b93d5d150ba9eb3e11b9" - integrity sha512-6eRigvb+G6bs4kW5j1/y8wu4nCrmVuIe0epPBbiWaYlwawJ8yi1EIyK3d/btDqmBpN5GpN4YhR6iPPnDmkYdTA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^25.2.3" - babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.2.3" - jest-regex-util "^25.2.1" - jest-util "^25.2.3" - micromatch "^4.0.2" - pirates "^4.0.1" - realpath-native "^2.0.0" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^25.2.3": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.2.3.tgz#035c4fb94e2da472f359ff9a211915d59987f6b6" - integrity sha512-6oLQwO9mKif3Uph3RX5J1i3S7X7xtDHWBaaaoeKw8hOzV6YUd0qDcYcHZ6QXMHDIzSr7zzrEa51o2Ovlj6AtKQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@josephg/resolvable@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" - integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== - -"@kamilkisiela/graphql-tools@4.0.6": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@kamilkisiela/graphql-tools/-/graphql-tools-4.0.6.tgz#6dcf4d18bedaf34f6ab1d5bad2414e530d0875d1" - integrity sha512-IPWa+dOFCE4zaCsrJrAMp7yWXnfOZLNhqoMEOmn958WkLM0mmsDc/W/Rh7/7xopIT6P0oizb6/N1iH5HnNXOUA== - dependencies: - apollo-link "^1.2.3" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== - dependencies: - "@nodelib/fs.stat" "2.0.3" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== - dependencies: - "@nodelib/fs.scandir" "2.1.3" - fastq "^1.6.0" - -"@prisma/cli@2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/cli/-/cli-2.0.0-beta.5.tgz#9116e9ba08131fce47bb96d9bc19e8a443a2b893" - integrity sha512-Kl3IqOq6sYdajnLA034SLJxFCB0IxXcrSLYR8W9XTOyt3RRP/TCUPp5yBVfO9B21Kwe9YrFujTbSD2qQaDg1QA== - -"@prisma/client@2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/client/-/client-2.0.0-beta.5.tgz#e2192831e868c4c65257b7dd2c679234f1fcdf4a" - integrity sha512-Ov7rOV5h+nu+zSFG61OvOTsDjQX+QSa8AI0sYbNSsfL9MvEMtb7mMCiGsQRdHGvxbqErFuqlN83+eUCR/umb1Q== - -"@prisma/engine-core@2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/engine-core/-/engine-core-2.0.0-beta.5.tgz#f997e0fbe89e4d7f3ccdece7a49cd83b0b499b15" - integrity sha512-d876+85Mev1LKqFRcDXOpimJJVzOISxG+g5cZhitAtCu5c+gOQExA3u9r7+zxZVWRDcsfKLSClwmfTeTUeyOQA== - dependencies: - "@prisma/generator-helper" "2.0.0-beta.5" - "@prisma/get-platform" "2.0.0-beta.5" - bent "^7.1.2" - chalk "^3.0.0" - cross-fetch "^3.0.4" - debug "^4.1.1" - indent-string "^4.0.0" - -"@prisma/fetch-engine@2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-2.0.0-beta.5.tgz#633c2bd54da6d617d23029823c7520d3928c9aec" - integrity sha512-h+4TqVhfVmRJg18wE3mv7V34A3IOWzCrOieFi5hqBgFREvuvWbSsfPWp61gsOZQy8x/mRft3iTpu9qRM5m+lPw== - dependencies: - "@prisma/get-platform" "2.0.0-beta.5" - chalk "^4.0.0" - debug "^4.1.1" - execa "^4.0.0" - find-cache-dir "^3.3.1" - hasha "^5.2.0" - htmlparser2 "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - make-dir "^3.0.2" - node-fetch "^2.6.0" - p-filter "^2.1.0" - p-map "^4.0.0" - p-retry "^4.2.0" - progress "^2.0.3" - rimraf "^3.0.2" - tempy "^0.5.0" - -"@prisma/generator-helper@2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/generator-helper/-/generator-helper-2.0.0-beta.5.tgz#d1103eb4e07072ab4d843319249938b9968d211d" - integrity sha512-pL25Wn7ybVrw74PI/smiNkKFhE/mVvHZsGCVq9sQxEJMV5KkCnb6DmWdE5EWsO5oiZpF74vgoV4XEZY9DGSscw== - dependencies: - "@types/cross-spawn" "^6.0.1" - chalk "^3.0.0" - cross-spawn "^7.0.2" - debug "4.1.1" - isbinaryfile "^4.0.6" - -"@prisma/get-platform@2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-2.0.0-beta.5.tgz#8798ad177684255326d3630348ea237664508224" - integrity sha512-/NgR0cMJeFz2IzLz2gNGBMfeOK4CjRtsJWTkcpVruqMX366sUDf/JV/SlfrkzRWHedbxRvp2X7DIDW4QHsUPyQ== - dependencies: - debug "^4.1.1" - -"@prisma/sdk@^2.0.0-beta.5": - version "2.0.0-beta.5" - resolved "https://registry.npmjs.org/@prisma/sdk/-/sdk-2.0.0-beta.5.tgz#1cfaf692b8b19c8cc0d2170c59ae049ad17cf93f" - integrity sha512-OLaoHWhI5/Lx9DOMRVEQ4VsAJeVn3ZyILc7aVWhyP7VN+6blbOMJKqQlcelecoEBMELY58IrM9r35+u6I5p2Sg== - dependencies: - "@apexearth/copy" "^1.4.5" - "@prisma/engine-core" "2.0.0-beta.5" - "@prisma/fetch-engine" "2.0.0-beta.5" - "@prisma/generator-helper" "2.0.0-beta.5" - "@prisma/get-platform" "2.0.0-beta.5" - archiver "^3.1.1" - arg "^4.1.3" - chalk "3.0.0" - checkpoint-client "^1.0.7" - cli-truncate "^2.1.0" - execa "^4.0.0" - globby "^9.2.0" - has-yarn "^2.1.0" - make-dir "^3.0.2" - node-fetch "2.6.0" - p-map "^4.0.0" - read-pkg-up "^7.0.1" - resolve-pkg "^2.0.0" - rimraf "^3.0.2" - string-width "^4.2.0" - strip-ansi "6.0.0" - strip-indent "3.0.0" - tar "^6.0.1" - temp-dir "^2.0.0" - temp-write "^4.0.0" - tempy "^0.5.0" - terminal-link "^2.1.1" - tmp "0.1.0" - url-parse "^1.4.7" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha1-m4sMxmPWaafY9vXQiToU00jzD78= - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha1-NVy8mLr61ZePntCV85diHx0Ga3A= - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU= - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E= - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik= - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha1-bMKyDFya1q0NzP0hynZz2Nf79o0= - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q= - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= - -"@redwoodjs/api@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/api/-/api-0.7.0.tgz#36143a25136785c6ce821c218c2dcb714972025d" - integrity sha512-qV7tXe67qvWsavlr3jMlJu6HFUQayEJJH3q9BemSm8S0/LpNqvL17K8Llseg31dbJUk+hNenbPBBIzVzEh0X1w== - dependencies: - "@prisma/client" "2.0.0-beta.5" - "@redwoodjs/internal" "^0.7.0" - apollo-server-lambda "2.11.0" - babel-plugin-macros "^2.8.0" - core-js "3.6.4" - glob "^7.1.6" - graphql "^14.6.0" - graphql-iso-date "^3.6.1" - graphql-tools "4.0.7" - jsonwebtoken "^8.5.1" - jwks-rsa "^1.8.0" - lodash.merge "^4.6.2" - lodash.omitby "^4.6.0" - merge-graphql-schemas "^1.7.6" - -"@redwoodjs/cli@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/cli/-/cli-0.7.0.tgz#6f59ec9262fa2cd85e5b6034de46d7cb36943c2d" - integrity sha512-t23pTARuDPfTfG7ih2SUKCsYOQYfQY9AsS6E+v1zk5TbbgPAXo6PPOQwF9IUnaDocAAiUv2HlJnmvLjGqWoXwg== - dependencies: - "@prisma/sdk" "^2.0.0-beta.5" - "@redwoodjs/internal" "^0.7.0" - camelcase "^5.3.1" - chalk "^3.0.0" - concurrently "^5.1.0" - core-js "3.6.4" - cross-env "^7.0.2" - decamelize "^4.0.0" - dotenv-defaults "^1.1.1" - envinfo "^7.5.1" - execa "^4.0.0" - humanize-string "^2.1.0" - listr "^0.14.3" - listr-verbose-renderer "^0.6.0" - lodash "^4.17.15" - param-case "^3.0.3" - pascalcase "^1.0.0" - pluralize "^8.0.0" - prettier "^2.0.2" - yargs "^15.3.1" - -"@redwoodjs/core@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/core/-/core-0.7.0.tgz#9797280673b338e54b6226eb6058fe92b6e54b22" - integrity sha512-kgDg1CNafOI3dLIy6PzwORtPe4+4Pu6rZgDQxKKnUM2yJ83wgmCKs9lXMdyouDOUKOuSzLLSssiD83W+7TCVnA== - dependencies: - "@babel/cli" "^7.8.4" - "@babel/core" "^7.9.0" - "@babel/node" "^7.8.7" - "@babel/plugin-proposal-class-properties" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.9.0" - "@babel/preset-env" "^7.9.0" - "@babel/preset-react" "^7.9.4" - "@babel/preset-typescript" "^7.9.0" - "@babel/runtime-corejs3" "^7.9.2" - "@prisma/cli" "2.0.0-beta.5" - "@redwoodjs/cli" "^0.7.0" - "@redwoodjs/dev-server" "^0.7.0" - "@redwoodjs/eslint-config" "^0.7.0" - "@redwoodjs/internal" "^0.7.0" - "@testing-library/jest-dom" "^5.3.0" - "@testing-library/react" "^10.0.1" - "@types/jest" "^25.1.4" - "@types/node" "^13.9.5" - "@types/react" "16.9.34" - "@types/react-dom" "16.9.7" - "@types/webpack" "^4.41.11" - babel-jest "^25.2.3" - babel-loader "^8.1.0" - babel-plugin-auto-import "^1.0.5" - babel-plugin-graphql-tag "^2.5.0" - babel-plugin-module-resolver "^4.0.0" - copy-webpack-plugin "^5.1.1" - core-js "3.6.4" - css-loader "^3.4.2" - directory-named-webpack-plugin "^4.0.1" - dotenv-webpack "^1.7.0" - error-overlay-webpack-plugin "^0.4.1" - file-loader "^6.0.0" - findup-sync "^4.0.0" - graphql "^14.6.0" - graphql-tag "^2.10.3" - html-webpack-plugin "^4.0.2" - jest "^25.2.3" - jest-directory-named-resolver "^0.3.0" - lodash.escaperegexp "^4.1.2" - mini-css-extract-plugin "^0.9.0" - style-loader "^1.1.3" - svg-react-loader "^0.4.6" - typescript "^3.8.3" - url-loader "4.0.0" - webpack "^4.42.1" - webpack-bundle-analyzer "^3.6.1" - webpack-cli "^3.3.11" - webpack-dev-server "^3.10.3" - webpack-merge "^4.2.2" - -"@redwoodjs/dev-server@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/dev-server/-/dev-server-0.7.0.tgz#fe62336abd0ef31a4a033ddd13f3ff7ced8bee2b" - integrity sha512-MAJQlyMLP5JbXxZWsGC14vwrpOPmU6XSxTA++GTDLPXWDxdhGd43RFpx6jFxs82O4mKzWvs3Y03hakACxzO5CA== - dependencies: - "@babel/register" "^7.9.0" - "@redwoodjs/internal" "^0.7.0" - args "^5.0.1" - body-parser "^1.19.0" - chokidar "^3.3.1" - express "^4.17.1" - morgan "^1.10.0" - qs "^6.9.3" - require-dir "^1.2.0" - -"@redwoodjs/eslint-config@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/eslint-config/-/eslint-config-0.7.0.tgz#db8fbfc718e041cc01bc6c8ab7164694786c2a81" - integrity sha512-CIoxRpSAY4uiJRKLGcLpli3zsWVSiy43D/kQgA1UhJgxtPfIo7Re33FBqdz+qFEN2RbtttM6/pT/+/NSb/zGsQ== - dependencies: - "@redwoodjs/eslint-plugin-redwood" "^0.7.0" - "@typescript-eslint/eslint-plugin" "^2.27.0" - "@typescript-eslint/parser" "^2.27.0" - babel-eslint "^10.1.0" - eslint "6.8.0" - eslint-config-prettier "^6.10.1" - eslint-import-resolver-babel-module "^5.1.2" - eslint-plugin-babel "^5.3.0" - eslint-plugin-import "^2.20.2" - eslint-plugin-jest-dom "^2.0.1" - eslint-plugin-jsx-a11y "^6.2.3" - eslint-plugin-prettier "^3.1.3" - eslint-plugin-react "^7.19.0" - eslint-plugin-react-hooks "^3.0.0" - prettier "^2.0.5" - -"@redwoodjs/eslint-plugin-redwood@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/eslint-plugin-redwood/-/eslint-plugin-redwood-0.7.0.tgz#4d9527b3aaddac8fe0db806df40073e67da79711" - integrity sha512-sOpipPHQ6CsvbEjM5cx6471sCfsOftPZGqYEFjz9uwQHnZrJ9QVgSOuldlh4jGpysTLyrmRAlPX1jQjxvM4fXA== - -"@redwoodjs/internal@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/internal/-/internal-0.7.0.tgz#c708878421f985c74bb947021add9dd965d7b04a" - integrity sha512-VnJk1IrbNhMFK+l1/gF3ScNBsx19+sVnuiKCNAGFJMIDQReaZSQC3FOux9IVgJJCN2AgMnp/X8q+Bz4TQ6gHvA== - dependencies: - findup-sync "^4.0.0" - toml "^3.0.0" - -"@redwoodjs/router@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/router/-/router-0.7.0.tgz#2619dcff7e9ef4813f1c3b101dac73cae619a371" - integrity sha512-UQl1zunoAHA1NdRvmU3Lv9N5nJ/Z/fQWNT+87R1jRl8yNiW7kxggR2m3RheeyfUxZyGaGrT2HJpX5A7we+20uA== - dependencies: - core-js "3.6.4" - -"@redwoodjs/web@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@redwoodjs/web/-/web-0.7.0.tgz#dfacca767db1e70df1d3e84288a74989aefff63e" - integrity sha512-6fy/9xdZlNIrWZtjDTdZoOX40OSn8eiE7bvhrCgjgzoAAu7vZBSeujkBFTS+Wg+9pblQHN6IQfyM+EqRDJgShw== - dependencies: - "@apollo/react-components" "^3.1.3" - "@apollo/react-hooks" "^3.1.3" - "@types/react" "16.9.34" - apollo-boost "0.4.7" - apollo-cache "^1.3.4" - apollo-client "^2.6.8" - apollo-link "^1.2.13" - apollo-utilities "^1.3.3" - core-js "3.6.4" - graphql "^14.6.0" - proptypes "^1.1.0" - react-hook-form "^5.1.3" - -"@rollup/plugin-commonjs@11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.1.tgz#6056a6757286901cc6c1599123e6680a78cad6c2" - integrity sha512-SaVUoaLDg3KnIXC5IBNIspr1APTYDzk05VaYcI6qz+0XX3ZlSCwAkfAhNSOxfd5GAdcm/63Noi4TowOY9MpcDg== - dependencies: - "@rollup/pluginutils" "^3.0.0" - estree-walker "^0.6.1" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - -"@rollup/plugin-json@4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.0.1.tgz#223898c6c37993886da06989b0e93ceef52aa3ce" - integrity sha512-soxllkhOGgchswBAAaTe7X9G80U2tjjHvXv0sBrriLJcC/89PkP59iTrKPOfbz3SjX088mKDmMhAscuyLz8ZSg== - dependencies: - rollup-pluginutils "^2.5.0" - -"@rollup/plugin-node-resolve@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.0.0.tgz#cce3826df801538b001972fbf9b6b1c22b69fdf8" - integrity sha512-+vOx2+WMBMFotYKM3yYeDGZxIvcQ7yO4g+SuKDFsjKaq8Lw3EPgfB6qNlp8Z/3ceDCEhHvC9/b+PgBGwDQGbzQ== - dependencies: - "@rollup/pluginutils" "^3.0.0" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.11.1" - -"@rollup/plugin-sucrase@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-sucrase/-/plugin-sucrase-3.0.0.tgz#e46735dd9d938fce28413cd27470fe364b3cb2dd" - integrity sha512-sUQkoAXdw+bnd/cNZHGy5yQKW6OYYU7QlYBGhReI95uZljxO8t1LlbqCO2viIMV/u9pcCjgi8N9PcApcrJCA8Q== - dependencies: - "@rollup/pluginutils" "^3.0.1" - sucrase "^3.10.1" - -"@rollup/pluginutils@^3.0.0", "@rollup/pluginutils@^3.0.1": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.0.8.tgz#4e94d128d94b90699e517ef045422960d18c8fde" - integrity sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw== - dependencies: - estree-walker "^1.0.1" - -"@samverschueren/stream-to-observable@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" - integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== - dependencies: - any-observable "^0.3.0" - -"@sinonjs/commons@^1.7.0": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1" - integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ== - dependencies: - type-detect "4.0.8" - -"@testing-library/dom@^7.1.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.2.0.tgz#948894c2ef52017d299c35da02e085498363cd1e" - integrity sha512-K1Sao38VxsTrjTkFkzeW8m/oCtgCI5lANCE7u9ZaF+TTL3uKuiZ+vazeurxjvRHAsE6PvXjOIl6JFuZfgcWJSQ== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__dom" "^7.0.0" - aria-query "^4.0.2" - dom-accessibility-api "^0.4.2" - pretty-format "^25.1.0" - -"@testing-library/jest-dom@^5.3.0": - version "5.3.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.3.0.tgz#2ae813b8b0eb69e8808f75d3af8efa3f0dc4d7ec" - integrity sha512-Cdhpc3BHL888X55qBNyra9eM0UG63LCm/FqCWTa1Ou/0MpsUbQTM9vW1NU6/jBQFoSLgkFfDG5XVpm2V0dOm/A== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.0.2" - chalk "^3.0.0" - css "^2.2.4" - css.escape "^1.5.1" - jest-diff "^25.1.0" - jest-matcher-utils "^25.1.0" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^10.0.1": - version "10.0.2" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.0.2.tgz#8eca7aa52d810cf7150048a2829fdc487162006d" - integrity sha512-YT6Mw0oJz7R6vlEkmo1FlUD+K15FeXApOB5Ffm9zooFVnrwkt00w18dUJFMOh1yRp9wTdVRonbor7o4PIpFCmA== - dependencies: - "@babel/runtime" "^7.9.2" - "@testing-library/dom" "^7.1.0" - "@types/testing-library__react" "^10.0.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@types/accepts@*": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" - integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== - dependencies: - "@types/node" "*" - -"@types/anymatch@*": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" - integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== - -"@types/aws-lambda@^8.10.31": - version "8.10.47" - resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.47.tgz#9ec9e730e78d1f3180be37cf55ab0815b96b225d" - integrity sha512-FIZjS1alDbH7qFpJxghmyS2g7h+DJjBj6Qhf2F4Nkz4LR+alTSvThQEAR2j9yRt7qlxDDxK/EagXDCURRSxo8A== - -"@types/babel__core@^7.1.0": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.9.tgz#be82fab304b141c3eee81a4ce3b034d0eba1590a" - integrity sha512-jEFQ8L1tuvPjOI8lnpaf73oCJe+aoxL6ygqSy6c8LcW98zaC+4mzWuQIRCEvKeCOu+lbqdXcg4Uqmm1S8AP1tw== - dependencies: - "@babel/types" "^7.3.0" - -"@types/body-parser@*": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" - integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/connect@*": - version "3.4.33" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.33.tgz#31610c901eca573b8713c3330abc6e6b9f588546" - integrity sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A== - dependencies: - "@types/node" "*" - -"@types/content-disposition@*": - version "0.5.3" - resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" - integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== - -"@types/cookies@*": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.4.tgz#26dedf791701abc0e36b5b79a5722f40e455f87b" - integrity sha512-oTGtMzZZAVuEjTwCjIh8T8FrC8n/uwy+PG0yTvQcdZ7etoel7C7/3MSd7qrukENTgQtotG7gvBlBojuVs7X5rw== - dependencies: - "@types/connect" "*" - "@types/express" "*" - "@types/keygrip" "*" - "@types/node" "*" - -"@types/cross-spawn@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.1.tgz#60fa0c87046347c17d9735e5289e72b804ca9b63" - integrity sha512-MtN1pDYdI6D6QFDzy39Q+6c9rl2o/xN7aWGe6oZuzqq5N6+YuwFsWiEAv3dNzvzN9YzU+itpN8lBzFpphQKLAw== - dependencies: - "@types/node" "*" - -"@types/eslint-visitor-keys@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" - integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== - -"@types/estree@*": - version "0.0.44" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.44.tgz#980cc5a29a3ef3bea6ff1f7d021047d7ea575e21" - integrity sha512-iaIVzr+w2ZJ5HkidlZ3EJM8VTZb2MJLCjw3V+505yVts0gRC4UMvjw0d1HPtGqI/HQC/KdsYtayfzl+AXY2R8g== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/express-jwt@0.0.42": - version "0.0.42" - resolved "https://registry.npmjs.org/@types/express-jwt/-/express-jwt-0.0.42.tgz#4f04e1fadf9d18725950dc041808a4a4adf7f5ae" - integrity sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag== - dependencies: - "@types/express" "*" - "@types/express-unless" "*" - -"@types/express-serve-static-core@*": - version "4.17.3" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.3.tgz#dc8068ee3e354d7fba69feb86b3dfeee49b10f09" - integrity sha512-sHEsvEzjqN+zLbqP+8OXTipc10yH1QLR+hnr5uw29gi9AhCAAAdri8ClNV7iMdrJrIzXIQtlkPvq8tJGhj3QJQ== - dependencies: - "@types/node" "*" - "@types/range-parser" "*" - -"@types/express-unless@*": - version "0.5.1" - resolved "https://registry.npmjs.org/@types/express-unless/-/express-unless-0.5.1.tgz#4f440b905e42bbf53382b8207bc337dc5ff9fd1f" - integrity sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw== - dependencies: - "@types/express" "*" - -"@types/express@*": - version "4.17.4" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.4.tgz#e78bf09f3f530889575f4da8a94cd45384520aac" - integrity sha512-DO1L53rGqIDUEvOjJKmbMEQ5Z+BM2cIEPy/eV3En+s166Gz+FeuzRerxcab757u/U4v4XF4RYrZPmqKa+aY/2w== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "*" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/fs-capacitor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e" - integrity sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/html-minifier-terser@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.0.0.tgz#7532440c138605ced1b555935c3115ddd20e8bef" - integrity sha512-q95SP4FdkmF0CwO0F2q0H6ZgudsApaY/yCtAQNRn1gduef5fGpyEphzy0YCq/N0UFvDSnLg5V8jFK/YGXlDiCw== - -"@types/http-assert@*": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" - integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/jest@*", "@types/jest@^25.1.4": - version "25.1.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.1.4.tgz#9e9f1e59dda86d3fd56afce71d1ea1b331f6f760" - integrity sha512-QDDY2uNAhCV7TMCITrxz+MRk1EizcsevzfeS6LykIlq2V1E5oO4wXG8V2ZEd9w7Snxeeagk46YbMgZ8ESHx3sw== - dependencies: - jest-diff "^25.1.0" - pretty-format "^25.1.0" - -"@types/json-schema@^7.0.3": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" - integrity sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA== - -"@types/keygrip@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" - integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== - -"@types/koa-compose@*": - version "3.2.5" - resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" - integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== - dependencies: - "@types/koa" "*" - -"@types/koa@*": - version "2.11.3" - resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.3.tgz#540ece376581b12beadf9a417dd1731bc31c16ce" - integrity sha512-ABxVkrNWa4O/Jp24EYI/hRNqEVRlhB9g09p48neQp4m3xL1TJtdWk2NyNQSMCU45ejeELMQZBYyfstyVvO2H3Q== - dependencies: - "@types/accepts" "*" - "@types/content-disposition" "*" - "@types/cookies" "*" - "@types/http-assert" "*" - "@types/keygrip" "*" - "@types/koa-compose" "*" - "@types/node" "*" - -"@types/long@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" - integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== - -"@types/mime@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" - integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*", "@types/node@>=6", "@types/node@^13.9.5": - version "13.9.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.8.tgz#09976420fc80a7a00bf40680c63815ed8c7616f4" - integrity sha512-1WgO8hsyHynlx7nhP1kr0OFzsgKz5XDQL+Lfc3b1Q3qIln/n8cKD4m09NJ0+P1Rq7Zgnc7N0+SsMnoD1rEb0kA== - -"@types/node@^10.1.0": - version "10.17.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.18.tgz#ae364d97382aacdebf583fa4e7132af2dfe56a0c" - integrity sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg== - -"@types/normalize-package-data@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" - integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== - -"@types/prop-types@*": - version "15.7.3" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" - integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== - -"@types/qs@*": - version "6.9.1" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.1.tgz#937fab3194766256ee09fcd40b781740758617e7" - integrity sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw== - -"@types/range-parser@*": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" - integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== - -"@types/react-dom@*": - version "16.9.6" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.6.tgz#9e7f83d90566521cc2083be2277c6712dcaf754c" - integrity sha512-S6ihtlPMDotrlCJE9ST1fRmYrQNNwfgL61UB4I1W7M6kPulUKx9fXAleW5zpdIjUQ4fTaaog8uERezjsGUj9HQ== - dependencies: - "@types/react" "*" - -"@types/react-dom@16.9.7": - version "16.9.7" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.7.tgz#60844d48ce252d7b2dccf0c7bb937130e27c0cd2" - integrity sha512-GHTYhM8/OwUCf254WO5xqR/aqD3gC9kSTLpopWGpQLpnw23jk44RvMHsyUSEplvRJZdHxhJGMMLF0kCPYHPhQA== - dependencies: - "@types/react" "*" - -"@types/react@*": - version "16.9.31" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.31.tgz#6a543529766c8934ec8a89667376c2e73e9e2636" - integrity sha512-NpYJpNMWScFXtx3A2BJMeew2G3+9SEslVWMdxNJ6DLvxIuxWjY1bizK9q5Y1ujhln31vtjmhjOAYDr9Xx3k9FQ== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@types/react@16.9.34": - version "16.9.34" - resolved "https://registry.npmjs.org/@types/react/-/react-16.9.34.tgz#f7d5e331c468f53affed17a8a4d488cd44ea9349" - integrity sha512-8AJlYMOfPe1KGLKyHpflCg5z46n0b5DbRfqDksxBLBTUpB75ypDBAO9eCUcjNwE6LCUslwTz00yyG/X9gaVtow== - dependencies: - "@types/prop-types" "*" - csstype "^2.2.0" - -"@types/resolve@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/retry@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" - integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== - -"@types/serve-static@*": - version "1.13.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.3.tgz#eb7e1c41c4468272557e897e9171ded5e2ded9d1" - integrity sha512-oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g== - dependencies: - "@types/express-serve-static-core" "*" - "@types/mime" "*" - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/tapable@*", "@types/tapable@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.5.tgz#9adbc12950582aa65ead76bffdf39fe0c27a3c02" - integrity sha512-/gG2M/Imw7cQFp8PGvz/SwocNrmKFjFsm5Pb8HdbHkZ1K8pmuPzOX4VeVoiEecFCVf4CsN1r3/BRvx+6sNqwtQ== - -"@types/testing-library__dom@*", "@types/testing-library__dom@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-7.0.0.tgz#c0fb7d1c2495a3d26f19342102142d47500f0319" - integrity sha512-1TEPWyqQ6IQ7R1hCegZmFSA3KrBQjdzJW7yC9ybpRcFst5XuPOqBGNr0mTAKbxwI/TrTyc1skeyLJrpcvAf93w== - dependencies: - pretty-format "^25.1.0" - -"@types/testing-library__jest-dom@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.0.2.tgz#89b782e0f187fe1e80d6375133da74182ba02065" - integrity sha512-dZP+/WHndgCSmdaImITy0KhjGAa9c0hlGGkzefbtrPFpnGEPZECDA0zyvfSp8RKhHECJJSKHFExjOwzo0rHyIA== - dependencies: - "@types/jest" "*" - -"@types/testing-library__react@^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/@types/testing-library__react/-/testing-library__react-10.0.0.tgz#8413a47f435bf7ce50bbc1b6d119300d39aed5bd" - integrity sha512-aByqRiRn9psCWbgW7a+gfW/LUQY/ChznnuPyWwLipcJm+rXaLNeYM4qL21jWPGn9W1H//oXgLE9aDlpkZSY3CQ== - dependencies: - "@types/react-dom" "*" - "@types/testing-library__dom" "*" - pretty-format "^25.1.0" - -"@types/uglify-js@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.0.5.tgz#2c70d5c68f6e002e3b2e4f849adc5f162546f633" - integrity sha512-L7EbSkhSaWBpkl+PZAEAqZTqtTeIsq7s/oX/q0LNnxxJoRVKQE0T81XDVyaxjiiKQwiV2vhVeYRqxdRNqGOGJw== - dependencies: - source-map "^0.6.1" - -"@types/webpack-sources@*": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-0.1.7.tgz#0a330a9456113410c74a5d64180af0cbca007141" - integrity sha512-XyaHrJILjK1VHVC4aVlKsdNN5KBTwufMb43cQs+flGxtPAf/1Qwl8+Q0tp5BwEGaI8D6XT1L+9bSWXckgkjTLw== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.6.1" - -"@types/webpack@^4.41.11": - version "4.41.12" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.12.tgz#0386ee2a2814368e2f2397abb036c0bf173ff6c3" - integrity sha512-BpCtM4NnBen6W+KEhrL9jKuZCXVtiH6+0b6cxdvNt2EwU949Al334PjQSl2BeAyvAX9mgoNNG21wvjP3xZJJ5w== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "*" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@types/webpack@^4.41.8": - version "4.41.10" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.10.tgz#2e1f6b3508a249854efe3dcc7690905ac5ee10be" - integrity sha512-vIy0qaq8AjOjZLuFPqpo7nAJzcoVXMdw3mvpNN07Uvdy0p1IpJeLNBe3obdRP7FX2jIusDE7z1pZa0A6qYUgnA== - dependencies: - "@types/anymatch" "*" - "@types/node" "*" - "@types/tapable" "*" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - source-map "^0.6.0" - -"@types/ws@^7.0.0": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== - -"@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== - dependencies: - "@types/yargs-parser" "*" - -"@types/zen-observable@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.0.tgz#8b63ab7f1aa5321248aad5ac890a485656dcea4d" - integrity sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg== - -"@typescript-eslint/eslint-plugin@^2.27.0": - version "2.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.30.0.tgz#312a37e80542a764d96e8ad88a105316cdcd7b05" - integrity sha512-PGejii0qIZ9Q40RB2jIHyUpRWs1GJuHP1pkoCiaeicfwO9z7Fx03NQzupuyzAmv+q9/gFNHu7lo1ByMXe8PNyg== - dependencies: - "@typescript-eslint/experimental-utils" "2.30.0" - functional-red-black-tree "^1.0.1" - regexpp "^3.0.0" - tsutils "^3.17.1" - -"@typescript-eslint/experimental-utils@2.30.0": - version "2.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.30.0.tgz#9845e868c01f3aed66472c561d4b6bac44809dd0" - integrity sha512-L3/tS9t+hAHksy8xuorhOzhdefN0ERPDWmR9CclsIGOUqGKy6tqc/P+SoXeJRye5gazkuPO0cK9MQRnolykzkA== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/typescript-estree" "2.30.0" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^2.27.0": - version "2.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.30.0.tgz#7681c305a6f4341ae2579f5e3a75846c29eee9ce" - integrity sha512-9kDOxzp0K85UnpmPJqUzdWaCNorYYgk1yZmf4IKzpeTlSAclnFsrLjfwD9mQExctLoLoGAUXq1co+fbr+3HeFw== - dependencies: - "@types/eslint-visitor-keys" "^1.0.0" - "@typescript-eslint/experimental-utils" "2.30.0" - "@typescript-eslint/typescript-estree" "2.30.0" - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/typescript-estree@2.30.0": - version "2.30.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.30.0.tgz#1b8e848b55144270255ffbfe4c63291f8f766615" - integrity sha512-nI5WOechrA0qAhnr+DzqwmqHsx7Ulr/+0H7bWCcClDhhWkSyZR5BmTvnBEyONwJCTWHfc5PAQExX24VD26IAVw== - dependencies: - debug "^4.1.1" - eslint-visitor-keys "^1.1.0" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^6.3.0" - tsutils "^3.17.1" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@wry/context@^0.4.0": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.4.4.tgz#e50f5fa1d6cfaabf2977d1fda5ae91717f8815f8" - integrity sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag== - dependencies: - "@types/node" ">=6" - tslib "^1.9.3" - -"@wry/equality@^0.1.2", "@wry/equality@^0.1.9": - version "0.1.11" - resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.11.tgz#35cb156e4a96695aa81a9ecc4d03787bc17f1790" - integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== - dependencies: - tslib "^1.9.3" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== - dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" - -acorn-jsx@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== - -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - -acorn-walk@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e" - integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ== - -acorn@^6.0.1, acorn@^6.2.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== - -acorn@^7.1.0, acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.npmjs.org/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -agent-base@6: - version "6.0.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.0.tgz#5d0101f19bbfaed39980b22ae866de153b93f09a" - integrity sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw== - dependencies: - debug "4" - -aggregate-error@3.0.1, aggregate-error@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.0.1.tgz#db2fe7246e536f40d9b5442a39e117d7dd6a24e0" - integrity sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - 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" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" - integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== - dependencies: - type-fest "^0.11.0" - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -any-observable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" - integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.3, anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apollo-boost@0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.4.7.tgz#b0680ab0893e3f8b1ab1058dcfa2b00cb6440d79" - integrity sha512-jfc3aqO0vpCV+W662EOG5gq4AH94yIsvSgAUuDvS3o/Z+8Joqn4zGC9CgLCDHusK30mFgtsEgwEe0pZoedohsQ== - dependencies: - apollo-cache "^1.3.4" - apollo-cache-inmemory "^1.6.5" - apollo-client "^2.6.7" - apollo-link "^1.0.6" - apollo-link-error "^1.0.3" - apollo-link-http "^1.3.1" - graphql-tag "^2.4.2" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -apollo-cache-control@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.15.0.tgz#45897ed318b883bf964960e6fcd7516a50b4e4d4" - integrity sha512-U2uYvHZsWmR6s6CD5zlq3PepfbUAM8953CeVM2Y2QYMtJ8i4CYplEPbIWb3zTIXSPbIPeWGddM56pChI6Iz3zA== - dependencies: - apollo-server-env "^3.2.0" - apollo-server-plugin-base "^0.14.0" - -apollo-cache-inmemory@^1.6.5: - version "1.6.5" - resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.5.tgz#2ccaa3827686f6ed7fb634203dbf2b8d7015856a" - integrity sha512-koB76JUDJaycfejHmrXBbWIN9pRKM0Z9CJGQcBzIOtmte1JhEBSuzsOUu7NQgiXKYI4iGoMREcnaWffsosZynA== - dependencies: - apollo-cache "^1.3.4" - apollo-utilities "^1.3.3" - optimism "^0.10.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -apollo-cache@1.3.4, apollo-cache@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.3.4.tgz#0c9f63c793e1cd6e34c450f7668e77aff58c9a42" - integrity sha512-7X5aGbqaOWYG+SSkCzJNHTz2ZKDcyRwtmvW4mGVLRqdQs+HxfXS4dUS2CcwrAj449se6tZ6NLUMnjko4KMt3KA== - dependencies: - apollo-utilities "^1.3.3" - tslib "^1.10.0" - -apollo-client@^2.6.7, apollo-client@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.6.8.tgz#01cebc18692abf90c6b3806414e081696b0fa537" - integrity sha512-0zvJtAcONiozpa5z5zgou83iEKkBaXhhSSXJebFHRXs100SecDojyUWKjwTtBPn9HbM6o5xrvC5mo9VQ5fgAjw== - dependencies: - "@types/zen-observable" "^0.8.0" - apollo-cache "1.3.4" - apollo-link "^1.0.0" - apollo-utilities "1.3.3" - symbol-observable "^1.0.2" - ts-invariant "^0.4.0" - tslib "^1.10.0" - zen-observable "^0.8.0" - -apollo-datasource@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.10.0.tgz#5450fc88f23f73b36ba04b4f7a6d00ef2f5364a9" - integrity sha512-wrLhuoM2MtA0KA0+3qyioe0H2FjAxjTvuFOlNCk6WberA887m0MQlWULZImCWTkKuN+zEAMerHfxN+F+W8+lBA== - dependencies: - apollo-server-caching "^0.7.0" - apollo-server-env "^3.2.0" - -apollo-engine-reporting-protobuf@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.4.4.tgz#73a064f8c9f2d6605192d1673729c66ec47d9cb7" - integrity sha512-SGrIkUR7Q/VjU8YG98xcvo340C4DaNUhg/TXOtGsMlfiJDzHwVau/Bv6zifAzBafp2lj0XND6Daj5kyT/eSI/w== - dependencies: - "@apollo/protobufjs" "^1.0.3" - -apollo-graphql@^0.9.0: - version "0.9.7" - resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.9.7.tgz#33185093b497a578f2df61ab8ecc6447d700ae64" - integrity sha512-bezL9ItUWUGHTm1bI/XzIgiiZbhXpsC7uxk4UxFPmcVJwJsDc3ayZ99oXxAaK+3Rbg/IoqrHckA6CwmkCsbaSA== - dependencies: - core-js-pure "^3.10.2" - lodash.sortby "^4.7.0" - sha.js "^2.4.11" - -apollo-link-error@^1.0.3: - version "1.1.12" - resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.12.tgz#e24487bb3c30af0654047611cda87038afbacbf9" - integrity sha512-psNmHyuy3valGikt/XHJfe0pKJnRX19tLLs6P6EHRxg+6q6JMXNVLYPaQBkL0FkwdTCB0cbFJAGRYCBviG8TDA== - dependencies: - apollo-link "^1.2.13" - apollo-link-http-common "^0.2.15" - tslib "^1.9.3" - -apollo-link-http-common@^0.2.15: - version "0.2.15" - resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.15.tgz#304e67705122bf69a9abaded4351b10bc5efd6d9" - integrity sha512-+Heey4S2IPsPyTf8Ag3PugUupASJMW894iVps6hXbvwtg1aHSNMXUYO5VG7iRHkPzqpuzT4HMBanCTXPjtGzxg== - dependencies: - apollo-link "^1.2.13" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-link-http@^1.3.1: - version "1.5.16" - resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.16.tgz#44fe760bcc2803b8a7f57fc9269173afb00f3814" - integrity sha512-IA3xA/OcrOzINRZEECI6IdhRp/Twom5X5L9jMehfzEo2AXdeRwAMlH5LuvTZHgKD8V1MBnXdM6YXawXkTDSmJw== - dependencies: - apollo-link "^1.2.13" - apollo-link-http-common "^0.2.15" - tslib "^1.9.3" - -apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.13, apollo-link@^1.2.3: - version "1.2.13" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.13.tgz#dff00fbf19dfcd90fddbc14b6a3f9a771acac6c4" - integrity sha512-+iBMcYeevMm1JpYgwDEIDt/y0BB7VWyvlm/7x+TIPNLHCTCMgcEgDuW5kH86iQZWo0I7mNwQiTOz+/3ShPFmBw== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.20" - -apollo-link@^1.2.14: - version "1.2.14" - resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" - integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" - -apollo-reporting-protobuf@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz#ae9d967934d3d8ed816fc85a0d8068ef45c371b9" - integrity sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg== - dependencies: - "@apollo/protobufjs" "1.2.2" - -apollo-server-caching@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.5.1.tgz#5cd0536ad5473abb667cc82b59bc56b96fb35db6" - integrity sha512-L7LHZ3k9Ao5OSf2WStvQhxdsNVplRQi7kCAPfqf9Z3GBEnQ2uaL0EgO0hSmtVHfXTbk5CTRziMT1Pe87bXrFIw== - dependencies: - lru-cache "^5.0.0" - -apollo-server-caching@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz#e6d1e68e3bb571cba63a61f60b434fb771c6ff39" - integrity sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw== - dependencies: - lru-cache "^6.0.0" - -apollo-server-core@^2.11.0: - version "2.26.2" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.26.2.tgz#5391bb93654194a5d6b83cf1855f229c94d5b3b1" - integrity sha512-r8jOhf1jElaxsNsALFMy/MLiJCqSa1ZiwxkerVYbsEkyWrpD1Khy0extDkTBrfa6uK8CatX7xK9U413bYNhJFA== - dependencies: - "@apollographql/apollo-tools" "^0.5.0" - "@apollographql/graphql-playground-html" "1.6.27" - "@apollographql/graphql-upload-8-fork" "^8.1.4" - "@josephg/resolvable" "^1.0.0" - "@types/ws" "^7.0.0" - apollo-cache-control "^0.15.0" - apollo-datasource "^0.10.0" - apollo-graphql "^0.9.0" - apollo-reporting-protobuf "^0.8.0" - apollo-server-caching "^0.7.0" - apollo-server-env "^3.2.0" - apollo-server-errors "^2.5.0" - apollo-server-plugin-base "^0.14.0" - apollo-server-types "^0.10.0" - apollo-tracing "^0.16.0" - async-retry "^1.2.1" - fast-json-stable-stringify "^2.0.0" - graphql-extensions "^0.16.0" - graphql-tag "^2.11.0" - graphql-tools "^4.0.8" - loglevel "^1.6.7" - lru-cache "^6.0.0" - sha.js "^2.4.11" - subscriptions-transport-ws "^0.9.19" - uuid "^8.0.0" - -apollo-server-env@^2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-2.4.3.tgz#9bceedaae07eafb96becdfd478f8d92617d825d2" - integrity sha512-23R5Xo9OMYX0iyTu2/qT0EUb+AULCBriA9w8HDfMoChB8M+lFClqUkYtaTTHDfp6eoARLW8kDBhPOBavsvKAjA== - dependencies: - node-fetch "^2.1.2" - util.promisify "^1.0.0" - -apollo-server-env@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-3.2.0.tgz#0572e307da4784c5d7633a0ade1f45e231da28e3" - integrity sha512-V+kO5e6vUo2JwqV1/Ng71ZE3J6x1hCOC+nID2/++bCYl0/fPY9iLChbBNSgN/uoFcjhgmBchOv+m4o0Nie/TFQ== - dependencies: - node-fetch "^2.6.1" - util.promisify "^1.0.0" - -apollo-server-errors@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz#5d1024117c7496a2979e3e34908b5685fe112b68" - integrity sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA== - -apollo-server-lambda@2.11.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/apollo-server-lambda/-/apollo-server-lambda-2.11.0.tgz#ca3dce5475f9a611a61f8eef43a43bb3b450b24b" - integrity sha512-44jkwT0vKsw8F8/ytC5vOu2mXZlcp1XwAg7QykhqLHi/jKvMe94GeTnhOgZPIHAZwjrEVhFQjEPJdkXw1ccm8A== - dependencies: - "@apollographql/graphql-playground-html" "1.6.24" - "@types/aws-lambda" "^8.10.31" - apollo-server-core "^2.11.0" - apollo-server-env "^2.4.3" - apollo-server-types "^0.3.0" - graphql-tools "^4.0.0" - -apollo-server-plugin-base@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.14.0.tgz#f59b6ab7780304162d2e4fd9ee29ed0696b174ef" - integrity sha512-nTNSFuBhZURGjtWptdVqwemYUOdsvABj/GSKzeNvepiEubiv4N0rt4Gvy1inHDiMbo98wQTdF/7XohNcB9A77g== - dependencies: - apollo-server-types "^0.10.0" - -apollo-server-types@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-0.10.0.tgz#af578bf507151a0e86fbdf188f9673ece3f8f164" - integrity sha512-LsB3epw1X3Co/HGiKHCGtzWG35J59gG8Ypx0p22+wgdM9AVDm1ylsNGZy+osNIVJc1lUJf3nF5kZ90vA866K/w== - dependencies: - apollo-reporting-protobuf "^0.8.0" - apollo-server-caching "^0.7.0" - apollo-server-env "^3.2.0" - -apollo-server-types@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-0.3.0.tgz#01732e5fc6c4a2a522f051d5685c57a8e3dc620e" - integrity sha512-FMo7kbTkhph9dfIQ3xDbRLObqmdQH9mwSjxhGsX+JxGMRPPXgd3+GZvCeVKOi/udxh//w1otSeAqItjvbj0tfQ== - dependencies: - apollo-engine-reporting-protobuf "^0.4.4" - apollo-server-caching "^0.5.1" - apollo-server-env "^2.4.3" - -apollo-tracing@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.16.0.tgz#8542ca40ae4a3f84f899e749631b65833557ceb1" - integrity sha512-Oy8kTggB+fJ/hHXwHyMpuTl5KW7u1XetKFDErZVOobUKc2zjc/NgWiC/s7SGYZCgfLodBjvwfa6rMcvLkz7c0w== - dependencies: - apollo-server-env "^3.2.0" - apollo-server-plugin-base "^0.14.0" - -apollo-utilities@1.3.3, apollo-utilities@^1.0.1, apollo-utilities@^1.3.0, apollo-utilities@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.3.tgz#f1854715a7be80cd810bc3ac95df085815c0787c" - integrity sha512-F14aX2R/fKNYMvhuP2t9GD9fggID7zp5I96MF5QeKYWDWTrkRdHRp4+SVfXUVN+cXOaB/IebfvRtzPf25CM0zw== - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -archiver-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" - integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== - dependencies: - glob "^7.1.4" - graceful-fs "^4.2.0" - lazystream "^1.0.0" - lodash.defaults "^4.2.0" - lodash.difference "^4.5.0" - lodash.flatten "^4.4.0" - lodash.isplainobject "^4.0.6" - lodash.union "^4.6.0" - normalize-path "^3.0.0" - readable-stream "^2.0.0" - -archiver@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/archiver/-/archiver-3.1.1.tgz#9db7819d4daf60aec10fe86b16cb9258ced66ea0" - integrity sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg== - dependencies: - archiver-utils "^2.1.0" - async "^2.6.3" - buffer-crc32 "^0.2.1" - glob "^7.1.4" - readable-stream "^3.4.0" - tar-stream "^2.1.0" - zip-stream "^2.1.2" - -arg@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -args@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" - integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== - dependencies: - camelcase "5.0.0" - chalk "2.4.2" - leven "2.1.0" - mri "1.1.4" - -aria-query@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" - integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= - dependencies: - ast-types-flow "0.0.7" - commander "^2.11.0" - -aria-query@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.0.2.tgz#250687b4ccde1ab86d127da0432ae3552fc7b145" - integrity sha512-S1G1V790fTaigUSM/Gd0NngzEfiMy9uTUfMyHhKhVyy4cH5O/eTuR01ydhGL0z4Za1PXFTRGH3qL8VhUQuEO5w== - dependencies: - "@babel/runtime" "^7.7.4" - "@babel/runtime-corejs3" "^7.7.4" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-includes@^3.0.3, array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - is-string "^1.0.5" - -array-union@^1.0.1, array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -asn1@~0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" - integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-types-flow@0.0.7, ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-retry@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" - integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== - dependencies: - retry "0.12.0" - -async@^2.6.2, async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== - -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -axobject-query@^2.0.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.1.2.tgz#2bdffc0371e643e5f03ba99065d5179b9ca79799" - integrity sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ== - -babel-code-frame@^6.22.0: - version "6.26.0" - resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-jest@^25.2.3, babel-jest@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.2.4.tgz#b21b68d3af8f161c3e6e501e91f0dea8e652e344" - integrity sha512-+yDzlyJVWrqih9i2Cvjpt7COaN8vUwCsKGtxJLzg6I0xhxD54K8mvDUCliPKLufyzHh/c5C4MRj4Vk7VMjOjIg== - dependencies: - "@jest/transform" "^25.2.4" - "@jest/types" "^25.2.3" - "@types/babel__core" "^7.1.0" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.2.1" - chalk "^3.0.0" - slash "^3.0.0" - -babel-literal-to-ast@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/babel-literal-to-ast/-/babel-literal-to-ast-2.1.0.tgz#c8b12f9c36a8cee13572d65aabf6cff8adb1e8b3" - integrity sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw== - dependencies: - "@babel/parser" "^7.1.6" - "@babel/traverse" "^7.1.6" - "@babel/types" "^7.1.6" - -babel-loader@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-plugin-auto-import@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/babel-plugin-auto-import/-/babel-plugin-auto-import-1.0.5.tgz#350778fbbc2a341420b7059e8f543b9fb2636b60" - integrity sha512-U/TmCczhGEU9l65yKVdKMGP0bNlWUpulFaaRMcNaVwCRSgjfnASdwZUVrHdKbVW1EV02iR0JtO6J96aTHB9NXw== - dependencies: - "@babel/core" "^7.2.2" - logical-not "^1.0.0" - -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-graphql-tag@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-graphql-tag/-/babel-plugin-graphql-tag-2.5.0.tgz#2b2df0dc4b9638022d18868d03abe60117aaf38d" - integrity sha512-X6qczBVs/UtB8evDgOizGuQJNDBkvXZy5kZd4c0SU14L986RR+p4EXtK/T31HkpYoYOjvrcp+QO82qjL3/nHoQ== - dependencies: - "@babel/parser" "^7.3.2" - babel-literal-to-ast "^2.1.0" - debug "^4.1.1" - -babel-plugin-istanbul@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" - integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^4.0.0" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.1.tgz#d0003a1f3d5caa281e1107fe03bbf16b799f9955" - integrity sha512-HysbCQfJhxLlyxDbKcB2ucGYV0LjqK4h6dBoI3RtFuOxTiTWK6XGZMsHb0tGh8iJdV4hC6Z2GCHzVvDeh9i0lQ== - dependencies: - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-module-resolver@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.0.0.tgz#8f3a3d9d48287dc1d3b0d5595113adabd36a847f" - integrity sha512-3pdEq3PXALilSJ6dnC4wMWr0AZixHRM4utpdpBR9g5QG7B7JwWyukQv7a9hVxkbGFl+nQbrHDqqQOIBtTXTP/Q== - dependencies: - find-babel-config "^1.2.0" - glob "^7.1.6" - pkg-up "^3.1.0" - reselect "^4.0.0" - resolve "^1.13.1" - -"babel-plugin-styled-components@>= 1": - version "1.10.7" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c" - integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.0.0" - "@babel/helper-module-imports" "^7.0.0" - babel-plugin-syntax-jsx "^6.18.0" - lodash "^4.17.11" - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-preset-jest@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.2.1.tgz#4ccd0e577f69aa11b71806edfe8b25a5c3ac93a2" - integrity sha512-zXHJBM5iR8oEO4cvdF83AQqqJf3tJrXy3x8nfu2Nlqvn4cneg4Ca8M7cQvC5S9BzDDy1O0tZ9iXru9J6E3ym+A== - dependencies: - "@babel/plugin-syntax-bigint" "^7.0.0" - "@babel/plugin-syntax-object-rest-spread" "^7.0.0" - babel-plugin-jest-hoist "^25.2.1" - -backo2@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" - integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -basic-auth@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" - integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== - dependencies: - safe-buffer "5.1.2" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bent@^7.1.2: - version "7.3.0" - resolved "https://registry.yarnpkg.com/bent/-/bent-7.3.0.tgz#80dc46b7cfcae335214f51004c8783a344114085" - integrity sha512-ROfdGmcW1shnkiV/PZhj2Gw0+TiIfBYYs40QBBFYszdd2f2D07zLOTDQm5D411srCacR3Wt5mjLstv0OMmtmFQ== - dependencies: - bytesish "^0.4.1" - caseless "~0.12.0" - is-stream "^2.0.0" - -bfj@^6.1.1: - version "6.1.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" - integrity sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw== - dependencies: - bluebird "^3.5.5" - check-types "^8.0.3" - hoopy "^0.1.4" - tryer "^1.0.1" - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" - integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a" - integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -body-parser@1.19.0, body-parser@^1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.7.0: - version "4.7.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz#9ee89225ffc07db03409f2fee524dc8227458a17" - integrity sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA== - dependencies: - caniuse-lite "^1.0.30000989" - electron-to-chromium "^1.3.247" - node-releases "^1.1.29" - -browserslist@^4.8.3, browserslist@^4.9.1: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== - dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" - node-releases "^1.1.53" - pkg-up "^2.0.0" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk= - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.1.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.5.0.tgz#9c3caa3d623c33dd1c7ef584b89b88bf9c9bc1ce" - integrity sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -buffer@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - -builtin-modules@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -busboy@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" - integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== - dependencies: - dicer "0.3.0" - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -bytesish@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/bytesish/-/bytesish-0.4.1.tgz#5fe19b076037ffdfb63e083a53495b1d1c063f6f" - integrity sha512-j3l5QmnAbpOfcN/Z2Jcv4poQYfefs8rDdcbc6iEKm+OolvUXAE2APodpWj+DOzqX6Bl5Ys1cQkcIV2/doGvQxg== - -cacache@^12.0.2, cacache@^12.0.3: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== - dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" - -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelize@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" - integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= - -caniuse-lite@^1.0.30000989: - version "1.0.30001058" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001058.tgz#9f8a318389e28f060272274ac93a661d17f8bf0d" - integrity sha512-UiRZmBYd1HdVVdFKy7PuLVx9e2NS7SMyx7QpWvFjiklYrLJKpLd19cRnRNqlw4zYa7vVejS3c8JUVobX241zHQ== - -caniuse-lite@^1.0.30001038: - version "1.0.30001038" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" - integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - 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" - -chalk@3.0.0, chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - 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" - -chalk@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72" - integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -check-types@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" - integrity sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ== - -checkpoint-client@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/checkpoint-client/-/checkpoint-client-1.0.7.tgz#574776e7e82685e51dee0774749d8183ec9063b7" - integrity sha512-rZnQifWX+QjXZQFwsFYgITJDt8Llh3KHB+IEVXiDBF5+gE53agJZ8L7A1ZJeuV2K4LqyoEUbKduRt1/cVaJs6g== - dependencies: - "@rollup/plugin-commonjs" "11.0.1" - "@rollup/plugin-json" "4.0.1" - "@rollup/plugin-node-resolve" "7.0.0" - "@rollup/plugin-sucrase" "3.0.0" - cross-spawn "7.0.1" - env-paths "2.2.0" - fast-write-atomic "0.2.1" - make-dir "3.0.0" - ms "2.1.2" - node-fetch "2.6.0" - rollup "1.29.0" - uuid "3.3.3" - write-file-atomic "3.0.1" - -chokidar@^2.0.4, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chokidar@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.3.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-truncate@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" - integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= - dependencies: - slice-ansi "0.0.4" - string-width "^1.0.1" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-width@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" - integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collect-v8-coverage@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1" - integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.6, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^2.11.0, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.0, commander@^4.0.1, commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compress-commons@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-2.1.1.tgz#9410d9a534cf8435e3fbbb7c6ce48de2dc2f0610" - integrity sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q== - dependencies: - buffer-crc32 "^0.2.13" - crc32-stream "^3.0.1" - normalize-path "^3.0.0" - readable-stream "^2.3.6" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - 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" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concurrently@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-5.1.0.tgz#05523986ba7aaf4b58a49ddd658fab88fa783132" - integrity sha512-9ViZMu3OOCID3rBgU31mjBftro2chOop0G2u1olq1OuwRBVRw/GxHTg80TVJBUTJfoswMmEUeuOg1g1yu1X2dA== - dependencies: - chalk "^2.4.2" - date-fns "^2.0.1" - lodash "^4.17.15" - read-pkg "^4.0.1" - rxjs "^6.5.2" - spawn-command "^0.0.2-1" - supports-color "^6.1.0" - tree-kill "^1.2.2" - yargs "^13.3.0" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" - integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== - dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" - normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - webpack-log "^2.0.0" - -core-js-compat@^3.6.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== - dependencies: - browserslist "^4.8.3" - semver "7.0.0" - -core-js-pure@^3.0.0: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" - integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== - -core-js-pure@^3.10.2: - version "3.32.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.1.tgz#5775b88f9062885f67b6d7edce59984e89d276f3" - integrity sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ== - -core-js@3.6.4, core-js@^3.2.1: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" - integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== - -core-util-is@1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - 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" - -crc32-stream@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-3.0.1.tgz#cae6eeed003b0e44d739d279de5ae63b171b4e85" - integrity sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w== - dependencies: - crc "^3.4.4" - readable-stream "^3.4.0" - -crc@^3.4.4: - version "3.8.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" - integrity sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ== - dependencies: - buffer "^5.1.0" - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -cross-env@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9" - integrity sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw== - dependencies: - cross-spawn "^7.0.1" - -cross-fetch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.4.tgz#7bef7020207e684a7638ef5f2f698e24d9eb283c" - integrity sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw== - dependencies: - node-fetch "2.6.0" - whatwg-fetch "3.0.0" - -cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@7.0.1, cross-spawn@^7.0.0, cross-spawn@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= - -css-loader@^3.4.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" - integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== - dependencies: - camelcase "^5.3.1" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^1.2.3" - normalize-path "^3.0.0" - postcss "^7.0.23" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.2" - postcss-modules-scope "^2.1.1" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.0.2" - schema-utils "^2.6.0" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-to-react-native@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" - integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@2.2.4, css@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssfilter@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" - integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== - -cssom@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" - integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== - dependencies: - cssom "~0.3.6" - -csstype@^2.2.0: - version "2.6.10" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.10.tgz#e63af50e66d7c266edb6b32909cfd0aabe03928b" - integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -damerau-levenshtein@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" - integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== - dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" - -date-fns@^1.27.2: - version "1.30.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" - integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== - -date-fns@^2.0.1: - version "2.11.1" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.1.tgz#197b8be1bbf5c5e6fe8bea817f0fe111820e7a12" - integrity sha512-3RdUoinZ43URd2MJcquzBbDQo+J87cSzB8NkXdZiN5ia1UNyep0oCyitfiL88+R7clGTeq/RniXAc16gWyAu1w== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@4.1.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.0.0, debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decamelize@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" - integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== - dependencies: - xregexp "4.0.0" - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@4.2.2, deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -deprecated-decorator@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" - integrity sha1-AJZjF7ehL+kvPMgx91g68ym4bDc= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -dicer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.3.0.tgz#eacd98b3bfbf92e8ab5c2fdb71aaac44bb06b872" - integrity sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA== - dependencies: - streamsearch "0.1.2" - -diff-sequences@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.1.tgz#fcfe8aa07dd9b0c648396a478dabca8e76c6ab27" - integrity sha512-foe7dXnGlSh3jR1ovJmdv+77VQj98eKCHHwJPbZ2eEf0fHwKbkZicpPxEch9smZ+n2dnF6QFwkOQdLq9hpeJUg== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - -dir-glob@^2.0.0, dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -directory-named-webpack-plugin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/directory-named-webpack-plugin/-/directory-named-webpack-plugin-4.0.1.tgz#d5f422310bb446297ec422d3656dbf0921a6fa26" - integrity sha512-cULe7U64O9NM+O+L9gfcVKPo/A0pNEntsXTpuRHoCFMYE5pV9XQrJI9mJ8bgo0WKPmKPw/kozXfRolNNFJICCA== - dependencies: - enhanced-resolve "^4.0.0" - object-assign "^4.1.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" - integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.4.2: - version "0.4.3" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.4.3.tgz#93ca9002eb222fd5a343b6e5e6b9cf5929411c4c" - integrity sha512-JZ8iPuEHDQzq6q0k7PKMGbrIdsgBB7TRrtVOUm4nSMCExlg5qQG4KXWTH2k90yggjM4tTumRGwTKJSldMzKyLA== - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0, dom-serializer@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== - dependencies: - webidl-conversions "^4.0.2" - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domhandler@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.0.0.tgz#51cd13efca31da95bbb0c5bee3a48300e333b3e9" - integrity sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw== - dependencies: - domelementtype "^2.0.1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.0.0.tgz#15b8278e37bfa8468d157478c58c367718133c08" - integrity sha512-n5SelJ1axbO636c2yUtOGia/IcJtVtlhQbFiVDBZHKV5ReJO1ViX7sFEemtuyoAnBxk5meNSYgA8V4s0271efg== - dependencies: - dom-serializer "^0.2.1" - domelementtype "^2.0.1" - domhandler "^3.0.0" - -dot-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa" - integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA== - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" - -dotenv-defaults@^1.0.2, dotenv-defaults@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/dotenv-defaults/-/dotenv-defaults-1.1.1.tgz#032c024f4b5906d9990eb06d722dc74cc60ec1bd" - integrity sha512-6fPRo9o/3MxKvmRZBD3oNFdxODdhJtIy1zcJeUSCs6HCy4tarUpd+G67UTU9tF6OWXeSPqsm4fPAB+2eY9Rt9Q== - dependencies: - dotenv "^6.2.0" - -dotenv-webpack@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-1.7.0.tgz#4384d8c57ee6f405c296278c14a9f9167856d3a1" - integrity sha512-wwNtOBW/6gLQSkb8p43y0Wts970A3xtNiG/mpwj9MLUhtPCQG6i+/DSXXoNN7fbPCU/vQ7JjwGmgOeGZSSZnsw== - dependencies: - dotenv-defaults "^1.0.2" - -dotenv@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-6.2.0.tgz#941c0410535d942c8becf28d3f357dbd9d476064" - integrity sha512-HygQCKUBSFl8wKQZBSemMywRWcEDNidvNbjGVyZu3nbZ8qq9ubiPoGLMdRDpfSrpkkm9BXYFkpKxxFX38o/76w== - -duplexer@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ecdsa-sig-formatter@1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -electron-to-chromium@^1.3.247: - version "1.3.437" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.437.tgz#110f1cd407e5d09b43d5585e5f237b71063412cf" - integrity sha512-PBQn2q68ErqMyBUABh9Gh8R6DunGky8aB5y3N5lPM7OVpldwyUbAK5AX9WcwE/5F6ceqvQ+iQLYkJYRysAs6Bg== - -electron-to-chromium@^1.3.390: - version "1.3.392" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.392.tgz#280ab4f7a3ae47419cfabb15dbfc1567be7f1111" - integrity sha512-/hsgeVdReDsyTBE0aU9FRdh1wnNPrX3xlz3t61F+CJPOT+Umfi9DXHsCX85TEgWZQqlow0Rw44/4/jbU2Sqgkg== - -elegant-spinner@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" - integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= - -elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - hmac-drbg "^1.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.0" - -emoji-regex@^7.0.1, emoji-regex@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.0.0, enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== - -env-paths@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -envinfo@^7.5.1: - version "7.5.1" - resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz#93c26897225a00457c75e734d354ea9106a72236" - integrity sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-overlay-webpack-plugin@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/error-overlay-webpack-plugin/-/error-overlay-webpack-plugin-0.4.1.tgz#3d3cf944c96c7cf22ca02a89c642a7d95f98abf4" - integrity sha512-1SyHaKmggmEN9yt8aQeh/hKV3moXpqpOK1p5EEP/u9U0KngBdRHoiVRQLV8ZunUYRA/mSA0HB00KY+eeM9YKxw== - dependencies: - react-dev-utils "^9.0.3" - react-error-overlay "^6.0.1" - sockjs-client "^1.4.0" - url "^0.11.0" - -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: - version "1.17.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" - integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escodegen@^1.11.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^6.10.1: - version "6.10.1" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.10.1.tgz#129ef9ec575d5ddc0e269667bf09defcd898642a" - integrity sha512-svTy6zh1ecQojvpbJSgH3aei/Rt7C6i090l5f2WQ4aB05lYHeZIR1qL4wZyyILTbtmnbHP5Yn8MrsOJMGa8RkQ== - dependencies: - get-stdin "^6.0.0" - -eslint-import-resolver-babel-module@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-5.1.2.tgz#3d5599d49f641f9c832f001ccf7087a70a3c8c1b" - integrity sha512-pzKE6UzXgT1Opp4N2P2yoE7OY29+LX3FNX6bqAjmGV+btR/ZYnE/oQFoGzL2/3RkLYRTBYRFwvrphRy5wEAUwg== - dependencies: - pkg-up "^2.0.0" - resolve "^1.10.0" - -eslint-import-resolver-node@^0.3.2: - version "0.3.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404" - integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg== - dependencies: - debug "^2.6.9" - resolve "^1.13.1" - -eslint-module-utils@^2.4.1: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" - integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== - dependencies: - debug "^2.6.9" - pkg-dir "^2.0.0" - -eslint-plugin-babel@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-5.3.0.tgz#2e7f251ccc249326da760c1a4c948a91c32d0023" - integrity sha512-HPuNzSPE75O+SnxHIafbW5QB45r2w78fxqwK3HmjqIUoPfPzVrq6rD+CINU3yzoDSzEhUkX07VUphbF73Lth/w== - dependencies: - eslint-rule-composer "^0.3.0" - -eslint-plugin-import@^2.20.2: - version "2.20.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz#91fc3807ce08be4837141272c8b99073906e588d" - integrity sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg== - dependencies: - array-includes "^3.0.3" - array.prototype.flat "^1.2.1" - contains-path "^0.1.0" - debug "^2.6.9" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.2" - eslint-module-utils "^2.4.1" - has "^1.0.3" - minimatch "^3.0.4" - object.values "^1.1.0" - read-pkg-up "^2.0.0" - resolve "^1.12.0" - -eslint-plugin-jest-dom@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest-dom/-/eslint-plugin-jest-dom-2.0.1.tgz#6df85a46992a86ac800b23304a9285b8c5d701f5" - integrity sha512-LY2BP5ucZbKO58I71QHnjH18YcL/XFarZEKBB3aQH+BKtMO+Da4t756JfnCpR4ELydYOr5B0DB8hzjgeQlhLBw== - dependencies: - requireindex "~1.2.0" - -eslint-plugin-jsx-a11y@^6.2.3: - version "6.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz#b872a09d5de51af70a97db1eea7dc933043708aa" - integrity sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg== - dependencies: - "@babel/runtime" "^7.4.5" - aria-query "^3.0.0" - array-includes "^3.0.3" - ast-types-flow "^0.0.7" - axobject-query "^2.0.2" - damerau-levenshtein "^1.0.4" - emoji-regex "^7.0.2" - has "^1.0.3" - jsx-ast-utils "^2.2.1" - -eslint-plugin-prettier@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz#ae116a0fc0e598fdae48743a4430903de5b4e6ca" - integrity sha512-+HG5jmu/dN3ZV3T6eCD7a4BlAySdN7mLIbJYo0z1cFQuI+r2DiTJEFeF68ots93PsnrMxbzIZ2S/ieX+mkrBeQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-react-hooks@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-3.0.0.tgz#9e80c71846eb68dd29c3b21d832728aa66e5bd35" - integrity sha512-EjxTHxjLKIBWFgDJdhKKzLh5q+vjTFrqNZX36uIxWS4OfyXe5DawqPj3U5qeJ1ngLwatjzQnmR0Lz0J0YH3kxw== - -eslint-plugin-react@^7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" - integrity sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ== - dependencies: - array-includes "^3.1.1" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.2.3" - object.entries "^1.1.1" - object.fromentries "^2.0.2" - object.values "^1.1.1" - prop-types "^15.7.2" - resolve "^1.15.1" - semver "^6.3.0" - string.prototype.matchall "^4.0.2" - xregexp "^4.3.0" - -eslint-rule-composer@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" - integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.0.0.tgz#e87c8887c73e8d1ec84f1ca591645c358bfc8fb9" - integrity sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.0.0.tgz#7be1cc70f27a72a76cd14aa698bcabed6890e1cd" - integrity sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" - integrity sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A== - -eslint@6.8.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.2.0.tgz#a010a519c0288f2530b3404124bfb5f02e9797fe" - integrity sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q== - dependencies: - estraverse "^5.0.0" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.0.0.tgz#ac81750b482c11cca26e4b07e83ed8f75fbcdc22" - integrity sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^3.1.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" - integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== - -eventemitter3@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== - -events@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" - integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.4" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" - integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.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" - -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" - integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -expect@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.2.4.tgz#b66e0777c861034ebc21730bb34e1839d5d46806" - integrity sha512-hfuPhPds4yOsZtIw4kwAg70r0hqGmpqekgA+VX7pf/3wZ6FY+xIOXZhNsPMMMsspYG/YIsbAiwqsdnD4Ht+bCA== - dependencies: - "@jest/types" "^25.2.3" - ansi-styles "^4.0.0" - jest-get-type "^25.2.1" - jest-matcher-utils "^25.2.3" - jest-message-util "^25.2.4" - jest-regex-util "^25.2.1" - -express@^4.16.3, express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^2.0.2, fast-glob@^2.2.6: - version "2.2.7" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-glob@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" - integrity sha512-UDV82o4uQyljznxwMxyVRJgZZt3O5wENYojjzbaGEGZgeOxkLFf+V4cnUD+krzb2F72E18RhamkMZ7AdeggF7A== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.0" - merge2 "^1.3.0" - micromatch "^4.0.2" - picomatch "^2.2.1" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-write-atomic@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fast-write-atomic/-/fast-write-atomic-0.2.1.tgz#7ee8ef0ce3c1f531043c09ae8e5143361ab17ede" - integrity sha512-WvJe06IfNYlr+6cO3uQkdKdy3Cb1LlCJSF8zRs2eT8yuhdbSlR9nIt+TgQ92RUxiRrQm+/S7RARnMfCs5iuAjw== - -fastq@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.1.tgz#4570c74f2ded173e71cf0beb08ac70bb85826791" - integrity sha512-mpIH5sKYueh3YyeJwqtVo8sORi0CgtmkVbK6kZStpQlZBYQuTzG2CZ7idSiJuA7bY0SFCWUc5WIs+oYumGCQNw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-loader@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.0.0.tgz#97bbfaab7a2460c07bcbd72d3a6922407f67649f" - integrity sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.6.5" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filesize@3.6.1, filesize@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" - integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-babel-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - -find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" - integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^4.0.2" - resolve-dir "^1.0.1" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.11.0.tgz#afa14f08ba12a52963140fe43212658897bc0ecb" - integrity sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA== - dependencies: - debug "^3.0.0" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@1.5.0: - version "1.5.0" - resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-1.5.0.tgz#ce1d77190b44d81a761b10b6284a373795e41f0c" - integrity sha512-zEhg7Hz+KhZlBhILYpXy+Beu96gwvkROWJiTXOCyOOMMrdBIRPvsBpBqgTI4jfJGrJXcqGwJR8zsBGDmzY0jsA== - dependencies: - babel-code-frame "^6.22.0" - chalk "^2.4.1" - chokidar "^2.0.4" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-capacitor@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" - integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@~2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@7.1.6, glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - 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" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globby@11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" - integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@8.0.2: - version "8.0.2" - resolved "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" - integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= - dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.2.0, graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -graphql-extensions@^0.16.0: - version "0.16.0" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.16.0.tgz#32669fde0a2f115de60e5dda818ae457c1d71bb8" - integrity sha512-rZQc/USoEIw437BGRUwoHoLPR1LA791Ltj6axONqgKIyyx2sqIO3YT9kTbB/eIUdJBrCozp4KuUeZ09xKeQDxg== - dependencies: - "@apollographql/apollo-tools" "^0.5.0" - apollo-server-env "^3.2.0" - apollo-server-types "^0.10.0" - -graphql-iso-date@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/graphql-iso-date/-/graphql-iso-date-3.6.1.tgz#bd2d0dc886e0f954cbbbc496bbf1d480b57ffa96" - integrity sha512-AwFGIuYMJQXOEAgRlJlFL4H1ncFM8n8XmoVDTNypNOZyQ8LFDG2ppMFlsS862BSTCDcSUfHp8PD3/uJhv7t59Q== - -graphql-tag@^2.10.3, graphql-tag@^2.4.2: - version "2.10.3" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" - integrity sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA== - -graphql-tag@^2.11.0: - version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - -graphql-tools@4.0.7, graphql-tools@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.7.tgz#743309b96cb657ff45b607ee0a07193cd987e43c" - integrity sha512-rApl8sT8t/W1uQRcwzxMYyUBiCl/XicluApiDkNze5TX/GR0BSTQMjM2UcRGdTmkbsb1Eqq6afkyyeG/zMxZYQ== - dependencies: - apollo-link "^1.2.3" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql-tools@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.8.tgz#e7fb9f0d43408fb0878ba66b522ce871bafe9d30" - integrity sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg== - dependencies: - apollo-link "^1.2.14" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -graphql@^14.6.0: - version "14.6.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.6.0.tgz#57822297111e874ea12f5cd4419616930cd83e49" - integrity sha512-VKzfvHEKybTKjQVpTFrA5yUq2S9ihcZvfJAtsDBBCuV6wauPu1xl/f9ehgVf0FcEJJs4vz6ysb/ZMkGigQZseg== - dependencies: - iterall "^1.2.2" - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gzip-size@5.1.1, gzip-size@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== - dependencies: - ajv "^6.5.5" - har-schema "^2.0.0" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasha@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.0.tgz#33094d1f69c40a4a6ac7be53d5fe3ff95a269e0c" - integrity sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hmac-drbg@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.0.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4: - version "2.8.8" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" - integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== - dependencies: - whatwg-encoding "^1.0.1" - -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.0.5" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.0.5.tgz#8f12f639789f04faa9f5cf2ff9b9f65607f21f8b" - integrity sha512-cBSFFghQh/uHcfSiL42KxxIRMF7A144+3E44xdlctIjxEmkEfCvouxNyFH2wysXk1fCGBPwtcr3hDWlGTfkDew== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@^4.0.2: - version "4.0.4" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.0.4.tgz#90cdfb168094e93e047174d9baca098ec5540636" - integrity sha512-BREQzUbFfIQS39KqxkT2L1Ot0tuu1isako1CaCQLrgEQ43zi2ScHAe3SMTnVBWsStnIsGtl8jprDdxwZkNhrwQ== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@^1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.0" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.0.tgz#dbe55f63e75a347db7f3d99974f2692a314a6a3a" - integrity sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -humanize-string@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/humanize-string/-/humanize-string-2.1.0.tgz#a7d7062e5e514e04f072607ded0df853be8a1f2f" - integrity sha512-sQ+hqmxyXW8Cj7iqxcQxD7oSy3+AXnIZXdUF9lQMkzaG8dtbKAB8U7lCtViMnwQ+MpdCKsO2Kiij3G6UUXq/Xg== - dependencies: - decamelize "^2.0.0" - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.3, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" - integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== - -immer@1.10.0: - version "1.10.0" - resolved "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz#bad67605ba9c810275d91e1c2a47d4582e98286d" - integrity sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg== - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@2.0.0, import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -inquirer@6.5.0: - version "6.5.0" - resolved "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz#2303317efc9a4ea7ec2e2df6f86569b734accf42" - integrity sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29" - integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.15" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.5.3" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" - integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== - dependencies: - es-abstract "^1.17.0-next.1" - has "^1.0.3" - side-channel "^1.0.2" - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-observable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" - integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== - dependencies: - symbol-observable "^1.1.0" - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-promise@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" - integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= - -is-reference@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" - integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== - dependencies: - "@types/estree" "0.0.39" - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isbinaryfile@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.6.tgz#edcb62b224e2b4710830b67498c8e4e5a4d2610b" - integrity sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-instrument@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" - integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== - dependencies: - "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.1.tgz#1343217244ad637e0c3b18e7f6b746941a9b5e9a" - integrity sha512-Vm9xwCiQ8t2cNNnckyeAV0UdxKpcQUz4nMxsBvIu8n2kmPSiyb5uaF/8LpmKr+yqL/MdOXaX2Nmdo4Qyxium9Q== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -iterall@^1.1.3, iterall@^1.2.1, iterall@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" - integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== - -jest-changed-files@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.2.3.tgz#ad19deef9e47ba37efb432d2c9a67dfd97cc78af" - integrity sha512-EFxy94dvvbqRB36ezIPLKJ4fDIC+jAdNs8i8uTwFpaXd6H3LVc3ova1lNS4ZPWk09OCR2vq5kSdSQgar7zMORg== - dependencies: - "@jest/types" "^25.2.3" - execa "^3.2.0" - throat "^5.0.0" - -jest-cli@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.2.4.tgz#021c2383904696597abc060dcb133c82ebd8bfcc" - integrity sha512-zeY2pRDWKj2LZudIncvvguwLMEdcnJqc2jJbwza1beqi80qqLvkPF/BjbFkK2sIV3r+mfTJS+7ITrvK6pCdRjg== - dependencies: - "@jest/core" "^25.2.4" - "@jest/test-result" "^25.2.4" - "@jest/types" "^25.2.3" - chalk "^3.0.0" - exit "^0.1.2" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^25.2.4" - jest-util "^25.2.3" - jest-validate "^25.2.3" - prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" - -jest-config@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.2.4.tgz#f4f33238979f225683179c89d1e402893008975d" - integrity sha512-fxy3nIpwJqOUQJRVF/q+pNQb6dv5b9YufOeCbpPZJ/md1zXpiupbhfehpfODhnKOfqbzSiigtSLzlWWmbRxnqQ== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.2.4" - "@jest/types" "^25.2.3" - babel-jest "^25.2.4" - chalk "^3.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - jest-environment-jsdom "^25.2.4" - jest-environment-node "^25.2.4" - jest-get-type "^25.2.1" - jest-jasmine2 "^25.2.4" - jest-regex-util "^25.2.1" - jest-resolve "^25.2.3" - jest-util "^25.2.3" - jest-validate "^25.2.3" - micromatch "^4.0.2" - pretty-format "^25.2.3" - realpath-native "^2.0.0" - -jest-diff@^25.1.0, jest-diff@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.2.3.tgz#54d601a0a754ef26e808a8c8dbadd278c215aa3f" - integrity sha512-VtZ6LAQtaQpFsmEzps15dQc5ELbJxy4L2DOSo2Ev411TUEtnJPkAMD7JneVypeMJQ1y3hgxN9Ao13n15FAnavg== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.1" - jest-get-type "^25.2.1" - pretty-format "^25.2.3" - -jest-directory-named-resolver@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/jest-directory-named-resolver/-/jest-directory-named-resolver-0.3.0.tgz#77b7843e25189f2522c3af4bd25eb6323dc12830" - integrity sha512-1A/N75O6ly4oedbJvEnWY+Rr9S+9qYX8h6Aql+SCBNu9ViQRKlvmBHOMVzk/jI/8lcqzP0iPo6R1r4ubSP8t1A== - dependencies: - resolve "^1.9.0" - -jest-docblock@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.2.3.tgz#ac45280c43d59e7139f9fbe5896c6e0320c01ebb" - integrity sha512-d3/tmjLLrH5fpRGmIm3oFa3vOaD/IjPxtXVOrfujpfJ9y1tCDB1x/tvunmdOVAyF03/xeMwburl6ITbiQT1mVA== - dependencies: - detect-newline "^3.0.0" - -jest-each@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.2.3.tgz#64067ba1508ebbd07e9b126c173ab371e8e6309d" - integrity sha512-RTlmCjsBDK2c9T5oO4MqccA3/5Y8BUtiEy7OOQik1iyCgdnNdHbI0pNEpyapZPBG0nlvZ4mIu7aY6zNUvLraAQ== - dependencies: - "@jest/types" "^25.2.3" - chalk "^3.0.0" - jest-get-type "^25.2.1" - jest-util "^25.2.3" - pretty-format "^25.2.3" - -jest-environment-jsdom@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.2.4.tgz#f2783541d0538b1bc43641703372cea6a2e83611" - integrity sha512-5dm+tNwrLmhELdjAwiQnVGf/U9iFMWdTL4/wyrMg2HU6RQnCiuxpWbIigLHUhuP1P2Ak0F4k3xhjrikboKyShA== - dependencies: - "@jest/environment" "^25.2.4" - "@jest/fake-timers" "^25.2.4" - "@jest/types" "^25.2.3" - jest-mock "^25.2.3" - jest-util "^25.2.3" - jsdom "^15.2.1" - -jest-environment-node@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.2.4.tgz#dc211dfb0d8b66dfc1965a8f846e72e54ff0c430" - integrity sha512-Jkc5Y8goyXPrLRHnrUlqC7P4o5zn2m4zw6qWoRJ59kxV1f2a5wK+TTGhrhCwnhW/Ckpdl/pm+LufdvhJkvJbiw== - dependencies: - "@jest/environment" "^25.2.4" - "@jest/fake-timers" "^25.2.4" - "@jest/types" "^25.2.3" - jest-mock "^25.2.3" - jest-util "^25.2.3" - semver "^6.3.0" - -jest-get-type@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.1.tgz#6c83de603c41b1627e6964da2f5454e6aa3c13a6" - integrity sha512-EYjTiqcDTCRJDcSNKbLTwn/LcDPEE7ITk8yRMNAOjEsN6yp+Uu+V1gx4djwnuj/DvWg0YGmqaBqPVGsPxlvE7w== - -jest-haste-map@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.2.3.tgz#2649392b5af191f0167a27bfb62e5d96d7eaaade" - integrity sha512-pAP22OHtPr4qgZlJJFks2LLgoQUr4XtM1a+F5UaPIZNiCRnePA0hM3L7aiJ0gzwiNIYwMTfKRwG/S1L28J3A3A== - dependencies: - "@jest/types" "^25.2.3" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.1" - jest-util "^25.2.3" - jest-worker "^25.2.1" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - which "^2.0.2" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.2.4.tgz#5f77de83e1027f0c7588137055a80da773872374" - integrity sha512-juoKrmNmLwaheNbAg71SuUF9ovwUZCFNTpKVhvCXWk+SSeORcIUMptKdPCoLXV3D16htzhTSKmNxnxSk4SrTjA== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.2.4" - "@jest/source-map" "^25.2.1" - "@jest/test-result" "^25.2.4" - "@jest/types" "^25.2.3" - chalk "^3.0.0" - co "^4.6.0" - expect "^25.2.4" - is-generator-fn "^2.0.0" - jest-each "^25.2.3" - jest-matcher-utils "^25.2.3" - jest-message-util "^25.2.4" - jest-runtime "^25.2.4" - jest-snapshot "^25.2.4" - jest-util "^25.2.3" - pretty-format "^25.2.3" - throat "^5.0.0" - -jest-leak-detector@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.2.3.tgz#4cf39f137925e0061c04c24ca65cae36465f0238" - integrity sha512-yblCMPE7NJKl7778Cf/73yyFWAas5St0iiEBwq7RDyaz6Xd4WPFnPz2j7yDb/Qce71A1IbDoLADlcwD8zT74Aw== - dependencies: - jest-get-type "^25.2.1" - pretty-format "^25.2.3" - -jest-matcher-utils@^25.1.0, jest-matcher-utils@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.2.3.tgz#59285bd6d6c810debc9caa585ed985e46a3f28fd" - integrity sha512-ZmiXiwQRVM9MoKjGMP5YsGGk2Th5ncyRxfXKz5AKsmU8m43kgNZirckVzaP61MlSa9LKmXbevdYqVp1ZKAw2Rw== - dependencies: - chalk "^3.0.0" - jest-diff "^25.2.3" - jest-get-type "^25.2.1" - pretty-format "^25.2.3" - -jest-message-util@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.2.4.tgz#b1441b9c82f5c11fc661303cbf200a2f136a7762" - integrity sha512-9wWMH3Bf+GVTv0GcQLmH/FRr0x0toptKw9TA8U5YFLVXx7Tq9pvcNzTyJrcTJ+wLqNbMPPJlJNft4MnlcrtF5Q== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/test-result" "^25.2.4" - "@jest/types" "^25.2.3" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^1.0.1" - -jest-mock@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.2.3.tgz#b37a581f59d61bd91db27a99bf7eb8b3e5e993d5" - integrity sha512-xlf+pyY0j47zoCs8zGGOGfWyxxLximE8YFOfEK8s4FruR8DtM/UjNj61um+iDuMAFEBDe1bhCXkqiKoCmWjJzg== - dependencies: - "@jest/types" "^25.2.3" - -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== - -jest-regex-util@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.1.tgz#db64b0d15cd3642c93b7b9627801d7c518600584" - integrity sha512-wroFVJw62LdqTdkL508ZLV82FrJJWVJMIuYG7q4Uunl1WAPTf4ftPKrqqfec4SvOIlvRZUdEX2TFpWR356YG/w== - -jest-resolve-dependencies@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.2.4.tgz#2d904400387d74a366dff54badb40a2b3210e733" - integrity sha512-qhUnK4PfNHzNdca7Ub1mbAqE0j5WNyMTwxBZZJjQlUrdqsiYho/QGK65FuBkZuSoYtKIIqriR9TpGrPEc3P5Gg== - dependencies: - "@jest/types" "^25.2.3" - jest-regex-util "^25.2.1" - jest-snapshot "^25.2.4" - -jest-resolve@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.2.3.tgz#ababeaf2bb948cb6d2dea8453759116da0fb7842" - integrity sha512-1vZMsvM/DBH258PnpUNSXIgtzpYz+vCVCj9+fcy4akZl4oKbD+9hZSlfe9RIDpU0Fc28ozHQrmwX3EqFRRIHGg== - dependencies: - "@jest/types" "^25.2.3" - browser-resolve "^1.11.3" - chalk "^3.0.0" - jest-pnp-resolver "^1.2.1" - realpath-native "^2.0.0" - resolve "^1.15.1" - -jest-runner@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.2.4.tgz#d0daf7c56b4a83b6b675863d5cdcd502c960f9a1" - integrity sha512-5xaIfqqxck9Wg2CV4b9KmJtf/sWO7zWQx7O+34GCLGPzoPcVmB3mZtdrQI1/jS3Reqjru9ycLjgLHSf6XoxRqA== - dependencies: - "@jest/console" "^25.2.3" - "@jest/environment" "^25.2.4" - "@jest/test-result" "^25.2.4" - "@jest/types" "^25.2.3" - chalk "^3.0.0" - exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.2.4" - jest-docblock "^25.2.3" - jest-haste-map "^25.2.3" - jest-jasmine2 "^25.2.4" - jest-leak-detector "^25.2.3" - jest-message-util "^25.2.4" - jest-resolve "^25.2.3" - jest-runtime "^25.2.4" - jest-util "^25.2.3" - jest-worker "^25.2.1" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.2.4.tgz#c66a421e115944426b377a7fd331f6c0902cfa56" - integrity sha512-6ehOUizgIghN+aV5YSrDzTZ+zJ9omgEjJbTHj3Jqes5D52XHfhzT7cSfdREwkNjRytrR7mNwZ7pRauoyNLyJ8Q== - dependencies: - "@jest/console" "^25.2.3" - "@jest/environment" "^25.2.4" - "@jest/source-map" "^25.2.1" - "@jest/test-result" "^25.2.4" - "@jest/transform" "^25.2.4" - "@jest/types" "^25.2.3" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.2.4" - jest-haste-map "^25.2.3" - jest-message-util "^25.2.4" - jest-mock "^25.2.3" - jest-regex-util "^25.2.1" - jest-resolve "^25.2.3" - jest-snapshot "^25.2.4" - jest-util "^25.2.3" - jest-validate "^25.2.3" - realpath-native "^2.0.0" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.3.1" - -jest-serializer@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.1.tgz#51727a5fc04256f461abe0fa024a022ba165877a" - integrity sha512-fibDi7M5ffx6c/P66IkvR4FKkjG5ldePAK1WlbNoaU4GZmIAkS9Le/frAwRUFEX0KdnisSPWf+b1RC5jU7EYJQ== - -jest-snapshot@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.2.4.tgz#08d4517579c864df4280bcc948ceea34327a4ded" - integrity sha512-nIwpW7FZCq5p0AE3Oyqyb6jL0ENJixXzJ5/CD/XRuOqp3gS5OM3O/k+NnTrniCXxPFV4ry6s9HNfiPQBi0wcoA== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^25.2.3" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.2.4" - jest-diff "^25.2.3" - jest-get-type "^25.2.1" - jest-matcher-utils "^25.2.3" - jest-message-util "^25.2.4" - jest-resolve "^25.2.3" - make-dir "^3.0.0" - natural-compare "^1.4.0" - pretty-format "^25.2.3" - semver "^6.3.0" - -jest-util@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.2.3.tgz#0abf95a1d6b96f2de5a3ecd61b36c40a182dc256" - integrity sha512-7tWiMICVSo9lNoObFtqLt9Ezt5exdFlWs5fLe1G4XLY2lEbZc814cw9t4YHScqBkWMfzth8ASHKlYBxiX2rdCw== - dependencies: - "@jest/types" "^25.2.3" - chalk "^3.0.0" - is-ci "^2.0.0" - make-dir "^3.0.0" - -jest-validate@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.2.3.tgz#ecb0f093cf8ae71d15075fb48439b6f78f1fcb5a" - integrity sha512-GObn91jzU0B0Bv4cusAwjP6vnWy78hJUM8MOSz7keRfnac/ZhQWIsUjvk01IfeXNTemCwgR57EtdjQMzFZGREg== - dependencies: - "@jest/types" "^25.2.3" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.1" - leven "^3.1.0" - pretty-format "^25.2.3" - -jest-watcher@^25.2.4: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.2.4.tgz#dda85b914d470fa4145164a8f70bda4f208bafb6" - integrity sha512-p7g7s3zqcy69slVzQYcphyzkB2FBmJwMbv6k6KjI5mqd6KnUnQPfQVKuVj2l+34EeuxnbXqnrjtUFmxhcL87rg== - dependencies: - "@jest/test-result" "^25.2.4" - "@jest/types" "^25.2.3" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.2.3" - string-length "^3.1.0" - -jest-worker@^25.2.1: - version "25.2.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.2.1.tgz#209617015c768652646aa33a7828cc2ab472a18a" - integrity sha512-IHnpekk8H/hCUbBlfeaPZzU6v75bqwJp3n4dUrQuQOAgOneI4tx3jV2o8pvlXnDfcRsfkFIUD//HWXpCmR+evQ== - dependencies: - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest@^25.2.3: - version "25.2.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.2.4.tgz#d10941948a2b57eb7accc2e7ae78af4a0e11b40a" - integrity sha512-Lu4LXxf4+durzN/IFilcAoQSisOwgHIXgl9vffopePpSSwFqfj1Pj4y+k3nL8oTbnvjxgDIsEcepy6he4bWqnQ== - dependencies: - "@jest/core" "^25.2.4" - import-local "^3.0.2" - jest-cli "^25.2.4" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" - nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" - tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema@0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" - integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0, json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" - integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== - dependencies: - minimist "^1.2.5" - -jsonwebtoken@^8.5.1: - version "8.5.1" - resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d" - integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w== - dependencies: - jws "^3.2.2" - lodash.includes "^4.3.0" - lodash.isboolean "^3.0.3" - lodash.isinteger "^4.0.4" - lodash.isnumber "^3.0.3" - lodash.isplainobject "^4.0.6" - lodash.isstring "^4.0.1" - lodash.once "^4.0.0" - ms "^2.1.1" - semver "^5.6.0" - -jsprim@^1.2.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" - integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.2.3" - verror "1.10.0" - -jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz#8a9364e402448a3ce7f14d357738310d9248054f" - integrity sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA== - dependencies: - array-includes "^3.0.3" - object.assign "^4.1.0" - -jwa@^1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" - integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jwks-rsa@^1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-1.8.0.tgz#4b13d962f82128ed06e30c7cc9d3a04652c1ec7c" - integrity sha512-+HYROHD5fsYQCNrJ37RSr2NjbN2/V9YT+yVF3oJxLmPIZWrmp1SOl1hMw2RcuNh+LGA2bGZIhRKGiMjhQa/b7Q== - dependencies: - "@types/express-jwt" "0.0.42" - axios "^0.19.2" - debug "^4.1.0" - jsonwebtoken "^8.5.1" - limiter "^1.1.4" - lru-memoizer "^2.0.1" - ms "^2.1.2" - -jws@^3.2.2: - version "3.2.2" - resolved "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" - integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA== - dependencies: - jwa "^1.4.1" - safe-buffer "^5.0.1" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -leven@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levenary@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" - integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== - dependencies: - leven "^3.1.0" - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -limiter@^1.1.4: - version "1.1.5" - resolved "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2" - integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA== - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -listr-silent-renderer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" - integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= - -listr-update-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" - integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== - dependencies: - chalk "^1.1.3" - cli-truncate "^0.2.1" - elegant-spinner "^1.0.1" - figures "^1.7.0" - indent-string "^3.0.0" - log-symbols "^1.0.2" - log-update "^2.3.0" - strip-ansi "^3.0.1" - -listr-verbose-renderer@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" - integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^1.27.2" - figures "^2.0.0" - -listr-verbose-renderer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.6.0.tgz#10d5a960c7763878b0812c884a11dde29ac16c33" - integrity sha512-P3bA/giMu432bs3gHiKXKOIHlWanCIlRhbhCfgKNgCoyvTvZsdbfkgX1BvThYXhm36cS8pOX3Z5vxXBFZC+NQw== - dependencies: - chalk "^2.4.1" - cli-cursor "^2.1.0" - date-fns "^2.0.1" - figures "^2.0.0" - -listr@^0.14.3: - version "0.14.3" - resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" - integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== - dependencies: - "@samverschueren/stream-to-observable" "^0.3.0" - is-observable "^1.1.0" - is-promise "^2.1.0" - is-stream "^1.1.0" - listr-silent-renderer "^1.1.1" - listr-update-renderer "^0.5.0" - listr-verbose-renderer "^0.5.0" - p-map "^2.0.0" - rxjs "^6.3.3" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.difference@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" - integrity sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw= - -lodash.escaperegexp@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" - integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.includes@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" - integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8= - -lodash.isboolean@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" - integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= - -lodash.isinteger@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" - integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M= - -lodash.isnumber@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" - integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w= - -lodash.isplainobject@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" - integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= - -lodash.isstring@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" - integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.omitby@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.omitby/-/lodash.omitby-4.6.0.tgz#5c15ff4754ad555016b53c041311e8f079204791" - integrity sha1-XBX/R1StVVAWtTwEExHo8HkgR5E= - -lodash.once@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" - integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash.union@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" - integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= - -lodash@4.17.15, lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -log-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" - integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= - dependencies: - chalk "^1.0.0" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -logical-not@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/logical-not/-/logical-not-1.0.0.tgz#3149848c0cce1fea1f76a0e45725c7bcdb33a627" - integrity sha512-l3X5Sf25wwZkprKfrfJ2YjCcxkNnitMvuqoVPAFNz1xpAMG7B4CkdELK19hafcR8K9fcUs0K0LkzZ62U+xdHpA== - -loglevel@^1.6.6: - version "1.6.7" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" - integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== - -loglevel@^1.6.7: - version "1.8.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4" - integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg== - -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== - dependencies: - "@sinonjs/commons" "^1.7.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" - integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== - dependencies: - tslib "^1.10.0" - -lru-cache@^5.0.0, lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-cache@~4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e" - integrity sha1-HRdnnAac2l0ECZGgnbwsDbN35V4= - dependencies: - pseudomap "^1.0.1" - yallist "^2.0.0" - -lru-memoizer@^2.0.1: - version "2.1.2" - resolved "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.1.2.tgz#5c6b43659c78ad0e9e65bf81a9e5ef1ee109a2dd" - integrity sha512-N5L5xlnVcbIinNn/TJ17vHBZwBMt9t7aJDz2n97moWubjNl6VO9Ao2XuAGBBddkYdjrwR9HfzXbT6NfMZXAZ/A== - dependencies: - lodash.clonedeep "^4.5.0" - lru-cache "~4.0.0" - -magic-string@^0.25.2: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== - dependencies: - semver "^6.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-graphql-schemas@^1.7.6: - version "1.7.6" - resolved "https://registry.yarnpkg.com/merge-graphql-schemas/-/merge-graphql-schemas-1.7.6.tgz#6fe0d6f35f14e3a9eb49de01277b43efec68596d" - integrity sha512-TSyBVPvyaKDKlqCqr5V/YoIa+DuqMEBb+ACZNPtadllNCc+LRr89vqNIqYSGiK2hhGgdla0qaJYGQ7FQrmiNzQ== - dependencies: - "@graphql-toolkit/file-loading" "0.9.0" - "@graphql-toolkit/schema-merging" "0.9.0" - tslib "1.10.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" - integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" - integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== - dependencies: - braces "^3.0.1" - picomatch "^2.0.5" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== - dependencies: - mime-db "1.43.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256" - integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY= - -mini-css-extract-plugin@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz#47f2cf07aa165ab35733b1fc97d4c46c0564339e" - integrity sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@3.0.4, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" - integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.0.tgz#fd52c645301ef09a63a2c209697c294c6ce02cf3" - integrity sha512-EzTZN/fjSvifSX0SlqUERCN39o6T40AMarPbv0MrarSFtIITCBh7bi+dU8nxGFHuqs9jdIAeoYoKuQAAASsPPA== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@^0.5.3: - version "0.5.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" - integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -morgan@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7" - integrity sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ== - dependencies: - basic-auth "~2.0.1" - debug "2.6.9" - depd "~2.0.0" - on-finished "~2.3.0" - on-headers "~1.0.2" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -mri@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" - integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2, ms@^2.1.1, ms@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" - integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== - dependencies: - lower-case "^2.0.1" - tslib "^1.10.0" - -node-environment-flags@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -node-fetch@2.6.0, node-fetch@^2.1.2, node-fetch@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== - -node-fetch@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-modules-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" - integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= - -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== - dependencies: - growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" - shellwords "^0.1.1" - which "^1.3.1" - -node-releases@^1.1.29: - version "1.1.55" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee" - integrity sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w== - -node-releases@^1.1.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== - -normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-path@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.entries@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" - integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.fromentries@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" - integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - has "^1.0.3" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== - dependencies: - mimic-fn "^2.1.0" - -open@^6.3.0: - version "6.4.0" - resolved "https://registry.npmjs.org/open/-/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" - integrity sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg== - dependencies: - is-wsl "^1.1.0" - -opener@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" - integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimism@^0.10.0: - version "0.10.3" - resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.10.3.tgz#163268fdc741dea2fb50f300bedda80356445fd7" - integrity sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw== - dependencies: - "@wry/context" "^0.4.0" - -optionator@^0.8.1, optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - 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" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== - -p-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" - integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== - dependencies: - p-map "^2.0.0" - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-retry@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.2.0.tgz#ea9066c6b44f23cab4cd42f6147cdbbc6604da5d" - integrity sha512-jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA== - dependencies: - "@types/retry" "^0.12.0" - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238" - integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA== - dependencies: - dot-case "^3.0.3" - tslib "^1.10.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" - integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - lines-and-columns "^1.1.6" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" - integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== - dependencies: - no-case "^3.0.3" - tslib "^1.10.0" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -pascalcase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-1.0.0.tgz#d2fd7d73f2969606d2b56e17f5261be41c43c381" - integrity sha512-BSExi0rRnCHReJys6NocaK+cfTXNinAegfWBvr0JD3hiaEG7Nuc7r0CIdOJunXrs8gU/sbHQ9dxVAtiVQisjmg== - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= - dependencies: - pify "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.0, pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@2.0.0, pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" - integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= - dependencies: - find-up "^2.1.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== - -portfinder@^1.0.25: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" - integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.16" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.0" - -postcss-modules-scope@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" - integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== - dependencies: - cssesc "^3.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" - integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== - -postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.2.tgz#1ba8f3eb92231e769b7fcd7cb73ae1b6b74ade08" - integrity sha512-5xJQIPT8BraI7ZnaDwSbu5zLrB6vvi8hVV58yHQ+QK64qrY40dULy0HSRlQ2/2IdzeBpjhDkqdcFBnFeDEMVdg== - -prettier@^2.0.5: - version "2.0.5" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== - -pretty-error@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -pretty-format@^25.1.0, pretty-format@^25.2.3: - version "25.2.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.2.3.tgz#ba6e9603a0d80fa2e470b1fed55de1f9bfd81421" - integrity sha512-IP4+5UOAVGoyqC/DiomOeHBUKN6q00gfyT2qpAsRH64tgOKB2yF7FHJXC18OCiU0/YFierACup/zdCOWw0F/0w== - dependencies: - "@jest/types" "^25.2.3" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -prettysize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prettysize/-/prettysize-2.0.0.tgz#902c02480d865d9cc0813011c9feb4fa02ce6996" - integrity sha512-VVtxR7sOh0VsG8o06Ttq5TrI1aiZKmC+ClSn4eBPaNf4SHr5lzbYW+kYGX3HocBL/MfpVrRfFZ9V3vCbLaiplg== - -private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0, progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.4" - -prop-types@^15.6.2, prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proptypes@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proptypes/-/proptypes-1.1.0.tgz#78b3828a5aa6bb1308939e0de3c6044dfd4bd239" - integrity sha1-eLOCilqmuxMIk54N48YETf1L0jk= - -proxy-addr@~2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" - integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -qs@^6.9.3: - version "6.9.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e" - integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw== - -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -ramda@0.21.0: - version "0.21.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35" - integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU= - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-dev-utils@^9.0.3: - version "9.1.0" - resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-9.1.0.tgz#3ad2bb8848a32319d760d0a84c56c14bdaae5e81" - integrity sha512-X2KYF/lIGyGwP/F/oXgGDF24nxDA2KC4b7AFto+eqzc/t838gpSGiaU8trTqHXOohuLxxc5qi1eDzsl9ucPDpg== - dependencies: - "@babel/code-frame" "7.5.5" - address "1.1.2" - browserslist "4.7.0" - chalk "2.4.2" - cross-spawn "6.0.5" - detect-port-alt "1.1.6" - escape-string-regexp "1.0.5" - filesize "3.6.1" - find-up "3.0.0" - fork-ts-checker-webpack-plugin "1.5.0" - global-modules "2.0.0" - globby "8.0.2" - gzip-size "5.1.1" - immer "1.10.0" - inquirer "6.5.0" - is-root "2.1.0" - loader-utils "1.2.3" - open "^6.3.0" - pkg-up "2.0.0" - react-error-overlay "^6.0.3" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - sockjs-client "1.4.0" - strip-ansi "5.2.0" - text-table "0.2.0" - -react-dom@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-error-overlay@^6.0.1, react-error-overlay@^6.0.3: - version "6.0.7" - resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz#1dcfb459ab671d53f660a991513cb2f0a0553108" - integrity sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA== - -react-hook-form@^5.1.3: - version "5.2.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-5.2.0.tgz#b5b654516ee03d55d78b7b9e194c7f4632885426" - integrity sha512-EqGCSl3DxSUBtL/9lFvrFQLJ7ICdVKrfjcMHay2SvmU4trR8aqrd7YuiLSojBKmZBRdBnCcxG+LzLWF9z474NA== - -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -read-pkg@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237" - integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc= - dependencies: - normalize-package-data "^2.3.2" - parse-json "^4.0.0" - pify "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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" - -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== - dependencies: - picomatch "^2.0.7" - -realpath-native@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== - -recursive-readdir@2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -regenerator-transform@^0.14.2: - version "0.14.4" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" - integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== - dependencies: - "@babel/runtime" "^7.8.4" - private "^0.1.8" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e" - integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g== - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== - dependencies: - lodash "^4.17.15" - -request-promise-native@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== - dependencies: - request-promise-core "1.1.3" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.88.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-dir@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/require-dir/-/require-dir-1.2.0.tgz#0d443b75e96012d3ca749cf19f529a789ae74817" - integrity sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requireindex@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" - integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.15.1, resolve@^1.3.2, resolve@^1.8.1, resolve@^1.9.0: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== - dependencies: - path-parse "^1.0.6" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@0.12.0, retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rollup-pluginutils@^2.5.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.29.0.tgz#6a1a79eea43ca9d3d79a90c15a1ceecedc72097b" - integrity sha512-V63Iz0dSdI5qPPN5HmCN6OBRzBFhMqNWcvwgq863JtSCTU6Vdvqq6S2fYle/dSCyoPrBkIP3EIr1RVs3HTRqqg== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-async@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" - integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== - dependencies: - is-promise "^2.1.0" - -run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rx@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" - integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I= - -rxjs@^6.3.3, rxjs@^6.5.2, rxjs@^6.5.3: - version "6.5.4" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" - integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== - dependencies: - tslib "^1.9.0" - -rxjs@^6.4.0: - version "6.5.5" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" - integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== - dependencies: - tslib "^1.9.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== - dependencies: - xmlchars "^2.1.1" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.0, schema-utils@^2.6.4, schema-utils@^2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" - integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== - dependencies: - ajv "^6.12.0" - ajv-keywords "^3.4.1" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^6.0.0, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - 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" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -side-channel@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" - integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== - dependencies: - es-abstract "^1.17.0-next.1" - object-inspect "^1.7.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -sisteransi@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -sleep-promise@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/sleep-promise/-/sleep-promise-8.0.1.tgz#8d795a27ea23953df6b52b91081e5e22665993c5" - integrity sha1-jXlaJ+ojlT32tSuRCB5eImZZk8U= - -slice-ansi@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" - integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0, sockjs-client@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.0, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - 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" - -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" - integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== - 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" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -ssri@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" - integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== - dependencies: - figgy-pudding "^3.5.1" - -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -streamsearch@0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" - integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string.prototype.matchall@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" - integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0" - has-symbols "^1.0.1" - internal-slot "^1.0.2" - regexp.prototype.flags "^1.3.0" - side-channel "^1.0.2" - -string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" - integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string.prototype.trimleft@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc" - integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimstart "^1.0.0" - -string.prototype.trimright@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3" - integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - string.prototype.trimend "^1.0.0" - -string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" - integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@6.0.0, strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@3.0.0, strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - -style-loader@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" - integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== - dependencies: - loader-utils "^1.2.3" - schema-utils "^2.6.4" - -styled-components@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.1.0.tgz#2e3985b54f461027e1c91af3229e1c2530872a4e" - integrity sha512-0Qs2wEkFBXHFlysz6CV831VG6HedcrFUwChjnWylNivsx14MtmqQsohi21rMHZxzuTba063dEyoe/SR6VGJI7Q== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^0.8.8" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" - shallowequal "^1.1.0" - supports-color "^5.5.0" - -subscriptions-transport-ws@^0.9.19: - version "0.9.19" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz#10ca32f7e291d5ee8eb728b9c02e43c52606cdcf" - integrity sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw== - dependencies: - backo2 "^1.0.2" - eventemitter3 "^3.1.0" - iterall "^1.2.1" - symbol-observable "^1.0.4" - ws "^5.2.0 || ^6.0.0 || ^7.0.0" - -sucrase@^3.10.1: - version "3.13.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.13.0.tgz#68eb000dea32dd2ec84b91de97c76dcb83a1a2ff" - integrity sha512-koXmWc8Iq8q7quNJ9v/TuDIRBeGul1D+QL36PnfzFvYFoQbWcYpSmpJElpSM+eCa0nFthyQqgCGrEKAepnFMtQ== - dependencies: - 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" - -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -svg-react-loader@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/svg-react-loader/-/svg-react-loader-0.4.6.tgz#b263efb3e3d2fff4c682a729351aba5f185051a1" - integrity sha512-HVEypjWQsQuJdBIPzXGxpmQsQts7QwfQuYgK1rah6BVCMoLNSCh/ESKVNd7/tHq8DkWYHHTyaUMDA1FjqZYrgA== - dependencies: - css "2.2.4" - loader-utils "1.1.0" - ramda "0.21.0" - rx "4.1.0" - traverse "0.6.6" - xml2js "0.4.17" - -symbol-observable@^1.0.2, symbol-observable@^1.0.4, symbol-observable@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" - integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== - -symbol-tree@^3.2.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tar-stream@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.2.tgz#6d5ef1a7e5783a95ff70b69b97455a5968dc1325" - integrity sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q== - dependencies: - bl "^4.0.1" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.2.tgz#5df17813468a6264ff14f766886c622b84ae2f39" - integrity sha512-Glo3jkRtPcvpDlAs/0+hozav78yoXKFr+c4wgw62NNMO3oo4AaJdCo21Uu7lcwr55h39W2XD1LMERc64wtbItg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.0" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -temp-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" - integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== - -temp-write@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" - integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.3.2" - -tempy@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.5.0.tgz#2785c89df39fcc4d1714fc554813225e1581d70b" - integrity sha512-VEY96x7gbIRfsxqsafy2l5yVxxp3PhwAGoWMyC2D2Zt5DmEv+2tGiPOrquNRpf21hhGnKLVEsuqleqiZmKG/qw== - dependencies: - is-stream "^2.0.0" - temp-dir "^2.0.0" - type-fest "^0.12.0" - unique-string "^2.0.0" - -terminal-link@^2.0.0, terminal-link@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.3: - version "4.6.10" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.10.tgz#90f5bd069ff456ddbc9503b18e52f9c493d3b7c2" - integrity sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.0" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" - integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= - dependencies: - any-promise "^1.0.0" - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.x: - version "1.0.4" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" - integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toml@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" - integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" - integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== - dependencies: - ip-regex "^2.1.0" - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= - dependencies: - punycode "^2.1.0" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -traverse@0.6.6: - version "0.6.6" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" - integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= - -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-interface-checker@^0.1.9: - version "0.1.10" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.10.tgz#b68a49e37e90a05797e590f08494dd528bf383cf" - integrity sha512-UJYuKET7ez7ry0CnvfY6fPIUIZDw+UI3qvTUQeS2MyI4TgEeWAUBqy185LeaHcdJ9zG2dgFpPJU/AecXU0Afug== - -ts-invariant@^0.4.0, ts-invariant@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" - integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== - dependencies: - tslib "^1.9.3" - -tslib@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.11.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" - integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== - -tslib@^2.1.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.17.1: - version "3.17.1" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" - integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" - integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== - -type-fest@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee" - integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.0, type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" - integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" - integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -unixify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= - dependencies: - normalize-path "^2.1.1" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.0.0.tgz#946719464089e35804009270339f21124e8dd27e" - integrity sha512-sPsoBs8NkSJt9k/2zLUMDAf0rYaG00EtrFQpHRIphKrR6stGsO92LUJf/uUeQNKEoxqoJ4R4qDLqHl+AOEqolA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.26" - schema-utils "^2.6.5" - -url-parse@^1.4.3, url-parse@^1.4.7: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - -v8-to-istanbul@^4.0.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" - integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -v8flags@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.3.tgz#fc9dc23521ca20c5433f81cc4eb9b3033bb105d8" - integrity sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w== - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== - dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -watchpack@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" - integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== - dependencies: - chokidar "^2.1.8" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - -webpack-bundle-analyzer@^3.6.1: - version "3.6.1" - resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.6.1.tgz#bdb637c2304424f2fbff9a950c7be42a839ae73b" - integrity sha512-Nfd8HDwfSx1xBwC+P8QMGvHAOITxNBSvu/J/mCJvOwv+G4VWkU7zir9SSenTtyCi0LnVtmsc7G5SZo1uV+bxRw== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - bfj "^6.1.1" - chalk "^2.4.1" - commander "^2.18.0" - ejs "^2.6.1" - express "^4.16.3" - filesize "^3.6.1" - gzip-size "^5.0.0" - lodash "^4.17.15" - mkdirp "^0.5.1" - opener "^1.5.1" - ws "^6.0.0" - -webpack-cli@^3.3.11: - version "3.3.11" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" - integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@^3.10.3: - version "3.10.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" - integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.6" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^4.42.1: - version "4.42.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.1.tgz#ae707baf091f5ca3ef9c38b884287cfe8f1983ef" - integrity sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" - integrity sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg== - -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== - -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" - integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -"ws@^5.2.0 || ^6.0.0 || ^7.0.0": - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -ws@^6.0.0, ws@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" - integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.0.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xml2js@0.4.17: - version "0.4.17" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.17.tgz#17be93eaae3f3b779359c795b419705a8817e868" - integrity sha1-F76T6q4/O3eTWceVtBlwWogX6Gg= - dependencies: - sax ">=0.6.0" - xmlbuilder "^4.1.0" - -xmlbuilder@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.2.1.tgz#aa58a3041a066f90eaa16c2f5389ff19f3f461a5" - integrity sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU= - dependencies: - lodash "^4.0.0" - -xmlchars@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xregexp@4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" - integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== - -xregexp@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50" - integrity sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g== - dependencies: - "@babel/runtime-corejs3" "^7.8.3" - -xss@^1.0.8: - version "1.0.14" - resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694" - integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw== - dependencies: - commander "^2.20.3" - cssfilter "0.0.10" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^2.0.0: - version "2.1.2" - resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.7.2: - version "1.8.3" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.8.3.tgz#2f420fca58b68ce3a332d0ca64be1d191dd3f87a" - integrity sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw== - dependencies: - "@babel/runtime" "^7.8.7" - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.1: - version "18.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" - integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - cliui "^4.0.0" - decamelize "^1.2.0" - find-up "^3.0.0" - get-caller-file "^1.0.1" - os-locale "^3.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1 || ^4.0.0" - yargs-parser "^11.1.1" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - 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 "^13.1.0" - -yargs@^13.3.0: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - dependencies: - cliui "^5.0.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 "^13.1.2" - -yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.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 "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.1" - -zen-observable-ts@^0.8.20: - version "0.8.20" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.20.tgz#44091e335d3fcbc97f6497e63e7f57d5b516b163" - integrity sha512-2rkjiPALhOtRaDX6pWyNqK1fnP5KkJJybYebopNSn6wDG1lxBoFs2+nwwXKoA6glHIrtwrfBBy6da0stkKtTAA== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable-ts@^0.8.21: - version "0.8.21" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" - integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - -zip-stream@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-2.1.3.tgz#26cc4bdb93641a8590dd07112e1f77af1758865b" - integrity sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q== - dependencies: - archiver-utils "^2.1.0" - compress-commons "^2.1.1" - readable-stream "^3.4.0" diff --git a/__fixtures__/example-todo-main/yarn.lock b/__fixtures__/example-todo-main/yarn.lock deleted file mode 100644 index b16477eecaab..000000000000 --- a/__fixtures__/example-todo-main/yarn.lock +++ /dev/null @@ -1,44266 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 8 - cacheKey: 10c0 - -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: 8c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f - languageName: node - linkType: hard - -"@adobe/css-tools@npm:^4.3.1": - version: 4.3.2 - resolution: "@adobe/css-tools@npm:4.3.2" - checksum: 296a03dd29f227c60500d2da8c7f64991fecf1d8b456ce2b4adb8cec7363d9c08b5b03f1463673fc8cbfe54b538745588e7a13c736d2dd14a80c01a20f127f39 - languageName: node - linkType: hard - -"@alloc/quick-lru@npm:^5.2.0": - version: 5.2.0 - resolution: "@alloc/quick-lru@npm:5.2.0" - checksum: 7b878c48b9d25277d0e1a9b8b2f2312a314af806b4129dc902f2bc29ab09b58236e53964689feec187b28c80d2203aff03829754773a707a8a5987f1b7682d92 - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.0.0": - version: 2.1.1 - resolution: "@ampproject/remapping@npm:2.1.1" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.0" - checksum: 8c0/1c920d286a5b23d9b80b38ee006d05ca6479b3e66015e865e5f935aa5658d01b1acb89c491fffa64ec56202cc89f715830da821e282f6b9b1c75ec4097303a5e - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.1.0": - version: 2.2.0 - resolution: "@ampproject/remapping@npm:2.2.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.1.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 8c0/d267d8def81d75976bed4f1f81418a234a75338963ed0b8565342ef3918b07e9043806eb3a1736df7ac0774edb98e2890f880bba42817f800495e4ae3fac995e - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.2.0": - version: 2.2.1 - resolution: "@ampproject/remapping@npm:2.2.1" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 8c0/92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 - languageName: node - linkType: hard - -"@apollo/client@npm:3.8.8": - version: 3.8.8 - resolution: "@apollo/client@npm:3.8.8" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - "@wry/equality": "npm:^0.5.6" - "@wry/trie": "npm:^0.5.0" - graphql-tag: "npm:^2.12.6" - hoist-non-react-statics: "npm:^3.3.2" - optimism: "npm:^0.18.0" - prop-types: "npm:^15.7.2" - response-iterator: "npm:^0.2.6" - symbol-observable: "npm:^4.0.0" - ts-invariant: "npm:^0.10.3" - tslib: "npm:^2.3.0" - zen-observable-ts: "npm:^1.2.5" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-ws: ^5.5.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - subscriptions-transport-ws: ^0.9.0 || ^0.11.0 - peerDependenciesMeta: - graphql-ws: - optional: true - react: - optional: true - react-dom: - optional: true - subscriptions-transport-ws: - optional: true - checksum: a097fb49d68fa77d59f8d63f73f0335624608102ebe2a30270d679b50f3fc2d697298fde8619571b419c93660a5ba90874d93e3b10efc8d910d752f14df1770b - languageName: node - linkType: hard - -"@apollo/client@npm:^3.3.15": - version: 3.5.8 - resolution: "@apollo/client@npm:3.5.8" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.0.0" - "@wry/context": "npm:^0.6.0" - "@wry/equality": "npm:^0.5.0" - "@wry/trie": "npm:^0.3.0" - graphql-tag: "npm:^2.12.3" - hoist-non-react-statics: "npm:^3.3.2" - optimism: "npm:^0.16.1" - prop-types: "npm:^15.7.2" - symbol-observable: "npm:^4.0.0" - ts-invariant: "npm:^0.9.4" - tslib: "npm:^2.3.0" - zen-observable-ts: "npm:^1.2.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - react: ^16.8.0 || ^17.0.0 - subscriptions-transport-ws: ^0.9.0 || ^0.11.0 - peerDependenciesMeta: - react: - optional: true - subscriptions-transport-ws: - optional: true - checksum: 8c0/c9d2f6a8de0423f961fafa716974b3ea6783f4eed14732a7177cc32f2a5164b7b021b7c0e4955618c470d42bbd6aee4e748b3f0ebef83022b7721a75280c6827 - languageName: node - linkType: hard - -"@apollo/experimental-nextjs-app-support@npm:0.5.1": - version: 0.5.1 - resolution: "@apollo/experimental-nextjs-app-support@npm:0.5.1" - dependencies: - server-only: "npm:^0.0.1" - superjson: "npm:^1.12.2" - ts-invariant: "npm:^0.10.3" - peerDependencies: - "@apollo/client": ">=3.8.0-rc || ^3.8.0 || >=3.9.0-alpha || >=3.9.0-beta || >=3.9.0-rc" - next: ^13.4.1 || ^14.0.0 - react: ^18 - checksum: fe6df5624df7e6268eb3dde7c34c78350ed37efcfa5c317c6f6d9705ab62a513d1950e7bd17748853103d96208e57934d1841b52454165b723237585998bdcae - languageName: node - linkType: hard - -"@apollo/protobufjs@npm:1.2.2, @apollo/protobufjs@npm:^1.0.3": - version: 1.2.2 - resolution: "@apollo/protobufjs@npm:1.2.2" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.2" - "@protobufjs/base64": "npm:^1.1.2" - "@protobufjs/codegen": "npm:^2.0.4" - "@protobufjs/eventemitter": "npm:^1.1.0" - "@protobufjs/fetch": "npm:^1.1.0" - "@protobufjs/float": "npm:^1.0.2" - "@protobufjs/inquire": "npm:^1.1.0" - "@protobufjs/path": "npm:^1.1.2" - "@protobufjs/pool": "npm:^1.1.0" - "@protobufjs/utf8": "npm:^1.1.0" - "@types/long": "npm:^4.0.0" - "@types/node": "npm:^10.1.0" - long: "npm:^4.0.0" - bin: - apollo-pbjs: bin/pbjs - apollo-pbts: bin/pbts - checksum: 8c0/725116675d4add4bdcefe04d81256c30e91113b50158eb1b70efd36b4d5c9591c06d637a48ad9cf21b3e9d672e3452cef1b3cb3e0366bf533ab3fed83b59307b - languageName: node - linkType: hard - -"@apollographql/apollo-tools@npm:^0.5.0": - version: 0.5.1 - resolution: "@apollographql/apollo-tools@npm:0.5.1" - checksum: 8c0/903e572a0871b1f714c62bfa58e8995d07fbe86cb27b1de35126ad7b2ff08b2244f3a1a54b3e80b74f6dba520e82d284e6669739ece9a0fa839b1214bca5a49f - languageName: node - linkType: hard - -"@apollographql/graphql-playground-html@npm:1.6.27": - version: 1.6.27 - resolution: "@apollographql/graphql-playground-html@npm:1.6.27" - dependencies: - xss: "npm:^1.0.8" - checksum: 8c0/507aef82780c0e7d2bab2bfac7695202a89c22bfb0d279382cc0f11390d66d5050191ef15502756d6485f5f8df674e7ab83c1e908739c6be72d250553cdf3ab4 - languageName: node - linkType: hard - -"@apollographql/graphql-upload-8-fork@npm:^8.1.4": - version: 8.1.4 - resolution: "@apollographql/graphql-upload-8-fork@npm:8.1.4" - dependencies: - "@types/express": "npm:*" - "@types/fs-capacitor": "npm:^2.0.0" - "@types/koa": "npm:*" - busboy: "npm:^0.3.1" - fs-capacitor: "npm:^2.0.4" - http-errors: "npm:^1.7.3" - object-path: "npm:^0.11.4" - peerDependencies: - graphql: 0.13.1 - 15 - checksum: 8c0/784acfe251ae5486e3eae72faccde13bad97dd9ad506eb61b3aebb2e272541c543a82e9f032cee8fe017a067b9b058c68160e45afa58e9c1fe115a644799ad30 - languageName: node - linkType: hard - -"@ardatan/aggregate-error@npm:0.0.6": - version: 0.0.6 - resolution: "@ardatan/aggregate-error@npm:0.0.6" - dependencies: - tslib: "npm:~2.0.1" - checksum: 8c0/e374247b506baf753b21fdb32bd8eda12c3b3bf2bd7cc8954e2761ae3eb10e5033ab9cde6a0f279fbdb09e263358b29d40c05e79eb50a1eab08fbf8916a0253c - languageName: node - linkType: hard - -"@ardatan/relay-compiler@npm:12.0.0": - version: 12.0.0 - resolution: "@ardatan/relay-compiler@npm:12.0.0" - dependencies: - "@babel/core": "npm:^7.14.0" - "@babel/generator": "npm:^7.14.0" - "@babel/parser": "npm:^7.14.0" - "@babel/runtime": "npm:^7.0.0" - "@babel/traverse": "npm:^7.14.0" - "@babel/types": "npm:^7.0.0" - babel-preset-fbjs: "npm:^3.4.0" - chalk: "npm:^4.0.0" - fb-watchman: "npm:^2.0.0" - fbjs: "npm:^3.0.0" - glob: "npm:^7.1.1" - immutable: "npm:~3.7.6" - invariant: "npm:^2.2.4" - nullthrows: "npm:^1.1.1" - relay-runtime: "npm:12.0.0" - signedsource: "npm:^1.0.0" - yargs: "npm:^15.3.1" - peerDependencies: - graphql: "*" - bin: - relay-compiler: bin/relay-compiler - checksum: 8c0/7207d65dd39d3a6202fcee81b03338409642a0ff4e7f799b4a074025429ce2b17b6c71c9579a6328b0f4548763ba4efbff0436cddbcad934af00cc4dbc7ac4e1 - languageName: node - linkType: hard - -"@ardatan/sync-fetch@npm:0.0.1": - version: 0.0.1 - resolution: "@ardatan/sync-fetch@npm:0.0.1" - dependencies: - node-fetch: "npm:^2.6.1" - checksum: 8c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f - languageName: node - linkType: hard - -"@babel/cli@npm:7.13.14": - version: 7.13.14 - resolution: "@babel/cli@npm:7.13.14" - dependencies: - "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents" - chokidar: "npm:^3.4.0" - commander: "npm:^4.0.1" - convert-source-map: "npm:^1.1.0" - fs-readdir-recursive: "npm:^1.1.0" - glob: "npm:^7.0.0" - lodash: "npm:^4.17.19" - make-dir: "npm:^2.1.0" - slash: "npm:^2.0.0" - source-map: "npm:^0.5.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - dependenciesMeta: - "@nicolo-ribaudo/chokidar-2": - optional: true - chokidar: - optional: true - bin: - babel: ./bin/babel.js - babel-external-helpers: ./bin/babel-external-helpers.js - checksum: 8c0/b300bcc92890934ca22a648e561ecc58323610864272bb6afdfac490ece912c26dd1ddbb3d897efb0cded86614a7d94cb2863a35ac4cfb7c4d1ba601acd8ed27 - languageName: node - linkType: hard - -"@babel/cli@npm:7.23.4": - version: 7.23.4 - resolution: "@babel/cli@npm:7.23.4" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.17" - "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3" - chokidar: "npm:^3.4.0" - commander: "npm:^4.0.1" - convert-source-map: "npm:^2.0.0" - fs-readdir-recursive: "npm:^1.1.0" - glob: "npm:^7.2.0" - make-dir: "npm:^2.1.0" - slash: "npm:^2.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - dependenciesMeta: - "@nicolo-ribaudo/chokidar-2": - optional: true - chokidar: - optional: true - bin: - babel: ./bin/babel.js - babel-external-helpers: ./bin/babel-external-helpers.js - checksum: f71bc378f62dd19983adc8dae4ee33cd44ac7d8ea3224709f787f290e0c3a4b8a36dad76d672b3479de2b9f524e55b4bb12a2296154c73134ba111114a15779c - languageName: node - linkType: hard - -"@babel/code-frame@npm:7.10.4": - version: 7.10.4 - resolution: "@babel/code-frame@npm:7.10.4" - dependencies: - "@babel/highlight": "npm:^7.10.4" - checksum: 8c0/69e0f52986a1f40231d891224f420436629b6678711b68c088e97b7bdba1607aeb5eb9cfb070275c433f0bf43c37c134845db80d1cdbf5ac88a69b0bdcce9402 - languageName: node - linkType: hard - -"@babel/code-frame@npm:7.12.11": - version: 7.12.11 - resolution: "@babel/code-frame@npm:7.12.11" - dependencies: - "@babel/highlight": "npm:^7.10.4" - checksum: 8c0/836ffd155506768e991d6dd8c51db37cad5958ed1c8e0a2329ccd9527165d5c752e943d66a5c3c92ffd45f343419f0742e7636629a529f4fbd5303e3637746b9 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.5.5": - version: 7.12.13 - resolution: "@babel/code-frame@npm:7.12.13" - dependencies: - "@babel/highlight": "npm:^7.12.13" - checksum: 8c0/bc966d2d7900c54009c6abb472548390d405601c09ec91ee7a0fd0e503e51c407e5bb5adbc656c3052b7944631c4f599908e6efbc8e59ce62166e285a15f97be - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.8.3": - version: 7.16.7 - resolution: "@babel/code-frame@npm:7.16.7" - dependencies: - "@babel/highlight": "npm:^7.16.7" - checksum: 8c0/bed53eab44e67480e67b353b94ab9bef7bce6cdea799dde591c296cfb47d872348f20cf9a3b82b0dbf8530bf67ca438b5bed3d80622ea76c7227cea3e6f04aa6 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": "npm:^7.18.6" - checksum: 8c0/e3966f2717b7ebd9610524730e10b75ee74154f62617e5e115c97dbbbabc5351845c9aa850788012cb4d9aee85c3dc59fe6bef36690f244e8dcfca34bd35e9c9 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.22.5": - version: 7.22.13 - resolution: "@babel/code-frame@npm:7.22.13" - dependencies: - "@babel/highlight": "npm:^7.22.13" - chalk: "npm:^2.4.2" - checksum: 8c0/f4cc8ae1000265677daf4845083b72f88d00d311adb1a93c94eb4b07bf0ed6828a81ae4ac43ee7d476775000b93a28a9cddec18fbdc5796212d8dcccd5de72bd - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/code-frame@npm:7.23.5" - dependencies: - "@babel/highlight": "npm:^7.23.4" - chalk: "npm:^2.4.2" - checksum: a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/compat-data@npm:7.14.4" - checksum: 8c0/b233252e6e15d65d13c2bb94415baad6bc48ca71c15dfcc22fabd9f62b918fad73c89fc84d799b3e367fe5152f970239b72f15e24ee00d63a8294a20d1166bac - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.13.15, @babel/compat-data@npm:^7.16.4, @babel/compat-data@npm:^7.16.8": - version: 7.17.0 - resolution: "@babel/compat-data@npm:7.17.0" - checksum: 8c0/6d70a5a1362e013c43ac0fc8027944cb3766f5a173690293336340644e05070f23490e52c059423c9a412395855bcb8d884ad5db77f293518b08bfed2152fff6 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.20.5": - version: 7.20.14 - resolution: "@babel/compat-data@npm:7.20.14" - checksum: 8c0/b35587fe2f90dbf4e07d33fcaaa49fa117313eeb892591fede7679b21f7aff4235735a709fdb771a9a33b9e57d5cebed522108ad1364f6a1abf91cf16ffde1e4 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: 8c0/1334264b041f8ad4e33036326970c9c26754eb5c04b3af6c223fe6da988cbb8a8542b5526f49ec1ac488210d2f710484a0e4bcd30256294ae3f261d0141febad - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/compat-data@npm:7.23.5" - checksum: 081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c - languageName: node - linkType: hard - -"@babel/core@npm:7.12.9": - version: 7.12.9 - resolution: "@babel/core@npm:7.12.9" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/generator": "npm:^7.12.5" - "@babel/helper-module-transforms": "npm:^7.12.1" - "@babel/helpers": "npm:^7.12.5" - "@babel/parser": "npm:^7.12.7" - "@babel/template": "npm:^7.12.7" - "@babel/traverse": "npm:^7.12.9" - "@babel/types": "npm:^7.12.7" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.1" - json5: "npm:^2.1.2" - lodash: "npm:^4.17.19" - resolve: "npm:^1.3.2" - semver: "npm:^5.4.1" - source-map: "npm:^0.5.0" - checksum: 8c0/c11d26f5a33a29c94fdd1c492dfd723f48926c51e975448dda57c081c0d74c7b03298642b2651559e0d330ec868b5757b60f9648c71cf7f89fddf79a17cf006f - languageName: node - linkType: hard - -"@babel/core@npm:7.13.16": - version: 7.13.16 - resolution: "@babel/core@npm:7.13.16" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/generator": "npm:^7.13.16" - "@babel/helper-compilation-targets": "npm:^7.13.16" - "@babel/helper-module-transforms": "npm:^7.13.14" - "@babel/helpers": "npm:^7.13.16" - "@babel/parser": "npm:^7.13.16" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.13.15" - "@babel/types": "npm:^7.13.16" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.1.2" - semver: "npm:^6.3.0" - source-map: "npm:^0.5.0" - checksum: 8c0/832563b4a488ab1903021e28f3c0b283279257323f3663421d53f970303932d1022263643c973a66f72eb9df56f42b6ffa7efa622407de0f6f1a1502055d6d98 - languageName: node - linkType: hard - -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.1, @babel/core@npm:^7.7.5": - version: 7.14.3 - resolution: "@babel/core@npm:7.14.3" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/generator": "npm:^7.14.3" - "@babel/helper-compilation-targets": "npm:^7.13.16" - "@babel/helper-module-transforms": "npm:^7.14.2" - "@babel/helpers": "npm:^7.14.0" - "@babel/parser": "npm:^7.14.3" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.14.2" - "@babel/types": "npm:^7.14.2" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.1.2" - semver: "npm:^6.3.0" - source-map: "npm:^0.5.0" - checksum: 8c0/c6bdfc5a76149de34ba414b327c1f69fb9b5902f4e999a4a6e21488585758365c94b1384c81e207baec743cfc07bbd139ca07f95c7dd4a831116e32d98121d1f - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0": - version: 7.20.12 - resolution: "@babel/core@npm:7.20.12" - dependencies: - "@ampproject/remapping": "npm:^2.1.0" - "@babel/code-frame": "npm:^7.18.6" - "@babel/generator": "npm:^7.20.7" - "@babel/helper-compilation-targets": "npm:^7.20.7" - "@babel/helper-module-transforms": "npm:^7.20.11" - "@babel/helpers": "npm:^7.20.7" - "@babel/parser": "npm:^7.20.7" - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.20.12" - "@babel/types": "npm:^7.20.7" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.2" - semver: "npm:^6.3.0" - checksum: 8c0/190f5e144396692e163d62f17ea715a4cc3cfc22ea8052424e20a5e2bdf162195eac71440244689b2e6d4d61dfdeab1d7f475d77ab31904832c844fe572fbee2 - languageName: node - linkType: hard - -"@babel/core@npm:^7.12.10": - version: 7.17.2 - resolution: "@babel/core@npm:7.17.2" - dependencies: - "@ampproject/remapping": "npm:^2.0.0" - "@babel/code-frame": "npm:^7.16.7" - "@babel/generator": "npm:^7.17.0" - "@babel/helper-compilation-targets": "npm:^7.16.7" - "@babel/helper-module-transforms": "npm:^7.16.7" - "@babel/helpers": "npm:^7.17.2" - "@babel/parser": "npm:^7.17.0" - "@babel/template": "npm:^7.16.7" - "@babel/traverse": "npm:^7.17.0" - "@babel/types": "npm:^7.17.0" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.1.2" - semver: "npm:^6.3.0" - checksum: 8c0/2df17d8bf3b7ee091b92798ec36f50a10505a5611856c3f01948486eafa5cd35b6b25a1120742607775762c1b78eeb16a58691d1edf49e2bbc25ca6bcd9d2775 - languageName: node - linkType: hard - -"@babel/core@npm:^7.21.3": - version: 7.22.11 - resolution: "@babel/core@npm:7.22.11" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.22.10" - "@babel/generator": "npm:^7.22.10" - "@babel/helper-compilation-targets": "npm:^7.22.10" - "@babel/helper-module-transforms": "npm:^7.22.9" - "@babel/helpers": "npm:^7.22.11" - "@babel/parser": "npm:^7.22.11" - "@babel/template": "npm:^7.22.5" - "@babel/traverse": "npm:^7.22.11" - "@babel/types": "npm:^7.22.11" - convert-source-map: "npm:^1.7.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 8c0/862c5459381b377e0f185772ae4cb93a236217786102a8acc514eeab7f99d1059c006bf86a17627e06171df5087e028ba1a2a4a74847bd8bdb62b6ba802814c2 - languageName: node - linkType: hard - -"@babel/core@npm:^7.22.20, @babel/core@npm:^7.23.5": - version: 7.23.7 - resolution: "@babel/core@npm:7.23.7" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helpers": "npm:^7.23.7" - "@babel/parser": "npm:^7.23.6" - "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.7" - "@babel/types": "npm:^7.23.6" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 38c9934973d384ed83369712978453eac91dc3f22167404dbdb272b64f602e74728a6f37012c53ee57e521b8ae2da60097f050497d9b6a212d28b59cdfb2cd1d - languageName: node - linkType: hard - -"@babel/eslint-parser@npm:7.23.3": - version: 7.23.3 - resolution: "@babel/eslint-parser@npm:7.23.3" - dependencies: - "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" - eslint-visitor-keys: "npm:^2.1.0" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - checksum: abb01d23acd80e983125cd72c547baaf7775bfca7a98fc57a2a95f2b70197a34c6bf861e255ab5c8740ace27c50a9966481503875fcc23b2636598740e4881f4 - languageName: node - linkType: hard - -"@babel/eslint-plugin@npm:7.23.5": - version: 7.23.5 - resolution: "@babel/eslint-plugin@npm:7.23.5" - dependencies: - eslint-rule-composer: "npm:^0.3.0" - peerDependencies: - "@babel/eslint-parser": ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 - checksum: adaf0975bab774c9a7ddd7aac6f2f7e4e0b087fea24759d8538ebe988b72eaca5928d9afc6b9c13927bf3e3c6ac66795d1060f6a8bfa9748de27f5d93d3fef64 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.14.2, @babel/generator@npm:^7.14.3": - version: 7.14.3 - resolution: "@babel/generator@npm:7.14.3" - dependencies: - "@babel/types": "npm:^7.14.2" - jsesc: "npm:^2.5.1" - source-map: "npm:^0.5.0" - checksum: 8c0/90e8b7f4f337281e49486c147661c0e098ca552e861b4c76cf070419b45cc02ea4a129b4e83fa7875994f56aeaa347734e7a38efaba5f9322b18884ab3da1045 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.5, @babel/generator@npm:^7.13.16, @babel/generator@npm:^7.17.0": - version: 7.17.0 - resolution: "@babel/generator@npm:7.17.0" - dependencies: - "@babel/types": "npm:^7.17.0" - jsesc: "npm:^2.5.1" - source-map: "npm:^0.5.0" - checksum: 8c0/1a29b321a6925a017315bac1e1ed251786aeed83083c3b4a81d47b8e4eb0d2ad15941b6c1e758e5c5d8524e9e59149f81839b6456352f9eb980ce1e8d9740120 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.20.7, @babel/generator@npm:^7.7.2": - version: 7.20.14 - resolution: "@babel/generator@npm:7.20.14" - dependencies: - "@babel/types": "npm:^7.20.7" - "@jridgewell/gen-mapping": "npm:^0.3.2" - jsesc: "npm:^2.5.1" - checksum: 8c0/4b0159f2175cf002a902e0aaa1c3c2af9c98d309394e685bc556cd2c34ccc4ace38a91b919f62effc7e067fadd2ded6cda8630b7c11367a303a2bd67862989b5 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" - dependencies: - "@babel/types": "npm:^7.22.10" - "@jridgewell/gen-mapping": "npm:^0.3.2" - "@jridgewell/trace-mapping": "npm:^0.3.17" - jsesc: "npm:^2.5.1" - checksum: 8c0/2f26ac64f0b606cd9e7799eb2bc42d371b378ba2cb3c7c92c01a3bfccca271371990bcd2dc67fee5547721ba3e1fa83ca03fe3aab30bdf417c3078b9759d2f10 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/generator@npm:7.23.6" - dependencies: - "@babel/types": "npm:^7.23.6" - "@jridgewell/gen-mapping": "npm:^0.3.2" - "@jridgewell/trace-mapping": "npm:^0.3.17" - jsesc: "npm:^2.5.1" - checksum: 53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.0.0, @babel/helper-annotate-as-pure@npm:^7.10.4, @babel/helper-annotate-as-pure@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-annotate-as-pure@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 8c0/9c4c0e738d42dedd40c87757bffb1454d1bdcaf1e6318f9768bc71874319c4ca5c45d5ed38b9dfb3b9980b27658fd0bf8fc44e53a2a43652a25d9a66c649f98a - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-annotate-as-pure@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/ce0ba7e9ab86c6c61cb111240428deeded48a0c293a0fc912608875cd30d4783937beba5b303dc97b9296048c09c0156756598939fc172bb36ddbe7760e5e154 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 8c0/e413cd022e1e21232c1ce98f3e1198ec5f4774c7eceb81155a45f9cb6d8481f3983c52f83252309856668e728c751f0340d29854b604530a694899208df6bcc3 - languageName: node - linkType: hard - -"@babel/helper-annotate-as-pure@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.12.13" - dependencies: - "@babel/helper-explode-assignable-expression": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 8c0/eda7c1f96c91229ab8b9f28a13104405278fe6a9a439e8db03cb073199e085291214ae85e360e4e5c8e320e3cb1f9e94bdc0f228b1bd66cbfc15e29e2b653d84 - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.16.7" - dependencies: - "@babel/helper-explode-assignable-expression": "npm:^7.16.7" - "@babel/types": "npm:^7.16.7" - checksum: 8c0/ea08e5491ac2edc9d7d57092abf1704835e986ac4184449940dca082b03909f8f4f672f862c582d05a2e5635acd2aaf4efcf57027cd37a027d24034d63cf0610 - languageName: node - linkType: hard - -"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" - dependencies: - "@babel/types": "npm:^7.22.15" - checksum: 2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.13.16, @babel/helper-compilation-targets@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/helper-compilation-targets@npm:7.14.4" - dependencies: - "@babel/compat-data": "npm:^7.14.4" - "@babel/helper-validator-option": "npm:^7.12.17" - browserslist: "npm:^4.16.6" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/32a0f8d3ac5b05ccfd28085ac4feb89fa931847f7d6bdcbd8a35c2a35e471e8faf52122fbd70513b2f1d338494d2c90c5343586acb93c3887287fabf87601b77 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.13.13, @babel/helper-compilation-targets@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-compilation-targets@npm:7.16.7" - dependencies: - "@babel/compat-data": "npm:^7.16.4" - "@babel/helper-validator-option": "npm:^7.16.7" - browserslist: "npm:^4.17.5" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/a553394b55f1ec7a2b92ca9c9c381dd706f69074ef5404cb146e65b5221d249602f2e78aab56e5e0930f33b0641b3e6aefdd1032df532c50482a3308ec8d2810 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.18.9, @babel/helper-compilation-targets@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-compilation-targets@npm:7.20.7" - dependencies: - "@babel/compat-data": "npm:^7.20.5" - "@babel/helper-validator-option": "npm:^7.18.6" - browserslist: "npm:^4.21.3" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/68c3e12e04c8f26c82a1aabb8003610b818d4171e0b885d1ca87c700acd7f0c50a7f4f1d3c0044947e327cb5670294b55c666d09109144b3b01021c587401e4c - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.10, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" - dependencies: - "@babel/compat-data": "npm:^7.22.9" - "@babel/helper-validator-option": "npm:^7.22.5" - browserslist: "npm:^4.21.9" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 8c0/edef207b819f491ded9462ac73858eadb155f4a0afe6cf3951459e47ad23b743ed56d7bd8a1b3f63fd25b39543db42ea58fea7b2193dcb4c98a511d7f1ad547a - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helper-compilation-targets@npm:7.23.6" - dependencies: - "@babel/compat-data": "npm:^7.23.5" - "@babel/helper-validator-option": "npm:^7.23.5" - browserslist: "npm:^4.22.2" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.13.0, @babel/helper-create-class-features-plugin@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/helper-create-class-features-plugin@npm:7.14.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-function-name": "npm:^7.14.2" - "@babel/helper-member-expression-to-functions": "npm:^7.13.12" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/helper-replace-supers": "npm:^7.14.4" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/0ab9e0f60251b8995a10203c5ad77ba4db695380bcee5b9d3bf389563fea6f28dd5151080add0f24a808fcc915282cca76be207026269e0c7b222dd39b186340 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.16.10, @babel/helper-create-class-features-plugin@npm:^7.16.7, @babel/helper-create-class-features-plugin@npm:^7.17.1": - version: 7.17.1 - resolution: "@babel/helper-create-class-features-plugin@npm:7.17.1" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - "@babel/helper-environment-visitor": "npm:^7.16.7" - "@babel/helper-function-name": "npm:^7.16.7" - "@babel/helper-member-expression-to-functions": "npm:^7.16.7" - "@babel/helper-optimise-call-expression": "npm:^7.16.7" - "@babel/helper-replace-supers": "npm:^7.16.7" - "@babel/helper-split-export-declaration": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/8d2382eafc6d444c293e4fab0e8ae53777c901e7e077a9dda2bda1a2cd708254789fe17adb0421a79feba039afb68c0910293f00d89fa527d1fe1d3cadea7f40 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.20.12": - version: 7.20.12 - resolution: "@babel/helper-create-class-features-plugin@npm:7.20.12" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-function-name": "npm:^7.19.0" - "@babel/helper-member-expression-to-functions": "npm:^7.20.7" - "@babel/helper-optimise-call-expression": "npm:^7.18.6" - "@babel/helper-replace-supers": "npm:^7.20.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/e17a6e3afa92c5b286093f754efa692a76a5893fe39e66c7b246e3c37db5be43012973975ed1548f1ee6c2713dd88cdb369672460e29be2c072c3cdf930879ef - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.23.6": - version: 7.23.7 - resolution: "@babel/helper-create-class-features-plugin@npm:7.23.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-member-expression-to-functions": "npm:^7.23.0" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.20" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: f594e99f97211bda5530756712751c1c4ce6063bb376f1f38cc540309a086bd0f4b62aff969ddb29e7310e936c2d3745934a2b292c4710be8112e57fbe3f3381 - languageName: node - linkType: hard - -"@babel/helper-create-class-features-plugin@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/helper-create-class-features-plugin@npm:7.22.11" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" - "@babel/helper-member-expression-to-functions": "npm:^7.22.5" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.9" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/6744de8097ff43c6c041ccc17b7dac6e75b019215f14da1acbd5cbebc1146483617c089ed98a6c740fca010e3bc43c737b3cc0631933467cba2841d11d35788f - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.12.13": - version: 7.14.3 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.14.3" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - regexpu-core: "npm:^4.7.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/41c0ce69ff251234f38f4f75a31abfce9aa33b6df896d1a00c9fc500e37ef4270f46983f9a8ada6d7d2683852110e5f8f88219013e0b2e2ede1b0e6c8594f4dc - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.16.7": - version: 7.17.0 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.17.0" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - regexpu-core: "npm:^5.0.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/e776449e6d6c61e0f95b836c2dadeab1e5db419a74de29946681cef137ef0ca71e0e19b5057b6239c88e99517506eb94a776adf84df80b3222f61da86899b7ac - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.18.6": - version: 7.20.5 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.20.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - regexpu-core: "npm:^5.2.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/567132405fc79cd97a656a966d97a76d22cb05dd82b9293952f51ba849b849ba829cf6715bc7c8aa3f3510e1b5aaa798e3216cd92a612e353004c55a407b35cd - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - regexpu-core: "npm:^5.3.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 - languageName: node - linkType: hard - -"@babel/helper-create-regexp-features-plugin@npm:^7.22.5": - version: 7.22.9 - resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.9" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - regexpu-core: "npm:^5.3.1" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/056c9913299ba399194d9aef5f4281a81806f66979c3c9c6da19b2e29bc92abad6d6d6be0cd4b3ed5945abbdf2d4c45362ee26a012f75f16de7d26859dfde11d - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/helper-define-polyfill-provider@npm:0.1.5" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.13.0" - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/traverse": "npm:^7.13.0" - debug: "npm:^4.1.1" - lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" - semver: "npm:^6.1.2" - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8c0/b83aa728cc2fd4882a82ce67c300407024a05adc3f88c461a02438b2ab50c66e711f8ba36ef622637eb7af4d40aaafa0d70e77e0da9adc5710f190a686082f94 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.2.2": - version: 0.2.3 - resolution: "@babel/helper-define-polyfill-provider@npm:0.2.3" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.13.0" - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/traverse": "npm:^7.13.0" - debug: "npm:^4.1.1" - lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" - semver: "npm:^6.1.2" - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8c0/4070639e48e397d05efbb147c305b0a7a7bfb8004b65b2a18d33b55b4d3366f7494e398af9fd026687fefc78d39d34cd7ba3ddcb24b6acf5e11dfeea14998e9a - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.3.1": - version: 0.3.1 - resolution: "@babel/helper-define-polyfill-provider@npm:0.3.1" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.13.0" - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/traverse": "npm:^7.13.0" - debug: "npm:^4.1.1" - lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" - semver: "npm:^6.1.2" - peerDependencies: - "@babel/core": ^7.4.0-0 - checksum: 8c0/1daf68e594bd7d32429693c4083e3cda78f34ebc8b716f54a8bb65b5786a88653e7e0182f98099473599f7717e0da3e96afe1b7f04c420465f3a4c43b2663389 - languageName: node - linkType: hard - -"@babel/helper-define-polyfill-provider@npm:^0.4.4": - version: 0.4.4 - resolution: "@babel/helper-define-polyfill-provider@npm:0.4.4" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - debug: "npm:^4.1.1" - lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.14.2" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 60126f5f719b9e2114df62e3bf3ac0797b71d8dc733db60192eb169b004fde72ee309fa5848c5fdfe98b8e8863c46f55e16da5aa8a4e420b4d2670cd0c5dd708 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-environment-visitor@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/d89bc719efea94c866b2fddcc349a26c98fc1e0c38e61e23c40bf7c3e34d9e0e43b6c5327bf0b0de95bda4b8ae61388cba1d477cafecf05b3a7c1a71b05a65a6 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.18.9": - version: 7.18.9 - resolution: "@babel/helper-environment-visitor@npm:7.18.9" - checksum: 8c0/a69dd50ea91d8143b899a40ca7a387fa84dbaa02e606d8692188c7c59bd4007bcd632c189f7b7dab72cb7a016e159557a6fccf7093ab9b584d87cf2ea8cf36b7 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-environment-visitor@npm:7.22.5" - checksum: 8c0/c9377464c1839741a0a77bbad56de94c896f4313eb034c988fc2ab01293e7c4027244c93b4256606c5f4e34c68cf599a7d31a548d537577c7da836bbca40551b - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.12.13": - version: 7.13.0 - resolution: "@babel/helper-explode-assignable-expression@npm:7.13.0" - dependencies: - "@babel/types": "npm:^7.13.0" - checksum: 8c0/9c9369110b0b29f8fdb40ebec1cecdc5f52d23ce39e7fb63281579515df30c7fee4c2f14881bf3d1d342c5981f6ba55f56e382cbe88f95b586ae9f5d9c541591 - languageName: node - linkType: hard - -"@babel/helper-explode-assignable-expression@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-explode-assignable-expression@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/f7a990743f8078f9690d4c1d8c190607b8d6acee3c6b25a261a85344a79f60a41c55809954840fd9a31f5d0a4babef1c49692f461a5957d3f193654e1ab454c7 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.12.13, @babel/helper-function-name@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/helper-function-name@npm:7.14.2" - dependencies: - "@babel/helper-get-function-arity": "npm:^7.12.13" - "@babel/template": "npm:^7.12.13" - "@babel/types": "npm:^7.14.2" - checksum: 8c0/eaa8f323e1767956defcf1e340e0a4581bc4e16f2fcd4289f7916ff4c4cb4620490a56c41acbbd3c559b15b392fdfce80b72017f8aee2afb86e5b5f3f0e1579d - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-function-name@npm:7.16.7" - dependencies: - "@babel/helper-get-function-arity": "npm:^7.16.7" - "@babel/template": "npm:^7.16.7" - "@babel/types": "npm:^7.16.7" - checksum: 8c0/1c6a415ee71055bd9a57c8a204ff81417be418990c1a6a5ef2a655e9b74d34658190a051a9b716f77689c292e8b66889d74720d4d69a5c272cf172887f691d0c - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.18.9, @babel/helper-function-name@npm:^7.19.0": - version: 7.19.0 - resolution: "@babel/helper-function-name@npm:7.19.0" - dependencies: - "@babel/template": "npm:^7.18.10" - "@babel/types": "npm:^7.19.0" - checksum: 8c0/a4181d23274d926df3a8032fb2ff210b8a27c83fedd9e7bd148a6877cb4070be4caf69ddae1bf29447e1e84da807ff769a31ca661ef55ecd4d4d672073a68c48 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-function-name@npm:7.22.5" - dependencies: - "@babel/template": "npm:^7.22.5" - "@babel/types": "npm:^7.22.5" - checksum: 8c0/3ce2e87967fe54aa463d279150ddda0dae3b5bc3f8c2773b90670b553b61e8fe62da7edcd7b1e1891c5b25af4924a6700dad2e9d8249b910a5bf7caa2eaf4c13 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/types": "npm:^7.23.0" - checksum: d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 - languageName: node - linkType: hard - -"@babel/helper-get-function-arity@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-get-function-arity@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 8c0/12c34afd52e88f52f313d7b6acff2a62f55de93bdf2f57086417147e20c8391b2ee18da30dedf7102775f291c0b340240ed4538bbcfefc3b55e8eae1899c1227 - languageName: node - linkType: hard - -"@babel/helper-get-function-arity@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-get-function-arity@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/e1bca6793a77144f023af577e8761cab096d5945c4081c54841f58724ae9f5009c1d91603afd266f0f4d279c94bae9430cf029d04445dabd46b1f2e7bc165419 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.13.0": - version: 7.13.16 - resolution: "@babel/helper-hoist-variables@npm:7.13.16" - dependencies: - "@babel/traverse": "npm:^7.13.15" - "@babel/types": "npm:^7.13.16" - checksum: 8c0/b045ed4dcc76e3a5cc7f9f9c3f316823f01d7984e3cf493e5a231a8e7af98d091dd7d8e45b6c16756622e216175a5a6860f9a2bffd310259f826e3c0f4ba2ec8 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-hoist-variables@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/20e9775db9d37bd8ba76be5fe08c80a916be794a645311a78c38382d415305690194f61337b508c23528479bf2768ab7484c133c75e8194c6ae55ab46c05bde7 - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-hoist-variables@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 8c0/830aa7ca663b0d2a025513ab50a9a10adb2a37d8cf3ba40bb74b8ac14d45fbc3d08c37b1889b10d36558edfbd34ff914909118ae156c2f0915f2057901b90eff - languageName: node - linkType: hard - -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-member-expression-to-functions@npm:7.13.12" - dependencies: - "@babel/types": "npm:^7.13.12" - checksum: 8c0/752f8ca5a9a3fa5f506392410f907a05d04754defcbd7eab281847610657d47ccf1af22948a482ee9dd7413c1aaf0bb4e09b39f5ca9fc354cfaa3d888848cf9a - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/73d81b890d322d97dc14a7b43a0fdbb52f2e0ee2bde044f4d07928efbda4f51f0814179c31b4c8ec1f0f8a3c8b47fe2d98602a039e0f48d904b1e30f34b60e47 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-member-expression-to-functions@npm:7.20.7" - dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 8c0/f2cdaf0b8a280f59904551bf3f1fe39eedf5952a8a9ac61333470f8ee3ef036cd60500401a22494fd10b8ffdb7853d0ac1708870afb2255ebc73d8c43b9a8267 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" - dependencies: - "@babel/types": "npm:^7.23.0" - checksum: b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 - languageName: node - linkType: hard - -"@babel/helper-member-expression-to-functions@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-member-expression-to-functions@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/c04a71976b2508c6f1fa46562439b74970cea37958e450bcd59363b9c62ac49fb8e3cef544b08264b1d710b3f36214486cb7e1102e4f1ee8e1c2878b5eebcc75 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.12.13, @babel/helper-module-imports@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-module-imports@npm:7.13.12" - dependencies: - "@babel/types": "npm:^7.13.12" - checksum: 8c0/4f7e700c3f9cf4e56116232f96722ffda384eae21a09584e1c695f4a939a6f443284de33d193ae3e2d9c786f24e2985c55ccca5b3b0dbd6d252a8c944b3bc4c7 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-module-imports@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/134e3979d822ddd6871285ead2b7eed7fb4cd8862fec64692c98bb5bd401199a149b510394d75ca39a9dad6d3ecd6f2f14b61ff1f7b8b59781cba5efeb881d04 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-module-imports@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 8c0/a92e28fc4b5dbb0d0afd4a313efc0cf5b26ce1adc0c01fc22724c997789ac7d7f4f30bc9143d94a6ba8b0a035933cf63a727a365ce1c57dbca0935f48de96244 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-module-imports@npm:7.22.15" - dependencies: - "@babel/types": "npm:^7.22.15" - checksum: 4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-module-imports@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/04f8c0586c485c33017c63e0fc5fc16bd33b883cef3c88e4b3a8bf7bc807b3f9a7bcb9372fbcc01c0a539a5d1cdb477e7bdec77e250669edab00f796683b6b07 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.13.14, @babel/helper-module-transforms@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-module-transforms@npm:7.16.7" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.16.7" - "@babel/helper-module-imports": "npm:^7.16.7" - "@babel/helper-simple-access": "npm:^7.16.7" - "@babel/helper-split-export-declaration": "npm:^7.16.7" - "@babel/helper-validator-identifier": "npm:^7.16.7" - "@babel/template": "npm:^7.16.7" - "@babel/traverse": "npm:^7.16.7" - "@babel/types": "npm:^7.16.7" - checksum: 8c0/d3417ab9570974487282d0274c9cff8cff4a75130912b4ad88ef256ca3e83732930b4f7a0c0279f574e7549807a3c89961a743a02d29613c5cbce218d1e043d7 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.13.0, @babel/helper-module-transforms@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/helper-module-transforms@npm:7.14.2" - dependencies: - "@babel/helper-module-imports": "npm:^7.13.12" - "@babel/helper-replace-supers": "npm:^7.13.12" - "@babel/helper-simple-access": "npm:^7.13.12" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - "@babel/helper-validator-identifier": "npm:^7.14.0" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.14.2" - "@babel/types": "npm:^7.14.2" - checksum: 8c0/43eed87b686351665227e1e2576789fe703c5b88c19bb5e94ae460204084124360c1d59618fdd8e941cfd1601f307e6f544fda8dc0ceb43d13d96348cecdcab5 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.20.11": - version: 7.20.11 - resolution: "@babel/helper-module-transforms@npm:7.20.11" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-module-imports": "npm:^7.18.6" - "@babel/helper-simple-access": "npm:^7.20.2" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - "@babel/helper-validator-identifier": "npm:^7.19.1" - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.20.10" - "@babel/types": "npm:^7.20.7" - checksum: 8c0/a6cc533c3c9a2ed939f041002c142611a657a6defffda195f56936793f7ceb6c9abcc0c5e77e49da9e1584f60442e04107937394dbd6560d1094cfd7f3a9a152 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-module-transforms@npm:7.22.9" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-module-imports": "npm:^7.22.5" - "@babel/helper-simple-access": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/1844dc2c9049552d13d40385cb196704a754feab60ef8c370a5e1c431a4f64b0ddd7bb1dddaa5c98288cafd5c08cd4d8e6d5aba9a11e1133b8b999ab7c9defd1 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/helper-module-transforms@npm:7.23.3" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-simple-access": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/helper-validator-identifier": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 8c0/5858d42a6119d0e4e68e3f916d08748a02f4f7d2a346453f5c61a0003aa79b40a3280010f3691e3d05aa4db04b3665dd872b31b1cfe55048c7d7201df37678a6 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-optimise-call-expression@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/8ceb6ddeaba2709fd9601157175314ec1e1e2536bc01e3a4609c5d4133b899a94f94d9cbd1549e22dce2442d0497270e97cadf796f76d29b60fa8bd0acec9c78 - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-optimise-call-expression@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 8c0/f1352ebc5d9abae6088e7d9b4b6b445c406ba552ef61e967ec77d005ff65752265b002b6faaf16cc293f9e37753760ef05c1f4b26cda1039256917022ba5669c - languageName: node - linkType: hard - -"@babel/helper-optimise-call-expression@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:7.10.4": - version: 7.10.4 - resolution: "@babel/helper-plugin-utils@npm:7.10.4" - checksum: 8c0/113d0405281f5490658f7c1c3a81b4a37927375e1ebcccd2fd90be538a102da0c2d6024561aaf26bd1c71ef7688b5a8b96a87d938db8d9774454ab635011fc7f - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.13.0, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": - version: 7.13.0 - resolution: "@babel/helper-plugin-utils@npm:7.13.0" - checksum: 8c0/49bbc12940fdc2f3afb744141a8af037325eb5d1c78cd30de90ffefc440dde3abc9b979ddc9c5e681f4257e158329179c7c2dc353d3791faa9af32ef6b8356d5 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-plugin-utils@npm:7.16.7" - checksum: 8c0/14c50026d019d0ee6f8bb63fbb302323d443857a111006becf8cc65c41de1289b2c6374e48d97a6f733ddbd098ed4d2141693392d76c901b8e8cdc075b5eaf41 - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.18.9, @babel/helper-plugin-utils@npm:^7.19.0, @babel/helper-plugin-utils@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-plugin-utils@npm:7.20.2" - checksum: 8c0/bf4de040e57b7ddff36ea599e963c391eb246d5a95207bb9ef3e33073c451bcc0821e3a9cc08dfede862a6dcc110d7e6e7d9a483482f852be358c5b60add499c - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-plugin-utils@npm:7.22.5" - checksum: 8c0/d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-remap-async-to-generator@npm:7.13.0" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-wrap-function": "npm:^7.13.0" - "@babel/types": "npm:^7.13.0" - checksum: 8c0/ad41b8b8e152ab1a4713369cbe1aa75974ba6971bd3f104d606b512a952284baef3d4c919fc12066c82a55fd4aad9ff5d87e93d440b10a5eb2fa8cf7f076b0c5 - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.16.8": - version: 7.16.8 - resolution: "@babel/helper-remap-async-to-generator@npm:7.16.8" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - "@babel/helper-wrap-function": "npm:^7.16.8" - "@babel/types": "npm:^7.16.8" - checksum: 8c0/b3a5e62ee58bffb745b3ab1724453c325e1fa191abaa003cbcaf59934df4b5e1d5225519676ab0e3418c8dcd847c71bfc191bd65cdc91d3a92880ce6093ffd6c - languageName: node - linkType: hard - -"@babel/helper-remap-async-to-generator@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-wrap-function": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.12.13, @babel/helper-replace-supers@npm:^7.13.12, @babel/helper-replace-supers@npm:^7.14.4": - version: 7.14.4 - resolution: "@babel/helper-replace-supers@npm:7.14.4" - dependencies: - "@babel/helper-member-expression-to-functions": "npm:^7.13.12" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/traverse": "npm:^7.14.2" - "@babel/types": "npm:^7.14.4" - checksum: 8c0/33cefd76bc7425b101d7506fc023beb5343da4494f279396450482c26c9f669ab2cd32ab34b184be57ca217e43adb2ee0cc71f6c91d01eb00733ca3f463c44e1 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-replace-supers@npm:7.16.7" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.16.7" - "@babel/helper-member-expression-to-functions": "npm:^7.16.7" - "@babel/helper-optimise-call-expression": "npm:^7.16.7" - "@babel/traverse": "npm:^7.16.7" - "@babel/types": "npm:^7.16.7" - checksum: 8c0/34cf10dcf113999b3cc9d06443803a0320a0fa4c1be869bbd5f57043d6d3b325374da76eed71bf8aa1d754c7aaa0ae69502cf442b68e9f4496f09a85f08d60ef - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.18.6, @babel/helper-replace-supers@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/helper-replace-supers@npm:7.20.7" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-member-expression-to-functions": "npm:^7.20.7" - "@babel/helper-optimise-call-expression": "npm:^7.18.6" - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - checksum: 8c0/6d44965bdc24b61df89d8d92e3b86afe48d6a5932d7c8c059fb8bf53b9cf2845ed627e8261fac9b369b9a4dd1621e8e60a19f19902dc27e005f254d7a8cbffda - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-replace-supers@npm:7.22.20" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-member-expression-to-functions": "npm:^7.22.15" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 - languageName: node - linkType: hard - -"@babel/helper-replace-supers@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/helper-replace-supers@npm:7.22.9" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-member-expression-to-functions": "npm:^7.22.5" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/9ef42e0d1f81d3377c96449c82666d54daea86db9f352915d2aff7540008cd65f23574bc97a74308b6203f7a8c6bf886d1cc1fa24917337d3d12ea93cb2a53a8 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/helper-simple-access@npm:7.13.12" - dependencies: - "@babel/types": "npm:^7.13.12" - checksum: 8c0/fd1277179eff5cde9d59d5f073902d44db76ed006d93c522d8c2633b03ea9028db051b2639608355d0da1ef909d390a83774741920dd42597ad5620e89513b5b - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-simple-access@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/e46265892655675cc5968ea9c9932104389146258e2b383fdb3b4aef9052acb03cd5463abc712c97745bc619de68f612b7337f0d607f57f822db91e9064605d2 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.20.2": - version: 7.20.2 - resolution: "@babel/helper-simple-access@npm:7.20.2" - dependencies: - "@babel/types": "npm:^7.20.2" - checksum: 8c0/79cea28155536c74b37839748caea534bc413fac8c512e6101e9eecfe83f670db77bc782bdb41114caecbb1e2a73007ff6015d6a5ce58cae5363b8c5bd2dcee9 - languageName: node - linkType: hard - -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.12.1": - version: 7.12.1 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.12.1" - dependencies: - "@babel/types": "npm:^7.12.1" - checksum: 8c0/ce2f7aa07f625d985e7f9783d552826d1645f7a29e57452691512feae7948f9f1c0ec7657c584a30b63f894cdb290e182b7596b0b77f332878ba0715adb3bb86 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.16.0": - version: 7.16.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.16.0" - dependencies: - "@babel/types": "npm:^7.16.0" - checksum: 8c0/d3b8668a355e82a1c18137a1d5f3d8565ec88cff464f1c0a7c6e99c4cd0d92a77aeb51ca7fa71afa3bf8c50035bc5cf25504f46e01a94b9e6a297bdf3ac35f40 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.20.0" - dependencies: - "@babel/types": "npm:^7.20.0" - checksum: 8c0/8529fb760ffbc3efc22ec5a079039fae65f40a90e9986642a85c1727aabdf6a79929546412f6210593970d2f97041f73bdd316e481d61110d6edcac1f97670a9 - languageName: node - linkType: hard - -"@babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/helper-split-export-declaration@npm:7.12.13" - dependencies: - "@babel/types": "npm:^7.12.13" - checksum: 8c0/c73d211c706926ddca15c165384fe33ffff51952d0b654823175430c366d37787f6ce5de77d7ccf09cdf9c1c4dcbebc528334715e3b922d84e7f7c05a2effd85 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-split-export-declaration@npm:7.16.7" - dependencies: - "@babel/types": "npm:^7.16.7" - checksum: 8c0/a710d13e67747040167064e90e9a4eb262f89cecde75ecdd0a1bd456186a7a2c4cede8ad5e28e12d2437230970f38e9ee97e878801bafcb49b2cc755a1753434 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-split-export-declaration@npm:7.18.6" - dependencies: - "@babel/types": "npm:^7.18.6" - checksum: 8c0/1335b510a9aefcbf60d89648e622715774e56040d72302dc5e176c8d837c9ab81414ccfa9ed771a9f98da7192579bb12ab7a95948bfdc69b03b4a882b3983e48 - languageName: node - linkType: hard - -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" - dependencies: - "@babel/types": "npm:^7.22.5" - checksum: 8c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.19.4": - version: 7.19.4 - resolution: "@babel/helper-string-parser@npm:7.19.4" - checksum: 8c0/e20c81582e75df2a020a1c547376668a6e1e1c2ca535a6b7abb25b83d5536c99c0d113184bbe87c1a26e923a9bb0c6e5279fca8db6bd609cd3499fafafc01598 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.21.5": - version: 7.21.5 - resolution: "@babel/helper-string-parser@npm:7.21.5" - checksum: 8c0/4d0834c4a67c283e9277f5e565551fede00b7d68007e368c95c776e13d05002e8f9861716e11613880889d6f3463329d2af687ceea5fc5263f8b3d25a53d31da - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-string-parser@npm:7.22.5" - checksum: 8c0/6b0ff8af724377ec41e5587fffa7605198da74cb8e7d8d48a36826df0c0ba210eb9fedb3d9bef4d541156e0bd11040f021945a6cbb731ccec4aefb4affa17aa4 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.12.11, @babel/helper-validator-identifier@npm:^7.14.0": - version: 7.14.0 - resolution: "@babel/helper-validator-identifier@npm:7.14.0" - checksum: 8c0/8fca6a00b6d4d43650dcbfa9fc436e2ae33058084827cc70d94c2825af50787cfb2c0ffaeff8c92be4498a66a2f9ec0a4bc40e7023b3bf4ccc6ed2abd5bb4088 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-identifier@npm:7.16.7" - checksum: 8c0/5dfeea422c375edef9bfc65c70e944091b487c937a1f4f49d473d812bf4d527c4b7730ab5542137b631b76bd6a68af37701620043d32fa42fda82d2fe064a75e - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 8c0/f978ecfea840f65b64ab9e17fac380625a45f4fe1361eeb29867fcfd1c9eaa72abd7023f2f40ac3168587d7e5153660d16cfccb352a557be2efd347a051b4b20 - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 8c0/2ff1d3833154d17ccf773b8a71fdc0cd0e7356aa8033179d0e3133787dfb33d97796cbff8b92a97c56268205337dfc720227aeddc677c1bc08ae1b67a95252d7 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/helper-validator-option@npm:7.12.17" - checksum: 8c0/9574ee40afe9fa26a61f651aa4fb1ad0befc84f3b7e5713937beab4ba8e2a02d0e4a8b3969b0e67baad676d0e65fed99b72a862638c28a155ca2514664a0986f - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/helper-validator-option@npm:7.16.7" - checksum: 8c0/0088c0ff1f9a78b0956bb509bc978c58a81993f0328fe2b123f010c35b73ade2c9a6c21e6618ae7b70ba53cc1c468dbe49fe6ac50b4513e3c7fe91be8a1fe7c2 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/helper-validator-option@npm:7.18.6" - checksum: 8c0/7a1452725b87e6b0d26e8a981ad1e19a24d3bb8b17fb25d1254d6d1f3f2f2efd675135417d44f704ea4dd88f854e7a0a31967322dcb3e06fa80fc4fec71853a5 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/helper-validator-option@npm:7.23.5" - checksum: af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-option@npm:7.22.5" - checksum: 8c0/23e310bf1b90d085b1ae250f31d423fb6cc004da882f0d3409266e5e4c7fd41ed0a172283a6a9a16083c5f2e11f987b32c815c80c60d9a948e23dd6dcf2e0437 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/helper-wrap-function@npm:7.13.0" - dependencies: - "@babel/helper-function-name": "npm:^7.12.13" - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.13.0" - "@babel/types": "npm:^7.13.0" - checksum: 8c0/85d229c68510dc07e876e70f4055b198700a0b8d7e0d7321c08494a2749b21257e81e4242096b7d50522aa06e6bfc5f0c694e7367063ea1be21cbc2ab39b0720 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.16.8": - version: 7.16.8 - resolution: "@babel/helper-wrap-function@npm:7.16.8" - dependencies: - "@babel/helper-function-name": "npm:^7.16.7" - "@babel/template": "npm:^7.16.7" - "@babel/traverse": "npm:^7.16.8" - "@babel/types": "npm:^7.16.8" - checksum: 8c0/3f73620d6ea744d1dadcc3c9141bfe91ddf1cb6e09fbb750f5d5fdc615e8b1a6d27985901b7eaffa6524284c557b187589272fa3b49aa678be6a32ff84dd4b38 - languageName: node - linkType: hard - -"@babel/helper-wrap-function@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-wrap-function@npm:7.22.20" - dependencies: - "@babel/helper-function-name": "npm:^7.22.5" - "@babel/template": "npm:^7.22.15" - "@babel/types": "npm:^7.22.19" - checksum: 97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.13.16, @babel/helpers@npm:^7.17.2": - version: 7.17.2 - resolution: "@babel/helpers@npm:7.17.2" - dependencies: - "@babel/template": "npm:^7.16.7" - "@babel/traverse": "npm:^7.17.0" - "@babel/types": "npm:^7.17.0" - checksum: 8c0/c59d4d5a072a6b00d07910499a6a758962334eef76ed687cb969ccd3c82c470b37718e2a7433de4ea0d1b7a134b20fc311775949b07955e37fc45744f8d23b39 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.14.0": - version: 7.14.0 - resolution: "@babel/helpers@npm:7.14.0" - dependencies: - "@babel/template": "npm:^7.12.13" - "@babel/traverse": "npm:^7.14.0" - "@babel/types": "npm:^7.14.0" - checksum: 8c0/874e9598feadb891df7e477d4f5ea942b268860f409f0a343aaf0e40e4d2184785bc1c8c0e62fc6c0d58a9f7c27aea787a7498b892503c612288e55f6a77a5fe - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.20.7": - version: 7.20.13 - resolution: "@babel/helpers@npm:7.20.13" - dependencies: - "@babel/template": "npm:^7.20.7" - "@babel/traverse": "npm:^7.20.13" - "@babel/types": "npm:^7.20.7" - checksum: 8c0/63269ec5bbc1f1fc4ccb320152c2d37bcebbc2b812b8c6bba6361e7f91900214f8e8300c08505e7f03c2320ed56e8b08ad77c756f3964d2bab36b705e9fad390 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/helpers@npm:7.22.11" - dependencies: - "@babel/template": "npm:^7.22.5" - "@babel/traverse": "npm:^7.22.11" - "@babel/types": "npm:^7.22.11" - checksum: 8c0/ebb0f1e95bd07752cc5a82de14f73fc6de36bd74a2350266abc8b5e21ad89544705c5ac8765da318c85ffa0becb8d24063c19b33ccb3a0d830495227d921d044 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.23.7": - version: 7.23.7 - resolution: "@babel/helpers@npm:7.23.7" - dependencies: - "@babel/template": "npm:^7.22.15" - "@babel/traverse": "npm:^7.23.7" - "@babel/types": "npm:^7.23.6" - checksum: f74a61ad28a1bc1fdd9133ad571c07787b66d6db017c707b87c203b0cd06879cea8b33e9c6a8585765a4949efa5df3cc9e19b710fe867f11be38ee29fd4a0488 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13": - version: 7.14.0 - resolution: "@babel/highlight@npm:7.14.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.14.0" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 8c0/b388cc565606d8f2ecdf3a3957a928d0608a93efc1e5e8ff03d481c34fd6c6f7e6d792f5962abee00b468f9242843ebcb847fed9f56b6a75308943ba5d48233b - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.16.7": - version: 7.16.10 - resolution: "@babel/highlight@npm:7.16.10" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.16.7" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 8c0/0ec2007a1fbd826f4433daded828a65b824fa653c65c57d7a45aea161636994099db8c071a7a4e0844c2a2cec3aeaea62359f4b8b907f9cae7e440693af65331 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.18.6" - chalk: "npm:^2.0.0" - js-tokens: "npm:^4.0.0" - checksum: 8c0/a6a6928d25099ef04c337fcbb829fab8059bb67d31ac37212efd611bdbe247d0e71a5096c4524272cb56399f40251fac57c025e42d3bc924db0183a6435a60ac - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.22.13": - version: 7.22.13 - resolution: "@babel/highlight@npm:7.22.13" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.5" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - checksum: 8c0/65f20132c7ada5d82d343dc23ca61bcd040980f7bd59e480532bcd7f7895aa7abe58470ae8a4f851fd244b71b42a7ad915f7c515fef8f1c2e003777721ebdbe6 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/highlight@npm:7.23.4" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.22.20" - chalk: "npm:^2.4.2" - js-tokens: "npm:^4.0.0" - checksum: fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 - languageName: node - linkType: hard - -"@babel/node@npm:7.13.13": - version: 7.13.13 - resolution: "@babel/node@npm:7.13.13" - dependencies: - "@babel/register": "npm:^7.13.8" - commander: "npm:^4.0.1" - core-js: "npm:^3.2.1" - node-environment-flags: "npm:^1.0.5" - regenerator-runtime: "npm:^0.13.4" - v8flags: "npm:^3.1.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - bin: - babel-node: ./bin/babel-node.js - checksum: 8c0/b4963ea804de4bfec3a6826067fcc047b867d9734a81be6fa158075981a11d8d1fc5fe897c33110c15d3108394e4fca830ce1d0b6760a378b3e13aaa47c4671a - languageName: node - linkType: hard - -"@babel/parser@npm:^7.0.0, @babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.14.2, @babel/parser@npm:^7.14.3, @babel/parser@npm:^7.3.2, @babel/parser@npm:^7.7.0": - version: 7.14.4 - resolution: "@babel/parser@npm:7.14.4" - bin: - parser: ./bin/babel-parser.js - checksum: 8c0/2bdc921a2205e3b5643dd9516bdbab5a90a4bd63f619cccada0f6ce2805e0f9266aaa875b430b4a288f0188ae44bc9c864f5b793fe062a5be37c93d28ee0fdc7 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.16.7, @babel/parser@npm:^7.17.0": - version: 7.17.0 - resolution: "@babel/parser@npm:7.17.0" - bin: - parser: ./bin/babel-parser.js - checksum: 8c0/4071dd7820d3f691d53742d001b76c567bb9cb77cc0e8c88e748d6d6c866174d5c8a50619d1c25add1183e358fb75855ff967054d0dd4eaa71cb37736d9ed87f - languageName: node - linkType: hard - -"@babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.13, @babel/parser@npm:^7.20.7": - version: 7.20.15 - resolution: "@babel/parser@npm:7.20.15" - bin: - parser: ./bin/babel-parser.js - checksum: 8c0/6bea1cedd1c783451984e3c9156052b88f194345ffbfac91e739cbd0d2a7ecb4b46fb027afa4b655d15eed4d0743105e960d93eb3ccc067e24fa2b39e8643861 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.11, @babel/parser@npm:^7.22.5": - version: 7.22.13 - resolution: "@babel/parser@npm:7.22.13" - bin: - parser: ./bin/babel-parser.js - checksum: 8c0/181ec4b637c75347aff0fec9096af1b618796c4a28e4d0f1bbc6fea651776e27678e4c8db57de5958c77bc187898b205baa368597ac32e5c43f5578b43672f02 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/parser@npm:7.23.6" - bin: - parser: ./bin/babel-parser.js - checksum: 6f76cd5ccae1fa9bcab3525b0865c6222e9c1d22f87abc69f28c5c7b2c8816a13361f5bd06bddbd5faf903f7320a8feba02545c981468acec45d12a03db7755e - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/42b5f75ad16404802675c7b997ccf3f5a4e096eb1d55d711b10adcc2c2179b604080121bdf93302b184269abc2449601e66dc88bdc3621ad7f6db718f809ef3b - languageName: node - linkType: hard - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.13.12": - version: 7.13.12 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.13.12" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.12.1" - "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 8c0/552f96891435c342670542d83d967218260de02dab4c2e84bbe6b3a1d7542d2e24e6aa8510729925156161fa371c889a4002ad6e1cadc4acb146c06f47e00bf6 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.16.0" - "@babel/plugin-proposal-optional-chaining": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.13.0 - checksum: 8c0/4b365feab29261f217d324de8a20b1defc85f53f78057ca779dab2544a3cac8667ad49039c510cf5aeafe7fb6e22face09ca2aa7ea99588bc2880593d4da59bd - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" - peerDependencies: - "@babel/core": ^7.13.0 - checksum: a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23 - languageName: node - linkType: hard - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.7": - version: 7.23.7 - resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.7" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 355746e21ad7f43e4f4daef54cfe2ef461ecd19446b2afedd53c39df1bf9aa2eeeeaabee2279b1321de89a97c9360e4f76e9ba950fee50ff1676c25f6929d625 - languageName: node - linkType: hard - -"@babel/plugin-proposal-async-generator-functions@npm:^7.13.15, @babel/plugin-proposal-async-generator-functions@npm:^7.16.8": - version: 7.16.8 - resolution: "@babel/plugin-proposal-async-generator-functions@npm:7.16.8" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-remap-async-to-generator": "npm:^7.16.8" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/557d81220310694abcece8c33f1bba1e3fe911cd7368bd04ff3c109a8b5fd4d4d2892b60f0ed6d3e4f919dca65d65cf8bac515a4e94ada3b037f1aff3d3106a7 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:7.13.0, @babel/plugin-proposal-class-properties@npm:^7.12.1, @babel/plugin-proposal-class-properties@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-proposal-class-properties@npm:7.13.0" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.13.0" - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6d17cb4a92acc11212d4590141b96f6e242f52fb9e34d7f874237077983284fba1c31856860bf8d31aff5a2578828cf6b9276d29be29c03ad1e6956676ecc2bf - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-properties@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-class-properties@npm:7.16.7" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/70b7995e67800525478bf27e98ee91473c68628b1e61e262e98e06606502baaa3c5350e5afe2fbf15ae8c176b2c9472b8019faa53bded378dd2193bbdd8f54c1 - languageName: node - linkType: hard - -"@babel/plugin-proposal-class-static-block@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-class-static-block@npm:7.16.7" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.12.0 - checksum: 8c0/5d274cbc170844478810901f2d404491239fb25910f36ac021cea84cb5f40cb26c15da4918f6913df644f467904f7ff1c870f2fe3316580bb1aeea6259a2f913 - languageName: node - linkType: hard - -"@babel/plugin-proposal-decorators@npm:^7.12.12": - version: 7.17.2 - resolution: "@babel/plugin-proposal-decorators@npm:7.17.2" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.17.1" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-replace-supers": "npm:^7.16.7" - "@babel/plugin-syntax-decorators": "npm:^7.17.0" - charcodes: "npm:^0.2.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a8707d1ac1c55c1997b634c5f6cb90745084eaa4291c78f741f10359a2e8fca47bd1e6a016fcd84e4c524f1a46111b94c262923a3330cd0fdcdbbc0263e192a0 - languageName: node - linkType: hard - -"@babel/plugin-proposal-dynamic-import@npm:^7.13.8, @babel/plugin-proposal-dynamic-import@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-dynamic-import@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1d8af47bfef56d36dd1cf8b54dcd2b52f740eccbe9530384739b0b8ed5caeb0eae366d275cf16658ff917c1cb05880e41039a497e169206c99cab49b99624e82 - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-default-from@npm:^7.12.1": - version: 7.12.13 - resolution: "@babel/plugin-proposal-export-default-from@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/plugin-syntax-export-default-from": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a7bac466560f7ff6e37063c71cb87ff78c4cb5ce3ca06a4e246173a99f3a40a7f9c1f712c5198a54936d4f73a20fbdb5d0f04abe69cfa4b52206f364060df0ed - languageName: node - linkType: hard - -"@babel/plugin-proposal-export-namespace-from@npm:^7.12.13, @babel/plugin-proposal-export-namespace-from@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-export-namespace-from@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/97f0746e994768834bf2138f0da69e1c75d987ce62779bacf4a22552e2bb1557634cfeecfd1413d8442a0d0893b8ecb23aae128da4749a3374887c671b866132 - languageName: node - linkType: hard - -"@babel/plugin-proposal-json-strings@npm:^7.13.8, @babel/plugin-proposal-json-strings@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-json-strings@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a41971e27a9a87403d562604e8a4fbc4f74c5a2ad8490fb44cea69fa6baa1ce5ce46bf350c2bc2ca98f51a597aab29cbed650124627fb73fbcf143cc19bf622f - languageName: node - linkType: hard - -"@babel/plugin-proposal-logical-assignment-operators@npm:^7.13.8, @babel/plugin-proposal-logical-assignment-operators@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-logical-assignment-operators@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/09c724facc4f3520a4e66ecc5afff26f57875d2af1bbd87d531af76dcec0fdbce450b62fe57a9cc65a8928fe5248d66bc16370df0972ea6bdeae329d11525311 - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.12.1": - version: 7.14.2 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.14.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6d1d4f3b97b2ac96af6b57eef400ffa5266afa7be7a75bc6f643aaca414d5ec65ebebd1b746ddce4ce4166e70d169c4b9de874d742841bf3f6303246682a21b2 - languageName: node - linkType: hard - -"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8, @babel/plugin-proposal-nullish-coalescing-operator@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/648065e8bfb10d6c68e4916f89a3aa368ce89139e2615dbcbc39b5d149d7d0275705e6032130fa14a38a4da04b61444a829e128ee224ffd906ccb3545c85a1fc - languageName: node - linkType: hard - -"@babel/plugin-proposal-numeric-separator@npm:^7.12.13, @babel/plugin-proposal-numeric-separator@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-numeric-separator@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/9f7d8223df576e9e8966c02354d9edec8c9c2edcd47162e08342693142be2fff0bc58c636d93bb83c36ab16f276cdcbc03cf68360f496153be1fe035ca72feb6 - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:7.12.1": - version: 7.12.1 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.12.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.0" - "@babel/plugin-transform-parameters": "npm:^7.12.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f773d59ead8b056b646d585e95d610cca2f0aeaa2eeaad74b3eb9e25821b06f27e361dd0aac9a088a10c22fee1ead8863f82a2be073e28eb04ca9a330a00941e - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" - dependencies: - "@babel/compat-data": "npm:^7.20.5" - "@babel/helper-compilation-targets": "npm:^7.20.7" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.20.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.12.1": - version: 7.14.4 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.14.4" - dependencies: - "@babel/compat-data": "npm:^7.14.4" - "@babel/helper-compilation-targets": "npm:^7.14.4" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.14.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d601099d31035229b276ec4475d62fc9f55e73dddadb000844697089ee031bdbde591ee90db36cd28b9bc929624d084bbb4a063584d4cd5a3234701e58a18beb - languageName: node - linkType: hard - -"@babel/plugin-proposal-object-rest-spread@npm:^7.13.8, @babel/plugin-proposal-object-rest-spread@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.16.7" - dependencies: - "@babel/compat-data": "npm:^7.16.4" - "@babel/helper-compilation-targets": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/14dd5a094e38ab0b624bceab9fde13c8def5abd1b6d5a9c4be8d554901e496a6fc0429d3d88ffd8b0a8001ec2ef48a6865f2a8a2826eaa9d44aea05fcbef9072 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-catch-binding@npm:^7.13.8, @babel/plugin-proposal-optional-catch-binding@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-optional-catch-binding@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8bfd71d663dd8e45e7bc9024d178f5046519e1d8af13ee1dd25b9a42155c7c7745eac779ed416438fb0be946d9f1da8b9dfae94c77a419e05bf4df9b4623071e - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.12.7, @babel/plugin-proposal-optional-chaining@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.16.0" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7b710bb6cee4757ef7f85adb127b91217eee2876269275ccf35aa0a183296337abd9357948706337e532b279d156acb359a7eb61ce8b95f5cdfdbdb22665ecb4 - languageName: node - linkType: hard - -"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": - version: 7.14.2 - resolution: "@babel/plugin-proposal-optional-chaining@npm:7.14.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.12.1" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/757d0c0667006543d7bbb0488d440e0063cfc14189504f01d0073f9594fa8f54df6b1b8897632362defb5dc70a088b7c3ab198319db62c32889ad47ad16e12c6 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:7.13.0, @babel/plugin-proposal-private-methods@npm:^7.12.1, @babel/plugin-proposal-private-methods@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-proposal-private-methods@npm:7.13.0" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.13.0" - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/886d7b55db81f771a2ce6c5341a5512f2a04140bc63d954ba34e1964b8946e295a6b4cb9f296c9b98e1cefc6cb29f2489972c2483ab8ad5e0f29721ebf9cab04 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-methods@npm:^7.16.11": - version: 7.16.11 - resolution: "@babel/plugin-proposal-private-methods@npm:7.16.11" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.10" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/3e57910a383762414e3c96c3e29b493e75a2aa33d32ae44cb35e5a7ba2f7fea31bb2808496525724abef2c7048e0328fd1821a0c90a92f0d34325ae149ac9d96 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": - version: 7.21.0-placeholder-for-preset-env.2 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 - languageName: node - linkType: hard - -"@babel/plugin-proposal-private-property-in-object@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.16.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - "@babel/helper-create-class-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/19a985270fbc243f049c2ac306705cd05b7b965f0a08ba48279daffb68f2565da6d3898faf960091ec2f2c85c3a337ba99e5a7389410dfd6a57447cbcd6c7992 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.12.13, @babel/plugin-proposal-unicode-property-regex@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/e1474b4394627c588051886d28c5c53b23b0e5da23c64aa7ecd10517722e359d1c1eb3af7480774b6240d77e0f3aa84f7f5b0e1424a9afcca2fab1f2e47fab82 - languageName: node - linkType: hard - -"@babel/plugin-proposal-unicode-property-regex@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-proposal-unicode-property-regex@npm:7.16.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/4b0c93be393483691fc9ae85f0b386c0a50094a9a45b0bcffc5e60665f78e55832e5611243565ddf42ba596508b1dffd77a0871d78725a6b679086ff065095cb - languageName: node - linkType: hard - -"@babel/plugin-syntax-async-generators@npm:^7.8.4": - version: 7.8.4 - resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 - languageName: node - linkType: hard - -"@babel/plugin-syntax-bigint@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 - languageName: node - linkType: hard - -"@babel/plugin-syntax-class-static-block@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 - languageName: node - linkType: hard - -"@babel/plugin-syntax-decorators@npm:^7.17.0": - version: 7.17.0 - resolution: "@babel/plugin-syntax-decorators@npm:7.17.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f76909f8926dfc22e9b3b7cec8fee808c133aa5c82449f30c394525d0812662c7374c3aaba3411518809aa353ed44b881b28dcb69a3e1889e03bbfc1508baa80 - languageName: node - linkType: hard - -"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-default-from@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-export-default-from@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/5385351faa1444508a79339e1ef236473b40e367ef892acb6546d7d2b26a36023a9716d33dc654a63814aeee69fd8706eda766862c16384b14fb74fd56ab54e7 - languageName: node - linkType: hard - -"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/9c78c35fac8d31f30a21f30c2cd37961750f0acaf5f1fa5569a7795cd268a90d8c05aafa8015cc0ca2a554ab1348529cf49e2689b2bc5dbbd8bab31b89a30274 - languageName: node - linkType: hard - -"@babel/plugin-syntax-flow@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-flow@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/947074fbe042c1842d585f51e531376ed23a76b4ec714e7661a8a9cf967ccc9c653958d4f7b1d89218e4cf6817f60c3d35cac63affb817fac2c75ca35e329585 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.20.0": - version: 7.20.0 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.19.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/0ac0176984ad799b39264070007737c514ea95e4b3c3c515ecddef958629abcd3c8e8810fd60fb63de5a8f3f7022dd2c7af7580b819a9207acc372c8b8ec878e - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-assertions@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-attributes@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606 - languageName: node - linkType: hard - -"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee - languageName: node - linkType: hard - -"@babel/plugin-syntax-json-strings@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:7.12.1": - version: 7.12.1 - resolution: "@babel/plugin-syntax-jsx@npm:7.12.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/11d435f9e4e71c0f00e5bc295b40747c2c42341b7f38ddc5f8ac41d49ddfa247514dbe91932fa3dabd65581b4c7a9fe5b3d1c2b285e5ca32f4e5296cc185d40c - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.18.6, @babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.18.6 - resolution: "@babel/plugin-syntax-jsx@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d6d88b16e727bfe75c6ad6674bf7171bd5b2007ebab3f785eff96a98889cc2dd9d9b05a9ad8a265e04e67eddee81d63fcade27db033bb5aa5cc73f45cc450d6d - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-jsx@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/c79976ba737f7eba2a84f6bc04f3802b5c63faf73b8a85902600610c9596adf4e8ebb06bb2fb9dcfb92d4e8deb508f1182fb50a74317e2c8f7a7121d2374e693 - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-syntax-jsx@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/af9fbff0ad5178daa887f3533b14f7acf9dd84d2594d297e1f1442c9335976570985008457a70baeeed70e6fe7faefb43c90eab1cc8d72a4b1e4a2539f017f13 - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-syntax-jsx@npm:7.22.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 - languageName: node - linkType: hard - -"@babel/plugin-syntax-jsx@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e - languageName: node - linkType: hard - -"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b - languageName: node - linkType: hard - -"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce - languageName: node - linkType: hard - -"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": - version: 7.10.4 - resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-object-rest-spread@npm:7.8.3, @babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af - languageName: node - linkType: hard - -"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": - version: 7.8.3 - resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.8.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 - languageName: node - linkType: hard - -"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.12.13, @babel/plugin-syntax-top-level-await@npm:^7.8.3": - version: 7.12.13 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a74e6954c784d7ae44009f06195dd6a8166ce43e3c3edda23af5c8b319733a4b3e1fe8cee12404f7662285273e7eb1f76727b2b28a8a098bf0bce54683cbe1ab - languageName: node - linkType: hard - -"@babel/plugin-syntax-top-level-await@npm:^7.14.5": - version: 7.14.5 - resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-syntax-typescript@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/98b8354e8b0dad1aa612f144afe63a9d08eb5e371821627ee0a4efd4f50855624fa64f9c14826c968f75695e02428cf20642d568f540404ef7612d50627e21ed - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-syntax-typescript@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8eb1dbc06511035293d1af8172be5edec8d80e1a5c908258a1abd4fccb18879cdbae31e8ff813b310e4598a0a5484ebe0b686d50a0e820c17ed518bdca8c1af9 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.20.0, @babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.20.0 - resolution: "@babel/plugin-syntax-typescript@npm:7.20.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.19.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/c57bb9b717b3b7324cc0c094d411bac23f6d78ed5e4e06fb89e3e8de37437e649c53440d8c29ecb3875f398ad1a9e8acc96e3af6b3802e83f7eab855de319e80 - languageName: node - linkType: hard - -"@babel/plugin-syntax-typescript@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948 - languageName: node - linkType: hard - -"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/690fc85afd273049f87e917ab75915e0c0ef19f62633d7d1706a1126dcfac9571d244b5b4eed9b64d6320a8560e8a6e17cf6ea38f4ecc6010e889953c1509b25 - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.12.1, @babel/plugin-transform-arrow-functions@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f648eba00af332928bb4e105b0df207c1e0cc95934f9e76694d86def2c61bf449e2b0e45298d1bdfb3fdd8c60e2594785a999e2277979bc554325cbf54bc5e0f - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/69dce936e6684d9b3760bb2d7aefb2490db245a79b5437385da1ddfbe2ecaf673dfc0b5510aa6b871bd1b9dce1b3c2e4fdbdc8e94006f15ee2526e17e7f4af4a - languageName: node - linkType: hard - -"@babel/plugin-transform-arrow-functions@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-arrow-functions@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca - languageName: node - linkType: hard - -"@babel/plugin-transform-async-generator-functions@npm:^7.23.7": - version: 7.23.7 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.7" - dependencies: - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-remap-async-to-generator": "npm:^7.22.20" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 63d314edc9fbeaf2700745ca0e19bf9840e87f2d7d1f6c5638e06d2aec3e7418d0d7493ed09087e2fe369cc15e9d96c113fb2cd367cb5e3ff922e3712c27b7d4 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.13.0" - dependencies: - "@babel/helper-module-imports": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-remap-async-to-generator": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/83b1070ea2662cc59297399f90947c61e26f62ab6e3abd17872c04f7f998514a2590b9cc56f090f5be0536ffeff53313680dc36cca08ede2e8a836692fbf0972 - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.16.8": - version: 7.16.8 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.16.8" - dependencies: - "@babel/helper-module-imports": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-remap-async-to-generator": "npm:^7.16.8" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d75d5cd8560a589578e1e33be1542da17116b1778347af17122910cd0bbb94e0f70ae92beae4f18a1b36dd8dc5251a51e68112e6940117615c667d9147f365cc - languageName: node - linkType: hard - -"@babel/plugin-transform-async-to-generator@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-remap-async-to-generator": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/22e81b52320e6f3929110241d91499a7535d6834b86e8871470f9946b42e093fafc79e1eae4ede376e7c5fe84c5dc5e9fdbe55ff4039b323b5958167202f02e0 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/79006bbfc62c7bc38493b5944de5bd6ec5231af25cff0abc00ad9b8bc430743ff011adeace60db3e3b3fef2d2174d8680169e87731b078a0066d018a6943be9e - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/22069250a48e47c2818e1b5d5f81a7309792db07b1c9130faac2c47278b81d03e498ea12bed40f45ffdd5f240babc852c0cb2c65e77720b42ab6934cf2d52ea0 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoped-functions@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.0.0": - version: 7.20.15 - resolution: "@babel/plugin-transform-block-scoping@npm:7.20.15" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6cf805f08a87a9e70d19308154286522072f7ad1f6c106fba0f73dcc90674be5315fbbffee4f3040106331a9187fd76ba80e7cca4945ee8621713f28653e5e6f - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.12.12, @babel/plugin-transform-block-scoping@npm:^7.12.13, @babel/plugin-transform-block-scoping@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-block-scoping@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8ba89b3b52f630d7e481d39d2bf71ff4a66d52442ccad00873f38169a39f847bd53a100ce84a96e29b1c38c75330812ff34ab798c265dc7547e3d5cda35f9f58 - languageName: node - linkType: hard - -"@babel/plugin-transform-block-scoping@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-block-scoping@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 83006804dddf980ab1bcd6d67bc381e24b58c776507c34f990468f820d0da71dba3697355ca4856532fa2eeb2a1e3e73c780f03760b5507a511cbedb0308e276 - languageName: node - linkType: hard - -"@babel/plugin-transform-class-properties@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-class-properties@npm:7.22.5" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/707f976d3aea2b52dad36a5695a71af8956f9b1d5dec02c2b8cce7ff3b5e60df4cbe059c71ae0b7983034dc639de654a2c928b97e4e01ebf436d58ea43639e7d - languageName: node - linkType: hard - -"@babel/plugin-transform-class-properties@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-class-properties@npm:7.23.3" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd - languageName: node - linkType: hard - -"@babel/plugin-transform-class-static-block@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-class-static-block@npm:7.23.4" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.12.0 - checksum: fdca96640ef29d8641a7f8de106f65f18871b38cc01c0f7b696d2b49c76b77816b30a812c08e759d06dd10b4d9b3af6b5e4ac22a2017a88c4077972224b77ab0 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/plugin-transform-classes@npm:7.20.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-compilation-targets": "npm:^7.20.7" - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-function-name": "npm:^7.19.0" - "@babel/helper-optimise-call-expression": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-replace-supers": "npm:^7.20.7" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - globals: "npm:^11.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/920d6861b366f5abe66106c178c0ae15386b52b3bd95284db632482c217ce7883187603f4014be62dfeada1a70f6370ea6c6ed152e02b81c52a8febbb7c1e20b - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.12.1": - version: 7.14.4 - resolution: "@babel/plugin-transform-classes@npm:7.14.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-function-name": "npm:^7.14.2" - "@babel/helper-optimise-call-expression": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-replace-supers": "npm:^7.14.4" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - globals: "npm:^11.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/74fddd31ef0fdbd5cbdd6e9df2e4eae6fc72da20359c004b3057ae5e36346bc1af3f7d78ab872bbfe54c71b47aebb1e8ba9188cfac39f5463823daf68c8ddf8d - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.13.0, @babel/plugin-transform-classes@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-classes@npm:7.16.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - "@babel/helper-environment-visitor": "npm:^7.16.7" - "@babel/helper-function-name": "npm:^7.16.7" - "@babel/helper-optimise-call-expression": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-replace-supers": "npm:^7.16.7" - "@babel/helper-split-export-declaration": "npm:^7.16.7" - globals: "npm:^11.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/61b13fd9308711fbf364674c5931fa50619ee98e9e26b44c081e43e8074e7aec96c470b42ddeeda287bab065005229079b39c20074a8cd592f5194b3c7434f74 - languageName: node - linkType: hard - -"@babel/plugin-transform-classes@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/plugin-transform-classes@npm:7.23.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-compilation-targets": "npm:^7.22.15" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-optimise-call-expression": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.20" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - globals: "npm:^11.1.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 07988f52b4893151887d1ea6ff79e5fe834078c5731bd09babd5659edbbae21ea4e2de326a02443a63fd776b4c945da6177f07875b56fe66e0b7899e830a9e92 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/template": "npm:^7.20.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/849c11bac3600d8afa9f3a440fc721cdf2b719480b9a0b230849092fa400099ba1e91328e168860a2ca4d2843a94ece57a894b47468aaeb83df27bb82aae5d07 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-computed-properties@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/923d090b8085d842ad5e2d8682a78d2e1830f7390107dd4e58249bdba9f8c523e0982f8a859745fe5a89c09276c2ea7ec5fa7d8fbc83b23988b92a2e399a5668 - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-computed-properties@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6be05be2c6d434ced8d86ccf4f98e591fc556faf7470b09eac9422dece9876b2c4b96d3f3c51d4260045a7cd2770a1de70fb3dc900e61a3132dcd69cfe8b9b5c - languageName: node - linkType: hard - -"@babel/plugin-transform-computed-properties@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-computed-properties@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/template": "npm:^7.22.15" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/plugin-transform-destructuring@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/747889ec3dfcd992b63d55faf598f152822df75cc6da299789695ef8dbe520c78a2f146152d646afd2805f9abe1c13045fd1b3ab97be5e0d6901c73ea4209c44 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.12.1": - version: 7.14.4 - resolution: "@babel/plugin-transform-destructuring@npm:7.14.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/973a275137b5cadc02df73cbb7723a78eb7c73e6027c9b57e4119c5378e0f690de4b020b2df563188683c0f0941d7c5f2d382b8a426bb06985eefa1786f40c5f - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.13.0, @babel/plugin-transform-destructuring@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-destructuring@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/67550752bbf9847490356b4a243f5efed320bbe904825ff0ccc60c9b6122ee5fc24134a5bc469d298d4ccde880ce33843abe4d5157da5f8f864573583e9b6aa1 - languageName: node - linkType: hard - -"@babel/plugin-transform-destructuring@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-destructuring@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.12.13, @babel/plugin-transform-dotall-regex@npm:^7.4.4": - version: 7.12.13 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/40d79120e22e2533bc424bd3afff8cc5fada593c8f12b30e4df3e1f5409b75d9da37ca7626d700c6e29f7017d5b43eef32e5130bf72f5daa292e43b83a4756e5 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.16.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d2f6aa2dc2562c9969dbe3338f2afca7cd53f16989a14054ff7e45d0b7c5fc626e4b378904e29d13078db62ef6bd6805775644a27b3c461c0e679e590aac8d49 - languageName: node - linkType: hard - -"@babel/plugin-transform-dotall-regex@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-dotall-regex@npm:7.23.3" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/62e699ce5e6a56cfea72e45fe7ed631676df2b9077e53e498bfde81b5cee7866e44405e48df475226ed3247af4b96ee5d68540914b6883322cbb337ad07e0f38 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/3313e9a3bc7878c3d139d25891c6fb7a7ed6e23a4cdf80aaac25c6930f3a1005e5bb774f7f5dda4116e5914b2b898953b500f85d2f3d19ab77246a366117afc2 - languageName: node - linkType: hard - -"@babel/plugin-transform-duplicate-keys@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-duplicate-keys@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5 - languageName: node - linkType: hard - -"@babel/plugin-transform-dynamic-import@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-dynamic-import@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 19ae4a4a2ca86d35224734c41c48b2aa6a13139f3cfa1cbd18c0e65e461de8b65687dec7e52b7a72bb49db04465394c776aa1b13a2af5dc975b2a0cde3dcab67 - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.12.13" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1d19053b6ab15d140dbeee9a0015333bdd28b47b4bb247059f676ff425f95dbd4cc97ba43b4b47ee5d0e571c56a8d717ccb3039104f353479aa7a31429dcb66a - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.16.7" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8c0f3a8c51179a695592329d9fa5e6ce435d79dfb818b4069c26722d5f6f9b97c61cb45118d45218c5aed7c1ce50ca29daa6059c71532f681f54726d1bf524e4 - languageName: node - linkType: hard - -"@babel/plugin-transform-exponentiation-operator@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.23.3" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516 - languageName: node - linkType: hard - -"@babel/plugin-transform-export-namespace-from@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-export-namespace-from@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 38bf04f851e36240bbe83ace4169da626524f4107bfb91f05b4ad93a5fb6a36d5b3d30b8883c1ba575ccfc1bac7938e90ca2e3cb227f7b3f4a9424beec6fd4a7 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.18.6": - version: 7.19.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.19.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.19.0" - "@babel/plugin-syntax-flow": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/9b330e14f9e570c33ad7c99d3b250cfa8272df542dcb0cdbd8ad3c62668b651c8c0ca643063ad68a7bebb73b492cc3335a6e6276a48b82f949565c58d614be26 - languageName: node - linkType: hard - -"@babel/plugin-transform-flow-strip-types@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-flow-strip-types@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/plugin-syntax-flow": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/58eedf07b4b8d28faedd837cd8e3397bc207cf3d57bfe9e03217d1e1e5fdd4faef4340bb06928a7296853bfdc54fa037d7227dd44dff941f47786563d469df5c - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.0.0": - version: 7.18.8 - resolution: "@babel/plugin-transform-for-of@npm:7.18.8" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/37708653d9ac69af31f0f5d0abebd726d6b92ba630beed8fea8e1538f035b2877abc0013f26f400ebc23af459fb8e629c83847818614d9fcca086fb5bcd35c4d - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.12.1, @babel/plugin-transform-for-of@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-for-of@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/bc5edfe7d4f3985e68005240c3743265dea919de17ec5a069c5ed14c859fe2cfe528b0dacefd718e6e817a3af21e6d8f2b21467f250f7f39fdbb7b2f3d2c3a23 - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-for-of@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/cddf6264096bea79ca662f267acf0f12cce783799f29e1b4b60a3ab543d2e426e9da2fc16b63c6f4df123d50c657bf57d58a43549bfdba28340c67f7eb67513c - languageName: node - linkType: hard - -"@babel/plugin-transform-for-of@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/plugin-transform-for-of@npm:7.23.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.0.0": - version: 7.18.9 - resolution: "@babel/plugin-transform-function-name@npm:7.18.9" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.18.9" - "@babel/helper-function-name": "npm:^7.18.9" - "@babel/helper-plugin-utils": "npm:^7.18.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/95100707fe00b3e388c059700fbdccf83c2cdf3b7fec8035cdd6c01dd80a1d9efb2821fec1357a62533ebbcbb3f6c361666866a3818486f1172e62f2b692de64 - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-function-name@npm:7.12.13" - dependencies: - "@babel/helper-function-name": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ad12739bd44c1d545775bcfebc75b905e3ee6b358a36534d8d3e2b923aff652ebba13960b34e15dc4d9aaed0e45ef04291d9fdf79d0c005a64837122013a479f - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-function-name@npm:7.16.7" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.16.7" - "@babel/helper-function-name": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/0f4e5af926b990c98a53caf1c4dcc215ab02588de0eaae616d658ab3e5947f5cd41140a0d84b73cae925cfa4b93b7ee9a4079cb0566cae369ede52d6d0c0a45c - languageName: node - linkType: hard - -"@babel/plugin-transform-function-name@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-function-name@npm:7.23.3" - dependencies: - "@babel/helper-compilation-targets": "npm:^7.22.15" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083 - languageName: node - linkType: hard - -"@babel/plugin-transform-json-strings@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-json-strings@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 39e82223992a9ad857722ae051291935403852ad24b0dd64c645ca1c10517b6bf9822377d88643fed8b3e61a4e3f7e5ae41cf90eb07c40a786505d47d5970e54 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.0.0": - version: 7.18.9 - resolution: "@babel/plugin-transform-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7b0d59920dd5a1679a2214dde0d785ce7c0ed75cb6d46b618e7822dcd11fb347be2abb99444019262b6561369b85b95ab96603357773a75126b3d1c4c289b822 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/e2a3f82375ed1542434993790d83c9374b36235e56776e9df02849985e088b7bfcef2f9449ef3d95c96cd76247d32e6aa8a0c6234f28398cd5cbca074f9e4902 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-literals@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/3d3566e6ce02a2b1c7f8cf26f1b80d361b9df665c7256ddcf0177b59e411ebf3df094bdd5fd90aeef81bcb33f47e5de58e16d7e82113304bfd6eabc48cf47ca1 - languageName: node - linkType: hard - -"@babel/plugin-transform-literals@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-literals@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4 - languageName: node - linkType: hard - -"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 87b034dd13143904e405887e6125d76c27902563486efc66b7d9a9d8f9406b76c6ac42d7b37224014af5783d7edb465db0cdecd659fa3227baad0b3a6a35deff - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/346e5ac45b77f1e58a9b1686eb16c75cca40cbc1de9836b814fbe8ae0767f7d4a0fec5b88fcf26a5e3455af9e33fd3c6424e4f2661d04e38123d80e022ce6e6f - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/0f974b47a199883b00a49faff71368c66128f5dd7f74e3f3d447760cd5fcb389c5f3020672d2115b1a8ec2030c785031d9ed6440df8cf3d1208dfa552e7857b0 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/db1ccd139f6e4278a215503effd52be8c92fe689c0e6856da43689a67fc56418c10b3907bde91eba13e932ba99a3ebee08bff2b5b7b4d250e6538f308eb6d332 - languageName: node - linkType: hard - -"@babel/plugin-transform-member-expression-literals@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-member-expression-literals@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.13.0, @babel/plugin-transform-modules-amd@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-modules-amd@npm:7.16.7" - dependencies: - "@babel/helper-module-transforms": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - babel-plugin-dynamic-import-node: "npm:^2.3.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/eea74b0436124035ef1672f8181e00a4a2fca8105f4893c2464bb299cb55ab5be7530121ab68e45003279174fa3e8c357ce96baaaeae08bf2354897911ea63d0 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-amd@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-modules-amd@npm:7.23.3" - dependencies: - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.0.0": - version: 7.20.11 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.20.11" - dependencies: - "@babel/helper-module-transforms": "npm:^7.20.11" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-simple-access": "npm:^7.20.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f3a3281c252a978255076ff7274e4ac1ec252e0db4b3d73122c278ce9fd8318179fc804638ce726870146fa0845e2559711453ce7a391dc2a792d96dc0f6b04c - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.16.8": - version: 7.16.8 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.16.8" - dependencies: - "@babel/helper-module-transforms": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-simple-access": "npm:^7.16.7" - babel-plugin-dynamic-import-node: "npm:^2.3.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/9ace3c1ebceb4a40548939f14b53f7ac57a6648aac2fae4a65a75710579a4b92e08c0a1e2d5dfba82fb3ce2da91bc017d248a4473e9cdac7ef0f78ae3a157f22 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-commonjs@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.3" - dependencies: - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-simple-access": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.13.8": - version: 7.13.8 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.13.8" - dependencies: - "@babel/helper-hoist-variables": "npm:^7.13.0" - "@babel/helper-module-transforms": "npm:^7.13.0" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-validator-identifier": "npm:^7.12.11" - babel-plugin-dynamic-import-node: "npm:^2.3.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/c0f7fd40abe381d9e66899e4c74af1fb9a56c6f2e0733c04a1b87e1188ea93891652e19a9f46bcec583806887ec40e945dd116ab30b08dfd4459ad5eebb5f5e0 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.16.7" - dependencies: - "@babel/helper-hoist-variables": "npm:^7.16.7" - "@babel/helper-module-transforms": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-validator-identifier": "npm:^7.16.7" - babel-plugin-dynamic-import-node: "npm:^2.3.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7a8239d7aae270c6230729c3eb8f352b150cc5d4467e9121ce4aa38593191b4f53eb8b523255b9d8bca481357f2cd666de38119cb877515dc28a1c9fd2d9e375 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-systemjs@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.3" - dependencies: - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-identifier": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 0d55280a276510222c8896bf4e581acb84824aa5b14c824f7102242ad6bc5104aaffe5ab22fe4d27518f4ae2811bd59c36d0c0bfa695157f9cfce33f0517a069 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.13.0, @babel/plugin-transform-modules-umd@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-modules-umd@npm:7.16.7" - dependencies: - "@babel/helper-module-transforms": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2129af03c2e12df5267da56ce909e7164b2b644362e7c2fcc37391e9bc68d50095834b94c4f73293f1778e5234b2b82b89692bfc16ac5b27e889b82c23db0971 - languageName: node - linkType: hard - -"@babel/plugin-transform-modules-umd@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-modules-umd@npm:7.23.3" - dependencies: - "@babel/helper-module-transforms": "npm:^7.23.3" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/a519ff8276edd7783ec3ae97874d688eb4e1c48d206c167161525b6fbe3783448c4898f452682628dc1120af8246046ac3b0c90bce85ddbdf833372da2f1ca80 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.16.8": - version: 7.16.8 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.16.8" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/05467b5cef1ee5882b83aa72e09550680d291d1e01528d138e6651d0cc8dfcf696d0decbc563b4d65376785e2dca7573bac709a9fd1d21bc440ff1e21f1a7383 - languageName: node - linkType: hard - -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-new-target@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6fd374379dee6430163b4e0ed7a4dc86343dd5e4dfb6b0310a3699cda7ae06193cd4b78a1d5c40395f20cecf235adc6d2377edf2eff69f598eaa73f2df08060c - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-new-target@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7d2287274facc4a63224525f33fc1278871eea6d89dcfa5bf9791bae4e1f0e919a1a31bd3be783b4122fc0a883852ff59000b6689518dd1d4516d2f289d00266 - languageName: node - linkType: hard - -"@babel/plugin-transform-new-target@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-new-target@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04 - languageName: node - linkType: hard - -"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: bce490d22da5c87ff27fffaff6ad5a4d4979b8d7b72e30857f191e9c1e1824ba73bb8d7081166289369e388f94f0ce5383a593b1fc84d09464a062c75f824b0b - languageName: node - linkType: hard - -"@babel/plugin-transform-numeric-separator@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-numeric-separator@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e34902da4f5588dc4812c92cb1f6a5e3e3647baf7b4623e30942f551bf1297621abec4e322ebfa50b320c987c0f34d9eb4355b3d289961d9035e2126e3119c12 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-rest-spread@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-object-rest-spread@npm:7.23.4" - dependencies: - "@babel/compat-data": "npm:^7.23.3" - "@babel/helper-compilation-targets": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-transform-parameters": "npm:^7.23.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b56017992ffe7fcd1dd9a9da67c39995a141820316266bcf7d77dc912980d228ccbd3f36191d234f5cc389b09157b5d2a955e33e8fb368319534affd1c72b262 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-object-super@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/helper-replace-supers": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/44a1f5a62c6821a4653e23a38a61bed494138a0f12945a1d8b55ff7b83904e7c5615f4ebda8268c6ea877d1ec6b00f7c92a08cf93f4f77dc777e71145342aaf5 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-object-super@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - "@babel/helper-replace-supers": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ca75506af8890b5099f255902c1fd6e8b19f22056aa266dc9ca1e4703438c4bea4b5bd5cc14fbee85e48b32e575a9144ef0e4af9972fe7893ba66bc46096a03b - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-object-super@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-replace-supers": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/641621635783251f8b42346f7359d8985aa1b821ab83a3a841f7393fddf94c71f5f1c373bd4ee8d0d39c95c29c593df004f7d379c9e552e86297f6ff174b9036 - languageName: node - linkType: hard - -"@babel/plugin-transform-object-super@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-object-super@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-replace-supers": "npm:^7.22.20" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775 - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-catch-binding@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4ef61812af0e4928485e28301226ce61139a8b8cea9e9a919215ebec4891b9fea2eb7a83dc3090e2679b7d7b2c8653da601fbc297d2addc54a908b315173991e - languageName: node - linkType: hard - -"@babel/plugin-transform-optional-chaining@npm:^7.23.3, @babel/plugin-transform-optional-chaining@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 305b773c29ad61255b0e83ec1e92b2f7af6aa58be4cba1e3852bddaa14f7d2afd7b4438f41c28b179d6faac7eb8d4fb5530a17920294f25d459b8f84406bfbfb - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/plugin-transform-parameters@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/faef20aaebfbbbcd00bffbe75b20c4953852843c0f22eee0177194025e0980fd8c435655a6178ecfdd4f4b3b8677dde41aa6c32394f290b2526519074dbbe33a - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.12.1, @babel/plugin-transform-parameters@npm:^7.14.2": - version: 7.14.2 - resolution: "@babel/plugin-transform-parameters@npm:7.14.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/0751a7e40539034a6947c74e460ee8330d892c06cfb1e2fcc4fba2cc8a2a2ed05f82983a5643d78c48c167d872b97ac65bfd0be0891f600a09ba4d8df2a3dfc3 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.13.0, @babel/plugin-transform-parameters@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-parameters@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/3b7b350ce808a6bc858348f51329e232ef332c5326a30e9b80d927b4b43a1f68a31ddc2d791e08c8ec6f43d4878e726f46de9e84e76234213fc4fa2645660de7 - languageName: node - linkType: hard - -"@babel/plugin-transform-parameters@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-parameters@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7 - languageName: node - linkType: hard - -"@babel/plugin-transform-private-methods@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-private-methods@npm:7.22.5" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a62f2e47ca30f6b8043201483c5a505e3d54416e6ddfbe7cb696a1db853a4281b1fffee9f883fe26ac72ba02bba0db5832d69e02f2eb4746e9811b8779287cc1 - languageName: node - linkType: hard - -"@babel/plugin-transform-private-methods@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-private-methods@npm:7.23.3" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4 - languageName: node - linkType: hard - -"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/plugin-transform-private-property-in-object@npm:7.23.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-create-class-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8d31b28f24204b4d13514cd3a8f3033abf575b1a6039759ddd6e1d82dd33ba7281f9bc85c9f38072a665d69bfa26dc40737eefaf9d397b024654a483d2357bf5 - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-property-literals@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/b76239098127ee39031db54e4eb9e55cb8a616abc0fc6abba4b22d00e443ec00d7aaa58c7cdef45b224b5e017905fc39a5e1802577a82396acabb32fe9cff7dd - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-property-literals@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a9115ed5633d26ab7cc852093012e3dd209d205f2568431cea157ea4aa30c622717b1a0870a8eedeb1d15835b59dfeec272080d7f9de6f013bf2a69e8f410113 - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-property-literals@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7a5362389d479964af471a714e8194ba9f41ad22e1918a2878a8ed9e1375977dc61125f04a50012f1b63cf6e4afbbc785afd8b4fd9d70010def211016ae450d5 - languageName: node - linkType: hard - -"@babel/plugin-transform-property-literals@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-property-literals@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-react-display-name@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2c5f44f653604b800145ebad74e11ad6ec06bf96741b69a404e1409afb36abe34b27621b64ddba138813ad957fb8130dc15bd60ecd3b58380115edcccbdeb2ab - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.12.13": - version: 7.14.2 - resolution: "@babel/plugin-transform-react-display-name@npm:7.14.2" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6cce59233975bcc8a510a5b3faf089143b5464548037f0135838c486f7e833150d79f923d6f3c2b6631c1156e079bbc403c40a2f2b8a213f1a56d0ffeb09a699 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-react-display-name@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f488c3a88082cdf4da8acc64909950a51aa92581a47cad4e990c5a86ee340162a7b2536f7253e99e8187206952780a3e7c3e7bafb2c545cb98a6463ae697aace - languageName: node - linkType: hard - -"@babel/plugin-transform-react-display-name@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-react-display-name@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-development@npm:^7.12.17": - version: 7.12.17 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.12.17" - dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.12.17" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ca81c19147f45d5de612ee32b655d8f3ff45ec7e4aec721f66f7a8689e8e986bd089be8f0cdf492fe3c7fde364b5720cab84bf151e1f16b2721bda74ace008ee - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-development@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.16.7" - dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1b7cb9a7cd08643b5bbcfc38f8fb0d4a1436b4af80b7c68341175a768094e680dc4285744e4fb16a04f2e754b81da57c5ee22ff88c92949c308a49366600a988 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" - dependencies: - "@babel/plugin-transform-react-jsx": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 6b586508fc58998483d4ee93a7e784c4f4d2350e2633739cf1990b7ad172e13906f72382fdaf7f07b4e3c7e7555342634d392bdeb1a079bb64762c6368ca9a32 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a3aad7cf738e9bfaddc26cdbb83bb9684c2e689d26fb0793d772af0c8da0cd25bb02523d192fbc6946c32143e56b472c1d33fa82466b3f2d3346e1ce8fe83cf6 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.0.0": - version: 7.20.13 - resolution: "@babel/plugin-transform-react-jsx@npm:7.20.13" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.18.6" - "@babel/helper-module-imports": "npm:^7.18.6" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-jsx": "npm:^7.18.6" - "@babel/types": "npm:^7.20.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/810bc9968f913b23bdf7069c4b221075fbeab9a2656816af2e80fffb288ec0aa04bf75ad1c4ea78b95b30d4b37fcf59dcbd28a722c1be6efa6f7ef6674da0da9 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.12.12, @babel/plugin-transform-react-jsx@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-react-jsx@npm:7.16.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - "@babel/helper-module-imports": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-jsx": "npm:^7.16.7" - "@babel/types": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/adbadacd4d227cd3f3dff04be7fbe78715af18cd34c62a97cdb1858254df60d8a3f25edfe0afd50cf37afec02447026c6c067ce05da9fc4384d549a1cfe3a2e3 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.12.17, @babel/plugin-transform-react-jsx@npm:^7.13.12": - version: 7.14.3 - resolution: "@babel/plugin-transform-react-jsx@npm:7.14.3" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.12.13" - "@babel/helper-module-imports": "npm:^7.13.12" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/plugin-syntax-jsx": "npm:^7.12.13" - "@babel/types": "npm:^7.14.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ed17c331e02c8168f150db39666a95995f3a0ed5c836fd815f1b6eebb2fa1397c1f8c5ba769f7eee4c440893e871ea4db69068d0ca91b4eb9ea3badc51ed2a87 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.22.15": - version: 7.23.4 - resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-jsx": "npm:^7.23.3" - "@babel/types": "npm:^7.23.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-module-imports": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-jsx": "npm:^7.22.5" - "@babel/types": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/fa4e5b32233c41686a420ad97b07a8a8b6cec7d484e93d5917db460887ded5179a8a20867a5d56d962b5452535830c0c0f8bfdc7d55853369be1e51b6a79a14a - languageName: node - linkType: hard - -"@babel/plugin-transform-react-pure-annotations@npm:^7.12.1": - version: 7.12.1 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.12.1" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.10.4" - "@babel/helper-plugin-utils": "npm:^7.10.4" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/706386f5e21ce66dafc375ad1815284ddd74d4dbc41726419b7ba7565a7fa1c9269135cd955bfe15fb0c8aa9ab609967354a8455b9c0caf48dfaf7966965ba94 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-pure-annotations@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.16.7" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8b1ad4c4ea178d7a0368716f9654ad0804ac425996fb66e4351199e3d39c48a728d12a34678d10e246bf8647fe46213ba3d2d273a7d9f33df61d5972b40c5185 - languageName: node - linkType: hard - -"@babel/plugin-transform-react-pure-annotations@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.23.3" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2 - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.13.15": - version: 7.13.15 - resolution: "@babel/plugin-transform-regenerator@npm:7.13.15" - dependencies: - regenerator-transform: "npm:^0.14.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1c0cad14067e2cbd0aef7851e602093d3b05871514bf9846939aa276b01fd967d491ba914707b0985f2247ce41a15de546eca992fedb30124f6e2a2f02ef298a - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-regenerator@npm:7.16.7" - dependencies: - regenerator-transform: "npm:^0.14.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1b0774be99826b5c2bfb06d4d301a01b929c14d87670045f5cb347f80eca4095da9458f8288b3686ca490b1d70544035f015e24996e181a76087c932ce2e1ccd - languageName: node - linkType: hard - -"@babel/plugin-transform-regenerator@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-regenerator@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - regenerator-transform: "npm:^0.15.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6 - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-reserved-words@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/681f4a5e735d2db25ab83dda5957630a40767e4a5f736d60af2d926fb65721c96f26e48071010dadacd5811f879454a5db555ff767c7b1fea761e7da30fc160e - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-reserved-words@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/fe61e3dd89b1b733a118145179552d0b31c68e40ed296f122728a13f462b29a43a3b7cf4686c367b6ad4d15670874676d04da5ea5eace41c393e81aeb66351bb - languageName: node - linkType: hard - -"@babel/plugin-transform-reserved-words@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-reserved-words@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd - languageName: node - linkType: hard - -"@babel/plugin-transform-runtime@npm:7.13.15": - version: 7.13.15 - resolution: "@babel/plugin-transform-runtime@npm:7.13.15" - dependencies: - "@babel/helper-module-imports": "npm:^7.13.12" - "@babel/helper-plugin-utils": "npm:^7.13.0" - babel-plugin-polyfill-corejs2: "npm:^0.2.0" - babel-plugin-polyfill-corejs3: "npm:^0.2.0" - babel-plugin-polyfill-regenerator: "npm:^0.2.0" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/dd80ddb7fe0037236a1dfe646740c260c9bc119133c48be44df917650861fe28f4e20cefddaaddfcb88952ee274280f1b49d58a98c7b556f60342875a2582b3b - languageName: node - linkType: hard - -"@babel/plugin-transform-runtime@npm:7.23.6": - version: 7.23.6 - resolution: "@babel/plugin-transform-runtime@npm:7.23.6" - dependencies: - "@babel/helper-module-imports": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - babel-plugin-polyfill-corejs2: "npm:^0.4.6" - babel-plugin-polyfill-corejs3: "npm:^0.8.5" - babel-plugin-polyfill-regenerator: "npm:^0.5.3" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 94a7ee92f073df53fd8bebf9ed391a95553716077da1c6c3a57f10f042358c938495d55e6b09b4b50544c01f03560c4770c17698e1c24817a15d3668e8231249 - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.0.0": - version: 7.18.6 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/e60e02dca182d6ec0e7b571d7e99a0528743692fb911826600374b77832922bf7c4b154194d4fe4a0e8a15c2acad3ea44dbaff5189aaeab59124e4c7ee0b8c30 - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.12.1, @babel/plugin-transform-shorthand-properties@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/0d1bb477087570fc64458254b6bcaf3eb448138682ee4a136a382005531d3f89784148b11fa5240e581e9c9f9de74f5aebd377609f42bfb379429358870b343a - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7b873b600cfecafb701ea08e55573c784983f353ecd3c39cc5ac635d87ee508fe7ba2833835b8cfb55b70e3d1ed0a10d48b970ea1311e2886f8abbd746fb8c5f - languageName: node - linkType: hard - -"@babel/plugin-transform-shorthand-properties@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-shorthand-properties@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.0.0": - version: 7.20.7 - resolution: "@babel/plugin-transform-spread@npm:7.20.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6abd206942e1fd322791707e7e15aa823f9829d8965facbed4abb0f85d51355d0bb21ac8d7184dea22de3bb5853e807ae6b5b74c621507b912c345cbce4a37b4 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.12.1, @babel/plugin-transform-spread@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-spread@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.12.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/21ef3bf0c51da85dc2c0762260f8bfba9157e14a6c2ee9b21197b3c81969a2a979d0aa6945fc2342e7a5bc4fdb05b7af7bdc0ca0796cf187346832633b0b3f07 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-spread@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.16.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/171ec5c6a873afa3999ab96acd211aafd7b8194d38ae254e0ff03148ebd2600400f7280af0aa0da78f90c1adb5d0af84a6dfc6b418cc891bc351a34065ee7cc1 - languageName: node - linkType: hard - -"@babel/plugin-transform-spread@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-spread@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/065f712e0781fe9ed772dbe84d179af8e89f84ce04d719ace31519b793dde6418da2c3626b714b38985d99978445c153eede8c61e8181b33c15fea28db1113a6 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/da1d346c479c0b438eeb2fe2a993e48d19e5d1103e0c8684d56f09f0f15fec21e88e469445920b3fdd955ae6d365524f7ea3c54bd5772ecacefa65d0b94c80e0 - languageName: node - linkType: hard - -"@babel/plugin-transform-sticky-regex@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-sticky-regex@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.0.0": - version: 7.18.9 - resolution: "@babel/plugin-transform-template-literals@npm:7.18.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d1a5e55ed8c3b1186fbba2a7b3e9d880cb3987b846376f51a73216a8894b9c9d6f6c6e2d3cadb17d76f2477552db5383d817169d5b92fcf08ee0fa5b88213c15 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.12.1, @babel/plugin-transform-template-literals@npm:^7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-template-literals@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f8694484e586a3d00141b3379bd05d98575946903357982bd6881656bbdf589f342fa531d41e05bb2444776f789f1897ea3c0e01cea498daafee2f2c547a3d33 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-template-literals@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f9e6ace71abfaad5c86197b5a6040b7b170a918000a8bccb7ca49bb4e088bf90383739cfba63513526f239f5073562e6661efd978de354ae39656d7f9fcf37e6 - languageName: node - linkType: hard - -"@babel/plugin-transform-template-literals@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-template-literals@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1696a271b6c59c4ec2ce76f57937471b993d80d9207ef157b7c0caa995c4273eb803b4c7e8c4e86163a6ae0c6bb85b93485dd9c38abbed136884f321f9807384 - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/fca9883472cc1687350b2261aa6da32dccd213a0629431f45d1501c7192947d543b320c17d892feac93e30f8965cd0c8bee460510f72a4d3e4ffa5dfbff8d29e - languageName: node - linkType: hard - -"@babel/plugin-transform-typeof-symbol@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-typeof-symbol@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:7.13.0": - version: 7.13.0 - resolution: "@babel/plugin-transform-typescript@npm:7.13.0" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.13.0" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/plugin-syntax-typescript": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8b3dec9633cc836c62114c29a2d9c2579c72cdc0ff59df8a35f7a894b64c447264804070ea6889a5b0405f6ba4caa1e6aac753e8622ca8640f60dbdb3db83e4b - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.13.0": - version: 7.14.4 - resolution: "@babel/plugin-transform-typescript@npm:7.14.4" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.14.4" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/plugin-syntax-typescript": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2bc0f26aa5f8b52104eb4d26ab60c9f5e855dc8b8808b19bbab87fcb2be986ab0249167ed240a9b60a94555414487556c0e581829189f556e25f6b54d0ee338a - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.16.7": - version: 7.16.8 - resolution: "@babel/plugin-transform-typescript@npm:7.16.8" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/plugin-syntax-typescript": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/4a563fa4b52233fc7529fa55fe3d6ac717429a4e8f52e762cb50423c685e1bf9b1177accf4b768515f4bcae8129baf4ca79540bb3ede2f19f5567aecce4d2cd1 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.18.6": - version: 7.20.13 - resolution: "@babel/plugin-transform-typescript@npm:7.20.13" - dependencies: - "@babel/helper-create-class-features-plugin": "npm:^7.20.12" - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/plugin-syntax-typescript": "npm:^7.20.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/3c298015e12472a07097cf1d9050cc0662f3054f0809afca25b9cbddc25a75d2fb75b080ab169de6d0c03b08a0b55d047ce9840ccbcdc51cdcfdb21f696bcf53 - languageName: node - linkType: hard - -"@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.23.3": - version: 7.23.6 - resolution: "@babel/plugin-transform-typescript@npm:7.23.6" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.22.5" - "@babel/helper-create-class-features-plugin": "npm:^7.23.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/plugin-syntax-typescript": "npm:^7.23.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.12.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7da5ed8222703c4d2ff07a6405ba67c8c7fa271a4a86749af3f228625b1ae7eb2c0ffebddebd72ee2a640a4729548c5576fb17883bad5af8c69a7bdef77b07ef - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/aabd933bc4c0936e45991ccd43b46b50e33e5495da36a32244693145fa5707c82a5d6d7f43e9a02f7e6df41da942707b4336461de5c7be5b82f4de2346ac7361 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-escapes@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-unicode-escapes@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-property-regex@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.23.3" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.12.13": - version: 7.12.13 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.12.13" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.12.13" - "@babel/helper-plugin-utils": "npm:^7.12.13" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/1b4ec3e89b7c16d3ab0ae687fb69194b28144c27a82dcaea1ff24c93387ece7d2a0017f45b49e3e376d13f1521a3556069f7aae36e08dfac6fe01518dba7092c - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.16.7" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ce3843c02e5e2b0007e4fd64f75282c5f69f9bd55e24574991a5fd3ee12aa2e4754304a7580ea8bb72f611b892303bce583dcfc2c4379869548413fa975ae549 - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-regex@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-unicode-regex@npm:7.23.3" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c - languageName: node - linkType: hard - -"@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.23.3" - dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" - "@babel/helper-plugin-utils": "npm:^7.22.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b - languageName: node - linkType: hard - -"@babel/preset-env@npm:7.13.15": - version: 7.13.15 - resolution: "@babel/preset-env@npm:7.13.15" - dependencies: - "@babel/compat-data": "npm:^7.13.15" - "@babel/helper-compilation-targets": "npm:^7.13.13" - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-validator-option": "npm:^7.12.17" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.13.12" - "@babel/plugin-proposal-async-generator-functions": "npm:^7.13.15" - "@babel/plugin-proposal-class-properties": "npm:^7.13.0" - "@babel/plugin-proposal-dynamic-import": "npm:^7.13.8" - "@babel/plugin-proposal-export-namespace-from": "npm:^7.12.13" - "@babel/plugin-proposal-json-strings": "npm:^7.13.8" - "@babel/plugin-proposal-logical-assignment-operators": "npm:^7.13.8" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8" - "@babel/plugin-proposal-numeric-separator": "npm:^7.12.13" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.13.8" - "@babel/plugin-proposal-optional-catch-binding": "npm:^7.13.8" - "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" - "@babel/plugin-proposal-private-methods": "npm:^7.13.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.12.13" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.12.13" - "@babel/plugin-transform-arrow-functions": "npm:^7.13.0" - "@babel/plugin-transform-async-to-generator": "npm:^7.13.0" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.12.13" - "@babel/plugin-transform-block-scoping": "npm:^7.12.13" - "@babel/plugin-transform-classes": "npm:^7.13.0" - "@babel/plugin-transform-computed-properties": "npm:^7.13.0" - "@babel/plugin-transform-destructuring": "npm:^7.13.0" - "@babel/plugin-transform-dotall-regex": "npm:^7.12.13" - "@babel/plugin-transform-duplicate-keys": "npm:^7.12.13" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.12.13" - "@babel/plugin-transform-for-of": "npm:^7.13.0" - "@babel/plugin-transform-function-name": "npm:^7.12.13" - "@babel/plugin-transform-literals": "npm:^7.12.13" - "@babel/plugin-transform-member-expression-literals": "npm:^7.12.13" - "@babel/plugin-transform-modules-amd": "npm:^7.13.0" - "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8" - "@babel/plugin-transform-modules-systemjs": "npm:^7.13.8" - "@babel/plugin-transform-modules-umd": "npm:^7.13.0" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.12.13" - "@babel/plugin-transform-new-target": "npm:^7.12.13" - "@babel/plugin-transform-object-super": "npm:^7.12.13" - "@babel/plugin-transform-parameters": "npm:^7.13.0" - "@babel/plugin-transform-property-literals": "npm:^7.12.13" - "@babel/plugin-transform-regenerator": "npm:^7.13.15" - "@babel/plugin-transform-reserved-words": "npm:^7.12.13" - "@babel/plugin-transform-shorthand-properties": "npm:^7.12.13" - "@babel/plugin-transform-spread": "npm:^7.13.0" - "@babel/plugin-transform-sticky-regex": "npm:^7.12.13" - "@babel/plugin-transform-template-literals": "npm:^7.13.0" - "@babel/plugin-transform-typeof-symbol": "npm:^7.12.13" - "@babel/plugin-transform-unicode-escapes": "npm:^7.12.13" - "@babel/plugin-transform-unicode-regex": "npm:^7.12.13" - "@babel/preset-modules": "npm:^0.1.4" - "@babel/types": "npm:^7.13.14" - babel-plugin-polyfill-corejs2: "npm:^0.2.0" - babel-plugin-polyfill-corejs3: "npm:^0.2.0" - babel-plugin-polyfill-regenerator: "npm:^0.2.0" - core-js-compat: "npm:^3.9.0" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/c088e8ee0c48ed5e72916acf032116866bef22c2328d1edf780daa8af5832fb9249efca4885dd507ea37e86a02d0c225b79f62a142947492d41c024e3df3569b - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.12.11": - version: 7.16.11 - resolution: "@babel/preset-env@npm:7.16.11" - dependencies: - "@babel/compat-data": "npm:^7.16.8" - "@babel/helper-compilation-targets": "npm:^7.16.7" - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-validator-option": "npm:^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.16.7" - "@babel/plugin-proposal-async-generator-functions": "npm:^7.16.8" - "@babel/plugin-proposal-class-properties": "npm:^7.16.7" - "@babel/plugin-proposal-class-static-block": "npm:^7.16.7" - "@babel/plugin-proposal-dynamic-import": "npm:^7.16.7" - "@babel/plugin-proposal-export-namespace-from": "npm:^7.16.7" - "@babel/plugin-proposal-json-strings": "npm:^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators": "npm:^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.16.7" - "@babel/plugin-proposal-numeric-separator": "npm:^7.16.7" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.16.7" - "@babel/plugin-proposal-optional-catch-binding": "npm:^7.16.7" - "@babel/plugin-proposal-optional-chaining": "npm:^7.16.7" - "@babel/plugin-proposal-private-methods": "npm:^7.16.11" - "@babel/plugin-proposal-private-property-in-object": "npm:^7.16.7" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.16.7" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - "@babel/plugin-transform-arrow-functions": "npm:^7.16.7" - "@babel/plugin-transform-async-to-generator": "npm:^7.16.8" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.16.7" - "@babel/plugin-transform-block-scoping": "npm:^7.16.7" - "@babel/plugin-transform-classes": "npm:^7.16.7" - "@babel/plugin-transform-computed-properties": "npm:^7.16.7" - "@babel/plugin-transform-destructuring": "npm:^7.16.7" - "@babel/plugin-transform-dotall-regex": "npm:^7.16.7" - "@babel/plugin-transform-duplicate-keys": "npm:^7.16.7" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.16.7" - "@babel/plugin-transform-for-of": "npm:^7.16.7" - "@babel/plugin-transform-function-name": "npm:^7.16.7" - "@babel/plugin-transform-literals": "npm:^7.16.7" - "@babel/plugin-transform-member-expression-literals": "npm:^7.16.7" - "@babel/plugin-transform-modules-amd": "npm:^7.16.7" - "@babel/plugin-transform-modules-commonjs": "npm:^7.16.8" - "@babel/plugin-transform-modules-systemjs": "npm:^7.16.7" - "@babel/plugin-transform-modules-umd": "npm:^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.16.8" - "@babel/plugin-transform-new-target": "npm:^7.16.7" - "@babel/plugin-transform-object-super": "npm:^7.16.7" - "@babel/plugin-transform-parameters": "npm:^7.16.7" - "@babel/plugin-transform-property-literals": "npm:^7.16.7" - "@babel/plugin-transform-regenerator": "npm:^7.16.7" - "@babel/plugin-transform-reserved-words": "npm:^7.16.7" - "@babel/plugin-transform-shorthand-properties": "npm:^7.16.7" - "@babel/plugin-transform-spread": "npm:^7.16.7" - "@babel/plugin-transform-sticky-regex": "npm:^7.16.7" - "@babel/plugin-transform-template-literals": "npm:^7.16.7" - "@babel/plugin-transform-typeof-symbol": "npm:^7.16.7" - "@babel/plugin-transform-unicode-escapes": "npm:^7.16.7" - "@babel/plugin-transform-unicode-regex": "npm:^7.16.7" - "@babel/preset-modules": "npm:^0.1.5" - "@babel/types": "npm:^7.16.8" - babel-plugin-polyfill-corejs2: "npm:^0.3.0" - babel-plugin-polyfill-corejs3: "npm:^0.5.0" - babel-plugin-polyfill-regenerator: "npm:^0.3.0" - core-js-compat: "npm:^3.20.2" - semver: "npm:^6.3.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/69e4d82f56533e3d761d08abf066e598268b71576da64ec4a2cda10b8065f4aac4a25f7652c7bf8210df6c9eb8193ceb99141214abd69975d1fb6d583d55033e - languageName: node - linkType: hard - -"@babel/preset-env@npm:^7.22.20": - version: 7.23.7 - resolution: "@babel/preset-env@npm:7.23.7" - dependencies: - "@babel/compat-data": "npm:^7.23.5" - "@babel/helper-compilation-targets": "npm:^7.23.6" - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-option": "npm:^7.23.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.7" - "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" - "@babel/plugin-syntax-import-assertions": "npm:^7.23.3" - "@babel/plugin-syntax-import-attributes": "npm:^7.23.3" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" - "@babel/plugin-transform-arrow-functions": "npm:^7.23.3" - "@babel/plugin-transform-async-generator-functions": "npm:^7.23.7" - "@babel/plugin-transform-async-to-generator": "npm:^7.23.3" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3" - "@babel/plugin-transform-block-scoping": "npm:^7.23.4" - "@babel/plugin-transform-class-properties": "npm:^7.23.3" - "@babel/plugin-transform-class-static-block": "npm:^7.23.4" - "@babel/plugin-transform-classes": "npm:^7.23.5" - "@babel/plugin-transform-computed-properties": "npm:^7.23.3" - "@babel/plugin-transform-destructuring": "npm:^7.23.3" - "@babel/plugin-transform-dotall-regex": "npm:^7.23.3" - "@babel/plugin-transform-duplicate-keys": "npm:^7.23.3" - "@babel/plugin-transform-dynamic-import": "npm:^7.23.4" - "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3" - "@babel/plugin-transform-export-namespace-from": "npm:^7.23.4" - "@babel/plugin-transform-for-of": "npm:^7.23.6" - "@babel/plugin-transform-function-name": "npm:^7.23.3" - "@babel/plugin-transform-json-strings": "npm:^7.23.4" - "@babel/plugin-transform-literals": "npm:^7.23.3" - "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.4" - "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3" - "@babel/plugin-transform-modules-amd": "npm:^7.23.3" - "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" - "@babel/plugin-transform-modules-systemjs": "npm:^7.23.3" - "@babel/plugin-transform-modules-umd": "npm:^7.23.3" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" - "@babel/plugin-transform-new-target": "npm:^7.23.3" - "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.4" - "@babel/plugin-transform-numeric-separator": "npm:^7.23.4" - "@babel/plugin-transform-object-rest-spread": "npm:^7.23.4" - "@babel/plugin-transform-object-super": "npm:^7.23.3" - "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.4" - "@babel/plugin-transform-optional-chaining": "npm:^7.23.4" - "@babel/plugin-transform-parameters": "npm:^7.23.3" - "@babel/plugin-transform-private-methods": "npm:^7.23.3" - "@babel/plugin-transform-private-property-in-object": "npm:^7.23.4" - "@babel/plugin-transform-property-literals": "npm:^7.23.3" - "@babel/plugin-transform-regenerator": "npm:^7.23.3" - "@babel/plugin-transform-reserved-words": "npm:^7.23.3" - "@babel/plugin-transform-shorthand-properties": "npm:^7.23.3" - "@babel/plugin-transform-spread": "npm:^7.23.3" - "@babel/plugin-transform-sticky-regex": "npm:^7.23.3" - "@babel/plugin-transform-template-literals": "npm:^7.23.3" - "@babel/plugin-transform-typeof-symbol": "npm:^7.23.3" - "@babel/plugin-transform-unicode-escapes": "npm:^7.23.3" - "@babel/plugin-transform-unicode-property-regex": "npm:^7.23.3" - "@babel/plugin-transform-unicode-regex": "npm:^7.23.3" - "@babel/plugin-transform-unicode-sets-regex": "npm:^7.23.3" - "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.7" - babel-plugin-polyfill-corejs3: "npm:^0.8.7" - babel-plugin-polyfill-regenerator: "npm:^0.5.4" - core-js-compat: "npm:^3.31.0" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: ac9def873cec52ee02a550bde6e22eced16d1ae331bb8ebc82c03e4c91c12ac17e3e4027647e61612937bcc25ac46e71370aaf99dc2e85dbd11f7777ffeed54e - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.12.1": - version: 7.13.13 - resolution: "@babel/preset-flow@npm:7.13.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-validator-option": "npm:^7.12.17" - "@babel/plugin-transform-flow-strip-types": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/080913e065eed96a36332e62a7974bf851276b80815c3374d98e63645bb8e1245b761afa220863854765e6ed4e7a29f60ddb11b0fd30665f5909c12f3d66a4db - languageName: node - linkType: hard - -"@babel/preset-flow@npm:^7.13.13": - version: 7.18.6 - resolution: "@babel/preset-flow@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/helper-validator-option": "npm:^7.18.6" - "@babel/plugin-transform-flow-strip-types": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/9fcc9b4a4ade598af0253e22e56a32431502fd92f208305a340a9f35e3ca43c3b472399c55d615092dbdab9d86fe2fc9b866926fdb30ffd9704b77d1b2e2c85d - languageName: node - linkType: hard - -"@babel/preset-modules@npm:0.1.6-no-external-plugins": - version: 0.1.6-no-external-plugins - resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/types": "npm:^7.4.4" - esutils: "npm:^2.0.2" - peerDependencies: - "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 8c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.4": - version: 0.1.4 - resolution: "@babel/preset-modules@npm:0.1.4" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.4.4" - "@babel/plugin-transform-dotall-regex": "npm:^7.4.4" - "@babel/types": "npm:^7.4.4" - esutils: "npm:^2.0.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/3f2fed853d1c1c29dddf851b98228a8f755d099352d08c841ae5a86e71086138b10b2cc533bfe871bab5632ee3ea41c82690b1e62617d17ee3b3272be3ec3f8d - languageName: node - linkType: hard - -"@babel/preset-modules@npm:^0.1.5": - version: 0.1.5 - resolution: "@babel/preset-modules@npm:0.1.5" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/plugin-proposal-unicode-property-regex": "npm:^7.4.4" - "@babel/plugin-transform-dotall-regex": "npm:^7.4.4" - "@babel/types": "npm:^7.4.4" - esutils: "npm:^2.0.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/bd90081d96b746c1940dc1ce056dee06ed3a128d20936aee1d1795199f789f9a61293ef738343ae10c6d53970c17285d5e147a945dded35423aacb75083b8a89 - languageName: node - linkType: hard - -"@babel/preset-react@npm:7.13.13": - version: 7.13.13 - resolution: "@babel/preset-react@npm:7.13.13" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-validator-option": "npm:^7.12.17" - "@babel/plugin-transform-react-display-name": "npm:^7.12.13" - "@babel/plugin-transform-react-jsx": "npm:^7.13.12" - "@babel/plugin-transform-react-jsx-development": "npm:^7.12.17" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.12.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2b714d1cc90ad5061b6156b9f6528e1498d7b208c409a434be28793299a3734364ef921131af473e49a1dfa9129d54068b2257a23e10350b3e208824fa02b69c - languageName: node - linkType: hard - -"@babel/preset-react@npm:^7.12.10": - version: 7.16.7 - resolution: "@babel/preset-react@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-validator-option": "npm:^7.16.7" - "@babel/plugin-transform-react-display-name": "npm:^7.16.7" - "@babel/plugin-transform-react-jsx": "npm:^7.16.7" - "@babel/plugin-transform-react-jsx-development": "npm:^7.16.7" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/b104190241eb712bf97c0095b64c0de4e07c4964fc2e87647023baba1902691ae87a1bbcad0799b5a24dc9fa4d38c7807df249ee942b6b338a3920bcf04fea0f - languageName: node - linkType: hard - -"@babel/preset-react@npm:^7.22.15": - version: 7.23.3 - resolution: "@babel/preset-react@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-option": "npm:^7.22.15" - "@babel/plugin-transform-react-display-name": "npm:^7.23.3" - "@babel/plugin-transform-react-jsx": "npm:^7.22.15" - "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" - "@babel/plugin-transform-react-pure-annotations": "npm:^7.23.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:7.13.0": - version: 7.13.0 - resolution: "@babel/preset-typescript@npm:7.13.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.13.0" - "@babel/helper-validator-option": "npm:^7.12.17" - "@babel/plugin-transform-typescript": "npm:^7.13.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/ad1d5bd1ed99f8b92a7237ab06159a53901ad0de2627616f5abf48c98e1297ca27f60db4bbb9e800cc5593c48b3abc2e0f6101d12ccca0ed2cdf2e722066bd39 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.12.7": - version: 7.16.7 - resolution: "@babel/preset-typescript@npm:7.16.7" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.16.7" - "@babel/helper-validator-option": "npm:^7.16.7" - "@babel/plugin-transform-typescript": "npm:^7.16.7" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/90444b3778fed5a961bf3ed9d4a56a963286de52bc7925aa88e27aa9df3e3e306755e290c5e92eaf9088a41321ddaae1fe4cec7e5eea9fb57236c180d3e82044 - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.13.0": - version: 7.18.6 - resolution: "@babel/preset-typescript@npm:7.18.6" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.18.6" - "@babel/helper-validator-option": "npm:^7.18.6" - "@babel/plugin-transform-typescript": "npm:^7.18.6" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/2314e0c1fd5d188ca4bdc35f8ab1e9caec3c662673949cf16ae5b29ed27855a5f354a19b736b50e54e099d580f825e39b58db7fd8f8e2c2d38eb22c9fa5910ea - languageName: node - linkType: hard - -"@babel/preset-typescript@npm:^7.22.15": - version: 7.23.3 - resolution: "@babel/preset-typescript@npm:7.23.3" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.22.5" - "@babel/helper-validator-option": "npm:^7.22.15" - "@babel/plugin-syntax-jsx": "npm:^7.23.3" - "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" - "@babel/plugin-transform-typescript": "npm:^7.23.3" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7 - languageName: node - linkType: hard - -"@babel/register@npm:7.13.14": - version: 7.13.14 - resolution: "@babel/register@npm:7.13.14" - dependencies: - find-cache-dir: "npm:^2.0.0" - lodash: "npm:^4.17.19" - make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.0" - source-map-support: "npm:^0.5.16" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/467c73fcc4eab6ba63b35edb504fa7dac2d1acbad8754bb3907b7984c273cedac81034a239ab62cde34b764def0ec345bbc4de567b5fc47f20b9bc73ce26deb2 - languageName: node - linkType: hard - -"@babel/register@npm:^7.12.1": - version: 7.13.16 - resolution: "@babel/register@npm:7.13.16" - dependencies: - clone-deep: "npm:^4.0.1" - find-cache-dir: "npm:^2.0.0" - make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.0" - source-map-support: "npm:^0.5.16" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/c9057ee5fe16804b3f378273a80c5deb7fff830342470658893013dc537b6705b193808b6545a91511f83e14a1a564e37ed84b07021f78f63d0bc30c161b6871 - languageName: node - linkType: hard - -"@babel/register@npm:^7.13.16": - version: 7.18.9 - resolution: "@babel/register@npm:7.18.9" - dependencies: - clone-deep: "npm:^4.0.1" - find-cache-dir: "npm:^2.0.0" - make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.5" - source-map-support: "npm:^0.5.16" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/b19c1445adf202732a2e0d554749257da22e56f0fc159709200d962413fbd4e7bd1d684222e60c08a2b8ad8fe511d8699fbc978d92816953fc9cbb6cbcc40d63 - languageName: node - linkType: hard - -"@babel/register@npm:^7.13.8": - version: 7.17.0 - resolution: "@babel/register@npm:7.17.0" - dependencies: - clone-deep: "npm:^4.0.1" - find-cache-dir: "npm:^2.0.0" - make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.5" - source-map-support: "npm:^0.5.16" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/5c86d2a7509ec87343b02f2c2c9024bd376405fd76447ab2d6a4a9ec3f80619f47c234c27870216b6f088d4914e8928d8dd895bf0ab7f9ab435c624e6711fd38 - languageName: node - linkType: hard - -"@babel/register@npm:^7.22.15": - version: 7.23.7 - resolution: "@babel/register@npm:7.23.7" - dependencies: - clone-deep: "npm:^4.0.1" - find-cache-dir: "npm:^2.0.0" - make-dir: "npm:^2.1.0" - pirates: "npm:^4.0.6" - source-map-support: "npm:^0.5.16" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: b2466e41a4394e725b57e139ba45c3f61b88546d3cb443e84ce46cb34071b60c6cdb706a14c58a1443db530691a54f51da1f0c97f6c1aecbb838a2fb7eb5dbb9 - languageName: node - linkType: hard - -"@babel/regjsgen@npm:^0.8.0": - version: 0.8.0 - resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 8c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a - languageName: node - linkType: hard - -"@babel/runtime-corejs3@npm:7.13.10": - version: 7.13.10 - resolution: "@babel/runtime-corejs3@npm:7.13.10" - dependencies: - core-js-pure: "npm:^3.0.0" - regenerator-runtime: "npm:^0.13.4" - checksum: 8c0/799d87583f14992965ec82640ec2763a0b3204e69d725a3bcd62f4911996b56a44ea0e1d0e46e67d93588e39089d4d2fc0750ed7d0b06d257727073bb284a3f4 - languageName: node - linkType: hard - -"@babel/runtime-corejs3@npm:7.23.6": - version: 7.23.6 - resolution: "@babel/runtime-corejs3@npm:7.23.6" - dependencies: - core-js-pure: "npm:^3.30.2" - regenerator-runtime: "npm:^0.14.0" - checksum: 776648b5692d7a0543e21f1b8c8bede28773351ead42cbc170d1ba80968ccb99d2a62f193efabb45db21cecb28d48eac53b508add47eab4b40adbb47a0fde011 - languageName: node - linkType: hard - -"@babel/runtime-corejs3@npm:^7.10.2": - version: 7.14.0 - resolution: "@babel/runtime-corejs3@npm:7.14.0" - dependencies: - core-js-pure: "npm:^3.0.0" - regenerator-runtime: "npm:^0.13.4" - checksum: 8c0/3763a67db07181ef06f5f7ebb02a6f8df607835e7164779070edc68b8a1ff581f5f6e2c6b929a316d20759d8a4faa3ca92a6968dcd91ec2740ddf149834dde87 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.0.0": - version: 7.20.13 - resolution: "@babel/runtime@npm:7.20.13" - dependencies: - regenerator-runtime: "npm:^0.13.11" - checksum: 8c0/4bea540b54d50af157efc6e9117727c0e9a146b9db43fcd89b8f0024c9464620194efc73e57588b4b141974188dc6f9d338319d74b855d32a785bf14a6fd0d6d - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.7": - version: 7.23.7 - resolution: "@babel/runtime@npm:7.23.7" - dependencies: - regenerator-runtime: "npm:^0.14.0" - checksum: 3e304133ee55b0750e03e53cb4efb47fb2bdcdb5795f85bbffa10595196c34b9be60eb65bd6d833c87f49fc827f0365f86f95f51d85b188004d3128bb5129c93 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.10.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.17, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": - version: 7.14.0 - resolution: "@babel/runtime@npm:7.14.0" - dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 8c0/27ba256f339682dae407ee76736e2e5854dbebb2eaef18e2a443b1a7554ab47aef6dea41cbe3957750e898d64cc08426d1730d94cf173a0da5ff559e103bd51f - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.14.8, @babel/runtime@npm:^7.16.3": - version: 7.17.2 - resolution: "@babel/runtime@npm:7.17.2" - dependencies: - regenerator-runtime: "npm:^0.13.4" - checksum: 8c0/1d94b34cdcd87b61b9c76a61dc63dfbeb9bb5ef2443d7e981b8e094cde23f9c3115d633347b26179423c5bd381765b8fca74f518de98c965bb68295e78addf3b - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.21.0": - version: 7.21.5 - resolution: "@babel/runtime@npm:7.21.5" - dependencies: - regenerator-runtime: "npm:^0.13.11" - checksum: 8c0/c704c36bf1c7f948b1d404e3ad3b00897f6dbaf8bb9455b0a78f96ed0e2f24599f89fd3950a277566be6694ab8814a47bec743e98dd7c7f57e9f0fedc6c6c32f - languageName: node - linkType: hard - -"@babel/template@npm:^7.12.13, @babel/template@npm:^7.3.3": - version: 7.12.13 - resolution: "@babel/template@npm:7.12.13" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/parser": "npm:^7.12.13" - "@babel/types": "npm:^7.12.13" - checksum: 8c0/b89183826190cdb10e63e92ec98256cb79b7da459a176db313ffa691b6b10dada068b0eeef15c16d8964ba979aa203434351c5bb22e050a79bc617f430184600 - languageName: node - linkType: hard - -"@babel/template@npm:^7.12.7, @babel/template@npm:^7.16.7": - version: 7.16.7 - resolution: "@babel/template@npm:7.16.7" - dependencies: - "@babel/code-frame": "npm:^7.16.7" - "@babel/parser": "npm:^7.16.7" - "@babel/types": "npm:^7.16.7" - checksum: 8c0/6186aa6514c26fbf6bb17bf13cf3d57d253f507c8e39603feecb9968d47875c179348de082c3c05f962159542c95614c9f0dd633f62ac0864f757cf682479a96 - languageName: node - linkType: hard - -"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/template@npm:7.20.7" - dependencies: - "@babel/code-frame": "npm:^7.18.6" - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - checksum: 8c0/1c6dcf9ac92769e6ab5e3d9048975537d26ab00b869646462ab4583d45e419c01db5144715ec0d70548835a3098c5d5416148c4a0b996a95e8e0b9dc8d042dd3 - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/template@npm:7.22.15" - dependencies: - "@babel/code-frame": "npm:^7.22.13" - "@babel/parser": "npm:^7.22.15" - "@babel/types": "npm:^7.22.15" - checksum: 9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/template@npm:7.22.5" - dependencies: - "@babel/code-frame": "npm:^7.22.5" - "@babel/parser": "npm:^7.22.5" - "@babel/types": "npm:^7.22.5" - checksum: 8c0/dd8fc1b0bfe0128bace25da0e0a708e26320e8030322d3a53bb6366f199b46a277bfa4281dd370d73ab19087c7e27d166070a0659783b4715f7470448c7342b1 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.13.15, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.14.2, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.0": - version: 7.14.2 - resolution: "@babel/traverse@npm:7.14.2" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@babel/generator": "npm:^7.14.2" - "@babel/helper-function-name": "npm:^7.14.2" - "@babel/helper-split-export-declaration": "npm:^7.12.13" - "@babel/parser": "npm:^7.14.2" - "@babel/types": "npm:^7.14.2" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 8c0/a8128b198d6b1e19455b7b6870ad2abac0a821f95033a7f8325b328627d98bd8ea46396b216432aa64d8b73502b4ed8850d3657aa10ac55a9856f15912c570a0 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.16.7, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.17.0": - version: 7.17.0 - resolution: "@babel/traverse@npm:7.17.0" - dependencies: - "@babel/code-frame": "npm:^7.16.7" - "@babel/generator": "npm:^7.17.0" - "@babel/helper-environment-visitor": "npm:^7.16.7" - "@babel/helper-function-name": "npm:^7.16.7" - "@babel/helper-hoist-variables": "npm:^7.16.7" - "@babel/helper-split-export-declaration": "npm:^7.16.7" - "@babel/parser": "npm:^7.17.0" - "@babel/types": "npm:^7.17.0" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 8c0/e26bbe9f14f45ee43f37e31908b8c85de99ca9ad60cec1041584f277be10c6651701f61484a3ecc96b9eb9c44b5612d6777889132001be9d627a4523355b43b5 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.20.10, @babel/traverse@npm:^7.20.12, @babel/traverse@npm:^7.20.13, @babel/traverse@npm:^7.20.7": - version: 7.20.13 - resolution: "@babel/traverse@npm:7.20.13" - dependencies: - "@babel/code-frame": "npm:^7.18.6" - "@babel/generator": "npm:^7.20.7" - "@babel/helper-environment-visitor": "npm:^7.18.9" - "@babel/helper-function-name": "npm:^7.19.0" - "@babel/helper-hoist-variables": "npm:^7.18.6" - "@babel/helper-split-export-declaration": "npm:^7.18.6" - "@babel/parser": "npm:^7.20.13" - "@babel/types": "npm:^7.20.7" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 8c0/c28c0dfedac0e6298122495eaeeb53016d307088c0cc7bbb4e6f1196bb3670fb771b618be7a5ef2ef5bb17df1bb8f3cff6475380cdcab2d2d57fbe62cabe79e8 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.22.11": - version: 7.22.11 - resolution: "@babel/traverse@npm:7.22.11" - dependencies: - "@babel/code-frame": "npm:^7.22.10" - "@babel/generator": "npm:^7.22.10" - "@babel/helper-environment-visitor": "npm:^7.22.5" - "@babel/helper-function-name": "npm:^7.22.5" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.22.11" - "@babel/types": "npm:^7.22.11" - debug: "npm:^4.1.0" - globals: "npm:^11.1.0" - checksum: 8c0/0a59df7c8660238d6a018de07e9b52592460cc393b724a7ac0289fe8129081ec2aeb772befe2c36909a32563c781082ffe85b407a26e2237a95b68c0f59e9849 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.23.7": - version: 7.23.7 - resolution: "@babel/traverse@npm:7.23.7" - dependencies: - "@babel/code-frame": "npm:^7.23.5" - "@babel/generator": "npm:^7.23.6" - "@babel/helper-environment-visitor": "npm:^7.22.20" - "@babel/helper-function-name": "npm:^7.23.0" - "@babel/helper-hoist-variables": "npm:^7.22.5" - "@babel/helper-split-export-declaration": "npm:^7.22.6" - "@babel/parser": "npm:^7.23.6" - "@babel/types": "npm:^7.23.6" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: e32fceb4249beec2bde83968ddffe17444221c1ee5cd18c543a2feaf94e3ca83f2a4dfbc2dcca87cf226e0105973e0fe3717063a21e982a9de9945615ab3f3f5 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.1.6, @babel/types@npm:^7.12.1, @babel/types@npm:^7.12.13, @babel/types@npm:^7.13.0, @babel/types@npm:^7.13.12, @babel/types@npm:^7.13.16, @babel/types@npm:^7.14.0, @babel/types@npm:^7.14.2, @babel/types@npm:^7.14.4, @babel/types@npm:^7.2.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.7.0": - version: 7.14.4 - resolution: "@babel/types@npm:7.14.4" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.14.0" - to-fast-properties: "npm:^2.0.0" - checksum: 8c0/f61d84bc068d48d42513fb7c0b1cdc7c3d10e025aeacd3a04049bdcf670d2038c99ca62b0d0f7598c6d5ccd273eb6320553dd8b0fd3697484809413681bc607c - languageName: node - linkType: hard - -"@babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.13.14, @babel/types@npm:^7.16.0, @babel/types@npm:^7.16.7, @babel/types@npm:^7.16.8, @babel/types@npm:^7.17.0": - version: 7.17.0 - resolution: "@babel/types@npm:7.17.0" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.16.7" - to-fast-properties: "npm:^2.0.0" - checksum: 8c0/ad09224272b40fedb00b262677d12b6838f5b5df5c47d67059ba1181bd4805439993393a8de32459dae137b536d60ebfcaf39ae84d8b3873f1e81cc75f5aeae8 - languageName: node - linkType: hard - -"@babel/types@npm:^7.18.13, @babel/types@npm:^7.18.6, @babel/types@npm:^7.19.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.2, @babel/types@npm:^7.20.7": - version: 7.20.7 - resolution: "@babel/types@npm:7.20.7" - dependencies: - "@babel/helper-string-parser": "npm:^7.19.4" - "@babel/helper-validator-identifier": "npm:^7.19.1" - to-fast-properties: "npm:^2.0.0" - checksum: 8c0/df0061f306bd95389604075ba5a88e984a801635c70c77b3b6ae8ab44675064b9ef4088c6c78dbf786a28efc662ad37f9c09f8658ba44c12cb8dd6f450a8bde7 - languageName: node - linkType: hard - -"@babel/types@npm:^7.21.3, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.11, @babel/types@npm:^7.22.5": - version: 7.22.11 - resolution: "@babel/types@npm:7.22.11" - dependencies: - "@babel/helper-string-parser": "npm:^7.22.5" - "@babel/helper-validator-identifier": "npm:^7.22.5" - to-fast-properties: "npm:^2.0.0" - checksum: 8c0/57632c8c409e604697824dd2799c978681c66e910d5bc4fdad04693a3f3e5d50b1119000d8fb215fcb88d095c6a41470814e4a4f34d8856d7da6781b9c39c53c - languageName: node - linkType: hard - -"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/types@npm:7.23.6" - dependencies: - "@babel/helper-string-parser": "npm:^7.23.4" - "@babel/helper-validator-identifier": "npm:^7.22.20" - to-fast-properties: "npm:^2.0.0" - checksum: 42cefce8a68bd09bb5828b4764aa5586c53c60128ac2ac012e23858e1c179347a4aac9c66fc577994fbf57595227611c5ec8270bf0cfc94ff033bbfac0550b70 - languageName: node - linkType: hard - -"@babel/types@npm:^7.8.3": - version: 7.21.5 - resolution: "@babel/types@npm:7.21.5" - dependencies: - "@babel/helper-string-parser": "npm:^7.21.5" - "@babel/helper-validator-identifier": "npm:^7.19.1" - to-fast-properties: "npm:^2.0.0" - checksum: 8c0/23c943aa2c0d11b798e9298b55b1993da8b386504aac2f781a49b4bbf2cf2ad5e1003409241578574e421c999ff7a3aab2cf30ad3581d33eb9053d82b9e20408 - languageName: node - linkType: hard - -"@bcoe/v8-coverage@npm:^0.2.3": - version: 0.2.3 - resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 8c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 - languageName: node - linkType: hard - -"@chevrotain/cst-dts-gen@npm:10.5.0": - version: 10.5.0 - resolution: "@chevrotain/cst-dts-gen@npm:10.5.0" - dependencies: - "@chevrotain/gast": "npm:10.5.0" - "@chevrotain/types": "npm:10.5.0" - lodash: "npm:4.17.21" - checksum: 8c0/ae621f2255be6f2838775aa022e54c9557a7fe3f42b52ced3d44b2dac26a48020c9db76c49b90dbb2982eb152c385a4ff2dac7578deef6131592fe13bda93ea7 - languageName: node - linkType: hard - -"@chevrotain/gast@npm:10.5.0": - version: 10.5.0 - resolution: "@chevrotain/gast@npm:10.5.0" - dependencies: - "@chevrotain/types": "npm:10.5.0" - lodash: "npm:4.17.21" - checksum: 8c0/4e894fe9932ef8a74a0d147c78f73fc0ef8aeb7170a79d66648c07c1de505ef0dc8b8dc0a5a69a58abd92adb7a165d9a540cb6b2393589b1025af18bcdb585ab - languageName: node - linkType: hard - -"@chevrotain/types@npm:10.5.0": - version: 10.5.0 - resolution: "@chevrotain/types@npm:10.5.0" - checksum: 8c0/9131b833e9658263c114713758379e06e79e94e0cd0cf178ec9ddbc5672896c7e890d230b5e72402cd4d7ce861835ce9489d0402723620650d4b6c353b497ec6 - languageName: node - linkType: hard - -"@chevrotain/utils@npm:10.5.0": - version: 10.5.0 - resolution: "@chevrotain/utils@npm:10.5.0" - checksum: 8c0/a7d99b8e9ecc8ceb0d46b5f194710768055c2b932aca316a5f1e77d8c1a6ecb8f4c5b39e4bac4dcd7189dfa5025dcdc112903511037b03a4ea88d216b68b4708 - languageName: node - linkType: hard - -"@cnakazawa/watch@npm:^1.0.3": - version: 1.0.4 - resolution: "@cnakazawa/watch@npm:1.0.4" - dependencies: - exec-sh: "npm:^0.3.2" - minimist: "npm:^1.2.0" - bin: - watch: cli.js - checksum: 8c0/8678b6f582bdc5ffe59c0d45c2ad21f4ea1d162ec7ddb32e85078fca481c26958f27bcdef6007b8e9a066da090ccf9d31e1753f8de1e5f32466a04227d70dc31 - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: 8c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 - languageName: node - linkType: hard - -"@cspotcode/source-map-support@npm:^0.8.0": - version: 0.8.1 - resolution: "@cspotcode/source-map-support@npm:0.8.1" - dependencies: - "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 8c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:0.5.7, @discoveryjs/json-ext@npm:^0.5.0": - version: 0.5.7 - resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: 8c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c - languageName: node - linkType: hard - -"@discoveryjs/json-ext@npm:^0.5.3": - version: 0.5.6 - resolution: "@discoveryjs/json-ext@npm:0.5.6" - checksum: 8c0/4bcaae126686b3b6f472d79aae47868f934f3fecc337f11e5ac289f6f776d139fe2bdcfe325af2bc526312495bc96975306e29f8316150c1ac7483b95d80035b - languageName: node - linkType: hard - -"@emotion/cache@npm:^10.0.27": - version: 10.0.29 - resolution: "@emotion/cache@npm:10.0.29" - dependencies: - "@emotion/sheet": "npm:0.9.4" - "@emotion/stylis": "npm:0.8.5" - "@emotion/utils": "npm:0.11.3" - "@emotion/weak-memoize": "npm:0.2.5" - checksum: 8c0/df109408fd463f243d6df48b4a28b410502f4506290875d0b9e07dc654638f71167d2b418b26f7e1c3d165cc44d507f476f4ff88652e7390c6ccb33aa04f8799 - languageName: node - linkType: hard - -"@emotion/core@npm:^10.1.1": - version: 10.1.1 - resolution: "@emotion/core@npm:10.1.1" - dependencies: - "@babel/runtime": "npm:^7.5.5" - "@emotion/cache": "npm:^10.0.27" - "@emotion/css": "npm:^10.0.27" - "@emotion/serialize": "npm:^0.11.15" - "@emotion/sheet": "npm:0.9.4" - "@emotion/utils": "npm:0.11.3" - peerDependencies: - react: ">=16.3.0" - checksum: 8c0/8beea9cde80631dc417cf941cfd7ae5d7d2d33eb802390d0ca8c238616e063926a6a86c80e23f7a148c7d3bf6a2f43f422ba187a28647b5a2cd435a47cdde7bd - languageName: node - linkType: hard - -"@emotion/css@npm:^10.0.27": - version: 10.0.27 - resolution: "@emotion/css@npm:10.0.27" - dependencies: - "@emotion/serialize": "npm:^0.11.15" - "@emotion/utils": "npm:0.11.3" - babel-plugin-emotion: "npm:^10.0.27" - checksum: 8c0/6ee63d229f9d98374b44622ab567204904393af6603182760f6fc787f436e071251b8df8cb0688f8e21c4132c05154534dddea67ec2fec97ba57400e6661eb7a - languageName: node - linkType: hard - -"@emotion/hash@npm:0.8.0": - version: 0.8.0 - resolution: "@emotion/hash@npm:0.8.0" - checksum: 8c0/706303d35d416217cd7eb0d36dbda4627bb8bdf4a32ea387e8dd99be11b8e0a998e10af21216e8a5fade518ad955ff06aa8890f20e694ce3a038ae7fc1000556 - languageName: node - linkType: hard - -"@emotion/is-prop-valid@npm:0.8.8, @emotion/is-prop-valid@npm:^0.8.2, @emotion/is-prop-valid@npm:^0.8.6, @emotion/is-prop-valid@npm:^0.8.8": - version: 0.8.8 - resolution: "@emotion/is-prop-valid@npm:0.8.8" - dependencies: - "@emotion/memoize": "npm:0.7.4" - checksum: 8c0/f6be625f067c7fa56a12a4edaf090715616dc4fc7803c87212831f38c969350107b9709b1be54100e53153b18d9fa068eb4bf4f9ac66a37a8edf1bac9b64e279 - languageName: node - linkType: hard - -"@emotion/memoize@npm:0.7.4": - version: 0.7.4 - resolution: "@emotion/memoize@npm:0.7.4" - checksum: 8c0/b2376548fc147b43afd1ff005a80a1a025bd7eb4fb759fdb23e96e5ff290ee8ba16628a332848d600fb91c3cdc319eee5395fa33d8875e5d5a8c4ce18cddc18e - languageName: node - linkType: hard - -"@emotion/serialize@npm:^0.11.15, @emotion/serialize@npm:^0.11.16": - version: 0.11.16 - resolution: "@emotion/serialize@npm:0.11.16" - dependencies: - "@emotion/hash": "npm:0.8.0" - "@emotion/memoize": "npm:0.7.4" - "@emotion/unitless": "npm:0.7.5" - "@emotion/utils": "npm:0.11.3" - csstype: "npm:^2.5.7" - checksum: 8c0/70b49a4261a79c2f5675a872cafc41dd102d6f04df76228b5ab6fd8b0b775a90f34b3d2c1c317c1a5e8fb8f3deebd9a5e764518e1968f616348982471e19a411 - languageName: node - linkType: hard - -"@emotion/sheet@npm:0.9.4": - version: 0.9.4 - resolution: "@emotion/sheet@npm:0.9.4" - checksum: 8c0/a37b3f619096d2576bee6b2cb0104dbe8cd008809000cb5d77482691e9539211902ef420e29b5ee6aa039d3e77468facd595bd60624c5a0af5f29a0889cd9eab - languageName: node - linkType: hard - -"@emotion/styled-base@npm:^10.0.27": - version: 10.0.31 - resolution: "@emotion/styled-base@npm:10.0.31" - dependencies: - "@babel/runtime": "npm:^7.5.5" - "@emotion/is-prop-valid": "npm:0.8.8" - "@emotion/serialize": "npm:^0.11.15" - "@emotion/utils": "npm:0.11.3" - peerDependencies: - "@emotion/core": ^10.0.28 - react: ">=16.3.0" - checksum: 8c0/4e640a60e2d716c1a14738067227aa237e5c347b2ed6d8d76472f4e97b3826f2aa517c683f052d5f9fa6705986a1d2c391bd4ec624367571e9fb319102b4b7b3 - languageName: node - linkType: hard - -"@emotion/styled@npm:^10.0.27": - version: 10.0.27 - resolution: "@emotion/styled@npm:10.0.27" - dependencies: - "@emotion/styled-base": "npm:^10.0.27" - babel-plugin-emotion: "npm:^10.0.27" - peerDependencies: - "@emotion/core": ^10.0.27 - react: ">=16.3.0" - checksum: 8c0/9d720d93f3055430432eec6e97ed35813fda886cf4b5d3710f37729e47c5c5a2018e97ea27f1f7a76382d313eb55d71b16441a7cb54e3af930c9d27b1f166b76 - languageName: node - linkType: hard - -"@emotion/stylis@npm:0.8.5, @emotion/stylis@npm:^0.8.4": - version: 0.8.5 - resolution: "@emotion/stylis@npm:0.8.5" - checksum: 8c0/f109e3f11cb0d48e8658aaa23578c5bcfe35e297819cfb089a3de6ba8dc0f89b0960474922690c6028df5d2e1895b4967f2fb280642c030054c312f1e137ce26 - languageName: node - linkType: hard - -"@emotion/unitless@npm:0.7.5, @emotion/unitless@npm:^0.7.4": - version: 0.7.5 - resolution: "@emotion/unitless@npm:0.7.5" - checksum: 8c0/4d0d94f53cb97b4481bbfa394953e1899a0b877644642ba9dd7247c27eb8c48e14e22aeb11411d7d9874685ad85dd5fb5b50eb78c6d8840eb56a84b92dcef2f4 - languageName: node - linkType: hard - -"@emotion/utils@npm:0.11.3": - version: 0.11.3 - resolution: "@emotion/utils@npm:0.11.3" - checksum: 8c0/bac34c74fc5d4c2aec52f2e739436b9631866822a05d1807fcfb856e7320d24804b8ce912a7fa8e447d937fd839f4bde0231a4f71bc6fa0f7e73289d6313f64f - languageName: node - linkType: hard - -"@emotion/weak-memoize@npm:0.2.5": - version: 0.2.5 - resolution: "@emotion/weak-memoize@npm:0.2.5" - checksum: 8c0/cabfaaecabbb407d323098afc0bb2dd2ec9aaea0672f8f2c54b84b99d5f8cc680356cf166583fd5593330ceef29f2c26554c2c65dff06c0a8f5f8c7da69d89f1 - languageName: node - linkType: hard - -"@envelop/core@npm:4.0.3": - version: 4.0.3 - resolution: "@envelop/core@npm:4.0.3" - dependencies: - "@envelop/types": "npm:4.0.1" - tslib: "npm:^2.5.0" - checksum: 37a9cdab390a354be8612e92891dbd13de0a58aedfad0728cbe2111069ca599c9ee5c542b3f4de9f155123b0cac776aa60ef10c5a3721ce58b5cb3b2383ddda6 - languageName: node - linkType: hard - -"@envelop/core@npm:^4.0.0": - version: 4.0.0 - resolution: "@envelop/core@npm:4.0.0" - dependencies: - "@envelop/types": "npm:4.0.0" - tslib: "npm:^2.5.0" - checksum: 8c0/2745008b823b64ac49a6b099b401a2809d8cf323a7a704163d4ca9bdade6551c2d94f76d345e35a70d9940f150d431c74daf2073f18feaddfd583a935a7e0918 - languageName: node - linkType: hard - -"@envelop/depth-limit@npm:3.0.3": - version: 3.0.3 - resolution: "@envelop/depth-limit@npm:3.0.3" - dependencies: - graphql-depth-limit: "npm:^1.1.0" - tslib: "npm:^2.5.0" - peerDependencies: - "@envelop/core": ^4.0.3 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 062d15cf8c51b37454a3b64d504f756501353e33702ded9c13e183c13ed01be249bc66fc1967de869d163eb1c5dc56f7bae0b2ec757b1543266b171c5f3dc6bd - languageName: node - linkType: hard - -"@envelop/disable-introspection@npm:5.0.3": - version: 5.0.3 - resolution: "@envelop/disable-introspection@npm:5.0.3" - dependencies: - tslib: "npm:^2.5.0" - peerDependencies: - "@envelop/core": ^4.0.3 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: e6a22aae5a25f79a414a9de56930f358fc084be69d99f8641b684d45d3a4d727a7e16cb5d79f195eda4bb482952331098758dcc9cc81892ffd072701cf5495e8 - languageName: node - linkType: hard - -"@envelop/filter-operation-type@npm:5.0.3": - version: 5.0.3 - resolution: "@envelop/filter-operation-type@npm:5.0.3" - dependencies: - tslib: "npm:^2.5.0" - peerDependencies: - "@envelop/core": ^4.0.3 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c48af3ca4608e703b2825d2e2ee1d615f1b0e07c617f99b3dd76eabe84937970b5e5d9f99c3ccdfb30e05e263b0159f87fa86b763904bc80898a3ab7dde6e6e5 - languageName: node - linkType: hard - -"@envelop/live-query@npm:6.0.3": - version: 6.0.3 - resolution: "@envelop/live-query@npm:6.0.3" - dependencies: - "@graphql-tools/utils": "npm:^10.0.0" - "@n1ru4l/graphql-live-query": "npm:^0.10.0" - "@n1ru4l/graphql-live-query-patch": "npm:^0.7.0" - "@n1ru4l/in-memory-live-query-store": "npm:^0.10.0" - tslib: "npm:^2.5.0" - peerDependencies: - "@envelop/core": ^4.0.3 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: bf8648a68ad43ac90cdf5615601e2973f371e283e35f9e9232837d2948cc9e41e056b731512f4c9341b0c95e3ed37bf26fa7cb83dc94b76b7630c79ff04ad49a - languageName: node - linkType: hard - -"@envelop/on-resolve@npm:3.0.3": - version: 3.0.3 - resolution: "@envelop/on-resolve@npm:3.0.3" - peerDependencies: - "@envelop/core": ^4.0.3 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 56e791a35b41a21f9f856f33c4d22de15876c1b40f97f50db1880e128ca6495affe1ab35689aa2c4ee30880daa1bde19fabc2a90af4af8d255502d7625ffba8b - languageName: node - linkType: hard - -"@envelop/testing@npm:6.0.3": - version: 6.0.3 - resolution: "@envelop/testing@npm:6.0.3" - dependencies: - "@graphql-tools/utils": "npm:^10.0.0" - tslib: "npm:^2.5.0" - peerDependencies: - "@envelop/core": ^4.0.3 - "@envelop/types": ^4.0.1 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 7397d0bb734397c9a2962e94440a3502f4772169eb6dc507439d1847cac0f9d4a3d170b0bf337a24a5f735fd796b135303afd485e87e2a3e94f24c6824069501 - languageName: node - linkType: hard - -"@envelop/types@npm:4.0.0": - version: 4.0.0 - resolution: "@envelop/types@npm:4.0.0" - dependencies: - tslib: "npm:^2.5.0" - checksum: 8c0/e81fe3a1873686f04d24f4093dacfd55c6504f654eeb5cb700341335fc6922f48d90b34bc664affac6d9cacc3cdba9f5fb2d9a140a0f1f503db062b65c69a88f - languageName: node - linkType: hard - -"@envelop/types@npm:4.0.1": - version: 4.0.1 - resolution: "@envelop/types@npm:4.0.1" - dependencies: - tslib: "npm:^2.5.0" - checksum: 81e09afaf60d036102f7992daeefb0cd5380bb1484dd19cb90db73db4ae730b5297823439711fb8315ee01485a37f1c8155aa1111c7dc4ea11c77b7f25945633 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm64@npm:0.18.20" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/android-arm64@npm:0.19.9" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-arm@npm:0.18.20" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-arm@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/android-arm@npm:0.19.9" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/android-x64@npm:0.18.20" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/android-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/android-x64@npm:0.19.9" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-arm64@npm:0.18.20" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/darwin-arm64@npm:0.19.9" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/darwin-x64@npm:0.18.20" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/darwin-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/darwin-x64@npm:0.19.9" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-arm64@npm:0.18.20" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/freebsd-arm64@npm:0.19.9" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/freebsd-x64@npm:0.18.20" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/freebsd-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/freebsd-x64@npm:0.19.9" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm64@npm:0.18.20" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-arm64@npm:0.19.9" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-arm@npm:0.18.20" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-arm@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-arm@npm:0.19.9" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ia32@npm:0.18.20" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-ia32@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-ia32@npm:0.19.9" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-loong64@npm:0.18.20" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-loong64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-loong64@npm:0.19.9" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-mips64el@npm:0.18.20" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-mips64el@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-mips64el@npm:0.19.9" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-ppc64@npm:0.18.20" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-ppc64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-ppc64@npm:0.19.9" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-riscv64@npm:0.18.20" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-riscv64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-riscv64@npm:0.19.9" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-s390x@npm:0.18.20" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-s390x@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-s390x@npm:0.19.9" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/linux-x64@npm:0.18.20" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/linux-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/linux-x64@npm:0.19.9" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/netbsd-x64@npm:0.18.20" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/netbsd-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/netbsd-x64@npm:0.19.9" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/openbsd-x64@npm:0.18.20" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/openbsd-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/openbsd-x64@npm:0.19.9" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/sunos-x64@npm:0.18.20" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/sunos-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/sunos-x64@npm:0.19.9" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-arm64@npm:0.18.20" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-arm64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/win32-arm64@npm:0.19.9" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-ia32@npm:0.18.20" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-ia32@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/win32-ia32@npm:0.19.9" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.18.20": - version: 0.18.20 - resolution: "@esbuild/win32-x64@npm:0.18.20" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@esbuild/win32-x64@npm:0.19.9": - version: 0.19.9 - resolution: "@esbuild/win32-x64@npm:0.19.9" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-block-field-suggestions@npm:2.1.0": - version: 2.1.0 - resolution: "@escape.tech/graphql-armor-block-field-suggestions@npm:2.1.0" - dependencies: - "@envelop/core": "npm:^4.0.0" - graphql: "npm:^16.0.0" - dependenciesMeta: - "@envelop/core": - optional: true - checksum: 8c0/ec696620e40d169cb02320a7540120e1db4bc9eae298f23c50f68802f52cb2e87f2b9b733e03567c91ca23a66027ed94d811d19555540fbb270f3eb3d218f386 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-cost-limit@npm:2.1.0": - version: 2.1.0 - resolution: "@escape.tech/graphql-armor-cost-limit@npm:2.1.0" - dependencies: - "@envelop/core": "npm:^4.0.0" - "@escape.tech/graphql-armor-types": "npm:0.5.0" - graphql: "npm:^16.0.0" - dependenciesMeta: - "@envelop/core": - optional: true - "@escape.tech/graphql-armor-types": - optional: true - checksum: 8c0/ce589e35955925e78f4e794d64b48a90f84a2ee2f47ca78c349338760ebe114f55c82e5c2deaf8b7b2fe71c1d36b6f06def3562100bdcaf0d7333f982c9166b2 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-max-aliases@npm:2.1.0": - version: 2.1.0 - resolution: "@escape.tech/graphql-armor-max-aliases@npm:2.1.0" - dependencies: - "@envelop/core": "npm:^4.0.0" - "@escape.tech/graphql-armor-types": "npm:0.5.0" - graphql: "npm:^16.0.0" - dependenciesMeta: - "@envelop/core": - optional: true - "@escape.tech/graphql-armor-types": - optional: true - checksum: 8c0/7eb9132b95d6f7c638983cec4756359bda5805ccd369facedc168e2112602b2db46280ad3755f1fa586c77cb132a853e470bec6400a5b5ae25f9b5f7bae619d1 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-max-depth@npm:2.2.0": - version: 2.2.0 - resolution: "@escape.tech/graphql-armor-max-depth@npm:2.2.0" - dependencies: - "@envelop/core": "npm:^4.0.0" - "@escape.tech/graphql-armor-types": "npm:0.5.0" - graphql: "npm:^16.0.0" - dependenciesMeta: - "@envelop/core": - optional: true - "@escape.tech/graphql-armor-types": - optional: true - checksum: 8c0/f30f231984da41b4f1a4fd89551c6d57ba830814a6de32f863a8cf3bc3e436933700fc2716741e8f171b66dee7d45a46056b86244a44d1ad95b128a47eb0f74a - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-max-directives@npm:2.1.0": - version: 2.1.0 - resolution: "@escape.tech/graphql-armor-max-directives@npm:2.1.0" - dependencies: - "@envelop/core": "npm:^4.0.0" - "@escape.tech/graphql-armor-types": "npm:0.5.0" - graphql: "npm:^16.0.0" - dependenciesMeta: - "@envelop/core": - optional: true - "@escape.tech/graphql-armor-types": - optional: true - checksum: 8c0/94d1612998ea34ad512f6343399262a47b1ade5184511d19bfde4cbcb29948e2e210ae3f46e5c5aa40c3b4e942ef92d2cfc9885a426f2965136546c5b4b048f9 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-max-tokens@npm:2.2.0": - version: 2.2.0 - resolution: "@escape.tech/graphql-armor-max-tokens@npm:2.2.0" - dependencies: - "@envelop/core": "npm:^4.0.0" - "@escape.tech/graphql-armor-types": "npm:0.5.0" - graphql: "npm:^16.0.0" - dependenciesMeta: - "@envelop/core": - optional: true - "@escape.tech/graphql-armor-types": - optional: true - checksum: 8c0/42278e504a87c622d4abac739321acb88f1f18f0829d546dd24f010d92a0987f50aee7ab92b5e406b0176aaee70eb8e0e2805517fa257699174356875aa9b302 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor-types@npm:0.5.0": - version: 0.5.0 - resolution: "@escape.tech/graphql-armor-types@npm:0.5.0" - dependencies: - graphql: "npm:^16.0.0" - checksum: 8c0/fc93eab84d27836ea37f6d2f8f0604b889906da26a54a2ffa25008e289f46b469c481d9071ca5c0a3ccc66a188cb4665592e73617507ca044f8a6a6cefb71270 - languageName: node - linkType: hard - -"@escape.tech/graphql-armor@npm:2.3.1": - version: 2.3.1 - resolution: "@escape.tech/graphql-armor@npm:2.3.1" - dependencies: - "@escape.tech/graphql-armor-block-field-suggestions": "npm:2.1.0" - "@escape.tech/graphql-armor-cost-limit": "npm:2.1.0" - "@escape.tech/graphql-armor-max-aliases": "npm:2.1.0" - "@escape.tech/graphql-armor-max-depth": "npm:2.2.0" - "@escape.tech/graphql-armor-max-directives": "npm:2.1.0" - "@escape.tech/graphql-armor-max-tokens": "npm:2.2.0" - graphql: "npm:^16.0.0" - peerDependencies: - "@apollo/server": ^4.0.0 - "@envelop/core": ^4.0.0 - "@escape.tech/graphql-armor-types": 0.5.0 - peerDependenciesMeta: - "@apollo/server": - optional: true - "@envelop/core": - optional: true - "@escape.tech/graphql-armor-types": - optional: true - checksum: 40ecfb643fea264eacb7d3d4031e139a3bb3cea6f1519146042d2eb9bbad64b1f5d570886459da75c25ff1a471fc13b04fae2f2795b0c6e0b97922bfb9191d47 - languageName: node - linkType: hard - -"@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" - dependencies: - eslint-visitor-keys: "npm:^3.3.0" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 8c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.4.0": - version: 4.5.1 - resolution: "@eslint-community/regexpp@npm:4.5.1" - checksum: 8c0/d79cbd99cc4dcfbb17e8dd30a30bb5aec5da9c60b9471043f886f116615bb15f0d417cb0ca638cefedba0b4c67c339e2011b53d88264a4540775f042a5879e01 - languageName: node - linkType: hard - -"@eslint-community/regexpp@npm:^4.6.1": - version: 4.8.0 - resolution: "@eslint-community/regexpp@npm:4.8.0" - checksum: 8c0/77252aecfea8a2eb02bb076803f78c1529963e9a7f1cb1be5305126f5582a0cbd1cb6ab38a8ac952633cfd5659c101e8b8b494c69376a2481ddd9bd156419fdd - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^0.4.3": - version: 0.4.3 - resolution: "@eslint/eslintrc@npm:0.4.3" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.1.1" - espree: "npm:^7.3.0" - globals: "npm:^13.9.0" - ignore: "npm:^4.0.6" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^3.13.1" - minimatch: "npm:^3.0.4" - strip-json-comments: "npm:^3.1.1" - checksum: 8c0/0eed93369f72ef044686d07824742121f9b95153ff34f4614e4e69d64332ee68c84eb70da851a9005bb76b3d1d64ad76c2e6293a808edc0f7dfb883689ca136d - languageName: node - linkType: hard - -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" - dependencies: - ajv: "npm:^6.12.4" - debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" - ignore: "npm:^5.2.0" - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - minimatch: "npm:^3.1.2" - strip-json-comments: "npm:^3.1.1" - checksum: 32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 - languageName: node - linkType: hard - -"@eslint/js@npm:8.55.0": - version: 8.55.0 - resolution: "@eslint/js@npm:8.55.0" - checksum: 88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d - languageName: node - linkType: hard - -"@fastify/accept-negotiator@npm:^1.0.0": - version: 1.1.0 - resolution: "@fastify/accept-negotiator@npm:1.1.0" - checksum: 8c0/1cb9a298c992b812869158ddc6093557a877b30e5f77618a7afea985a0667c50bc7113593bf0f7f9dc9b82b94c16e8ab127a0afc3efde6677fd645539f6d08e5 - languageName: node - linkType: hard - -"@fastify/ajv-compiler@npm:^3.5.0": - version: 3.5.0 - resolution: "@fastify/ajv-compiler@npm:3.5.0" - dependencies: - ajv: "npm:^8.11.0" - ajv-formats: "npm:^2.1.1" - fast-uri: "npm:^2.0.0" - checksum: 8c0/d10df76b7016984bf70bc6aca99962468ec43e0be5772d4aa3a7735ae78be44fdbcb2c078fe0cfdffec076080dfb7cbdbf4b729e52b168039477126f9d023af0 - languageName: node - linkType: hard - -"@fastify/deepmerge@npm:^1.0.0": - version: 1.3.0 - resolution: "@fastify/deepmerge@npm:1.3.0" - checksum: 8c0/8115ed7b891189ee4ebba554a105cb69111615bdb2961f8c58a80872fac9d7b74b2c6317d545a7d378325d094ce73a91fc9c5d7d6189476779cd5a5493cb1351 - languageName: node - linkType: hard - -"@fastify/error@npm:^3.0.0": - version: 3.2.0 - resolution: "@fastify/error@npm:3.2.0" - checksum: 8c0/b7976199a2fe945e75dfb0a624fd9bff6496cd79f9688ffaada2ee62ff1810028864319f8a6dd16ea11cfb3038bcae1f6d0238c7d8a4003aca6801316a30a0f1 - languageName: node - linkType: hard - -"@fastify/error@npm:^3.4.0": - version: 3.4.1 - resolution: "@fastify/error@npm:3.4.1" - checksum: 1f1a0faa8c86639afb6f4bd47a9cdc1f0f20ce0d6944340fbdec8218aaba91dc9cae9ed78e24e61bceb782a867efda2b9a6320091f00dcbb896d9c8a9bdf5f96 - languageName: node - linkType: hard - -"@fastify/fast-json-stringify-compiler@npm:^4.3.0": - version: 4.3.0 - resolution: "@fastify/fast-json-stringify-compiler@npm:4.3.0" - dependencies: - fast-json-stringify: "npm:^5.7.0" - checksum: 8c0/513ef296f5ed682f7a460cfa6c5fb917a32fc540111b873c9937f944558e021492b18f30f9fd8dd20db252381a4428adbcc9f03a077f16c86d02f081eb490c7b - languageName: node - linkType: hard - -"@fastify/http-proxy@npm:9.3.0": - version: 9.3.0 - resolution: "@fastify/http-proxy@npm:9.3.0" - dependencies: - "@fastify/reply-from": "npm:^9.0.0" - fast-querystring: "npm:^1.1.2" - fastify-plugin: "npm:^4.5.0" - ws: "npm:^8.4.2" - checksum: c8f7fe380580f53059f676ca5b2bbdb1eef0a2d3dce28568e8932aeedb992efdc5fc40dae41b6d52f2f0ce14036af182664d0276ea9366e31fd920a119e7a03a - languageName: node - linkType: hard - -"@fastify/reply-from@npm:^9.0.0": - version: 9.0.1 - resolution: "@fastify/reply-from@npm:9.0.1" - dependencies: - "@fastify/error": "npm:^3.0.0" - end-of-stream: "npm:^1.4.4" - fast-querystring: "npm:^1.0.0" - fastify-plugin: "npm:^4.0.0" - pump: "npm:^3.0.0" - tiny-lru: "npm:^10.0.0" - undici: "npm:^5.19.1" - checksum: 8c0/eadee7751ec2679cb9ae732258bc53a57e7232f1bec0fd4265e4124e27301dc879972adc024435d36a271b632cbd9283b819a41b71fd44d0d329f74156bede72 - languageName: node - linkType: hard - -"@fastify/send@npm:^2.0.0": - version: 2.0.1 - resolution: "@fastify/send@npm:2.0.1" - dependencies: - "@lukeed/ms": "npm:^2.0.1" - escape-html: "npm:~1.0.3" - fast-decode-uri-component: "npm:^1.0.1" - http-errors: "npm:2.0.0" - mime: "npm:^3.0.0" - checksum: 8c0/1b69e2c70df964a9a5c7e548ffcc5efd53a5a4be21dffca7f3f8d71b65624bec33b2318c08b228a3c3ceac3b802c289c9d20659e99482f3b3011042887e4a00e - languageName: node - linkType: hard - -"@fastify/static@npm:6.12.0": - version: 6.12.0 - resolution: "@fastify/static@npm:6.12.0" - dependencies: - "@fastify/accept-negotiator": "npm:^1.0.0" - "@fastify/send": "npm:^2.0.0" - content-disposition: "npm:^0.5.3" - fastify-plugin: "npm:^4.0.0" - glob: "npm:^8.0.1" - p-limit: "npm:^3.1.0" - checksum: 9248c9851c4bb24965e88eb2f0825fda2b2b08ddb83aa5f08e529b8a522cf20978f81e8e4837e2cb550b39ea433790b0fd82db4b2f0673133325e265c9099fff - languageName: node - linkType: hard - -"@fastify/url-data@npm:5.4.0": - version: 5.4.0 - resolution: "@fastify/url-data@npm:5.4.0" - dependencies: - fast-uri: "npm:^2.2.0" - fastify-plugin: "npm:^4.0.0" - checksum: 727822f90277b937eabdbbdbf14ae1f8b9fb495ae7b9799bdd383a56f784eb3c9929998a3ac133881afd9871b7c6d9261c3f2e339f82d793f4535e25079e5621 - languageName: node - linkType: hard - -"@floating-ui/core@npm:^1.4.2": - version: 1.5.2 - resolution: "@floating-ui/core@npm:1.5.2" - dependencies: - "@floating-ui/utils": "npm:^0.1.3" - checksum: 595896efbd4d4298ef799e734784b924594f179c7b37d6019c7a0bd2f062558f172b4125540668e1242746d69cc8c03f191ba1a3ab2f22d9ad926076bdf21274 - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.2.1, @floating-ui/dom@npm:^1.5.1": - version: 1.5.3 - resolution: "@floating-ui/dom@npm:1.5.3" - dependencies: - "@floating-ui/core": "npm:^1.4.2" - "@floating-ui/utils": "npm:^0.1.3" - checksum: e5f30b911f939e40003851077bba441f269ae689bdc43c674bee43aa98fc6b7a5f59be432d27b7be599b1e4ab7b15c752875ea777a89cff01d157e593b78b25b - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^1.3.0": - version: 1.3.0 - resolution: "@floating-ui/react-dom@npm:1.3.0" - dependencies: - "@floating-ui/dom": "npm:^1.2.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: bd9883660d216fdecca76a0b0ecef580d1914fb3d73775920569b641c9c3be552cff1ffa88ba6e7fbd8022d81ddfdf480b1ba81fa8e01366c4117576c5e315fb - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.0.0": - version: 2.0.4 - resolution: "@floating-ui/react-dom@npm:2.0.4" - dependencies: - "@floating-ui/dom": "npm:^1.5.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 5d597a7939e484428452cee775884f6c14055783d811a1abedf03151eb8825ecf42a544553efecdc502f30ca2a6b3e6630485367c39473d259e74f5f1331bc0a - languageName: node - linkType: hard - -"@floating-ui/react@npm:^0.19.1": - version: 0.19.2 - resolution: "@floating-ui/react@npm:0.19.2" - dependencies: - "@floating-ui/react-dom": "npm:^1.3.0" - aria-hidden: "npm:^1.1.3" - tabbable: "npm:^6.0.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 9a64284dea70d93313c05cb300c1887fa7957a1d6c01bd09a9c789ad74ce8f9ad3307a008615c21f86e253cff24a7a925fa75d7ab7cb24bb2fda0ff574e70aa2 - languageName: node - linkType: hard - -"@floating-ui/utils@npm:^0.1.3": - version: 0.1.6 - resolution: "@floating-ui/utils@npm:0.1.6" - checksum: 0a089db0e0526b89e83cb0a773a903517db5c9067cd473febfd8fa91a3a2ccbc3a835234796c1bb528def21dbb67be50e28d9c473cb58a6d90679d7e549b9c0c - languageName: node - linkType: hard - -"@gar/promisify@npm:^1.0.1, @gar/promisify@npm:^1.1.3": - version: 1.1.3 - resolution: "@gar/promisify@npm:1.1.3" - checksum: 8c0/0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff - languageName: node - linkType: hard - -"@graphiql/plugin-explorer@npm:0.1.22": - version: 0.1.22 - resolution: "@graphiql/plugin-explorer@npm:0.1.22" - dependencies: - graphiql-explorer: "npm:^0.9.0" - peerDependencies: - "@graphiql/react": ^0.18.0 - graphql: ^15.5.0 || ^16.0.0 - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - checksum: 35c0e5ecd7c432b0177df4e09f7954e9cc0cac26424a7322ad21176b64ea4f180a3b4eaaf20a178242b4cf4e8727cd98620477318699a9242a2cb42b968de811 - languageName: node - linkType: hard - -"@graphiql/react@npm:^0.20.2": - version: 0.20.2 - resolution: "@graphiql/react@npm:0.20.2" - dependencies: - "@graphiql/toolkit": "npm:^0.9.1" - "@headlessui/react": "npm:^1.7.15" - "@radix-ui/react-dialog": "npm:^1.0.4" - "@radix-ui/react-dropdown-menu": "npm:^2.0.5" - "@radix-ui/react-tooltip": "npm:^1.0.6" - "@radix-ui/react-visually-hidden": "npm:^1.0.3" - "@types/codemirror": "npm:^5.60.8" - clsx: "npm:^1.2.1" - codemirror: "npm:^5.65.3" - codemirror-graphql: "npm:^2.0.10" - copy-to-clipboard: "npm:^3.2.0" - framer-motion: "npm:^6.5.1" - graphql-language-service: "npm:^5.2.0" - markdown-it: "npm:^12.2.0" - set-value: "npm:^4.1.0" - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - checksum: 6bf9e50fc5c56da2e04bfacdf066a5077ddb3909481ab25f13da812d213b237855dda2daeb6c8f8cbc961584008e9bebd9b4ed89262963ecf94e736c53466b5c - languageName: node - linkType: hard - -"@graphiql/toolkit@npm:0.8.4": - version: 0.8.4 - resolution: "@graphiql/toolkit@npm:0.8.4" - dependencies: - "@n1ru4l/push-pull-async-iterable-iterator": "npm:^3.1.0" - meros: "npm:^1.1.4" - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 - graphql-ws: ">= 4.5.0" - peerDependenciesMeta: - graphql-ws: - optional: true - checksum: 75e960007df4c9466db21519003df0c5c3a63ed6243d53b44035b8caad6c71cd3065f5201f94295b5eaf48616673e685856d3b64f343e450330691cbaa004db6 - languageName: node - linkType: hard - -"@graphiql/toolkit@npm:^0.9.1": - version: 0.9.1 - resolution: "@graphiql/toolkit@npm:0.9.1" - dependencies: - "@n1ru4l/push-pull-async-iterable-iterator": "npm:^3.1.0" - meros: "npm:^1.1.4" - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 - graphql-ws: ">= 4.5.0" - peerDependenciesMeta: - graphql-ws: - optional: true - checksum: f212a083e635c354f17e829517720fac7170cd693ad36a1520ea0c67eede32360ebadbbae13910cf3da767036501b5aa59204e6384a59a0c20afd93606e30896 - languageName: node - linkType: hard - -"@graphql-codegen/add@npm:4.0.1": - version: 4.0.1 - resolution: "@graphql-codegen/add@npm:4.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.1.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/32476f676b59876e75af41a448a6133f29f5f2b6c975e88d0e54b5d793e931cffd2d55f094bd79e7fe84664e18cf6bcdf13d199ddec903713338aaa522ff1b3b - languageName: node - linkType: hard - -"@graphql-codegen/add@npm:^5.0.0": - version: 5.0.0 - resolution: "@graphql-codegen/add@npm:5.0.0" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 1b0d8006862463bf1a8122c8b25f6f91535826149e2eafda85938e5527ced4bbf275bd81cbb55f3378a8329b9c7bce280b8d011abff7eb69196a81aa45f38140 - languageName: node - linkType: hard - -"@graphql-codegen/cli@npm:3.3.1": - version: 3.3.1 - resolution: "@graphql-codegen/cli@npm:3.3.1" - dependencies: - "@babel/generator": "npm:^7.18.13" - "@babel/template": "npm:^7.18.10" - "@babel/types": "npm:^7.18.13" - "@graphql-codegen/core": "npm:^3.1.0" - "@graphql-codegen/plugin-helpers": "npm:^4.2.0" - "@graphql-tools/apollo-engine-loader": "npm:^7.3.6" - "@graphql-tools/code-file-loader": "npm:^7.3.17" - "@graphql-tools/git-loader": "npm:^7.2.13" - "@graphql-tools/github-loader": "npm:^7.3.20" - "@graphql-tools/graphql-file-loader": "npm:^7.5.0" - "@graphql-tools/json-file-loader": "npm:^7.4.1" - "@graphql-tools/load": "npm:^7.8.0" - "@graphql-tools/prisma-loader": "npm:^7.2.49" - "@graphql-tools/url-loader": "npm:^7.13.2" - "@graphql-tools/utils": "npm:^9.0.0" - "@parcel/watcher": "npm:^2.1.0" - "@whatwg-node/fetch": "npm:^0.8.0" - chalk: "npm:^4.1.0" - cosmiconfig: "npm:^7.0.0" - debounce: "npm:^1.2.0" - detect-indent: "npm:^6.0.0" - graphql-config: "npm:^4.5.0" - inquirer: "npm:^8.0.0" - is-glob: "npm:^4.0.1" - jiti: "npm:^1.17.1" - json-to-pretty-yaml: "npm:^1.2.2" - listr2: "npm:^4.0.5" - log-symbols: "npm:^4.0.0" - micromatch: "npm:^4.0.5" - shell-quote: "npm:^1.7.3" - string-env-interpolation: "npm:^1.0.1" - ts-log: "npm:^2.2.3" - tslib: "npm:^2.4.0" - yaml: "npm:^1.10.0" - yargs: "npm:^17.0.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - bin: - gql-gen: cjs/bin.js - graphql-code-generator: cjs/bin.js - graphql-codegen: cjs/bin.js - graphql-codegen-esm: esm/bin.js - checksum: 8c0/e6886054bad3b8de3760d1381b54c7dd0af2eb77104563065ba7ca63700b25ad1f8ce9fe8482d960ff8bd4cf110465a3e822a1303da10cebd6965c72d5a9e9a1 - languageName: node - linkType: hard - -"@graphql-codegen/client-preset@npm:4.1.0": - version: 4.1.0 - resolution: "@graphql-codegen/client-preset@npm:4.1.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.20.2" - "@babel/template": "npm:^7.20.7" - "@graphql-codegen/add": "npm:^5.0.0" - "@graphql-codegen/gql-tag-operations": "npm:4.0.1" - "@graphql-codegen/plugin-helpers": "npm:^5.0.1" - "@graphql-codegen/typed-document-node": "npm:^5.0.1" - "@graphql-codegen/typescript": "npm:^4.0.1" - "@graphql-codegen/typescript-operations": "npm:^4.0.1" - "@graphql-codegen/visitor-plugin-common": "npm:^4.0.1" - "@graphql-tools/documents": "npm:^1.0.0" - "@graphql-tools/utils": "npm:^10.0.0" - "@graphql-typed-document-node/core": "npm:3.2.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c975e72a97a0f679a9ee77265ad5cf535d17d5409fb39704653f0b6c203e1c6815e0a81b20b0d597ebb8f537a5a8a5a601a9366073270fde9971408f0ddadc1d - languageName: node - linkType: hard - -"@graphql-codegen/core@npm:3.1.0, @graphql-codegen/core@npm:^3.1.0": - version: 3.1.0 - resolution: "@graphql-codegen/core@npm:3.1.0" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.1.0" - "@graphql-tools/schema": "npm:^9.0.0" - "@graphql-tools/utils": "npm:^9.1.1" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/822be191eba5cc9f1882936501941054adfc517cb7f32e32c85843253eec268eca20d24f2ba04d9575719e36e3a5cd0df059715f3fd78d32f12f7d79c7198e79 - languageName: node - linkType: hard - -"@graphql-codegen/fragment-matcher@npm:5.0.0": - version: 5.0.0 - resolution: "@graphql-codegen/fragment-matcher@npm:5.0.0" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 52ad2ee32f4d4e690ec8f9fbd9e62d7ec1ddfcb91004acf86969b1e24767c19aa49870ee49ccb196efba92f9280f813073e891950dc234d2e411263c1e84408d - languageName: node - linkType: hard - -"@graphql-codegen/gql-tag-operations@npm:4.0.1": - version: 4.0.1 - resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" - "@graphql-tools/utils": "npm:^10.0.0" - auto-bind: "npm:~4.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c2e0be33d2e0362892b466058da02ad8476192691ce8efc64f0e94116a1b2ae6c1a479b5d399f4396fee3c54959f5e4a296d994bcffa458c1ec5167c56d183ab - languageName: node - linkType: hard - -"@graphql-codegen/plugin-helpers@npm:^2.7.2": - version: 2.7.2 - resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" - dependencies: - "@graphql-tools/utils": "npm:^8.8.0" - change-case-all: "npm:1.0.14" - common-tags: "npm:1.8.2" - import-from: "npm:4.0.0" - lodash: "npm:~4.17.0" - tslib: "npm:~2.4.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/b4abce50a751d938a48b2b7ff57aa1671df1ae9d54196ccd60237077aef2e2b528b45244cb786d1b2eeb1f464c48eb7626553fdc5cf3a9013455ed27ef3ef7d2 - languageName: node - linkType: hard - -"@graphql-codegen/plugin-helpers@npm:^4.1.0, @graphql-codegen/plugin-helpers@npm:^4.2.0": - version: 4.2.0 - resolution: "@graphql-codegen/plugin-helpers@npm:4.2.0" - dependencies: - "@graphql-tools/utils": "npm:^9.0.0" - change-case-all: "npm:1.0.15" - common-tags: "npm:1.8.2" - import-from: "npm:4.0.0" - lodash: "npm:~4.17.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/cc4a63eb6cd015c9b26f6ff115257ff9c7b87c352a23b3f0622536c6df693e647ff627daef6f370c629fc515ddfdb2f7e3190f5e8cd6490a1ea513835cc358c3 - languageName: node - linkType: hard - -"@graphql-codegen/plugin-helpers@npm:^5.0.0, @graphql-codegen/plugin-helpers@npm:^5.0.1": - version: 5.0.1 - resolution: "@graphql-codegen/plugin-helpers@npm:5.0.1" - dependencies: - "@graphql-tools/utils": "npm:^10.0.0" - change-case-all: "npm:1.0.15" - common-tags: "npm:1.8.2" - import-from: "npm:4.0.0" - lodash: "npm:~4.17.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: afb3d43736c8d4a2131135343df11a286c68f330656777549f6d9a2dd76b8278133697dddbaa9d43353ed476f0eccd2273cccc4bb4a289d10f0611b139812efa - languageName: node - linkType: hard - -"@graphql-codegen/schema-ast@npm:3.0.1, @graphql-codegen/schema-ast@npm:^3.0.1": - version: 3.0.1 - resolution: "@graphql-codegen/schema-ast@npm:3.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.1.0" - "@graphql-tools/utils": "npm:^9.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/cc4602e5b97876181e6a8e3e0241e336715e489d1721121037a0a28b49d3bd800de9a331c8db2e9449c3c237e842c05db93a2c834cfcc7e3cd68a15c96a8e204 - languageName: node - linkType: hard - -"@graphql-codegen/schema-ast@npm:^4.0.0": - version: 4.0.0 - resolution: "@graphql-codegen/schema-ast@npm:4.0.0" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - "@graphql-tools/utils": "npm:^10.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 82b7dcca9bbec4406d107e97f611d4c8657a65064a19c93e5319047a780a051392ef70e27b5d501e765eb0fb0a3f08d69e5051d7797c5d2f0756bae93e871154 - languageName: node - linkType: hard - -"@graphql-codegen/typed-document-node@npm:5.0.1, @graphql-codegen/typed-document-node@npm:^5.0.1": - version: 5.0.1 - resolution: "@graphql-codegen/typed-document-node@npm:5.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" - auto-bind: "npm:~4.0.0" - change-case-all: "npm:1.0.15" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 84c7a10d9a574987c7a18f81ad43dff92e1605f9295488ef314cf17273772bb2fd406772164b2a601fda15b280fbc0d3d42cdc8c9ce742b68e4423faf9a2aca0 - languageName: node - linkType: hard - -"@graphql-codegen/typescript-operations@npm:3.0.4": - version: 3.0.4 - resolution: "@graphql-codegen/typescript-operations@npm:3.0.4" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.2.0" - "@graphql-codegen/typescript": "npm:^3.0.4" - "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" - auto-bind: "npm:~4.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/4ea5c955e0b12b1f6aa4d6ad46b217c56e802ff5508b939a3a218c53208d03bbd308bb3dfbfbc30fe7c4bd0be4c9c51c76b0fe65c6238618ed482874c869f801 - languageName: node - linkType: hard - -"@graphql-codegen/typescript-operations@npm:^4.0.1": - version: 4.0.1 - resolution: "@graphql-codegen/typescript-operations@npm:4.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - "@graphql-codegen/typescript": "npm:^4.0.1" - "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" - auto-bind: "npm:~4.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: dd372cdc732831376fd0f931c419ed2fdcedfb79ac49117fa98aaceec70c3839697cd7eb9d276be39512d1490272ebc6d7919dcc9760f2aa200058dcc6a89086 - languageName: node - linkType: hard - -"@graphql-codegen/typescript-react-apollo@npm:3.3.7": - version: 3.3.7 - resolution: "@graphql-codegen/typescript-react-apollo@npm:3.3.7" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^2.7.2" - "@graphql-codegen/visitor-plugin-common": "npm:2.13.1" - auto-bind: "npm:~4.0.0" - change-case-all: "npm:1.0.14" - tslib: "npm:~2.4.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-tag: ^2.0.0 - checksum: 8c0/8aed1aa62694abea2616bf39501b561a0aed107b3c0112aeb257167df4f8a13e866b335d509b94153b99bd77e1d36312ff260e18d26049673268318144d693e5 - languageName: node - linkType: hard - -"@graphql-codegen/typescript-resolvers@npm:3.2.1": - version: 3.2.1 - resolution: "@graphql-codegen/typescript-resolvers@npm:3.2.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.2.0" - "@graphql-codegen/typescript": "npm:^3.0.4" - "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" - "@graphql-tools/utils": "npm:^9.0.0" - auto-bind: "npm:~4.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/f87383d0f145b1b6cc8c7382f932bdbf6dd37f3f2526e1f17b73ee9f0bf9a6db8d7db04867712dd6f5839d5b967823ca3e534462335d8fd389b2bfda4aa0cb2e - languageName: node - linkType: hard - -"@graphql-codegen/typescript@npm:3.0.4, @graphql-codegen/typescript@npm:^3.0.4": - version: 3.0.4 - resolution: "@graphql-codegen/typescript@npm:3.0.4" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.2.0" - "@graphql-codegen/schema-ast": "npm:^3.0.1" - "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" - auto-bind: "npm:~4.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/6fbf7cfda19fe8b02ab34a948c0d2cf58b68a26f8c31c03cbb097ef2196c1071d986bba6660d5da516c36c9f184e8bbef014cf851bf706aba81138a423cda250 - languageName: node - linkType: hard - -"@graphql-codegen/typescript@npm:^4.0.1": - version: 4.0.1 - resolution: "@graphql-codegen/typescript@npm:4.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - "@graphql-codegen/schema-ast": "npm:^4.0.0" - "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" - auto-bind: "npm:~4.0.0" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: b3e5b0759e56c27c9eaed09d909eca32bfed25b29320c4e948fecfa3a354e7467885ff55082461a18e77c30445d3316585c403df861ed6f894305dfd613bb334 - languageName: node - linkType: hard - -"@graphql-codegen/visitor-plugin-common@npm:2.13.1": - version: 2.13.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^2.7.2" - "@graphql-tools/optimize": "npm:^1.3.0" - "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" - "@graphql-tools/utils": "npm:^8.8.0" - auto-bind: "npm:~4.0.0" - change-case-all: "npm:1.0.14" - dependency-graph: "npm:^0.11.0" - graphql-tag: "npm:^2.11.0" - parse-filepath: "npm:^1.0.2" - tslib: "npm:~2.4.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/9dfc4893599721eba988103d4456345f915cab75c9a754e78a21bd7d05c49b00a01f38ffb70355d758626da0396ae3bb6d44fc98d5c8f9f36a1b122aea0063c4 - languageName: node - linkType: hard - -"@graphql-codegen/visitor-plugin-common@npm:3.1.1": - version: 3.1.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:3.1.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^4.2.0" - "@graphql-tools/optimize": "npm:^1.3.0" - "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" - "@graphql-tools/utils": "npm:^9.0.0" - auto-bind: "npm:~4.0.0" - change-case-all: "npm:1.0.15" - dependency-graph: "npm:^0.11.0" - graphql-tag: "npm:^2.11.0" - parse-filepath: "npm:^1.0.2" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/4a393276f091de20cc3b8c3af07c772592328ed1c304835db533ab39dfeba4f7411040480404db21b677a85c055699cdd2992139a89456ec71492df6fa4ae9bf - languageName: node - linkType: hard - -"@graphql-codegen/visitor-plugin-common@npm:4.0.1, @graphql-codegen/visitor-plugin-common@npm:^4.0.1": - version: 4.0.1 - resolution: "@graphql-codegen/visitor-plugin-common@npm:4.0.1" - dependencies: - "@graphql-codegen/plugin-helpers": "npm:^5.0.0" - "@graphql-tools/optimize": "npm:^2.0.0" - "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" - "@graphql-tools/utils": "npm:^10.0.0" - auto-bind: "npm:~4.0.0" - change-case-all: "npm:1.0.15" - dependency-graph: "npm:^0.11.0" - graphql-tag: "npm:^2.11.0" - parse-filepath: "npm:^1.0.2" - tslib: "npm:~2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 704c08bf29b274a463c8a20381f280f3294c4e48764b8b99ae9fbca610e2b54ac5ee1cf0e1165962e75c49dd8d2237f743d56bd3f5e66c5a072bc77c22f49be6 - languageName: node - linkType: hard - -"@graphql-tools/apollo-engine-loader@npm:^7.3.6": - version: 7.3.23 - resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.23" - dependencies: - "@ardatan/sync-fetch": "npm:0.0.1" - "@graphql-tools/utils": "npm:9.2.0" - "@whatwg-node/fetch": "npm:^0.6.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/c815199495b15ff89074ea49dc8407b99d1f08949d1b806eccd21dab8c05fddb89c3003795cf316ff7cce49a0d90d02cedbb289da612d371dff9018831854e45 - languageName: node - linkType: hard - -"@graphql-tools/batch-execute@npm:8.5.16": - version: 8.5.16 - resolution: "@graphql-tools/batch-execute@npm:8.5.16" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - dataloader: "npm:2.1.0" - tslib: "npm:^2.4.0" - value-or-promise: "npm:1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/19951ed528ea1313804c75bc85467979eeea448772ac90590f0e5c053d937467ac4c343cbc611a3684ac0e2d668af047e00876652d3b2fd5b65819f524c5110d - languageName: node - linkType: hard - -"@graphql-tools/code-file-loader@npm:^7.3.17": - version: 7.3.23 - resolution: "@graphql-tools/code-file-loader@npm:7.3.23" - dependencies: - "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" - "@graphql-tools/utils": "npm:^9.2.1" - globby: "npm:^11.0.3" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 - languageName: node - linkType: hard - -"@graphql-tools/delegate@npm:9.0.25": - version: 9.0.25 - resolution: "@graphql-tools/delegate@npm:9.0.25" - dependencies: - "@graphql-tools/batch-execute": "npm:8.5.16" - "@graphql-tools/executor": "npm:0.0.13" - "@graphql-tools/schema": "npm:9.0.15" - "@graphql-tools/utils": "npm:9.2.0" - dataloader: "npm:2.1.0" - tslib: "npm:~2.5.0" - value-or-promise: "npm:1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/9a0671766a3a51ef3adebbe59a330455d9b07bf2fa8803cd0bceb7085657f7cde05d18775e295b97429b2ace55c198ef8dc56669ff40783482d43a38140ae2b1 - languageName: node - linkType: hard - -"@graphql-tools/documents@npm:1.0.0, @graphql-tools/documents@npm:^1.0.0": - version: 1.0.0 - resolution: "@graphql-tools/documents@npm:1.0.0" - dependencies: - lodash.sortby: "npm:^4.7.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 06b2cc9f8d0fb7e5c43e434cab35698655d6d65cfa94c301996d6b1354101837a8e709b26dc5251fa2c3216e8469fb0db76b4cd93ca015b61f75e9926db9d9ef - languageName: node - linkType: hard - -"@graphql-tools/executor-graphql-ws@npm:0.0.9": - version: 0.0.9 - resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.9" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - "@repeaterjs/repeater": "npm:3.0.4" - "@types/ws": "npm:^8.0.0" - graphql-ws: "npm:5.11.3" - isomorphic-ws: "npm:5.0.0" - tslib: "npm:^2.4.0" - ws: "npm:8.12.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/6dfb34c16386c1446df8f9f02a2da956ebba8dfe9166da3d86e3a7991aa6c5034e57c187e9e0dad7e5a5096cafa84bc1a8066c02d35563f8e596986f26bf1ec4 - languageName: node - linkType: hard - -"@graphql-tools/executor-http@npm:0.1.4": - version: 0.1.4 - resolution: "@graphql-tools/executor-http@npm:0.1.4" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - "@repeaterjs/repeater": "npm:3.0.4" - "@whatwg-node/fetch": "npm:0.6.5" - dset: "npm:3.1.2" - extract-files: "npm:^11.0.0" - meros: "npm:1.2.1" - tslib: "npm:^2.4.0" - value-or-promise: "npm:1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/7721f4f7c3015303fba4a711ae9f9cefecaf126987196ac6ca018adef56ffe63abb3ea09ee4c66a0fd1dccdedab44ed93b4a1fb5e0497dabdc74d48ecbef8c98 - languageName: node - linkType: hard - -"@graphql-tools/executor-legacy-ws@npm:0.0.7": - version: 0.0.7 - resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.7" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - "@types/ws": "npm:^8.0.0" - isomorphic-ws: "npm:5.0.0" - tslib: "npm:^2.4.0" - ws: "npm:8.12.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/d7d9ec68b1bc17c2cf86b1e8271b1f91491a27d7737fc081b02884f539e0d239d2e4b4c2bdfedd858990211028dfd724fbb2f4e6843e5d6cf5799b69fe2ced3d - languageName: node - linkType: hard - -"@graphql-tools/executor@npm:0.0.13": - version: 0.0.13 - resolution: "@graphql-tools/executor@npm:0.0.13" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - "@graphql-typed-document-node/core": "npm:3.1.1" - "@repeaterjs/repeater": "npm:3.0.4" - tslib: "npm:^2.4.0" - value-or-promise: "npm:1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/37303d86cb4641369061e2234be6dd33cd111e19a85e9e9b1467468a0c1546b908d5df4a139b797e47d2ba4c2dbf413940bd6ee4b340278d87f3ca824d0b34e7 - languageName: node - linkType: hard - -"@graphql-tools/executor@npm:^1.0.0": - version: 1.2.0 - resolution: "@graphql-tools/executor@npm:1.2.0" - dependencies: - "@graphql-tools/utils": "npm:^10.0.0" - "@graphql-typed-document-node/core": "npm:3.2.0" - "@repeaterjs/repeater": "npm:^3.0.4" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/98e11e93e015fbb464cfaa5f4e7a6a1f4890b241a7c631d2b679e4f3595206345f775674e9ecf9c3107e686f803b82f62beb9aa8e6ade37c6af0be29585afbc9 - languageName: node - linkType: hard - -"@graphql-tools/git-loader@npm:^7.2.13": - version: 7.2.17 - resolution: "@graphql-tools/git-loader@npm:7.2.17" - dependencies: - "@graphql-tools/graphql-tag-pluck": "npm:7.4.4" - "@graphql-tools/utils": "npm:9.2.0" - is-glob: "npm:4.0.3" - micromatch: "npm:^4.0.4" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/577623c67f434860143e2547b5cfad2a1f69d54445c9779574bd170f227e73e19b0d206d8e8c402a7f3f2dc1fb284a1a28dbbc86e110d4934bf1a11900a58d8a - languageName: node - linkType: hard - -"@graphql-tools/github-loader@npm:^7.3.20": - version: 7.3.24 - resolution: "@graphql-tools/github-loader@npm:7.3.24" - dependencies: - "@ardatan/sync-fetch": "npm:0.0.1" - "@graphql-tools/graphql-tag-pluck": "npm:7.4.4" - "@graphql-tools/utils": "npm:9.2.0" - "@whatwg-node/fetch": "npm:^0.6.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/78ea50373a0e3ac53cbd082fe10f7ae2d2733ce99e1297396c17ae7bc5b96329aa247202c553fc8d98c67719e6534a19bafb34019192798aa9bbfad0feacb260 - languageName: node - linkType: hard - -"@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": - version: 7.5.15 - resolution: "@graphql-tools/graphql-file-loader@npm:7.5.15" - dependencies: - "@graphql-tools/import": "npm:6.7.16" - "@graphql-tools/utils": "npm:9.2.0" - globby: "npm:^11.0.3" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/fe06e654b1f2fb7fdb11151dc230ef94c144e9a1d529fcb39b392cda1eb0b3e86d4c3f69be053eedc199db493b28e912f8521e11b751b5af4bc509ef565f4251 - languageName: node - linkType: hard - -"@graphql-tools/graphql-tag-pluck@npm:7.4.4": - version: 7.4.4 - resolution: "@graphql-tools/graphql-tag-pluck@npm:7.4.4" - dependencies: - "@babel/parser": "npm:^7.16.8" - "@babel/plugin-syntax-import-assertions": "npm:7.20.0" - "@babel/traverse": "npm:^7.16.8" - "@babel/types": "npm:^7.16.8" - "@graphql-tools/utils": "npm:9.2.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/c117c4bed392cf7f82523b730d124fcad5071c62a456747d8b77a67a78ea1e38495ad8e7c17641a73bc5ae44ba7ef320a7f3e3af7c8e2926247c79bf7df236fa - languageName: node - linkType: hard - -"@graphql-tools/graphql-tag-pluck@npm:7.5.2": - version: 7.5.2 - resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" - dependencies: - "@babel/parser": "npm:^7.16.8" - "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" - "@babel/traverse": "npm:^7.16.8" - "@babel/types": "npm:^7.16.8" - "@graphql-tools/utils": "npm:^9.2.1" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 - languageName: node - linkType: hard - -"@graphql-tools/import@npm:6.7.16": - version: 6.7.16 - resolution: "@graphql-tools/import@npm:6.7.16" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - resolve-from: "npm:5.0.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/c35e926e015a05e0a1e8a3ab94eae1a0591be33085e9b3422345d223454e6bf6b755819e86c9f87a2a874e29bbb27f438efa696876a028f5163535fe2ec76112 - languageName: node - linkType: hard - -"@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": - version: 7.4.16 - resolution: "@graphql-tools/json-file-loader@npm:7.4.16" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - globby: "npm:^11.0.3" - tslib: "npm:^2.4.0" - unixify: "npm:^1.0.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/0abdaeda9d4336047eb984539c1c3d2edaee751ac6b9a35380a79f8f036295c781b60751eed719547f3691b3a0fe774a8aedf07ed9c09fa610c33ee339c355d0 - languageName: node - linkType: hard - -"@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.8.0": - version: 7.8.11 - resolution: "@graphql-tools/load@npm:7.8.11" - dependencies: - "@graphql-tools/schema": "npm:9.0.15" - "@graphql-tools/utils": "npm:9.2.0" - p-limit: "npm:3.1.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/2279987e1a3dc551be0716a2bb604f7a5f3c8e513eb99890e795438beaaba6167b324535eac44f918f16fb1db4ba1f2118cf68c15d4f4f3e0714d17f4e8fab63 - languageName: node - linkType: hard - -"@graphql-tools/merge@npm:6.2.13": - version: 6.2.13 - resolution: "@graphql-tools/merge@npm:6.2.13" - dependencies: - "@graphql-tools/schema": "npm:^7.0.0" - "@graphql-tools/utils": "npm:^7.7.0" - tslib: "npm:~2.2.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 - checksum: 8c0/dd08faa898c2d519cbc99e65e1e705f0ac0d782095eca811aebb44e7f91aa800f89745efb1a962a3d27f4f2edbf59e5ad5c6f344735591217f3ab37258475f71 - languageName: node - linkType: hard - -"@graphql-tools/merge@npm:8.3.17, @graphql-tools/merge@npm:^8.2.6": - version: 8.3.17 - resolution: "@graphql-tools/merge@npm:8.3.17" - dependencies: - "@graphql-tools/utils": "npm:9.2.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/1f8d13feed66686cc9579ff274f2d35f51df20deaa72d60603cbc8b77521292d17f01d0d17c5e8598951746dca525c241d5c454566da206cefe4c80438bb0db5 - languageName: node - linkType: hard - -"@graphql-tools/merge@npm:9.0.1, @graphql-tools/merge@npm:^9.0.1": - version: 9.0.1 - resolution: "@graphql-tools/merge@npm:9.0.1" - dependencies: - "@graphql-tools/utils": "npm:^10.0.10" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: cbfcb2c10490a11417991e8b61b8df2eba73a2c576e57cbf2d928902030d4391122536b9442bf042609ec24376b79b8bc6d9117e137dd8db2255ed90613acbc7 - languageName: node - linkType: hard - -"@graphql-tools/merge@npm:^9.0.0": - version: 9.0.0 - resolution: "@graphql-tools/merge@npm:9.0.0" - dependencies: - "@graphql-tools/utils": "npm:^10.0.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/10376dbf1b64a3659dfa01d63bdafbb8addac829c0e772fc4596df4b46f249bee179692cc3f06b1157bdc3dccfe3a46caf5499786cce203eb0f7e124c88a5648 - languageName: node - linkType: hard - -"@graphql-tools/optimize@npm:^1.3.0": - version: 1.3.1 - resolution: "@graphql-tools/optimize@npm:1.3.1" - dependencies: - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/24cb7e272aed2a03ce4f01928e6056df8c2dfa04b9e5a61e9ee534e46d1bd29a625ec0b3bea686a5c4c9424ccb8a1b2543860de1ae1892db69d4214286f11c06 - languageName: node - linkType: hard - -"@graphql-tools/optimize@npm:^2.0.0": - version: 2.0.0 - resolution: "@graphql-tools/optimize@npm:2.0.0" - dependencies: - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: db4ac0a2b0c89126ee7746e5615ae003d8665b684b17fb35956a7633fefb0e329a047f32a975cfbdf83f0f5ac4ae09fe469834fd71fdd49d8ed932fda79012fd - languageName: node - linkType: hard - -"@graphql-tools/prisma-loader@npm:^7.2.49": - version: 7.2.60 - resolution: "@graphql-tools/prisma-loader@npm:7.2.60" - dependencies: - "@graphql-tools/url-loader": "npm:7.17.9" - "@graphql-tools/utils": "npm:9.2.0" - "@types/js-yaml": "npm:^4.0.0" - "@types/json-stable-stringify": "npm:^1.0.32" - "@types/jsonwebtoken": "npm:^9.0.0" - chalk: "npm:^4.1.0" - debug: "npm:^4.3.1" - dotenv: "npm:^16.0.0" - graphql-request: "npm:^5.0.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" - isomorphic-fetch: "npm:^3.0.0" - js-yaml: "npm:^4.0.0" - json-stable-stringify: "npm:^1.0.1" - jsonwebtoken: "npm:^9.0.0" - lodash: "npm:^4.17.20" - scuid: "npm:^1.1.0" - tslib: "npm:^2.4.0" - yaml-ast-parser: "npm:^0.0.43" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/3d11248a128ccac88380ec82ac9c8c14cc3baf6ade0f28e5dc63715d02914edfc3db32c0b57bbc3aee2ce0745b9ae5024dcf5c836ae7af5cebf86b43ce6f422c - languageName: node - linkType: hard - -"@graphql-tools/relay-operation-optimizer@npm:^6.5.0": - version: 6.5.16 - resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.16" - dependencies: - "@ardatan/relay-compiler": "npm:12.0.0" - "@graphql-tools/utils": "npm:9.2.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/c6810cab695c4294a25317646eadf3417c37fda5ab7133f3650f905d2626bc857c5c4b95d58c37209331c13d315b37a10f1cd7c4b44c592ab14d933417340e30 - languageName: node - linkType: hard - -"@graphql-tools/relay-operation-optimizer@npm:^7.0.0": - version: 7.0.0 - resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.0" - dependencies: - "@ardatan/relay-compiler": "npm:12.0.0" - "@graphql-tools/utils": "npm:^10.0.0" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 88f483d7fdd68f137f5b5a9e0cb8c4f312cebcc8366155570f08cb8c3f5d805e0db5e780ff8551600b7dfb8840958ff9ec3c5cd5121fd8be01d216ff4f4bdb56 - languageName: node - linkType: hard - -"@graphql-tools/schema@npm:10.0.2": - version: 10.0.2 - resolution: "@graphql-tools/schema@npm:10.0.2" - dependencies: - "@graphql-tools/merge": "npm:^9.0.1" - "@graphql-tools/utils": "npm:^10.0.10" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3d71117c8d8ed491aa5b988bcdfcc1a7ca8cea8638b37083af2665a0dbb95e1255961a8a43658538ad33b83d621812886a4626ad7a5333d7d9e6c62304b52cb2 - languageName: node - linkType: hard - -"@graphql-tools/schema@npm:9.0.15, @graphql-tools/schema@npm:^9.0.0": - version: 9.0.15 - resolution: "@graphql-tools/schema@npm:9.0.15" - dependencies: - "@graphql-tools/merge": "npm:8.3.17" - "@graphql-tools/utils": "npm:9.2.0" - tslib: "npm:^2.4.0" - value-or-promise: "npm:1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/d30975b2ba1a4e46768b3a85f648857bc49cd4e73210dc2423a815760fe1d91988a3b54f0f4fba56ab40be941f3632ba295c2295b24a7b091d52905cc0a76847 - languageName: node - linkType: hard - -"@graphql-tools/schema@npm:^10.0.0": - version: 10.0.0 - resolution: "@graphql-tools/schema@npm:10.0.0" - dependencies: - "@graphql-tools/merge": "npm:^9.0.0" - "@graphql-tools/utils": "npm:^10.0.0" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/b746c69cefb3b89fad13d56f0abb9e764efe1569836ea9ae5e5c510a6f0bce6e08f324b28aebcb5b2c11ba2ea1c308f18c204e322a188e254e2c7e426d3ccecb - languageName: node - linkType: hard - -"@graphql-tools/schema@npm:^7.0.0": - version: 7.1.5 - resolution: "@graphql-tools/schema@npm:7.1.5" - dependencies: - "@graphql-tools/utils": "npm:^7.1.2" - tslib: "npm:~2.2.0" - value-or-promise: "npm:1.0.6" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 - checksum: 8c0/af36acdc88ee8d1dae872a5e562aaaeecefea12a8197692b6c1b41a5923e42326227b77b97c32cb50fed451d9e35a25b409551c6f1835abe56c633f7edacd5cb - languageName: node - linkType: hard - -"@graphql-tools/url-loader@npm:7.17.9, @graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.9.7": - version: 7.17.9 - resolution: "@graphql-tools/url-loader@npm:7.17.9" - dependencies: - "@ardatan/sync-fetch": "npm:0.0.1" - "@graphql-tools/delegate": "npm:9.0.25" - "@graphql-tools/executor-graphql-ws": "npm:0.0.9" - "@graphql-tools/executor-http": "npm:0.1.4" - "@graphql-tools/executor-legacy-ws": "npm:0.0.7" - "@graphql-tools/utils": "npm:9.2.0" - "@graphql-tools/wrap": "npm:9.3.4" - "@types/ws": "npm:^8.0.0" - "@whatwg-node/fetch": "npm:^0.6.0" - isomorphic-ws: "npm:5.0.0" - tslib: "npm:^2.4.0" - value-or-promise: "npm:^1.0.11" - ws: "npm:8.12.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/275eeda53ea2f16176215405a9c69fe042fb5a408d30f3a331c215e8a72f79dcc40dc9d7f500927a1167e6b3c4390b1a07ace03be40e30195efed294c685e7cf - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:10.0.11": - version: 10.0.11 - resolution: "@graphql-tools/utils@npm:10.0.11" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - cross-inspect: "npm:1.0.0" - dset: "npm:^3.1.2" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 61c464541fe0b17d26cec83f93b5f4a3af352e10c22878c5449fbea5f22c68f1e0c78ddc0a93f480da42dba80fb41ebfe99920915c389ac132a0217ef808d2bc - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:9.2.0, @graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.1.1": - version: 9.2.0 - resolution: "@graphql-tools/utils@npm:9.2.0" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/cd1f9887c96313ef7f6cc556bcb82d3b8b026da92739019f5a278b9b4a9e66aff8c0886d56177cb4d57b96b93cea2398deaf72590cf6590ed448ef5e493bfe25 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^10.0.0": - version: 10.0.5 - resolution: "@graphql-tools/utils@npm:10.0.5" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - dset: "npm:^3.1.2" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/3a8d306df62b530dd6f65fb78f483dfc816c212c7c78d2c84148864b3330ed7b9dc42e42047665858840d12d061b98a40b97884e4cfe8218c5b5086b0604dd91 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^10.0.10": - version: 10.0.12 - resolution: "@graphql-tools/utils@npm:10.0.12" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - cross-inspect: "npm:1.0.0" - dset: "npm:^3.1.2" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 875a79f0a926208751e8847a3428cdf0bf0bb7959bf61a87140efbe234c9e57dd7640b6c34303cdff3a2a30e271293e043ed257e7efea6dd53c4cd129934ca82 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^7.1.2, @graphql-tools/utils@npm:^7.7.0": - version: 7.10.0 - resolution: "@graphql-tools/utils@npm:7.10.0" - dependencies: - "@ardatan/aggregate-error": "npm:0.0.6" - camel-case: "npm:4.1.2" - tslib: "npm:~2.2.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 - checksum: 8c0/e8b29bf3ff63c9ca123daa3785422189177ec0273331bb739a422d3055b5b3d0e956d357988e46b4b06e74d727c1ff228fe467d4e956a72ca8b6e292d0ce0f02 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^8.5.2, @graphql-tools/utils@npm:^8.8.0": - version: 8.13.1 - resolution: "@graphql-tools/utils@npm:8.13.1" - dependencies: - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/f9bab1370aa91e706abec4c8ea980e15293cb78bd4effba53ad2365dc39d81148db7667b3ef89b35f0a0b0ad58081ffdac4264b7125c69fa8393590ae5025745 - languageName: node - linkType: hard - -"@graphql-tools/utils@npm:^9.2.1": - version: 9.2.1 - resolution: "@graphql-tools/utils@npm:9.2.1" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - tslib: "npm:^2.4.0" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 - languageName: node - linkType: hard - -"@graphql-tools/wrap@npm:9.3.4": - version: 9.3.4 - resolution: "@graphql-tools/wrap@npm:9.3.4" - dependencies: - "@graphql-tools/delegate": "npm:9.0.25" - "@graphql-tools/schema": "npm:9.0.15" - "@graphql-tools/utils": "npm:9.2.0" - tslib: "npm:^2.4.0" - value-or-promise: "npm:1.0.12" - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/aacce17a212edee6bf02b833d8c712eefad2d66db55f6549feef26a8a2cc5fc2ef6555a520f29176a9e2c8a2b0997c53c36e4f97abad0aa8d26183aefef98e64 - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:3.1.1, @graphql-typed-document-node/core@npm:^3.1.1": - version: 3.1.1 - resolution: "@graphql-typed-document-node/core@npm:3.1.1" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/c186e5adceb0dfdaa770856d2f17c831a474f5927d79f984326ecb3d8680ba3c1ee2314f7def1d863692cd9cbe4dffc8bb52fc74ee0aa9b31e9491f24ef59f90 - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:3.2.0": - version: 3.2.0 - resolution: "@graphql-typed-document-node/core@npm:3.2.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c - languageName: node - linkType: hard - -"@graphql-typed-document-node/core@npm:^3.0.0": - version: 3.1.0 - resolution: "@graphql-typed-document-node/core@npm:3.1.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/29de073789cb503072bc9df0f987f575ab6c722fd309c97954c0b330259df10ea8d3c885afbb04e43f0ed1ded0243a1398d713f12d63bdcf3d2a0a5501e43229 - languageName: node - linkType: hard - -"@graphql-yoga/logger@npm:^1.0.0": - version: 1.0.0 - resolution: "@graphql-yoga/logger@npm:1.0.0" - dependencies: - tslib: "npm:^2.5.2" - checksum: 8c0/b43a7c86faad2447a696b2c4f46e9219cc1ae95484857c8f54e5ad4ba7d984a3f37149c45320659ffc89da2aefdb44ad2a68a5b57acb88d3aad86caad2a8bcfe - languageName: node - linkType: hard - -"@graphql-yoga/plugin-defer-stream@npm:2.0.5": - version: 2.0.5 - resolution: "@graphql-yoga/plugin-defer-stream@npm:2.0.5" - dependencies: - "@graphql-tools/utils": "npm:^10.0.0" - peerDependencies: - graphql: ^15.2.0 || ^16.0.0 - graphql-yoga: ^4.0.5 - checksum: 3a0075b8c592f86c6deb54a48c7dceb2ebeffb1271197db13ffa0b2d336bc155fa0b364a4cb1bfb51581bd7c0642911084222beecbf9af8c67b2ae9ffcf4888f - languageName: node - linkType: hard - -"@graphql-yoga/plugin-graphql-sse@npm:2.0.5": - version: 2.0.5 - resolution: "@graphql-yoga/plugin-graphql-sse@npm:2.0.5" - dependencies: - graphql-sse: "npm:^2.0.0" - peerDependencies: - graphql: ^15.2.0 || ^16.0.0 - graphql-yoga: ^4.0.5 - checksum: 5da378feeef61c134ff7a95dfe8d8cab38df33a64218209e4ab918310fef853a975f354a2d23174fab506f47153a35fd6fa51f2204b427070680011a8b9d5cc9 - languageName: node - linkType: hard - -"@graphql-yoga/plugin-persisted-operations@npm:2.0.5": - version: 2.0.5 - resolution: "@graphql-yoga/plugin-persisted-operations@npm:2.0.5" - peerDependencies: - "@graphql-tools/utils": ^10.0.0 - graphql: ^15.2.0 || ^16.0.0 - graphql-yoga: ^4.0.5 - checksum: af87ff6a0ff2088bd25d1fd6dabea80c31153533fdda6fc3342a301b3106e49d19bc70e2486d2254eab978054b5a9c89b36cfb7b643fc9e0000bced9c03a1927 - languageName: node - linkType: hard - -"@graphql-yoga/redis-event-target@npm:2.0.0": - version: 2.0.0 - resolution: "@graphql-yoga/redis-event-target@npm:2.0.0" - dependencies: - "@graphql-yoga/typed-event-target": "npm:^2.0.0" - "@whatwg-node/events": "npm:^0.1.0" - peerDependencies: - ioredis: ^5.0.6 - checksum: 8c0/e7c015be8eb122648ed17a82d2b87171b91d66673b6fbbf1f5f66ec55ca59ef84efaf739f1d90b4024b2164091475126db16fc1ac8b2316a0e67a91208cc85b2 - languageName: node - linkType: hard - -"@graphql-yoga/subscription@npm:4.0.0, @graphql-yoga/subscription@npm:^4.0.0": - version: 4.0.0 - resolution: "@graphql-yoga/subscription@npm:4.0.0" - dependencies: - "@graphql-yoga/typed-event-target": "npm:^2.0.0" - "@repeaterjs/repeater": "npm:^3.0.4" - "@whatwg-node/events": "npm:^0.1.0" - tslib: "npm:^2.5.2" - checksum: 8c0/2fb1c8e8b46b00b4bfaa214cc5efb309e4f1ae156b7116b32c61b28238bf99c852630cf287ebb0ec9bcda1070e88aa5693f59e2bdd9666db2cc5e7f54067bb14 - languageName: node - linkType: hard - -"@graphql-yoga/typed-event-target@npm:^2.0.0": - version: 2.0.0 - resolution: "@graphql-yoga/typed-event-target@npm:2.0.0" - dependencies: - "@repeaterjs/repeater": "npm:^3.0.4" - tslib: "npm:^2.5.2" - checksum: 8c0/41d9c84f4935151d78a5c07db041d3a96f6ac62c10e71ea77f76b79fc00835dd042b5d91ef6cf67a7e766cd9718fa8ee301ee7b3a39d445c7618b3a23988df77 - languageName: node - linkType: hard - -"@hapi/bourne@npm:^2.0.0": - version: 2.0.0 - resolution: "@hapi/bourne@npm:2.0.0" - checksum: 8c0/ca08a2b032c8038a48863ced3cd67bb8a7daeef7712abaeebd2d0cdd9998036a9b86cc1d75fb00e12482e7a699ccc1fc18c784c100f1e3750d0583ab1971a354 - languageName: node - linkType: hard - -"@headlessui/react@npm:1.7.15": - version: 1.7.15 - resolution: "@headlessui/react@npm:1.7.15" - dependencies: - client-only: "npm:^0.0.1" - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - checksum: d93fd4be3d134467fe2c904e65ff28ec8218a78a3aa590bdc52a097ed9092bae200b6bf0ed79f12cd9850a1744dd95015fbc08b5b71f17bac7d63d2f6197a7b8 - languageName: node - linkType: hard - -"@headlessui/react@npm:^1.7.14, @headlessui/react@npm:^1.7.15": - version: 1.7.17 - resolution: "@headlessui/react@npm:1.7.17" - dependencies: - client-only: "npm:^0.0.1" - peerDependencies: - react: ^16 || ^17 || ^18 - react-dom: ^16 || ^17 || ^18 - checksum: a17d819e8c7aca764479eba1bd1bfe28d9f99ce4c16a296986f902ee040e57e242bd21d525570118c318cf1f013c9b56c6568980686774ca1881e82ca5cdeebe - languageName: node - linkType: hard - -"@headlessui/tailwindcss@npm:^0.1.3": - version: 0.1.3 - resolution: "@headlessui/tailwindcss@npm:0.1.3" - peerDependencies: - tailwindcss: ^3.0 - checksum: 55e1d8528fe995d13afafdb07d86f11dd367d6c7ba1a9780872495a8392170f2aa7c908be450a4c533b33b840849ed6399f6ff23243ea7df6eb4651340855609 - languageName: node - linkType: hard - -"@heroicons/react@npm:2.0.18": - version: 2.0.18 - resolution: "@heroicons/react@npm:2.0.18" - peerDependencies: - react: ">= 16" - checksum: 3cef7f67c65f8b00dc4f23788e468e661a24bd805f80e3b5514a986d69c91ef05407cf50078691573eced47147db87a9bd00cc165e4fecd2a9657cbaf3eaafb5 - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.11.13": - version: 0.11.13 - resolution: "@humanwhocodes/config-array@npm:0.11.13" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.1" - debug: "npm:^4.1.1" - minimatch: "npm:^3.0.5" - checksum: d76ca802d853366094d0e98ff0d0994117fc8eff96649cd357b15e469e428228f597cd2e929d54ab089051684949955f16ee905bb19f7b2f0446fb377157be7a - languageName: node - linkType: hard - -"@humanwhocodes/config-array@npm:^0.5.0": - version: 0.5.0 - resolution: "@humanwhocodes/config-array@npm:0.5.0" - dependencies: - "@humanwhocodes/object-schema": "npm:^1.2.0" - debug: "npm:^4.1.1" - minimatch: "npm:^3.0.4" - checksum: 8c0/217fac9e03492361825a2bf761d4bb7ec6d10002a10f7314142245eb13ac9d123523d24d5619c3c4159af215c7b3e583ed386108e227014bef4efbf9caca8ccc - languageName: node - linkType: hard - -"@humanwhocodes/module-importer@npm:^1.0.1": - version: 1.0.1 - resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 8c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^1.2.0": - version: 1.2.1 - resolution: "@humanwhocodes/object-schema@npm:1.2.1" - checksum: 8c0/c3c35fdb70c04a569278351c75553e293ae339684ed75895edc79facc7276e351115786946658d78133130c0cca80e57e2203bc07f8fa7fe7980300e8deef7db - languageName: node - linkType: hard - -"@humanwhocodes/object-schema@npm:^2.0.1": - version: 2.0.1 - resolution: "@humanwhocodes/object-schema@npm:2.0.1" - checksum: 9dba24e59fdb4041829d92b693aacb778add3b6f612aaa9c0774f3b650c11a378cc64f042a59da85c11dae33df456580a3c36837b953541aed6ff94294f97fac - languageName: node - linkType: hard - -"@iarna/toml@npm:2.2.5": - version: 2.2.5 - resolution: "@iarna/toml@npm:2.2.5" - checksum: 8c0/d095381ad4554aca233b7cf5a91f243ef619e5e15efd3157bc640feac320545450d14b394aebbf6f02a2047437ced778ae598d5879a995441ab7b6c0b2c2f201 - languageName: node - linkType: hard - -"@ioredis/commands@npm:^1.1.1": - version: 1.2.0 - resolution: "@ioredis/commands@npm:1.2.0" - checksum: 8c0/a5d3c29dd84d8a28b7c67a441ac1715cbd7337a7b88649c0f17c345d89aa218578d2b360760017c48149ef8a70f44b051af9ac0921a0622c2b479614c4f65b36 - languageName: node - linkType: hard - -"@isaacs/cliui@npm:^8.0.2": - version: 8.0.2 - resolution: "@isaacs/cliui@npm:8.0.2" - dependencies: - string-width: "npm:^5.1.2" - string-width-cjs: "npm:string-width@^4.2.0" - strip-ansi: "npm:^7.0.1" - strip-ansi-cjs: "npm:strip-ansi@^6.0.1" - wrap-ansi: "npm:^8.1.0" - wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: 8c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e - languageName: node - linkType: hard - -"@istanbuljs/load-nyc-config@npm:^1.0.0": - version: 1.1.0 - resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" - dependencies: - camelcase: "npm:^5.3.1" - find-up: "npm:^4.1.0" - get-package-type: "npm:^0.1.0" - js-yaml: "npm:^3.13.1" - resolve-from: "npm:^5.0.0" - checksum: 8c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 - languageName: node - linkType: hard - -"@istanbuljs/schema@npm:^0.1.2": - version: 0.1.3 - resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 8c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a - languageName: node - linkType: hard - -"@jest/console@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/console@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - slash: "npm:^3.0.0" - checksum: 8c0/e85a68b1ef49e5ecadb0055812c2493a92592b5206c26e78ce6b21869aff2847e4c808beae1dd353738c24fd51fa9d5bf135ced62931844a5d57f9ff4f40743a - languageName: node - linkType: hard - -"@jest/console@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/console@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^27.5.1" - jest-util: "npm:^27.5.1" - slash: "npm:^3.0.0" - checksum: 8c0/6cb46d721698aaeb0d57ace967f7a36bbefc20719d420ea8bf8ec8adf9994cb1ec11a93bbd9b1514c12a19b5dd99dcbbd1d3e22fd8bea8e41e845055b03ac18d - languageName: node - linkType: hard - -"@jest/console@npm:^29.4.1": - version: 29.4.1 - resolution: "@jest/console@npm:29.4.1" - dependencies: - "@jest/types": "npm:^29.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.4.1" - jest-util: "npm:^29.4.1" - slash: "npm:^3.0.0" - checksum: 8c0/c49ccf795322ce7a5c312b0fc6edc8ab2a71118de844c1496dd8d0381267223091908d14e0806defd01457ba379ccadb2c0da18f2b7d95fa063e679eb8656e59 - languageName: node - linkType: hard - -"@jest/console@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/console@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c - languageName: node - linkType: hard - -"@jest/core@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/core@npm:26.6.3" - dependencies: - "@jest/console": "npm:^26.6.2" - "@jest/reporters": "npm:^26.6.2" - "@jest/test-result": "npm:^26.6.2" - "@jest/transform": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.4" - jest-changed-files: "npm:^26.6.2" - jest-config: "npm:^26.6.3" - jest-haste-map: "npm:^26.6.2" - jest-message-util: "npm:^26.6.2" - jest-regex-util: "npm:^26.0.0" - jest-resolve: "npm:^26.6.2" - jest-resolve-dependencies: "npm:^26.6.3" - jest-runner: "npm:^26.6.3" - jest-runtime: "npm:^26.6.3" - jest-snapshot: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - jest-validate: "npm:^26.6.2" - jest-watcher: "npm:^26.6.2" - micromatch: "npm:^4.0.2" - p-each-series: "npm:^2.1.0" - rimraf: "npm:^3.0.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/3a4816997f1e206e0dfc6ad236f53b8a554a9b705aa78a62bc754697b8adf8314187a5ac8cfbd31ee6a38feec1412dc17c85cefe39e6d9e21f5e7e2697452e7e - languageName: node - linkType: hard - -"@jest/core@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/core@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/reporters": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-changed-files: "npm:^29.7.0" - jest-config: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-resolve-dependencies: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: 934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 - languageName: node - linkType: hard - -"@jest/environment@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/environment@npm:26.6.2" - dependencies: - "@jest/fake-timers": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - jest-mock: "npm:^26.6.2" - checksum: 8c0/b489afb2fa9bbde360f222bc905abd9abd77ae5802b16ca7a34d018405ad7df57a506c01efae8ff8b566c211314ec74b3f37a1cb850623e15eb1e6d020582197 - languageName: node - linkType: hard - -"@jest/environment@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/environment@npm:29.7.0" - dependencies: - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - checksum: c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.4.1": - version: 29.4.1 - resolution: "@jest/expect-utils@npm:29.4.1" - dependencies: - jest-get-type: "npm:^29.2.0" - checksum: 8c0/db07d7fb336ddfecc6c6e9a19df1882a7f0873ac93a1f8bf153d0b262d1f240f36eb890a2e2582437b7905bbfb1819f25455e8eb1fb90fc159d9e55405aba4f3 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect-utils@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - checksum: 60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a - languageName: node - linkType: hard - -"@jest/expect@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/expect@npm:29.7.0" - dependencies: - expect: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - checksum: b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/fake-timers@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - "@sinonjs/fake-timers": "npm:^6.0.1" - "@types/node": "npm:*" - jest-message-util: "npm:^26.6.2" - jest-mock: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - checksum: 8c0/861b033ead8c749f0fecffb84cbe88603291d9db66129494d0059dee101616a2aa646fc32c8cab468826eeb32647d2b0b4f72869f048163cb3406ddd2902ece0 - languageName: node - linkType: hard - -"@jest/fake-timers@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/fake-timers@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@sinonjs/fake-timers": "npm:^10.0.2" - "@types/node": "npm:*" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c - languageName: node - linkType: hard - -"@jest/globals@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/globals@npm:26.6.2" - dependencies: - "@jest/environment": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - expect: "npm:^26.6.2" - checksum: 8c0/6516baa19339a62c8f5eeb2ef3871bfa5bd5645016f1eb87dbe52a37658e7b33b836a1325ba40db250df5d06c08dd1cb1532fbfac5712f4041561525b59bb03f - languageName: node - linkType: hard - -"@jest/globals@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/globals@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - jest-mock: "npm:^29.7.0" - checksum: a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea - languageName: node - linkType: hard - -"@jest/reporters@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/reporters@npm:26.6.2" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^26.6.2" - "@jest/test-result": "npm:^26.6.2" - "@jest/transform": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.2" - graceful-fs: "npm:^4.2.4" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^4.0.3" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.0.2" - jest-haste-map: "npm:^26.6.2" - jest-resolve: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - jest-worker: "npm:^26.6.2" - node-notifier: "npm:^8.0.0" - slash: "npm:^3.0.0" - source-map: "npm:^0.6.0" - string-length: "npm:^4.0.1" - terminal-link: "npm:^2.0.0" - v8-to-istanbul: "npm:^7.0.0" - dependenciesMeta: - node-notifier: - optional: true - checksum: 8c0/311f8c467fc2e810ca884cd9ef032c6c58a88c4c54b41a7c85ae6da5a27b3d4c7042938f62611cf19a336a0d487976b348b8f3414cced2802b815d81bf7c1d5f - languageName: node - linkType: hard - -"@jest/reporters@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/reporters@npm:29.7.0" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@jest/console": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-instrument: "npm:^6.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-lib-source-maps: "npm:^4.0.0" - istanbul-reports: "npm:^3.1.3" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.1" - strip-ansi: "npm:^6.0.0" - v8-to-istanbul: "npm:^9.0.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - checksum: a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.4.0": - version: 29.4.0 - resolution: "@jest/schemas@npm:29.4.0" - dependencies: - "@sinclair/typebox": "npm:^0.25.16" - checksum: 8c0/c6c1f359c891f443f273117efb33ee3d257fb79ed6bcf75215922272e16e027270d5700144594259c360f08a37503e6537d19b8e95d8736f25a5394f64bd39f0 - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.4.3": - version: 29.4.3 - resolution: "@jest/schemas@npm:29.4.3" - dependencies: - "@sinclair/typebox": "npm:^0.25.16" - checksum: 8c0/8a35967cec454d1de2d5a58ab99b49a0ff798d1dce2d817bdd9960bb2f070493f767fbbf419e6a263860d3b1ef1e50ab609a76ae21b5f8c09bb0859e8f51a098 - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/schemas@npm:29.6.3" - dependencies: - "@sinclair/typebox": "npm:^0.27.8" - checksum: 8c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be - languageName: node - linkType: hard - -"@jest/source-map@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/source-map@npm:26.6.2" - dependencies: - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.4" - source-map: "npm:^0.6.0" - checksum: 8c0/fad0b35abf71b9e35b63d4ea7ddafb227a176fa44b84b8efc749ec3911991203f4a58019dd403af8380de4de752f0d40c9fe4c69f76a0866d266e964a02042cb - languageName: node - linkType: hard - -"@jest/source-map@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/source-map@npm:29.6.3" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.18" - callsites: "npm:^3.0.0" - graceful-fs: "npm:^4.2.9" - checksum: 8c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 - languageName: node - linkType: hard - -"@jest/test-result@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/test-result@npm:26.6.2" - dependencies: - "@jest/console": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 8c0/4b6f480ebf917f2f6beb5ebefc1c6dedaa768030706f184be9a545e3ad457bde802bae78c50e06f68310084921fb048e030a8eca2adfd7df9f46a6663abb0b98 - languageName: node - linkType: hard - -"@jest/test-result@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-result@npm:27.5.1" - dependencies: - "@jest/console": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 8c0/4fb8cbefda8f645c57e2fc0d0df169b0bf5f6cb456b42dc09f5138595b736e800d8d83e3fd36a47fd801a2359988c841792d7fc46784bec908c88b39b6581749 - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.4.1": - version: 29.4.1 - resolution: "@jest/test-result@npm:29.4.1" - dependencies: - "@jest/console": "npm:^29.4.1" - "@jest/types": "npm:^29.4.1" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 8c0/9f6bf0b3b79285bc6f8c1055f0a4ce4ec94373bf06309535d75c258c4ce0a42f83633955c96ebe05139b75f6afefd34d5a8d47e52d1da706ee5e35fd3d15abdd - languageName: node - linkType: hard - -"@jest/test-result@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-result@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - collect-v8-coverage: "npm:^1.0.0" - checksum: 7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^26.6.3": - version: 26.6.3 - resolution: "@jest/test-sequencer@npm:26.6.3" - dependencies: - "@jest/test-result": "npm:^26.6.2" - graceful-fs: "npm:^4.2.4" - jest-haste-map: "npm:^26.6.2" - jest-runner: "npm:^26.6.3" - jest-runtime: "npm:^26.6.3" - checksum: 8c0/670cf1161a22716f8396baf2a2d9d1741ad169f8a0115f6b0c4f88f2cfc29fec9179bbcfd87f579a46a69b38af47abd5656fb7ded5face06c3960d8e1cdbbdae - languageName: node - linkType: hard - -"@jest/test-sequencer@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/test-sequencer@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - slash: "npm:^3.0.0" - checksum: 593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b - languageName: node - linkType: hard - -"@jest/transform@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/transform@npm:26.6.2" - dependencies: - "@babel/core": "npm:^7.1.0" - "@jest/types": "npm:^26.6.2" - babel-plugin-istanbul: "npm:^6.0.0" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^1.4.0" - fast-json-stable-stringify: "npm:^2.0.0" - graceful-fs: "npm:^4.2.4" - jest-haste-map: "npm:^26.6.2" - jest-regex-util: "npm:^26.0.0" - jest-util: "npm:^26.6.2" - micromatch: "npm:^4.0.2" - pirates: "npm:^4.0.1" - slash: "npm:^3.0.0" - source-map: "npm:^0.6.1" - write-file-atomic: "npm:^3.0.0" - checksum: 8c0/1a1d636528d9b122b87b870633763c67f131533fce61e5db536dfbbea0bbfe8fe130daededb686ccc230389473a2b8ece5d0e1eaf380066d8902bde48579de31 - languageName: node - linkType: hard - -"@jest/transform@npm:^29.7.0": - version: 29.7.0 - resolution: "@jest/transform@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/types": "npm:^29.6.3" - "@jridgewell/trace-mapping": "npm:^0.3.18" - babel-plugin-istanbul: "npm:^6.1.1" - chalk: "npm:^4.0.0" - convert-source-map: "npm:^2.0.0" - fast-json-stable-stringify: "npm:^2.1.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - pirates: "npm:^4.0.4" - slash: "npm:^3.0.0" - write-file-atomic: "npm:^4.0.2" - checksum: 7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 - languageName: node - linkType: hard - -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" - dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^15.0.0" - chalk: "npm:^4.0.0" - checksum: 8c0/5b9b957f38a002895eb04bbb8c3dda6fccce8e2551f3f44b02f1f43063a78e8bedce73cd4330b53ede00ae005de5cd805982fbb2ec6ab9feacf96344240d5db2 - languageName: node - linkType: hard - -"@jest/types@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/types@npm:27.5.1" - dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^16.0.0" - chalk: "npm:^4.0.0" - checksum: 8c0/4598b302398db0eb77168b75a6c58148ea02cc9b9f21c5d1bbe985c1c9257110a5653cf7b901c3cab87fba231e3fed83633687f1c0903b4bc6939ab2a8452504 - languageName: node - linkType: hard - -"@jest/types@npm:^29.4.1": - version: 29.4.1 - resolution: "@jest/types@npm:29.4.1" - dependencies: - "@jest/schemas": "npm:^29.4.0" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 8c0/14f48580027aa285dbff7c1ac94228ca6ec3dee0ebb78c1bcddae17c4b04965460467c7b559f7d28d82dcdcd58059099b8377b84bc7187e2af1b5cc8f5f6e189 - languageName: node - linkType: hard - -"@jest/types@npm:^29.5.0": - version: 29.5.0 - resolution: "@jest/types@npm:29.5.0" - dependencies: - "@jest/schemas": "npm:^29.4.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 8c0/f1cccd2e9b00a985bfdac03517f906cdf7a481be3606c335f8ec08a7272b7cf700b23484ce323a912b374defb90d3ab88c643cf2a2f47635c1c4feacfa1c1b2d - languageName: node - linkType: hard - -"@jest/types@npm:^29.6.3": - version: 29.6.3 - resolution: "@jest/types@npm:29.6.3" - dependencies: - "@jest/schemas": "npm:^29.6.3" - "@types/istanbul-lib-coverage": "npm:^2.0.0" - "@types/istanbul-reports": "npm:^3.0.0" - "@types/node": "npm:*" - "@types/yargs": "npm:^17.0.8" - chalk: "npm:^4.0.0" - checksum: 8c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 - languageName: node - linkType: hard - -"@josephg/resolvable@npm:^1.0.0": - version: 1.0.1 - resolution: "@josephg/resolvable@npm:1.0.1" - checksum: 8c0/94f4ff9170728b35b56bd942473ae2fed55b41a9ef6bd6a004219c59bd246afeee43214b825558eb6ba4047c38001548197cf669025443731e09c256e88519e5 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.1.0": - version: 0.1.1 - resolution: "@jridgewell/gen-mapping@npm:0.1.1" - dependencies: - "@jridgewell/set-array": "npm:^1.0.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 8c0/3d784d87aee604bc4d48d3d9e547e0466d9f4a432cd9b3a4f3e55d104313bf3945e7e970cd5fa767bc145df11f1d568a01ab6659696be41f0ed2a817f3b583a3 - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/gen-mapping@npm:0.3.2" - dependencies: - "@jridgewell/set-array": "npm:^1.0.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 8c0/82685c8735c63fe388badee45e2970a6bc83eed1c84d46d8652863bafeca22a6c6cc15812f5999a4535366f4668ccc9ba6d5c67dfb72e846fa8a063806f10afd - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:3.1.0": - version: 3.1.0 - resolution: "@jridgewell/resolve-uri@npm:3.1.0" - checksum: 8c0/78055e2526108331126366572045355051a930f017d1904a4f753d3f4acee8d92a14854948095626f6163cffc24ea4e3efa30637417bb866b84743dec7ef6fd9 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.0.3": - version: 3.0.5 - resolution: "@jridgewell/resolve-uri@npm:3.0.5" - checksum: 8c0/00e27376be6dcfccca1666326328ba47c4614002fb20b9c4f7a47d25ecf0b99061f201362109bf4ce547e8f246aaac35db67b3ab6bf07c3e0e3edabccd4bdb31 - languageName: node - linkType: hard - -"@jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 8c0/0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.0, @jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 8c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab - languageName: node - linkType: hard - -"@jridgewell/source-map@npm:^0.3.2": - version: 0.3.2 - resolution: "@jridgewell/source-map@npm:0.3.2" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.0" - "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 8c0/1540da323456878281c8e03fc4edc444ea151aa441eb38a43d84d39df8fec9446e375202cd999b54637f4627e42e2a38b3ab07195e5e49616fc6b7eee1b7119f - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:1.4.14": - version: 1.4.14 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" - checksum: 8c0/3fbaff1387c1338b097eeb6ff92890d7838f7de0dde259e4983763b44540bfd5ca6a1f7644dc8ad003a57f7e80670d5b96a8402f1386ba9aee074743ae9bad51 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.10": - version: 1.4.11 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.11" - checksum: 8c0/92f81c79a268cb1cd8ec29831a69838b7af98e020d4c80a37dd5aa3b6c7868f9e97fa75c18c9100e3879b47472654fa013d44a79c280d7f2229bbfd64e3dd169 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 8c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:0.3.9": - version: 0.3.9 - resolution: "@jridgewell/trace-mapping@npm:0.3.9" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 8c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.0": - version: 0.3.4 - resolution: "@jridgewell/trace-mapping@npm:0.3.4" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.0.3" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: 8c0/ee62b4d810e417f81eb27c9385089172b40286329d9a81fcff999fede883ae95ca75bcaf58793cae0a3981d17302f223656d72ed9bbd1d5a96c170b2dfdc5259 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.14, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.17 - resolution: "@jridgewell/trace-mapping@npm:0.3.17" - dependencies: - "@jridgewell/resolve-uri": "npm:3.1.0" - "@jridgewell/sourcemap-codec": "npm:1.4.14" - checksum: 8c0/40b65fcbdd7cc5a60dbe0a2780b6670ebbc1a31c96e43833e0bf2fee0773b1ba5137ab7d137b28fc3f215567bd5f9d06b7b30634ba15636c13bd8a863c20ae9a - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.17": - version: 0.3.18 - resolution: "@jridgewell/trace-mapping@npm:0.3.18" - dependencies: - "@jridgewell/resolve-uri": "npm:3.1.0" - "@jridgewell/sourcemap-codec": "npm:1.4.14" - checksum: 8c0/e5045775f076022b6c7cc64a7b55742faa5442301cb3389fd0e6712fafc46a2bb13c68fa1ffaf7b8bb665a91196f050b4115885fc802094ebc06a1cf665935ac - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.18": - version: 0.3.19 - resolution: "@jridgewell/trace-mapping@npm:0.3.19" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 8c0/845e6c6efca621b2b85e4d13fd25c319b6e4ab1ea78d4385ff6c0f78322ea0fcdfec8ac763aa4b56e8378c96d7bef101a2638c7a1a076f7d62f6376230c940a7 - languageName: node - linkType: hard - -"@kamilkisiela/fast-url-parser@npm:^1.1.4": - version: 1.1.4 - resolution: "@kamilkisiela/fast-url-parser@npm:1.1.4" - checksum: 2c85202cb4924720ac812c8bc06967fd5df4db759a68aa3acc2962b8cf9e2b3bc131de863f00473c0b0602df13891b35140f667a87eea04c9b897b6c1ae89c4a - languageName: node - linkType: hard - -"@leichtgewicht/ip-codec@npm:^2.0.1": - version: 2.0.4 - resolution: "@leichtgewicht/ip-codec@npm:2.0.4" - checksum: 8c0/3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b - languageName: node - linkType: hard - -"@lukeed/ms@npm:^2.0.1": - version: 2.0.1 - resolution: "@lukeed/ms@npm:2.0.1" - checksum: 8c0/06a5c9985194fb5e5e3ea60766589c808efee61661d85f869f92432bfb2fa5e5326b56b99df4c5d900bf4e9ce861791db058cae89a1d02a6be0638d9e804644a - languageName: node - linkType: hard - -"@mapbox/node-pre-gyp@npm:^1.0.0": - version: 1.0.10 - resolution: "@mapbox/node-pre-gyp@npm:1.0.10" - dependencies: - detect-libc: "npm:^2.0.0" - https-proxy-agent: "npm:^5.0.0" - make-dir: "npm:^3.1.0" - node-fetch: "npm:^2.6.7" - nopt: "npm:^5.0.0" - npmlog: "npm:^5.0.1" - rimraf: "npm:^3.0.2" - semver: "npm:^7.3.5" - tar: "npm:^6.1.11" - bin: - node-pre-gyp: bin/node-pre-gyp - checksum: 8c0/469f3bc00778c76e0a7ffaf40742482462e05fec31b53c55ad6d6a892894046c0db7bb8543ed49b2cf1926dfcd9af1289985c367c5d20076939f8a889f686e45 - languageName: node - linkType: hard - -"@mdx-js/mdx@npm:^1.6.22": - version: 1.6.22 - resolution: "@mdx-js/mdx@npm:1.6.22" - dependencies: - "@babel/core": "npm:7.12.9" - "@babel/plugin-syntax-jsx": "npm:7.12.1" - "@babel/plugin-syntax-object-rest-spread": "npm:7.8.3" - "@mdx-js/util": "npm:1.6.22" - babel-plugin-apply-mdx-type-prop: "npm:1.6.22" - babel-plugin-extract-import-names: "npm:1.6.22" - camelcase-css: "npm:2.0.1" - detab: "npm:2.0.4" - hast-util-raw: "npm:6.0.1" - lodash.uniq: "npm:4.5.0" - mdast-util-to-hast: "npm:10.0.1" - remark-footnotes: "npm:2.0.0" - remark-mdx: "npm:1.6.22" - remark-parse: "npm:8.0.3" - remark-squeeze-paragraphs: "npm:4.0.0" - style-to-object: "npm:0.3.0" - unified: "npm:9.2.0" - unist-builder: "npm:2.0.3" - unist-util-visit: "npm:2.0.3" - checksum: 8c0/7f4c38911fc269159834240d3cc9279839145022a992bd61657530750c7ab5d0f674e8d6319b6e2e426d0e1adc6cc5ab1876e57548208783d8a3d1b8ef73ebca - languageName: node - linkType: hard - -"@mdx-js/util@npm:1.6.22": - version: 1.6.22 - resolution: "@mdx-js/util@npm:1.6.22" - checksum: 8c0/2ee8da6afea0f42297ea31f52b1d50d228744d2895cce7cc9571b7d5ce97c7c96037c80b6dbcded9caa8099c9a994eda62980099eabe1c000aaa792816c66f10 - languageName: node - linkType: hard - -"@mole-inc/bin-wrapper@npm:^8.0.1": - version: 8.0.1 - resolution: "@mole-inc/bin-wrapper@npm:8.0.1" - dependencies: - bin-check: "npm:^4.1.0" - bin-version-check: "npm:^5.0.0" - content-disposition: "npm:^0.5.4" - ext-name: "npm:^5.0.0" - file-type: "npm:^17.1.6" - filenamify: "npm:^5.0.2" - got: "npm:^11.8.5" - os-filter-obj: "npm:^2.0.0" - checksum: 70cfed319a46b1b8e3878dc4bdff4ced81aa913a6d9ab557b41e40f7ebdd5d39b0506b008609d8620739b63c2e4396fe0deec072487e84c717a1f3b24836ef94 - languageName: node - linkType: hard - -"@motionone/animation@npm:^10.12.0": - version: 10.16.3 - resolution: "@motionone/animation@npm:10.16.3" - dependencies: - "@motionone/easing": "npm:^10.16.3" - "@motionone/types": "npm:^10.16.3" - "@motionone/utils": "npm:^10.16.3" - tslib: "npm:^2.3.1" - checksum: c1bb7a03acc9c09647321a4653bf53878ea05ce91305507cb4000d75641dcad85faa8696ef12d0c28fa52d4b3708bc7ae34334c95ef532567a26082f0176ea4a - languageName: node - linkType: hard - -"@motionone/dom@npm:10.12.0": - version: 10.12.0 - resolution: "@motionone/dom@npm:10.12.0" - dependencies: - "@motionone/animation": "npm:^10.12.0" - "@motionone/generators": "npm:^10.12.0" - "@motionone/types": "npm:^10.12.0" - "@motionone/utils": "npm:^10.12.0" - hey-listen: "npm:^1.0.8" - tslib: "npm:^2.3.1" - checksum: 1af6cd8d8518ebbd90d74f15443ad94d7d03bf9e7e1455a5cb6768a53ba8dac6906ca121e9c1f42b8d53a8ab7c19d14e4731c10231b5dc7102628f32659faea2 - languageName: node - linkType: hard - -"@motionone/easing@npm:^10.16.3": - version: 10.16.3 - resolution: "@motionone/easing@npm:10.16.3" - dependencies: - "@motionone/utils": "npm:^10.16.3" - tslib: "npm:^2.3.1" - checksum: df98a643f0b2955afd16b78063899d050b22cfcf3db1bb86ecdbde831614f24c41143d5d887bc287f6de979baa20a00e8e1dca39ef7b2dfb67c0ec1b1ca0bcaa - languageName: node - linkType: hard - -"@motionone/generators@npm:^10.12.0": - version: 10.16.4 - resolution: "@motionone/generators@npm:10.16.4" - dependencies: - "@motionone/types": "npm:^10.16.3" - "@motionone/utils": "npm:^10.16.3" - tslib: "npm:^2.3.1" - checksum: cef71d1236a625b3579791d480ebd1875bec2a62e249771eb2af883981074016cc6f2ef112c2bf27f93d05d19830893f3f486944cd68d2fbf35a990c41729152 - languageName: node - linkType: hard - -"@motionone/types@npm:^10.12.0, @motionone/types@npm:^10.16.3": - version: 10.16.3 - resolution: "@motionone/types@npm:10.16.3" - checksum: a792acd8bacd7949c29fd47fda1d3d7919b86ab209499a374a1f3c85f57a92d16f7a05f94edc6d46831c55180da2ff5e1193fa538bcb76e0ff38a24e25da2e87 - languageName: node - linkType: hard - -"@motionone/utils@npm:^10.12.0, @motionone/utils@npm:^10.16.3": - version: 10.16.3 - resolution: "@motionone/utils@npm:10.16.3" - dependencies: - "@motionone/types": "npm:^10.16.3" - hey-listen: "npm:^1.0.8" - tslib: "npm:^2.3.1" - checksum: c5a1cce9bf5d1e8c5051a4636bd6a7030bf67f5662a94a8ec1524a72de3baca3f4c59e46cee9a41b111806fdd2956256c65c7e99b7de260803f2e44840bbae11 - languageName: node - linkType: hard - -"@mrleebo/prisma-ast@npm:^0.5.2": - version: 0.5.2 - resolution: "@mrleebo/prisma-ast@npm:0.5.2" - dependencies: - chevrotain: "npm:^10.4.2" - checksum: 8c0/155795a245d885d6cd3edac43a3eb57c8ba5c178d71b7595e278c3f7879f78511b9796d3b13e37c228cfdba9621715a2af450611b68aa4d58739fbe129e8200d - languageName: node - linkType: hard - -"@mrmlnc/readdir-enhanced@npm:^2.2.1": - version: 2.2.1 - resolution: "@mrmlnc/readdir-enhanced@npm:2.2.1" - dependencies: - call-me-maybe: "npm:^1.0.1" - glob-to-regexp: "npm:^0.3.0" - checksum: 8c0/01840f3c85e9a7cd0ed5e038cc00e7518809b9edda950598e22b1c9804832e39a75707aaa6eb0b023e72182a85e00041c7a01483e425b16257bd3d5e4c788d86 - languageName: node - linkType: hard - -"@mswjs/cookies@npm:^0.1.4": - version: 0.1.7 - resolution: "@mswjs/cookies@npm:0.1.7" - dependencies: - "@types/set-cookie-parser": "npm:^2.4.0" - set-cookie-parser: "npm:^2.4.6" - checksum: 8c0/647e97c1cd970be0b49c359faa4798a1eaa9cbf3ad7e88b184bcec5c6ee183e45b720708d3084b3a3ca8c797d86a64cd57e04d553fc10ef28b1f3d3e3929582e - languageName: node - linkType: hard - -"@mswjs/cookies@npm:^0.2.2": - version: 0.2.2 - resolution: "@mswjs/cookies@npm:0.2.2" - dependencies: - "@types/set-cookie-parser": "npm:^2.4.0" - set-cookie-parser: "npm:^2.4.6" - checksum: 8c0/f950062538d431674d581309cf19884fc4d3f57e2a276164cac0c9a3250071d42464ba7825d13be14c703ca5a912d62a62626f4a068d8f36d1629dbb63bde740 - languageName: node - linkType: hard - -"@mswjs/interceptors@npm:^0.17.10": - version: 0.17.10 - resolution: "@mswjs/interceptors@npm:0.17.10" - dependencies: - "@open-draft/until": "npm:^1.0.3" - "@types/debug": "npm:^4.1.7" - "@xmldom/xmldom": "npm:^0.8.3" - debug: "npm:^4.3.3" - headers-polyfill: "npm:3.2.5" - outvariant: "npm:^1.2.1" - strict-event-emitter: "npm:^0.2.4" - web-encoding: "npm:^1.1.5" - checksum: 0343a93711b60c321c40733d6bf2720a736d8e0730f5d0d9916ee4a24abfcfca4a83d1e4b2e21c3affef4fc61f04588104be002fbc8258dc4b0d202c384ade33 - languageName: node - linkType: hard - -"@mswjs/interceptors@npm:^0.8.0": - version: 0.8.1 - resolution: "@mswjs/interceptors@npm:0.8.1" - dependencies: - "@open-draft/until": "npm:^1.0.3" - debug: "npm:^4.3.0" - headers-utils: "npm:^3.0.2" - strict-event-emitter: "npm:^0.2.0" - checksum: 8c0/51e821e02a41e98246bec0e6e9b8e877d3679ca65b6e874ab9b8f78780186bda74aa19ec4352cdd76466bbe0ea362abd52ffbef2d8f0d7f17d28c00c769394e8 - languageName: node - linkType: hard - -"@n1ru4l/graphql-live-query-patch@npm:^0.7.0": - version: 0.7.0 - resolution: "@n1ru4l/graphql-live-query-patch@npm:0.7.0" - dependencies: - "@repeaterjs/repeater": "npm:^3.0.4" - peerDependencies: - graphql: ^15.4.0 || ^16.0.0 - checksum: 8c0/a7ee5825a277e5240a1908cf830c3d55f114a6d8fec520dc155081f170241c50b92309169a6cc79f66087b97f0aaad8895573b2c346fd7671402c6ce3dd81452 - languageName: node - linkType: hard - -"@n1ru4l/graphql-live-query@npm:0.10.0, @n1ru4l/graphql-live-query@npm:^0.10.0": - version: 0.10.0 - resolution: "@n1ru4l/graphql-live-query@npm:0.10.0" - peerDependencies: - graphql: ^15.4.0 || ^16.0.0 - checksum: 8c0/972bea6d6e4dcc443e15c19f2da373fc01f7e6c8d366569075dc89dc94e55da5a4029d0e8cff289d208c43edcca5e112fe286c6601717ab42d428fc3d5c2dfae - languageName: node - linkType: hard - -"@n1ru4l/in-memory-live-query-store@npm:0.10.0, @n1ru4l/in-memory-live-query-store@npm:^0.10.0": - version: 0.10.0 - resolution: "@n1ru4l/in-memory-live-query-store@npm:0.10.0" - dependencies: - "@graphql-tools/utils": "npm:^8.5.2" - "@n1ru4l/graphql-live-query": "npm:0.10.0" - "@repeaterjs/repeater": "npm:^3.0.4" - peerDependencies: - graphql: ^15.4.0 || ^16.0.0 - checksum: 8c0/c2b4c1c09fa68ac7bd776166a86d361ac6e2659028391e7c3cca25943e966d1d035271141e28d0a519d50409cc07728df163d01ee26cacf403f59a6dcf2d4243 - languageName: node - linkType: hard - -"@n1ru4l/push-pull-async-iterable-iterator@npm:^3.1.0": - version: 3.2.0 - resolution: "@n1ru4l/push-pull-async-iterable-iterator@npm:3.2.0" - checksum: c1fbfa49f631a4b95899b0d6c13ab7310e849bbfbcbdb4fabbcc8faa2d9e36fffdd05740746814641220235cfaac7440ee54c313edd32b4c1af37887d0046175 - languageName: node - linkType: hard - -"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents": - version: 2.1.8-no-fsevents - resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents" - dependencies: - anymatch: "npm:^2.0.0" - async-each: "npm:^1.0.1" - braces: "npm:^2.3.2" - glob-parent: "npm:^3.1.0" - inherits: "npm:^2.0.3" - is-binary-path: "npm:^1.0.0" - is-glob: "npm:^4.0.0" - normalize-path: "npm:^3.0.0" - path-is-absolute: "npm:^1.0.0" - readdirp: "npm:^2.2.1" - upath: "npm:^1.1.1" - checksum: 8c0/8ca958d7763d73a7fc63b208b865bf656d5970c7161014c71ef190aa0e30e14766f286ecb6c856f7fa2e2b5da7252788baab1382e96ed2a07f5c3d65131947f9 - languageName: node - linkType: hard - -"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": - version: 2.1.8-no-fsevents.3 - resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" - checksum: 8c0/27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 - languageName: node - linkType: hard - -"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": - version: 5.1.1-v1 - resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" - dependencies: - eslint-scope: "npm:5.1.1" - checksum: 8c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 - languageName: node - linkType: hard - -"@nivo/annotations@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/annotations@npm:0.83.0" - dependencies: - "@nivo/colors": "npm:0.83.0" - "@nivo/core": "npm:0.83.0" - "@react-spring/web": "npm:9.4.5 || ^9.7.2" - "@types/prop-types": "npm:^15.7.2" - lodash: "npm:^4.17.21" - prop-types: "npm:^15.7.2" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: 1c08ce2f257193bd4854df3379ddf246300a8c98ce0511f65b9d2b3eaa29f7e7a53f6cba96d6be02b401f4c1beceea5e0070ebb41e8f07a1583ebbcb0d0810eb - languageName: node - linkType: hard - -"@nivo/axes@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/axes@npm:0.83.0" - dependencies: - "@nivo/core": "npm:0.83.0" - "@nivo/scales": "npm:0.83.0" - "@react-spring/web": "npm:9.4.5 || ^9.7.2" - "@types/d3-format": "npm:^1.4.1" - "@types/d3-time-format": "npm:^2.3.1" - "@types/prop-types": "npm:^15.7.2" - d3-format: "npm:^1.4.4" - d3-time-format: "npm:^3.0.0" - prop-types: "npm:^15.7.2" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: b537e893ac9f8dc4e5fa7817ffb6d6fa4a3603992fc669646873c94aeaea331d6657f30adf3340ee6cc5e19bb00eeed1370ba04ff1211d41f4c5958ef106fbbf - languageName: node - linkType: hard - -"@nivo/bar@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/bar@npm:0.83.0" - dependencies: - "@nivo/annotations": "npm:0.83.0" - "@nivo/axes": "npm:0.83.0" - "@nivo/colors": "npm:0.83.0" - "@nivo/core": "npm:0.83.0" - "@nivo/legends": "npm:0.83.0" - "@nivo/scales": "npm:0.83.0" - "@nivo/tooltip": "npm:0.83.0" - "@react-spring/web": "npm:9.4.5 || ^9.7.2" - "@types/d3-scale": "npm:^3.2.3" - "@types/d3-shape": "npm:^2.0.0" - d3-scale: "npm:^3.2.3" - d3-shape: "npm:^1.3.5" - lodash: "npm:^4.17.21" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: 357203252bc0e52eec78aa94cda0ff8d42aad15a9eed5fbae710d4f497eff1133ee62d72a55f42a31a5e4f6297701fac031400544bffb5a2dd58b1bd76ab7970 - languageName: node - linkType: hard - -"@nivo/colors@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/colors@npm:0.83.0" - dependencies: - "@nivo/core": "npm:0.83.0" - "@types/d3-color": "npm:^2.0.0" - "@types/d3-scale": "npm:^3.2.3" - "@types/d3-scale-chromatic": "npm:^2.0.0" - "@types/prop-types": "npm:^15.7.2" - d3-color: "npm:^3.1.0" - d3-scale: "npm:^3.2.3" - d3-scale-chromatic: "npm:^2.0.0" - lodash: "npm:^4.17.21" - prop-types: "npm:^15.7.2" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: ed645f63b59c7e760d38ce37da412746a4727408df69e3bdc0b5ace7b3c52d2b9d677d0481dcda7d305ca3ccdb248d364cf9971a01d64bf73f97d192eff526b4 - languageName: node - linkType: hard - -"@nivo/core@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/core@npm:0.83.0" - dependencies: - "@nivo/recompose": "npm:0.83.0" - "@nivo/tooltip": "npm:0.83.0" - "@react-spring/web": "npm:9.4.5 || ^9.7.2" - "@types/d3-shape": "npm:^2.0.0" - d3-color: "npm:^3.1.0" - d3-format: "npm:^1.4.4" - d3-interpolate: "npm:^2.0.1" - d3-scale: "npm:^3.2.3" - d3-scale-chromatic: "npm:^2.0.0" - d3-shape: "npm:^1.3.5" - d3-time-format: "npm:^3.0.0" - lodash: "npm:^4.17.21" - peerDependencies: - prop-types: ">= 15.5.10 < 16.0.0" - react: ">= 16.14.0 < 19.0.0" - checksum: ea4ea3117e1ab85b4a6dc4e0831794974fe76d97cb4f0cdd440b0a8955439800ed1688064615e25e4fecf5e5041c530c1bce84bc4f3e325225fa28f8ac09645d - languageName: node - linkType: hard - -"@nivo/legends@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/legends@npm:0.83.0" - dependencies: - "@nivo/colors": "npm:0.83.0" - "@nivo/core": "npm:0.83.0" - "@types/d3-scale": "npm:^3.2.3" - "@types/prop-types": "npm:^15.7.2" - d3-scale: "npm:^3.2.3" - prop-types: "npm:^15.7.2" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: bf71c483a6ce23716c6356d91043b652d00fbb098f004d7427225587537f1068f0a441d8de5c20ee0778db01f577491e84169dd9f3eec40d98e592685fae2b7e - languageName: node - linkType: hard - -"@nivo/recompose@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/recompose@npm:0.83.0" - dependencies: - "@types/prop-types": "npm:^15.7.2" - "@types/react-lifecycles-compat": "npm:^3.0.1" - prop-types: "npm:^15.7.2" - react-lifecycles-compat: "npm:^3.0.4" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: f8aa68deab715d12ac36cf9d65d8632135133158f0bae6f0e74691c21b82b1d475b42b856ddfcf54c2b7fb6dac6a77e6b2ea4cdc9c54b2c58e86f487ce6005f7 - languageName: node - linkType: hard - -"@nivo/scales@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/scales@npm:0.83.0" - dependencies: - "@types/d3-scale": "npm:^3.2.3" - "@types/d3-time": "npm:^1.1.1" - "@types/d3-time-format": "npm:^3.0.0" - d3-scale: "npm:^3.2.3" - d3-time: "npm:^1.0.11" - d3-time-format: "npm:^3.0.0" - lodash: "npm:^4.17.21" - checksum: df7be1601643aa6b6d1fb28880a966afa4ffae0e8e4c7e629b746bfaaf8cce34bc7a43abff46b6521ef0f58ec0304dc91119966fcc69e3f07e3d39fb2768ebcc - languageName: node - linkType: hard - -"@nivo/tooltip@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/tooltip@npm:0.83.0" - dependencies: - "@nivo/core": "npm:0.83.0" - "@react-spring/web": "npm:9.4.5 || ^9.7.2" - checksum: 6d8529482f2e2011df5d81962810aaf889b598645b67402bf8d42f2fb0db2fcb94c88aaaa16e120326fbd14a8bd98b70c9d8358a4b89ebd073025f191a8a458b - languageName: node - linkType: hard - -"@nivo/treemap@npm:0.83.0": - version: 0.83.0 - resolution: "@nivo/treemap@npm:0.83.0" - dependencies: - "@nivo/colors": "npm:0.83.0" - "@nivo/core": "npm:0.83.0" - "@nivo/tooltip": "npm:0.83.0" - "@react-spring/web": "npm:9.4.5 || ^9.7.2" - "@types/d3-hierarchy": "npm:^1.1.8" - d3-hierarchy: "npm:^1.1.8" - lodash: "npm:^4.17.21" - peerDependencies: - react: ">= 16.14.0 < 19.0.0" - checksum: c1943872be4ba2466f8fd9f90b5548716a53781b91bd3cee8527d22f99f38aec8c660da6168788c004e391ba5b0321e1a0aee0e1f1a68ccd2ed8ed125a4e6ac9 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.4": - version: 2.1.4 - resolution: "@nodelib/fs.scandir@npm:2.1.4" - dependencies: - "@nodelib/fs.stat": "npm:2.0.4" - run-parallel: "npm:^1.1.9" - checksum: 8c0/6c0f930380615d830e99260dd09d8f01015b55c4c2486367e15147a6c9822a62a8b6c7604e09871de930981d0d15e9640a7a7a877fdba418e26fe68bf84dee31 - languageName: node - linkType: hard - -"@nodelib/fs.scandir@npm:2.1.5": - version: 2.1.5 - resolution: "@nodelib/fs.scandir@npm:2.1.5" - dependencies: - "@nodelib/fs.stat": "npm:2.0.5" - run-parallel: "npm:^1.1.9" - checksum: 8c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": - version: 2.0.4 - resolution: "@nodelib/fs.stat@npm:2.0.4" - checksum: 8c0/773dc0990a0890180feb9758123200bf73144f46f00c42d9b2c2dd7e03bef6ac53af209ccbeb32ba046b41ea890d73f12cd780a0114cac1dbcd0da631da8b3f8 - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:2.0.5": - version: 2.0.5 - resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 8c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d - languageName: node - linkType: hard - -"@nodelib/fs.stat@npm:^1.1.2": - version: 1.1.3 - resolution: "@nodelib/fs.stat@npm:1.1.3" - checksum: 8c0/dc28ccae626e817a61b1544285b0f86c4e94a4a23db777c2949f78866ec57b1e1ccd5554bc3ed8e965df0646b1019e184315d32e98428c15eef7409974b17598 - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.3": - version: 1.2.6 - resolution: "@nodelib/fs.walk@npm:1.2.6" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.4" - fastq: "npm:^1.6.0" - checksum: 8c0/6feb845a2ed0a1e2a6d4597fe404a5654e958d2e23963029370966c47c26ff7a9a9978fd3a9abce2c49ddddfe485afc0be0f52894fcbd19b15e4fa7c088c438a - languageName: node - linkType: hard - -"@nodelib/fs.walk@npm:^1.2.8": - version: 1.2.8 - resolution: "@nodelib/fs.walk@npm:1.2.8" - dependencies: - "@nodelib/fs.scandir": "npm:2.1.5" - fastq: "npm:^1.6.0" - checksum: 8c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^1.0.0": - version: 1.1.1 - resolution: "@npmcli/fs@npm:1.1.1" - dependencies: - "@gar/promisify": "npm:^1.0.1" - semver: "npm:^7.3.5" - checksum: 8c0/4143c317a7542af9054018b71601e3c3392e6704e884561229695f099a71336cbd580df9a9ffb965d0024bf0ed593189ab58900fd1714baef1c9ee59c738c3e2 - languageName: node - linkType: hard - -"@npmcli/fs@npm:^2.1.0": - version: 2.1.2 - resolution: "@npmcli/fs@npm:2.1.2" - dependencies: - "@gar/promisify": "npm:^1.1.3" - semver: "npm:^7.3.5" - checksum: 8c0/c50d087733d0d8df23be24f700f104b19922a28677aa66fdbe06ff6af6431cc4a5bb1e27683cbc661a5dafa9bafdc603e6a0378121506dfcd394b2b6dd76a187 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" - dependencies: - mkdirp: "npm:^1.0.4" - rimraf: "npm:^3.0.2" - checksum: 8c0/02e946f3dafcc6743132fe2e0e2b585a96ca7265653a38df5a3e53fcf26c7c7a57fc0f861d7c689a23fdb6d6836c7eea5050c8086abf3c994feb2208d1514ff0 - languageName: node - linkType: hard - -"@npmcli/move-file@npm:^2.0.0": - version: 2.0.1 - resolution: "@npmcli/move-file@npm:2.0.1" - dependencies: - mkdirp: "npm:^1.0.4" - rimraf: "npm:^3.0.2" - checksum: 8c0/11b2151e6d1de6f6eb23128de5aa8a429fd9097d839a5190cb77aa47a6b627022c42d50fa7c47a00f1c9f8f0c1560092b09b061855d293fa0741a2a94cfb174d - languageName: node - linkType: hard - -"@open-draft/until@npm:^1.0.3": - version: 1.0.3 - resolution: "@open-draft/until@npm:1.0.3" - checksum: 8c0/f88bcd774b55359d14a4fa80f7bfe7d9d6d26a5995e94e823e43b211656daae3663e983f0a996937da286d22f6f5da2087b661845302f236ba27f8529dcd14fb - languageName: node - linkType: hard - -"@opentelemetry/api-logs@npm:0.45.1": - version: 0.45.1 - resolution: "@opentelemetry/api-logs@npm:0.45.1" - dependencies: - "@opentelemetry/api": "npm:^1.0.0" - checksum: 110784924fe39fd544ff71ca6f117834e229fc7940fea7492b3d2bdf1259fc7819860603fda7cc970b6ecd37d79f365be559e0999141172e455e8a839c4d0836 - languageName: node - linkType: hard - -"@opentelemetry/api@npm:1.7.0": - version: 1.7.0 - resolution: "@opentelemetry/api@npm:1.7.0" - checksum: b5468115d1cec45dd2b86b39210fdc03620a93b9f07c3d20b14081f75e2f7c9b37ceceeb60d5f35c6d4f9819ae07eee0b4874e53e7362376db21db1e00f483f8 - languageName: node - linkType: hard - -"@opentelemetry/api@npm:^1.0.0": - version: 1.4.1 - resolution: "@opentelemetry/api@npm:1.4.1" - checksum: 8c0/5ee641d3d64c91e87ee328fc22251fc70c809a3c744e51e595ca77c0bd3cad933b77a79beb4dac66b811e5068941cef9da58c1ec217c0748a01f598e08a7ae66 - languageName: node - linkType: hard - -"@opentelemetry/context-async-hooks@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/context-async-hooks@npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 6de54978adc500dbcc96738f0a74080c784a5bfe25bd193158bf4abb14659a9a27595cbd65f45dc9058b02c6c9ae883a2a0002b72c036264db676213c25cb7c8 - languageName: node - linkType: hard - -"@opentelemetry/core@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/core@npm:1.18.1" - dependencies: - "@opentelemetry/semantic-conventions": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: ceb17446ce32faaa8d71caaaf25c9abbc5fd72077c7b868ea6f51e08a4a3daeb9133682a3b299a64291111416f2dd0dbeeed66f44409995fa4540f7250e3ffe1 - languageName: node - linkType: hard - -"@opentelemetry/exporter-trace-otlp-http@npm:0.45.1": - version: 0.45.1 - resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.45.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/otlp-exporter-base": "npm:0.45.1" - "@opentelemetry/otlp-transformer": "npm:0.45.1" - "@opentelemetry/resources": "npm:1.18.1" - "@opentelemetry/sdk-trace-base": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ^1.0.0 - checksum: 3561877ff62bff651a7a4f0f17578910843fc5e00e2e33493591c61a2ac4d85c936b5024fc1dbcbb53c3cf3079914fbf9d80f71dfc3a6301589152b3e5ad84c0 - languageName: node - linkType: hard - -"@opentelemetry/otlp-exporter-base@npm:0.45.1": - version: 0.45.1 - resolution: "@opentelemetry/otlp-exporter-base@npm:0.45.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ^1.0.0 - checksum: 22f30443238c2c9ddf26f1a18bf80012bc38cefe0e7ee6c32bd5c44d1f2303b11ab68130b638bd5f977ebc40d030890a407466033b42a9a9dba02c864568f82f - languageName: node - linkType: hard - -"@opentelemetry/otlp-transformer@npm:0.45.1": - version: 0.45.1 - resolution: "@opentelemetry/otlp-transformer@npm:0.45.1" - dependencies: - "@opentelemetry/api-logs": "npm:0.45.1" - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/resources": "npm:1.18.1" - "@opentelemetry/sdk-logs": "npm:0.45.1" - "@opentelemetry/sdk-metrics": "npm:1.18.1" - "@opentelemetry/sdk-trace-base": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.8.0" - checksum: 5e306e88dff99ef48543edda3e76851fe8d8894981f138479623befa0e8276d84541beaee6ef2a4dfe0bc5a2feb96b3137edb17ad0751d332e67b9d67f49ffa3 - languageName: node - linkType: hard - -"@opentelemetry/propagator-b3@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/propagator-b3@npm:1.18.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: c3a31c3679f66a407da3e867775a01f0fbeda5ccd4482bb2979af6285c545ceaed41ad6f9061124daf4d6af2e1f4b3db52095085b159df6197454612752c4cfb - languageName: node - linkType: hard - -"@opentelemetry/propagator-jaeger@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/propagator-jaeger@npm:1.18.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 622035eed6a219b24bbb26d12d4efe1ed8d84f5e5045b5e948808ea92d5f0a029233ea47126c8322c3c9d6c3f1fe904aed82ed9f68c4e006123ae083c0fb2f32 - languageName: node - linkType: hard - -"@opentelemetry/resources@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/resources@npm:1.18.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/semantic-conventions": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 064cc1948c7ea9a31edfbf9945c326be1c2802e48c0c0e977cfd2cb4e5e3b63de13d7cc299da31ca99fd2fc82587c16fca53fc60a64db49d479fb16b4593eaea - languageName: node - linkType: hard - -"@opentelemetry/sdk-logs@npm:0.45.1": - version: 0.45.1 - resolution: "@opentelemetry/sdk-logs@npm:0.45.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/resources": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.4.0 <1.8.0" - "@opentelemetry/api-logs": ">=0.39.1" - checksum: 9210dab03024509500a0af9905ad676fdfc118fcccc9be8fa9e0c11147bdc242c580407c7bf2395502193884715e292ee17e811cede2586465dda04b2c8464e0 - languageName: node - linkType: hard - -"@opentelemetry/sdk-metrics@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/sdk-metrics@npm:1.18.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/resources": "npm:1.18.1" - lodash.merge: "npm:^4.6.2" - peerDependencies: - "@opentelemetry/api": ">=1.3.0 <1.8.0" - checksum: 3c7050eb997d0bf9d1a6182f94cb49fcf4d62dd47df45b7e9e881df5bd6135a0d54c664fd29ae2a21fbf7cf93715c0e3e4a390bd56059e70a9ccd3f7ee5ab6a4 - languageName: node - linkType: hard - -"@opentelemetry/sdk-trace-base@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/sdk-trace-base@npm:1.18.1" - dependencies: - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/resources": "npm:1.18.1" - "@opentelemetry/semantic-conventions": "npm:1.18.1" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: e3ab716724d9d761c12cbabc41246e7ef27d8c05bc298cae0fa9a7fc84cf9229a87d4128b6ff28d11f12fcc4b0cdabad13d80a5ea57f99e26860bdf38622173c - languageName: node - linkType: hard - -"@opentelemetry/sdk-trace-node@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/sdk-trace-node@npm:1.18.1" - dependencies: - "@opentelemetry/context-async-hooks": "npm:1.18.1" - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/propagator-b3": "npm:1.18.1" - "@opentelemetry/propagator-jaeger": "npm:1.18.1" - "@opentelemetry/sdk-trace-base": "npm:1.18.1" - semver: "npm:^7.5.2" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 1b9f4718b12da439e8147a3bba8d7902cd9fd316954fbdbc51b72b90f2eede3ae17f97331f7cf888df9994f4c7cd63f4b64286a74c0cfc8695e7df0b913d1349 - languageName: node - linkType: hard - -"@opentelemetry/semantic-conventions@npm:1.18.1": - version: 1.18.1 - resolution: "@opentelemetry/semantic-conventions@npm:1.18.1" - checksum: 6437c3758e732d643218e35c66fa931ddf65dde9a33c10af16b866135cbb5357fc3424316139c2ca1188cf0f5b23e844b6e6c9ab461637cb150a40219bee70e9 - languageName: node - linkType: hard - -"@parcel/watcher@npm:^2.1.0": - version: 2.1.0 - resolution: "@parcel/watcher@npm:2.1.0" - dependencies: - is-glob: "npm:^4.0.3" - micromatch: "npm:^4.0.5" - node-addon-api: "npm:^3.2.1" - node-gyp: "npm:latest" - node-gyp-build: "npm:^4.3.0" - checksum: 8c0/e11adf285cb959d17f2126db76b9c3e42a4c7bb0acac3726fab913e1dc589bfd3f84a0818306417367e852d3a78cb859a96a898d41e03254a5092b0921a354fc - languageName: node - linkType: hard - -"@peculiar/asn1-schema@npm:^2.1.6, @peculiar/asn1-schema@npm:^2.3.0": - version: 2.3.3 - resolution: "@peculiar/asn1-schema@npm:2.3.3" - dependencies: - asn1js: "npm:^3.0.5" - pvtsutils: "npm:^1.3.2" - tslib: "npm:^2.4.0" - checksum: 8c0/530102368af402ea4b69b106657e2627a7f1808865bd61ddfdcd938338dddcda7104561ebba6fbefa1d9c9717c0ceb571d7326840f61cd0c9d53933f660d4ae4 - languageName: node - linkType: hard - -"@peculiar/json-schema@npm:^1.1.12": - version: 1.1.12 - resolution: "@peculiar/json-schema@npm:1.1.12" - dependencies: - tslib: "npm:^2.0.0" - checksum: 8c0/202132c66dcc6b6aca5d0af971c015be2e163da2f7f992910783c5d39c8a7db59b6ec4f4ce419459a1f954b7e1d17b6b253f0e60072c1b3d254079f4eaebc311 - languageName: node - linkType: hard - -"@peculiar/webcrypto@npm:^1.4.0": - version: 1.4.1 - resolution: "@peculiar/webcrypto@npm:1.4.1" - dependencies: - "@peculiar/asn1-schema": "npm:^2.3.0" - "@peculiar/json-schema": "npm:^1.1.12" - pvtsutils: "npm:^1.3.2" - tslib: "npm:^2.4.1" - webcrypto-core: "npm:^1.7.4" - checksum: 8c0/5acf1b025664525452e2b0748573b0f4100c6840d71ff5577188dfb81b97d463911deff17b4b0c3e59f35fe93c54fec4591f1c42f0a54dae1d5710a03c5e55d3 - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 8c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd - languageName: node - linkType: hard - -"@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11": - version: 0.5.11 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11" - dependencies: - ansi-html-community: "npm:^0.0.8" - common-path-prefix: "npm:^3.0.0" - core-js-pure: "npm:^3.23.3" - error-stack-parser: "npm:^2.0.6" - find-up: "npm:^5.0.0" - html-entities: "npm:^2.1.0" - loader-utils: "npm:^2.0.4" - schema-utils: "npm:^3.0.0" - source-map: "npm:^0.7.3" - 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 - checksum: a9c8468417a14a23339e313cff6ddb8029e0637748973070e61d83a2534620b3492b9a42ecf9eb9d63cb709f53c17fe814bc7dd68d64c300db338e9fd7287bc4 - languageName: node - linkType: hard - -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.4.3": - version: 0.4.3 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.4.3" - dependencies: - ansi-html: "npm:^0.0.7" - error-stack-parser: "npm:^2.0.6" - html-entities: "npm:^1.2.1" - native-url: "npm:^0.2.6" - schema-utils: "npm:^2.6.5" - source-map: "npm:^0.7.3" - peerDependencies: - "@types/webpack": 4.x - react-refresh: ">=0.8.3 <0.10.0" - sockjs-client: ^1.4.0 - type-fest: ^0.13.1 - webpack: ">=4.43.0 <6.0.0" - webpack-dev-server: 3.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 - checksum: 8c0/c59979ebc3c0dbbfdc37eb53e238d050c519ba3c99e50ecc2953c5243fbc3ae4260956d79282aeaca0e33043564d345f8fc140788846d33257e905c2470c5f60 - languageName: node - linkType: hard - -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.1": - version: 0.5.4 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.4" - dependencies: - ansi-html-community: "npm:^0.0.8" - common-path-prefix: "npm:^3.0.0" - core-js-pure: "npm:^3.8.1" - error-stack-parser: "npm:^2.0.6" - find-up: "npm:^5.0.0" - html-entities: "npm:^2.1.0" - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - source-map: "npm:^0.7.3" - 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 <3.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 - checksum: 8c0/305f7f9ed8164f787d97a2e2c2a301c7b6c9fb193e8ddf83a3e47cc9231944e8904b53243cf69ac85f44d19f1517cf25765c4c3c19159a77be9c9f8972e7f2da - languageName: node - linkType: hard - -"@polka/url@npm:^1.0.0-next.24": - version: 1.0.0-next.24 - resolution: "@polka/url@npm:1.0.0-next.24" - checksum: 97d98fa911857158514457bedad8c36084c1f608302458f580ab300a25c3abf456d1d54fcf2ea7927464bee0858baf5e8e5b374b95c3375b9eb3784d81411ebd - languageName: node - linkType: hard - -"@popperjs/core@npm:^2.5.4, @popperjs/core@npm:^2.6.0": - version: 2.9.2 - resolution: "@popperjs/core@npm:2.9.2" - checksum: 8c0/6bb9db5dbb2ba9ec57e760eaef229539fd70e4d8c7fffc894d7487a4a4f3375b3b8be7be0df817ac15ef9b6c87605f58ec1450d988d7aebfb9b79b3fc42476fe - languageName: node - linkType: hard - -"@prisma/client@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/client@npm:2.22.1" - dependencies: - "@prisma/engines-version": "npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" - peerDependencies: - prisma: "*" - peerDependenciesMeta: - prisma: - optional: true - checksum: 8c0/9aedde07b6e7b886802d467da5f7de700645d7e652f85a6c0c546e60c6a11796328cdec914d6577a8d26337b921964aa11c8393fc355558db48e684f82387202 - languageName: node - linkType: hard - -"@prisma/client@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/client@npm:5.7.0" - peerDependencies: - prisma: "*" - peerDependenciesMeta: - prisma: - optional: true - checksum: f5a634a735fdcb9576f949a9ba84da48744db514ce853b04021c7a13c673081cfb110244f20f7985516c69a101000fefcecf51ad634fd2b9c41c6715bec1c014 - languageName: node - linkType: hard - -"@prisma/debug@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/debug@npm:2.22.1" - dependencies: - debug: "npm:4.3.2" - ms: "npm:^2.1.3" - checksum: 8c0/16818825e0f4f3d190709771ce5e1663a60f5da9d8550e6304b3dd35e383ef68578fc0e98aecdeee7d83a45134fcad7bb468edbbf4fa72a18af1885b013fcb58 - languageName: node - linkType: hard - -"@prisma/debug@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/debug@npm:5.7.0" - checksum: d8aa4a57bb853c163cc43d97f60475191ffade88423ec9e68d5358a70d0177662401d28ece9a161053da0148c35ed1e91c39d09c81458ddc9eccb9a8ab440651 - languageName: node - linkType: hard - -"@prisma/engine-core@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/engine-core@npm:2.22.1" - dependencies: - "@prisma/debug": "npm:2.22.1" - "@prisma/engines": "npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" - "@prisma/generator-helper": "npm:2.22.1" - "@prisma/get-platform": "npm:2.22.1" - chalk: "npm:^4.0.0" - execa: "npm:^5.0.0" - get-stream: "npm:^6.0.0" - indent-string: "npm:^4.0.0" - new-github-issue-url: "npm:^0.2.1" - p-retry: "npm:^4.2.0" - terminal-link: "npm:^2.1.1" - undici: "npm:3.3.6" - checksum: 8c0/9ff34678b512225dc0cdf6a3291bd41e43fa5fc0551374ff3173241147602c487286990d9a5096cbe0c12ea9f3b363e0147c87b085706ba72a9dc69725a72b4b - languageName: node - linkType: hard - -"@prisma/engines-version@npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c": - version: 2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c - resolution: "@prisma/engines-version@npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" - checksum: 8c0/e6de02d940e4b6e5d4519e0ff9aa94fefd8f2e76373b201ff755649488949c302eaa4344e76a4927ad8b289d128b155cc4209c9c4c16de0b31c46d116e9449d7 - languageName: node - linkType: hard - -"@prisma/engines-version@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9": - version: 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9 - resolution: "@prisma/engines-version@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - checksum: 14ca49380c7c1e930fb2748342b046ca73c383d17b1a0442ac080e75a541d35d7e44853449e476422c4b56edb7bbe1a3eff43a9034e7d47a61edf04c06f3d9f8 - languageName: node - linkType: hard - -"@prisma/engines@npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c": - version: 2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c - resolution: "@prisma/engines@npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" - checksum: 8c0/8a35a121c0c8e66142591be43a300259601349eb8c6f0bc762c78a326cfcbdb529bac31a0d322d474c4072133d797516664a5c5d9de63157c391ceea2280324e - languageName: node - linkType: hard - -"@prisma/engines@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/engines@npm:5.7.0" - dependencies: - "@prisma/debug": "npm:5.7.0" - "@prisma/engines-version": "npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - "@prisma/fetch-engine": "npm:5.7.0" - "@prisma/get-platform": "npm:5.7.0" - checksum: c128e6b4c99d3c7bfe144ee384ed16b4f97af475f47d1138caa3d335e1ba0d33a1d4c2113974878c307aba0473f0543df844b1f309f86a1061195101c1dd351e - languageName: node - linkType: hard - -"@prisma/fetch-engine@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/fetch-engine@npm:2.22.1" - dependencies: - "@prisma/debug": "npm:2.22.1" - "@prisma/get-platform": "npm:2.22.1" - chalk: "npm:^4.0.0" - execa: "npm:^5.0.0" - find-cache-dir: "npm:^3.3.1" - hasha: "npm:^5.2.0" - http-proxy-agent: "npm:^4.0.1" - https-proxy-agent: "npm:^5.0.0" - make-dir: "npm:^3.0.2" - node-fetch: "npm:^2.6.0" - p-filter: "npm:^2.1.0" - p-map: "npm:^4.0.0" - p-retry: "npm:^4.2.0" - progress: "npm:^2.0.3" - rimraf: "npm:^3.0.2" - temp-dir: "npm:^2.0.0" - tempy: "npm:^1.0.0" - checksum: 8c0/4a6be1f74766e1e5d05592281e517dbb9d60cd40671fde05adeea90ae67ef8d1236d5a62e74c1cd00864b49d68e318691ea9e398e4c45c28b4cd8ca12fc5fbee - languageName: node - linkType: hard - -"@prisma/fetch-engine@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/fetch-engine@npm:5.7.0" - dependencies: - "@prisma/debug": "npm:5.7.0" - "@prisma/engines-version": "npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - "@prisma/get-platform": "npm:5.7.0" - checksum: d5c7fe88700f9d29ed6b84c4d0613ad385725b298413f4c0d1cdb5b9d6b95ddcb28a2c2dc8491826c8cae065401879e8356bb1f98e90208f34db596f5c6d9425 - languageName: node - linkType: hard - -"@prisma/generator-helper@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/generator-helper@npm:2.22.1" - dependencies: - "@prisma/debug": "npm:2.22.1" - "@types/cross-spawn": "npm:^6.0.1" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - checksum: 8c0/780b0115db8c79fbe66816531a8a21438fe015e6f6068f3e80f7b2b890d90c00ec71a29e7bda1821e6a8bb48b555301881c6cc481fbf8b5f7a4efe88144923f7 - languageName: node - linkType: hard - -"@prisma/generator-helper@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/generator-helper@npm:5.7.0" - dependencies: - "@prisma/debug": "npm:5.7.0" - checksum: d848e196a2e57acd7ab17a474e34a4363f19d10a4d33815be75cb4fae840eee6bac65b59f3fdd11e4a852d55d7c13601192113a81036e16917c2ce1d956cac23 - languageName: node - linkType: hard - -"@prisma/get-platform@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/get-platform@npm:2.22.1" - dependencies: - "@prisma/debug": "npm:2.22.1" - checksum: 8c0/f8f89cac600b644d99d258f6c56b85d579607152eff3f370517b640ebd4bf549eeaef5a276581842b34c7981c72d32984b0963d2705ae0fb2a7ef626d978f886 - languageName: node - linkType: hard - -"@prisma/get-platform@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/get-platform@npm:5.7.0" - dependencies: - "@prisma/debug": "npm:5.7.0" - checksum: ed3ad91cb6c4887c7bc4df59771cf03e8150f13e51c460fe2acddb08b5181b1699ec852957537827fb7533d6861facd8cc31a7baa6a95f5ddd4bdd0604f77adc - languageName: node - linkType: hard - -"@prisma/internals@npm:5.7.0": - version: 5.7.0 - resolution: "@prisma/internals@npm:5.7.0" - dependencies: - "@prisma/debug": "npm:5.7.0" - "@prisma/engines": "npm:5.7.0" - "@prisma/fetch-engine": "npm:5.7.0" - "@prisma/generator-helper": "npm:5.7.0" - "@prisma/get-platform": "npm:5.7.0" - "@prisma/prisma-schema-wasm": "npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - arg: "npm:5.0.2" - prompts: "npm:2.4.2" - checksum: 5a63cd80efb6ac6271d9a25cdbe1964718658364523024054d0a21390d5881ba9071ec384710bffc973d48bf7ed30e48a9ecffa963bf87f59e0fc5f017d6b4f2 - languageName: node - linkType: hard - -"@prisma/prisma-schema-wasm@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9": - version: 5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9 - resolution: "@prisma/prisma-schema-wasm@npm:5.7.0-41.79fb5193cf0a8fdbef536e4b4a159cad677ab1b9" - checksum: ca4ca044a64c3002f88444fe59ff61b0ddec245d49b87c29ba2359719ff59c5162809574a3864b1abe6b9c67ae3ae75a8c86bb3113f18a2a62424da743c43b01 - languageName: node - linkType: hard - -"@prisma/sdk@npm:2.22.1": - version: 2.22.1 - resolution: "@prisma/sdk@npm:2.22.1" - dependencies: - "@prisma/debug": "npm:2.22.1" - "@prisma/engine-core": "npm:2.22.1" - "@prisma/engines": "npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" - "@prisma/fetch-engine": "npm:2.22.1" - "@prisma/generator-helper": "npm:2.22.1" - "@prisma/get-platform": "npm:2.22.1" - "@timsuchanek/copy": "npm:^1.4.5" - archiver: "npm:^4.0.0" - arg: "npm:^5.0.0" - chalk: "npm:4.1.1" - checkpoint-client: "npm:1.1.20" - cli-truncate: "npm:^2.1.0" - dotenv: "npm:^8.2.0" - execa: "npm:^5.0.0" - find-up: "npm:5.0.0" - global-dirs: "npm:^3.0.0" - globby: "npm:^11.0.0" - has-yarn: "npm:^2.1.0" - is-ci: "npm:^3.0.0" - make-dir: "npm:^3.0.2" - node-fetch: "npm:2.6.1" - p-map: "npm:^4.0.0" - read-pkg-up: "npm:^7.0.1" - resolve-pkg: "npm:^2.0.0" - rimraf: "npm:^3.0.2" - shell-quote: "npm:^1.7.2" - string-width: "npm:^4.2.0" - strip-ansi: "npm:6.0.0" - strip-indent: "npm:3.0.0" - tar: "npm:^6.0.1" - temp-dir: "npm:^2.0.0" - temp-write: "npm:^4.0.0" - tempy: "npm:^1.0.0" - terminal-link: "npm:^2.1.1" - tmp: "npm:0.2.1" - checksum: 8c0/28c3fc80548045e4ce64d50a83a27ae1c4b6fec5003bce558372e9893a6f864ea8d8b59075ef4121f1fe00beb68492aa7542bf7a6bfb9b0220420a2db1e3be04 - languageName: node - linkType: hard - -"@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/aspromise@npm:1.1.2" - checksum: 8c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f - languageName: node - linkType: hard - -"@protobufjs/base64@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/base64@npm:1.1.2" - checksum: 8c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 - languageName: node - linkType: hard - -"@protobufjs/codegen@npm:^2.0.4": - version: 2.0.4 - resolution: "@protobufjs/codegen@npm:2.0.4" - checksum: 8c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 - languageName: node - linkType: hard - -"@protobufjs/eventemitter@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/eventemitter@npm:1.1.0" - checksum: 8c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 - languageName: node - linkType: hard - -"@protobufjs/fetch@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/fetch@npm:1.1.0" - dependencies: - "@protobufjs/aspromise": "npm:^1.1.1" - "@protobufjs/inquire": "npm:^1.1.0" - checksum: 8c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 - languageName: node - linkType: hard - -"@protobufjs/float@npm:^1.0.2": - version: 1.0.2 - resolution: "@protobufjs/float@npm:1.0.2" - checksum: 8c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 - languageName: node - linkType: hard - -"@protobufjs/inquire@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/inquire@npm:1.1.0" - checksum: 8c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a - languageName: node - linkType: hard - -"@protobufjs/path@npm:^1.1.2": - version: 1.1.2 - resolution: "@protobufjs/path@npm:1.1.2" - checksum: 8c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 - languageName: node - linkType: hard - -"@protobufjs/pool@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/pool@npm:1.1.0" - checksum: 8c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 - languageName: node - linkType: hard - -"@protobufjs/utf8@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/utf8@npm:1.1.0" - checksum: 8c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 - languageName: node - linkType: hard - -"@radix-ui/primitive@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/primitive@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - checksum: 912216455537db3ca77f3e7f70174fb2b454fbd4a37a0acb7cfadad9ab6131abdfb787472242574460a3c301edf45738340cc84f6717982710082840fde7d916 - languageName: node - linkType: hard - -"@radix-ui/react-arrow@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-arrow@npm:1.0.3" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-primitive": "npm: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 - checksum: c931f6d7e0bac50fd1654a0303a303aff74a68a13a33a851a43a7c88677b53a92ca6557920b9105144a3002f899ce888437d20ddd7803a5c716edac99587626d - languageName: node - linkType: hard - -"@radix-ui/react-collection@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-collection@npm:1.0.3" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-slot": "npm:1.0.2" - 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 - checksum: cefa56383d7451ca79e4bd5a29aaeef6c205a04297213efd149aaead82fc8cde4fb8298e20e6b3613e5696e43f814fb4489805428f6604834fb31f73c6725fa8 - languageName: node - linkType: hard - -"@radix-ui/react-compose-refs@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-compose-refs@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: be06f8dab35b5a1bffa7a5982fb26218ddade1acb751288333e3b89d7b4a7dfb5a6371be83876dac0ec2ebe0866d295e8618b778608e1965342986ea448040ec - languageName: node - linkType: hard - -"@radix-ui/react-context@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-context@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 3de5761b32cc70cd61715527f29d8c699c01ab28c195ced972ccbc7025763a373a68f18c9f948c7a7b922e469fd2df7fee5f7536e3f7bad44ffc06d959359333 - languageName: node - linkType: hard - -"@radix-ui/react-dialog@npm:^1.0.4": - version: 1.0.5 - resolution: "@radix-ui/react-dialog@npm:1.0.5" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/primitive": "npm:1.0.1" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-dismissable-layer": "npm:1.0.5" - "@radix-ui/react-focus-guards": "npm:1.0.1" - "@radix-ui/react-focus-scope": "npm:1.0.4" - "@radix-ui/react-id": "npm:1.0.1" - "@radix-ui/react-portal": "npm:1.0.4" - "@radix-ui/react-presence": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-slot": "npm:1.0.2" - "@radix-ui/react-use-controllable-state": "npm:1.0.1" - aria-hidden: "npm:^1.1.1" - react-remove-scroll: "npm:2.5.5" - 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 - checksum: c5b3069397379e79857a3203f3ead4d12d87736b59899f02a63e620a07dd1e6704e15523926cdf8e39afe1c945a7ff0f2533c5ea5be1e17c3114820300a51133 - languageName: node - linkType: hard - -"@radix-ui/react-direction@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-direction@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: b1a45b4d1d5070ca3b5864b920f6c6210c962bdb519abb62b38b1baef9d06737dc3d8ecdb61860b7504a735235a539652f5977c7299ec021da84e6b0f64d988a - languageName: node - linkType: hard - -"@radix-ui/react-dismissable-layer@npm:1.0.5": - version: 1.0.5 - resolution: "@radix-ui/react-dismissable-layer@npm:1.0.5" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/primitive": "npm:1.0.1" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-use-callback-ref": "npm:1.0.1" - "@radix-ui/react-use-escape-keydown": "npm: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 - checksum: 7e4308867aecfb07b506330c1964d94a52247ab9453725613cd326762aa13e483423c250f107219c131b0449600eb8d1576ce3159c2b96e8c978f75e46062cb2 - languageName: node - linkType: hard - -"@radix-ui/react-dropdown-menu@npm:^2.0.5": - version: 2.0.6 - resolution: "@radix-ui/react-dropdown-menu@npm:2.0.6" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/primitive": "npm:1.0.1" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-id": "npm:1.0.1" - "@radix-ui/react-menu": "npm:2.0.6" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-use-controllable-state": "npm: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 - checksum: 525cab53547d2ce2904518b1f66b62179d656c57c8d6dd7dbe863cc05025d8bad535f44011e2735b07fc500579c3d64d89a9a39593d4c8f91f31052d75b729e1 - languageName: node - linkType: hard - -"@radix-ui/react-focus-guards@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-focus-guards@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: d5fd4e5aa9d9a87c8ad490b3b4992d6f1d9eddf18e56df2a2bcf8744c4332b275d73377fd193df3e6ba0ad9608dc497709beca5c64de2b834d5f5350b3c9a272 - languageName: node - linkType: hard - -"@radix-ui/react-focus-scope@npm:1.0.4": - version: 1.0.4 - resolution: "@radix-ui/react-focus-scope@npm:1.0.4" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-use-callback-ref": "npm: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 - checksum: 2fce0bafcab4e16cf4ed7560bda40654223f3d0add6b231e1c607433030c14e6249818b444b7b58ee7a6ff6bbf8e192c9c81d22c3a5c88c2daade9d1f881b5be - languageName: node - linkType: hard - -"@radix-ui/react-id@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-id@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-use-layout-effect": "npm:1.0.1" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: e2859ca58bea171c956098ace7ecf615cf9432f58a118b779a14720746b3adcf0351c36c75de131548672d3cd290ca238198acbd33b88dc4706f98312e9317ad - languageName: node - linkType: hard - -"@radix-ui/react-menu@npm:2.0.6": - version: 2.0.6 - resolution: "@radix-ui/react-menu@npm:2.0.6" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/primitive": "npm:1.0.1" - "@radix-ui/react-collection": "npm:1.0.3" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-direction": "npm:1.0.1" - "@radix-ui/react-dismissable-layer": "npm:1.0.5" - "@radix-ui/react-focus-guards": "npm:1.0.1" - "@radix-ui/react-focus-scope": "npm:1.0.4" - "@radix-ui/react-id": "npm:1.0.1" - "@radix-ui/react-popper": "npm:1.1.3" - "@radix-ui/react-portal": "npm:1.0.4" - "@radix-ui/react-presence": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-roving-focus": "npm:1.0.4" - "@radix-ui/react-slot": "npm:1.0.2" - "@radix-ui/react-use-callback-ref": "npm:1.0.1" - aria-hidden: "npm:^1.1.1" - react-remove-scroll: "npm:2.5.5" - 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 - checksum: 06926fa59cb8f5614f2e1a085ea1cbf09631ae28fb6e5d6e6d2a0a84d24979e3aca311cdb19dfdb254c1823ff85fd5250c29d4463f8f7622dd523e35df3fce1d - languageName: node - linkType: hard - -"@radix-ui/react-popper@npm:1.1.3": - version: 1.1.3 - resolution: "@radix-ui/react-popper@npm:1.1.3" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@floating-ui/react-dom": "npm:^2.0.0" - "@radix-ui/react-arrow": "npm:1.0.3" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-use-callback-ref": "npm:1.0.1" - "@radix-ui/react-use-layout-effect": "npm:1.0.1" - "@radix-ui/react-use-rect": "npm:1.0.1" - "@radix-ui/react-use-size": "npm:1.0.1" - "@radix-ui/rect": "npm: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 - checksum: a38c374ec65dd8d7c604af7151e96faec1743828d859dc4892e720c1803a7e1562add26aec2ddf2091defae4e15d989c028032ea481419e38c4693b3f12545c3 - languageName: node - linkType: hard - -"@radix-ui/react-portal@npm:1.0.4": - version: 1.0.4 - resolution: "@radix-ui/react-portal@npm:1.0.4" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-primitive": "npm: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 - checksum: fed32f8148b833fe852fb5e2f859979ffdf2fb9a9ef46583b9b52915d764ad36ba5c958a64e61d23395628ccc09d678229ee94cd112941e8fe2575021f820c29 - languageName: node - linkType: hard - -"@radix-ui/react-presence@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-presence@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-use-layout-effect": "npm: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 - checksum: 90780618b265fe794a8f1ddaa5bfd3c71a1127fa79330a14d32722e6265b44452a9dd36efe4e769129d33e57f979f6b8713e2cbf2e2755326aa3b0f337185b6e - languageName: node - linkType: hard - -"@radix-ui/react-primitive@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-primitive@npm:1.0.3" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-slot": "npm:1.0.2" - 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 - checksum: 67a66ff8898a5e7739eda228ab6f5ce808858da1dce967014138d87e72b6bbfc93dc1467c706d98d1a2b93bf0b6e09233d1a24d31c78227b078444c1a69c42be - languageName: node - linkType: hard - -"@radix-ui/react-roving-focus@npm:1.0.4": - version: 1.0.4 - resolution: "@radix-ui/react-roving-focus@npm:1.0.4" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/primitive": "npm:1.0.1" - "@radix-ui/react-collection": "npm:1.0.3" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-direction": "npm:1.0.1" - "@radix-ui/react-id": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-use-callback-ref": "npm:1.0.1" - "@radix-ui/react-use-controllable-state": "npm: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 - checksum: 61e3ddfd1647e64fba855434ff41e8e7ba707244fe8841f78c450fbdce525383b64259279475615d030dbf1625cbffd8eeebee72d91bf6978794f5dbcf887fc0 - languageName: node - linkType: hard - -"@radix-ui/react-slot@npm:1.0.2": - version: 1.0.2 - resolution: "@radix-ui/react-slot@npm:1.0.2" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-compose-refs": "npm:1.0.1" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 3af6ea4891e6fa8091e666802adffe7718b3cd390a10fa9229a5f40f8efded9f3918ea01b046103d93923d41cc32119505ebb6bde76cad07a87b6cf4f2119347 - languageName: node - linkType: hard - -"@radix-ui/react-tooltip@npm:^1.0.6": - version: 1.0.7 - resolution: "@radix-ui/react-tooltip@npm:1.0.7" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/primitive": "npm:1.0.1" - "@radix-ui/react-compose-refs": "npm:1.0.1" - "@radix-ui/react-context": "npm:1.0.1" - "@radix-ui/react-dismissable-layer": "npm:1.0.5" - "@radix-ui/react-id": "npm:1.0.1" - "@radix-ui/react-popper": "npm:1.1.3" - "@radix-ui/react-portal": "npm:1.0.4" - "@radix-ui/react-presence": "npm:1.0.1" - "@radix-ui/react-primitive": "npm:1.0.3" - "@radix-ui/react-slot": "npm:1.0.2" - "@radix-ui/react-use-controllable-state": "npm:1.0.1" - "@radix-ui/react-visually-hidden": "npm: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 - checksum: 915524ea9d102eb26e656c550a084ca460219041c0e7cec0e72b522ee52a43b4d725f4ad3352212f4ae88b3672ef7b23bad07844275cafea075ada590678d873 - languageName: node - linkType: hard - -"@radix-ui/react-use-callback-ref@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-use-callback-ref@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 331b432be1edc960ca148637ae6087220873ee828ceb13bd155926ef8f49e862812de5b379129f6aaefcd11be53715f3237e6caa9a33d9c0abfff43f3ba58938 - languageName: node - linkType: hard - -"@radix-ui/react-use-controllable-state@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-use-controllable-state@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-use-callback-ref": "npm:1.0.1" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 29b069dbf09e48bca321af6272574ad0fc7283174e7d092731a10663fe00c0e6b4bde5e1b5ea67725fe48dcbe8026e7ff0d69d42891c62cbb9ca408498171fbe - languageName: node - linkType: hard - -"@radix-ui/react-use-escape-keydown@npm:1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-use-escape-keydown@npm:1.0.3" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-use-callback-ref": "npm:1.0.1" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 3c94c78902dcb40b60083ee2184614f45c95a189178f52d89323b467bd04bcf5fdb1bc4d43debecd7f0b572c3843c7e04edbcb56f40a4b4b43936fb2770fb8ad - languageName: node - linkType: hard - -"@radix-ui/react-use-layout-effect@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-use-layout-effect@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 13cd0c38395c5838bc9a18238020d3bcf67fb340039e6d1cbf438be1b91d64cf6900b78121f3dc9219faeb40dcc7b523ce0f17e4a41631655690e5a30a40886a - languageName: node - linkType: hard - -"@radix-ui/react-use-rect@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-use-rect@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/rect": "npm:1.0.1" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 94c5ab31dfd3678c0cb77a30025e82b3a287577c1a8674b0d703a36d27434bc9c59790e0bebf57ed153f0b8e0d8c3b9675fc9787b9eac525a09abcda8fa9e7eb - languageName: node - linkType: hard - -"@radix-ui/react-use-size@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/react-use-size@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-use-layout-effect": "npm:1.0.1" - peerDependencies: - "@types/react": "*" - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: b109a4b3781781c4dc641a1173f0a6fcb0b0f7b2d7cdba5848a46070c9fb4e518909a46c20a3c2efbc78737c64859c59ead837f2940e8c8394d1c503ef58773b - languageName: node - linkType: hard - -"@radix-ui/react-visually-hidden@npm:1.0.3, @radix-ui/react-visually-hidden@npm:^1.0.3": - version: 1.0.3 - resolution: "@radix-ui/react-visually-hidden@npm:1.0.3" - dependencies: - "@babel/runtime": "npm:^7.13.10" - "@radix-ui/react-primitive": "npm: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 - checksum: 0cbc12c2156b3fa0e40090cafd8525ce84c16a6b5a038a8e8fc7cbb16ed6da9ab369593962c57a18c41a16ec8713e0195c68ea34072ef1ca254ed4d4c0770bb4 - languageName: node - linkType: hard - -"@radix-ui/rect@npm:1.0.1": - version: 1.0.1 - resolution: "@radix-ui/rect@npm:1.0.1" - dependencies: - "@babel/runtime": "npm:^7.13.10" - checksum: 4c5159661340acc31b11e1f2ebd87a1521d39bfa287544dd2cd75b399539a4b625d38a1501c90ceae21fcca18ed164b0c3735817ff140ae334098192c110e571 - languageName: node - linkType: hard - -"@reach/polymorphic@npm:0.18.0": - version: 0.18.0 - resolution: "@reach/polymorphic@npm:0.18.0" - peerDependencies: - react: ^16.8.0 || 17.x - checksum: 8c0/dfde6dc901005f92e16f0e3601f0c659b70ee14d91e612cd68c9a918744fd94de30e8065d73663b72964225d3476f377c650daf2ac1e256de61df9ee386aabdc - languageName: node - linkType: hard - -"@reach/skip-nav@npm:0.18.0": - version: 0.18.0 - resolution: "@reach/skip-nav@npm:0.18.0" - dependencies: - "@reach/polymorphic": "npm:0.18.0" - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x - checksum: 8c0/30e3d4c568093e170b9e80ee42764a080c0a15ab3f9c7edf78dcc6ebd92f156799dba0f544757b84401806765f60fe527c869ef86d5323c0a7a3bdccf1a68f85 - languageName: node - linkType: hard - -"@reach/skip-nav@npm:^0.15.0": - version: 0.15.3 - resolution: "@reach/skip-nav@npm:0.15.3" - dependencies: - "@reach/utils": "npm:0.15.3" - tslib: "npm:^2.3.0" - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x - checksum: 8c0/c92bfd1b2383b2349f1c053227147e25681d5c0b15f5daa184d06782e214663cee9838cf0a18109a5230aaaed002029f197c3cc4334cfd70d09f279cd7e3e6a6 - languageName: node - linkType: hard - -"@reach/utils@npm:0.15.3": - version: 0.15.3 - resolution: "@reach/utils@npm:0.15.3" - dependencies: - tiny-warning: "npm:^1.0.3" - tslib: "npm:^2.3.0" - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x - checksum: 8c0/56b163074ad13f67f89c2aeeca43e6758ca696d988db0d0e2bb049062a1258d9621ef0682eb1cea9240484904977c91878c63865cc0e7024e611cec1e9ded02f - languageName: node - linkType: hard - -"@react-spring/animated@npm:~9.7.3": - version: 9.7.3 - resolution: "@react-spring/animated@npm:9.7.3" - dependencies: - "@react-spring/shared": "npm:~9.7.3" - "@react-spring/types": "npm:~9.7.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 5151da4fa7da010bb2edbee05871aa7a4aea8763fe617389d17605810aa0dd817374205e5fb3930b650f4a7f25fcdf23205fdfb7365686ff75888bdfd0b39839 - languageName: node - linkType: hard - -"@react-spring/core@npm:~9.7.3": - version: 9.7.3 - resolution: "@react-spring/core@npm:9.7.3" - dependencies: - "@react-spring/animated": "npm:~9.7.3" - "@react-spring/shared": "npm:~9.7.3" - "@react-spring/types": "npm:~9.7.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: e28c05de8435bf2eaf8481f8acdf093909d4be9881a9a854c51dfac7c2d5562088d0fb2ce04e2f07e1b3bf621d8da3ab57bf6fedb4fdc954e3aa263bc1e393af - languageName: node - linkType: hard - -"@react-spring/shared@npm:~9.7.3": - version: 9.7.3 - resolution: "@react-spring/shared@npm:9.7.3" - dependencies: - "@react-spring/types": "npm:~9.7.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: afb03ed28ccf62efa4012e531c3659999bb364d1e0eb0fb729b962f9bd21a0b772a2d98e862062c9c32c06edf72327afcc45984d9eb22fdd961706b6ddf6950d - languageName: node - linkType: hard - -"@react-spring/types@npm:~9.7.3": - version: 9.7.3 - resolution: "@react-spring/types@npm:9.7.3" - checksum: d645044f3cc9ceb7c4f6c4d061aaf6660018568a1553d05638f56b3328c5f91597ee4118334abe22fc8f07f5ee02f054340170c1d52e11b3faea22888b5170d4 - languageName: node - linkType: hard - -"@react-spring/web@npm:9.4.5 || ^9.7.2": - version: 9.7.3 - resolution: "@react-spring/web@npm:9.7.3" - dependencies: - "@react-spring/animated": "npm:~9.7.3" - "@react-spring/core": "npm:~9.7.3" - "@react-spring/shared": "npm:~9.7.3" - "@react-spring/types": "npm:~9.7.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a5b4847a2921a29a3e8ce569f4951abeb268b6e8eb230f8c49d98709216b2b3a23ba1e58628c51c9eaa0bd20d83f9d7b8f8f03df98215e933de4c66c39e17fe1 - languageName: node - linkType: hard - -"@redis/bloom@npm:1.2.0": - version: 1.2.0 - resolution: "@redis/bloom@npm:1.2.0" - peerDependencies: - "@redis/client": ^1.0.0 - checksum: 8c0/7dde8e67188164e96226c8a5c78ebd2801f1662947371e78fb95fb180c1e9ddff8d237012eb5e9182775be61cb546f67f759927cdaee0d178d863ee290e1fb27 - languageName: node - linkType: hard - -"@redis/client@npm:1.5.8": - version: 1.5.8 - resolution: "@redis/client@npm:1.5.8" - dependencies: - cluster-key-slot: "npm:1.1.2" - generic-pool: "npm:3.9.0" - yallist: "npm:4.0.0" - checksum: 8c0/17e2225dc0874842943ba2fd9fb5fa8e95424948e73215aa7ee2060c42b4ccd373fc0bd657e85858630374338db6b203058e1c83b0794c5934bdbeb40e90d5dd - languageName: node - linkType: hard - -"@redis/graph@npm:1.1.0": - version: 1.1.0 - resolution: "@redis/graph@npm:1.1.0" - peerDependencies: - "@redis/client": ^1.0.0 - checksum: 8c0/2b30ea2a67a07b312f42b5fe1dce770c0559c153faaca64d53ef8a479438108b32260e9701d12addb50ccc4ea1df8a949ea5e802c13ead689c635d65bad1bc3a - languageName: node - linkType: hard - -"@redis/json@npm:1.0.4": - version: 1.0.4 - resolution: "@redis/json@npm:1.0.4" - peerDependencies: - "@redis/client": ^1.0.0 - checksum: 8c0/6c1585c046909125170c2d3c970e1b11680279df2ae58af1017b638c1c118a285cd83d1fc96d9826860071772ebe978d71dfc46a784862ac1e9c952633e757d0 - languageName: node - linkType: hard - -"@redis/search@npm:1.1.3": - version: 1.1.3 - resolution: "@redis/search@npm:1.1.3" - peerDependencies: - "@redis/client": ^1.0.0 - checksum: 8c0/3ca704b294a47ba21ad83d1caceb1b75c12c2e751b6e98a092cb42c97726071917f7249e00a162e4f76e196f3b4d0353539f3c6a2750d807f444ce3f78320817 - languageName: node - linkType: hard - -"@redis/time-series@npm:1.0.4": - version: 1.0.4 - resolution: "@redis/time-series@npm:1.0.4" - peerDependencies: - "@redis/client": ^1.0.0 - checksum: 8c0/ec637500f1544384724ed57542274b70f9f0c2f2a5253fcdb63c809322167996740f4effd3666e4984600684fb37eb79efe6ab09309e36b68c964cbd8789641c - languageName: node - linkType: hard - -"@redwoodjs/api-server@npm:6.0.7, @redwoodjs/api-server@workspace:../../packages/api-server": - version: 0.0.0-use.local - resolution: "@redwoodjs/api-server@workspace:../../packages/api-server" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" - "@fastify/url-data": "npm:5.4.0" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@types/aws-lambda": "npm:8.10.126" - "@types/lodash": "npm:4.14.201" - "@types/qs": "npm:6.9.11" - "@types/split2": "npm:4.2.3" - "@types/yargs": "npm:17.0.32" - ansi-colors: "npm:4.1.3" - aws-lambda: "npm:1.0.7" - chalk: "npm:4.1.2" - chokidar: "npm:3.5.3" - core-js: "npm:3.34.0" - dotenv-defaults: "npm:5.0.2" - fast-glob: "npm:3.3.2" - fast-json-parse: "npm:1.0.3" - fastify: "npm:4.24.3" - fastify-raw-body: "npm:4.3.0" - jest: "npm:29.7.0" - lodash: "npm:4.17.21" - pretty-bytes: "npm:5.6.0" - pretty-ms: "npm:7.0.1" - qs: "npm:6.11.2" - split2: "npm:4.2.0" - typescript: "npm:5.3.3" - yargs: "npm:17.7.2" - bin: - rw-api-server-watch: ./dist/watch.js - rw-log-formatter: ./dist/logFormatter/bin.js - rw-server: ./dist/index.js - languageName: unknown - linkType: soft - -"@redwoodjs/api-server@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/api-server@npm:0.32.2" - dependencies: - body-parser: "npm:^1.19.0" - chokidar: "npm:3.5.1" - dotenv-defaults: "npm:2.0.1" - express: "npm:^4.17.1" - glob: "npm:7.1.6" - http-proxy-middleware: "npm:^1.1.0" - lodash.escape: "npm:^4.0.1" - morgan: "npm:^1.10.0" - qs: "npm:^6.9.3" - yargs: "npm:^16.0.3" - youch: "npm:^2.2.2" - youch-terminal: "npm:^1.1.1" - bin: - api-server: dist/index.js - rw-api-server: dist/index.js - rw-api-server-watch: dist/watch.js - checksum: 8c0/1da6ea8a44cbc0efd2f1e146cbc4da61245b4e6932290890cc16243a91f72d626b99b86ca03348714e5206f75575c5813115dbc64857bfa08adc6b4dbd77e9d1 - languageName: node - linkType: hard - -"@redwoodjs/api@npm:0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/api@npm:0.32.2" - dependencies: - "@graphql-tools/merge": "npm:6.2.13" - "@prisma/client": "npm:2.22.1" - "@types/pino": "npm:^6.3.8" - apollo-server-lambda: "npm:2.22.2" - core-js: "npm:3.10.1" - graphql: "npm:15.5.0" - graphql-scalars: "npm:1.9.3" - jsonwebtoken: "npm:^8.5.1" - jwks-rsa: "npm:^1.8.1" - lodash.merge: "npm:^4.6.2" - lodash.omitby: "npm:^4.6.0" - pino: "npm:^6.11.3" - pino-pretty: "npm:^4.7.1" - checksum: 8c0/18f5430b17b82965b7a3c82f041d88e5e6b3c42de0adcab814288345d6eddb16eda2ae591bf89e05dd8c6adb16a96b633b62d57e12d9538674509563dad58779 - languageName: node - linkType: hard - -"@redwoodjs/api@npm:6.0.7, @redwoodjs/api@workspace:../../packages/api": - version: 0.0.0-use.local - resolution: "@redwoodjs/api@workspace:../../packages/api" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@prisma/client": "npm:5.7.0" - "@types/aws-lambda": "npm:8.10.126" - "@types/jsonwebtoken": "npm:9.0.5" - "@types/memjs": "npm:1" - "@types/pascalcase": "npm:1.0.3" - "@types/split2": "npm:4.2.3" - "@whatwg-node/fetch": "npm:0.9.14" - core-js: "npm:3.34.0" - humanize-string: "npm:2.1.0" - jest: "npm:29.7.0" - jsonwebtoken: "npm:9.0.2" - memjs: "npm:1.3.1" - pascalcase: "npm:1.0.0" - pino: "npm:8.16.2" - redis: "npm:4.6.7" - split2: "npm:4.2.0" - title-case: "npm:3.0.3" - ts-toolbelt: "npm:9.6.0" - typescript: "npm:5.3.3" - peerDependencies: - memjs: 1.3.1 - redis: 4.6.7 - peerDependenciesMeta: - memjs: - optional: true - redis: - optional: true - bin: - redwood: ./dist/bins/redwood.js - rw: ./dist/bins/redwood.js - rwfw: ./dist/bins/rwfw.js - tsc: ./dist/bins/tsc.js - languageName: unknown - linkType: soft - -"@redwoodjs/auth@npm:6.0.7, @redwoodjs/auth@workspace:../../packages/auth": - version: 0.0.0-use.local - resolution: "@redwoodjs/auth@workspace:../../packages/auth" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@testing-library/jest-dom": "npm:6.1.5" - "@testing-library/react": "npm:14.1.2" - core-js: "npm:3.34.0" - jest: "npm:29.7.0" - msw: "npm:1.3.2" - react: "npm:0.0.0-experimental-e5205658f-20230913" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/auth@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/auth@npm:0.32.2" - checksum: 8c0/9c8bb9fb84167d5c8e5819e453209a7e8e92b6d113abfd49c78ee78f205dc824eec8ccc59a907ecf87766bc3d853fdadb94a87ac1973805525c86b56e51e1ccf - languageName: node - linkType: hard - -"@redwoodjs/babel-config@npm:6.0.7, @redwoodjs/babel-config@workspace:../../packages/babel-config": - version: 0.0.0-use.local - resolution: "@redwoodjs/babel-config@workspace:../../packages/babel-config" - dependencies: - "@babel/core": "npm:^7.22.20" - "@babel/parser": "npm:^7.22.16" - "@babel/plugin-transform-class-properties": "npm:^7.22.5" - "@babel/plugin-transform-private-methods": "npm:^7.22.5" - "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11" - "@babel/plugin-transform-react-jsx": "npm:^7.22.15" - "@babel/plugin-transform-runtime": "npm:7.23.6" - "@babel/preset-env": "npm:^7.22.20" - "@babel/preset-react": "npm:^7.22.15" - "@babel/preset-typescript": "npm:^7.22.15" - "@babel/register": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" - "@babel/traverse": "npm:^7.22.20" - "@redwoodjs/project-config": "npm:6.0.7" - "@types/babel-plugin-tester": "npm:9.0.9" - "@types/babel__core": "npm:7.20.4" - babel-plugin-auto-import: "npm:1.1.0" - babel-plugin-graphql-tag: "npm:3.3.0" - babel-plugin-module-resolver: "npm:5.0.0" - babel-plugin-tester: "npm:11.0.4" - core-js: "npm:3.34.0" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - graphql: "npm:16.8.1" - jest: "npm:29.7.0" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/cli-helpers@npm:6.0.7, @redwoodjs/cli-helpers@workspace:../../packages/cli-helpers": - version: 0.0.0-use.local - resolution: "@redwoodjs/cli-helpers@workspace:../../packages/cli-helpers" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@iarna/toml": "npm:2.2.5" - "@opentelemetry/api": "npm:1.7.0" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/telemetry": "npm:6.0.7" - "@types/lodash": "npm:4.14.201" - "@types/pascalcase": "npm:1.0.3" - "@types/yargs": "npm:17.0.32" - chalk: "npm:4.1.2" - core-js: "npm:3.34.0" - dotenv: "npm:16.3.1" - execa: "npm:5.1.1" - jest: "npm:29.7.0" - listr2: "npm:6.6.1" - lodash: "npm:4.17.21" - pascalcase: "npm:1.0.0" - prettier: "npm:2.8.8" - prompts: "npm:2.4.2" - terminal-link: "npm:2.1.1" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/cli@npm:6.0.7, @redwoodjs/cli@workspace:../../packages/cli": - version: 0.0.0-use.local - resolution: "@redwoodjs/cli@workspace:../../packages/cli" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@iarna/toml": "npm:2.2.5" - "@opentelemetry/api": "npm:1.7.0" - "@opentelemetry/core": "npm:1.18.1" - "@opentelemetry/exporter-trace-otlp-http": "npm:0.45.1" - "@opentelemetry/resources": "npm:1.18.1" - "@opentelemetry/sdk-trace-node": "npm:1.18.1" - "@opentelemetry/semantic-conventions": "npm:1.18.1" - "@prisma/internals": "npm:5.7.0" - "@redwoodjs/api-server": "npm:6.0.7" - "@redwoodjs/cli-helpers": "npm:6.0.7" - "@redwoodjs/fastify": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/prerender": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/structure": "npm:6.0.7" - "@redwoodjs/telemetry": "npm:6.0.7" - "@types/archiver": "npm:^6" - archiver: "npm:6.0.1" - boxen: "npm:5.1.2" - camelcase: "npm:6.3.0" - chalk: "npm:4.1.2" - ci-info: "npm:4.0.0" - concurrently: "npm:8.2.2" - configstore: "npm:3.1.5" - core-js: "npm:3.34.0" - cross-env: "npm:7.0.3" - decamelize: "npm:5.0.1" - dotenv-defaults: "npm:5.0.2" - enquirer: "npm:2.4.1" - envinfo: "npm:7.11.0" - execa: "npm:5.1.1" - fast-glob: "npm:3.3.2" - fs-extra: "npm:11.2.0" - humanize-string: "npm:2.1.0" - jest: "npm:29.7.0" - latest-version: "npm:5.1.0" - listr2: "npm:6.6.1" - lodash: "npm:4.17.21" - param-case: "npm:3.0.4" - pascalcase: "npm:1.0.0" - pluralize: "npm:8.0.0" - portfinder: "npm:1.0.32" - prettier: "npm:2.8.8" - prisma: "npm:5.7.0" - prompts: "npm:2.4.2" - rimraf: "npm:5.0.5" - semver: "npm:7.5.4" - string-env-interpolation: "npm:1.0.1" - systeminformation: "npm:5.21.20" - terminal-link: "npm:2.1.1" - title-case: "npm:3.0.3" - typescript: "npm:5.3.3" - uuid: "npm:9.0.1" - yargs: "npm:17.7.2" - bin: - redwood: ./dist/index.js - rw: ./dist/index.js - rwfw: ./dist/rwfw.js - languageName: unknown - linkType: soft - -"@redwoodjs/cli@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/cli@npm:0.32.2" - dependencies: - "@prisma/sdk": "npm:2.22.1" - "@redwoodjs/api-server": "npm:^0.32.2" - "@redwoodjs/internal": "npm:^0.32.2" - "@redwoodjs/prerender": "npm:^0.32.2" - "@redwoodjs/structure": "npm:^0.32.2" - boxen: "npm:^5.0.1" - camelcase: "npm:^6.0.0" - chalk: "npm:^4.1.1" - concurrently: "npm:^6.0.2" - core-js: "npm:3.10.1" - cross-env: "npm:^7.0.2" - decamelize: "npm:^4.0.0" - dotenv-defaults: "npm:^2.0.1" - envinfo: "npm:^7.8.1" - execa: "npm:^5.0.0" - fs-extra: "npm:^10.0.0" - humanize-string: "npm:^2.1.0" - latest-version: "npm:^5.1.0" - listr: "npm:^0.14.3" - listr-verbose-renderer: "npm:^0.6.0" - lodash: "npm:^4.17.19" - param-case: "npm:^3.0.3" - pascalcase: "npm:^1.0.0" - pluralize: "npm:^8.0.0" - prettier: "npm:^2.2.1" - prompts: "npm:^2.4.1" - rimraf: "npm:^3.0.2" - terminal-link: "npm:^2.1.1" - yargs: "npm:^16.0.3" - bin: - redwood: dist/index.js - redwood-tools: dist/redwood-tools.js - rw: dist/index.js - rwt: dist/redwood-tools.js - checksum: 8c0/a9e18fa0adfccbd53712925eb2092cca702b71351996eb5aed57c929e5f6ad29c06a9fa43ec6471d77316eed92d449a13126ee3355651bc55f11b6321b40abb9 - languageName: node - linkType: hard - -"@redwoodjs/codemods@workspace:../../packages/codemods": - version: 0.0.0-use.local - resolution: "@redwoodjs/codemods@workspace:../../packages/codemods" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/parser": "npm:^7.22.16" - "@babel/plugin-transform-typescript": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" - "@babel/traverse": "npm:^7.22.20" - "@iarna/toml": "npm:2.2.5" - "@redwoodjs/project-config": "npm:6.0.7" - "@svgr/core": "npm:8.0.0" - "@svgr/plugin-jsx": "npm:8.0.1" - "@types/babel__core": "npm:7.20.4" - "@types/fs-extra": "npm:11.0.4" - "@types/jest": "npm:29.5.8" - "@types/jscodeshift": "npm:0.11.6" - "@types/prettier": "npm:2.7.3" - "@types/yargs": "npm:17.0.32" - "@vscode/ripgrep": "npm:1.15.6" - "@whatwg-node/fetch": "npm:0.9.14" - cheerio: "npm:1.0.0-rc.12" - core-js: "npm:3.34.0" - deepmerge: "npm:4.3.1" - execa: "npm:5.1.1" - fast-glob: "npm:3.3.2" - fs-extra: "npm:11.2.0" - graphql: "npm:16.8.1" - jest: "npm:29.7.0" - jscodeshift: "npm:0.15.0" - pascalcase: "npm:1.0.0" - prettier: "npm:2.8.8" - tasuku: "npm:2.0.1" - tempy: "npm:1.0.1" - typescript: "npm:5.3.3" - yargs: "npm:17.7.2" - bin: - codemods: ./dist/codemods.js - languageName: unknown - linkType: soft - -"@redwoodjs/context@npm:6.0.7, @redwoodjs/context@workspace:../../packages/context": - version: 0.0.0-use.local - resolution: "@redwoodjs/context@workspace:../../packages/context" - dependencies: - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - jest: "npm:29.7.0" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/core@npm:0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/core@npm:0.32.2" - dependencies: - "@babel/cli": "npm:7.13.14" - "@babel/core": "npm:7.13.16" - "@babel/node": "npm:7.13.13" - "@babel/plugin-proposal-class-properties": "npm:7.13.0" - "@babel/plugin-proposal-private-methods": "npm:7.13.0" - "@babel/plugin-transform-runtime": "npm:7.13.15" - "@babel/preset-env": "npm:7.13.15" - "@babel/preset-react": "npm:7.13.13" - "@babel/preset-typescript": "npm:7.13.0" - "@babel/runtime-corejs3": "npm:7.13.10" - "@pmmmwh/react-refresh-webpack-plugin": "npm:^0.4.3" - "@redwoodjs/cli": "npm:^0.32.2" - "@redwoodjs/dev-server": "npm:^0.32.2" - "@redwoodjs/eslint-config": "npm:^0.32.2" - "@redwoodjs/internal": "npm:^0.32.2" - "@redwoodjs/testing": "npm:^0.32.2" - "@storybook/addon-a11y": "npm:^6.2.9" - "@storybook/react": "npm:^6.1.21" - "@testing-library/jest-dom": "npm:5.11.6" - "@types/jest": "npm:^26.0.23" - "@types/node": "npm:^15.0.2" - "@types/react": "npm:17.0.5" - "@types/react-dom": "npm:^17.0.4" - "@types/webpack": "npm:^4.41.11" - babel-jest: "npm:^26.3.0" - babel-loader: "npm:^8.1.0" - babel-plugin-auto-import: "npm:1.1.0" - babel-plugin-graphql-tag: "npm:3.2.0" - babel-plugin-inline-react-svg: "npm:2.0.1" - babel-plugin-module-resolver: "npm:4.1.0" - copy-webpack-plugin: "npm:^6.1.0" - core-js: "npm:3.10.1" - css-loader: "npm:^4.2.2" - css-minimizer-webpack-plugin: "npm:^1.2.0" - dotenv-webpack: "npm:^2.0.0" - error-overlay-webpack-plugin: "npm:^0.4.1" - esbuild: "npm:0.11.20" - esbuild-loader: "npm:^2.10.0" - file-loader: "npm:^6.0.0" - findup-sync: "npm:^4.0.0" - glob: "npm:7.1.6" - graphql: "npm:^15.3.0" - graphql-tag: "npm:^2.12.4" - html-webpack-plugin: "npm:^4.0.2" - jest: "npm:^26.4.2" - jest-watch-typeahead: "npm:^0.6.3" - lodash.escaperegexp: "npm:^4.1.2" - mini-css-extract-plugin: "npm:^1.4.1" - null-loader: "npm:^4.0.1" - prisma: "npm:2.22.1" - react-refresh: "npm:^0.10.0" - style-loader: "npm:^1.1.3" - svg-react-loader: "npm:^0.4.6" - terser-webpack-plugin: "npm:^4.2.3" - typescript: "npm:^4.2.4" - url-loader: "npm:4.1.0" - webpack: "npm:^4.42.1" - webpack-bundle-analyzer: "npm:^3.6.1" - webpack-cli: "npm:^3.3.11" - webpack-dev-server: "npm:^3.10.3" - webpack-manifest-plugin: "npm:^3.0.0" - webpack-merge: "npm:^5.1.2" - webpack-retry-chunk-load-plugin: "npm:^1.4.0" - whatwg-fetch: "npm:^3.5.0" - bin: - rw-api-build: esbuild/index.js - checksum: 8c0/68a36fe236d093ca1fe376eb1f6bec038ae8ccfcf82c88b1bf3fdd1e0e8d78016a879fdbf6297bf618342e564b608013ee9df66c0c6827b1340b77f3c0a31901 - languageName: node - linkType: hard - -"@redwoodjs/core@workspace:../../packages/core": - version: 0.0.0-use.local - resolution: "@redwoodjs/core@workspace:../../packages/core" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/runtime-corejs3": "npm:7.23.6" - "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.11" - "@redwoodjs/cli": "npm:6.0.7" - "@redwoodjs/eslint-config": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/testing": "npm:6.0.7" - "@redwoodjs/web-server": "npm:6.0.7" - "@types/lodash": "npm:4.14.201" - babel-loader: "npm:^9.1.3" - babel-timing: "npm:0.9.1" - copy-webpack-plugin: "npm:11.0.0" - core-js: "npm:3.34.0" - css-loader: "npm:6.8.1" - css-minimizer-webpack-plugin: "npm:5.0.1" - dotenv-webpack: "npm:8.0.1" - graphql-tag: "npm:2.12.6" - html-webpack-plugin: "npm:5.5.4" - jest: "npm:29.7.0" - lodash: "npm:4.17.21" - mini-css-extract-plugin: "npm:2.7.6" - nodemon: "npm:3.0.2" - null-loader: "npm:4.0.1" - react-refresh: "npm:0.14.0" - resolve-url-loader: "npm:5.0.0" - rimraf: "npm:5.0.5" - style-loader: "npm:3.3.3" - typescript: "npm:5.3.3" - url-loader: "npm:4.1.1" - webpack: "npm:5.89.0" - webpack-bundle-analyzer: "npm:4.9.1" - webpack-cli: "npm:5.1.4" - webpack-dev-server: "npm:4.15.1" - webpack-manifest-plugin: "npm:5.0.0" - webpack-merge: "npm:5.10.0" - webpack-retry-chunk-load-plugin: "npm:3.1.1" - bin: - cross-env: ./dist/bins/cross-env.js - eslint: ./dist/bins/eslint.js - jest: ./dist/bins/jest.js - nodemon: ./dist/bins/nodemon.js - redwood: ./dist/bins/redwood.js - rw: ./dist/bins/redwood.js - rw-api-server-watch: ./dist/bins/rw-api-server-watch.js - rw-dev-fe: ./dist/bins/rw-dev-fe.js - rw-gen: ./dist/bins/rw-gen.js - rw-gen-watch: ./dist/bins/rw-gen-watch.js - rw-log-formatter: ./dist/bins/rw-log-formatter.js - rw-serve-api: ./dist/bins/rw-serve-api.js - rw-serve-fe: ./dist/bins/rw-serve-fe.js - rw-web-server: ./dist/bins/rw-web-server.js - rwfw: ./dist/bins/rwfw.js - languageName: unknown - linkType: soft - -"@redwoodjs/dev-server@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/dev-server@npm:0.32.2" - dependencies: - "@babel/register": "npm:7.13.14" - "@redwoodjs/internal": "npm:^0.32.2" - body-parser: "npm:^1.19.0" - chokidar: "npm:^3.4.3" - express: "npm:^4.17.1" - morgan: "npm:^1.10.0" - qs: "npm:^6.9.3" - require-dir: "npm:^1.2.0" - yargs: "npm:^16.0.3" - youch: "npm:^2.2.2" - youch-terminal: "npm:^1.1.1" - bin: - dev-server: dist/main.js - checksum: 8c0/0fb704aa64cbf4ead219ccc6dbb63c85ce22a661f033aa2f09358b52dee79bddcf8fa7d4de8d530a99d0429759ee26e39c5c33f6f6184d250308388ab95e33a2 - languageName: node - linkType: hard - -"@redwoodjs/eslint-config@npm:6.0.7, @redwoodjs/eslint-config@workspace:../../packages/eslint-config": - version: 0.0.0-use.local - resolution: "@redwoodjs/eslint-config@workspace:../../packages/eslint-config" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/eslint-parser": "npm:7.23.3" - "@babel/eslint-plugin": "npm:7.23.5" - "@redwoodjs/eslint-plugin": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@typescript-eslint/eslint-plugin": "npm:5.62.0" - "@typescript-eslint/parser": "npm:5.62.0" - eslint: "npm:8.55.0" - eslint-config-prettier: "npm:8.10.0" - eslint-import-resolver-babel-module: "npm:5.3.2" - eslint-plugin-babel: "npm:5.3.1" - eslint-plugin-import: "npm:2.29.0" - eslint-plugin-jest-dom: "npm:4.0.3" - eslint-plugin-jsx-a11y: "npm:6.8.0" - eslint-plugin-prettier: "npm:4.2.1" - eslint-plugin-react: "npm:7.33.2" - eslint-plugin-react-hooks: "npm:4.6.0" - jest: "npm:29.7.0" - prettier: "npm:2.8.8" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/eslint-config@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/eslint-config@npm:0.32.2" - dependencies: - "@redwoodjs/eslint-plugin-redwood": "npm:^0.32.2" - "@typescript-eslint/eslint-plugin": "npm:^4.23.0" - "@typescript-eslint/parser": "npm:^4.23.0" - babel-eslint: "npm:^10.1.0" - eslint: "npm:^7.25.0" - eslint-config-prettier: "npm:^8.3.0" - eslint-import-resolver-babel-module: "npm:^5.3.1" - eslint-plugin-babel: "npm:^5.3.1" - eslint-plugin-import: "npm:^2.22.1" - eslint-plugin-jest-dom: "npm:^3.8.1" - eslint-plugin-jsx-a11y: "npm:^6.4.1" - eslint-plugin-prettier: "npm:^3.4.0" - eslint-plugin-react: "npm:^7.23.2" - eslint-plugin-react-hooks: "npm:^4.2.0" - prettier: "npm:^2.2.1" - checksum: 8c0/2db698aa55c84dc25e23493443114f8bbd6b68abfd54272c8152091eb0b1712b3fb307e63ba32332b85c8d1e21b66b9e8ebe32733f7d0e1576d74a349d8fb762 - languageName: node - linkType: hard - -"@redwoodjs/eslint-plugin-redwood@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/eslint-plugin-redwood@npm:0.32.2" - checksum: 8c0/8e70b9f9de7af8626514bf1f3b7593d0878bb693138ae3fc97ca3c9ada812018ecd7c54423bbe39c38d0a52175b6dda409e0d37733d3248fc823dfbfc468cfe2 - languageName: node - linkType: hard - -"@redwoodjs/eslint-plugin@npm:6.0.7, @redwoodjs/eslint-plugin@workspace:../../packages/eslint-plugin": - version: 0.0.0-use.local - resolution: "@redwoodjs/eslint-plugin@workspace:../../packages/eslint-plugin" - dependencies: - "@types/eslint": "npm:8" - "@types/estree": "npm:1.0.5" - "@typescript-eslint/parser": "npm:5.62.0" - "@typescript-eslint/utils": "npm:5.62.0" - esbuild: "npm:0.19.9" - eslint: "npm:8.55.0" - fast-glob: "npm:3.3.2" - glob: "npm:10.3.10" - tsx: "npm:4.6.2" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/fastify@npm:6.0.7, @redwoodjs/fastify@workspace:../../packages/fastify": - version: 0.0.0-use.local - resolution: "@redwoodjs/fastify@workspace:../../packages/fastify" - dependencies: - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" - "@fastify/url-data": "npm:5.4.0" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/graphql-server": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@types/aws-lambda": "npm:8.10.126" - "@types/lodash": "npm:4.14.201" - "@types/qs": "npm:6.9.11" - ansi-colors: "npm:4.1.3" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - fastify: "npm:4.24.3" - fastify-raw-body: "npm:4.3.0" - lodash: "npm:4.17.21" - qs: "npm:6.11.2" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/forms@workspace:../../packages/forms": - version: 0.0.0-use.local - resolution: "@redwoodjs/forms@workspace:../../packages/forms" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@testing-library/dom": "npm:9.3.3" - "@testing-library/jest-dom": "npm:6.1.5" - "@testing-library/react": "npm:14.1.2" - "@testing-library/user-event": "npm:14.5.1" - "@types/pascalcase": "npm:1.0.3" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" - core-js: "npm:3.34.0" - graphql: "npm:16.8.1" - jest: "npm:29.7.0" - nodemon: "npm:3.0.2" - pascalcase: "npm:1.0.0" - react: "npm:0.0.0-experimental-e5205658f-20230913" - react-dom: "npm:0.0.0-experimental-e5205658f-20230913" - react-hook-form: "npm:7.48.2" - typescript: "npm:5.3.3" - peerDependencies: - graphql: 16.8.1 - react: 0.0.0-experimental-e5205658f-20230913 - languageName: unknown - linkType: soft - -"@redwoodjs/graphql-server@npm:6.0.7, @redwoodjs/graphql-server@workspace:../../packages/graphql-server": - version: 0.0.0-use.local - resolution: "@redwoodjs/graphql-server@workspace:../../packages/graphql-server" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@envelop/core": "npm:4.0.3" - "@envelop/depth-limit": "npm:3.0.3" - "@envelop/disable-introspection": "npm:5.0.3" - "@envelop/filter-operation-type": "npm:5.0.3" - "@envelop/on-resolve": "npm:3.0.3" - "@envelop/testing": "npm:6.0.3" - "@envelop/types": "npm:4.0.1" - "@escape.tech/graphql-armor": "npm:2.3.1" - "@graphql-tools/merge": "npm:9.0.1" - "@graphql-tools/schema": "npm:10.0.2" - "@graphql-tools/utils": "npm:10.0.11" - "@graphql-yoga/plugin-persisted-operations": "npm:2.0.5" - "@opentelemetry/api": "npm:1.7.0" - "@redwoodjs/api": "npm:6.0.7" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/realtime": "npm:6.0.7" - "@types/jsonwebtoken": "npm:9.0.5" - "@types/lodash": "npm:4.14.201" - "@types/uuid": "npm:9.0.7" - "@whatwg-node/fetch": "npm:0.9.14" - aws-lambda: "npm:1.0.7" - core-js: "npm:3.34.0" - graphql: "npm:16.8.1" - graphql-scalars: "npm:1.22.4" - graphql-tag: "npm:2.12.6" - graphql-yoga: "npm:4.0.4" - jest: "npm:29.7.0" - jsonwebtoken: "npm:9.0.2" - lodash: "npm:4.17.21" - typescript: "npm:5.3.3" - uuid: "npm:9.0.1" - languageName: unknown - linkType: soft - -"@redwoodjs/internal@npm:6.0.7, @redwoodjs/internal@workspace:../../packages/internal": - version: 0.0.0-use.local - resolution: "@redwoodjs/internal@workspace:../../packages/internal" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/parser": "npm:^7.22.16" - "@babel/plugin-transform-react-jsx": "npm:^7.22.15" - "@babel/plugin-transform-typescript": "npm:^7.22.15" - "@babel/runtime-corejs3": "npm:7.23.6" - "@babel/traverse": "npm:^7.22.20" - "@graphql-codegen/add": "npm:4.0.1" - "@graphql-codegen/cli": "npm:3.3.1" - "@graphql-codegen/client-preset": "npm:4.1.0" - "@graphql-codegen/core": "npm:3.1.0" - "@graphql-codegen/fragment-matcher": "npm:5.0.0" - "@graphql-codegen/schema-ast": "npm:3.0.1" - "@graphql-codegen/typed-document-node": "npm:5.0.1" - "@graphql-codegen/typescript": "npm:3.0.4" - "@graphql-codegen/typescript-operations": "npm:3.0.4" - "@graphql-codegen/typescript-react-apollo": "npm:3.3.7" - "@graphql-codegen/typescript-resolvers": "npm:3.2.1" - "@graphql-tools/documents": "npm:1.0.0" - "@redwoodjs/babel-config": "npm:6.0.7" - "@redwoodjs/graphql-server": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/router": "npm:6.0.7" - "@sdl-codegen/node": "npm:0.0.10" - "@types/fs-extra": "npm:11.0.4" - chalk: "npm:4.1.2" - core-js: "npm:3.34.0" - deepmerge: "npm:4.3.1" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - fs-extra: "npm:11.2.0" - graphql: "npm:16.8.1" - graphql-tag: "npm:2.12.6" - jest: "npm:29.7.0" - kill-port: "npm:1.6.1" - prettier: "npm:2.8.8" - rimraf: "npm:5.0.5" - source-map: "npm:0.7.4" - string-env-interpolation: "npm:1.0.1" - systeminformation: "npm:5.21.20" - terminal-link: "npm:2.1.1" - ts-node: "npm:10.9.1" - tsx: "npm:4.6.2" - typescript: "npm:5.3.3" - bin: - rw-gen: ./dist/generate/generate.js - rw-gen-watch: ./dist/generate/watch.js - languageName: unknown - linkType: soft - -"@redwoodjs/internal@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/internal@npm:0.32.2" - dependencies: - "@babel/plugin-transform-typescript": "npm:7.13.0" - deepmerge: "npm:^4.2.2" - findup-sync: "npm:^4.0.0" - glob: "npm:7.1.6" - kill-port: "npm:^1.6.1" - prettier: "npm:^2.2.1" - toml: "npm:^3.0.0" - checksum: 8c0/a2bba24aa894ed014465b6f2e9a83c0706689364d1fbc352ec953a4bea7905b40a5b0a980e04a99e8879069b1969a55e5d5f91913a6621c677942cee31b4db0a - languageName: node - linkType: hard - -"@redwoodjs/prerender@npm:6.0.7, @redwoodjs/prerender@workspace:../../packages/prerender": - version: 0.0.0-use.local - resolution: "@redwoodjs/prerender@workspace:../../packages/prerender" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@redwoodjs/auth": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/router": "npm:6.0.7" - "@redwoodjs/structure": "npm:6.0.7" - "@redwoodjs/web": "npm:6.0.7" - "@types/mime-types": "npm:2.1.4" - "@whatwg-node/fetch": "npm:0.9.14" - babel-plugin-ignore-html-and-css-imports: "npm:0.1.0" - babel-plugin-tester: "npm:11.0.4" - cheerio: "npm:1.0.0-rc.12" - core-js: "npm:3.34.0" - graphql: "npm:16.8.1" - jest: "npm:29.7.0" - mime-types: "npm:2.1.35" - typescript: "npm:5.3.3" - peerDependencies: - react: 0.0.0-experimental-e5205658f-20230913 - react-dom: 0.0.0-experimental-e5205658f-20230913 - languageName: unknown - linkType: soft - -"@redwoodjs/prerender@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/prerender@npm:0.32.2" - dependencies: - "@babel/register": "npm:7.13.14" - "@redwoodjs/auth": "npm:^0.32.2" - "@redwoodjs/internal": "npm:^0.32.2" - "@redwoodjs/router": "npm:^0.32.2" - "@redwoodjs/structure": "npm:^0.32.2" - "@redwoodjs/web": "npm:^0.32.2" - babel-plugin-ignore-html-and-css-imports: "npm:^0.1.0" - node-fetch: "npm:^2.6.1" - peerDependencies: - react: "*" - react-dom: "*" - checksum: 8c0/252fdbdfb0fa6debd5e972cedc570d85aa75de7b2d17693107368abf384aaea62662bab795831ade1fe15aae20592c13d34296e749ef7dd110f561b9cfc736cb - languageName: node - linkType: hard - -"@redwoodjs/project-config@npm:6.0.7, @redwoodjs/project-config@workspace:../../packages/project-config": - version: 0.0.0-use.local - resolution: "@redwoodjs/project-config@workspace:../../packages/project-config" - dependencies: - "@iarna/toml": "npm:2.2.5" - deepmerge: "npm:4.3.1" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - jest: "npm:29.7.0" - rimraf: "npm:5.0.5" - string-env-interpolation: "npm:1.0.1" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/realtime@npm:6.0.7, @redwoodjs/realtime@workspace:../../packages/realtime": - version: 0.0.0-use.local - resolution: "@redwoodjs/realtime@workspace:../../packages/realtime" - dependencies: - "@envelop/core": "npm:4.0.3" - "@envelop/live-query": "npm:6.0.3" - "@envelop/testing": "npm:6.0.3" - "@envelop/types": "npm:4.0.1" - "@graphql-tools/schema": "npm:10.0.2" - "@graphql-tools/utils": "npm:10.0.11" - "@graphql-yoga/plugin-defer-stream": "npm:2.0.5" - "@graphql-yoga/plugin-graphql-sse": "npm:2.0.5" - "@graphql-yoga/redis-event-target": "npm:2.0.0" - "@graphql-yoga/subscription": "npm:4.0.0" - "@n1ru4l/graphql-live-query": "npm:0.10.0" - "@n1ru4l/in-memory-live-query-store": "npm:0.10.0" - esbuild: "npm:0.19.9" - graphql: "npm:16.8.1" - ioredis: "npm:^5.3.2" - jest: "npm:29.7.0" - nodemon: "npm:3.0.2" - typescript: "npm:5.3.3" - peerDependencies: - ioredis: ^5.3.2 - peerDependenciesMeta: - ioredis: - optional: true - languageName: unknown - linkType: soft - -"@redwoodjs/record@workspace:../../packages/record": - version: 0.0.0-use.local - resolution: "@redwoodjs/record@workspace:../../packages/record" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@prisma/client": "npm:5.7.0" - "@prisma/internals": "npm:5.7.0" - "@redwoodjs/project-config": "npm:6.0.7" - core-js: "npm:3.34.0" - esbuild: "npm:0.19.9" - jest: "npm:29.7.0" - languageName: unknown - linkType: soft - -"@redwoodjs/router@npm:0.32.2, @redwoodjs/router@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/router@npm:0.32.2" - dependencies: - "@reach/skip-nav": "npm:^0.15.0" - "@redwoodjs/auth": "npm:^0.32.2" - core-js: "npm:3.10.1" - lodash.isequal: "npm:^4.5.0" - checksum: 8c0/3a79ee187227f757b08405638d434dc21b98d91ebfc0e207dc9fdb32ddfb4f7ca4d975ee3c68aee9b9603e7e3df9b4fd2c0a028f61d384be4c547ec1368b4914 - languageName: node - linkType: hard - -"@redwoodjs/router@npm:6.0.7, @redwoodjs/router@workspace:../../packages/router": - version: 0.0.0-use.local - resolution: "@redwoodjs/router@workspace:../../packages/router" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@reach/skip-nav": "npm:0.18.0" - "@redwoodjs/auth": "npm:6.0.7" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" - core-js: "npm:3.34.0" - jest: "npm:29.7.0" - react: "npm:0.0.0-experimental-e5205658f-20230913" - react-dom: "npm:0.0.0-experimental-e5205658f-20230913" - tstyche: "npm:1.0.0-beta.3" - typescript: "npm:5.3.3" - peerDependencies: - react: 0.0.0-experimental-e5205658f-20230913 - react-dom: 0.0.0-experimental-e5205658f-20230913 - languageName: unknown - linkType: soft - -"@redwoodjs/structure@npm:6.0.7, @redwoodjs/structure@workspace:../../packages/structure": - version: 0.0.0-use.local - resolution: "@redwoodjs/structure@workspace:../../packages/structure" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@iarna/toml": "npm:2.2.5" - "@prisma/internals": "npm:5.7.0" - "@redwoodjs/project-config": "npm:6.0.7" - "@types/fs-extra": "npm:11.0.4" - "@types/line-column": "npm:1.0.0" - "@types/lodash": "npm:4.14.201" - "@types/lru-cache": "npm:7.10.10" - "@types/node": "npm:20.10.4" - "@types/vscode": "npm:1.79.1" - camelcase: "npm:6.3.0" - core-js: "npm:3.34.0" - deepmerge: "npm:4.3.1" - dotenv-defaults: "npm:5.0.2" - enquirer: "npm:2.4.1" - fast-glob: "npm:3.3.2" - graphql: "npm:16.8.1" - jest: "npm:29.7.0" - lazy-get-decorator: "npm:2.2.1" - line-column: "npm:1.0.2" - lodash: "npm:4.17.21" - lodash-decorators: "npm:6.0.1" - lru-cache: "npm:7.18.3" - proxyquire: "npm:2.1.3" - ts-morph: "npm:15.1.0" - typescript: "npm:5.3.3" - vscode-languageserver: "npm:6.1.1" - vscode-languageserver-textdocument: "npm:1.0.8" - vscode-languageserver-types: "npm:3.17.3" - yargs-parser: "npm:21.1.1" - languageName: unknown - linkType: soft - -"@redwoodjs/structure@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/structure@npm:0.32.2" - dependencies: - "@prisma/sdk": "npm:2.22.1" - "@redwoodjs/internal": "npm:^0.32.2" - "@types/line-column": "npm:^1.0.0" - camelcase: "npm:^6.0.0" - deepmerge: "npm:^4.2.2" - dotenv-defaults: "npm:^2.0.1" - enquirer: "npm:2.3.6" - findup-sync: "npm:^4.0.0" - graphql: "npm:^15.3.0" - lazy-get-decorator: "npm:^2.2.0" - line-column: "npm:^1.0.2" - lodash: "npm:^4.17.19" - lodash-decorators: "npm:^6.0.1" - lru-cache: "npm:^6.0.0" - proxyquire: "npm:^2.1.3" - toml: "npm:^3.0.0" - ts-morph: "npm:^10.0.2" - vscode-languageserver: "npm:6.1.1" - vscode-languageserver-textdocument: "npm:1.0.1" - vscode-languageserver-types: "npm:3.15.1" - yargs-parser: "npm:^18.1.3" - checksum: 8c0/376ffbd3f5422f1f293e234d09ded0bd9ad8861e87a02bd093840034d027b1739d05e7b474131c2e3fa29b45e159aaed4b1531ce5830fb30d722862e769e7c95 - languageName: node - linkType: hard - -"@redwoodjs/studio@workspace:../../packages/studio": - version: 0.0.0-use.local - resolution: "@redwoodjs/studio@workspace:../../packages/studio" - dependencies: - "@apollo/client": "npm:3.8.8" - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" - "@fastify/url-data": "npm:5.4.0" - "@graphiql/plugin-explorer": "npm:0.1.22" - "@graphiql/toolkit": "npm:0.8.4" - "@headlessui/react": "npm:1.7.15" - "@heroicons/react": "npm:2.0.18" - "@nivo/bar": "npm:0.83.0" - "@nivo/core": "npm:0.83.0" - "@nivo/tooltip": "npm:0.83.0" - "@nivo/treemap": "npm:0.83.0" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@swc/cli": "npm:0.1.62" - "@swc/core": "npm:1.3.60" - "@swc/core-darwin-arm64": "npm:1.3.60" - "@swc/core-darwin-x64": "npm:1.3.60" - "@swc/core-linux-arm-gnueabihf": "npm:1.3.60" - "@swc/core-linux-arm64-gnu": "npm:1.3.60" - "@swc/core-linux-arm64-musl": "npm:1.3.60" - "@swc/core-linux-x64-gnu": "npm:1.3.60" - "@swc/core-linux-x64-musl": "npm:1.3.60" - "@swc/core-win32-arm64-msvc": "npm:1.3.60" - "@swc/core-win32-ia32-msvc": "npm:1.3.60" - "@swc/core-win32-x64-msvc": "npm:1.3.60" - "@tailwindcss/forms": "npm:0.5.3" - "@tremor/react": "npm:3.4.1" - "@types/aws-lambda": "npm:8.10.126" - "@types/jsonwebtoken": "npm:9.0.5" - "@types/lodash": "npm:4.14.201" - "@types/mailparser": "npm:3" - "@types/qs": "npm:6.9.11" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" - "@types/react-grid-layout": "npm:1" - "@types/smtp-server": "npm:3" - "@types/split2": "npm:4.2.3" - "@types/uuid": "npm:9.0.7" - "@types/yargs": "npm:17.0.32" - "@vitejs/plugin-react": "npm:4.2.1" - ansi-colors: "npm:4.1.3" - autoprefixer: "npm:10.4.16" - aws-lambda: "npm:1.0.7" - buffer: "npm:6.0.3" - chokidar: "npm:3.5.3" - core-js: "npm:3.34.0" - dotenv: "npm:16.3.1" - fast-json-parse: "npm:1.0.3" - fastify: "npm:4.24.3" - fastify-raw-body: "npm:4.3.0" - graphiql: "npm:3.0.10" - graphql: "npm:16.8.1" - graphql-scalars: "npm:1.22.4" - graphql-yoga: "npm:4.0.4" - jest: "npm:29.7.0" - json-bigint-patch: "npm:0.0.8" - jsonwebtoken: "npm:9.0.2" - lodash: "npm:4.17.21" - mailparser: "npm:3.6.5" - postcss: "npm:8.4.31" - pretty-bytes: "npm:5.6.0" - pretty-ms: "npm:7.0.1" - qs: "npm:6.11.2" - react: "npm:0.0.0-experimental-e5205658f-20230913" - react-dom: "npm:0.0.0-experimental-e5205658f-20230913" - react-error-boundary: "npm:4.0.11" - react-grid-layout: "npm:1.3.4" - react-router-dom: "npm:6.8.1" - react-split-pane: "npm:0.1.92" - react-toastify: "npm:9.1.3" - smtp-server: "npm:3.13.0" - split2: "npm:4.2.0" - sqlite: "npm:4.2.1" - sqlite3: "npm:5.1.6" - tailwindcss: "npm:3.3.5" - typescript: "npm:5.3.3" - use-url-search-params: "npm:2.5.1" - uuid: "npm:9.0.1" - vite: "npm:4.5.1" - yargs: "npm:17.7.2" - dependenciesMeta: - "@swc/core-darwin-arm64": - optional: true - "@swc/core-darwin-x64": - optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true - "@swc/core-linux-arm64-gnu": - optional: true - "@swc/core-linux-arm64-musl": - optional: true - "@swc/core-linux-x64-gnu": - optional: true - "@swc/core-linux-x64-musl": - optional: true - "@swc/core-win32-arm64-msvc": - optional: true - "@swc/core-win32-ia32-msvc": - optional: true - "@swc/core-win32-x64-msvc": - optional: true - languageName: unknown - linkType: soft - -"@redwoodjs/telemetry@npm:6.0.7, @redwoodjs/telemetry@workspace:../../packages/telemetry": - version: 0.0.0-use.local - resolution: "@redwoodjs/telemetry@workspace:../../packages/telemetry" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/structure": "npm:6.0.7" - "@types/envinfo": "npm:7.8.3" - "@types/uuid": "npm:9.0.7" - "@types/yargs": "npm:17.0.32" - "@whatwg-node/fetch": "npm:0.9.14" - ci-info: "npm:4.0.0" - core-js: "npm:3.34.0" - envinfo: "npm:7.11.0" - jest: "npm:29.7.0" - systeminformation: "npm:5.21.20" - uuid: "npm:9.0.1" - yargs: "npm:17.7.2" - languageName: unknown - linkType: soft - -"@redwoodjs/testing@npm:6.0.7, @redwoodjs/testing@workspace:../../packages/testing": - version: 0.0.0-use.local - resolution: "@redwoodjs/testing@workspace:../../packages/testing" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@redwoodjs/auth": "npm:6.0.7" - "@redwoodjs/babel-config": "npm:6.0.7" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/graphql-server": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/router": "npm:6.0.7" - "@redwoodjs/web": "npm:6.0.7" - "@testing-library/jest-dom": "npm:6.1.5" - "@testing-library/react": "npm:14.1.2" - "@testing-library/user-event": "npm:14.5.1" - "@types/aws-lambda": "npm:8.10.126" - "@types/babel-core": "npm:6.25.10" - "@types/jest": "npm:29.5.8" - "@types/node": "npm:20.10.4" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" - "@types/webpack": "npm:5.28.5" - "@types/webpack-env": "npm:1.18.4" - babel-jest: "npm:^29.7.0" - core-js: "npm:3.34.0" - fast-glob: "npm:3.3.2" - jest: "npm:29.7.0" - jest-environment-jsdom: "npm:29.7.0" - jest-watch-typeahead: "npm:2.2.2" - msw: "npm:1.3.2" - ts-toolbelt: "npm:9.6.0" - typescript: "npm:5.3.3" - whatwg-fetch: "npm:3.6.19" - languageName: unknown - linkType: soft - -"@redwoodjs/testing@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/testing@npm:0.32.2" - dependencies: - "@redwoodjs/auth": "npm:^0.32.2" - "@redwoodjs/internal": "npm:^0.32.2" - "@redwoodjs/router": "npm:^0.32.2" - "@redwoodjs/web": "npm:^0.32.2" - "@testing-library/react": "npm:11.2.6" - "@types/react": "npm:17.0.5" - msw: "npm:^0.28.2" - checksum: 8c0/9328c941fc59336dfdc312e2f80e803c3b9ece96c89ef6d028a2c8f0f15dfaf1e653e19ab50e9d61e9b8ddf67b201b380ef9ca2669edc7688f1f39ef0e7eee2d - languageName: node - linkType: hard - -"@redwoodjs/tui@npm:6.0.7, @redwoodjs/tui@workspace:../../packages/tui": - version: 0.0.0-use.local - resolution: "@redwoodjs/tui@workspace:../../packages/tui" - dependencies: - boxen: "npm:5.1.2" - chalk: "npm:4.1.2" - enquirer: "npm:2.4.1" - esbuild: "npm:0.19.9" - jest: "npm:29.7.0" - stdout-update: "npm:1.6.8" - typescript: "npm:5.3.3" - languageName: unknown - linkType: soft - -"@redwoodjs/vite@workspace:../../packages/vite": - version: 0.0.0-use.local - resolution: "@redwoodjs/vite@workspace:../../packages/vite" - dependencies: - "@babel/cli": "npm:7.23.4" - "@babel/runtime-corejs3": "npm:7.23.6" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/web": "npm:6.0.7" - "@swc/core": "npm:1.3.60" - "@types/busboy": "npm:^1" - "@types/express": "npm:4" - "@types/react": "npm:18.2.37" - "@types/yargs-parser": "npm:21.0.3" - "@vitejs/plugin-react": "npm:4.2.1" - "@whatwg-node/server": "npm:0.9.18" - acorn-loose: "npm:8.3.0" - buffer: "npm:6.0.3" - busboy: "npm:^1.6.0" - core-js: "npm:3.34.0" - dotenv-defaults: "npm:5.0.2" - express: "npm:4.18.2" - glob: "npm:10.3.10" - http-proxy-middleware: "npm:2.0.6" - isbot: "npm:3.7.1" - jest: "npm:29.7.0" - react: "npm:0.0.0-experimental-e5205658f-20230913" - react-server-dom-webpack: "npm:0.0.0-experimental-e5205658f-20230913" - rollup: "npm:3.29.4" - typescript: "npm:5.3.3" - vite: "npm:4.5.1" - yargs-parser: "npm:21.1.1" - bin: - rw-dev-fe: ./dist/devFeServer.js - rw-serve-fe: ./dist/runFeServer.js - rw-vite-build: ./bins/rw-vite-build.mjs - rw-vite-dev: ./bins/rw-vite-dev.mjs - vite: ./bins/vite.mjs - languageName: unknown - linkType: soft - -"@redwoodjs/web-server@npm:6.0.7, @redwoodjs/web-server@workspace:../../packages/web-server": - version: 0.0.0-use.local - resolution: "@redwoodjs/web-server@workspace:../../packages/web-server" - dependencies: - "@fastify/http-proxy": "npm:9.3.0" - "@fastify/static": "npm:6.12.0" - "@fastify/url-data": "npm:5.4.0" - "@redwoodjs/project-config": "npm:6.0.7" - "@types/yargs-parser": "npm:21.0.3" - chalk: "npm:4.1.2" - dotenv-defaults: "npm:5.0.2" - esbuild: "npm:0.19.9" - fast-glob: "npm:3.3.2" - fastify: "npm:4.24.3" - typescript: "npm:5.3.3" - yargs-parser: "npm:21.1.1" - bin: - rw-web-server: ./dist/server.js - languageName: unknown - linkType: soft - -"@redwoodjs/web@npm:0.32.2, @redwoodjs/web@npm:^0.32.2": - version: 0.32.2 - resolution: "@redwoodjs/web@npm:0.32.2" - dependencies: - "@apollo/client": "npm:^3.3.15" - "@redwoodjs/auth": "npm:^0.32.2" - core-js: "npm:3.10.1" - graphql: "npm:^15.3.0" - proptypes: "npm:^1.1.0" - react-hot-toast: "npm:^1.0.2" - peerDependencies: - react: ^17.0.2 - checksum: 8c0/8a717f5138fbafc4a5e79d86f583c38e6b3d48f7d922ffb09fad025c9acea1f37ca1c389affdca833f886dc99d2c5218ba870b14bd72ec43e5a41876aebf35db - languageName: node - linkType: hard - -"@redwoodjs/web@npm:6.0.7, @redwoodjs/web@workspace:../../packages/web": - version: 0.0.0-use.local - resolution: "@redwoodjs/web@workspace:../../packages/web" - dependencies: - "@apollo/client": "npm:3.8.8" - "@apollo/experimental-nextjs-app-support": "npm:0.5.1" - "@babel/cli": "npm:7.23.4" - "@babel/core": "npm:^7.22.20" - "@babel/runtime-corejs3": "npm:7.23.6" - "@redwoodjs/auth": "npm:6.0.7" - "@testing-library/jest-dom": "npm:6.1.5" - "@testing-library/react": "npm:14.1.2" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" - core-js: "npm:3.34.0" - graphql: "npm:16.8.1" - graphql-sse: "npm:2.4.0" - graphql-tag: "npm:2.12.6" - jest: "npm:29.7.0" - nodemon: "npm:3.0.2" - react: "npm:0.0.0-experimental-e5205658f-20230913" - react-dom: "npm:0.0.0-experimental-e5205658f-20230913" - react-helmet-async: "npm:1.3.0" - react-hot-toast: "npm:2.4.1" - stacktracey: "npm:2.1.8" - ts-toolbelt: "npm:9.6.0" - tstyche: "npm:1.0.0-beta.3" - typescript: "npm:5.3.3" - peerDependencies: - react: 0.0.0-experimental-e5205658f-20230913 - react-dom: 0.0.0-experimental-e5205658f-20230913 - bin: - cross-env: ./dist/bins/cross-env.js - msw: ./dist/bins/msw.js - redwood: ./dist/bins/redwood.js - rw: ./dist/bins/redwood.js - rwfw: ./dist/bins/rwfw.js - storybook: ./dist/bins/storybook.js - tsc: ./dist/bins/tsc.js - webpack: ./dist/bins/webpack.js - languageName: unknown - linkType: soft - -"@remix-run/router@npm:1.3.2": - version: 1.3.2 - resolution: "@remix-run/router@npm:1.3.2" - checksum: 0c2113e9dfd327391c498d8fe5dae5fba801099e87dc6f2df1421a8722c7c3f82df809950efdcf9258b4886237393b59b4c31d229585a68d495379c09a58cce7 - languageName: node - linkType: hard - -"@repeaterjs/repeater@npm:3.0.4, @repeaterjs/repeater@npm:^3.0.4": - version: 3.0.4 - resolution: "@repeaterjs/repeater@npm:3.0.4" - checksum: 8c0/9a2928d70f2be4a8f72857f8f7553810015ac970f174b4b20f07289644379af57fa68947601d67e557c1a7c33ddf805e787cf2a1d5e9037ba485d24075a81b6b - languageName: node - linkType: hard - -"@samverschueren/stream-to-observable@npm:^0.3.0": - version: 0.3.1 - resolution: "@samverschueren/stream-to-observable@npm:0.3.1" - dependencies: - any-observable: "npm:^0.3.0" - peerDependenciesMeta: - rxjs: - optional: true - zen-observable: - optional: true - checksum: 8c0/0d874453f6bc2460d71783292291f52feb36c2a75314b1072a6ffe6206562f33e9d664a554348d565a6b54da9041d75070371052545bc329caaa52f64216987f - languageName: node - linkType: hard - -"@sdl-codegen/node@npm:0.0.10": - version: 0.0.10 - resolution: "@sdl-codegen/node@npm:0.0.10" - dependencies: - "@mrleebo/prisma-ast": "npm:^0.5.2" - ts-morph: "npm:^18.0.0" - peerDependencies: - graphql: "*" - prettier: ^2 - typescript: "*" - peerDependenciesMeta: - prettier: - optional: true - checksum: 8c0/275247e686cc999d91623d67ce09171f9ed17764616bb7941877439ce44b1cba305ac049e91981660cd8690f18d797cd27cecdf26cf436eb81895093e0223f42 - languageName: node - linkType: hard - -"@selderee/plugin-htmlparser2@npm:^0.11.0": - version: 0.11.0 - resolution: "@selderee/plugin-htmlparser2@npm:0.11.0" - dependencies: - domhandler: "npm:^5.0.3" - selderee: "npm:^0.11.0" - checksum: e938ba9aeb31a9cf30dcb2977ef41685c598bf744bedc88c57aa9e8b7e71b51781695cf99c08aac50773fd7714eba670bd2a079e46db0788abe40c6d220084eb - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.21 - resolution: "@sinclair/typebox@npm:0.25.21" - checksum: 8c0/91f05280667de321118310a43fa32038618c5c914a0a883d1d37184a1f6448041211d92a28d4ee0d506ffb5737ccbd4447106cd7c8b180d6d018771260d84576 - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.27.8": - version: 0.27.8 - resolution: "@sinclair/typebox@npm:0.27.8" - checksum: 8c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^0.14.0": - version: 0.14.0 - resolution: "@sindresorhus/is@npm:0.14.0" - checksum: 8c0/7247aa9314d4fc3df9b3f63d8b5b962a89c7600a5db1f268546882bfc4d31a975a899f5f42a09dd41a11e58636e6402f7c40f92df853aee417247bb11faee9a0 - languageName: node - linkType: hard - -"@sindresorhus/is@npm:^4.0.0": - version: 4.6.0 - resolution: "@sindresorhus/is@npm:4.6.0" - checksum: 33b6fb1d0834ec8dd7689ddc0e2781c2bfd8b9c4e4bacbcb14111e0ae00621f2c264b8a7d36541799d74888b5dccdf422a891a5cb5a709ace26325eedc81e22e - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.3 - resolution: "@sinonjs/commons@npm:1.8.3" - dependencies: - type-detect: "npm:4.0.8" - checksum: 8c0/e4d2471feb19f735654f798fcdf389b90fab5913da609f566b04c4cdd9131a97e897d565251d35389aeebcca70a22ab4ed2291c7f7927706ead12e4f94841bf1 - languageName: node - linkType: hard - -"@sinonjs/commons@npm:^2.0.0": - version: 2.0.0 - resolution: "@sinonjs/commons@npm:2.0.0" - dependencies: - type-detect: "npm:4.0.8" - checksum: 8c0/babe3fdfc7dfb810f6918f2ae055032a1c7c18910595f1c6bfda87bb1737c1a57268d4ca78c3d8ad2fa4aae99ff79796fad76be735a5a38ab763c0b3cfad1ae7 - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^10.0.2": - version: 10.0.2 - resolution: "@sinonjs/fake-timers@npm:10.0.2" - dependencies: - "@sinonjs/commons": "npm:^2.0.0" - checksum: 8c0/24555ed94053319fa18d4efa0923b295a445a00d2515d260b9e4e2b5943bd8b5b55fee85baabb2819a13ca1f57dbc1949265a350f592eef9e2535ec9de711ebc - languageName: node - linkType: hard - -"@sinonjs/fake-timers@npm:^6.0.1": - version: 6.0.1 - resolution: "@sinonjs/fake-timers@npm:6.0.1" - dependencies: - "@sinonjs/commons": "npm:^1.7.0" - checksum: 8c0/a77bead4d71b40d6f7f9a3ad66a00269aa2c078260f43f594b8aed4676c6c4e7c2b642d4b8e34df314e1c971589455f7b4267ab831bf44ffdccc0bda599850ad - languageName: node - linkType: hard - -"@storybook/addon-a11y@npm:^6.2.9": - version: 6.4.18 - resolution: "@storybook/addon-a11y@npm:6.4.18" - dependencies: - "@storybook/addons": "npm:6.4.18" - "@storybook/api": "npm:6.4.18" - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/components": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/theming": "npm:6.4.18" - axe-core: "npm:^4.2.0" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - react-sizeme: "npm:^3.0.1" - regenerator-runtime: "npm:^0.13.7" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - checksum: 8c0/abc614c88873ff69ccd468b723d2874aef7e3185ccbc3560e6466bcb654736831533891776d57c8049ee8a1150e79ac0f7e06b5e76261dccf4d1c861acff6c52 - languageName: node - linkType: hard - -"@storybook/addons@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/addons@npm:6.4.18" - dependencies: - "@storybook/api": "npm:6.4.18" - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/router": "npm:6.4.18" - "@storybook/theming": "npm:6.4.18" - "@types/webpack-env": "npm:^1.16.0" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - regenerator-runtime: "npm:^0.13.7" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/06364c9db398257bcf4696bd5aa1dbd496a315d99fa45d3cef29f5ecb9ec853d989e6f1d73d5cf4d7f10180c06a0c44e222246adf2d416ebe52a48eb89751299 - languageName: node - linkType: hard - -"@storybook/api@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/api@npm:6.4.18" - dependencies: - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/router": "npm:6.4.18" - "@storybook/semver": "npm:^7.3.2" - "@storybook/theming": "npm:6.4.18" - core-js: "npm:^3.8.2" - fast-deep-equal: "npm:^3.1.3" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - memoizerific: "npm:^1.11.3" - regenerator-runtime: "npm:^0.13.7" - store2: "npm:^2.12.0" - telejson: "npm:^5.3.2" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/7e84ebd862081c53fae1e26ad0cd9c22965fb3c8733fa80da909329a6fccebd9940d3fe1d3cb82e45f570c10389e88cea309f095efdea95994c92db1a8db1160 - languageName: node - linkType: hard - -"@storybook/builder-webpack4@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/builder-webpack4@npm:6.4.18" - dependencies: - "@babel/core": "npm:^7.12.10" - "@babel/plugin-proposal-class-properties": "npm:^7.12.1" - "@babel/plugin-proposal-decorators": "npm:^7.12.12" - "@babel/plugin-proposal-export-default-from": "npm:^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.12.1" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.12.1" - "@babel/plugin-proposal-optional-chaining": "npm:^7.12.7" - "@babel/plugin-proposal-private-methods": "npm:^7.12.1" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-transform-arrow-functions": "npm:^7.12.1" - "@babel/plugin-transform-block-scoping": "npm:^7.12.12" - "@babel/plugin-transform-classes": "npm:^7.12.1" - "@babel/plugin-transform-destructuring": "npm:^7.12.1" - "@babel/plugin-transform-for-of": "npm:^7.12.1" - "@babel/plugin-transform-parameters": "npm:^7.12.1" - "@babel/plugin-transform-shorthand-properties": "npm:^7.12.1" - "@babel/plugin-transform-spread": "npm:^7.12.1" - "@babel/plugin-transform-template-literals": "npm:^7.12.1" - "@babel/preset-env": "npm:^7.12.11" - "@babel/preset-react": "npm:^7.12.10" - "@babel/preset-typescript": "npm:^7.12.7" - "@storybook/addons": "npm:6.4.18" - "@storybook/api": "npm:6.4.18" - "@storybook/channel-postmessage": "npm:6.4.18" - "@storybook/channels": "npm:6.4.18" - "@storybook/client-api": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/components": "npm:6.4.18" - "@storybook/core-common": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/node-logger": "npm:6.4.18" - "@storybook/preview-web": "npm:6.4.18" - "@storybook/router": "npm:6.4.18" - "@storybook/semver": "npm:^7.3.2" - "@storybook/store": "npm:6.4.18" - "@storybook/theming": "npm:6.4.18" - "@storybook/ui": "npm:6.4.18" - "@types/node": "npm:^14.0.10" - "@types/webpack": "npm:^4.41.26" - autoprefixer: "npm:^9.8.6" - babel-loader: "npm:^8.0.0" - babel-plugin-macros: "npm:^2.8.0" - babel-plugin-polyfill-corejs3: "npm:^0.1.0" - case-sensitive-paths-webpack-plugin: "npm:^2.3.0" - core-js: "npm:^3.8.2" - css-loader: "npm:^3.6.0" - file-loader: "npm:^6.2.0" - find-up: "npm:^5.0.0" - fork-ts-checker-webpack-plugin: "npm:^4.1.6" - glob: "npm:^7.1.6" - glob-promise: "npm:^3.4.0" - global: "npm:^4.4.0" - html-webpack-plugin: "npm:^4.0.0" - pnp-webpack-plugin: "npm:1.6.4" - postcss: "npm:^7.0.36" - postcss-flexbugs-fixes: "npm:^4.2.1" - postcss-loader: "npm:^4.2.0" - raw-loader: "npm:^4.0.2" - stable: "npm:^0.1.8" - style-loader: "npm:^1.3.0" - terser-webpack-plugin: "npm:^4.2.3" - ts-dedent: "npm:^2.0.0" - url-loader: "npm:^4.1.1" - util-deprecate: "npm:^1.0.2" - webpack: "npm:4" - webpack-dev-middleware: "npm:^3.7.3" - webpack-filter-warnings-plugin: "npm:^1.2.1" - webpack-hot-middleware: "npm:^2.25.1" - webpack-virtual-modules: "npm:^0.2.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/d703b41fe704860a62c9382b507a2ba0384fcdd7df3446eb68497129e9b3f2caad02688aadd26566bd50facd4da2360e9714961b0c300d47c6169ed7142aad86 - languageName: node - linkType: hard - -"@storybook/channel-postmessage@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/channel-postmessage@npm:6.4.18" - dependencies: - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - qs: "npm:^6.10.0" - telejson: "npm:^5.3.2" - checksum: 8c0/f202c76258450cf86acfcfe6c91e7e68a51fc0ab6ebc976738d7b47fcc33ac4e15c8dcb8a6570abcaf1553cd93a1136d63e401cde36340ee7d6bdf58f75d75f6 - languageName: node - linkType: hard - -"@storybook/channel-websocket@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/channel-websocket@npm:6.4.18" - dependencies: - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - telejson: "npm:^5.3.2" - checksum: 8c0/1c2f87d9aa87da94d02fbc90b4d14277a707394e5f1f14349e62df193a699eab68b39e4f44f483a9e0a43c0d8367c6d16649ce40e815ab4d53cacd2cb7894412 - languageName: node - linkType: hard - -"@storybook/channels@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/channels@npm:6.4.18" - dependencies: - core-js: "npm:^3.8.2" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 8c0/debdc005eba1ae96c0bf93d263bc54ddb95f4c5e80cd54cd14d122bfdc5c9979454c3e42fb50963ec37b2c088b33d642ebb30a6932e04baa0c0a4d7e3d9d7365 - languageName: node - linkType: hard - -"@storybook/client-api@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/client-api@npm:6.4.18" - dependencies: - "@storybook/addons": "npm:6.4.18" - "@storybook/channel-postmessage": "npm:6.4.18" - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/store": "npm:6.4.18" - "@types/qs": "npm:^6.9.5" - "@types/webpack-env": "npm:^1.16.0" - core-js: "npm:^3.8.2" - fast-deep-equal: "npm:^3.1.3" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - memoizerific: "npm:^1.11.3" - qs: "npm:^6.10.0" - regenerator-runtime: "npm:^0.13.7" - store2: "npm:^2.12.0" - synchronous-promise: "npm:^2.0.15" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/f0551e524e1fc3a0d68d87c37a5bf1565a4c7abc4f547db8fba4d17f0bbd0ffd5f8083cb74dce56264b41b4c64e13e53a4b4d16b31e49967fa1feddd5ff1b9e5 - languageName: node - linkType: hard - -"@storybook/client-logger@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/client-logger@npm:6.4.18" - dependencies: - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - checksum: 8c0/c8496258da99b98aae509c9293962285788bdb28162a5c83155a9a56c5cc3a46115d90421a5a9f74df3143e943b22b12f73710de5178e305ed86cfe94d0574bb - languageName: node - linkType: hard - -"@storybook/components@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/components@npm:6.4.18" - dependencies: - "@popperjs/core": "npm:^2.6.0" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/theming": "npm:6.4.18" - "@types/color-convert": "npm:^2.0.0" - "@types/overlayscrollbars": "npm:^1.12.0" - "@types/react-syntax-highlighter": "npm:11.0.5" - color-convert: "npm:^2.0.1" - core-js: "npm:^3.8.2" - fast-deep-equal: "npm:^3.1.3" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - markdown-to-jsx: "npm:^7.1.3" - memoizerific: "npm:^1.11.3" - overlayscrollbars: "npm:^1.13.1" - polished: "npm:^4.0.5" - prop-types: "npm:^15.7.2" - react-colorful: "npm:^5.1.2" - react-popper-tooltip: "npm:^3.1.1" - react-syntax-highlighter: "npm:^13.5.3" - react-textarea-autosize: "npm:^8.3.0" - regenerator-runtime: "npm:^0.13.7" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/f88a1015d3cff3386520ec329d16c080da768ae4885f05044455bcfc33f8dee98979e5d8a223258dd3b3d09490d82e1ab0a468b5afa42fd3c6be19e846557b52 - languageName: node - linkType: hard - -"@storybook/core-client@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/core-client@npm:6.4.18" - dependencies: - "@storybook/addons": "npm:6.4.18" - "@storybook/channel-postmessage": "npm:6.4.18" - "@storybook/channel-websocket": "npm:6.4.18" - "@storybook/client-api": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/preview-web": "npm:6.4.18" - "@storybook/store": "npm:6.4.18" - "@storybook/ui": "npm:6.4.18" - airbnb-js-shims: "npm:^2.2.1" - ansi-to-html: "npm:^0.6.11" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - qs: "npm:^6.10.0" - regenerator-runtime: "npm:^0.13.7" - ts-dedent: "npm:^2.0.0" - unfetch: "npm:^4.2.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - webpack: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/d49a5ff7f017c6ed4242fc7ecd31a1d4bb108651cdd4f4b2076cab365e6f746bff4a92b77affae022fa9150b8e0eae102e95f210aa21d3aaecc6f6be1a66dadb - languageName: node - linkType: hard - -"@storybook/core-common@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/core-common@npm:6.4.18" - dependencies: - "@babel/core": "npm:^7.12.10" - "@babel/plugin-proposal-class-properties": "npm:^7.12.1" - "@babel/plugin-proposal-decorators": "npm:^7.12.12" - "@babel/plugin-proposal-export-default-from": "npm:^7.12.1" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.12.1" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.12.1" - "@babel/plugin-proposal-optional-chaining": "npm:^7.12.7" - "@babel/plugin-proposal-private-methods": "npm:^7.12.1" - "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" - "@babel/plugin-transform-arrow-functions": "npm:^7.12.1" - "@babel/plugin-transform-block-scoping": "npm:^7.12.12" - "@babel/plugin-transform-classes": "npm:^7.12.1" - "@babel/plugin-transform-destructuring": "npm:^7.12.1" - "@babel/plugin-transform-for-of": "npm:^7.12.1" - "@babel/plugin-transform-parameters": "npm:^7.12.1" - "@babel/plugin-transform-shorthand-properties": "npm:^7.12.1" - "@babel/plugin-transform-spread": "npm:^7.12.1" - "@babel/preset-env": "npm:^7.12.11" - "@babel/preset-react": "npm:^7.12.10" - "@babel/preset-typescript": "npm:^7.12.7" - "@babel/register": "npm:^7.12.1" - "@storybook/node-logger": "npm:6.4.18" - "@storybook/semver": "npm:^7.3.2" - "@types/node": "npm:^14.0.10" - "@types/pretty-hrtime": "npm:^1.0.0" - babel-loader: "npm:^8.0.0" - babel-plugin-macros: "npm:^3.0.1" - babel-plugin-polyfill-corejs3: "npm:^0.1.0" - chalk: "npm:^4.1.0" - core-js: "npm:^3.8.2" - express: "npm:^4.17.1" - file-system-cache: "npm:^1.0.5" - find-up: "npm:^5.0.0" - fork-ts-checker-webpack-plugin: "npm:^6.0.4" - fs-extra: "npm:^9.0.1" - glob: "npm:^7.1.6" - handlebars: "npm:^4.7.7" - interpret: "npm:^2.2.0" - json5: "npm:^2.1.3" - lazy-universal-dotenv: "npm:^3.0.1" - picomatch: "npm:^2.3.0" - pkg-dir: "npm:^5.0.0" - pretty-hrtime: "npm:^1.0.3" - resolve-from: "npm:^5.0.0" - slash: "npm:^3.0.0" - telejson: "npm:^5.3.2" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - webpack: "npm:4" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/2f4ccd757b2ec967d85379c384b40528e3fa03a5781de1c3f100e57bf05df99fc5441a005bc06de33f1c6a27b424a523b4713c5744a9d235be4bffeba1284b9b - languageName: node - linkType: hard - -"@storybook/core-events@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/core-events@npm:6.4.18" - dependencies: - core-js: "npm:^3.8.2" - checksum: 8c0/a6473b77d74250e0083126cfd8ba33c50f5c9ab78dd0665ea96334c41e54e6bdcc5e5dea20f23de3af4f5c0cf92b49fd5d12e6ee217bac3998a670a632db1dbe - languageName: node - linkType: hard - -"@storybook/core-server@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/core-server@npm:6.4.18" - dependencies: - "@discoveryjs/json-ext": "npm:^0.5.3" - "@storybook/builder-webpack4": "npm:6.4.18" - "@storybook/core-client": "npm:6.4.18" - "@storybook/core-common": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/csf-tools": "npm:6.4.18" - "@storybook/manager-webpack4": "npm:6.4.18" - "@storybook/node-logger": "npm:6.4.18" - "@storybook/semver": "npm:^7.3.2" - "@storybook/store": "npm:6.4.18" - "@types/node": "npm:^14.0.10" - "@types/node-fetch": "npm:^2.5.7" - "@types/pretty-hrtime": "npm:^1.0.0" - "@types/webpack": "npm:^4.41.26" - better-opn: "npm:^2.1.1" - boxen: "npm:^5.1.2" - chalk: "npm:^4.1.0" - cli-table3: "npm:^0.6.1" - commander: "npm:^6.2.1" - compression: "npm:^1.7.4" - core-js: "npm:^3.8.2" - cpy: "npm:^8.1.2" - detect-port: "npm:^1.3.0" - express: "npm:^4.17.1" - file-system-cache: "npm:^1.0.5" - fs-extra: "npm:^9.0.1" - globby: "npm:^11.0.2" - ip: "npm:^1.1.5" - lodash: "npm:^4.17.21" - node-fetch: "npm:^2.6.1" - pretty-hrtime: "npm:^1.0.3" - prompts: "npm:^2.4.0" - regenerator-runtime: "npm:^0.13.7" - serve-favicon: "npm:^2.5.0" - slash: "npm:^3.0.0" - telejson: "npm:^5.3.3" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - watchpack: "npm:^2.2.0" - webpack: "npm:4" - ws: "npm:^8.2.3" - peerDependencies: - "@storybook/builder-webpack5": 6.4.18 - "@storybook/manager-webpack5": 6.4.18 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - "@storybook/builder-webpack5": - optional: true - "@storybook/manager-webpack5": - optional: true - typescript: - optional: true - checksum: 8c0/5467adad2fc7c82003466b07faf3edf8ab9fc853190669e69e177301ca2890a750d9e4aade1edc96266fe7f810a279d85610855d885ee14ac84b7373435fa301 - languageName: node - linkType: hard - -"@storybook/core@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/core@npm:6.4.18" - dependencies: - "@storybook/core-client": "npm:6.4.18" - "@storybook/core-server": "npm:6.4.18" - peerDependencies: - "@storybook/builder-webpack5": 6.4.18 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - webpack: "*" - peerDependenciesMeta: - "@storybook/builder-webpack5": - optional: true - typescript: - optional: true - checksum: 8c0/5ca475f61e2bf21e4cfb9729759fbc281cd3f0f3ae7628339f303c5371b4bdb7caf07c32b7d8e9d9054e0e6ed4fc39ae8fed557e226241ce99edb65c7dc5512c - languageName: node - linkType: hard - -"@storybook/csf-tools@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/csf-tools@npm:6.4.18" - dependencies: - "@babel/core": "npm:^7.12.10" - "@babel/generator": "npm:^7.12.11" - "@babel/parser": "npm:^7.12.11" - "@babel/plugin-transform-react-jsx": "npm:^7.12.12" - "@babel/preset-env": "npm:^7.12.11" - "@babel/traverse": "npm:^7.12.11" - "@babel/types": "npm:^7.12.11" - "@mdx-js/mdx": "npm:^1.6.22" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - core-js: "npm:^3.8.2" - fs-extra: "npm:^9.0.1" - global: "npm:^4.4.0" - js-string-escape: "npm:^1.0.1" - lodash: "npm:^4.17.21" - prettier: "npm:>=2.2.1 <=2.3.0" - regenerator-runtime: "npm:^0.13.7" - ts-dedent: "npm:^2.0.0" - checksum: 8c0/a549da44dad0721e725a70915046fbc0dcee4702fe3bf37925e2ad6da92bedc626c5d0d2fd993f12d436be9ed6480eb8ebdcf999c8eb8bdded00bac8eebb06a0 - languageName: node - linkType: hard - -"@storybook/csf@npm:0.0.2--canary.87bc651.0": - version: 0.0.2--canary.87bc651.0 - resolution: "@storybook/csf@npm:0.0.2--canary.87bc651.0" - dependencies: - lodash: "npm:^4.17.15" - checksum: 8c0/0e7c378b358666ddae637ffba4c4345bed0a2603138528cbc5049f416a62a74cd8ab917856d444bf0b7b3dc0ba52186456c24b21ccb1f028dc5cd43e7f2509dc - languageName: node - linkType: hard - -"@storybook/manager-webpack4@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/manager-webpack4@npm:6.4.18" - dependencies: - "@babel/core": "npm:^7.12.10" - "@babel/plugin-transform-template-literals": "npm:^7.12.1" - "@babel/preset-react": "npm:^7.12.10" - "@storybook/addons": "npm:6.4.18" - "@storybook/core-client": "npm:6.4.18" - "@storybook/core-common": "npm:6.4.18" - "@storybook/node-logger": "npm:6.4.18" - "@storybook/theming": "npm:6.4.18" - "@storybook/ui": "npm:6.4.18" - "@types/node": "npm:^14.0.10" - "@types/webpack": "npm:^4.41.26" - babel-loader: "npm:^8.0.0" - case-sensitive-paths-webpack-plugin: "npm:^2.3.0" - chalk: "npm:^4.1.0" - core-js: "npm:^3.8.2" - css-loader: "npm:^3.6.0" - express: "npm:^4.17.1" - file-loader: "npm:^6.2.0" - file-system-cache: "npm:^1.0.5" - find-up: "npm:^5.0.0" - fs-extra: "npm:^9.0.1" - html-webpack-plugin: "npm:^4.0.0" - node-fetch: "npm:^2.6.1" - pnp-webpack-plugin: "npm:1.6.4" - read-pkg-up: "npm:^7.0.1" - regenerator-runtime: "npm:^0.13.7" - resolve-from: "npm:^5.0.0" - style-loader: "npm:^1.3.0" - telejson: "npm:^5.3.2" - terser-webpack-plugin: "npm:^4.2.3" - ts-dedent: "npm:^2.0.0" - url-loader: "npm:^4.1.1" - util-deprecate: "npm:^1.0.2" - webpack: "npm:4" - webpack-dev-middleware: "npm:^3.7.3" - webpack-virtual-modules: "npm:^0.2.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/1b1a53cefbeb2eb25bc48e7150129651673754364373bbd75a3e4ced6d1cc4f16d76a82add93865f5158f2ee0fc36ecd845291b76bd528273db45759332cd8b0 - languageName: node - linkType: hard - -"@storybook/node-logger@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/node-logger@npm:6.4.18" - dependencies: - "@types/npmlog": "npm:^4.1.2" - chalk: "npm:^4.1.0" - core-js: "npm:^3.8.2" - npmlog: "npm:^5.0.1" - pretty-hrtime: "npm:^1.0.3" - checksum: 8c0/1d0c32639864f4857cf217590d0d5a6dccfdccd3f7a672597f3d24a72f3eb26352da126424bd8e31c09bea099592e2160d1968ceb0cc49353cabe202b24c937f - languageName: node - linkType: hard - -"@storybook/preview-web@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/preview-web@npm:6.4.18" - dependencies: - "@storybook/addons": "npm:6.4.18" - "@storybook/channel-postmessage": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/store": "npm:6.4.18" - ansi-to-html: "npm:^0.6.11" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - qs: "npm:^6.10.0" - regenerator-runtime: "npm:^0.13.7" - synchronous-promise: "npm:^2.0.15" - ts-dedent: "npm:^2.0.0" - unfetch: "npm:^4.2.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/bd5819365416b0802b7ad64e0ca79b854812675a563a52406617b705f7b1e4583dd0982a4d538e87a647208a4e4295830e27599dfa2247d1c28e28eae0604132 - languageName: node - linkType: hard - -"@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.253f8c1.0": - version: 1.0.2-canary.253f8c1.0 - resolution: "@storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.253f8c1.0" - dependencies: - debug: "npm:^4.1.1" - endent: "npm:^2.0.1" - find-cache-dir: "npm:^3.3.1" - flat-cache: "npm:^3.0.4" - micromatch: "npm:^4.0.2" - react-docgen-typescript: "npm:^2.0.0" - tslib: "npm:^2.0.0" - peerDependencies: - typescript: ">= 3.x" - webpack: ">= 4" - checksum: 8c0/024d758c54bad04c69644436f940ee4ae205162a13cf21b2384f31001475408eb6a486e92cc4e2ce50383dd099c01ec01f577e630f1262140b6659fd6e91856a - languageName: node - linkType: hard - -"@storybook/react@npm:^6.1.21": - version: 6.4.18 - resolution: "@storybook/react@npm:6.4.18" - dependencies: - "@babel/preset-flow": "npm:^7.12.1" - "@babel/preset-react": "npm:^7.12.10" - "@pmmmwh/react-refresh-webpack-plugin": "npm:^0.5.1" - "@storybook/addons": "npm:6.4.18" - "@storybook/core": "npm:6.4.18" - "@storybook/core-common": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - "@storybook/node-logger": "npm:6.4.18" - "@storybook/react-docgen-typescript-plugin": "npm:1.0.2-canary.253f8c1.0" - "@storybook/semver": "npm:^7.3.2" - "@storybook/store": "npm:6.4.18" - "@types/webpack-env": "npm:^1.16.0" - babel-plugin-add-react-displayname: "npm:^0.0.5" - babel-plugin-named-asset-import: "npm:^0.3.1" - babel-plugin-react-docgen: "npm:^4.2.1" - core-js: "npm:^3.8.2" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - prop-types: "npm:^15.7.2" - react-refresh: "npm:^0.11.0" - read-pkg-up: "npm:^7.0.1" - regenerator-runtime: "npm:^0.13.7" - ts-dedent: "npm:^2.0.0" - webpack: "npm:4" - peerDependencies: - "@babel/core": ^7.11.5 - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - "@babel/core": - optional: true - typescript: - optional: true - bin: - build-storybook: bin/build.js - start-storybook: bin/index.js - storybook-server: bin/index.js - checksum: 8c0/1b39e2ee1538d7a42647b2fdf60d12a425935eebb207e9dfcad0052bbd923342047d0bdb470fa1a0cb9922c1f2a03a294dd125f15d58252ddb459f12c5183c13 - languageName: node - linkType: hard - -"@storybook/router@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/router@npm:6.4.18" - dependencies: - "@storybook/client-logger": "npm:6.4.18" - core-js: "npm:^3.8.2" - fast-deep-equal: "npm:^3.1.3" - global: "npm:^4.4.0" - history: "npm:5.0.0" - lodash: "npm:^4.17.21" - memoizerific: "npm:^1.11.3" - qs: "npm:^6.10.0" - react-router: "npm:^6.0.0" - react-router-dom: "npm:^6.0.0" - ts-dedent: "npm:^2.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/34396305b301ad9b8f24fc19af7bb3a1ba55a53f390e9af4157f3cffefc5f3e895fe11800339468fa2b75f2c450c8e86056eb205638157b9c68c680f79f55036 - languageName: node - linkType: hard - -"@storybook/semver@npm:^7.3.2": - version: 7.3.2 - resolution: "@storybook/semver@npm:7.3.2" - dependencies: - core-js: "npm:^3.6.5" - find-up: "npm:^4.1.0" - bin: - semver: bin/semver.js - checksum: 8c0/f90e0c714d694330e9664af96ff7c3806c10981d6754e839caf59cd6791bf38c050caf98b19e97f7b059fd8521217f5f70b941a79b68a40b485e054d46343791 - languageName: node - linkType: hard - -"@storybook/store@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/store@npm:6.4.18" - dependencies: - "@storybook/addons": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/csf": "npm:0.0.2--canary.87bc651.0" - core-js: "npm:^3.8.2" - fast-deep-equal: "npm:^3.1.3" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - memoizerific: "npm:^1.11.3" - regenerator-runtime: "npm:^0.13.7" - slash: "npm:^3.0.0" - stable: "npm:^0.1.8" - synchronous-promise: "npm:^2.0.15" - ts-dedent: "npm:^2.0.0" - util-deprecate: "npm:^1.0.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/cee3a1ed68c7967f4792b582bb9c8413d772a7c31dd712239a924bf84740ebc4650715bbb707851282a28764e3aa545007e81c34e165898200af18a6044c6d46 - languageName: node - linkType: hard - -"@storybook/theming@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/theming@npm:6.4.18" - dependencies: - "@emotion/core": "npm:^10.1.1" - "@emotion/is-prop-valid": "npm:^0.8.6" - "@emotion/styled": "npm:^10.0.27" - "@storybook/client-logger": "npm:6.4.18" - core-js: "npm:^3.8.2" - deep-object-diff: "npm:^1.1.0" - emotion-theming: "npm:^10.0.27" - global: "npm:^4.4.0" - memoizerific: "npm:^1.11.3" - polished: "npm:^4.0.5" - resolve-from: "npm:^5.0.0" - ts-dedent: "npm:^2.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/5274e150f0bf556c1d31f0a4c53ec0e78c1631c3914fe77d154da930590d9928bc0ffc181f561d74ec81609eb114cb5c37c20766d0a069292ed54d86af168d7f - languageName: node - linkType: hard - -"@storybook/ui@npm:6.4.18": - version: 6.4.18 - resolution: "@storybook/ui@npm:6.4.18" - dependencies: - "@emotion/core": "npm:^10.1.1" - "@storybook/addons": "npm:6.4.18" - "@storybook/api": "npm:6.4.18" - "@storybook/channels": "npm:6.4.18" - "@storybook/client-logger": "npm:6.4.18" - "@storybook/components": "npm:6.4.18" - "@storybook/core-events": "npm:6.4.18" - "@storybook/router": "npm:6.4.18" - "@storybook/semver": "npm:^7.3.2" - "@storybook/theming": "npm:6.4.18" - copy-to-clipboard: "npm:^3.3.1" - core-js: "npm:^3.8.2" - core-js-pure: "npm:^3.8.2" - downshift: "npm:^6.0.15" - emotion-theming: "npm:^10.0.27" - fuse.js: "npm:^3.6.1" - global: "npm:^4.4.0" - lodash: "npm:^4.17.21" - markdown-to-jsx: "npm:^7.1.3" - memoizerific: "npm:^1.11.3" - polished: "npm:^4.0.5" - qs: "npm:^6.10.0" - react-draggable: "npm:^4.4.3" - react-helmet-async: "npm:^1.0.7" - react-sizeme: "npm:^3.0.1" - regenerator-runtime: "npm:^0.13.7" - resolve-from: "npm:^5.0.0" - store2: "npm:^2.12.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - checksum: 8c0/4b8e0d4f86a848ab9c2c79ee00f0e687b38a6eda2cea5dbf856c2af874fa327af79582d828fc9134555c8b4c56dd3660ddeeb163de7094139929ab9b14147f7a - languageName: node - linkType: hard - -"@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a50bd0baa34faf16bcba712091f94c7f0e230431fe99a9dfc3401fa92823ad3f68495b86ab9bf9044b53839e8c416cfbb37eb3f246ff33f261e0fa9ee1779c5b - languageName: node - linkType: hard - -"@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/8a98e59bd9971e066815b4129409932f7a4db4866834fe75677ea6d517972fb40b380a69a4413189f20e7947411f9ab1b0f029dd5e8068686a5a0188d3ccd4c7 - languageName: node - linkType: hard - -"@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/517dcca75223bd05d3f056a8514dbba3031278bea4eadf0842c576d84f4651e7a4e0e7082d3ee4ef42456de0f9c4531d8a1917c04876ca64b014b859ca8f1bde - languageName: node - linkType: hard - -"@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/004bd1892053b7e9c1b0bb14acc44e77634ec393722b87b1e4fae53e2c35122a2dd0d5c15e9070dbeec274e22e7693a2b8b48506733a8009ee92b12946fcb10a - languageName: node - linkType: hard - -"@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/80e0a7fcf902f984c705051ca5c82ea6050ccbb70b651a8fea6d0eb5809e4dac274b49ea6be2d87f1eb9dfc0e2d6cdfffe1669ec2117f44b67a60a07d4c0b8b8 - languageName: node - linkType: hard - -"@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/73e92c8277a89279745c0c500f59f083279a8dc30cd552b22981fade2a77628fb2bd2819ee505725fcd2e93f923e3790b52efcff409a159e657b46604a0b9a21 - languageName: node - linkType: hard - -"@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/6bac146b0b2a61b934302c5e32784ef66d1990bcf0dd6409c102f62efbc640c513b0a8f30d7046d53517b10a0dc75b532783c2e04bb151caa0c649d6177eb206 - languageName: node - linkType: hard - -"@svgr/babel-plugin-transform-svg-component@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-plugin-transform-svg-component@npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/4ac00bb99a3db4ef05e4362f116a3c608ee365a2d26cf7318d8d41a4a5b30a02c80455cce0e62c65b60ed815b5d632bedabac2ccd4b56f998fadef5286e3ded4 - languageName: node - linkType: hard - -"@svgr/babel-preset@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/babel-preset@npm:8.0.0" - dependencies: - "@svgr/babel-plugin-add-jsx-attribute": "npm:8.0.0" - "@svgr/babel-plugin-remove-jsx-attribute": "npm:8.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression": "npm:8.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value": "npm:8.0.0" - "@svgr/babel-plugin-svg-dynamic-title": "npm:8.0.0" - "@svgr/babel-plugin-svg-em-dimensions": "npm:8.0.0" - "@svgr/babel-plugin-transform-react-native-svg": "npm:8.0.0" - "@svgr/babel-plugin-transform-svg-component": "npm:8.0.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/b8793c16862fef9244b4b9e96aee61af74d2f07b5f3c221008b45b1edb8c3454b3723ed04ab665b51e582bc3aad4c0e88435a526cddaa2fa3ca729695f18bb95 - languageName: node - linkType: hard - -"@svgr/core@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/core@npm:8.0.0" - dependencies: - "@babel/core": "npm:^7.21.3" - "@svgr/babel-preset": "npm:8.0.0" - camelcase: "npm:^6.2.0" - cosmiconfig: "npm:^8.1.3" - snake-case: "npm:^3.0.4" - checksum: 8c0/aea5e55948e8f188a91faddcd011f134e6a2d994afb1bdd769b881ff4e8c734749a8a4b278ee5575f2b7e53ec9ce0535b33e1b3a0d1827a2a350abcb91d1841f - languageName: node - linkType: hard - -"@svgr/hast-util-to-babel-ast@npm:8.0.0": - version: 8.0.0 - resolution: "@svgr/hast-util-to-babel-ast@npm:8.0.0" - dependencies: - "@babel/types": "npm:^7.21.3" - entities: "npm:^4.4.0" - checksum: 8c0/f4165b583ba9eaf6719e598977a7b3ed182f177983e55f9eb55a6a73982d81277510e9eb7ab41f255151fb9ed4edd11ac4bef95dd872f04ed64966d8c85e0f79 - languageName: node - linkType: hard - -"@svgr/plugin-jsx@npm:8.0.1": - version: 8.0.1 - resolution: "@svgr/plugin-jsx@npm:8.0.1" - dependencies: - "@babel/core": "npm:^7.21.3" - "@svgr/babel-preset": "npm:8.0.0" - "@svgr/hast-util-to-babel-ast": "npm:8.0.0" - svg-parser: "npm:^2.0.4" - peerDependencies: - "@svgr/core": "*" - checksum: 8c0/c3c440d9f8723b2320fcf183da760799534ef998bfcfc5c848d66feab614f02980c9c313bc7c0488202affbdd216ee9381afbe948ecbcea718c19632138dc4d9 - languageName: node - linkType: hard - -"@swc/cli@npm:0.1.62": - version: 0.1.62 - resolution: "@swc/cli@npm:0.1.62" - dependencies: - "@mole-inc/bin-wrapper": "npm:^8.0.1" - commander: "npm:^7.1.0" - fast-glob: "npm:^3.2.5" - semver: "npm:^7.3.8" - slash: "npm:3.0.0" - source-map: "npm:^0.7.3" - peerDependencies: - "@swc/core": ^1.2.66 - chokidar: ^3.5.1 - peerDependenciesMeta: - chokidar: - optional: true - bin: - spack: bin/spack.js - swc: bin/swc.js - swcx: bin/swcx.js - checksum: 0700d26c7c7598c01d56f7f8e19138e1e9d6acd04976a54d392c7f4589fd136647970e1a94c8ed5d563f2634ab55bf7cc33c42887cfe7375ed51605dfc5f8861 - languageName: node - linkType: hard - -"@swc/core-darwin-arm64@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-darwin-arm64@npm:1.3.60" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-darwin-x64@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-darwin-x64@npm:1.3.60" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@swc/core-linux-arm-gnueabihf@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.60" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@swc/core-linux-arm64-gnu@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.60" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@swc/core-linux-arm64-musl@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.60" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@swc/core-linux-x64-gnu@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.60" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@swc/core-linux-x64-musl@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-linux-x64-musl@npm:1.3.60" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@swc/core-win32-arm64-msvc@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.60" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@swc/core-win32-ia32-msvc@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.60" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@swc/core-win32-x64-msvc@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.60" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@swc/core@npm:1.3.60": - version: 1.3.60 - resolution: "@swc/core@npm:1.3.60" - dependencies: - "@swc/core-darwin-arm64": "npm:1.3.60" - "@swc/core-darwin-x64": "npm:1.3.60" - "@swc/core-linux-arm-gnueabihf": "npm:1.3.60" - "@swc/core-linux-arm64-gnu": "npm:1.3.60" - "@swc/core-linux-arm64-musl": "npm:1.3.60" - "@swc/core-linux-x64-gnu": "npm:1.3.60" - "@swc/core-linux-x64-musl": "npm:1.3.60" - "@swc/core-win32-arm64-msvc": "npm:1.3.60" - "@swc/core-win32-ia32-msvc": "npm:1.3.60" - "@swc/core-win32-x64-msvc": "npm:1.3.60" - peerDependencies: - "@swc/helpers": ^0.5.0 - dependenciesMeta: - "@swc/core-darwin-arm64": - optional: true - "@swc/core-darwin-x64": - optional: true - "@swc/core-linux-arm-gnueabihf": - optional: true - "@swc/core-linux-arm64-gnu": - optional: true - "@swc/core-linux-arm64-musl": - optional: true - "@swc/core-linux-x64-gnu": - optional: true - "@swc/core-linux-x64-musl": - optional: true - "@swc/core-win32-arm64-msvc": - optional: true - "@swc/core-win32-ia32-msvc": - optional: true - "@swc/core-win32-x64-msvc": - optional: true - peerDependenciesMeta: - "@swc/helpers": - optional: true - checksum: 8c0/ec016437e1814cd4ca75bd96925dfda759a839f95163c0e647ac3eb5e055a9145269b6daf1c7956aab49c0a0c2d92d4619c69c1924faaef5414ea36e25f22baf - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^1.1.2": - version: 1.1.2 - resolution: "@szmarczak/http-timer@npm:1.1.2" - dependencies: - defer-to-connect: "npm:^1.0.1" - checksum: 8c0/0594140e027ce4e98970c6d176457fcbff80900b1b3101ac0d08628ca6d21d70e0b94c6aaada94d4f76c1423fcc7195af83da145ce0fd556fc0595ca74a17b8b - languageName: node - linkType: hard - -"@szmarczak/http-timer@npm:^4.0.5": - version: 4.0.6 - resolution: "@szmarczak/http-timer@npm:4.0.6" - dependencies: - defer-to-connect: "npm:^2.0.0" - checksum: 73946918c025339db68b09abd91fa3001e87fc749c619d2e9c2003a663039d4c3cb89836c98a96598b3d47dec2481284ba85355392644911f5ecd2336536697f - languageName: node - linkType: hard - -"@tailwindcss/forms@npm:0.5.3": - version: 0.5.3 - resolution: "@tailwindcss/forms@npm:0.5.3" - dependencies: - mini-svg-data-uri: "npm:^1.2.3" - peerDependencies: - tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1" - checksum: 4881c1d5a9aeaa2eea453dd60a5b7c6671a11f0d74f6075d052a3b4f2d8c7e1f1a42f74fe52421da4c13b19018ab883199f528cd41e6fdb249ed638d3f04cd94 - languageName: node - linkType: hard - -"@testing-library/dom@npm:9.3.3": - version: 9.3.3 - resolution: "@testing-library/dom@npm:9.3.3" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^5.0.1" - aria-query: "npm:5.1.3" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.9" - lz-string: "npm:^1.5.0" - pretty-format: "npm:^27.0.2" - checksum: c3bbd67503634fd955233dc172531640656701fe35ecb9a83f85e5965874b786452f5e7c26b4f8b3b4fc4379f3a80193c74425b57843ba191f4845e22b0ac483 - languageName: node - linkType: hard - -"@testing-library/dom@npm:^7.28.1": - version: 7.31.0 - resolution: "@testing-library/dom@npm:7.31.0" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^4.2.0" - aria-query: "npm:^4.2.2" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.4" - lz-string: "npm:^1.4.4" - pretty-format: "npm:^26.6.2" - checksum: 8c0/a3ed35b8cffb5670c6454f893fac7ac965682320c9a9a876c4a010b00eaba0695b8fadf7fd3ce1f301dae6467ff4b915969f20db2b08b4d890e1404679426d5b - languageName: node - linkType: hard - -"@testing-library/dom@npm:^7.31.2": - version: 7.31.2 - resolution: "@testing-library/dom@npm:7.31.2" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^4.2.0" - aria-query: "npm:^4.2.2" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.6" - lz-string: "npm:^1.4.4" - pretty-format: "npm:^26.6.2" - checksum: 8c0/51498f6552b669a547202f4f508a1e91b5a0c25a64be987e49601ec00f3d0cc514c591400f0ad49d91b7d522e40e29b29a209aecd43f8611e2240b1ba3d4f93d - languageName: node - linkType: hard - -"@testing-library/dom@npm:^8.11.1": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^5.0.1" - aria-query: "npm:^5.0.0" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.9" - lz-string: "npm:^1.4.4" - pretty-format: "npm:^27.0.2" - checksum: 8c0/454c71f65708d1504256ae055f060adf8ed9eadcc7ddbf6d07a528045beceb842783c1253871759f5c137eca58e5e32700dc64b130cbb37e10e7a52ab08d7b44 - languageName: node - linkType: hard - -"@testing-library/dom@npm:^9.0.0": - version: 9.2.0 - resolution: "@testing-library/dom@npm:9.2.0" - dependencies: - "@babel/code-frame": "npm:^7.10.4" - "@babel/runtime": "npm:^7.12.5" - "@types/aria-query": "npm:^5.0.1" - aria-query: "npm:^5.0.0" - chalk: "npm:^4.1.0" - dom-accessibility-api: "npm:^0.5.9" - lz-string: "npm:^1.5.0" - pretty-format: "npm:^27.0.2" - checksum: 8c0/0b2284c06d445cb043686204417d17f5eff282cabed7d5187ab6d8bde41d52953bab69ddad86b36469424576f4c7277c2132c128d4d033b1df24476c523361eb - languageName: node - linkType: hard - -"@testing-library/jest-dom@npm:5.11.6": - version: 5.11.6 - resolution: "@testing-library/jest-dom@npm:5.11.6" - dependencies: - "@babel/runtime": "npm:^7.9.2" - "@types/testing-library__jest-dom": "npm:^5.9.1" - aria-query: "npm:^4.2.2" - chalk: "npm:^3.0.0" - css: "npm:^3.0.0" - css.escape: "npm:^1.5.1" - lodash: "npm:^4.17.15" - redent: "npm:^3.0.0" - checksum: 8c0/6c3d7b250fbbaca0506d6430683e589d9b5502a68309986a8d288f0e3e8be1d67eeb878250efbb9029e650fb29f22500c4e266255a8163d9b9348844d19a6cd5 - languageName: node - linkType: hard - -"@testing-library/jest-dom@npm:6.1.5": - version: 6.1.5 - resolution: "@testing-library/jest-dom@npm:6.1.5" - dependencies: - "@adobe/css-tools": "npm:^4.3.1" - "@babel/runtime": "npm:^7.9.2" - aria-query: "npm:^5.0.0" - chalk: "npm:^3.0.0" - css.escape: "npm:^1.5.1" - dom-accessibility-api: "npm:^0.5.6" - lodash: "npm:^4.17.15" - redent: "npm:^3.0.0" - peerDependencies: - "@jest/globals": ">= 28" - "@types/jest": ">= 28" - jest: ">= 28" - vitest: ">= 0.32" - peerDependenciesMeta: - "@jest/globals": - optional: true - "@types/jest": - optional: true - jest: - optional: true - vitest: - optional: true - checksum: f3643a56fcd970b5c7e8fd10faf3c4817d8ab0e74fb1198d726643bdc5ac675ceaac3b0068c5b4fbad254470e8f98ed50028741de875a29ceaa2f854570979c9 - languageName: node - linkType: hard - -"@testing-library/react@npm:11.2.6": - version: 11.2.6 - resolution: "@testing-library/react@npm:11.2.6" - dependencies: - "@babel/runtime": "npm:^7.12.5" - "@testing-library/dom": "npm:^7.28.1" - peerDependencies: - react: "*" - react-dom: "*" - checksum: 8c0/3d4b7ba07a619f89b31a4d758cb51bdccf240dc7e74ebb7de99d60b51692b88f1719775fb53723a075a24be73d860b3d6ebaf3dbd7951dbc84d6c81221a14cb2 - languageName: node - linkType: hard - -"@testing-library/react@npm:14.1.2": - version: 14.1.2 - resolution: "@testing-library/react@npm:14.1.2" - dependencies: - "@babel/runtime": "npm:^7.12.5" - "@testing-library/dom": "npm:^9.0.0" - "@types/react-dom": "npm:^18.0.0" - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - checksum: b5b0990d3aa0ea8b37c55804e0d5d584fc638a5c7d4df90da9a0fdb00bc981b27b6991468b2dc719982a5d0b0107a41596063ce51ad519eeab47b22bc04d6779 - languageName: node - linkType: hard - -"@testing-library/user-event@npm:14.5.1": - version: 14.5.1 - resolution: "@testing-library/user-event@npm:14.5.1" - peerDependencies: - "@testing-library/dom": ">=7.21.4" - checksum: 1e00d6ead23377885b906db6e46e259161a0efb4138f7527481d7435f3c8f65cb7e3eab2900e2ac1886fa6dd03416e773a3a60dea87a9a2086a7127dee315f6f - languageName: node - linkType: hard - -"@timsuchanek/copy@npm:^1.4.5": - version: 1.4.5 - resolution: "@timsuchanek/copy@npm:1.4.5" - dependencies: - "@timsuchanek/sleep-promise": "npm:^8.0.1" - commander: "npm:^2.19.0" - mkdirp: "npm:^1.0.4" - prettysize: "npm:^2.0.0" - bin: - node-copy: cli.js - checksum: 8c0/2a096f8c48402d0ec4eb04dbef8d4e132296532ee0778196fd23071b55f61bbcb682e022f13eb78bd1ef857563e5ec06620c96c55ad9eff606d5f1acc9d2aefd - languageName: node - linkType: hard - -"@timsuchanek/sleep-promise@npm:^8.0.1": - version: 8.0.1 - resolution: "@timsuchanek/sleep-promise@npm:8.0.1" - checksum: 8c0/86acc3f34d482bcc0c8f24005c285c0477ae8448e1253667dd0920726c3ae5a05bda4e5c4a99afe6a7b55d380fef6ea9f9f4857b4ab5cf3b13bf827491a325f3 - languageName: node - linkType: hard - -"@tokenizer/token@npm:^0.3.0": - version: 0.3.0 - resolution: "@tokenizer/token@npm:0.3.0" - checksum: 7ab9a822d4b5ff3f5bca7f7d14d46bdd8432528e028db4a52be7fbf90c7f495cc1af1324691dda2813c6af8dc4b8eb29de3107d4508165f9aa5b53e7d501f155 - languageName: node - linkType: hard - -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: 8c0/8fe4d006e90422883a4fa9339dd05a83ff626806262e1710cee5758d493e8cbddf2db81c0e4690636dc840b02c9fda62877866ea774ebd07c1777ed5fafbdec6 - languageName: node - linkType: hard - -"@tootallnate/once@npm:2": - version: 2.0.0 - resolution: "@tootallnate/once@npm:2.0.0" - checksum: 8c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 - languageName: node - linkType: hard - -"@tremor/react@npm:3.4.1": - version: 3.4.1 - resolution: "@tremor/react@npm:3.4.1" - dependencies: - "@floating-ui/react": "npm:^0.19.1" - "@headlessui/react": "npm:^1.7.14" - "@headlessui/tailwindcss": "npm:^0.1.3" - date-fns: "npm:^2.28.0" - react-day-picker: "npm:^8.7.1" - react-transition-group: "npm:^4.4.5" - recharts: "npm:^2.7.1" - tailwind-merge: "npm:^1.9.1" - peerDependencies: - react: ^18.0.0 - react-dom: ">=16.6.0" - checksum: 127b6b19ca22ad830aae153b0f3ef7f34962d7e29e85201ac9b6a4cecf8049da5ede53a8a050718e3b2ccb7e54f259ed54dc95f99c37a291ff5b50fb1ef1f98f - languageName: node - linkType: hard - -"@trysound/sax@npm:0.1.1": - version: 0.1.1 - resolution: "@trysound/sax@npm:0.1.1" - checksum: 8c0/ccb036685c5b9eb719e1fb73af640b7e09e408bcc1dee6f015637cfefe5910be58baaf5c5c38d55b7202dcb311aa2ba27b5adc6c1a24ca0f05e8358d182d972e - languageName: node - linkType: hard - -"@trysound/sax@npm:0.2.0": - version: 0.2.0 - resolution: "@trysound/sax@npm:0.2.0" - checksum: 8c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 - languageName: node - linkType: hard - -"@ts-morph/common@npm:~0.16.0": - version: 0.16.0 - resolution: "@ts-morph/common@npm:0.16.0" - dependencies: - fast-glob: "npm:^3.2.11" - minimatch: "npm:^5.1.0" - mkdirp: "npm:^1.0.4" - path-browserify: "npm:^1.0.1" - checksum: 8c0/a9f306dd5c0c022b805400a1e54f18ec3fd1d80cc62e41f5f6964755d4b2538c10584b2fd040f9184121269dfebbe20ac7ffeb9965e74c3d6cb5b8891e29e5cb - languageName: node - linkType: hard - -"@ts-morph/common@npm:~0.19.0": - version: 0.19.0 - resolution: "@ts-morph/common@npm:0.19.0" - dependencies: - fast-glob: "npm:^3.2.12" - minimatch: "npm:^7.4.3" - mkdirp: "npm:^2.1.6" - path-browserify: "npm:^1.0.1" - checksum: 8c0/e25fd46158d72be238ab1dda74e7ee284085895b12b9ab279f37d50f1cd71b2be95a56f3efa19d5f52986534e9f34ae4a294467cd1637b27cf4fb82bd7318bb7 - languageName: node - linkType: hard - -"@ts-morph/common@npm:~0.9.2": - version: 0.9.2 - resolution: "@ts-morph/common@npm:0.9.2" - dependencies: - fast-glob: "npm:^3.2.5" - minimatch: "npm:^3.0.4" - mkdirp: "npm:^1.0.4" - path-browserify: "npm:^1.0.1" - checksum: 8c0/ec1c41e055d07c5df9fdbac12b3f7f6f4956cf2e04c62672a54eaea21b47716d3e157bf07a4b9211164a12d2dc72f5403aeae1a6676a4566f4a78f0f673a3ef5 - languageName: node - linkType: hard - -"@tsconfig/node10@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node10@npm:1.0.9" - checksum: 8c0/c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220 - languageName: node - linkType: hard - -"@tsconfig/node12@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node12@npm:1.0.11" - checksum: 8c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 - languageName: node - linkType: hard - -"@tsconfig/node14@npm:^1.0.0": - version: 1.0.3 - resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 8c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 - languageName: node - linkType: hard - -"@tsconfig/node16@npm:^1.0.2": - version: 1.0.3 - resolution: "@tsconfig/node16@npm:1.0.3" - checksum: 8c0/451a0d4b2bc35c2cdb30a49b6c699d797b8bbac99b883237659698678076d4193050d90e2ee36016ccbca57075cdb073cadab38cedc45119bac68ab331958cbc - languageName: node - linkType: hard - -"@types/accepts@npm:*": - version: 1.3.5 - resolution: "@types/accepts@npm:1.3.5" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/cb0eea87d20db2391f4463d475e2c88ee9d39cf83d056a8a9bc014f50914eceaecc5ed45cdd08c5ecf5df56a7f1e5cff12ffd68ba84d851f1d8a844f42b58b16 - languageName: node - linkType: hard - -"@types/archiver@npm:^6": - version: 6.0.2 - resolution: "@types/archiver@npm:6.0.2" - dependencies: - "@types/readdir-glob": "npm:*" - checksum: 01ca91d76c57b38ae030a24a07b46664bf3ae9d303c0cdd2b342e06a4b53dccd0d0c375ff3f9af966a93512554f82ef97c515fcc47536e7dbb29a7d9bc09a540 - languageName: node - linkType: hard - -"@types/aria-query@npm:^4.2.0": - version: 4.2.1 - resolution: "@types/aria-query@npm:4.2.1" - checksum: 8c0/9e82ba2f071da46a76fa432f40db39dcef7df40e4802124e5084bfe47a23cc1e715dd28a5fd251be22389098c938a03fccabd899ecd98a5aae2e88d61d09e04b - languageName: node - linkType: hard - -"@types/aria-query@npm:^5.0.1": - version: 5.0.1 - resolution: "@types/aria-query@npm:5.0.1" - checksum: 8c0/bc9e40ce37bd3a1654948778c7829bd55aea1bc5f2cd06fcf6cd650b07bb388995799e9aab6e2d93a6cf55dcba3b85c155f7ba93adefcc7c2e152fc6057061b5 - languageName: node - linkType: hard - -"@types/aws-lambda@npm:8.10.126": - version: 8.10.126 - resolution: "@types/aws-lambda@npm:8.10.126" - checksum: 4b538cbb3c730c08d921ff13943b39f9a68d89c2ad64b54dff82768e949b4cacd3d82c028bb5fce495f0a66b37b6299052367d419890229956565ccbc2bd9767 - languageName: node - linkType: hard - -"@types/aws-lambda@npm:^8.10.31": - version: 8.10.76 - resolution: "@types/aws-lambda@npm:8.10.76" - checksum: 8c0/b820242ae9f2e83b86023214e54aef991aa0be8ea33010879cdf595d5367f5f43d7c90c574334ca7270925aae7eaf34c1040820372ad0de7a72d91fd58286cd0 - languageName: node - linkType: hard - -"@types/babel-core@npm:6.25.10": - version: 6.25.10 - resolution: "@types/babel-core@npm:6.25.10" - dependencies: - "@types/babel-generator": "npm:*" - "@types/babel-template": "npm:*" - "@types/babel-traverse": "npm:*" - "@types/babel-types": "npm:*" - "@types/babylon": "npm:*" - checksum: 4a0e26acc0aed7ffed6aa0ee63fedb8dedac1f11633229ff0c09d27cf02863fa2c25cbb99eecfa5004449b84027b3ab4abe2d29a936784cb2a85e4d49593b4e4 - languageName: node - linkType: hard - -"@types/babel-generator@npm:*": - version: 6.25.5 - resolution: "@types/babel-generator@npm:6.25.5" - dependencies: - "@types/babel-types": "npm:*" - checksum: 8c0/7570d07c894b70967af3178ab6dea3fe42184bc65dba3f46752eb909d22cc5a2fb1ed2736b00f486f0994a9a54184684cfe8fd98012630472f3b6128fff7adef - languageName: node - linkType: hard - -"@types/babel-plugin-tester@npm:9.0.9": - version: 9.0.9 - resolution: "@types/babel-plugin-tester@npm:9.0.9" - dependencies: - "@types/babel__core": "npm:*" - "@types/prettier": "npm:^2.0.0" - checksum: b05e4d551a98d74a743945fa109cf1866fc6b57303f3daee29276e1e6ca354ff647f946e047747e5104f5d9f26cd09d2c22599b1282454283a59248e6a164fb8 - languageName: node - linkType: hard - -"@types/babel-template@npm:*": - version: 6.25.2 - resolution: "@types/babel-template@npm:6.25.2" - dependencies: - "@types/babel-types": "npm:*" - "@types/babylon": "npm:*" - checksum: 8c0/35af56dcadc3b5b28e4bbc0bb964f0f3dc22f7bab9e86369e383c0cde2d7f1a7e34f4ef2a272aaae1a61610a81897eff3601b09956e8c220986698986c9086b1 - languageName: node - linkType: hard - -"@types/babel-traverse@npm:*": - version: 6.25.7 - resolution: "@types/babel-traverse@npm:6.25.7" - dependencies: - "@types/babel-types": "npm:*" - checksum: 8c0/66b798a4b2480efbd391680fde7d359f7486b064b030c6efdebc4ef7bf09a8c2b1eaf3f0ff5bea2eb25e95100c600613cd4605f5fb17cf0fff7181e08dfc7683 - languageName: node - linkType: hard - -"@types/babel-types@npm:*": - version: 7.0.11 - resolution: "@types/babel-types@npm:7.0.11" - checksum: 8c0/968415bf9997704d2dfd841ffdf9b80dc824a78fdc0640a48a2bd95d2c238097159af38bfd7d51486cb8c1fde353033d302bfc68a2deb1802d1d7846c0594d1e - languageName: node - linkType: hard - -"@types/babel__core@npm:*, @types/babel__core@npm:^7.1.14": - version: 7.20.0 - resolution: "@types/babel__core@npm:7.20.0" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 8c0/75dcd39258bc008b6fd4db7de2c8bfeb29b5cd2c726f54407f70243ddea1d8ce9e7082281557614c4a5f9f30d478387ca6ab6cc576fc829cebeb159bfaa8799f - languageName: node - linkType: hard - -"@types/babel__core@npm:7.20.4": - version: 7.20.4 - resolution: "@types/babel__core@npm:7.20.4" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 2adc7ec49de5f922271ce087cedee000de468a3e13f92b7b6254016bd8357298cb98e6d2b3c9defc69bb6e38e0c134ffe80776a8ce4e9fb167bbffcb4d7613b7 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.7": - version: 7.1.14 - resolution: "@types/babel__core@npm:7.1.14" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: 8c0/a3665ef3a6534bb3a7f90c3e176e10894c240f891a09b0f0e7c47940a6a82f0347cfeac9e8487b9e35c4e0898c0e3fb1ae8a50c4a057f56dac0d8e11ca8bf3ba - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.20.5": - version: 7.20.5 - resolution: "@types/babel__core@npm:7.20.5" - dependencies: - "@babel/parser": "npm:^7.20.7" - "@babel/types": "npm:^7.20.7" - "@types/babel__generator": "npm:*" - "@types/babel__template": "npm:*" - "@types/babel__traverse": "npm:*" - checksum: bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.2 - resolution: "@types/babel__generator@npm:7.6.2" - dependencies: - "@babel/types": "npm:^7.0.0" - checksum: 8c0/2ef998351d857fc76bc739ade10184300d1c8d12bb0d634333a42e927182390968ce78185f1e6c31214540515cdb232a7cb416c20eccc119837c6137f039ea73 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.0 - resolution: "@types/babel__template@npm:7.4.0" - dependencies: - "@babel/parser": "npm:^7.1.0" - "@babel/types": "npm:^7.0.0" - checksum: 8c0/b3fddd75a75249e5c2ad2f698b6761e64f20c6759b88b8a352e9a7fbba656b11c424ccafd86202c49fd8b41d0dd52fab48085f8f6761ded341be2a50fd9c3a7a - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": - version: 7.11.1 - resolution: "@types/babel__traverse@npm:7.11.1" - dependencies: - "@babel/types": "npm:^7.3.0" - checksum: 8c0/c452f245baec0cc89db61be781ed44b8451bac51cbfc4955e6f8113e523c125fc35e630d3aa4aaec32a930ab9a6c1c1d8100761d5ac94cba62ab10cba7c5ea59 - languageName: node - linkType: hard - -"@types/babylon@npm:*": - version: 6.16.6 - resolution: "@types/babylon@npm:6.16.6" - dependencies: - "@types/babel-types": "npm:*" - checksum: 8c0/4e0be7ed31d1bed532d54e11de4fa0d69a11d8cda7a245498b4e7c1827c0f9f84f7462e2978878860b45fc1c10cdfecb96d323efac928627e71dba4d4e6aef30 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.0 - resolution: "@types/body-parser@npm:1.19.0" - dependencies: - "@types/connect": "npm:*" - "@types/node": "npm:*" - checksum: 8c0/ffc4af48695fcbbc7868d349f63c7d844c0028a0f84d71faf5e797ee2ac2d0bfac593145248df225d267543992ff4c033a3e113569da7aa1d4c4c5f8075587cf - languageName: node - linkType: hard - -"@types/bonjour@npm:^3.5.9": - version: 3.5.10 - resolution: "@types/bonjour@npm:3.5.10" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/5a3d70695a8dfe79c020579fcbf18d7dbb89b8f061dd388c76b68c4797c0fccd71f3e8a9e2bea00afffdb9b37a49dd0ac0a192829d5b655a5b49c66f313a7be8 - languageName: node - linkType: hard - -"@types/busboy@npm:^1": - version: 1.5.3 - resolution: "@types/busboy@npm:1.5.3" - dependencies: - "@types/node": "npm:*" - checksum: f766aebd29773828dbe69ca2f8edfbc578568aade8a34214cd1c3f817b098ac000e6e8fcf652eed81b60bcf0b184b399821909709c16b4432bf92e5afc794761 - languageName: node - linkType: hard - -"@types/cacheable-request@npm:^6.0.1": - version: 6.0.3 - resolution: "@types/cacheable-request@npm:6.0.3" - dependencies: - "@types/http-cache-semantics": "npm:*" - "@types/keyv": "npm:^3.1.4" - "@types/node": "npm:*" - "@types/responselike": "npm:^1.0.0" - checksum: 10816a88e4e5b144d43c1d15a81003f86d649776c7f410c9b5e6579d0ad9d4ca71c541962fb403077388b446e41af7ae38d313e46692144985f006ac5e11fa03 - languageName: node - linkType: hard - -"@types/codemirror@npm:^0.0.90": - version: 0.0.90 - resolution: "@types/codemirror@npm:0.0.90" - dependencies: - "@types/tern": "npm:*" - checksum: fb3c00c11fe7d4102c138d1827dc75e680f1363af2006bfe219795b87758923f472fc62fb148189dc2d16826d5794ec9f3c7f935e0b688d9003a7a4de2f4d0fc - languageName: node - linkType: hard - -"@types/codemirror@npm:^5.60.8": - version: 5.60.15 - resolution: "@types/codemirror@npm:5.60.15" - dependencies: - "@types/tern": "npm:*" - checksum: 4d32ee8d335650956fc59b26f29909de0656ce9c68f7527caf2aa68e6a6a2e8be6ec7a6b80c02bfab7ac6b17040d6c2d83d394b9d00fdbf4b5588691f2efbba6 - languageName: node - linkType: hard - -"@types/color-convert@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/color-convert@npm:2.0.0" - dependencies: - "@types/color-name": "npm:*" - checksum: 8c0/87b40870ff57f1746acc3cecbbe5f74e38cd2e97a628b0680f11a4cd419d124d3251e7627f100db2b31f8383b91141c46a12b7f2dfb18f989cf686526b6e6e13 - languageName: node - linkType: hard - -"@types/color-name@npm:*": - version: 1.1.1 - resolution: "@types/color-name@npm:1.1.1" - checksum: 8c0/2abeac8d8d833e0622c66f21487cc8b522792abb2eff2e40df0e3e53261728cb65bab590edf24953eb8d8653ec88044dc801d9a4e58c489a0f10c025de522868 - languageName: node - linkType: hard - -"@types/connect-history-api-fallback@npm:^1.3.5": - version: 1.3.5 - resolution: "@types/connect-history-api-fallback@npm:1.3.5" - dependencies: - "@types/express-serve-static-core": "npm:*" - "@types/node": "npm:*" - checksum: 8c0/06217360db2665fe31351f98d95c1efdbf3919403e748d3a6b4377a79704ef524765ba2ccf499daa9b30fcbe5ef9d08988aee773e89a4998cf47e3800c95b635 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.34 - resolution: "@types/connect@npm:3.4.34" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/e60c2843dc236a5381c61ee1df909cbbd3473117c4d55bf014801574af629c9c515a2bfcbf941db9e92630329ad61e97611ca134ca5ecb19f7f1de3db0f7dbc4 - languageName: node - linkType: hard - -"@types/content-disposition@npm:*": - version: 0.5.3 - resolution: "@types/content-disposition@npm:0.5.3" - checksum: 8c0/04c2763ea6e51bcd8e92537dc30ffa896e68f5f1408451aaeae61fde033746c685ac02fd80047357febbb2da4a0fecfe092d4443d04ee2df16c8037d17ab0f16 - languageName: node - linkType: hard - -"@types/cookie@npm:^0.4.0": - version: 0.4.0 - resolution: "@types/cookie@npm:0.4.0" - checksum: 8c0/45c8007d006e972e238a7e40f76f0d8743051dd1823be127adc1adf6398e17c64b593d4faab2eaae6d7469dfb51df90a017227dcb92d58848b877060fa7a5780 - languageName: node - linkType: hard - -"@types/cookie@npm:^0.4.1": - version: 0.4.1 - resolution: "@types/cookie@npm:0.4.1" - checksum: 8c0/f96afe12bd51be1ec61410b0641243d93fa3a494702407c787a4c872b5c8bcd39b224471452055e44a9ce42af1a636e87d161994226eaf4c2be9c30f60418409 - languageName: node - linkType: hard - -"@types/cookies@npm:*": - version: 0.7.6 - resolution: "@types/cookies@npm:0.7.6" - dependencies: - "@types/connect": "npm:*" - "@types/express": "npm:*" - "@types/keygrip": "npm:*" - "@types/node": "npm:*" - checksum: 8c0/998b7ca5f7d08c1f0c7a452224efe6d6c0967c6aa3df5bf45559e2df4fc2409fdba7077274843e1e50b9d830de517341f37f1b7dcf9efe662f68f3d58291bea0 - languageName: node - linkType: hard - -"@types/cross-spawn@npm:^6.0.1": - version: 6.0.2 - resolution: "@types/cross-spawn@npm:6.0.2" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/658bd49267a7200e87e67c48ef1e58ee7418bbd4417fb191393b7051d47f590023090cad7b69eb3821d1907b82392b764e1114b1ec6000b01e98126926c8b06f - languageName: node - linkType: hard - -"@types/d3-array@npm:^3.0.3": - version: 3.2.1 - resolution: "@types/d3-array@npm:3.2.1" - checksum: 38bf2c778451f4b79ec81a2288cb4312fe3d6449ecdf562970cc339b60f280f31c93a024c7ff512607795e79d3beb0cbda123bb07010167bce32927f71364bca - languageName: node - linkType: hard - -"@types/d3-color@npm:*": - version: 3.1.3 - resolution: "@types/d3-color@npm:3.1.3" - checksum: 65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae - languageName: node - linkType: hard - -"@types/d3-color@npm:^2.0.0": - version: 2.0.6 - resolution: "@types/d3-color@npm:2.0.6" - checksum: 3d4b064d304fce21e9dccea3b8e11d11b7f1393df9bf577ea8b26fe16e0ea4b4ee4710c4fc4147c95c2db96512a23f80345dc22ebbb8d9c6dc473c4b709af47d - languageName: node - linkType: hard - -"@types/d3-ease@npm:^3.0.0": - version: 3.0.2 - resolution: "@types/d3-ease@npm:3.0.2" - checksum: aff5a1e572a937ee9bff6465225d7ba27d5e0c976bd9eacdac2e6f10700a7cb0c9ea2597aff6b43a6ed850a3210030870238894a77ec73e309b4a9d0333f099c - languageName: node - linkType: hard - -"@types/d3-format@npm:^1.4.1": - version: 1.4.5 - resolution: "@types/d3-format@npm:1.4.5" - checksum: d4dbfff22afdf1ad60db7115e877b891864fac380537534dbacf9b5f87cdcd0a418e8d83d4947c59ed8715befa7d018aecd8445f05ae3a5b0796dd495508c082 - languageName: node - linkType: hard - -"@types/d3-hierarchy@npm:^1.1.8": - version: 1.1.11 - resolution: "@types/d3-hierarchy@npm:1.1.11" - checksum: 50973998040fbd1e484994770a0329f931e80a00d6b7bccfec88287d291c1b55c71ff99acc11ae7964503cff686494d37412abe1d99f73f365168fc3f09a7d8b - languageName: node - linkType: hard - -"@types/d3-interpolate@npm:^3.0.1": - version: 3.0.4 - resolution: "@types/d3-interpolate@npm:3.0.4" - dependencies: - "@types/d3-color": "npm:*" - checksum: 066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4 - languageName: node - linkType: hard - -"@types/d3-path@npm:*": - version: 3.0.2 - resolution: "@types/d3-path@npm:3.0.2" - checksum: 04f0622f766c0a5ead4656d49285e65203ecc6ab3da439895155db6f425dea733bf1dd9372c3ccbbe25992fe27b485896e3e58e7ac3b5d084beb1fd3dd87de6b - languageName: node - linkType: hard - -"@types/d3-path@npm:^2": - version: 2.0.4 - resolution: "@types/d3-path@npm:2.0.4" - checksum: 82214a9644cfffe0c1f9a7aab00e3912aaba89115c60d94ecf716d282eac71671761962a9e911a8ebc457777e3db42f80c355b61010e5e27218f6aed32128d39 - languageName: node - linkType: hard - -"@types/d3-scale-chromatic@npm:^2.0.0": - version: 2.0.4 - resolution: "@types/d3-scale-chromatic@npm:2.0.4" - checksum: d545ea57b4c2fb539d60fce090bc2d265df48047702b8762c7decca1557edf9f761722a5e47d4a65bbf9c7271421a4f6088dde5ee700f94ba8f798c8b0ca3af6 - languageName: node - linkType: hard - -"@types/d3-scale@npm:^3.2.3": - version: 3.3.5 - resolution: "@types/d3-scale@npm:3.3.5" - dependencies: - "@types/d3-time": "npm:^2" - checksum: 2689ab13092e3fded22cdd1b888afd91aa60190be40c8eddc12b2d42de59b00917778340f90317c68c5ffc3a1bee68f5ca155434cd466bc7804f400f3f9e7529 - languageName: node - linkType: hard - -"@types/d3-scale@npm:^4.0.2": - version: 4.0.8 - resolution: "@types/d3-scale@npm:4.0.8" - dependencies: - "@types/d3-time": "npm:*" - checksum: 57de90e4016f640b83cb960b7e3a0ab3ed02e720898840ddc5105264ffcfea73336161442fdc91895377c2d2f91904d637282f16852b8535b77e15a761c8e99e - languageName: node - linkType: hard - -"@types/d3-shape@npm:^2.0.0": - version: 2.1.7 - resolution: "@types/d3-shape@npm:2.1.7" - dependencies: - "@types/d3-path": "npm:^2" - checksum: 2433f073b20a1f0180406a83e070a8d862101e637c1f6be8fbe814065d6627848b84b2bd33251752f5b469cd8e02217d21c43a8454ea1b56d7a0f493fa1a75a0 - languageName: node - linkType: hard - -"@types/d3-shape@npm:^3.1.0": - version: 3.1.6 - resolution: "@types/d3-shape@npm:3.1.6" - dependencies: - "@types/d3-path": "npm:*" - checksum: 0625715925d3c7ed3d44ce998b42c993f063c31605b6e4a8046c4be0fe724e2d214fc83e86d04f429a30a6e1f439053e92b0d9e59e1180c3a5327b4a6e79fa0a - languageName: node - linkType: hard - -"@types/d3-time-format@npm:^2.3.1": - version: 2.3.4 - resolution: "@types/d3-time-format@npm:2.3.4" - checksum: 37b447f7338ab99d1591c7c2e55dde3b35916904132040046de4ad68a5691580bc29f23d04d6ce262454bc2713f1fbeaac912b5b44efcd8b733adc30b08ce28a - languageName: node - linkType: hard - -"@types/d3-time-format@npm:^3.0.0": - version: 3.0.4 - resolution: "@types/d3-time-format@npm:3.0.4" - checksum: 3c0d22ff0e30610036d6f75f791fe8d957e750511e930bb4ea466bb43e1505497ffac8a77a0e62b3f0f5ee3c5515202fecfc7d3522ff78d2487af19d398d2184 - languageName: node - linkType: hard - -"@types/d3-time@npm:*, @types/d3-time@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/d3-time@npm:3.0.3" - checksum: 245a8aadca504df27edf730de502e47a68f16ae795c86b5ca35e7afa91c133aa9ef4d08778f8cf1ed2be732f89a4105ba4b437ce2afbdfd17d3d937b6ba5f568 - languageName: node - linkType: hard - -"@types/d3-time@npm:^1.1.1": - version: 1.1.4 - resolution: "@types/d3-time@npm:1.1.4" - checksum: d1dafa4605c10739de216bdf3dfe9c3953e583e849dc5586216525897c96bbbae8972c50e9c11a4c54e700c089914cf7a9764e9806d316a84838ecf9e5c52722 - languageName: node - linkType: hard - -"@types/d3-time@npm:^2": - version: 2.1.4 - resolution: "@types/d3-time@npm:2.1.4" - checksum: b597bfa51a163d4231e953d6903b06fd6341d0f11a28222a79fafaddb46155d7f458a67c814de53df84926a47dd535897228a475679d228576b0cda87351e534 - languageName: node - linkType: hard - -"@types/d3-timer@npm:^3.0.0": - version: 3.0.2 - resolution: "@types/d3-timer@npm:3.0.2" - checksum: c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1 - languageName: node - linkType: hard - -"@types/debug@npm:^4.1.7": - version: 4.1.7 - resolution: "@types/debug@npm:4.1.7" - dependencies: - "@types/ms": "npm:*" - checksum: 8c0/742b752b60e14a752d9bf172e64f28e172f630b9933e763d2b54c7c8c1f33b99b1ef067d7312665a4d0539d8df7ea3eb664a8039f900e4b8234c647a569d123a - languageName: node - linkType: hard - -"@types/envinfo@npm:7.8.3": - version: 7.8.3 - resolution: "@types/envinfo@npm:7.8.3" - checksum: 31a504f317c8b2c93dda513d3c117f518f27cf3f36aba65e78bf908927f9ef304351fe49d6ba19515994b91d1d1c23a089bfd3c8b0f1e84737606f6791a05ff6 - languageName: node - linkType: hard - -"@types/eslint-scope@npm:^3.7.3": - version: 3.7.4 - resolution: "@types/eslint-scope@npm:3.7.4" - dependencies: - "@types/eslint": "npm:*" - "@types/estree": "npm:*" - checksum: 8c0/f8a19cddf9d402f079bcc261958fff5ff2616465e4fb4cd423aa966a6a32bf5d3c65ca3ca0fbe824776b48c5cd525efbaf927b98b8eeef093aa68a1a2ba19359 - languageName: node - linkType: hard - -"@types/eslint@npm:*": - version: 8.21.0 - resolution: "@types/eslint@npm:8.21.0" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 8c0/2cdf0016066d99984c0dcf387404a319aa81aa7d8cf40e8dd2066abab8786bbc3099f63868c954994a1eb27383201833a95402237c9dd260959741236a5d0ee9 - languageName: node - linkType: hard - -"@types/eslint@npm:8": - version: 8.44.2 - resolution: "@types/eslint@npm:8.44.2" - dependencies: - "@types/estree": "npm:*" - "@types/json-schema": "npm:*" - checksum: 8c0/3c402215f7f495f9267a51fecd6a6d056eb8b3b031a1c472286b7d23a397257327eb03712befa7da60614dd63d31235d27dbc5c586b6a408798dafb8ee0c5eb2 - languageName: node - linkType: hard - -"@types/estree@npm:*": - version: 1.0.0 - resolution: "@types/estree@npm:1.0.0" - checksum: 8c0/4e73ff606bf7c7ccdaa66092de650c410a4ad2ecc388fdbed8242cac9dbcad72407e1ceff041b7da691babb02ff74ab885d6231fb09368fdd1eabbf1b5253d49 - languageName: node - linkType: hard - -"@types/estree@npm:1.0.5": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d - languageName: node - linkType: hard - -"@types/estree@npm:^0.0.51": - version: 0.0.51 - resolution: "@types/estree@npm:0.0.51" - checksum: 8c0/a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 - languageName: node - linkType: hard - -"@types/estree@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/estree@npm:1.0.1" - checksum: 8c0/b4022067f834d86766f23074a1a7ac6c460e823b00cd8fe94c997bc491e7794615facd3e1520a934c42bd8c0689dbff81e5c643b01f1dee143fc758cac19669e - languageName: node - linkType: hard - -"@types/express-jwt@npm:0.0.42": - version: 0.0.42 - resolution: "@types/express-jwt@npm:0.0.42" - dependencies: - "@types/express": "npm:*" - "@types/express-unless": "npm:*" - checksum: 8c0/fa0c3219ab0a9ccd1c3c1a7057626148d3f81ab53846d247e2729d006fa913bf202d8c0716a91d10fa94ebc8ab8861acbfca3118d3b671a6dc411f00f5553d68 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.31": - version: 4.17.33 - resolution: "@types/express-serve-static-core@npm:4.17.33" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - checksum: 8c0/68f21adeb8cb7085014692daa8fd75b33be2cbb91f954f42fef4804e04cb34abbe8020918d7656243afec4882949ce0c4e8074eaf5a5f8dfbef704690799724a - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.18": - version: 4.17.20 - resolution: "@types/express-serve-static-core@npm:4.17.20" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - checksum: 8c0/bd9b95aed8e835a579599157f1d4bbeca5109629a99932758efb64be34be95443f0a46e52f96f9d85c014142d0711f82a860fbdd5417b6438520622170883333 - languageName: node - linkType: hard - -"@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.36 - resolution: "@types/express-serve-static-core@npm:4.17.36" - dependencies: - "@types/node": "npm:*" - "@types/qs": "npm:*" - "@types/range-parser": "npm:*" - "@types/send": "npm:*" - checksum: 8c0/ab0730272ed83528d0c7a040bc53c033720be5836c7059ffa8290ad13e6a57f5903aa14c2556f3235c9fa2ea167c477f00c43ae8e4a8712d05461dd6b9e69cde - languageName: node - linkType: hard - -"@types/express-unless@npm:*": - version: 0.5.1 - resolution: "@types/express-unless@npm:0.5.1" - dependencies: - "@types/express": "npm:*" - checksum: 8c0/e57f7e843d2537e0dc7e1e29e4f270457ee1bcd3afa1e4a0bc0a5b000535de7d1d910aac82a2e6af2619dba6a5609e703eb39b56faec4a1dd9f62c4c8bcf8251 - languageName: node - linkType: hard - -"@types/express@npm:*": - version: 4.17.12 - resolution: "@types/express@npm:4.17.12" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.18" - "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 8c0/37102ad5297ad35693adbb728ca6c233f1cc37a1bd39e2c2f98f3b3d0a15f0fe7992961d4ccf8b8fd2406dbd95e0134d7fb1ef1361d171c2bf3321d36f19ca93 - languageName: node - linkType: hard - -"@types/express@npm:4": - version: 4.17.17 - resolution: "@types/express@npm:4.17.17" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.33" - "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 8c0/5802a0a28f7473744dd6a118479440d8c5c801c973d34fb6f31b5ee645a41fee936193978a8e905d55deefda9b675d19924167bf11a31339874c3161a3fc2922 - languageName: node - linkType: hard - -"@types/express@npm:^4.17.13": - version: 4.17.16 - resolution: "@types/express@npm:4.17.16" - dependencies: - "@types/body-parser": "npm:*" - "@types/express-serve-static-core": "npm:^4.17.31" - "@types/qs": "npm:*" - "@types/serve-static": "npm:*" - checksum: 8c0/af82be5759cf2d8f12d454d78a3efe7a9963ddce2bb1fa5029ad50b912b41b9df3e21e2099212942bd8502d4ba629252b9933b9c93f19e7b34895d23fcffca36 - languageName: node - linkType: hard - -"@types/fs-capacitor@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/fs-capacitor@npm:2.0.0" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/36df2fec47a6e6dacb0bd0b9e044dfecb29adb92dca97fb7f188393d20603dc58a7259c786dc300de8db1414755c541876775c50dcc0025ad4012d681cc76313 - languageName: node - linkType: hard - -"@types/fs-extra@npm:11.0.4": - version: 11.0.4 - resolution: "@types/fs-extra@npm:11.0.4" - dependencies: - "@types/jsonfile": "npm:*" - "@types/node": "npm:*" - checksum: 9e34f9b24ea464f3c0b18c3f8a82aefc36dc524cc720fc2b886e5465abc66486ff4e439ea3fb2c0acebf91f6d3f74e514f9983b1f02d4243706bdbb7511796ad - languageName: node - linkType: hard - -"@types/glob@npm:*, @types/glob@npm:^7.1.1": - version: 7.1.3 - resolution: "@types/glob@npm:7.1.3" - dependencies: - "@types/minimatch": "npm:*" - "@types/node": "npm:*" - checksum: 8c0/6908b75db6fe1095452cb7158a5aa86ae2416db7259ded8c32ad1335f8ba17e45dd4e709a2de09384d2bbb325687e92c4d58757a82553b59db2ad162f2e1696f - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.5 - resolution: "@types/graceful-fs@npm:4.1.5" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/537cff67c75f25b86df8909131b4c2100028bb73368125cef1358b41ba016377d0fc86e9e6101c2d3860cb83aff1be27953616a918de5b318b5fb18c8f4de09d - languageName: node - linkType: hard - -"@types/graceful-fs@npm:^4.1.3": - version: 4.1.6 - resolution: "@types/graceful-fs@npm:4.1.6" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/b1d32c5ae7bd52cf60e29df20407904c4312a39612e7ec2ee23c1e3731c1cfe31d97c6941bf6cb52f5f929d50d86d92dd506436b63fafa833181d439b628885e - languageName: node - linkType: hard - -"@types/hast@npm:^2.0.0": - version: 2.3.1 - resolution: "@types/hast@npm:2.3.1" - dependencies: - "@types/unist": "npm:*" - checksum: 8c0/1c8302f30cc951ed963a8f3ac70533e9093c2aebe3a872e2a12dd71fbb005fd37fa1149c56d00d13290bf55f1929fa54ed2334c71874bae56158b4aa59fffa13 - languageName: node - linkType: hard - -"@types/html-minifier-terser@npm:^5.0.0": - version: 5.1.1 - resolution: "@types/html-minifier-terser@npm:5.1.1" - checksum: 8c0/2fdd635949f5ab30978ab22a9bb23308bc8175bc38061b9f56af01ad19d6034f95d9d1794fea9214b560e099ba928293a5afaa850839cddfced57fca9e5524ef - languageName: node - linkType: hard - -"@types/html-minifier-terser@npm:^6.0.0": - version: 6.1.0 - resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: 8c0/a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab - languageName: node - linkType: hard - -"@types/http-assert@npm:*": - version: 1.5.1 - resolution: "@types/http-assert@npm:1.5.1" - checksum: 8c0/b49d22b218834c39e79e1d3ef589be3313dc8d9be1cc08b5b9ec81e058456b5229bc4714a6eb1ef77252290f14acc8a8f0ce88d51f142bd702c154128eb87c31 - languageName: node - linkType: hard - -"@types/http-cache-semantics@npm:*": - version: 4.0.4 - resolution: "@types/http-cache-semantics@npm:4.0.4" - checksum: 51b72568b4b2863e0fe8d6ce8aad72a784b7510d72dc866215642da51d84945a9459fa89f49ec48f1e9a1752e6a78e85a4cda0ded06b1c73e727610c925f9ce6 - languageName: node - linkType: hard - -"@types/http-errors@npm:*": - version: 1.8.0 - resolution: "@types/http-errors@npm:1.8.0" - checksum: 8c0/9863d1ae6162edb4fec0d775bfcaeb5c5efffdd3ac921a30109033cb6d75ae1e7337f979beb06f057d270c34d1b3c7debc0e1838d08b88550425363209efa1e6 - languageName: node - linkType: hard - -"@types/http-proxy@npm:^1.17.5": - version: 1.17.6 - resolution: "@types/http-proxy@npm:1.17.6" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/175157a886cf5b808dd0ab962a00e5568b9ae6b51c8cc59719878e729d52bc07727481673aa30e71a2026cf3bf74cc0db9caacd1d2f26063f19d069d7cf59ba9 - languageName: node - linkType: hard - -"@types/http-proxy@npm:^1.17.8": - version: 1.17.9 - resolution: "@types/http-proxy@npm:1.17.9" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/f9bf3702f34c6de68f981c65b43d58d37f259cd6555403331ca10ec918b3778c28bbecc3f3aab15dd4d6751522b01ddf51a86834db7691fbe8ce94f3d2b1ec58 - languageName: node - linkType: hard - -"@types/inquirer@npm:^7.3.1": - version: 7.3.1 - resolution: "@types/inquirer@npm:7.3.1" - dependencies: - "@types/through": "npm:*" - rxjs: "npm:^6.4.0" - checksum: 8c0/5ef2650cef89b9cf33f238f0e89493c36c811edfaff2a33935fb8bc1553931acd8681fe5b5b02fd03c587db38e04c6678af026918d8f9d9613cb3a9d3fc8b068 - languageName: node - linkType: hard - -"@types/is-function@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/is-function@npm:1.0.0" - checksum: 8c0/25dcb34ed4d783e7af1dbaff4a5526148dde924f8d4f682844ad15cac1589cd2e4ead06cf6b1ece8d316dfe344125ed9a471c7732ff6175924ad925bbd98a616 - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.3 - resolution: "@types/istanbul-lib-coverage@npm:2.0.3" - checksum: 8c0/820d093eed629844074ae6b94b7d131eb0aacf33b9c952488d20ccab9dadf1376dbb33a461960ace5bc58208b5fac3ff5991283e9bf07914150998ebdfb0115e - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" - dependencies: - "@types/istanbul-lib-coverage": "npm:*" - checksum: 8c0/7ced458631276a28082ee40645224c3cdd8b861961039ff811d841069171c987ec7e50bc221845ec0d04df0022b2f457a21fb2f816dab2fbe64d59377b32031f - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.0 - resolution: "@types/istanbul-reports@npm:3.0.0" - dependencies: - "@types/istanbul-lib-report": "npm:*" - checksum: 8c0/cda61eab60d96305f9a168c8742536216e53bce172f7fa949a7f32f49e00fc5a1b5d72cb1f0452449c079cf00e0c99fff7fb88d52a63c842f98dc1f02116d407 - languageName: node - linkType: hard - -"@types/jest@npm:*": - version: 26.0.23 - resolution: "@types/jest@npm:26.0.23" - dependencies: - jest-diff: "npm:^26.0.0" - pretty-format: "npm:^26.0.0" - checksum: 8c0/ca2b1fa93ed09bff3e9474e00ee9ede6cf596fcb3f0e95fca99e196ead659c708041c240d32d3ca12f155a5f76705edc2fbed32ed95a79adc460933e3d65e374 - languageName: node - linkType: hard - -"@types/jest@npm:29.5.8": - version: 29.5.8 - resolution: "@types/jest@npm:29.5.8" - dependencies: - expect: "npm:^29.0.0" - pretty-format: "npm:^29.0.0" - checksum: a28e7827ea7e1a2aace6a386868fa6b8402c162d6c71570aed2c29d3745ddc22ceef6899a20643071817905d3c57b670a7992fc8760bff65939351fd4dc481cf - languageName: node - linkType: hard - -"@types/jest@npm:^26.0.23": - version: 26.0.24 - resolution: "@types/jest@npm:26.0.24" - dependencies: - jest-diff: "npm:^26.0.0" - pretty-format: "npm:^26.0.0" - checksum: 8c0/1085ac96af43566518daf3aca60cb7881bfe2ffe1f5343738933e386ebf909095fde15273c3e99c685854dfc833b05b156fb5daf68707c0daa1c0c0db13a665b - languageName: node - linkType: hard - -"@types/js-levenshtein@npm:^1.1.0": - version: 1.1.0 - resolution: "@types/js-levenshtein@npm:1.1.0" - checksum: 8c0/7a9f1e0f65598d3e75dbd1933479ce646bc5ebacf6bb0294dd01cd04a82e161d1066a135b1be7e6657f5d06893f949e1a7a5bae45a4a2366646c77125ae31bc8 - languageName: node - linkType: hard - -"@types/js-levenshtein@npm:^1.1.1": - version: 1.1.1 - resolution: "@types/js-levenshtein@npm:1.1.1" - checksum: 8c0/23d021eb3c976e0a6648dbf2fc104cafd7f417b04aa22de24e3d26479d6295660e3f4cfdb93073924830297b8191ec64d86881c55b08c6d7a9798fde41d2a767 - languageName: node - linkType: hard - -"@types/js-yaml@npm:^4.0.0": - version: 4.0.5 - resolution: "@types/js-yaml@npm:4.0.5" - checksum: 8c0/37eb783b16f1704d26bbf83b35cf5d12f6018c18f2c9232515468ac60a4c5b71b6344a7b872545eeca3dfd66bb17e2bb1e611646cc727d7c6a001165a4ec0a32 - languageName: node - linkType: hard - -"@types/jscodeshift@npm:0.11.6": - version: 0.11.6 - resolution: "@types/jscodeshift@npm:0.11.6" - dependencies: - ast-types: "npm:^0.14.1" - recast: "npm:^0.20.3" - checksum: 8c0/1d204a4c3d9f52669e315dfbc1e65434ec55ee884574306d35048b89ef83b625c64d510228b6aabbd4248af566e02e0ce9de0aa8ccdfff696c69fbaced7007e7 - languageName: node - linkType: hard - -"@types/jsdom@npm:^20.0.0": - version: 20.0.1 - resolution: "@types/jsdom@npm:20.0.1" - dependencies: - "@types/node": "npm:*" - "@types/tough-cookie": "npm:*" - parse5: "npm:^7.0.0" - checksum: 8c0/3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 - languageName: node - linkType: hard - -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.11 - resolution: "@types/json-schema@npm:7.0.11" - checksum: 8c0/bd1f9a7b898ff15c4bb494eb19124f2d688b804c39f07cbf135ac73f35324970e9e8329b72aae1fb543d925ea295a1568b23056c26658cecec4741fa28c3b81a - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.7": - version: 7.0.9 - resolution: "@types/json-schema@npm:7.0.9" - checksum: 8c0/46a9e92b7922495a50f55632d802f7e7ab2dffd76b3f894baf7b28012e73983df832977bedd748aa9a2bc8400c6e8659ca39faf6ccd93d71d41d5b0293338a0e - languageName: node - linkType: hard - -"@types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6": - version: 7.0.7 - resolution: "@types/json-schema@npm:7.0.7" - checksum: 8c0/fea3f318c98e16b648b1bb9ca8690b4c12f2f0d5295943e108624b855691d73143c2db76ae82155363a3dc7fb456e4d976fb52f50355b63ef682f131a73ab1a5 - languageName: node - linkType: hard - -"@types/json-stable-stringify@npm:^1.0.32": - version: 1.0.34 - resolution: "@types/json-stable-stringify@npm:1.0.34" - checksum: 8c0/b24c7953a314426011c2304f909278734504f5c77354c16ea3bbbc55cbba5f5e02ce026a2345dbfcd8a78f33a34693840441c12a31c653131a7010a568adc56c - languageName: node - linkType: hard - -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: 8c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac - languageName: node - linkType: hard - -"@types/jsonfile@npm:*": - version: 6.1.1 - resolution: "@types/jsonfile@npm:6.1.1" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/96dfca37e856978eaf256bf5200c46a01a27a0455b9323a72598e8d59ddd81095934bf15e9c84d6a30125cf63e1464aef6d70ab4a35f34ee2cdfa1fe0db0720b - languageName: node - linkType: hard - -"@types/jsonwebtoken@npm:9.0.5": - version: 9.0.5 - resolution: "@types/jsonwebtoken@npm:9.0.5" - dependencies: - "@types/node": "npm:*" - checksum: c582b8420586f3b9550f7e34992cb32be300bc953636f3b087ed9c180ce7ea5c2e4b35090be2d57f0d3168cc3ca1074932907caa2afe09f4e9c84cf5c0daefa8 - languageName: node - linkType: hard - -"@types/jsonwebtoken@npm:^9.0.0": - version: 9.0.1 - resolution: "@types/jsonwebtoken@npm:9.0.1" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/e603f206c91dac01f23096c6d2aaba014ab60357fc270afef4c68449c335643d76dc1c21cc6464c89d0fb8f7e471d14a03a4ffb13b62d7133c97f61e75d2fcdd - languageName: node - linkType: hard - -"@types/keygrip@npm:*": - version: 1.0.2 - resolution: "@types/keygrip@npm:1.0.2" - checksum: 8c0/95c9cc9824754baecb73c42051477c9f9dfb1a4dcaf6f51d025398e379b146adc0da2c476ed0129fe4ea157413910e5e2acb10c6dad308ef5ea8a95080229fd5 - languageName: node - linkType: hard - -"@types/keyv@npm:^3.1.1, @types/keyv@npm:^3.1.4": - version: 3.1.4 - resolution: "@types/keyv@npm:3.1.4" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c - languageName: node - linkType: hard - -"@types/koa-compose@npm:*": - version: 3.2.5 - resolution: "@types/koa-compose@npm:3.2.5" - dependencies: - "@types/koa": "npm:*" - checksum: 8c0/ef3f1a1c1162a1667f745696af94c37e9c8ddc8841bcf824ab9480f3a7d05b27d382a9c70988f5bfe475a2337ba2598d25aff686722e477c9b1585ee557d14db - languageName: node - linkType: hard - -"@types/koa@npm:*": - version: 2.13.3 - resolution: "@types/koa@npm:2.13.3" - dependencies: - "@types/accepts": "npm:*" - "@types/content-disposition": "npm:*" - "@types/cookies": "npm:*" - "@types/http-assert": "npm:*" - "@types/http-errors": "npm:*" - "@types/keygrip": "npm:*" - "@types/koa-compose": "npm:*" - "@types/node": "npm:*" - checksum: 8c0/17a3a6710be9d91b2e3711df0cbfab84af233255db5428bfcf8849c8f6e359f19be03d9f259cc57cf3430802dc4787775a380671669d04cabad3ffbc4a536560 - languageName: node - linkType: hard - -"@types/line-column@npm:1.0.0, @types/line-column@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/line-column@npm:1.0.0" - checksum: 8c0/70503f45d4e0953b470067df22911e0a9e877f5d8459dcbc2bbebc7dd8534114ef99fd0f0926e657fb9711e45e3ffaa7fb04469b605252f4309dbe66cb1c9489 - languageName: node - linkType: hard - -"@types/lodash@npm:4.14.201": - version: 4.14.201 - resolution: "@types/lodash@npm:4.14.201" - checksum: 14dc43787296c429433d7d034ed47c5ac24b92217056f80a0e6c990449120b9c9c1058918188945fb88353c0c8333c5c36dccc40c51edbd39b05d2169ab2e0ad - languageName: node - linkType: hard - -"@types/long@npm:^4.0.0": - version: 4.0.1 - resolution: "@types/long@npm:4.0.1" - checksum: 8c0/5ce2ecb4d14d29f0f25eff2e2fdb4e5d2ad2a7613094722bc06514d4aaeaa60fc4819465a438aa8e7f987c2649f50da18755d87ac30e5241a127251ad06b2c80 - languageName: node - linkType: hard - -"@types/lru-cache@npm:7.10.10": - version: 7.10.10 - resolution: "@types/lru-cache@npm:7.10.10" - dependencies: - lru-cache: "npm:*" - checksum: 8c0/ab85558867cb059bebd42074c1cd517eb41efb1db22b9d26dfdc58df01c83ff9c212a562b4ec3d5936418ffb03e626a0f30463026aa5fb5ced41e3b4b4af057f - languageName: node - linkType: hard - -"@types/mailparser@npm:3": - version: 3.4.4 - resolution: "@types/mailparser@npm:3.4.4" - dependencies: - "@types/node": "npm:*" - iconv-lite: "npm:^0.6.3" - checksum: 5d16e87cebff438f9e725ebb4f4cea4e6c55dfa1d5cdda3c56f3f91b915a0801a84675fee2a8d20b6de20ca8be79678a4e99fb5956104e2eb3344dfac387691c - languageName: node - linkType: hard - -"@types/mdast@npm:^3.0.0": - version: 3.0.10 - resolution: "@types/mdast@npm:3.0.10" - dependencies: - "@types/unist": "npm:*" - checksum: 8c0/375f08b3910505291b2815d9edf55dca63c6c4ec58dd33c866521e68905fd4e8fe83b397e167af2cdd3799b851a7e02817d58610cfb814aee20bf3c52d87be9b - languageName: node - linkType: hard - -"@types/memjs@npm:1": - version: 1.3.0 - resolution: "@types/memjs@npm:1.3.0" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/71d8dda576405a8ca16b6b312a546e4703f102a24d39c64d486b9bf6cdb13498ebf1c14e3b5ce583baeae47f84f21576c64950ba094b14ccd72639106a17dfd5 - languageName: node - linkType: hard - -"@types/mime-types@npm:2.1.4": - version: 2.1.4 - resolution: "@types/mime-types@npm:2.1.4" - checksum: a10d57881d14a053556b3d09292de467968d965b0a06d06732c748da39b3aa569270b5b9f32529fd0e9ac1e5f3b91abb894f5b1996373254a65cb87903c86622 - languageName: node - linkType: hard - -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 8c0/c4c0fc89042822a3b5ffd6ef0da7006513454ee8376ffa492372d17d2925a4e4b1b194c977b718c711df38b33eb9d06deb5dbf9f851bcfb7e5e65f06b2a87f97 - languageName: node - linkType: hard - -"@types/mime@npm:^1": - version: 1.3.2 - resolution: "@types/mime@npm:1.3.2" - checksum: 8c0/61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 - languageName: node - linkType: hard - -"@types/minimatch@npm:*": - version: 3.0.4 - resolution: "@types/minimatch@npm:3.0.4" - checksum: 8c0/6a61ad8ed703f7e81ff58cdb9721cc009cfb0ebc5151c7eaa490bfc373c387be7070d09943e0b4e3df6c572977ed1798959ce990693889670a564e7f7d5a7b59 - languageName: node - linkType: hard - -"@types/minimatch@npm:^3.0.3": - version: 3.0.5 - resolution: "@types/minimatch@npm:3.0.5" - checksum: 8c0/a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 - languageName: node - linkType: hard - -"@types/ms@npm:*": - version: 0.7.31 - resolution: "@types/ms@npm:0.7.31" - checksum: 8c0/19fae4f587651e8761c76a0c72ba8af1700d37054476878d164b758edcc926f4420ed06037a1a7fdddc1dbea25265895d743c8b2ea44f3f3f7ac06c449b9221e - languageName: node - linkType: hard - -"@types/node-fetch@npm:^2.5.7": - version: 2.5.12 - resolution: "@types/node-fetch@npm:2.5.12" - dependencies: - "@types/node": "npm:*" - form-data: "npm:^3.0.0" - checksum: 8c0/aaa69c354e596f9e293136ac43c9e5d91503415fb4eddfae3a9689153f0f033863bbd627e700b3f419ce14d06303e18e1d61b788d9085411f1fc12fc56afe356 - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 15.6.1 - resolution: "@types/node@npm:15.6.1" - checksum: 8c0/e3de56c8490d607f9adcdfd30dc52c8f97109fd80828b0dfbaa94a731ba67e790ce2b7f228098ac9e0bd735039c2eec1f412fa8d7ff90ae8a55c708223885eec - languageName: node - linkType: hard - -"@types/node@npm:20.10.4": - version: 20.10.4 - resolution: "@types/node@npm:20.10.4" - dependencies: - undici-types: "npm:~5.26.4" - checksum: 2c8b70cba731eb2ae3ae046daa74903bfcbb0e7b9196da767e5895054f6d252296ae7a04fb1dbbcb53bb004c4c658c05eaea2731bc9e2dd9e08f7e88d672f563 - languageName: node - linkType: hard - -"@types/node@npm:^10.1.0": - version: 10.17.60 - resolution: "@types/node@npm:10.17.60" - checksum: 8c0/0742294912a6e79786cdee9ed77cff6ee8ff007b55d8e21170fc3e5994ad3a8101fea741898091876f8dc32b0a5ae3d64537b7176799e92da56346028d2cbcd2 - languageName: node - linkType: hard - -"@types/node@npm:^14.0.10": - version: 14.18.11 - resolution: "@types/node@npm:14.18.11" - checksum: 8c0/94f79306474dc6b1314ccec661ebd2602534f5b9f4bf7ef213a564796c4f9b09ed78ce3fd25b0959501916813505f52bf803e6705cc08afb89a913f84d894f5e - languageName: node - linkType: hard - -"@types/node@npm:^15.0.2": - version: 15.14.9 - resolution: "@types/node@npm:15.14.9" - checksum: 8c0/fe5b69cffd20f97c814d568c1d791b3c367f9efa6567a18d2c15cd73c5437f47bcff73a2e10bdfe59f90ce7df47e6cc3c6d431c76d2213bf6099e8ab5d16d355 - languageName: node - linkType: hard - -"@types/nodemailer@npm:*": - version: 6.4.14 - resolution: "@types/nodemailer@npm:6.4.14" - dependencies: - "@types/node": "npm:*" - checksum: b5958843576cde76dc532aa7b726182fef8b466fa9fcaf1aa03f89f02e896bec4e28b593ffa1a289a46bd0b7fdf34da0640ab7ef8f0811948016f58f77e16307 - languageName: node - linkType: hard - -"@types/normalize-package-data@npm:^2.4.0": - version: 2.4.0 - resolution: "@types/normalize-package-data@npm:2.4.0" - checksum: 8c0/f5504a9fe5cb6b82d9d2fb7982e4681f51bd31dc6c4750f833ca6499a2372294e58c0e2e0f5d78066f3c212c553c85cdbf653c5d6035f902d00822e7f3590c28 - languageName: node - linkType: hard - -"@types/npmlog@npm:^4.1.2": - version: 4.1.2 - resolution: "@types/npmlog@npm:4.1.2" - checksum: 8c0/09a3395759651f0a867b5811ee33147803106684ff1f013ded27c632a2f8071766d95d862229feac112166b8ff9c6f3df49eb1e27875668a4e2e7fb5f579d3dd - languageName: node - linkType: hard - -"@types/overlayscrollbars@npm:^1.12.0": - version: 1.12.0 - resolution: "@types/overlayscrollbars@npm:1.12.0" - checksum: 8c0/eba2a858eab3c22a22657cff98d985d68dffdff1cdc6bd778c1a8127922fbefeb8fae5d871206fc08f9f250af4c92efe79d4a51779f192ebda2a43781dbdd2be - languageName: node - linkType: hard - -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: 8c0/1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 - languageName: node - linkType: hard - -"@types/parse5@npm:^5.0.0": - version: 5.0.3 - resolution: "@types/parse5@npm:5.0.3" - checksum: 8c0/7d7ebbcb704a0ef438aa0de43ea1fd9723dfa802b8fa459628ceaf063f092bd19791b2a2580265244898dcc9d40f7345588a76cf752847d29540539f802711ed - languageName: node - linkType: hard - -"@types/pascalcase@npm:1.0.3": - version: 1.0.3 - resolution: "@types/pascalcase@npm:1.0.3" - checksum: 4bc93fee5a7e3ea63a1c92f66cc72462dc557430c705ecefd834181950a779cf188f24e9afac15687ff9fdf360cb5f233130c6fc92d4bb94772551557adb8281 - languageName: node - linkType: hard - -"@types/pino-pretty@npm:*": - version: 4.7.0 - resolution: "@types/pino-pretty@npm:4.7.0" - dependencies: - "@types/pino": "npm:*" - checksum: 8c0/5472188a8e545d3b5f59fe8dbcf62639926a837abc9cb623ed269cd842476277b8e39695de9be1abff66899180cfd46e1930defe746bc6d185cb56df089bf3dd - languageName: node - linkType: hard - -"@types/pino-std-serializers@npm:*": - version: 2.4.1 - resolution: "@types/pino-std-serializers@npm:2.4.1" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/7853b0d056783f921346d6df9e6f7816d56879cc631f54225253e4b0f0abf7bf1e89b192980d92965739480a9dc6fcee7e966c6b7d8ddb242375507e668944f8 - languageName: node - linkType: hard - -"@types/pino@npm:*": - version: 6.3.8 - resolution: "@types/pino@npm:6.3.8" - dependencies: - "@types/node": "npm:*" - "@types/pino-pretty": "npm:*" - "@types/pino-std-serializers": "npm:*" - "@types/sonic-boom": "npm:*" - checksum: 8c0/2b85ca8599a8eedbdcddb60b8a25ce47c0178b87313e2d4ff64c54f90c5e5300ad5ee316278b5a60cefb341cd0c3156fb4e824e8e2cfc4e33d3f065589ee8beb - languageName: node - linkType: hard - -"@types/pino@npm:^6.3.8": - version: 6.3.12 - resolution: "@types/pino@npm:6.3.12" - dependencies: - "@types/node": "npm:*" - "@types/pino-pretty": "npm:*" - "@types/pino-std-serializers": "npm:*" - sonic-boom: "npm:^2.1.0" - checksum: 8c0/906a2a30f9f49eda0c84548e3376c1566339855ff25357e77bc357b68d43d8bc1500b95a0028d420a6cfc36efa0229401a6b94552b22398e457dd1c3627d6ccf - languageName: node - linkType: hard - -"@types/prettier@npm:2.7.3": - version: 2.7.3 - resolution: "@types/prettier@npm:2.7.3" - checksum: 8c0/0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 - languageName: node - linkType: hard - -"@types/prettier@npm:^2.0.0": - version: 2.2.3 - resolution: "@types/prettier@npm:2.2.3" - checksum: 8c0/35d4cf3570cb8a29cd7c4a6f61e180b1167898b9cee1d00c0d75dac293d67f97774603889e408645bec27846d68a65106d60b0617429083a72060b59bfee57cf - languageName: node - linkType: hard - -"@types/pretty-hrtime@npm:^1.0.0": - version: 1.0.1 - resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: 8c0/e990110a3626e987319092c5149d5ea244785b83fbbd8e62605714ec1fa4317a3524ae0b6381cdc2ca92619d9a451b3fe9ff4085c42826f5398e3380d3031bff - languageName: node - linkType: hard - -"@types/prop-types@npm:*": - version: 15.7.3 - resolution: "@types/prop-types@npm:15.7.3" - checksum: 8c0/511aac811bfdba9dd1c463d6e502d852bb2196048cf861fbf48a97d883dd32c1c44ad2127a18dbb49733d9ad0aafd445d673eb50d5547ca843106835f67b5877 - languageName: node - linkType: hard - -"@types/prop-types@npm:^15.7.2": - version: 15.7.11 - resolution: "@types/prop-types@npm:15.7.11" - checksum: e53423cf9d510515ef8b47ff42f4f1b65a7b7b37c8704e2dbfcb9a60defe0c0e1f3cb1acfdeb466bad44ca938d7c79bffdd51b48ffb659df2432169d0b27a132 - languageName: node - linkType: hard - -"@types/q@npm:^1.5.1": - version: 1.5.4 - resolution: "@types/q@npm:1.5.4" - checksum: 8c0/764e99b9d2589598493b5737d50a3d1e15093f796f3bd76f45a7275dcf074354276d80af24313957bc1f2f516fa4236a63c5064bea1102ec89105e0176d676a2 - languageName: node - linkType: hard - -"@types/qs@npm:*, @types/qs@npm:^6.9.5": - version: 6.9.6 - resolution: "@types/qs@npm:6.9.6" - checksum: 8c0/2e97fdbd6cb16d78c00c86bfc34824132b7ce0b3fb98c79b3ea7a1eb28f0194b93bb09d0bf330f0949bd115e7abf9a95f0e0df785dbaeeb7496f12e35c7c9bb7 - languageName: node - linkType: hard - -"@types/qs@npm:6.9.11": - version: 6.9.11 - resolution: "@types/qs@npm:6.9.11" - checksum: 657a50f05b694d6fd3916d24177cfa0f3b8b87d9deff4ffa4dddcb0b03583ebf7c47b424b8de400270fb9a5cc1e9cf790dd82c833c6935305851e7da8ede3ff5 - languageName: node - linkType: hard - -"@types/range-parser@npm:*": - version: 1.2.3 - resolution: "@types/range-parser@npm:1.2.3" - checksum: 8c0/5c2a5797e63dd119c68832ebf0b5236836d70f0a834d7d7161f3d09db456be52821b2b27dafdd58b4bc4ec2241a2abc1537413cf2f6a0ecc5db2c3ac1a07253a - languageName: node - linkType: hard - -"@types/react-dom@npm:18.2.15": - version: 18.2.15 - resolution: "@types/react-dom@npm:18.2.15" - dependencies: - "@types/react": "npm:*" - checksum: 70e86f15f69f89b8f179139ab2e8a8aa9765e742789f5dd5a46fec40d4300ada8fe3349cceda42b9964a018982d7ccb7d791b47f781966c992bfd37da909fbd3 - languageName: node - linkType: hard - -"@types/react-dom@npm:^17.0.4": - version: 17.0.11 - resolution: "@types/react-dom@npm:17.0.11" - dependencies: - "@types/react": "npm:*" - checksum: 8c0/afd57cfd7c6ffbd5f71e6fbfb130323e938cc914b699513be7e69d7d59d3b0e332b15e5379c1e58b9f7f71fc48c0cbdcd5301e1a0017540b53c6152e150e2fee - languageName: node - linkType: hard - -"@types/react-dom@npm:^18.0.0": - version: 18.0.10 - resolution: "@types/react-dom@npm:18.0.10" - dependencies: - "@types/react": "npm:*" - checksum: 8c0/a07b900a2d5559830f88b3e525cf279f9f04b4893f4d17e64f5adb08d8abe0e3151e0d3c0ea17d836104ae47594be577529a004265600e4304a43a93b0d5d61e - languageName: node - linkType: hard - -"@types/react-grid-layout@npm:1": - version: 1.3.5 - resolution: "@types/react-grid-layout@npm:1.3.5" - dependencies: - "@types/react": "npm:*" - checksum: abd2a1dda9625c753ff2571a10b69740b2fb9ed1d3141755d54d5814cc12a9701c7c5cd78e8797e945486b441303b82543be71043a32d6a988b57a14237f93c6 - languageName: node - linkType: hard - -"@types/react-lifecycles-compat@npm:^3.0.1": - version: 3.0.4 - resolution: "@types/react-lifecycles-compat@npm:3.0.4" - dependencies: - "@types/react": "npm:*" - checksum: 3c33fcd7d52d44031b21cf8a6ae9c0f208fe3b972ee4f03fcbe4509d2c50da474bfdd3330f5a09046b7fd63a1f7f23b194bc8d774823c1981cc13929744b90d2 - languageName: node - linkType: hard - -"@types/react-syntax-highlighter@npm:11.0.5": - version: 11.0.5 - resolution: "@types/react-syntax-highlighter@npm:11.0.5" - dependencies: - "@types/react": "npm:*" - checksum: 8c0/f4aa5ae5d1e877946fd7667aa9fa27c1cbba23bbe2b4301933df70d7b5ee9c207c6ecdb19681916b57bf190e4c0f7803fce4e5359fa9a3548f7b100ee4508311 - languageName: node - linkType: hard - -"@types/react@npm:*": - version: 17.0.8 - resolution: "@types/react@npm:17.0.8" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" - csstype: "npm:^3.0.2" - checksum: 8c0/5ed8ab826e843f54d3467a3a6e133651c9ed7b59da394437cfdb9ad2ebc92b74b8f9f437cf6d903dfbeb7f3c5bb5bdc902f3950bc5ca161420905c1bd38a165e - languageName: node - linkType: hard - -"@types/react@npm:17.0.5": - version: 17.0.5 - resolution: "@types/react@npm:17.0.5" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" - csstype: "npm:^3.0.2" - checksum: 8c0/062f18a4d0677c6147f7b8100d23d36bec225b42a04a768bb82f5c13ebff64af7097c017a15aaa70eb34d653bfb08b6674bfb15d083a8bfcdfd514fd4a66f635 - languageName: node - linkType: hard - -"@types/react@npm:18.2.37": - version: 18.2.37 - resolution: "@types/react@npm:18.2.37" - dependencies: - "@types/prop-types": "npm:*" - "@types/scheduler": "npm:*" - csstype: "npm:^3.0.2" - checksum: 79dd5d23da05bec54e7423ca17096e345eb8fd80a3bf8dd916bb5cdd60677d27c298523aa5b245d090fcc4ec100cfd58c1af4631fbac709d0a9d8be75f9d78a9 - languageName: node - linkType: hard - -"@types/readdir-glob@npm:*": - version: 1.1.5 - resolution: "@types/readdir-glob@npm:1.1.5" - dependencies: - "@types/node": "npm:*" - checksum: 46849136a3b5246105bca0303aab80552a9ff67e024e77ef1845a806a24c1a621dfcba0e4ee5a00ebad17f51edb80928f2dd6dc510a1d9897f3bc22ed64e5cbd - languageName: node - linkType: hard - -"@types/responselike@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/responselike@npm:1.0.0" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/474ac2402e6d43c007eee25f50d01eb1f67255ca83dd8e036877292bbe8dd5d2d1e50b54b408e233b50a8c38e681ff3ebeaf22f18b478056eddb65536abb003a - languageName: node - linkType: hard - -"@types/retry@npm:0.12.0, @types/retry@npm:^0.12.0": - version: 0.12.0 - resolution: "@types/retry@npm:0.12.0" - checksum: 8c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.1 - resolution: "@types/scheduler@npm:0.16.1" - checksum: 8c0/78aa5a8b19b42b7b6dc1dc3fb64c1ef2cb87b685292a0951d06d15ac4de8926c9a219bd027f438c3cb701cf525cf1f233bc09a90af5488ae8b98af2ec84b656a - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.12": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 8c0/73295bb1fee46f8c76c7a759feeae5a3022f5bedfdc17d16982092e4b33af17560234fb94861560c20992a702a1e1b9a173bb623a96f95f80892105f5e7d25e3 - languageName: node - linkType: hard - -"@types/send@npm:*": - version: 0.17.1 - resolution: "@types/send@npm:0.17.1" - dependencies: - "@types/mime": "npm:^1" - "@types/node": "npm:*" - checksum: 8c0/1aad6bfafdaa3a3cadad1b441843dfd166821c0e93513daabe979de85b552a1298cfb6f07d40f80b5ecf14a3194dc148deb138605039841f1dadc7132c73e634 - languageName: node - linkType: hard - -"@types/serve-index@npm:^1.9.1": - version: 1.9.1 - resolution: "@types/serve-index@npm:1.9.1" - dependencies: - "@types/express": "npm:*" - checksum: 8c0/ed1ac8407101a787ebf09164a81bc24248ccf9d9789cd4eaa360a9a06163e5d2168c46ab0ddf2007e47b455182ecaa7632a886639919d9d409a27f7aef4e847a - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.13.9 - resolution: "@types/serve-static@npm:1.13.9" - dependencies: - "@types/mime": "npm:^1" - "@types/node": "npm:*" - checksum: 8c0/2f94dc3086bb0cfe9015f059a646c1df19edc18d07630cdc2f38c4eea6db897da76bc6987d993f6197b1563356e1c08c4aa670fa980b5dd97992d0f55bba8d4f - languageName: node - linkType: hard - -"@types/serve-static@npm:^1.13.10": - version: 1.15.0 - resolution: "@types/serve-static@npm:1.15.0" - dependencies: - "@types/mime": "npm:*" - "@types/node": "npm:*" - checksum: 8c0/2bdf7561c74175cc57c912d360fe763af0fc77a078f67d22cb515fa5b23db937314ffe1b5f96ca77c5e9de55b9d94277b7a3d288ff07067d6b2f83d004027430 - languageName: node - linkType: hard - -"@types/set-cookie-parser@npm:^2.4.0": - version: 2.4.0 - resolution: "@types/set-cookie-parser@npm:2.4.0" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/f35f579423bbffc1004b2fb95db8bf62499fba851ae1d8bcfbe294fd46c02c2ba9963544599bd959befc325dd9dfc3ab9c47cde8a46624d42d54b1e586dfad3a - languageName: node - linkType: hard - -"@types/smtp-server@npm:3": - version: 3.5.10 - resolution: "@types/smtp-server@npm:3.5.10" - dependencies: - "@types/node": "npm:*" - "@types/nodemailer": "npm:*" - checksum: 6aa530635c1801470f1eaa4619604ad0590a5fe150dbf7b157d9b49ec272753caaadc4c2905631e83f6ab0163fabcd59fa37a273f7b2458ae7d21ace52914f04 - languageName: node - linkType: hard - -"@types/sockjs@npm:^0.3.33": - version: 0.3.33 - resolution: "@types/sockjs@npm:0.3.33" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/75b9b2839970ebab3e557955b9e2b1091d87cefabee1023e566bccc093411acc4a1402f3da4fde18aca44f5b9c42fe0626afd073a2140002b9b53eb71a084e4d - languageName: node - linkType: hard - -"@types/sonic-boom@npm:*": - version: 0.7.0 - resolution: "@types/sonic-boom@npm:0.7.0" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/5e733cb37ea676f152acd284bcd3658faebc4dec111579bf7a480ce0ab5e24322d69438862adae50840c4723f9c5ce58c0373dc1154f5e3aee4338a0bf60952f - languageName: node - linkType: hard - -"@types/source-list-map@npm:*": - version: 0.1.2 - resolution: "@types/source-list-map@npm:0.1.2" - checksum: 8c0/0538ce317294febf40ed3fc3a2e483fa4aee8ba85584a66e5ed9c0af9ea48a348960bc467076643cb56aeafdd7d2252e90c75e68ef664c0477ec87ea0554ffdc - languageName: node - linkType: hard - -"@types/split2@npm:4.2.3": - version: 4.2.3 - resolution: "@types/split2@npm:4.2.3" - dependencies: - "@types/node": "npm:*" - checksum: 92326872b1f6f2e5a0808682a3f0630efb98bed51b1e40e2133e740f664bbde7a21af54e2a1f1a1f6eac218a70d7a9bae22d3e6d614950c06ddab391b7a1dfca - languageName: node - linkType: hard - -"@types/stack-trace@npm:0.0.29": - version: 0.0.29 - resolution: "@types/stack-trace@npm:0.0.29" - checksum: 8c0/401a1f80039706dd9f058336c797702ef3837bf34a663e4213c3b58be255b0649d699f65f8652976fb517146926c2ed5ebc8b6897e7460b99e16b84adc7fc985 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/stack-utils@npm:2.0.0" - checksum: 8c0/caad537eef33daaa830e8ee5bc42e51803d7df175014495f2df6129c018a2e80bf19a4d6e5115937eafb03d3f2998a089b0a3892afbefd462d9e83ffad2fc93b - languageName: node - linkType: hard - -"@types/tapable@npm:^1, @types/tapable@npm:^1.0.5": - version: 1.0.7 - resolution: "@types/tapable@npm:1.0.7" - checksum: 8c0/6693adccb670b9198e2dd01ed2ab1ca4174363d7c7424700f0144e6dc912e9ff11fb3b4f84e73c4ebf4302671ea00af53da7c3fa4f527c09b2aed36a0ae178a2 - languageName: node - linkType: hard - -"@types/tern@npm:*": - version: 0.23.9 - resolution: "@types/tern@npm:0.23.9" - dependencies: - "@types/estree": "npm:*" - checksum: 1d30ccfbb84362fe7a7edeea3ba5268f5a7a0965d504147c6b701092f0ea3f0833799ee753e2059a535ca06590f91dd2416e4bd94a6e8ad51eea127a0607c617 - languageName: node - linkType: hard - -"@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.9.5 - resolution: "@types/testing-library__jest-dom@npm:5.9.5" - dependencies: - "@types/jest": "npm:*" - checksum: 8c0/702d818a46e59288c5545aa9e6beb91a4df165d61b70fa0a501eed9ddca3ce37f526101b1e45a83db6ef7e210890922a68f9e56eb12e83fa3e9a1be4c98b2385 - languageName: node - linkType: hard - -"@types/through@npm:*": - version: 0.0.30 - resolution: "@types/through@npm:0.0.30" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/f78ead4bb253d9ce7e173fb3895a61d3bfc7c368246e886cfc79e16c65ed88b3acfe7812c06e72bfde54d6a25b9b1af4fc09072ee9353627093159d403003d59 - languageName: node - linkType: hard - -"@types/tough-cookie@npm:*": - version: 4.0.2 - resolution: "@types/tough-cookie@npm:4.0.2" - checksum: 8c0/38d01fc79a9a87166253b8c548bb401599424c57a818bea1b47a68be6dcd37fc3bff381f978354e00221f284937d5066bb92d58bf79952f9d21deb934e8ec9a7 - languageName: node - linkType: hard - -"@types/uglify-js@npm:*": - version: 3.13.0 - resolution: "@types/uglify-js@npm:3.13.0" - dependencies: - source-map: "npm:^0.6.1" - checksum: 8c0/0adf2b350a598a882e468a2657874d4dd6f72e03bbac69310fa75f6f8d7bd1f81edf3627bce56195084e9e090299244501ef69ad231844d71513a27a542e7bd2 - languageName: node - linkType: hard - -"@types/unist@npm:*": - version: 2.0.3 - resolution: "@types/unist@npm:2.0.3" - checksum: 8c0/fd9a3514566023e6c3c96aaadd62118d1566ec28ac66dbcf01ad0d5439f625a757406327b0207335ae9e810051583f05047026a3354a4f57ce68cae6f5f86821 - languageName: node - linkType: hard - -"@types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2, @types/unist@npm:^2.0.3": - version: 2.0.6 - resolution: "@types/unist@npm:2.0.6" - checksum: 8c0/8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb - languageName: node - linkType: hard - -"@types/uuid@npm:9.0.7": - version: 9.0.7 - resolution: "@types/uuid@npm:9.0.7" - checksum: b329ebd4f9d1d8e08d4f2cc211be4922d70d1149f73d5772630e4a3acfb5170c6d37b3d7a39a0412f1a56e86e8a844c7f297c798b082f90380608bf766688787 - languageName: node - linkType: hard - -"@types/vscode@npm:1.79.1": - version: 1.79.1 - resolution: "@types/vscode@npm:1.79.1" - checksum: 8c0/e9c2ac55b1012ffec62551064666fe6cf7c54ea766cf67387d9fcfe85ff1f2b11f7300eeea86bc8d42d994f1b4cc1d25610e84a7c9dde4b97a56de7d235be060 - languageName: node - linkType: hard - -"@types/webpack-env@npm:1.18.4": - version: 1.18.4 - resolution: "@types/webpack-env@npm:1.18.4" - checksum: 3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 - languageName: node - linkType: hard - -"@types/webpack-env@npm:^1.16.0": - version: 1.16.0 - resolution: "@types/webpack-env@npm:1.16.0" - checksum: 8c0/1b6081a92ade16aacfa8f0444e00db1c91406e950c9cd84f92a5e632a826857038e04a8314c4c8009a84f004d3858258e58243280d2abb897beadbc538e3687b - languageName: node - linkType: hard - -"@types/webpack-sources@npm:*": - version: 2.1.0 - resolution: "@types/webpack-sources@npm:2.1.0" - dependencies: - "@types/node": "npm:*" - "@types/source-list-map": "npm:*" - source-map: "npm:^0.7.3" - checksum: 8c0/58a0be9bd45dc778b4c3a1529265bef5343476db0e01795bf6ad57e9722b0575aa5691ec58959fc1cfd001373d854f54574e16f89e5d17fc2c6cbdecc0b31b8d - languageName: node - linkType: hard - -"@types/webpack@npm:5.28.5": - version: 5.28.5 - resolution: "@types/webpack@npm:5.28.5" - dependencies: - "@types/node": "npm:*" - tapable: "npm:^2.2.0" - webpack: "npm:^5" - checksum: d1fec1f678af79dd0d84333740bdd2ce128c7f4fd1f8d14bb0ec0f4c5af70580af68350f677e3696003a8cb2e2b5f510f8c0ed7ee5ad2bc7874c87f80ecd7c8d - languageName: node - linkType: hard - -"@types/webpack@npm:^4.41.11, @types/webpack@npm:^4.41.26": - version: 4.41.32 - resolution: "@types/webpack@npm:4.41.32" - dependencies: - "@types/node": "npm:*" - "@types/tapable": "npm:^1" - "@types/uglify-js": "npm:*" - "@types/webpack-sources": "npm:*" - anymatch: "npm:^3.0.0" - source-map: "npm:^0.6.0" - checksum: 8c0/7ebb64fe22eb436b42a89761b1bd67998769dfe26a6f371ac3733859414cea2f4cc743121f2dce638a280053fbd478747c9c15e8fa22644788cdc002e5a567f8 - languageName: node - linkType: hard - -"@types/webpack@npm:^4.41.8": - version: 4.41.29 - resolution: "@types/webpack@npm:4.41.29" - dependencies: - "@types/node": "npm:*" - "@types/tapable": "npm:^1" - "@types/uglify-js": "npm:*" - "@types/webpack-sources": "npm:*" - anymatch: "npm:^3.0.0" - source-map: "npm:^0.6.0" - checksum: 8c0/d5b728df7a485d113ece293d44c797f8be93608cbc4ed31cf4cdfeb9b70f2f9008aff53cdc8ee12df0be8e1f1180a00209e0bb21ac8d6fd584173f5f4258343c - languageName: node - linkType: hard - -"@types/ws@npm:^7.0.0": - version: 7.4.4 - resolution: "@types/ws@npm:7.4.4" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/98d4129d7f5f19e65b44ec073a908e7bf85bd9f38bf1e9139da0b794e6a17fbd52cf966985709fd3da26065370f62dff0227a06482b623cf6ec81ae3d6eb814d - languageName: node - linkType: hard - -"@types/ws@npm:^8.0.0": - version: 8.5.4 - resolution: "@types/ws@npm:8.5.4" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/dd8bde7d69296037b5053d9c644ce3a86a988e6cb8a632e36f5040e9e274c8879a10c13ac7fe163e4eb11a85f5b8c46fe6ce5f257b80cc93118494336f4e26c6 - languageName: node - linkType: hard - -"@types/ws@npm:^8.5.5": - version: 8.5.5 - resolution: "@types/ws@npm:8.5.5" - dependencies: - "@types/node": "npm:*" - checksum: 8c0/9fb5aaeb2899f2c5aa55946656a39fdf679e48ec4eff557901215249ac84f435853b1d224214e88a93fcbca4bc9a0b0af01113d76f37db0b5873a882e5e99935 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 20.2.0 - resolution: "@types/yargs-parser@npm:20.2.0" - checksum: 8c0/0464e5538340ef2541aa12ca2ccf0cbf2cd6f83edb964fdef61936885a7533b21189e6b9a31ad1aec2c81f8c9350707b2dd18697d88b752a20d2c731d968388d - languageName: node - linkType: hard - -"@types/yargs-parser@npm:21.0.3": - version: 21.0.3 - resolution: "@types/yargs-parser@npm:21.0.3" - checksum: e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 - languageName: node - linkType: hard - -"@types/yargs@npm:17.0.32": - version: 17.0.32 - resolution: "@types/yargs@npm:17.0.32" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf - languageName: node - linkType: hard - -"@types/yargs@npm:^15.0.0": - version: 15.0.13 - resolution: "@types/yargs@npm:15.0.13" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 8c0/9128b0ac4699b840904d50a1deb166d29fabce3185ce6ad9ef6c2f642f247b9750e7b9cc25de2f8dc16764850a412317bc4ab73afe410a2393a6fcc6c31a3666 - languageName: node - linkType: hard - -"@types/yargs@npm:^16.0.0": - version: 16.0.4 - resolution: "@types/yargs@npm:16.0.4" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 8c0/892bfe48183756d4e3b4922abf582c34c326975368f4572af0521f51b6628997c2f916cb2d27f91494e5bbcc0425a9224f2f02191003e4aa2e360b78116ee8a7 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.22 - resolution: "@types/yargs@npm:17.0.22" - dependencies: - "@types/yargs-parser": "npm:*" - checksum: 8c0/1c5ed11692e495c49caf3c7cb2ec2aa973634cc7298ce4ecf8255177d908040cf51ced53731553380727a42299f06645c24d3c6eaa38cbd5d910ed0e332c9530 - languageName: node - linkType: hard - -"@types/yoga-layout@npm:1.9.2": - version: 1.9.2 - resolution: "@types/yoga-layout@npm:1.9.2" - checksum: 8c0/9f2a8618afe3e2e18e76eeaa4ec7d09a85f01f071231f8ff21388d851f940dd7ae5867a5f9aef29eafe44c47453a328d3c718fff1451ab62266450b415e43150 - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" - dependencies: - "@eslint-community/regexpp": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/type-utils": "npm:5.62.0" - "@typescript-eslint/utils": "npm:5.62.0" - debug: "npm:^4.3.4" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - natural-compare-lite: "npm:^1.4.0" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependencies: - "@typescript-eslint/parser": ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a - languageName: node - linkType: hard - -"@typescript-eslint/eslint-plugin@npm:^4.23.0": - version: 4.33.0 - resolution: "@typescript-eslint/eslint-plugin@npm:4.33.0" - dependencies: - "@typescript-eslint/experimental-utils": "npm:4.33.0" - "@typescript-eslint/scope-manager": "npm:4.33.0" - debug: "npm:^4.3.1" - functional-red-black-tree: "npm:^1.0.1" - ignore: "npm:^5.1.8" - regexpp: "npm:^3.1.0" - semver: "npm:^7.3.5" - tsutils: "npm:^3.21.0" - peerDependencies: - "@typescript-eslint/parser": ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/c1e1e424e257fa6e5e8b18d7ff77e8a983a761f4acc0cd58ebd31de8ec56c8c472689989cff0290eee41457662a1e664b555cf74bfc1b37bdf8c87ccac2a4663 - languageName: node - linkType: hard - -"@typescript-eslint/experimental-utils@npm:4.33.0": - version: 4.33.0 - resolution: "@typescript-eslint/experimental-utils@npm:4.33.0" - dependencies: - "@types/json-schema": "npm:^7.0.7" - "@typescript-eslint/scope-manager": "npm:4.33.0" - "@typescript-eslint/types": "npm:4.33.0" - "@typescript-eslint/typescript-estree": "npm:4.33.0" - eslint-scope: "npm:^5.1.1" - eslint-utils: "npm:^3.0.0" - peerDependencies: - eslint: "*" - checksum: 8c0/bb2a48c9df21ef06ccbcd083753b8c51b30a46cde67ab56d278b30ad7868d2e07641e51b6f7fb54437dcb7aff134fac44708e730e2b8f6e43027fefe8629bcb9 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/parser@npm:5.62.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^4.23.0": - version: 4.33.0 - resolution: "@typescript-eslint/parser@npm:4.33.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:4.33.0" - "@typescript-eslint/types": "npm:4.33.0" - "@typescript-eslint/typescript-estree": "npm:4.33.0" - debug: "npm:^4.3.1" - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/d6f91479b2c0d0ff20ac2dbc7540b28c175fd834a220a4f227209f6c74c55401ac6bd41b2bb4cf40b3ba7761075ccded2019bfc6096c2e4f273bd4ae86c44172 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:4.33.0": - version: 4.33.0 - resolution: "@typescript-eslint/scope-manager@npm:4.33.0" - dependencies: - "@typescript-eslint/types": "npm:4.33.0" - "@typescript-eslint/visitor-keys": "npm:4.33.0" - checksum: 8c0/1dfe65777eeb430c1ef778bdad35e6065d4b3075ddb2639d0747d8db93c02eebf6832ba82388a7f80662e0e9f61f1922fe939b53a20889e11fb9f80c4029c6b7 - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/scope-manager@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/type-utils@npm:5.62.0" - dependencies: - "@typescript-eslint/typescript-estree": "npm:5.62.0" - "@typescript-eslint/utils": "npm:5.62.0" - debug: "npm:^4.3.4" - tsutils: "npm:^3.21.0" - peerDependencies: - eslint: "*" - peerDependenciesMeta: - typescript: - optional: true - checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:4.33.0": - version: 4.33.0 - resolution: "@typescript-eslint/types@npm:4.33.0" - checksum: 8c0/6c94780a589eca7a75ae2b014f320bc412b50794c39ab04889918bb39a40e72584b65c8c0b035330cb0599579afaa3adccee40701f63cf39c0e89299de199d4b - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:4.33.0": - version: 4.33.0 - resolution: "@typescript-eslint/typescript-estree@npm:4.33.0" - dependencies: - "@typescript-eslint/types": "npm:4.33.0" - "@typescript-eslint/visitor-keys": "npm:4.33.0" - debug: "npm:^4.3.1" - globby: "npm:^11.0.3" - is-glob: "npm:^4.0.1" - semver: "npm:^7.3.5" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/67609a7bdd680136765d103dec4b8afb38a17436e8a5cd830da84f62c6153c3acba561da3b9e2140137b1a0bcbbfc19d4256c692f7072acfebcff88db079e22b - languageName: node - linkType: hard - -"@typescript-eslint/typescript-estree@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/visitor-keys": "npm:5.62.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - semver: "npm:^7.3.7" - tsutils: "npm:^3.21.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/utils@npm:5.62.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@types/json-schema": "npm:^7.0.9" - "@types/semver": "npm:^7.3.12" - "@typescript-eslint/scope-manager": "npm:5.62.0" - "@typescript-eslint/types": "npm:5.62.0" - "@typescript-eslint/typescript-estree": "npm:5.62.0" - eslint-scope: "npm:^5.1.1" - semver: "npm:^7.3.7" - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:4.33.0": - version: 4.33.0 - resolution: "@typescript-eslint/visitor-keys@npm:4.33.0" - dependencies: - "@typescript-eslint/types": "npm:4.33.0" - eslint-visitor-keys: "npm:^2.0.0" - checksum: 8c0/95b3904db6113ef365892567d47365e6af3708e6fa905743426036f99e1b7fd4a275facec5d939afecb618369f9d615e379d39f96b8936f469e75507c41c249c - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.62.0": - version: 5.62.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" - dependencies: - "@typescript-eslint/types": "npm:5.62.0" - eslint-visitor-keys: "npm:^3.3.0" - checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d - languageName: node - linkType: hard - -"@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d - languageName: node - linkType: hard - -"@vitejs/plugin-react@npm:4.2.1": - version: 4.2.1 - resolution: "@vitejs/plugin-react@npm:4.2.1" - dependencies: - "@babel/core": "npm:^7.23.5" - "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" - "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" - "@types/babel__core": "npm:^7.20.5" - react-refresh: "npm:^0.14.0" - peerDependencies: - vite: ^4.2.0 || ^5.0.0 - checksum: de1eec44d703f32e5b58e776328ca20793657fe991835d15b290230b19a2a08be5d31501d424279ae13ecfed28044c117b69d746891c8d9b92c69e8a8907e989 - languageName: node - linkType: hard - -"@vscode/ripgrep@npm:1.15.6": - version: 1.15.6 - resolution: "@vscode/ripgrep@npm:1.15.6" - dependencies: - https-proxy-agent: "npm:^7.0.2" - proxy-from-env: "npm:^1.1.0" - checksum: e98cfdb4cadd0a5d0ae9d52e0807098ea7a9a3c7b1dc52f1213271278e565c3de6280ce29319aebf12c4d643ebe4e2e8ffa4ab613d03994688c1f6ebff4d1216 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ast@npm:1.11.1" - dependencies: - "@webassemblyjs/helper-numbers": "npm:1.11.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" - checksum: 8c0/6f75b09f17a29e704d2343967c53128cda7c84af2d192a3146de1b53cafaedfe568eca0804bd6c1acc72e1269477ae22d772de1dcf605cdb0adf9768f31d88d7 - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.11.5, @webassemblyjs/ast@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/ast@npm:1.11.5" - dependencies: - "@webassemblyjs/helper-numbers": "npm:1.11.5" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.5" - checksum: 8c0/e18a6613b0edf70dcafb210941bd7923a233280b9b9d6ae65b165da9856fb5a7f2576d18587e9ec83fcb618a0e22df5be2d5b046fec063355f70ad7f974d13ae - languageName: node - linkType: hard - -"@webassemblyjs/ast@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/ast@npm:1.9.0" - dependencies: - "@webassemblyjs/helper-module-context": "npm:1.9.0" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" - "@webassemblyjs/wast-parser": "npm:1.9.0" - checksum: 8c0/8246c714346cdcd3ab204a2b09904d9d36c4f7da8f30cc217b0b7272a3ef57a3c21e95d51b26601641133fb66fea5cc46c357cf897808512f13b3d1c2efe88e4 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" - checksum: 8c0/9644d9f7163d25aa301cf3be246e35cca9c472b70feda0593b1a43f30525c68d70bfb4b7f24624cd8e259579f1dee32ef28670adaeb3ab1314ffb52a25b831d5 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.5" - checksum: 8c0/9ac08fbbe10539e88e4b2aa04c2af89caab25e1489ce14f4de7cd3ec1e86512d6a94c0285637553f64430ef46362813604d412e8af9e98acea6c7c4eca5952df - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" - checksum: 8c0/17acfdfe6650691ae8d0279e6ff4fb8b5efce64e12f3fa18c6a7d279968cc72eb21c0db7ebb5be9d627d05fa7014cef087843d999de96c917079f57d7dac8f77 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" - checksum: 8c0/23e6f24100eb21779cd4dcc7c4231fd511622545a7638b195098bcfee79decb54a7e2b3295a12056c3042af7a5d8d62d4023a9194c9cba0311acb304ea20a292 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.5" - checksum: 8c0/18b9f58f41f3a71cd6d307dd1585f1a193e0bcadada2d3b0e6ebb82ae00808588dba378512375e7ee8a5c8cf6027172d79315394bbb451fdaf63a8949bf7b750 - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" - checksum: 8c0/892851b25cf4b4b307490328f45858414326dac667ca15244b5e959fa6e22478b29dabeb581d49ef8a2874e291d0417a3a959be70428c39cd40870e73b394dbc - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" - checksum: 8c0/ab662fc94a017538c538836387492567ed9f23fe4485a86de1834d61834e4327c24659830e1ecd2eea7690ce031a148b59c4724873dc5d3c0bdb71605c7d01af - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-buffer@npm:1.11.5" - checksum: 8c0/d1e3ff85164821cf1c503a91cd848984f2499feee42509074ba9780d07e9138911816c34b8e263547312f7bd5f3b81e96a176c01e0c702f97a85a2d824ef01b5 - languageName: node - linkType: hard - -"@webassemblyjs/helper-buffer@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" - checksum: 8c0/b09a3e27d9127ccaab095bd171336e7675bb5b832e05b701ff174a853b763154a49f5382c4c3f2f1cc746b1cff3f2025452145cf807ddf788133bcccf5920ca8 - languageName: node - linkType: hard - -"@webassemblyjs/helper-code-frame@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" - dependencies: - "@webassemblyjs/wast-printer": "npm:1.9.0" - checksum: 8c0/010969a6c8b016680a9b1383ff4b8147c363608dd1e29602154e5460954af4fd48daed518a76b232ca43935d4b6bebf54fba38da56f809e2bd12f063d84013ec - languageName: node - linkType: hard - -"@webassemblyjs/helper-fsm@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" - checksum: 8c0/ef0c99b58716d757a1a41f99fb46578d3f07d97b60cd51deaeffdf0aad09ec47f5093ee8d098d12324d57f8812609704c377fccfe9a32d02c0a658a4a33dce94 - languageName: node - linkType: hard - -"@webassemblyjs/helper-module-context@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - checksum: 8c0/130a9ac1141770b9f70ad568ec2dc769e92c756f91b06ece9cda2c2a5e80e21ec9c8c2a945a5839bf379e52fa921ae134245a7492e1b9ae0e8c557bb9b4953c3 - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" - dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.11.1" - "@webassemblyjs/helper-api-error": "npm:1.11.1" - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/8cc7ced66dad8f968a68fbad551ba50562993cefa1add67b31ca6462bb986f7b21b5d7c6444c05dd39312126e10ac48def025dec6277ce0734665191e05acde7 - languageName: node - linkType: hard - -"@webassemblyjs/helper-numbers@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.5" - dependencies: - "@webassemblyjs/floating-point-hex-parser": "npm:1.11.5" - "@webassemblyjs/helper-api-error": "npm:1.11.5" - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/50ef3f194f3e8d8a3be180d6ab513036acc8d1647cb8311b32e1fa43c6876cc9a5862ec5019607170538f74fdeaa5d9507fc78d54c8e4dac2cd17cec128374bd - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" - checksum: 8c0/f14e2bd836fed1420fe7507919767de16346a013bbac97b6b6794993594f37b5f0591d824866a7b32f47524cef8a4a300e5f914952ff2b0ff28659714400c793 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.5" - checksum: 8c0/249ac6259737b370d30ee4b7a9bc07f9e92d2200a6d0cebb87ca0d18de4f2921f76a481599d777d1c83015ac0f4cc407100678afe4e6b1aab9d0827b201e3eff - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" - checksum: 8c0/1741993e1c723f56b619a4981ec975f903886aa3f1f50c7bdb2eaa45ca4ad8d023d6ae7413ef643f060567b1f12a9dcfad6c43688879c46ee4f0b53aa71cd5c9 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": "npm:1.11.1" - "@webassemblyjs/helper-buffer": "npm:1.11.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" - "@webassemblyjs/wasm-gen": "npm:1.11.1" - checksum: 8c0/e2da4192a843e96c8bf5156cea23193c9dbe12a1440c9c109d3393828f46753faab75fac78ecfe965aa7988723ad9b0b12f3ca0b9e4de75294980e67515460af - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.5" - dependencies: - "@webassemblyjs/ast": "npm:1.11.5" - "@webassemblyjs/helper-buffer": "npm:1.11.5" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.5" - "@webassemblyjs/wasm-gen": "npm:1.11.5" - checksum: 8c0/4c732d60131d488efaee32ecb228fe1b6991e79953cfbfbcd782ea87ac097dd2bc5b84abc5d5fdf3e277d1eb309c6d0e31a43a6c6033a5ec937f538e3a63ee63 - languageName: node - linkType: hard - -"@webassemblyjs/helper-wasm-section@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/helper-buffer": "npm:1.9.0" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" - "@webassemblyjs/wasm-gen": "npm:1.9.0" - checksum: 8c0/2a5baa7749c50a4a428f372ab88b7e52956b48798d44e7291b4aa8558b247337dba791112ce8a4f5b2281e1b9014e6d44d0141476a5fcde6016fac2e009671e8 - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/ieee754@npm:1.11.1" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 8c0/13d6a6ca2e9f35265f10b549cb8354f31a307a7480bbf76c0f4bc8b02e13d5556fb29456cef3815db490effc602c59f98cb0505090ca9e29d7dc61539762a065 - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/ieee754@npm:1.11.5" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 8c0/6af4e17da909ba86b7ca2065912220d99689d5af0a05b819317b05e0454a950322530044cb82ce63c841454871e934546d38ad96ab2979872dafb96b0f34f9d4 - languageName: node - linkType: hard - -"@webassemblyjs/ieee754@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/ieee754@npm:1.9.0" - dependencies: - "@xtuc/ieee754": "npm:^1.2.0" - checksum: 8c0/0eff34ec7048400b30282ab9af6ad19d2852dab2f5ffaec8bdc697b8380bc2c9dbe6cadf65f49e68242c82ee3caa8aa6e46c89dbfdab37615189b4da2eab3819 - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/leb128@npm:1.11.1" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/e505edb5de61f13c6c66c57380ae16e95db9d7c43a41ac132e298426bcead9c90622e3d3035fb63df09d0eeabafd471be35ba583fca72ac2e776ab537dda6883 - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/leb128@npm:1.11.5" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/7f10ce18f226445b8d6a904be614bf07e7eec421bb7b22d202d9b6817faeb440bcd6b35e291446d4c46dd98c90d0673f3d682891428a9bf07d7fe82d73d8de57 - languageName: node - linkType: hard - -"@webassemblyjs/leb128@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/leb128@npm:1.9.0" - dependencies: - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/441be8634733b33b710f44d4394552d6290bb1a0a8311b384b1865b58c3549d0ddeaf1c3985bbee024a8df12c597be3580fc1cde2ae003dcbf26762b493a7a2f - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/utf8@npm:1.11.1" - checksum: 8c0/a7c13c7c82d525fe774f51a4fc1da058b0e2c73345eed9e2d6fbeb96ba50c1942daf97e0ff394e7a4d0f26b705f9587cb14681870086d51f02abc78ff6ce3703 - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/utf8@npm:1.11.5" - checksum: 8c0/a396ccc6635d0eeac99a0c812ea8a4b28d7a035242dc0b555723268219b1141cd5a18c85fa9dec899c69765d8c8d5ec0537c777395389ee6f79cab94b78fcd79 - languageName: node - linkType: hard - -"@webassemblyjs/utf8@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/utf8@npm:1.9.0" - checksum: 8c0/9566689a1bcf555d6b79d0da79e24ff2be23c0395e5a19ed3c2ceca7831e50b867e0b1c66b3ff1b1d7f297b2d2414314967a884a77634ad0acff8a78489e2b19 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": "npm:1.11.1" - "@webassemblyjs/helper-buffer": "npm:1.11.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" - "@webassemblyjs/helper-wasm-section": "npm:1.11.1" - "@webassemblyjs/wasm-gen": "npm:1.11.1" - "@webassemblyjs/wasm-opt": "npm:1.11.1" - "@webassemblyjs/wasm-parser": "npm:1.11.1" - "@webassemblyjs/wast-printer": "npm:1.11.1" - checksum: 8c0/10bef22579f96f8c0934aa9fbf6f0d9110563f9c1a510100a84fdfa3dbd9126fdc10bfc12e7ce3ace0ba081e6789eac533c81698faab75859b3a41e97b5ab3bc - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-edit@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/helper-buffer": "npm:1.9.0" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" - "@webassemblyjs/helper-wasm-section": "npm:1.9.0" - "@webassemblyjs/wasm-gen": "npm:1.9.0" - "@webassemblyjs/wasm-opt": "npm:1.9.0" - "@webassemblyjs/wasm-parser": "npm:1.9.0" - "@webassemblyjs/wast-printer": "npm:1.9.0" - checksum: 8c0/07f4cb4a73989622c524f9264b6afe664d33354f081499f04db675aed2b79498bd43600c3d7bebcb9f93ccce6a094b3c28f3f7b11ea62e9e82074c2ae68dc058 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-edit@npm:1.11.5" - dependencies: - "@webassemblyjs/ast": "npm:1.11.5" - "@webassemblyjs/helper-buffer": "npm:1.11.5" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.5" - "@webassemblyjs/helper-wasm-section": "npm:1.11.5" - "@webassemblyjs/wasm-gen": "npm:1.11.5" - "@webassemblyjs/wasm-opt": "npm:1.11.5" - "@webassemblyjs/wasm-parser": "npm:1.11.5" - "@webassemblyjs/wast-printer": "npm:1.11.5" - checksum: 8c0/f8db94190805a68ff9389ddf5dd16bdcb27e59e307fe5922aab64ae396fa66538a86c00c9b1a0013e2488aa22a3e2572b5cf9aeabcb6b0ab859a096390b0bc4c - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": "npm:1.11.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" - "@webassemblyjs/ieee754": "npm:1.11.1" - "@webassemblyjs/leb128": "npm:1.11.1" - "@webassemblyjs/utf8": "npm:1.11.1" - checksum: 8c0/4e49a19e302e19a2a2438e87ae85805acf39a7d93f9ac0ab65620ae395894937ceb762fa328acbe259d2e60d252cbb87a40ec2b4c088f3149be23fa69ddbf855 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-gen@npm:1.11.5" - dependencies: - "@webassemblyjs/ast": "npm:1.11.5" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.5" - "@webassemblyjs/ieee754": "npm:1.11.5" - "@webassemblyjs/leb128": "npm:1.11.5" - "@webassemblyjs/utf8": "npm:1.11.5" - checksum: 8c0/c5097c28e0fcc26d8afc77783f677cf4e74b1fdb1039fc3e2ecd8cc921b9c02acc2b74c12f7f8d5ee04bf455c1b9c0543b023e65c37bef67f92690306b1aa453 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-gen@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" - "@webassemblyjs/ieee754": "npm:1.9.0" - "@webassemblyjs/leb128": "npm:1.9.0" - "@webassemblyjs/utf8": "npm:1.9.0" - checksum: 8c0/876826bef91f3af9e48118fb269c348871d5b6f019e071065556da56a3a5818630b00133e07c9dd2cc767e7f2c70934f3ed0060330ce3e37910e9c9df25f1600 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": "npm:1.11.1" - "@webassemblyjs/helper-buffer": "npm:1.11.1" - "@webassemblyjs/wasm-gen": "npm:1.11.1" - "@webassemblyjs/wasm-parser": "npm:1.11.1" - checksum: 8c0/af7fd6bcb942baafda3b8cc1e574062d01c582aaa12d4f0ea62ff8e83ce1317f06a79c16313a3bc98625e1226d0fc49ba90edac18c21a64c75e9cd114306f07a - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-opt@npm:1.11.5" - dependencies: - "@webassemblyjs/ast": "npm:1.11.5" - "@webassemblyjs/helper-buffer": "npm:1.11.5" - "@webassemblyjs/wasm-gen": "npm:1.11.5" - "@webassemblyjs/wasm-parser": "npm:1.11.5" - checksum: 8c0/be0c21c2d597dcfea6065ef33e8208cc651adfaf013284b7ab6ca21edfa25c4faaf97553c23f89daabd5a8e100875c241058955234a44f41420eb1f61e92c0ed - languageName: node - linkType: hard - -"@webassemblyjs/wasm-opt@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/helper-buffer": "npm:1.9.0" - "@webassemblyjs/wasm-gen": "npm:1.9.0" - "@webassemblyjs/wasm-parser": "npm:1.9.0" - checksum: 8c0/3d5558e078b660cd9777950f2df60f005f3cbdbcfa6c8c19dc0cf012f44f5bfa97c991d7ac26b3e78596bad0538e92dd00b5db4b51ebc373da8e329a03639190 - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": "npm:1.11.1" - "@webassemblyjs/helper-api-error": "npm:1.11.1" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.1" - "@webassemblyjs/ieee754": "npm:1.11.1" - "@webassemblyjs/leb128": "npm:1.11.1" - "@webassemblyjs/utf8": "npm:1.11.1" - checksum: 8c0/5a7e8ad36176347f3bc9aee15860a7002b608c181012128ea3e5a1199649d6722e05e029fdf2a73485f2ab3e2f7386b3e0dce46ff9cfd1918417a4ee1151f21e - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.11.5, @webassemblyjs/wasm-parser@npm:^1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wasm-parser@npm:1.11.5" - dependencies: - "@webassemblyjs/ast": "npm:1.11.5" - "@webassemblyjs/helper-api-error": "npm:1.11.5" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.5" - "@webassemblyjs/ieee754": "npm:1.11.5" - "@webassemblyjs/leb128": "npm:1.11.5" - "@webassemblyjs/utf8": "npm:1.11.5" - checksum: 8c0/f1accb914be6526a9630c669e090abfcd0070290d8d7e0f4ddab2e5689de262f987a0ca24b9ca51a3ce84c514c889bcb632fa7a604eced04ae5ad869e523eaea - languageName: node - linkType: hard - -"@webassemblyjs/wasm-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/helper-api-error": "npm:1.9.0" - "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" - "@webassemblyjs/ieee754": "npm:1.9.0" - "@webassemblyjs/leb128": "npm:1.9.0" - "@webassemblyjs/utf8": "npm:1.9.0" - checksum: 8c0/1e8615b9f9c3c431c9635c9a9884bca89eff1ab2383ad849341c23e09899454482a8f8813d33bf86ee1b0acc97c7c83926961a9b34d4804fa5d559610ab0a4a2 - languageName: node - linkType: hard - -"@webassemblyjs/wast-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wast-parser@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/floating-point-hex-parser": "npm:1.9.0" - "@webassemblyjs/helper-api-error": "npm:1.9.0" - "@webassemblyjs/helper-code-frame": "npm:1.9.0" - "@webassemblyjs/helper-fsm": "npm:1.9.0" - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/c79952466fdf7816be527b1db102952b777b12318eabb5c40df074cd8361e3a7b0179a985534fa8b5a7b93668b07ba46875ffeb5da03ca5177c80ba960ebdffc - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.11.1": - version: 1.11.1 - resolution: "@webassemblyjs/wast-printer@npm:1.11.1" - dependencies: - "@webassemblyjs/ast": "npm:1.11.1" - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/cede13c53a176198f949e7f0edf921047c524472b2e4c99edfe829d20e168b4037395479325635b4a3662ea7b4b59be4555ea3bb6050c61b823c68abdb435c74 - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.11.5": - version: 1.11.5 - resolution: "@webassemblyjs/wast-printer@npm:1.11.5" - dependencies: - "@webassemblyjs/ast": "npm:1.11.5" - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/7d506ebe0f03c1fb039eec667cc7dea8bb424be3e67e5899389da7eb093a239b443b6502a0a254b6dc981198a1ce9351375d5c323d09933f4dbee43cac5d618d - languageName: node - linkType: hard - -"@webassemblyjs/wast-printer@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wast-printer@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/wast-parser": "npm:1.9.0" - "@xtuc/long": "npm:4.2.2" - checksum: 8c0/f3d106aa884cbb7687307db7adeb3b98abff9de81b9ba8c1065267340b5e9de64ffc533044ab916b1f4ce8a67fb03efa54b29b61c8e908abe4c07edf82f614cd - languageName: node - linkType: hard - -"@webpack-cli/configtest@npm:^2.1.1": - version: 2.1.1 - resolution: "@webpack-cli/configtest@npm:2.1.1" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - checksum: 8c0/a8da1f15702cb289807da99235ed95326ed7dabeb1a36ca59bd3a5dbe6adcc946a9a2767936050fc4d5ed14efab0e5b5a641dfe8e3d862c36caa5791ac12759d - languageName: node - linkType: hard - -"@webpack-cli/info@npm:^2.0.2": - version: 2.0.2 - resolution: "@webpack-cli/info@npm:2.0.2" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - checksum: 8c0/ca88a35604dc9aedac7c26e8f6793c5039dc1eea2b12a85fbfd669a5f21ecf9cf169d7fd157ea366a62666e3fa05b776306a96742ac61a9868f44fdce6b40f7d - languageName: node - linkType: hard - -"@webpack-cli/serve@npm:^2.0.5": - version: 2.0.5 - resolution: "@webpack-cli/serve@npm:2.0.5" - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - peerDependenciesMeta: - webpack-dev-server: - optional: true - checksum: 8c0/36079d34971ff99a58b66b13f4184dcdd8617853c48cccdbc3f9ab7ea9e5d4fcf504e873c298ea7aa15e0b51ad2c4aee4d7a70bd7d9364e60f57b0eb93ca15fc - languageName: node - linkType: hard - -"@whatwg-node/events@npm:0.0.2": - version: 0.0.2 - resolution: "@whatwg-node/events@npm:0.0.2" - checksum: 8c0/79d5da79d5ab1cd28d8bfda7fba6f0a574a9fb9cc7f13fa0ead306a0dcf4ea7058735190ccc7c00c9eb65c3abef109d8db32a525032bb60ffbb374f2e37e78a0 - languageName: node - linkType: hard - -"@whatwg-node/events@npm:^0.0.3": - version: 0.0.3 - resolution: "@whatwg-node/events@npm:0.0.3" - checksum: 8c0/87ac0854f84650ce016ccd82a6c087eac1c6204eeb80cf358737ce7757a345e3a4ba19e9b1815b326eb1451d49878785aa9dc426631f4ea47dedbcfc51b56977 - languageName: node - linkType: hard - -"@whatwg-node/events@npm:^0.1.0": - version: 0.1.1 - resolution: "@whatwg-node/events@npm:0.1.1" - checksum: 8c0/7e4678c8c092484dc248f4a229a398de30d21190b94ebebc333c2187180207a18e257c4588d0910e872251b3089007f4a2a3ff8b9a4d057fae94db8da28be467 - languageName: node - linkType: hard - -"@whatwg-node/fetch@npm:0.6.5, @whatwg-node/fetch@npm:^0.6.0": - version: 0.6.5 - resolution: "@whatwg-node/fetch@npm:0.6.5" - dependencies: - "@peculiar/webcrypto": "npm:^1.4.0" - "@whatwg-node/node-fetch": "npm:0.0.1" - busboy: "npm:^1.6.0" - urlpattern-polyfill: "npm:^6.0.2" - web-streams-polyfill: "npm:^3.2.1" - checksum: 8c0/f325b061a5ee487474e2b28894475c7ce4edad295cd3711abd3988c1bcbd48a474bc77e26e401bb33fefffa1034d1f83d4c62b2e637b0da60666775b487d3ac4 - languageName: node - linkType: hard - -"@whatwg-node/fetch@npm:0.9.14, @whatwg-node/fetch@npm:^0.9.10": - version: 0.9.14 - resolution: "@whatwg-node/fetch@npm:0.9.14" - dependencies: - "@whatwg-node/node-fetch": "npm:^0.5.0" - urlpattern-polyfill: "npm:^9.0.0" - checksum: cb91d18c744e0d01c2f8d7982f961258a43b54baa8680ed6291a257f85e5ace1b68fc74105eebebd96b4450648fbaec98d91a434c1142da44acf928c41842d58 - languageName: node - linkType: hard - -"@whatwg-node/fetch@npm:^0.8.0": - version: 0.8.8 - resolution: "@whatwg-node/fetch@npm:0.8.8" - dependencies: - "@peculiar/webcrypto": "npm:^1.4.0" - "@whatwg-node/node-fetch": "npm:^0.3.6" - busboy: "npm:^1.6.0" - urlpattern-polyfill: "npm:^8.0.0" - web-streams-polyfill: "npm:^3.2.1" - checksum: 8c0/37d882bf85764aec7541cda1008099ab4d695971608946ec9b9e40326eedfd4c49507fbcc8765ebe3e9241f4dc9d1e970e0b3501a814d721c40c721d313c5d50 - languageName: node - linkType: hard - -"@whatwg-node/fetch@npm:^0.9.7": - version: 0.9.9 - resolution: "@whatwg-node/fetch@npm:0.9.9" - dependencies: - "@whatwg-node/node-fetch": "npm:^0.4.8" - urlpattern-polyfill: "npm:^9.0.0" - checksum: 8c0/c628a85ba2e6665ba4601be1bb12126a7656f2d76fe8e8d9664c120b2c780b39b9f38cb49cf2adcd9eb9420f0a0c5de82537cafc0379ad0474c5a6b28099391e - languageName: node - linkType: hard - -"@whatwg-node/node-fetch@npm:0.0.1": - version: 0.0.1 - resolution: "@whatwg-node/node-fetch@npm:0.0.1" - dependencies: - "@whatwg-node/events": "npm:0.0.2" - busboy: "npm:1.6.0" - tslib: "npm:^2.3.1" - peerDependencies: - "@types/node": ^18.0.6 - checksum: 8c0/21310744058bbab3970ed9ac1a6bd1d0e788d7ec10b1bbdc46e0e8373ddf3b018cc1924fe800ee90bbae67a74331d48a71df4656f72cbcd900f69c4ca89ffa4e - languageName: node - linkType: hard - -"@whatwg-node/node-fetch@npm:^0.3.6": - version: 0.3.6 - resolution: "@whatwg-node/node-fetch@npm:0.3.6" - dependencies: - "@whatwg-node/events": "npm:^0.0.3" - busboy: "npm:^1.6.0" - fast-querystring: "npm:^1.1.1" - fast-url-parser: "npm:^1.1.3" - tslib: "npm:^2.3.1" - checksum: 8c0/49e4fd5e682d1fa1229b2c13c06074c6a633eddbe61be162fd213ddb85d6d27d51554b3cced5f6b7f3be1722a64cca7f5ffe0722d08b3285fe2f289d8d5a045d - languageName: node - linkType: hard - -"@whatwg-node/node-fetch@npm:^0.4.8": - version: 0.4.14 - resolution: "@whatwg-node/node-fetch@npm:0.4.14" - dependencies: - "@whatwg-node/events": "npm:^0.1.0" - busboy: "npm:^1.6.0" - fast-querystring: "npm:^1.1.1" - fast-url-parser: "npm:^1.1.3" - tslib: "npm:^2.3.1" - checksum: 8c0/797b036284c736c0d47feed3305eb6da01eb866236c6bbb15c0686400d67014701a9d27f095d6f51abe5f15ad414bbdb93108193fe0846978aa2e2b1f9d5605c - languageName: node - linkType: hard - -"@whatwg-node/node-fetch@npm:^0.5.0": - version: 0.5.3 - resolution: "@whatwg-node/node-fetch@npm:0.5.3" - dependencies: - "@kamilkisiela/fast-url-parser": "npm:^1.1.4" - "@whatwg-node/events": "npm:^0.1.0" - busboy: "npm:^1.6.0" - fast-querystring: "npm:^1.1.1" - tslib: "npm:^2.3.1" - checksum: 8a2f2c5a4138b734a45db93899fe5304e7b7821d4a8708bcd10ad860988381acb76907d2b21aa867f784760393c9da68105e8052b7e371d9acf208c9668822b2 - languageName: node - linkType: hard - -"@whatwg-node/server@npm:0.9.18": - version: 0.9.18 - resolution: "@whatwg-node/server@npm:0.9.18" - dependencies: - "@whatwg-node/fetch": "npm:^0.9.10" - tslib: "npm:^2.3.1" - checksum: 9503a17fde50a3c2615584c8a3b54bbad3596756979b3abddb2617b1ce4eef28ef534e5f026b6661db32bac80db523bfd5eba470986be76daf99469319c716c2 - languageName: node - linkType: hard - -"@whatwg-node/server@npm:^0.9.1": - version: 0.9.13 - resolution: "@whatwg-node/server@npm:0.9.13" - dependencies: - "@whatwg-node/fetch": "npm:^0.9.7" - tslib: "npm:^2.3.1" - checksum: 8c0/22034442aca127fe3a5945f425ee25aad69cdd229b2872fd3276f03377e9a1c275f8a4c371a57a1f805a06b2ce6b5a2311c6caf6ce8a05649ebf95c51e68be18 - languageName: node - linkType: hard - -"@wry/caches@npm:^1.0.0": - version: 1.0.1 - resolution: "@wry/caches@npm:1.0.1" - dependencies: - tslib: "npm:^2.3.0" - checksum: a7bca3377f1131d3f1080f2e39d0692c9d1ca86bfd55734786f167f46aad28a4c8e772107324e8319843fb8068fdf98abcdea376d8a589316b1f0cdadf81f8b1 - languageName: node - linkType: hard - -"@wry/context@npm:^0.6.0": - version: 0.6.0 - resolution: "@wry/context@npm:0.6.0" - dependencies: - tslib: "npm:^2.1.0" - checksum: 8c0/ad90352c7a5cca18dcb38f2e5b83283537403294093bf01108fb5c581f792771ac4217ad40a2869d46dc369d196b88c25b98b9c1414c9976be42c67ffe1ba198 - languageName: node - linkType: hard - -"@wry/context@npm:^0.7.0": - version: 0.7.0 - resolution: "@wry/context@npm:0.7.0" - dependencies: - tslib: "npm:^2.3.0" - checksum: 8c0/bc9c7cc0e9c2ee17b1f90f99fdeace158937bb56918c68a85fc21637956469948c0868ad2484350ec4eaa4257b8a534876f7b6b059f446d17a91eebc2ca6431e - languageName: node - linkType: hard - -"@wry/equality@npm:^0.1.2": - version: 0.1.11 - resolution: "@wry/equality@npm:0.1.11" - dependencies: - tslib: "npm:^1.9.3" - checksum: 8c0/a740b9d449eeb2d3cd251d5a8a1b739af4142a505e66eefc30a648ef2752b411220db40a0f78b97ecf3c2d8f8a2e9450ce0d1ff8e7679c8d89124fb696aea8fe - languageName: node - linkType: hard - -"@wry/equality@npm:^0.5.0": - version: 0.5.2 - resolution: "@wry/equality@npm:0.5.2" - dependencies: - tslib: "npm:^2.3.0" - checksum: 8c0/0b2300c1294156e1bb2c0d23d679d60374ff3acb550bfa6d26d6518f0b4b9cfffbfb9a0125b405626113acfb3d4c9411e197f873d2dc3c5e6f1b468d61f6550c - languageName: node - linkType: hard - -"@wry/equality@npm:^0.5.6": - version: 0.5.6 - resolution: "@wry/equality@npm:0.5.6" - dependencies: - tslib: "npm:^2.3.0" - checksum: 8c0/72473421de095b9dd10733abe58e26544888383622d362dd7b78fed863304cab0b2fdbc9bf96d2abc8a5e99358dddec4f92be0f6c74a312da9cfffc10f58d0c4 - languageName: node - linkType: hard - -"@wry/trie@npm:^0.3.0": - version: 0.3.0 - resolution: "@wry/trie@npm:0.3.0" - dependencies: - tslib: "npm:^2.1.0" - checksum: 8c0/184a456c7c96dcce996eda888c9bf6b717c14171f8238c5967c3ee1d4a896b8026734062a4cc1b644117e9feb5cc25028b79d743818d98c03b4f0ef87390256d - languageName: node - linkType: hard - -"@wry/trie@npm:^0.4.3": - version: 0.4.3 - resolution: "@wry/trie@npm:0.4.3" - dependencies: - tslib: "npm:^2.3.0" - checksum: 8c0/1a14edba595b1967d0cf38208c2660b2952a8e8a649bb669b67907df48f602c7f2acbe16c1e1b115afa7d7effb9f1a4dbde38eef16ee92e7521a511262a53281 - languageName: node - linkType: hard - -"@wry/trie@npm:^0.5.0": - version: 0.5.0 - resolution: "@wry/trie@npm:0.5.0" - dependencies: - tslib: "npm:^2.3.0" - checksum: 8c8cfcac96ba4bc69dabf02740e19e613f501b398e80bacc32cd95e87228f75ecb41cd1a76a65abae9756c0f61ab3536e0da52de28857456f9381ffdf5995d3e - languageName: node - linkType: hard - -"@xmldom/xmldom@npm:^0.8.3": - version: 0.8.6 - resolution: "@xmldom/xmldom@npm:0.8.6" - checksum: 8c0/b7c5444ec3e4ac8065b00015631b2357bedd7c140962197643dc2cfd444f7251de94cc8aa03a406d6ab9ffc506dd0149f1b7ddebb8a4173965c75846922e4a75 - languageName: node - linkType: hard - -"@xtuc/ieee754@npm:^1.2.0": - version: 1.2.0 - resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: 8c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f - languageName: node - linkType: hard - -"@xtuc/long@npm:4.2.2": - version: 4.2.2 - resolution: "@xtuc/long@npm:4.2.2" - checksum: 8c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 - languageName: node - linkType: hard - -"@zxing/text-encoding@npm:0.9.0": - version: 0.9.0 - resolution: "@zxing/text-encoding@npm:0.9.0" - checksum: 8c0/d15bff181d46c2ab709e7242801a8d40408aa8c19b44462e5f60e766bf59105b44957914ab6baab60d10d466a5e965f21fe890c67dfdb7d5c7f940df457b4d0d - languageName: node - linkType: hard - -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.5 - resolution: "abab@npm:2.0.5" - checksum: 8c0/6d70f6a1362a1bd31d8033cfc71c1930e336758b2ac517192338e76c3ea55f53a6aafad60162e8152c4e45c95e0a1499888e803fed9060764c4e102587c497a8 - languageName: node - linkType: hard - -"abab@npm:^2.0.6": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 8c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 - languageName: node - linkType: hard - -"abbrev@npm:1, abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: 8c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 - languageName: node - linkType: hard - -"abort-controller@npm:^3.0.0": - version: 3.0.0 - resolution: "abort-controller@npm:3.0.0" - dependencies: - event-target-shim: "npm:^5.0.0" - checksum: 8c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 - languageName: node - linkType: hard - -"abstract-logging@npm:^2.0.1": - version: 2.0.1 - resolution: "abstract-logging@npm:2.0.1" - checksum: 8c0/304879d9babcf6772260e5ddde632e6428e1f42f7a7a116d4689e97ad813a20e0ec2dd1e0a122f3617557f40091b9ca85735de4b48c17a2041268cb47b3f8ef1 - languageName: node - linkType: hard - -"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.7": - version: 1.3.7 - resolution: "accepts@npm:1.3.7" - dependencies: - mime-types: "npm:~2.1.24" - negotiator: "npm:0.6.2" - checksum: 8c0/74c5fc6ad208529258916abc240640caa09d577c991f36bc15916a537b6a2e72ef051c204499297bf7e78357d19e86eb989fb81f558d004be44a33fdc17a9057 - languageName: node - linkType: hard - -"accepts@npm:~1.3.8": - version: 1.3.8 - resolution: "accepts@npm:1.3.8" - dependencies: - mime-types: "npm:~2.1.34" - negotiator: "npm:0.6.3" - checksum: 8c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 - languageName: node - linkType: hard - -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: "npm:^7.1.1" - acorn-walk: "npm:^7.1.1" - checksum: 8c0/5f92390a3fd7e5a4f84fe976d4650e2a33ecf27135aa9efc5406e3406df7f00a1bbb00648ee0c8058846f55ad0924ff574e6c73395705690e754589380a41801 - languageName: node - linkType: hard - -"acorn-globals@npm:^7.0.0": - version: 7.0.1 - resolution: "acorn-globals@npm:7.0.1" - dependencies: - acorn: "npm:^8.1.0" - acorn-walk: "npm:^8.0.2" - checksum: 8c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b - languageName: node - linkType: hard - -"acorn-import-assertions@npm:^1.7.6": - version: 1.8.0 - resolution: "acorn-import-assertions@npm:1.8.0" - peerDependencies: - acorn: ^8 - checksum: 8c0/ad8e177a177dcda35a91cca2dc54a7cf6958211c14af2b48e4685a5e752d4782779d367e1d5e275700ad5767834d0063edf2ba85aeafb98d7398f8ebf957e7f5 - languageName: node - linkType: hard - -"acorn-import-assertions@npm:^1.9.0": - version: 1.9.0 - resolution: "acorn-import-assertions@npm:1.9.0" - peerDependencies: - acorn: ^8 - checksum: 8c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.1": - version: 5.3.1 - resolution: "acorn-jsx@npm:5.3.1" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 8c0/e3fa982a32bbaec085bf4a7638189a49bba1e015dc5d0a7e6b8731644e700d714488832bca24df0fe8ec9869811c4c1ee23b6f4b3ba25c2618db643ad0970fbd - languageName: node - linkType: hard - -"acorn-jsx@npm:^5.3.2": - version: 5.3.2 - resolution: "acorn-jsx@npm:5.3.2" - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 8c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 - languageName: node - linkType: hard - -"acorn-loose@npm:8.3.0, acorn-loose@npm:^8.3.0": - version: 8.3.0 - resolution: "acorn-loose@npm:8.3.0" - dependencies: - acorn: "npm:^8.5.0" - checksum: 8c0/970f790a584a2f1703a04711cdc588f424fd7bc2fb37ad8e0b9d6ceaf9c8c6a77f9ce102ce5250259fc96aedbdf346546ed1b496299bc13ed4d1b6fdb2d92f61 - languageName: node - linkType: hard - -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 8c0/ff99f3406ed8826f7d6ef6ac76b7608f099d45a1ff53229fa267125da1924188dbacf02e7903dfcfd2ae4af46f7be8847dc7d564c73c4e230dfb69c8ea8e6b4c - languageName: node - linkType: hard - -"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 8c0/dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 - languageName: node - linkType: hard - -"acorn@npm:^6.4.1": - version: 6.4.2 - resolution: "acorn@npm:6.4.2" - bin: - acorn: bin/acorn - checksum: 8c0/52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b - languageName: node - linkType: hard - -"acorn@npm:^7.1.1, acorn@npm:^7.4.0": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 8c0/bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 - languageName: node - linkType: hard - -"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" - bin: - acorn: bin/acorn - checksum: 8c0/b5c54e736af5ed753911c6752fafd02d0a74cf4d55be606bd81fe71faba4f986dc090952329931ac2aba165803fd0005c59eeef08f9c6c689e8dc420031f3df0 - languageName: node - linkType: hard - -"acorn@npm:^8.2.4": - version: 8.2.4 - resolution: "acorn@npm:8.2.4" - bin: - acorn: bin/acorn - checksum: 8c0/4b5582f9d57e4ce1c37a6825f62e4b53fc48aeb87fac7cf69df28e3695a59b06a4b00a6b2fc9f1fb5bf410db55f4d9fef80b70a56ceb65f7551d789ff14ff5f0 - languageName: node - linkType: hard - -"acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" - bin: - acorn: bin/acorn - checksum: 8c0/deaeebfbea6e40f6c0e1070e9b0e16e76ba484de54cbd735914d1d41d19169a450de8630b7a3a0c4e271a3b0c0b075a3427ad1a40d8a69f8747c0e8cb02ee3e2 - languageName: node - linkType: hard - -"address@npm:1.1.2, address@npm:^1.0.1": - version: 1.1.2 - resolution: "address@npm:1.1.2" - checksum: 8c0/3ac908133d1d8cc52110473833718e82775428e73b4eb51b42cd7c7f571c7459c28c3c54592231efdcb96f6ed376eb490194e97c533df9e8efb910fa29a34e55 - languageName: node - linkType: hard - -"adjust-sourcemap-loader@npm:^4.0.0": - version: 4.0.0 - resolution: "adjust-sourcemap-loader@npm:4.0.0" - dependencies: - loader-utils: "npm:^2.0.0" - regex-parser: "npm:^2.2.11" - checksum: 8c0/6a6e5bb8b670e4e1238c708f6163e92aa2ad0308fe5913de73c89e4cbf41738ee0bcc5552b94d0b7bf8be435ee49b78c6de8a6db7badd80762051e843c8aa14f - languageName: node - linkType: hard - -"agent-base@npm:6, agent-base@npm:^6.0.2": - version: 6.0.2 - resolution: "agent-base@npm:6.0.2" - dependencies: - debug: "npm:4" - checksum: 8c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 - languageName: node - linkType: hard - -"agent-base@npm:^7.0.2": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" - dependencies: - debug: "npm:^4.3.4" - checksum: 8c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce - languageName: node - linkType: hard - -"agentkeepalive@npm:^4.1.3, agentkeepalive@npm:^4.2.1": - version: 4.3.0 - resolution: "agentkeepalive@npm:4.3.0" - dependencies: - debug: "npm:^4.1.0" - depd: "npm:^2.0.0" - humanize-ms: "npm:^1.2.1" - checksum: 8c0/61cbdab12d45e82e9ae515b0aa8d09617b66f72409e541a646dd7be4b7260d335d7f56a38079ad305bf0ffb8405592a459faf1294111289107f48352a20c2799 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: "npm:^2.0.0" - indent-string: "npm:^4.0.0" - checksum: 8c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 - languageName: node - linkType: hard - -"airbnb-js-shims@npm:^2.2.1": - version: 2.2.1 - resolution: "airbnb-js-shims@npm:2.2.1" - dependencies: - array-includes: "npm:^3.0.3" - array.prototype.flat: "npm:^1.2.1" - array.prototype.flatmap: "npm:^1.2.1" - es5-shim: "npm:^4.5.13" - es6-shim: "npm:^0.35.5" - function.prototype.name: "npm:^1.1.0" - globalthis: "npm:^1.0.0" - object.entries: "npm:^1.1.0" - object.fromentries: "npm:^2.0.0 || ^1.0.0" - object.getownpropertydescriptors: "npm:^2.0.3" - object.values: "npm:^1.1.0" - promise.allsettled: "npm:^1.0.0" - promise.prototype.finally: "npm:^3.1.0" - string.prototype.matchall: "npm:^4.0.0 || ^3.0.1" - string.prototype.padend: "npm:^3.0.0" - string.prototype.padstart: "npm:^3.0.0" - symbol.prototype.description: "npm:^1.0.0" - checksum: 8c0/55fdeb2673da440772d278816664b8e8da946b57adfd95b6635bc980ad235e388266c1488fdff3a055e95dc1c789e389821598b2711b59ce76ab4500f528216c - languageName: node - linkType: hard - -"ajv-errors@npm:^1.0.0": - version: 1.0.1 - resolution: "ajv-errors@npm:1.0.1" - peerDependencies: - ajv: ">=5.0.0" - checksum: 8c0/de2d6e8100c8707ea063ee4785d53adf599b457c0d4f72c3592244d67ad16448a6d35f7ce45f12bdd2819939447c876e8ef2f1c0800896d7f2aa25c3838acdf1 - languageName: node - linkType: hard - -"ajv-formats@npm:^2.1.1": - version: 2.1.1 - resolution: "ajv-formats@npm:2.1.1" - dependencies: - ajv: "npm:^8.0.0" - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - checksum: 8c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": - version: 3.5.2 - resolution: "ajv-keywords@npm:3.5.2" - peerDependencies: - ajv: ^6.9.1 - checksum: 8c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 - languageName: node - linkType: hard - -"ajv-keywords@npm:^5.0.0, ajv-keywords@npm:^5.1.0": - version: 5.1.0 - resolution: "ajv-keywords@npm:5.1.0" - dependencies: - fast-deep-equal: "npm:^3.1.3" - peerDependencies: - ajv: ^8.8.2 - checksum: 8c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 - languageName: node - linkType: hard - -"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": - version: 6.12.6 - resolution: "ajv@npm:6.12.6" - dependencies: - fast-deep-equal: "npm:^3.1.1" - fast-json-stable-stringify: "npm:^2.0.0" - json-schema-traverse: "npm:^0.4.1" - uri-js: "npm:^4.2.2" - checksum: 8c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 - languageName: node - linkType: hard - -"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0, ajv@npm:^8.8.0, ajv@npm:^8.9.0": - version: 8.12.0 - resolution: "ajv@npm:8.12.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 8c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e - languageName: node - linkType: hard - -"ajv@npm:^8.0.1": - version: 8.5.0 - resolution: "ajv@npm:8.5.0" - dependencies: - fast-deep-equal: "npm:^3.1.1" - json-schema-traverse: "npm:^1.0.0" - require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.2.2" - checksum: 8c0/9145a7f9d2ef9b077c94cea99f67d0094a6496b0489ef94726b590aa887ec59ccbb762017197cce6a23990e48a3a3963b1ed1f8f67e4d4429a415d0595e15031 - languageName: node - linkType: hard - -"alphanum-sort@npm:^1.0.0": - version: 1.0.2 - resolution: "alphanum-sort@npm:1.0.2" - checksum: 8c0/2944e7ae4d36328a2df071017c01cd1d06ef6a5d87c8fbbeffd9075d42f4da48051bde79a5e3d863b98f37778c76e8eebd4353c1e7bbba2480382096953ec2b8 - languageName: node - linkType: hard - -"ansi-align@npm:^3.0.0": - version: 3.0.0 - resolution: "ansi-align@npm:3.0.0" - dependencies: - string-width: "npm:^3.0.0" - checksum: 8c0/85b8c6d3990737df5d99f1c7ad343981f9424b48aadd4b1a5167be3ce4b42a69a5358671d3354b8fee63d94ecedf5512ab1ffe594a1e8c44db830c7d4ca07c72 - languageName: node - linkType: hard - -"ansi-colors@npm:4.1.3": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: 8c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 - languageName: node - linkType: hard - -"ansi-colors@npm:^3.0.0": - version: 3.2.4 - resolution: "ansi-colors@npm:3.2.4" - checksum: 8c0/1785466547bac3b1cb8055325a415c8c946a818669da4fd3d1247cab7617b845b221c2ae04756277074d278b52d90efd67f73d2dd927c7a0d1a10395c1b7665b - languageName: node - linkType: hard - -"ansi-colors@npm:^4.1.1": - version: 4.1.1 - resolution: "ansi-colors@npm:4.1.1" - checksum: 8c0/6086ade4336b4250b6b25e144b83e5623bcaf654d3df0c3546ce09c9c5ff999cb6a6f00c87e802d05cf98aef79d92dc76ade2670a2493b8dcb80220bec457838 - languageName: node - linkType: hard - -"ansi-diff-stream@npm:^1.2.1": - version: 1.2.1 - resolution: "ansi-diff-stream@npm:1.2.1" - dependencies: - ansi-regex: "npm:^2.0.0" - buffer-from: "npm:^1.0.0" - through2: "npm:^2.0.1" - bin: - ansi-diff-stream: ./bin.js - checksum: 8c0/c3d472bb041f29190436098556445f081d1221ef4f24b7d287abe5f58d0360f13a8c47a950a710d303c90621a37a05e35f63a92a15c11f5826de6eefab851542 - languageName: node - linkType: hard - -"ansi-escapes@npm:^3.0.0": - version: 3.2.0 - resolution: "ansi-escapes@npm:3.2.0" - checksum: 8c0/084e1ce38139ad2406f18a8e7efe2b850ddd06ce3c00f633392d1ce67756dab44fe290e573d09ef3c9a0cb13c12881e0e35a8f77a017d39a0a4ab85ae2fae04f - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0, ansi-escapes@npm:^4.3.1, ansi-escapes@npm:^4.3.2": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: "npm:^0.21.3" - checksum: 8c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 - languageName: node - linkType: hard - -"ansi-escapes@npm:^5.0.0": - version: 5.0.0 - resolution: "ansi-escapes@npm:5.0.0" - dependencies: - type-fest: "npm:^1.0.2" - checksum: 8c0/f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 - languageName: node - linkType: hard - -"ansi-escapes@npm:^6.0.0": - version: 6.0.0 - resolution: "ansi-escapes@npm:6.0.0" - dependencies: - type-fest: "npm:^3.0.0" - checksum: 8c0/398d05fabb13e1a28988f45863ea4c9b7ae658c5d838a03cb8530c6988b451329c1502e0ddeab2502a27d316ce851bb9f4a2943b7f55b3d840b46aa1ef1aee20 - languageName: node - linkType: hard - -"ansi-html-community@npm:0.0.8, ansi-html-community@npm:^0.0.8": - version: 0.0.8 - resolution: "ansi-html-community@npm:0.0.8" - bin: - ansi-html: bin/ansi-html - checksum: 8c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 - languageName: node - linkType: hard - -"ansi-html@npm:^0.0.7": - version: 0.0.7 - resolution: "ansi-html@npm:0.0.7" - bin: - ansi-html: ./bin/ansi-html - checksum: 8c0/f6d3072422dc8d4c795142fd4ee8ee596538ddd02ac23676ec6c61dc61c1149f61acfc651b28ff49e7828a6372d4adab2d94d14e95feff73f656388803e13929 - languageName: node - linkType: hard - -"ansi-regex@npm:^2.0.0": - version: 2.1.1 - resolution: "ansi-regex@npm:2.1.1" - checksum: 8c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b - languageName: node - linkType: hard - -"ansi-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "ansi-regex@npm:3.0.0" - checksum: 8c0/c6a2b226d009965decc65d330b953290039f0f2b31d200516a9a79b6010f5f8f9d6acbaa0917d925c578df0c0feaddcb56569aad05776f99e2918116d4233121 - languageName: node - linkType: hard - -"ansi-regex@npm:^4.1.0": - version: 4.1.0 - resolution: "ansi-regex@npm:4.1.0" - checksum: 8c0/a10376bc12035b0b40f036d3e544d92f9e6a525bc7cd65f71e108c0965d74f777e0eef47a6d0bfbdec1d835df1edf0410516a39525d2d89ce9547eb47644d681 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.0": - version: 5.0.0 - resolution: "ansi-regex@npm:5.0.0" - checksum: 8c0/4c711eeec7ab00c1869e926ae78758abd10137047cbb08b6fda499be2dc39c2d5f21e15c7279dbb222de523b53834b54043d4997191f62372d5e2250edcbc83a - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 8c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 - languageName: node - linkType: hard - -"ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 8c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 - languageName: node - linkType: hard - -"ansi-styles@npm:^2.2.1": - version: 2.2.1 - resolution: "ansi-styles@npm:2.2.1" - checksum: 8c0/7c68aed4f1857389e7a12f85537ea5b40d832656babbf511cc7ecd9efc52889b9c3e5653a71a6aade783c3c5e0aa223ad4ff8e83c27ac8a666514e6c79068cab - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: "npm:^1.9.0" - checksum: 8c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: "npm:^2.0.1" - checksum: 8c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 - languageName: node - linkType: hard - -"ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: 8c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df - languageName: node - linkType: hard - -"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 8c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c - languageName: node - linkType: hard - -"ansi-to-html@npm:^0.6.11": - version: 0.6.15 - resolution: "ansi-to-html@npm:0.6.15" - dependencies: - entities: "npm:^2.0.0" - bin: - ansi-to-html: bin/ansi-to-html - checksum: 8c0/50fa836c3bec74b5f3d8ea630a86cad972e6463203be30171ed65073afa5f3e70946de2d0e129eb5cab391b489e99972aab3aa4fded3da45c4bd7c265bfae6f5 - languageName: node - linkType: hard - -"any-observable@npm:^0.3.0": - version: 0.3.0 - resolution: "any-observable@npm:0.3.0" - checksum: 8c0/104c2b79c2ac7e6c75b35f8fd62babf73015668f22bd25336c6f848350d91f9e7daf2fddbf1c1b76fe795e89fbc91b49f70a2aec5c69f1acf0562c344f36042b - languageName: node - linkType: hard - -"any-promise@npm:^1.0.0": - version: 1.3.0 - resolution: "any-promise@npm:1.3.0" - checksum: 60f0298ed34c74fef50daab88e8dab786036ed5a7fad02e012ab57e376e0a0b4b29e83b95ea9b5e7d89df762f5f25119b83e00706ecaccb22cfbacee98d74889 - languageName: node - linkType: hard - -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: "npm:^3.1.4" - normalize-path: "npm:^2.1.1" - checksum: 8c0/a0d745e52f0233048724b9c9d7b1d8a650f7a50151a0f1d2cce1857b09fd096052d334f8c570cc88596edef8249ae778f767db94025cd00f81e154a37bb7e34e - languageName: node - linkType: hard - -"anymatch@npm:^3.0.0, anymatch@npm:^3.0.3, anymatch@npm:~3.1.1": - version: 3.1.2 - resolution: "anymatch@npm:3.1.2" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 8c0/900645535aee46ed7958f4f5b5e38abcbf474b5230406e913de15fc9a1310f0d5322775deb609688efe31010fa57831e55d36040b19826c22ce61d537e9b9759 - languageName: node - linkType: hard - -"anymatch@npm:~3.1.2": - version: 3.1.3 - resolution: "anymatch@npm:3.1.3" - dependencies: - normalize-path: "npm:^3.0.0" - picomatch: "npm:^2.0.4" - checksum: 8c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac - languageName: node - linkType: hard - -"api@workspace:api": - version: 0.0.0-use.local - resolution: "api@workspace:api" - dependencies: - "@redwoodjs/api": "npm:0.32.2" - languageName: unknown - linkType: soft - -"apollo-cache-control@npm:^0.15.0": - version: 0.15.0 - resolution: "apollo-cache-control@npm:0.15.0" - dependencies: - apollo-server-env: "npm:^3.2.0" - apollo-server-plugin-base: "npm:^0.14.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/235819217343af1106fa38a1315a73f9d305564fe2b498574e314c9de0ee9e36f449223b1a5b9e2c0b82e667bc11ab546f764cd131a36dd3a6c94575e4e3beb5 - languageName: node - linkType: hard - -"apollo-datasource@npm:^0.10.0": - version: 0.10.0 - resolution: "apollo-datasource@npm:0.10.0" - dependencies: - apollo-server-caching: "npm:^0.7.0" - apollo-server-env: "npm:^3.2.0" - checksum: 8c0/802abc7e5358615a09f4b94f9081e979655cb6c66e6f4e83b7902876a4e21141e227924a21e60d73a03915f5c8b757a25dd2ad2067d972137e03c9f125923d29 - languageName: node - linkType: hard - -"apollo-graphql@npm:^0.9.0": - version: 0.9.3 - resolution: "apollo-graphql@npm:0.9.3" - dependencies: - core-js-pure: "npm:^3.10.2" - lodash.sortby: "npm:^4.7.0" - sha.js: "npm:^2.4.11" - peerDependencies: - graphql: ^14.2.1 || ^15.0.0 - checksum: 8c0/a72f6eaf8dd1484a62308e6f7a39db379584e902d4d6a7ba7b280978c47394d35146e63df53d7e01c187e82a5fe6bc1630ed28de3c0b572ff069c01bb8ea949e - languageName: node - linkType: hard - -"apollo-link@npm:^1.2.14": - version: 1.2.14 - resolution: "apollo-link@npm:1.2.14" - dependencies: - apollo-utilities: "npm:^1.3.0" - ts-invariant: "npm:^0.4.0" - tslib: "npm:^1.9.3" - zen-observable-ts: "npm:^0.8.21" - peerDependencies: - graphql: ^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/6a43ed4bb8491c8ff47450a817e59195bff6b8ebc0c415b5caa177dae96e7dd30112323a32176a14a31cc3b3edd8c4be619325cdecb5fad4bccbd255143927c3 - languageName: node - linkType: hard - -"apollo-reporting-protobuf@npm:^0.6.2": - version: 0.6.2 - resolution: "apollo-reporting-protobuf@npm:0.6.2" - dependencies: - "@apollo/protobufjs": "npm:^1.0.3" - checksum: 8c0/52820e80705281b10abba1e7f0f2f61617413f8282c1e896c7fd54289420789b3eb70445d8cb93906684497e5a133eb8fac2d6f5a04eb99300975847bc912207 - languageName: node - linkType: hard - -"apollo-reporting-protobuf@npm:^0.8.0": - version: 0.8.0 - resolution: "apollo-reporting-protobuf@npm:0.8.0" - dependencies: - "@apollo/protobufjs": "npm:1.2.2" - checksum: 8c0/a97bb3f98ec491e9e12cf64f7421fac1dd466bbf4e4a1dc7ce2ba0c72c992297292e0505b9b48afdc127e1d4c40b7a1c91d7232c33e60937283c89b2aa2beb8c - languageName: node - linkType: hard - -"apollo-server-caching@npm:^0.6.0": - version: 0.6.0 - resolution: "apollo-server-caching@npm:0.6.0" - dependencies: - lru-cache: "npm:^6.0.0" - checksum: 8c0/82ffa04b46c0f9a8de4b813c954797557838b6bd4985e51c0928292bddbef98a51fd7228cc83d629359062cf5e53242759b7dcf065203d0d308d6c6631fc6d1f - languageName: node - linkType: hard - -"apollo-server-caching@npm:^0.7.0": - version: 0.7.0 - resolution: "apollo-server-caching@npm:0.7.0" - dependencies: - lru-cache: "npm:^6.0.0" - checksum: 8c0/9e39a341b26c8a89e6f8a4936bbb8c04f2b0bbcbd1b4b22234be2ee0a97912f38895f53cdd9041bd816025838a8df275b2ee7e2e1331dbecc4c132571b9bbe6e - languageName: node - linkType: hard - -"apollo-server-core@npm:^2.22.2": - version: 2.26.2 - resolution: "apollo-server-core@npm:2.26.2" - dependencies: - "@apollographql/apollo-tools": "npm:^0.5.0" - "@apollographql/graphql-playground-html": "npm:1.6.27" - "@apollographql/graphql-upload-8-fork": "npm:^8.1.4" - "@josephg/resolvable": "npm:^1.0.0" - "@types/ws": "npm:^7.0.0" - apollo-cache-control: "npm:^0.15.0" - apollo-datasource: "npm:^0.10.0" - apollo-graphql: "npm:^0.9.0" - apollo-reporting-protobuf: "npm:^0.8.0" - apollo-server-caching: "npm:^0.7.0" - apollo-server-env: "npm:^3.2.0" - apollo-server-errors: "npm:^2.5.0" - apollo-server-plugin-base: "npm:^0.14.0" - apollo-server-types: "npm:^0.10.0" - apollo-tracing: "npm:^0.16.0" - async-retry: "npm:^1.2.1" - fast-json-stable-stringify: "npm:^2.0.0" - graphql-extensions: "npm:^0.16.0" - graphql-tag: "npm:^2.11.0" - graphql-tools: "npm:^4.0.8" - loglevel: "npm:^1.6.7" - lru-cache: "npm:^6.0.0" - sha.js: "npm:^2.4.11" - subscriptions-transport-ws: "npm:^0.9.19" - uuid: "npm:^8.0.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/865baa57fc2e90b6c905e7ba370d860d0ab1a5639c00fe35d00dfb528940e407450ebe6a9dcd65769f8af515abee337e2192fd20dc8fd082eae8794791fad263 - languageName: node - linkType: hard - -"apollo-server-env@npm:^3.0.0": - version: 3.1.0 - resolution: "apollo-server-env@npm:3.1.0" - dependencies: - node-fetch: "npm:^2.6.1" - util.promisify: "npm:^1.0.0" - checksum: 8c0/510a8117899eb5260f48802518f32a252f7e0d76e2b6f596d858f372508672791566bebff9bf8161b56e934395bf89bc8d3da60fec0966f54eb40dace329a6c2 - languageName: node - linkType: hard - -"apollo-server-env@npm:^3.2.0": - version: 3.2.0 - resolution: "apollo-server-env@npm:3.2.0" - dependencies: - node-fetch: "npm:^2.6.1" - util.promisify: "npm:^1.0.0" - checksum: 8c0/d08ffedca0ff4448e270ebb45ef9399202217f6f9bdc69b2eeebcf15c296ae24ef438f5ab1ad1647d5560ac2c55a353d18cd00631193d5186b28860220538343 - languageName: node - linkType: hard - -"apollo-server-errors@npm:^2.5.0": - version: 2.5.0 - resolution: "apollo-server-errors@npm:2.5.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/4d4d9dad40aa5d72f4f247e3736dadda293a707f4c4eb487615072d1e3abaf9ef4ef01cc849b9c6bdd7cb4394aba1d62a850af14cfcce1fc86a3f8ea47b161be - languageName: node - linkType: hard - -"apollo-server-lambda@npm:2.22.2": - version: 2.22.2 - resolution: "apollo-server-lambda@npm:2.22.2" - dependencies: - "@apollographql/graphql-playground-html": "npm:1.6.27" - "@types/aws-lambda": "npm:^8.10.31" - apollo-server-core: "npm:^2.22.2" - apollo-server-env: "npm:^3.0.0" - apollo-server-types: "npm:^0.7.0" - graphql-tools: "npm:^4.0.8" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/b8ac94e84bb538ad2818b9a549c1f52ea9ea5e141ce125d469c70f8de1bb76c5abcb5a68f933266e0cba7a001ab9b8af3f86fec5b7faeaccb2aec69a0f61025e - languageName: node - linkType: hard - -"apollo-server-plugin-base@npm:^0.14.0": - version: 0.14.0 - resolution: "apollo-server-plugin-base@npm:0.14.0" - dependencies: - apollo-server-types: "npm:^0.10.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/45b0a6731c9186e2a8030951c51f917726662e7b6daac5d316d555f55392c7f798b6ad5bf52c22bcc78c047e2f6ad47f9b7cf34d030c494c9b1a2bbef7d8e477 - languageName: node - linkType: hard - -"apollo-server-types@npm:^0.10.0": - version: 0.10.0 - resolution: "apollo-server-types@npm:0.10.0" - dependencies: - apollo-reporting-protobuf: "npm:^0.8.0" - apollo-server-caching: "npm:^0.7.0" - apollo-server-env: "npm:^3.2.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/fbe708e444786afbf72ce6c779fb162bf463120465b61f7ecbcd6b0ffe92d850f9bcdc10ef946533151e7aab16023072dcd50a4f26e52f23ec09ae6d5c00af13 - languageName: node - linkType: hard - -"apollo-server-types@npm:^0.7.0": - version: 0.7.0 - resolution: "apollo-server-types@npm:0.7.0" - dependencies: - apollo-reporting-protobuf: "npm:^0.6.2" - apollo-server-caching: "npm:^0.6.0" - apollo-server-env: "npm:^3.0.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/cdc71df10ea8831bbc20a894e5ae0049d80ad2286817187cce22edadef1eaeeb7fb16382bf7aa4275d5c1589a1c090db6de83e515d60d99f17e59f6e21f2480d - languageName: node - linkType: hard - -"apollo-tracing@npm:^0.16.0": - version: 0.16.0 - resolution: "apollo-tracing@npm:0.16.0" - dependencies: - apollo-server-env: "npm:^3.2.0" - apollo-server-plugin-base: "npm:^0.14.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/43012b35719abdd84b8301078d9dacb6af35d69bb97ca049893ce6bbf46a82e582a82aa7a9ee52a9519782f64723c3f3c6784db645f10c1b38f04531871620ae - languageName: node - linkType: hard - -"apollo-utilities@npm:^1.0.1, apollo-utilities@npm:^1.3.0": - version: 1.3.4 - resolution: "apollo-utilities@npm:1.3.4" - dependencies: - "@wry/equality": "npm:^0.1.2" - fast-json-stable-stringify: "npm:^2.0.0" - ts-invariant: "npm:^0.4.0" - tslib: "npm:^1.10.0" - peerDependencies: - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/071f2bfd3b62457c688aec8f7c92e3831e05ace5a65699608cbdda5b03bd287f407654fbd526639efaa4dc2db4d39763cccefb1786f4cd14dfa48f4ab79f3b8b - languageName: node - linkType: hard - -"app-root-dir@npm:^1.0.2": - version: 1.0.2 - resolution: "app-root-dir@npm:1.0.2" - checksum: 8c0/0225e4be7788968a82bb76df9b14b0d7f212a5c12e8c625cdc34f80548780bcbfc5f3287d0806dddd83bf9dbf9ce302e76b2887cd3a6f4be52b79df7f3aa9e7c - languageName: node - linkType: hard - -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 8c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 - languageName: node - linkType: hard - -"aproba@npm:^1.1.1": - version: 1.2.0 - resolution: "aproba@npm:1.2.0" - checksum: 8c0/2d34f008c9edfa991f42fe4b667d541d38a474a39ae0e24805350486d76744cd91ee45313283c1d39a055b14026dd0fc4d0cbfc13f210855d59d7e8b5a61dc51 - languageName: node - linkType: hard - -"arch@npm:^2.1.0": - version: 2.2.0 - resolution: "arch@npm:2.2.0" - checksum: 4ceaf8d8207817c216ebc4469742052cb0a097bc45d9b7fcd60b7507220da545a28562ab5bdd4dfe87921bb56371a0805da4e10d704e01f93a15f83240f1284c - languageName: node - linkType: hard - -"archiver-utils@npm:^2.1.0": - version: 2.1.0 - resolution: "archiver-utils@npm:2.1.0" - dependencies: - glob: "npm:^7.1.4" - graceful-fs: "npm:^4.2.0" - lazystream: "npm:^1.0.0" - lodash.defaults: "npm:^4.2.0" - lodash.difference: "npm:^4.5.0" - lodash.flatten: "npm:^4.4.0" - lodash.isplainobject: "npm:^4.0.6" - lodash.union: "npm:^4.6.0" - normalize-path: "npm:^3.0.0" - readable-stream: "npm:^2.0.0" - checksum: 8c0/6ea5b02e440f3099aff58b18dd384f84ecfe18632e81d26c1011fe7dfdb80ade43d7a06cbf048ef0e9ee0f2c87a80cb24c0f0ac5e3a2c4d67641d6f0d6e36ece - languageName: node - linkType: hard - -"archiver-utils@npm:^4.0.1": - version: 4.0.1 - resolution: "archiver-utils@npm:4.0.1" - dependencies: - glob: "npm:^8.0.0" - graceful-fs: "npm:^4.2.0" - lazystream: "npm:^1.0.0" - lodash: "npm:^4.17.15" - normalize-path: "npm:^3.0.0" - readable-stream: "npm:^3.6.0" - checksum: fc646fe1f8e3650383b6f79384e1c8f69caf7685c705221e23393a674ee1d67331e246250a72b03ec2fbdb2cfe30adc2d4287f6357684d6843d604738bf2c870 - languageName: node - linkType: hard - -"archiver@npm:6.0.1": - version: 6.0.1 - resolution: "archiver@npm:6.0.1" - dependencies: - archiver-utils: "npm:^4.0.1" - async: "npm:^3.2.4" - buffer-crc32: "npm:^0.2.1" - readable-stream: "npm:^3.6.0" - readdir-glob: "npm:^1.1.2" - tar-stream: "npm:^3.0.0" - zip-stream: "npm:^5.0.1" - checksum: 54c5a634b39691114e727d4b4f360439fa7cd40b414c9d909606fbfd7048037f7dccefa49337f9ed19b1f5c209e021ce5e1ff9c6b547907257bc71f1af6f8cf3 - languageName: node - linkType: hard - -"archiver@npm:^4.0.0": - version: 4.0.2 - resolution: "archiver@npm:4.0.2" - dependencies: - archiver-utils: "npm:^2.1.0" - async: "npm:^3.2.0" - buffer-crc32: "npm:^0.2.1" - glob: "npm:^7.1.6" - readable-stream: "npm:^3.6.0" - tar-stream: "npm:^2.1.2" - zip-stream: "npm:^3.0.1" - checksum: 8c0/a6d315e446f227ded0eb010b3aa736abc4a59b4ce0450bce0180b92cd18f210760e8879dc2fa9ffd421127e33e4067fdee1b3141533d33ba4d13ea39307a2295 - languageName: node - linkType: hard - -"archy@npm:^1.0.0": - version: 1.0.0 - resolution: "archy@npm:1.0.0" - checksum: 8c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^2.0.0": - version: 2.0.0 - resolution: "are-we-there-yet@npm:2.0.0" - dependencies: - delegates: "npm:^1.0.0" - readable-stream: "npm:^3.6.0" - checksum: 8c0/375f753c10329153c8d66dc95e8f8b6c7cc2aa66e05cb0960bd69092b10dae22900cacc7d653ad11d26b3ecbdbfe1e8bfb6ccf0265ba8077a7d979970f16b99c - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: "npm:^1.0.0" - readable-stream: "npm:^3.6.0" - checksum: 8c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 - languageName: node - linkType: hard - -"arg@npm:5.0.2, arg@npm:^5.0.2": - version: 5.0.2 - resolution: "arg@npm:5.0.2" - checksum: 8c0/ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e - languageName: node - linkType: hard - -"arg@npm:^4.1.0": - version: 4.1.3 - resolution: "arg@npm:4.1.3" - checksum: 8c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a - languageName: node - linkType: hard - -"arg@npm:^5.0.0": - version: 5.0.0 - resolution: "arg@npm:5.0.0" - checksum: 8c0/1e8d87983291db9868067b5461cb9c65c8685ed3b140c6f4d294b08bafd83a9d7bb313c26c08bb9ced7c1481e485fedf074bb37583a37a8bcc0f60041d6b199c - languageName: node - linkType: hard - -"argparse@npm:^1.0.7": - version: 1.0.10 - resolution: "argparse@npm:1.0.10" - dependencies: - sprintf-js: "npm:~1.0.2" - checksum: 8c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de - languageName: node - linkType: hard - -"argparse@npm:^2.0.1": - version: 2.0.1 - resolution: "argparse@npm:2.0.1" - checksum: 8c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e - languageName: node - linkType: hard - -"args@npm:^5.0.1": - version: 5.0.1 - resolution: "args@npm:5.0.1" - dependencies: - camelcase: "npm:5.0.0" - chalk: "npm:2.4.2" - leven: "npm:2.1.0" - mri: "npm:1.1.4" - checksum: 8c0/b9160233bcaec31678be5b0cd731bcc1e5ff790e68c67888710824964a9fc3066245cdbbaed36475ba49ecac9263d514d8117a2e479d878a8a9a6cbec48c33a6 - languageName: node - linkType: hard - -"aria-hidden@npm:^1.1.1, aria-hidden@npm:^1.1.3": - version: 1.2.3 - resolution: "aria-hidden@npm:1.2.3" - dependencies: - tslib: "npm:^2.0.0" - checksum: 46b07b7273167ad3fc2625f1ecbb43f8e6f73115c66785cbb5dcf1e2508133a43b6419d610c39676ceaeb563239efbd8974d5c0187695db8b3e8c3e11f549c2d - languageName: node - linkType: hard - -"aria-query@npm:5.1.3, aria-query@npm:^5.0.0": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: "npm:^2.0.5" - checksum: 8c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf - languageName: node - linkType: hard - -"aria-query@npm:^4.2.2": - version: 4.2.2 - resolution: "aria-query@npm:4.2.2" - dependencies: - "@babel/runtime": "npm:^7.10.2" - "@babel/runtime-corejs3": "npm:^7.10.2" - checksum: 8c0/7e224fbbb4de8210c5d8cbaf0e1a22caa78f2068bf231f4c75302bd77eeba1c3e3b97912080535140be60174720d2ac817e5d6fec18592951b4b6488d4da7cdc - languageName: node - linkType: hard - -"aria-query@npm:^5.3.0": - version: 5.3.0 - resolution: "aria-query@npm:5.3.0" - dependencies: - dequal: "npm:^2.0.3" - checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 - languageName: node - linkType: hard - -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: 8c0/67b80067137f70c89953b95f5c6279ad379c3ee39f7143578e13bd51580a40066ee2a55da066e22d498dce10f68c2d70056d7823f972fab99dfbf4c78d0bc0f7 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 8c0/bef53be02ed3bc58f202b3861a5b1eb6e1ae4fecf39c3ad4d15b1e0433f941077d16e019a33312d820844b0661777322acbb7d0c447b04d9bdf7d6f9c532548a - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: 8c0/7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51 - languageName: node - linkType: hard - -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - is-array-buffer: "npm:^3.0.1" - checksum: 12f84f6418b57a954caa41654e5e63e019142a4bbb2c6829ba86d1ba65d31ccfaf1461d1743556fd32b091fac34ff44d9dfbdb001402361c45c373b2c86f5c20 - languageName: node - linkType: hard - -"array-differ@npm:^3.0.0": - version: 3.0.0 - resolution: "array-differ@npm:3.0.0" - checksum: 8c0/c0d924cc2b7e3f5a0e6ae932e8941c5fddc0412bcecf8d5152641910e60f5e1c1e87da2b32083dec2f92f9a8f78e916ea68c22a0579794ba49886951ae783123 - languageName: node - linkType: hard - -"array-flatten@npm:1.1.1": - version: 1.1.1 - resolution: "array-flatten@npm:1.1.1" - checksum: 8c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 - languageName: node - linkType: hard - -"array-flatten@npm:^2.1.0, array-flatten@npm:^2.1.2": - version: 2.1.2 - resolution: "array-flatten@npm:2.1.2" - checksum: 8c0/bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f - languageName: node - linkType: hard - -"array-includes@npm:^3.0.3, array-includes@npm:^3.1.2, array-includes@npm:^3.1.3": - version: 3.1.3 - resolution: "array-includes@npm:3.1.3" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - get-intrinsic: "npm:^1.1.1" - is-string: "npm:^1.0.5" - checksum: 8c0/98c1157204bfe7078a4db4f7e93d8085ddbb56be9f3d844fd03a55046ddefddf5d1390c0e230844b71a16be703dce48c6276e5f17e6262e5b9397cf1e67705ec - languageName: node - linkType: hard - -"array-includes@npm:^3.1.4": - version: 3.1.4 - resolution: "array-includes@npm:3.1.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - get-intrinsic: "npm:^1.1.1" - is-string: "npm:^1.0.7" - checksum: 8c0/04c05682b45c1d58b9ad91296b3b91550c66196aae3076a42a0bb9094c00a9c3e4178520d13b093baab3313d862725a4596554da31989b12882be2073df038ac - languageName: node - linkType: hard - -"array-includes@npm:^3.1.6": - version: 3.1.6 - resolution: "array-includes@npm:3.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - get-intrinsic: "npm:^1.1.3" - is-string: "npm:^1.0.7" - checksum: 8c0/d0caeaa57bea7d14b8480daee30cf8611899321006b15a6cd872b831bd7aaed7649f8764e060d01c5d33b8d9e998e5de5c87f4901874e1c1f467f429b7db2929 - languageName: node - linkType: hard - -"array-includes@npm:^3.1.7": - version: 3.1.7 - resolution: "array-includes@npm:3.1.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - is-string: "npm:^1.0.7" - checksum: 692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b - languageName: node - linkType: hard - -"array-union@npm:^1.0.1, array-union@npm:^1.0.2": - version: 1.0.2 - resolution: "array-union@npm:1.0.2" - dependencies: - array-uniq: "npm:^1.0.1" - checksum: 8c0/18686767c0cfdae8dc4acf5ac119b0f0eacad82b7fcc0aa62cc41f93c5ad406d494b6a6e53d85e52e8f0349b67a4fec815feeb537e95c02510d747bc9a4157c7 - languageName: node - linkType: hard - -"array-union@npm:^2.1.0": - version: 2.1.0 - resolution: "array-union@npm:2.1.0" - checksum: 8c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 - languageName: node - linkType: hard - -"array-uniq@npm:^1.0.1": - version: 1.0.3 - resolution: "array-uniq@npm:1.0.3" - checksum: 8c0/3acbaf9e6d5faeb1010e2db04ab171b8d265889e46c61762e502979bdc5e55656013726e9a61507de3c82d329a0dc1e8072630a3454b4f2b881cb19ba7fd8aa6 - languageName: node - linkType: hard - -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: 8c0/dbf4462cdba8a4b85577be07705210b3d35be4b765822a3f52962d907186617638ce15e0603a4fefdcf82f4cbbc9d433f8cbbd6855148a68872fa041b6474121 - languageName: node - linkType: hard - -"array.prototype.findlastindex@npm:^1.2.3": - version: 1.2.3 - resolution: "array.prototype.findlastindex@npm:1.2.3" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.1" - checksum: 2c5c4d3f07512d6729f728f6260a314c00f2eb0a243123092661fa1bc65dce90234c3b483b5f978396eccef6f69c50f0bea248448aaf9cdfcd1cedad6217acbb - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.2.1": - version: 1.2.4 - resolution: "array.prototype.flat@npm:1.2.4" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - checksum: 8c0/83ccfba5381759b73e5c5abf80aa1f62d70faa82d91ebbbe142253a17e6149bc51b53ca9ac438aa4dcfadfbb806922baa5a1234582af8eb0511c220e837762f0 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flat@npm:1.2.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - checksum: 8c0/91f3a8f8a74552ffb8f001ff26aaacf2baedf8bf9334cee9ac440ffb095f05df40f88c78384d004d4999b5876b30a6520a77dd9e5bccf065d68d7f3910e5ed6e - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flat@npm:1.3.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - es-shim-unscopables: "npm:^1.0.0" - checksum: 8c0/8eda91d6925cc84b73ebf5a3d406ff28745d93a22ef6a0afb967755107081a937cf6c4555d3c18354870b2c5366c0ff51b3f597c11079e689869810a418b1b4f - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.2.1": - version: 1.2.4 - resolution: "array.prototype.flatmap@npm:1.2.4" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - function-bind: "npm:^1.1.1" - checksum: 8c0/f897c4b88e2d51a668c0b0c4361f36f750e98fbdb32d7d75e68d80affcd013ba5b85380d3deb40c4e23d5da28f2cd774424c8278c9e0c8dbbb6df5206e9663fb - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flatmap@npm:1.2.5" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - checksum: 8c0/dc58f602a8ab7871739e08f4a25b71ddbfbaa84c73b7e6eb203f4943c2f3b28c41ef313de2515b95cb059408b33699cb9abca89a1d3c4701e2ba7b25e07b4256 - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.1": - version: 1.3.1 - resolution: "array.prototype.flatmap@npm:1.3.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - es-shim-unscopables: "npm:^1.0.0" - checksum: 8c0/2bd58a0e79d5d90cb4f5ef0e287edf8b28e87c65428f54025ac6b7b4c204224b92811c266f296c53a2dbc93872117c0fcea2e51d3c9e8cecfd5024d4a4a57db4 - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 - languageName: node - linkType: hard - -"array.prototype.map@npm:^1.0.3": - version: 1.0.3 - resolution: "array.prototype.map@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.1" - es-array-method-boxes-properly: "npm:^1.0.0" - is-string: "npm:^1.0.5" - checksum: 8c0/a3d853d7ab2917755aee1d07350bae679431ca9dcb9a88ba13c5cf0ade94a2a874d4462a32d701f1ae7736da1eaece372a72cdaccac3dd671347cb323aba9a6b - languageName: node - linkType: hard - -"array.prototype.tosorted@npm:^1.1.1": - version: 1.1.1 - resolution: "array.prototype.tosorted@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - es-shim-unscopables: "npm:^1.0.0" - get-intrinsic: "npm:^1.1.3" - checksum: 8c0/fd5f57aca3c7ddcd1bb83965457b625f3a67d8f334f5cbdb8ac8ef33d5b0d38281524114db2936f8c08048115d5158af216c94e6ae1eb966241b9b6f4ab8a7e8 - languageName: node - linkType: hard - -"arraybuffer.prototype.slice@npm:^1.0.2": - version: 1.0.2 - resolution: "arraybuffer.prototype.slice@npm:1.0.2" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - is-array-buffer: "npm:^3.0.2" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb - languageName: node - linkType: hard - -"arrify@npm:^1.0.1": - version: 1.0.1 - resolution: "arrify@npm:1.0.1" - checksum: 8c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab - languageName: node - linkType: hard - -"arrify@npm:^2.0.1": - version: 2.0.1 - resolution: "arrify@npm:2.0.1" - checksum: 8c0/3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb - languageName: node - linkType: hard - -"as-table@npm:^1.0.36": - version: 1.0.55 - resolution: "as-table@npm:1.0.55" - dependencies: - printable-characters: "npm:^1.0.42" - checksum: 8c0/8c5693a84621fe53c62fcad6b779dc55c5caf4d43b8e67077964baea4a337769ef53f590d7395c806805b4ef1a391b614ba9acdee19b2ca4309ddedaf13894e6 - languageName: node - linkType: hard - -"asap@npm:~2.0.3": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: 8c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d - languageName: node - linkType: hard - -"asn1.js@npm:^5.2.0": - version: 5.4.1 - resolution: "asn1.js@npm:5.4.1" - dependencies: - bn.js: "npm:^4.0.0" - inherits: "npm:^2.0.1" - minimalistic-assert: "npm:^1.0.0" - safer-buffer: "npm:^2.1.0" - checksum: 8c0/b577232fa6069cc52bb128e564002c62b2b1fe47f7137bdcd709c0b8495aa79cee0f8cc458a831b2d8675900eea0d05781b006be5e1aa4f0ae3577a73ec20324 - languageName: node - linkType: hard - -"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": - version: 3.0.5 - resolution: "asn1js@npm:3.0.5" - dependencies: - pvtsutils: "npm:^1.3.2" - pvutils: "npm:^1.1.3" - tslib: "npm:^2.4.0" - checksum: 8c0/bb8eaf4040c8f49dd475566874986f5976b81bae65a6b5526e2208a13cdca323e69ce297bcd435fdda3eb6933defe888e71974d705b6fcb14f2734a907f8aed4 - languageName: node - linkType: hard - -"assert@npm:^1.1.1": - version: 1.5.0 - resolution: "assert@npm:1.5.0" - dependencies: - object-assign: "npm:^4.1.1" - util: "npm:0.10.3" - checksum: 8c0/188da37d63be479a3b14657c01080db90cdf7fa004e346af916cf8beebcaffb11359c596d0c9c3cd8174c9125a6225796ef1ce533487edc97f8ce3b18c1ab590 - languageName: node - linkType: hard - -"assert@npm:^2.0.0": - version: 2.0.0 - resolution: "assert@npm:2.0.0" - dependencies: - es6-object-assign: "npm:^1.1.0" - is-nan: "npm:^1.2.1" - object-is: "npm:^1.0.1" - util: "npm:^0.12.0" - checksum: 8c0/a25c7ebc07b52cc4dadd5c46d73472e7d4b86e40eb7ebaa12f78c1ba954dbe83612be5dea314b862fc364c305ab3bdbcd1c9d4ec2d92bc37214ae7d5596347f3 - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: 8c0/29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775 - languageName: node - linkType: hard - -"ast-types-flow@npm:^0.0.7": - version: 0.0.7 - resolution: "ast-types-flow@npm:0.0.7" - checksum: 8c0/f381529f2da535949ba6cceddbdfaa33b4d5105842e147ec63582f560ea9ecc1a08f66457664f3109841d3053641fa8b9fa94ba607f1ea9f6c804fe5dee44a1d - languageName: node - linkType: hard - -"ast-types-flow@npm:^0.0.8": - version: 0.0.8 - resolution: "ast-types-flow@npm:0.0.8" - checksum: f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e - languageName: node - linkType: hard - -"ast-types@npm:0.14.2, ast-types@npm:^0.14.1, ast-types@npm:^0.14.2": - version: 0.14.2 - resolution: "ast-types@npm:0.14.2" - dependencies: - tslib: "npm:^2.0.1" - checksum: 8c0/5d66d89b6c07fe092087454b6042dbaf81f2882b176db93861e2b986aafe0bce49e1f1ff59aac775d451c1426ad1e967d250e9e3548f5166ea8a3475e66c169d - languageName: node - linkType: hard - -"ast-types@npm:^0.16.1": - version: 0.16.1 - resolution: "ast-types@npm:0.16.1" - dependencies: - tslib: "npm:^2.0.1" - checksum: 8c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf - languageName: node - linkType: hard - -"astral-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "astral-regex@npm:2.0.0" - checksum: 8c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 - languageName: node - linkType: hard - -"async-each@npm:^1.0.1": - version: 1.0.3 - resolution: "async-each@npm:1.0.3" - checksum: 8c0/d5f0ed24792d04b747f667fdcc92c7e6972da1252525a942119f468e629adba1e235df8b8a8e75776e6c7b18ef04d68db7295350bfa1a958457b34faa9a3bd65 - languageName: node - linkType: hard - -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 8c0/0693d378cfe86842a70d4c849595a0bb50dc44c11649640ca982fa90cbfc74e3cc4753b5a0847e51933f2e9c65ce8e05576e75e5e1fd963a086e673735b35969 - languageName: node - linkType: hard - -"async-retry@npm:^1.2.1": - version: 1.3.1 - resolution: "async-retry@npm:1.3.1" - dependencies: - retry: "npm:0.12.0" - checksum: 8c0/acfab0e841d66623468aa62cd46e16736e766de8f86766dc7a03dbe2b764787f1082732d1b3d398de7e250a9ea2552e6ff773bbf12a18abffcf63de5de14bab6 - languageName: node - linkType: hard - -"async@npm:^2.6.2": - version: 2.6.3 - resolution: "async@npm:2.6.3" - dependencies: - lodash: "npm:^4.17.14" - checksum: 8c0/06c917c74a55f9036ff79dedfc51dfc9c52c2dee2f80866b600495d2fd3037251dbcfde6592f23fc47398c44d844174004e0ee532f94c32a888bb89fd1cf0f25 - languageName: node - linkType: hard - -"async@npm:^2.6.4": - version: 2.6.4 - resolution: "async@npm:2.6.4" - dependencies: - lodash: "npm:^4.17.14" - checksum: 8c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 - languageName: node - linkType: hard - -"async@npm:^3.2.0": - version: 3.2.0 - resolution: "async@npm:3.2.0" - checksum: 8c0/f676c6964d313dfce5ad7b7dfca3b360436972647e13ac512a2e1c3858b6afbc4d297d629bf306b2135f514639409f2e3fd8d9f1e58a35b096f19439e1b33c98 - languageName: node - linkType: hard - -"async@npm:^3.2.4": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 - languageName: node - linkType: hard - -"asynciterator.prototype@npm:^1.0.0": - version: 1.0.0 - resolution: "asynciterator.prototype@npm:1.0.0" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 8c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 8c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: 8c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e - languageName: node - linkType: hard - -"atomic-sleep@npm:^1.0.0": - version: 1.0.0 - resolution: "atomic-sleep@npm:1.0.0" - checksum: 8c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a - languageName: node - linkType: hard - -"auto-bind@npm:~4.0.0": - version: 4.0.0 - resolution: "auto-bind@npm:4.0.0" - checksum: 8c0/12f70745d081ba990dca028ecfa70de25d4baa9a8b74a5bef3ab293da56cba32ff8276c3ff8e5fe6d9f370547bf3fa71486befbfefe272af7e722c21d0c25530 - languageName: node - linkType: hard - -"autoprefixer@npm:10.4.16": - version: 10.4.16 - resolution: "autoprefixer@npm:10.4.16" - dependencies: - browserslist: "npm:^4.21.10" - caniuse-lite: "npm:^1.0.30001538" - fraction.js: "npm:^4.3.6" - normalize-range: "npm:^0.1.2" - picocolors: "npm:^1.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.1.0 - bin: - autoprefixer: bin/autoprefixer - checksum: e00256e754d481a026d928bca729b25954074dd142dbec022f0a7db0d3bbc0dc2e2dc7542e94fec22eff81e21fe140e6856448e2d9a002660cb1e2ad434daee0 - languageName: node - linkType: hard - -"autoprefixer@npm:^9.8.6": - version: 9.8.8 - resolution: "autoprefixer@npm:9.8.8" - dependencies: - browserslist: "npm:^4.12.0" - caniuse-lite: "npm:^1.0.30001109" - normalize-range: "npm:^0.1.2" - num2fraction: "npm:^1.2.2" - picocolors: "npm:^0.2.1" - postcss: "npm:^7.0.32" - postcss-value-parser: "npm:^4.1.0" - bin: - autoprefixer: bin/autoprefixer - checksum: 8c0/9b2688cd0ef7252ae1a565ca935a83ddd5c38b9b4c7bf895f36d88e91dbc36d2e7ccb2d34270e436498d8f372d7320a83af6ceb5d1c3bff8f8cbeb6ff33ac837 - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 8c0/c4df567ca72d2754a6cbad20088f5f98b1065b3360178169fa9b44ea101af62c0f423fc3854fa820fd6895b6b9171b8386e71558203103ff8fc2ad503fdcc660 - languageName: node - linkType: hard - -"avvio@npm:^8.2.1": - version: 8.2.1 - resolution: "avvio@npm:8.2.1" - dependencies: - archy: "npm:^1.0.0" - debug: "npm:^4.0.0" - fastq: "npm:^1.6.1" - checksum: 8c0/a763b7cb0d9bdd4c111c28b46cb83ee9d4bf79e5f99c5cd8b8f2727cf6d0cd5ec3e6df90dbda74a56cdec72fe928dd2e13e75e67270a88b92401f68ef756b3ce - languageName: node - linkType: hard - -"aws-lambda@npm:1.0.7": - version: 1.0.7 - resolution: "aws-lambda@npm:1.0.7" - dependencies: - aws-sdk: "npm:^2.814.0" - commander: "npm:^3.0.2" - js-yaml: "npm:^3.14.1" - watchpack: "npm:^2.0.0-beta.10" - bin: - lambda: bin/lambda - checksum: 8c0/cf017d4a0b92e14c7361afde48f40a77523fd8f9d911bbd951b65a453bc0aa54219a03d95c11fcad0f707994b67f691c6764215497f13178688e9efd17212b91 - languageName: node - linkType: hard - -"aws-sdk@npm:^2.814.0": - version: 2.1308.0 - resolution: "aws-sdk@npm:2.1308.0" - dependencies: - buffer: "npm:4.9.2" - events: "npm:1.1.1" - ieee754: "npm:1.1.13" - jmespath: "npm:0.16.0" - querystring: "npm:0.2.0" - sax: "npm:1.2.1" - url: "npm:0.10.3" - util: "npm:^0.12.4" - uuid: "npm:8.0.0" - xml2js: "npm:0.4.19" - checksum: 8c0/c60c5ab3065c4f7082f666b1da80c825336fc97f11dd25ead042e23fd6bbffba6cdd1674838ca7dbff1621e711927d10f888df9d4f575e70101974e7337e922f - languageName: node - linkType: hard - -"axe-core@npm:=4.7.0": - version: 4.7.0 - resolution: "axe-core@npm:4.7.0" - checksum: 89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba - languageName: node - linkType: hard - -"axe-core@npm:^4.2.0, axe-core@npm:^4.3.5": - version: 4.4.1 - resolution: "axe-core@npm:4.4.1" - checksum: 8c0/97790fd0a2d10e123b02c7cc82b83696b3e8cf5a09fd15a2bc7eb8e4a0a3a5b41970853f435aae576b42dcd75412282d4344fa7b7bd018a2e8d855eee89194cd - languageName: node - linkType: hard - -"axios@npm:^0.21.1": - version: 0.21.1 - resolution: "axios@npm:0.21.1" - dependencies: - follow-redirects: "npm:^1.10.0" - checksum: 8c0/8633cce2dbe64acdfb82a73ba9c916e4d30eff00cb5ac697be859af9446843944cc663c4aafac1da6a43328aeb6fe778a372841fda27e2af44cdd36dba83b2a4 - languageName: node - linkType: hard - -"axobject-query@npm:^2.2.0": - version: 2.2.0 - resolution: "axobject-query@npm:2.2.0" - checksum: 8c0/75e173c4f8477814a03c46b5864810c0d62d15515e3e1067093d934b77d2dd68704a4e5141e190e305fee9630405c1ea013642f50ed476b27d8d79033c489ce9 - languageName: node - linkType: hard - -"axobject-query@npm:^3.2.1": - version: 3.2.1 - resolution: "axobject-query@npm:3.2.1" - dependencies: - dequal: "npm:^2.0.3" - checksum: f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 - languageName: node - linkType: hard - -"b4a@npm:^1.6.4": - version: 1.6.4 - resolution: "b4a@npm:1.6.4" - checksum: a0af707430c3643fd8d9418c732849d3626f1c9281489e021fcad969fb4808fb9f67b224de36b59c9c3b5a13d853482fee0c0eb53f7aec12d540fa67f63648b6 - languageName: node - linkType: hard - -"babel-core@npm:^7.0.0-bridge.0": - version: 7.0.0-bridge.0 - resolution: "babel-core@npm:7.0.0-bridge.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 - languageName: node - linkType: hard - -"babel-eslint@npm:^10.1.0": - version: 10.1.0 - resolution: "babel-eslint@npm:10.1.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - "@babel/parser": "npm:^7.7.0" - "@babel/traverse": "npm:^7.7.0" - "@babel/types": "npm:^7.7.0" - eslint-visitor-keys: "npm:^1.0.0" - resolve: "npm:^1.12.0" - peerDependencies: - eslint: ">= 4.12.1" - checksum: 8c0/a1596111871ce3615410a2ffb87ab8383b35a8c8e1942b47130cb12bca2578c8eb9d8e56c3c84f44d7abe716684f6794f2e6c1e5b4e6d09f171ae51670be44b9 - languageName: node - linkType: hard - -"babel-jest@npm:^26.3.0, babel-jest@npm:^26.6.3": - version: 26.6.3 - resolution: "babel-jest@npm:26.6.3" - dependencies: - "@jest/transform": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/babel__core": "npm:^7.1.7" - babel-plugin-istanbul: "npm:^6.0.0" - babel-preset-jest: "npm:^26.6.2" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/355e431fbd663fd43dcf68c93edcf66e31c3295c35754739edb3ce39435fdc407de75540b310b370e6eb924af528839b6effb8de21870ad12423aac31e258221 - languageName: node - linkType: hard - -"babel-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "babel-jest@npm:29.7.0" - dependencies: - "@jest/transform": "npm:^29.7.0" - "@types/babel__core": "npm:^7.1.14" - babel-plugin-istanbul: "npm:^6.1.1" - babel-preset-jest: "npm:^29.6.3" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - slash: "npm:^3.0.0" - peerDependencies: - "@babel/core": ^7.8.0 - checksum: 2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 - languageName: node - linkType: hard - -"babel-literal-to-ast@npm:^2.1.0": - version: 2.1.0 - resolution: "babel-literal-to-ast@npm:2.1.0" - dependencies: - "@babel/parser": "npm:^7.1.6" - "@babel/traverse": "npm:^7.1.6" - "@babel/types": "npm:^7.1.6" - peerDependencies: - "@babel/core": ^7.1.2 - checksum: 8c0/58e41540f9727b981d5adb684f3927a423054f77740045e9c5e136de7cc8909afa56110445070bde7b00b8cb75e2c81e7925710f59aacb6549aee9ff89c7afe1 - languageName: node - linkType: hard - -"babel-loader@npm:^8.0.0, babel-loader@npm:^8.1.0": - version: 8.2.3 - resolution: "babel-loader@npm:8.2.3" - dependencies: - find-cache-dir: "npm:^3.3.1" - loader-utils: "npm:^1.4.0" - make-dir: "npm:^3.1.0" - schema-utils: "npm:^2.6.5" - peerDependencies: - "@babel/core": ^7.0.0 - webpack: ">=2" - checksum: 8c0/2457fca8d97ea0ff966b3dabe5abeaa4c2430af3e917ccf163067daf5ae3329adebb97baa78033215b40940a1ad03050aef34f6b468af4583c00ab9853fc6c6c - languageName: node - linkType: hard - -"babel-loader@npm:^9.1.3": - version: 9.1.3 - resolution: "babel-loader@npm:9.1.3" - dependencies: - find-cache-dir: "npm:^4.0.0" - schema-utils: "npm:^4.0.0" - peerDependencies: - "@babel/core": ^7.12.0 - webpack: ">=5" - checksum: 8c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb - languageName: node - linkType: hard - -"babel-plugin-add-react-displayname@npm:^0.0.5": - version: 0.0.5 - resolution: "babel-plugin-add-react-displayname@npm:0.0.5" - checksum: 8c0/96b363d613e3d25e55606546874f3ab34b45088ac5143a64e417976f1eb29ed3e4df90400daa5edb2026d6088ed172f7af469d89838aac4bc810ede377b63c63 - languageName: node - linkType: hard - -"babel-plugin-apply-mdx-type-prop@npm:1.6.22": - version: 1.6.22 - resolution: "babel-plugin-apply-mdx-type-prop@npm:1.6.22" - dependencies: - "@babel/helper-plugin-utils": "npm:7.10.4" - "@mdx-js/util": "npm:1.6.22" - peerDependencies: - "@babel/core": ^7.11.6 - checksum: 8c0/d1fd88f2eee87f3d709373cfac5165f8407793b123e1c7061308311f7e6b0778e093a4a93e7130b47c5a742f2515d0c1d4f3da5097ff195ef91011688ec17ddc - languageName: node - linkType: hard - -"babel-plugin-auto-import@npm:1.1.0": - version: 1.1.0 - resolution: "babel-plugin-auto-import@npm:1.1.0" - dependencies: - "@babel/core": "npm:^7.11.1" - logical-not: "npm:^1.0.1" - checksum: 8c0/e738db0589551544c38619777334039ec9e2b245eb8e5930878e1ba5bef64b0eb33551bcbc52213d9ae8979155d07d16d22926def353d483eac12ab63d8d1983 - languageName: node - linkType: hard - -"babel-plugin-dynamic-import-node@npm:^2.3.3": - version: 2.3.3 - resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" - dependencies: - object.assign: "npm:^4.1.0" - checksum: 8c0/1bd80df981e1fc1aff0cd4e390cf27aaa34f95f7620cd14dff07ba3bad56d168c098233a7d2deb2c9b1dc13643e596a6b94fc608a3412ee3c56e74a25cd2167e - languageName: node - linkType: hard - -"babel-plugin-emotion@npm:^10.0.27": - version: 10.2.2 - resolution: "babel-plugin-emotion@npm:10.2.2" - dependencies: - "@babel/helper-module-imports": "npm:^7.0.0" - "@emotion/hash": "npm:0.8.0" - "@emotion/memoize": "npm:0.7.4" - "@emotion/serialize": "npm:^0.11.16" - babel-plugin-macros: "npm:^2.0.0" - babel-plugin-syntax-jsx: "npm:^6.18.0" - convert-source-map: "npm:^1.5.0" - escape-string-regexp: "npm:^1.0.5" - find-root: "npm:^1.1.0" - source-map: "npm:^0.5.7" - checksum: 8c0/324edc532819610522b9877189bb0072f745feefd38bb02b986bf7f9fe09e847535356b7aaa01b64f0cd5a9b508ccadc93afc61acc06a593271cc77beb1f8164 - languageName: node - linkType: hard - -"babel-plugin-extract-import-names@npm:1.6.22": - version: 1.6.22 - resolution: "babel-plugin-extract-import-names@npm:1.6.22" - dependencies: - "@babel/helper-plugin-utils": "npm:7.10.4" - checksum: 8c0/c7b7206222f7b70f2c9852caa621cc3742b5d9f7dd4229a6e3c560d7683b82f835a8ea46db632df5dab5ad91b1439ead3771a8576a7a14e418248c16fd1f0cc4 - languageName: node - linkType: hard - -"babel-plugin-graphql-tag@npm:3.2.0": - version: 3.2.0 - resolution: "babel-plugin-graphql-tag@npm:3.2.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/parser": "npm:^7.3.2" - babel-literal-to-ast: "npm:^2.1.0" - debug: "npm:^4.1.1" - peerDependencies: - "@babel/core": ^7.0.0 - graphql-tag: ^2.10.1 - checksum: 8c0/ef53f9a30d057b891f232bedd3fe50c378e82ae8d3cce2264d15c985216f3094dd765c0852ad7f6c0f31ff6ab8765b49d481613d2e08081041b5727f92d01ef5 - languageName: node - linkType: hard - -"babel-plugin-graphql-tag@npm:3.3.0": - version: 3.3.0 - resolution: "babel-plugin-graphql-tag@npm:3.3.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/parser": "npm:^7.3.2" - babel-literal-to-ast: "npm:^2.1.0" - debug: "npm:^4.1.1" - peerDependencies: - "@babel/core": ^7.0.0 - graphql-tag: ^2.10.1 - checksum: 8c0/6616bf9d03f5e905413ea024e0609bf70a2b18b875c19da1e00fe787a16e71ce36244bd097f65c7faa269d4e97e683ab53ca532d15827298c0381a05b8341add - languageName: node - linkType: hard - -"babel-plugin-ignore-html-and-css-imports@npm:0.1.0, babel-plugin-ignore-html-and-css-imports@npm:^0.1.0": - version: 0.1.0 - resolution: "babel-plugin-ignore-html-and-css-imports@npm:0.1.0" - checksum: 8c0/cb83c0d66134ab5bcd12332e6c33a0e13475929cf729b7f26c8d324037371e3c3e60ea9bd7a6ac87a1fca268c5665991878c47bf92be21157a63032c6f86b633 - languageName: node - linkType: hard - -"babel-plugin-inline-react-svg@npm:2.0.1": - version: 2.0.1 - resolution: "babel-plugin-inline-react-svg@npm:2.0.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@babel/parser": "npm:^7.0.0" - lodash.isplainobject: "npm:^4.0.6" - resolve: "npm:^1.20.0" - svgo: "npm:^2.0.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/5196611ccaa626a0119fb1432c22bcb827cd82ecf60937cf685965645c53021d1dcdec7bad5852130d82a300aaada301d9656409aca20551ce0e5d3afbe0cea4 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.0.0": - version: 6.0.0 - resolution: "babel-plugin-istanbul@npm:6.0.0" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^4.0.0" - test-exclude: "npm:^6.0.0" - checksum: 8c0/7516fb6189e0e86dfa93b900a7d2cf1fb18c5d405c001f391e2fae7c9f9f04d121e71577fbd6652c86be941c1b245136b573e402fdf2749e0d23eafe1d8237f6 - languageName: node - linkType: hard - -"babel-plugin-istanbul@npm:^6.1.1": - version: 6.1.1 - resolution: "babel-plugin-istanbul@npm:6.1.1" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.0.0" - "@istanbuljs/load-nyc-config": "npm:^1.0.0" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-instrument: "npm:^5.0.4" - test-exclude: "npm:^6.0.0" - checksum: 8c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-plugin-jest-hoist@npm:26.6.2" - dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.0.0" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 8c0/2fcddf7b338e38453d6a42c23db5b790e4188fcbffeba8ff74a62b7d64fe5a642b009a7bd780e47840c382600628de2a6486a92bb151648c64028a6c628e9bfd - languageName: node - linkType: hard - -"babel-plugin-jest-hoist@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-plugin-jest-hoist@npm:29.6.3" - dependencies: - "@babel/template": "npm:^7.3.3" - "@babel/types": "npm:^7.3.3" - "@types/babel__core": "npm:^7.1.14" - "@types/babel__traverse": "npm:^7.0.6" - checksum: 8c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^2.0.0, babel-plugin-macros@npm:^2.8.0": - version: 2.8.0 - resolution: "babel-plugin-macros@npm:2.8.0" - dependencies: - "@babel/runtime": "npm:^7.7.2" - cosmiconfig: "npm:^6.0.0" - resolve: "npm:^1.12.0" - checksum: 8c0/9a101e2844a800e65662b2a8d0758bdbbe500ae02d68ef6f3466ead7eaa1350e3872b97014b20bf6f3a1a46b3c9613dfac7578af6f6ae6d4eccbd68ad7b6f228 - languageName: node - linkType: hard - -"babel-plugin-macros@npm:^3.0.1": - version: 3.1.0 - resolution: "babel-plugin-macros@npm:3.1.0" - dependencies: - "@babel/runtime": "npm:^7.12.5" - cosmiconfig: "npm:^7.0.0" - resolve: "npm:^1.19.0" - checksum: 8c0/c6dfb15de96f67871d95bd2e8c58b0c81edc08b9b087dc16755e7157f357dc1090a8dc60ebab955e92587a9101f02eba07e730adc253a1e4cf593ca3ebd3839c - languageName: node - linkType: hard - -"babel-plugin-module-resolver@npm:4.1.0": - version: 4.1.0 - resolution: "babel-plugin-module-resolver@npm:4.1.0" - dependencies: - find-babel-config: "npm:^1.2.0" - glob: "npm:^7.1.6" - pkg-up: "npm:^3.1.0" - reselect: "npm:^4.0.0" - resolve: "npm:^1.13.1" - checksum: 8c0/b1348f310cf714895b1af86c50fb05f6da42d4920d1435dee5eee57cb94c1e594bc8dfa09b92fe747c974f800dfdd9780807ba90e40b71bcea5eb1ca5f3740a4 - languageName: node - linkType: hard - -"babel-plugin-module-resolver@npm:5.0.0": - version: 5.0.0 - resolution: "babel-plugin-module-resolver@npm:5.0.0" - dependencies: - find-babel-config: "npm:^2.0.0" - glob: "npm:^8.0.3" - pkg-up: "npm:^3.1.0" - reselect: "npm:^4.1.7" - resolve: "npm:^1.22.1" - checksum: 8c0/bbddb437bf23ab2e12e25c855d71c906cf7a438d0d4821cf0786f23990718f86f76c49f7952ba2370a312c806d223e1efb7ca16698ff49d019396c8d81e4a870 - languageName: node - linkType: hard - -"babel-plugin-named-asset-import@npm:^0.3.1": - version: 0.3.7 - resolution: "babel-plugin-named-asset-import@npm:0.3.7" - peerDependencies: - "@babel/core": ^7.1.0 - checksum: 8c0/055428561c92edc6982d4670242e48fbcd3ae7822fc14fab8888a7465a5a591620b459724852882ac85a1333f104f85d8fa22c84570274648431296c7218955e - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.2.0": - version: 0.2.2 - resolution: "babel-plugin-polyfill-corejs2@npm:0.2.2" - dependencies: - "@babel/compat-data": "npm:^7.13.11" - "@babel/helper-define-polyfill-provider": "npm:^0.2.2" - semver: "npm:^6.1.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/7fb5129204c31d46474b78f7ceaa117b6e740edc8dfc7a32aeb82d766f8815b06bcee09b95d0ddcfd71dbf9b237887b16adf06d18e1ef0e4689213bb2b2bf9ee - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.3.0": - version: 0.3.1 - resolution: "babel-plugin-polyfill-corejs2@npm:0.3.1" - dependencies: - "@babel/compat-data": "npm:^7.13.11" - "@babel/helper-define-polyfill-provider": "npm:^0.3.1" - semver: "npm:^6.1.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/55b9394c954eed189b43b2c92c8fa1a0f811bcfced63aee741d26e9df8c8f4e18ec278a5353015afb66b47833d2dd2597e5e1c54310774416ebc67ec34ae8410 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs2@npm:^0.4.6, babel-plugin-polyfill-corejs2@npm:^0.4.7": - version: 0.4.7 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.7" - dependencies: - "@babel/compat-data": "npm:^7.22.6" - "@babel/helper-define-polyfill-provider": "npm:^0.4.4" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: f80f7284ec72c63e7dd751e0bdf25e9978df195a79e0887470603bfdea13ee518d62573cf360bb1bc01b80819e54915dd5edce9cff14c52d0af5f984aa3d36a3 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.1.0": - version: 0.1.7 - resolution: "babel-plugin-polyfill-corejs3@npm:0.1.7" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.1.5" - core-js-compat: "npm:^3.8.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/d31c7f0c210994593e2cc57d202ada8539cbbff1a112f52aa3607c8c9ba23b64e03fa52fbdc243dccbce8b8052f29f8d541bc4151e3055738cb03647708c0f42 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.2.0": - version: 0.2.2 - resolution: "babel-plugin-polyfill-corejs3@npm:0.2.2" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.2.2" - core-js-compat: "npm:^3.9.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/a006a0eacdafdf47377ab865331f1a24c74ff21b3cc6ffa647e127c64788306696914e8b4f3b65ec1c5e4f1691ca692789626dbed69149429d798c8e06f7e50d - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.5.0": - version: 0.5.2 - resolution: "babel-plugin-polyfill-corejs3@npm:0.5.2" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.3.1" - core-js-compat: "npm:^3.21.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/4b6c36934e1b80629abcb35a8b2e0749e9f3df5ba911447a1726b30ff6eeb76e5858b83477e844abf33fea25da2220e820a1d7a10035d88f63c98544d1d66723 - languageName: node - linkType: hard - -"babel-plugin-polyfill-corejs3@npm:^0.8.5, babel-plugin-polyfill-corejs3@npm:^0.8.7": - version: 0.8.7 - resolution: "babel-plugin-polyfill-corejs3@npm:0.8.7" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.4.4" - core-js-compat: "npm:^3.33.1" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 094e40f4ab9f131408202063964d63740609fd4fdb70a5b6332b371761921b540ffbcee7a434c0199b8317dfb2ba4675eef674867215fd3b85e24054607c1501 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.2.0": - version: 0.2.2 - resolution: "babel-plugin-polyfill-regenerator@npm:0.2.2" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.2.2" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/87ca62b1bcb67cd4d9b0076683203bca985a7e5a9702533a60363d2fef8a5471aa0e2411555fb9623d3a1a0987315199a99221bcf07fa2c89cf444a7aac5fd32 - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.3.0": - version: 0.3.1 - resolution: "babel-plugin-polyfill-regenerator@npm:0.3.1" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.3.1" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 8c0/88f7b488bbb29636370954c048f08bdf61c5f1ffbee0b627817bf80e99a46b06660f54266cff93affb8ab5831d8edcaab271f9a80b8a090d4fd409a13023a61d - languageName: node - linkType: hard - -"babel-plugin-polyfill-regenerator@npm:^0.5.3, babel-plugin-polyfill-regenerator@npm:^0.5.4": - version: 0.5.4 - resolution: "babel-plugin-polyfill-regenerator@npm:0.5.4" - dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.4.4" - peerDependencies: - "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 0b903f5fe2f8c487b4260935dfe60bd9a95bcaee7ae63958f063045093b16d4e8288c232199d411261300aa21f6b106a3cb83c42cc996de013b337f5825a79fe - languageName: node - linkType: hard - -"babel-plugin-react-docgen@npm:^4.2.1": - version: 4.2.1 - resolution: "babel-plugin-react-docgen@npm:4.2.1" - dependencies: - ast-types: "npm:^0.14.2" - lodash: "npm:^4.17.15" - react-docgen: "npm:^5.0.0" - checksum: 8c0/9f7af20e6ebd794beae14aa1ffe4f1c1c5855821a5a9f205099602c89b557e33b9cb3dc3fe0b3a2f2ca35007c6ab45f52da9695a681d8495ad0f5494ef78ec34 - languageName: node - linkType: hard - -"babel-plugin-styled-components@npm:>= 1.12.0": - version: 1.12.0 - resolution: "babel-plugin-styled-components@npm:1.12.0" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.0.0" - "@babel/helper-module-imports": "npm:^7.0.0" - babel-plugin-syntax-jsx: "npm:^6.18.0" - lodash: "npm:^4.17.11" - peerDependencies: - styled-components: ">= 2" - checksum: 8c0/3e9398976927b96f92dd8919ff5f776ec9d00fc257eca624b1094570f29616fc6cb8e569ee750b8d7f5b3546cffe14bd9b3387037b9fe42a6cddd1da44343f33 - languageName: node - linkType: hard - -"babel-plugin-syntax-jsx@npm:^6.18.0": - version: 6.18.0 - resolution: "babel-plugin-syntax-jsx@npm:6.18.0" - checksum: 8c0/d5954e9c2a3dd519f23e78674ecfba61394a8fae63499afdeca4214fad68997556ebd15ce012bbc4d527ae0e3cecc98d3e8f78004a68707122642d0df4ab7213 - languageName: node - linkType: hard - -"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": - version: 7.0.0-beta.0 - resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" - checksum: 8c0/67e3d6a706637097526b2d3046d3124d3efd3aac28b47af940c2f8df01b8d7ffeb4cdf5648f3b5eac3f098f5b61c4845e306f34301c869e5e14db6ae8b77f699 - languageName: node - linkType: hard - -"babel-plugin-tester@npm:11.0.4": - version: 11.0.4 - resolution: "babel-plugin-tester@npm:11.0.4" - dependencies: - core-js: "npm:^3.27.2" - debug: "npm:^4.3.4" - lodash.mergewith: "npm:^4.6.2" - prettier: "npm:^2.8.3" - strip-indent: "npm:^3.0.0" - peerDependencies: - "@babel/core": ">=7.11.6" - checksum: 8c0/b5e6b6a64adff947ad07948f5e792de12d75694927527df63078bb05861f157ce8e00ac540b5d5e08a13e97293f42577f0629a7bab71c430114660f4c525c788 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.0.1 - resolution: "babel-preset-current-node-syntax@npm:1.0.1" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.8.3" - "@babel/plugin-syntax-import-meta": "npm:^7.8.3" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 - languageName: node - linkType: hard - -"babel-preset-fbjs@npm:^3.4.0": - version: 3.4.0 - resolution: "babel-preset-fbjs@npm:3.4.0" - dependencies: - "@babel/plugin-proposal-class-properties": "npm:^7.0.0" - "@babel/plugin-proposal-object-rest-spread": "npm:^7.0.0" - "@babel/plugin-syntax-class-properties": "npm:^7.0.0" - "@babel/plugin-syntax-flow": "npm:^7.0.0" - "@babel/plugin-syntax-jsx": "npm:^7.0.0" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.0.0" - "@babel/plugin-transform-arrow-functions": "npm:^7.0.0" - "@babel/plugin-transform-block-scoped-functions": "npm:^7.0.0" - "@babel/plugin-transform-block-scoping": "npm:^7.0.0" - "@babel/plugin-transform-classes": "npm:^7.0.0" - "@babel/plugin-transform-computed-properties": "npm:^7.0.0" - "@babel/plugin-transform-destructuring": "npm:^7.0.0" - "@babel/plugin-transform-flow-strip-types": "npm:^7.0.0" - "@babel/plugin-transform-for-of": "npm:^7.0.0" - "@babel/plugin-transform-function-name": "npm:^7.0.0" - "@babel/plugin-transform-literals": "npm:^7.0.0" - "@babel/plugin-transform-member-expression-literals": "npm:^7.0.0" - "@babel/plugin-transform-modules-commonjs": "npm:^7.0.0" - "@babel/plugin-transform-object-super": "npm:^7.0.0" - "@babel/plugin-transform-parameters": "npm:^7.0.0" - "@babel/plugin-transform-property-literals": "npm:^7.0.0" - "@babel/plugin-transform-react-display-name": "npm:^7.0.0" - "@babel/plugin-transform-react-jsx": "npm:^7.0.0" - "@babel/plugin-transform-shorthand-properties": "npm:^7.0.0" - "@babel/plugin-transform-spread": "npm:^7.0.0" - "@babel/plugin-transform-template-literals": "npm:^7.0.0" - babel-plugin-syntax-trailing-function-commas: "npm:^7.0.0-beta.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/2be440c0fd7d1df247417be35644cb89f40a300e7fcdc44878b737ec49b04380eff422e4ebdc7bb5efd5ecfef45b634fc5fe11c3a409a50c9084e81083037902 - languageName: node - linkType: hard - -"babel-preset-jest@npm:^26.6.2": - version: 26.6.2 - resolution: "babel-preset-jest@npm:26.6.2" - dependencies: - babel-plugin-jest-hoist: "npm:^26.6.2" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/b6e0efe33b485eb2fba019026933e46d680605b3bf84a6b7378f1df8344b890f66318c49129921dd98bf5819694316312a97b50b16d9aa377faf8624f9f0db5b - languageName: node - linkType: hard - -"babel-preset-jest@npm:^29.6.3": - version: 29.6.3 - resolution: "babel-preset-jest@npm:29.6.3" - dependencies: - babel-plugin-jest-hoist: "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 8c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 - languageName: node - linkType: hard - -"babel-timing@npm:0.9.1": - version: 0.9.1 - resolution: "babel-timing@npm:0.9.1" - dependencies: - "@babel/core": "npm:^7.12.9" - ansi-diff-stream: "npm:^1.2.1" - babel-loader: "npm:^8.1.0" - cli-table3: "npm:^0.6.0" - colors: "npm:^1.4.0" - commander: "npm:^6.1.0" - find-babel-config: "npm:^1.2.0" - find-cache-dir: "npm:^3.3.1" - glob: "npm:^7.1.6" - lodash.chunk: "npm:^4.2.0" - lodash.defaults: "npm:^4.2.0" - lodash.mergewith: "npm:^4.6.2" - minimatch: "npm:^3.0.4" - multimatch: "npm:^4.0.0" - rimraf: "npm:^3.0.2" - webpack: "npm:^4.44.2" - bin: - babel-timing: dist/cli.js - checksum: 8c0/1a70d7ae9ef60e71fb9a4a4ac155c660b0cc779d1a6b48023964050b458b822d66d01c1007038765113f6f622496beddabf5978ed4c5f96d1d8b277301ca058f - languageName: node - linkType: hard - -"backo2@npm:^1.0.2": - version: 1.0.2 - resolution: "backo2@npm:1.0.2" - checksum: 8c0/a9e825a6a38a6d1c4a94476eabc13d6127dfaafb0967baf104affbb67806ae26abbb58dab8d572d2cd21ef06634ff57c3ad48dff14b904e18de1474cc2f22bf3 - languageName: node - linkType: hard - -"bail@npm:^1.0.0": - version: 1.0.5 - resolution: "bail@npm:1.0.5" - checksum: 8c0/4cf7d0b5c82fdc69590b3fe85c17c4ec37647681b20875551fd6187a85c122b20178dc118001d3ebd5d0ab3dc0e95637c71f889f481882ee761db43c6b16fa05 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 8c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee - languageName: node - linkType: hard - -"base32.js@npm:0.1.0": - version: 0.1.0 - resolution: "base32.js@npm:0.1.0" - checksum: d5f520f8082193850df798a0a64c528eb56b25d507daa94393c39342cc07c41e1e8e3fae71dc318e397b9e28cee800548f582493018d46962b20fce8735efaad - languageName: node - linkType: hard - -"base64-js@npm:^1.0.2, base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 8c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf - languageName: node - linkType: hard - -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: "npm:^1.0.1" - class-utils: "npm:^0.3.5" - component-emitter: "npm:^1.2.1" - define-property: "npm:^1.0.0" - isobject: "npm:^3.0.1" - mixin-deep: "npm:^1.2.0" - pascalcase: "npm:^0.1.1" - checksum: 8c0/30a2c0675eb52136b05ef496feb41574d9f0bb2d6d677761da579c00a841523fccf07f1dbabec2337b5f5750f428683b8ca60d89e56a1052c4ae1c0cd05de64d - languageName: node - linkType: hard - -"basic-auth@npm:~2.0.1": - version: 2.0.1 - resolution: "basic-auth@npm:2.0.1" - dependencies: - safe-buffer: "npm:5.1.2" - checksum: 8c0/05f56db3a0fc31c89c86b605231e32ee143fb6ae38dc60616bc0970ae6a0f034172def99e69d3aed0e2c9e7cac84e2d63bc51a0b5ff6ab5fc8808cc8b29923c1 - languageName: node - linkType: hard - -"batch-processor@npm:1.0.0": - version: 1.0.0 - resolution: "batch-processor@npm:1.0.0" - checksum: 8c0/048b868811bed4cd03a0eec35264055f0f3fe4ab62f501809dce4a8a7b845d905fa5051b4af8b3c5123181116b1e2b6dfabf608829043b60cf61f4da3a359b60 - languageName: node - linkType: hard - -"batch@npm:0.6.1": - version: 0.6.1 - resolution: "batch@npm:0.6.1" - checksum: 8c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 - languageName: node - linkType: hard - -"better-opn@npm:^2.1.1": - version: 2.1.1 - resolution: "better-opn@npm:2.1.1" - dependencies: - open: "npm:^7.0.3" - checksum: 8c0/c483f52a1c71555926df37a89ae7e521cddff6509e2a02c6af83c2c500e20cb3307417579ce1d5ec4d09855cc7d30f608b20934e7cedc54218888722d5bfc1d3 - languageName: node - linkType: hard - -"bfj@npm:^6.1.1": - version: 6.1.2 - resolution: "bfj@npm:6.1.2" - dependencies: - bluebird: "npm:^3.5.5" - check-types: "npm:^8.0.3" - hoopy: "npm:^0.1.4" - tryer: "npm:^1.0.1" - checksum: 8c0/b3aa02a4ec4d2dea3f64e6c4d7af67bda580574fafef8f819acc3e54a2f5e8b553ad8250f83d5e02d837d96be19cce855560b742635f2875f1a0ceceb304dfad - languageName: node - linkType: hard - -"big.js@npm:^3.1.3": - version: 3.2.0 - resolution: "big.js@npm:3.2.0" - checksum: 8c0/de0b8e275171060a37846b521e8ebfe077c650532306c2470474da6720feb04351cc8588ef26088756b224923782946ae67e817b90122cc85692bbda7ccd2d0d - languageName: node - linkType: hard - -"big.js@npm:^5.2.2": - version: 5.2.2 - resolution: "big.js@npm:5.2.2" - checksum: 8c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f - languageName: node - linkType: hard - -"bin-check@npm:^4.1.0": - version: 4.1.0 - resolution: "bin-check@npm:4.1.0" - dependencies: - execa: "npm:^0.7.0" - executable: "npm:^4.1.0" - checksum: b1ad144672ab033af879bb493011f694ef11e7c1a250ce15cbdbbc2e5e6feb114046943927654b5ac3d1ce668cff01ec3b6b2703e367f357b1f918b480020d86 - languageName: node - linkType: hard - -"bin-version-check@npm:^5.0.0": - version: 5.1.0 - resolution: "bin-version-check@npm:5.1.0" - dependencies: - bin-version: "npm:^6.0.0" - semver: "npm:^7.5.3" - semver-truncate: "npm:^3.0.0" - checksum: f2a855b53b41e7200ab10fe6981fbd564430c2d58f7ae48cf71fe74b0071b802963efc0fa11fa066c0116057e8072e0a7cd63e2dae79283e37cc444a023116b4 - languageName: node - linkType: hard - -"bin-version@npm:^6.0.0": - version: 6.0.0 - resolution: "bin-version@npm:6.0.0" - dependencies: - execa: "npm:^5.0.0" - find-versions: "npm:^5.0.0" - checksum: e06083cdeb056910009740687ae9ba3175d42c72082408d4c5cb88c91fa102d5a8aef9112c127e94c3b48b611ce048abef390a9b8376521e42541635dbd3c506 - languageName: node - linkType: hard - -"binary-extensions@npm:^1.0.0": - version: 1.13.1 - resolution: "binary-extensions@npm:1.13.1" - checksum: 8c0/2d616938ac23d828ec3fbe0dea429b566fd2c137ddc38f166f16561ccd58029deac3fa9fddb489ab13d679c8fb5f1bd0e82824041299e5e39d8dd3cc68fbb9f9 - languageName: node - linkType: hard - -"binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: 8c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d - languageName: node - linkType: hard - -"bindings@npm:^1.5.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" - dependencies: - file-uri-to-path: "npm:1.0.0" - checksum: 8c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba - languageName: node - linkType: hard - -"bl@npm:^4.0.3, bl@npm:^4.1.0": - version: 4.1.0 - resolution: "bl@npm:4.1.0" - dependencies: - buffer: "npm:^5.5.0" - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.4.0" - checksum: 8c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f - languageName: node - linkType: hard - -"bluebird@npm:^3.3.5, bluebird@npm:^3.5.5": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 8c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 - languageName: node - linkType: hard - -"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 8c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 - languageName: node - linkType: hard - -"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": - version: 5.2.0 - resolution: "bn.js@npm:5.2.0" - checksum: 8c0/67e17b1934d9c7a73aed9b89222dc8c1c8e3aff46cca6609b8c2ab04fa22c6b8db42c7774b039d09fa63136d8866b777ab88af0d64d8ea3839a94e69193a6b13 - languageName: node - linkType: hard - -"body-parser@npm:1.19.0": - version: 1.19.0 - resolution: "body-parser@npm:1.19.0" - dependencies: - bytes: "npm:3.1.0" - content-type: "npm:~1.0.4" - debug: "npm:2.6.9" - depd: "npm:~1.1.2" - http-errors: "npm:1.7.2" - iconv-lite: "npm:0.4.24" - on-finished: "npm:~2.3.0" - qs: "npm:6.7.0" - raw-body: "npm:2.4.0" - type-is: "npm:~1.6.17" - checksum: 8c0/df97c94a16495db166dba4c7812a43ba800ea252a76a1de80be944e2b884b808897febb920880c30089ac01f74f9118ca589402294c0ea5e2075488e4f91dc09 - languageName: node - linkType: hard - -"body-parser@npm:1.20.1": - version: 1.20.1 - resolution: "body-parser@npm:1.20.1" - dependencies: - bytes: "npm:3.1.2" - content-type: "npm:~1.0.4" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - on-finished: "npm:2.4.1" - qs: "npm:6.11.0" - raw-body: "npm:2.5.1" - type-is: "npm:~1.6.18" - unpipe: "npm:1.0.0" - checksum: 8c0/a202d493e2c10a33fb7413dac7d2f713be579c4b88343cd814b6df7a38e5af1901fc31044e04de176db56b16d9772aa25a7723f64478c20f4d91b1ac223bf3b8 - languageName: node - linkType: hard - -"body-parser@npm:^1.19.0": - version: 1.19.1 - resolution: "body-parser@npm:1.19.1" - dependencies: - bytes: "npm:3.1.1" - content-type: "npm:~1.0.4" - debug: "npm:2.6.9" - depd: "npm:~1.1.2" - http-errors: "npm:1.8.1" - iconv-lite: "npm:0.4.24" - on-finished: "npm:~2.3.0" - qs: "npm:6.9.6" - raw-body: "npm:2.4.2" - type-is: "npm:~1.6.18" - checksum: 8c0/29d3b3e2b0e39f9cf2b92ae7d3da3cb64d609222ae1a1ca878aa82371f968c62f26e406e3be87e34e7d179df0748c6a4c989ced2192b4620ee3777474402d6f5 - languageName: node - linkType: hard - -"bonjour-service@npm:^1.0.11": - version: 1.1.0 - resolution: "bonjour-service@npm:1.1.0" - dependencies: - array-flatten: "npm:^2.1.2" - dns-equal: "npm:^1.0.0" - fast-deep-equal: "npm:^3.1.3" - multicast-dns: "npm:^7.2.5" - checksum: 8c0/29e862ab140efd01e5b0b25c1faa4e71377037502e1036b619e6fcee68784c0ae136557a3285ed2a2018d979c01c253c05125a1adbed8937c8255fae1166f104 - languageName: node - linkType: hard - -"bonjour@npm:^3.5.0": - version: 3.5.0 - resolution: "bonjour@npm:3.5.0" - dependencies: - array-flatten: "npm:^2.1.0" - deep-equal: "npm:^1.0.1" - dns-equal: "npm:^1.0.0" - dns-txt: "npm:^2.0.2" - multicast-dns: "npm:^6.0.1" - multicast-dns-service-types: "npm:^1.1.0" - checksum: 8c0/0be7c4cd96df563571973706226e750f6feeacd81d01c1ade11247eb3a7e14846af49cffe397ab970059b828dd89f694f456e22bca4ca315a7f0326e9303e241 - languageName: node - linkType: hard - -"boolbase@npm:^1.0.0, boolbase@npm:~1.0.0": - version: 1.0.0 - resolution: "boolbase@npm:1.0.0" - checksum: 8c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf - languageName: node - linkType: hard - -"boxen@npm:5.1.2, boxen@npm:^5.0.1, boxen@npm:^5.1.2": - version: 5.1.2 - resolution: "boxen@npm:5.1.2" - dependencies: - ansi-align: "npm:^3.0.0" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.1.0" - cli-boxes: "npm:^2.2.1" - string-width: "npm:^4.2.2" - type-fest: "npm:^0.20.2" - widest-line: "npm:^3.1.0" - wrap-ansi: "npm:^7.0.0" - checksum: 8c0/71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: "npm:^1.0.0" - concat-map: "npm:0.0.1" - checksum: 8c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 - languageName: node - linkType: hard - -"brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" - dependencies: - balanced-match: "npm:^1.0.0" - checksum: 8c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f - languageName: node - linkType: hard - -"braces@npm:^2.3.1, braces@npm:^2.3.2": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: "npm:^1.1.0" - array-unique: "npm:^0.3.2" - extend-shallow: "npm:^2.0.1" - fill-range: "npm:^4.0.0" - isobject: "npm:^3.0.1" - repeat-element: "npm:^1.1.2" - snapdragon: "npm:^0.8.1" - snapdragon-node: "npm:^2.0.1" - split-string: "npm:^3.0.2" - to-regex: "npm:^3.0.1" - checksum: 8c0/72b27ea3ea2718f061c29e70fd6e17606e37c65f5801abddcf0b0052db1de7d60f3bf92cfc220ab57b44bd0083a5f69f9d03b3461d2816cfe9f9398207acc728 - languageName: node - linkType: hard - -"braces@npm:^3.0.1, braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: "npm:^7.0.1" - checksum: 8c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 - languageName: node - linkType: hard - -"brorand@npm:^1.0.1, brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 8c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 - languageName: node - linkType: hard - -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: 8c0/65da78e51e9d7fa5909147f269c54c65ae2e03d1cf797cc3cfbbe49f475578b8160ce4a76c36c1a2ffbff26c74f937d73096c508057491ddf1a6dfd11143f72d - languageName: node - linkType: hard - -"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: "npm:^1.0.3" - cipher-base: "npm:^1.0.0" - create-hash: "npm:^1.1.0" - evp_bytestokey: "npm:^1.0.3" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 8c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 - languageName: node - linkType: hard - -"browserify-cipher@npm:^1.0.0": - version: 1.0.1 - resolution: "browserify-cipher@npm:1.0.1" - dependencies: - browserify-aes: "npm:^1.0.4" - browserify-des: "npm:^1.0.0" - evp_bytestokey: "npm:^1.0.0" - checksum: 8c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d - languageName: node - linkType: hard - -"browserify-des@npm:^1.0.0": - version: 1.0.2 - resolution: "browserify-des@npm:1.0.2" - dependencies: - cipher-base: "npm:^1.0.1" - des.js: "npm:^1.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 8c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d - languageName: node - linkType: hard - -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" - dependencies: - bn.js: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - checksum: 8c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a - languageName: node - linkType: hard - -"browserify-sign@npm:^4.0.0": - version: 4.2.1 - resolution: "browserify-sign@npm:4.2.1" - dependencies: - bn.js: "npm:^5.1.1" - browserify-rsa: "npm:^4.0.1" - create-hash: "npm:^1.2.0" - create-hmac: "npm:^1.1.7" - elliptic: "npm:^6.5.3" - inherits: "npm:^2.0.4" - parse-asn1: "npm:^5.1.5" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 8c0/8f00a370e3e97060977dc58e51251d3ca398ee73523994a44430321e8de2c7d85395362d59014b2b07efe4190f369baee2ff28eb8f405ff4660b776651cf052d - languageName: node - linkType: hard - -"browserify-zlib@npm:^0.2.0": - version: 0.2.0 - resolution: "browserify-zlib@npm:0.2.0" - dependencies: - pako: "npm:~1.0.5" - checksum: 8c0/9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 - languageName: node - linkType: hard - -"browserslist@npm:4.14.2": - version: 4.14.2 - resolution: "browserslist@npm:4.14.2" - dependencies: - caniuse-lite: "npm:^1.0.30001125" - electron-to-chromium: "npm:^1.3.564" - escalade: "npm:^3.0.2" - node-releases: "npm:^1.1.61" - bin: - browserslist: cli.js - checksum: 8c0/aacba943106bc58f1a3ccfa1bbb04af90f34fb492248d3111ca85368cfcdd09575783fa81d695b0ff67856eacd6970758bfe7fa456eec00afae01487800fd8f8 - languageName: node - linkType: hard - -"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.16.6": - version: 4.16.6 - resolution: "browserslist@npm:4.16.6" - dependencies: - caniuse-lite: "npm:^1.0.30001219" - colorette: "npm:^1.2.2" - electron-to-chromium: "npm:^1.3.723" - escalade: "npm:^3.1.1" - node-releases: "npm:^1.1.71" - bin: - browserslist: cli.js - checksum: 8c0/785883ec44b157f45903b52da2355f87e40dec3d888e5f3ebb559934728ca3744d6d501c5b0e696433844cdc623929f812837fdfa08455955fe01453a873543e - languageName: node - linkType: hard - -"browserslist@npm:^4.14.5, browserslist@npm:^4.21.3, browserslist@npm:^4.21.4": - version: 4.21.5 - resolution: "browserslist@npm:4.21.5" - dependencies: - caniuse-lite: "npm:^1.0.30001449" - electron-to-chromium: "npm:^1.4.284" - node-releases: "npm:^2.0.8" - update-browserslist-db: "npm:^1.0.10" - bin: - browserslist: cli.js - checksum: 8c0/903040d2c45b733e1177c288b4f146ff21d45e8a44ccc87d1d7fc2f6a8d021c7ee54b514fd7722529c282381969382a54bd2ab4263f5b6c8981a856b457ea162 - languageName: node - linkType: hard - -"browserslist@npm:^4.17.5, browserslist@npm:^4.19.1": - version: 4.19.1 - resolution: "browserslist@npm:4.19.1" - dependencies: - caniuse-lite: "npm:^1.0.30001286" - electron-to-chromium: "npm:^1.4.17" - escalade: "npm:^3.1.1" - node-releases: "npm:^2.0.1" - picocolors: "npm:^1.0.0" - bin: - browserslist: cli.js - checksum: 8c0/0a5f88a895a95e612439a893dbb869ce52a211e186c0c2894326a27a9881f2ca6d7f8a4a15c24410b9f144b7ee6e8a91db4ece24738d1a63f7cdd5acc55271ae - languageName: node - linkType: hard - -"browserslist@npm:^4.21.10, browserslist@npm:^4.21.9": - version: 4.21.10 - resolution: "browserslist@npm:4.21.10" - dependencies: - caniuse-lite: "npm:^1.0.30001517" - electron-to-chromium: "npm:^1.4.477" - node-releases: "npm:^2.0.13" - update-browserslist-db: "npm:^1.0.11" - bin: - browserslist: cli.js - checksum: 8c0/e8c98496e5f2a5128d0e2f1f186dc0416bfc49c811e568b19c9e07a56cccc1f7f415fa4f532488e6a13dfacbe3332a9b55b152082ff125402696a11a158a0894 - languageName: node - linkType: hard - -"browserslist@npm:^4.22.2": - version: 4.22.2 - resolution: "browserslist@npm:4.22.2" - dependencies: - caniuse-lite: "npm:^1.0.30001565" - electron-to-chromium: "npm:^1.4.601" - node-releases: "npm:^2.0.14" - update-browserslist-db: "npm:^1.0.13" - bin: - browserslist: cli.js - checksum: 2a331aab90503130043ca41dd5d281fa1e89d5e076d07a2d75e76bf4d693bd56e73d5abcd8c4f39119da6328d450578c216cf1cd5c99b82d8a90a2ae6271b465 - languageName: node - linkType: hard - -"bser@npm:2.1.1": - version: 2.1.1 - resolution: "bser@npm:2.1.1" - dependencies: - node-int64: "npm:^0.4.0" - checksum: 8c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 - languageName: node - linkType: hard - -"buffer-crc32@npm:^0.2.1, buffer-crc32@npm:^0.2.13": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 8c0/cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 - languageName: node - linkType: hard - -"buffer-equal-constant-time@npm:1.0.1": - version: 1.0.1 - resolution: "buffer-equal-constant-time@npm:1.0.1" - checksum: 8c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e - languageName: node - linkType: hard - -"buffer-from@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-from@npm:1.1.1" - checksum: 8c0/a8c5057c985d8071e7a64988ad72f313e08eb3001eda76bead78b1f9afc7a07d20be9677eed0b5791727baeecd56360fe541bc5dd74feb40efe202a74584d533 - languageName: node - linkType: hard - -"buffer-indexof@npm:^1.0.0": - version: 1.1.1 - resolution: "buffer-indexof@npm:1.1.1" - checksum: 8c0/67906b0a9892854e24ac717ef823c3b19790c653a8b1902835bbf3c3c46ea8d99f0680a92f7394fc5acbbecb3385775ccd504ea00587d2d67d8dfaadd460eeae - languageName: node - linkType: hard - -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 8c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c - languageName: node - linkType: hard - -"buffer@npm:4.9.2, buffer@npm:^4.3.0": - version: 4.9.2 - resolution: "buffer@npm:4.9.2" - dependencies: - base64-js: "npm:^1.0.2" - ieee754: "npm:^1.1.4" - isarray: "npm:^1.0.0" - checksum: 8c0/dc443d7e7caab23816b58aacdde710b72f525ad6eecd7d738fcaa29f6d6c12e8d9c13fed7219fd502be51ecf0615f5c077d4bdc6f9308dde2e53f8e5393c5b21 - languageName: node - linkType: hard - -"buffer@npm:6.0.3, buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.2.1" - checksum: 8c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 - languageName: node - linkType: hard - -"buffer@npm:^5.1.0, buffer@npm:^5.5.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: "npm:^1.3.1" - ieee754: "npm:^1.1.13" - checksum: 8c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e - languageName: node - linkType: hard - -"builtin-status-codes@npm:^3.0.0": - version: 3.0.0 - resolution: "builtin-status-codes@npm:3.0.0" - checksum: 8c0/c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c - languageName: node - linkType: hard - -"busboy@npm:1.6.0, busboy@npm:^1.6.0": - version: 1.6.0 - resolution: "busboy@npm:1.6.0" - dependencies: - streamsearch: "npm:^1.1.0" - checksum: 8c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f - languageName: node - linkType: hard - -"busboy@npm:^0.3.1": - version: 0.3.1 - resolution: "busboy@npm:0.3.1" - dependencies: - dicer: "npm:0.3.0" - checksum: 8c0/15b3382816f657302956ba68e48342891b4f36ae1164f1ad47d96302dd2cda634672513d03c7e5dde0dc90e2889becf3fa32f9b3b391d0f8ab4a5a675b5b5581 - languageName: node - linkType: hard - -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: 8c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 - languageName: node - linkType: hard - -"bytes@npm:3.1.0": - version: 3.1.0 - resolution: "bytes@npm:3.1.0" - checksum: 8c0/7034f475b006b9a8a37c7ecaa0947d0be181feb6d3d5231984e4c14e01c587a47e0fe85f66c630689fa6a046cfa498b6891f5af8022357e52db09365f1dfb625 - languageName: node - linkType: hard - -"bytes@npm:3.1.1": - version: 3.1.1 - resolution: "bytes@npm:3.1.1" - checksum: 8c0/286a6280730ce90409a89acc0052bcb39e7fb28eb7c019bede36af22cce2c93993f17fd2d66839d7f8e142c2156505989b2c09499a7dbed461c918c782caca80 - languageName: node - linkType: hard - -"bytes@npm:3.1.2": - version: 3.1.2 - resolution: "bytes@npm:3.1.2" - checksum: 8c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e - languageName: node - linkType: hard - -"c8@npm:^7.6.0": - version: 7.7.2 - resolution: "c8@npm:7.7.2" - dependencies: - "@bcoe/v8-coverage": "npm:^0.2.3" - "@istanbuljs/schema": "npm:^0.1.2" - find-up: "npm:^5.0.0" - foreground-child: "npm:^2.0.0" - istanbul-lib-coverage: "npm:^3.0.0" - istanbul-lib-report: "npm:^3.0.0" - istanbul-reports: "npm:^3.0.2" - rimraf: "npm:^3.0.0" - test-exclude: "npm:^6.0.0" - v8-to-istanbul: "npm:^7.1.0" - yargs: "npm:^16.2.0" - yargs-parser: "npm:^20.2.7" - bin: - c8: bin/c8.js - checksum: 8c0/23d867901a818ede1a0c870de925d6f17b4b7346b40160a2d48c2c9c024c6c6109fac67441f83c0a1c0af7723f4bd942342bfbd6382571f137088719b38077d3 - languageName: node - linkType: hard - -"cacache@npm:^12.0.2": - version: 12.0.4 - resolution: "cacache@npm:12.0.4" - dependencies: - bluebird: "npm:^3.5.5" - chownr: "npm:^1.1.1" - figgy-pudding: "npm:^3.5.1" - glob: "npm:^7.1.4" - graceful-fs: "npm:^4.1.15" - infer-owner: "npm:^1.0.3" - lru-cache: "npm:^5.1.1" - mississippi: "npm:^3.0.0" - mkdirp: "npm:^0.5.1" - move-concurrently: "npm:^1.0.1" - promise-inflight: "npm:^1.0.1" - rimraf: "npm:^2.6.3" - ssri: "npm:^6.0.1" - unique-filename: "npm:^1.1.1" - y18n: "npm:^4.0.0" - checksum: 8c0/b4b0aa49e3fbd3ca92f71bc62923e4afce31fd687b31d5ba524b2a54b36e96a8b027165599307dda5e4a6f7268cc951b77ca170efa00c1b72761f9daae51fdfb - languageName: node - linkType: hard - -"cacache@npm:^15.0.5": - version: 15.2.0 - resolution: "cacache@npm:15.2.0" - dependencies: - "@npmcli/move-file": "npm:^1.0.1" - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - glob: "npm:^7.1.4" - infer-owner: "npm:^1.0.4" - lru-cache: "npm:^6.0.0" - minipass: "npm:^3.1.1" - minipass-collect: "npm:^1.0.2" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.2" - mkdirp: "npm:^1.0.3" - p-map: "npm:^4.0.0" - promise-inflight: "npm:^1.0.1" - rimraf: "npm:^3.0.2" - ssri: "npm:^8.0.1" - tar: "npm:^6.0.2" - unique-filename: "npm:^1.1.1" - checksum: 8c0/6065402bc3ac52b6812acadccfe10c460c1730a01ef558df9bc4e44c809eee8c0cc045092b74f43c8dfe7c428b051758a59934393d4f6036074eb03ba11aea71 - languageName: node - linkType: hard - -"cacache@npm:^15.2.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" - dependencies: - "@npmcli/fs": "npm:^1.0.0" - "@npmcli/move-file": "npm:^1.0.1" - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - glob: "npm:^7.1.4" - infer-owner: "npm:^1.0.4" - lru-cache: "npm:^6.0.0" - minipass: "npm:^3.1.1" - minipass-collect: "npm:^1.0.2" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.2" - mkdirp: "npm:^1.0.3" - p-map: "npm:^4.0.0" - promise-inflight: "npm:^1.0.1" - rimraf: "npm:^3.0.2" - ssri: "npm:^8.0.1" - tar: "npm:^6.0.2" - unique-filename: "npm:^1.1.1" - checksum: 8c0/886fcc0acc4f6fd5cd142d373d8276267bc6d655d7c4ce60726fbbec10854de3395ee19bbf9e7e73308cdca9fdad0ad55060ff3bd16c6d4165c5b8d21515e1d8 - languageName: node - linkType: hard - -"cacache@npm:^16.1.0": - version: 16.1.3 - resolution: "cacache@npm:16.1.3" - dependencies: - "@npmcli/fs": "npm:^2.1.0" - "@npmcli/move-file": "npm:^2.0.0" - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.1.0" - glob: "npm:^8.0.1" - infer-owner: "npm:^1.0.4" - lru-cache: "npm:^7.7.1" - minipass: "npm:^3.1.6" - minipass-collect: "npm:^1.0.2" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - mkdirp: "npm:^1.0.4" - p-map: "npm:^4.0.0" - promise-inflight: "npm:^1.0.1" - rimraf: "npm:^3.0.2" - ssri: "npm:^9.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^2.0.0" - checksum: 8c0/cdf6836e1c457d2a5616abcaf5d8240c0346b1f5bd6fdb8866b9d84b6dff0b54e973226dc11e0d099f35394213d24860d1989c8358d2a41b39eb912b3000e749 - languageName: node - linkType: hard - -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: "npm:^1.0.0" - component-emitter: "npm:^1.2.1" - get-value: "npm:^2.0.6" - has-value: "npm:^1.0.0" - isobject: "npm:^3.0.1" - set-value: "npm:^2.0.0" - to-object-path: "npm:^0.3.0" - union-value: "npm:^1.0.0" - unset-value: "npm:^1.0.0" - checksum: 8c0/a7142e25c73f767fa520957dcd179b900b86eac63b8cfeaa3b2a35e18c9ca5968aa4e2d2bed7a3e7efd10f13be404344cfab3a4156217e71f9bdb95940bb9c8c - languageName: node - linkType: hard - -"cacheable-lookup@npm:^5.0.3": - version: 5.0.4 - resolution: "cacheable-lookup@npm:5.0.4" - checksum: a6547fb4954b318aa831cbdd2f7b376824bc784fb1fa67610e4147099e3074726072d9af89f12efb69121415a0e1f2918a8ddd4aafcbcf4e91fbeef4a59cd42c - languageName: node - linkType: hard - -"cacheable-request@npm:^6.0.0": - version: 6.1.0 - resolution: "cacheable-request@npm:6.1.0" - dependencies: - clone-response: "npm:^1.0.2" - get-stream: "npm:^5.1.0" - http-cache-semantics: "npm:^4.0.0" - keyv: "npm:^3.0.0" - lowercase-keys: "npm:^2.0.0" - normalize-url: "npm:^4.1.0" - responselike: "npm:^1.0.2" - checksum: 8c0/e92f2b2078c014ba097647ab4ff6a6149dc2974a65670ee97ec593ec9f4148ecc988e86b9fcd8ebf7fe255774a53d5dc3db6b01065d44f09a7452c7a7d8e4844 - languageName: node - linkType: hard - -"cacheable-request@npm:^7.0.2": - version: 7.0.4 - resolution: "cacheable-request@npm:7.0.4" - dependencies: - clone-response: "npm:^1.0.2" - get-stream: "npm:^5.1.0" - http-cache-semantics: "npm:^4.0.0" - keyv: "npm:^4.0.0" - lowercase-keys: "npm:^2.0.0" - normalize-url: "npm:^6.0.1" - responselike: "npm:^2.0.0" - checksum: 0834a7d17ae71a177bc34eab06de112a43f9b5ad05ebe929bec983d890a7d9f2bc5f1aa8bb67ea2b65e07a3bc74bea35fa62dd36dbac52876afe36fdcf83da41 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.0.2" - checksum: 8c0/74ba3f31e715456e22e451d8d098779b861eba3c7cac0d9b510049aced70d75c231ba05071f97e1812c98e34e2bee734c0c6126653e0088c2d9819ca047f4073 - languageName: node - linkType: hard - -"call-bind@npm:^1.0.4, call-bind@npm:^1.0.5": - version: 1.0.5 - resolution: "call-bind@npm:1.0.5" - dependencies: - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.1" - set-function-length: "npm:^1.1.1" - checksum: a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10 - languageName: node - linkType: hard - -"call-me-maybe@npm:^1.0.1": - version: 1.0.1 - resolution: "call-me-maybe@npm:1.0.1" - checksum: 8c0/551991433adc2d257d24a5dea5049addc75b182cc7f64860d41bb5ec2c2f1f72efcd6f34be475e70bbb62fde9f9ba380c1a52c922daf2b4111f25fee2509550f - languageName: node - linkType: hard - -"caller-callsite@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-callsite@npm:2.0.0" - dependencies: - callsites: "npm:^2.0.0" - checksum: 8c0/a00ca91280e10ee2321de21dda6c168e427df7a63aeaca027ea45e3e466ac5e1a5054199f6547ba1d5a513d3b6b5933457266daaa47f8857fb532a343ee6b5e1 - languageName: node - linkType: hard - -"caller-path@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-path@npm:2.0.0" - dependencies: - caller-callsite: "npm:^2.0.0" - checksum: 8c0/029b5b2c557d831216305c3218e9ff30fa668be31d58dd08088f74c8eabc8362c303e0908b3a93abb25ba10e3a5bfc9cff5eb7fab6ab9cf820e3b160ccb67581 - languageName: node - linkType: hard - -"callsites@npm:^2.0.0": - version: 2.0.0 - resolution: "callsites@npm:2.0.0" - checksum: 8c0/13bff4fee946e6020b37e76284e95e24aa239c9e34ac4f3451e4c5330fca6f2f962e1d1ab69e4da7940e1fce135107a2b2b98c01d62ea33144350fc89dc5494e - languageName: node - linkType: hard - -"callsites@npm:^3.0.0": - version: 3.1.0 - resolution: "callsites@npm:3.1.0" - checksum: 8c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 - languageName: node - linkType: hard - -"camel-case@npm:4.1.2, camel-case@npm:^4.1.1, camel-case@npm:^4.1.2": - version: 4.1.2 - resolution: "camel-case@npm:4.1.2" - dependencies: - pascal-case: "npm:^3.1.2" - tslib: "npm:^2.0.3" - checksum: 8c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a - languageName: node - linkType: hard - -"camelcase-css@npm:2.0.1, camelcase-css@npm:^2.0.1": - version: 2.0.1 - resolution: "camelcase-css@npm:2.0.1" - checksum: 8c0/1a1a3137e8a781e6cbeaeab75634c60ffd8e27850de410c162cce222ea331cd1ba5364e8fb21c95e5ca76f52ac34b81a090925ca00a87221355746d049c6e273 - languageName: node - linkType: hard - -"camelcase@npm:5.0.0": - version: 5.0.0 - resolution: "camelcase@npm:5.0.0" - checksum: 8c0/515f1ce911d65949708d9e179f1a40af71eb7de668230a0c85961a35590f7da39af79cfb48d834883dbcc7995bdb7dd6bae8027b101e37a10d95337ec8732800 - languageName: node - linkType: hard - -"camelcase@npm:6.3.0": - version: 6.3.0 - resolution: "camelcase@npm:6.3.0" - checksum: 8c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 - languageName: node - linkType: hard - -"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": - version: 5.3.1 - resolution: "camelcase@npm:5.3.1" - checksum: 8c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 - languageName: node - linkType: hard - -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0": - version: 6.2.0 - resolution: "camelcase@npm:6.2.0" - checksum: 8c0/d9f403a6153394c5bc68ec9c2672df1d04f00a7847708be12641b483b936cbfaaf14d891f92bb0026184e03923be24acd15a0476761e1286eec484d68f615fe5 - languageName: node - linkType: hard - -"camelize@npm:^1.0.0": - version: 1.0.0 - resolution: "camelize@npm:1.0.0" - checksum: 8c0/b2cf60c12d002f6f5bff1dc56dedd9fa98767af2090c9699a0cd4da48d02f0b3939d09722028145555528b82da3140a117f92f1f9ecc7928af4fb3bfe86fec35 - languageName: node - linkType: hard - -"caniuse-api@npm:^3.0.0": - version: 3.0.0 - resolution: "caniuse-api@npm:3.0.0" - dependencies: - browserslist: "npm:^4.0.0" - caniuse-lite: "npm:^1.0.0" - lodash.memoize: "npm:^4.1.2" - lodash.uniq: "npm:^4.5.0" - checksum: 8c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001125, caniuse-lite@npm:^1.0.30001219": - version: 1.0.30001230 - resolution: "caniuse-lite@npm:1.0.30001230" - checksum: 8c0/51dbd06d98dcce0ce1c17f108e83e8a9143535f2ad9058fcc8f22d97682e2167d579fc4d8ddd6021acaa275911de1755119336449d8188be0a29a3dc7d4d1a3e - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001286": - version: 1.0.30001311 - resolution: "caniuse-lite@npm:1.0.30001311" - checksum: 8c0/791fd3d99b4595256f96dccc362db1ffd82be30a12fcb60e2cf322bdb9c3b2aa6f6886183a69ba85786f08700c2011e6377f87eaa978a2bbd9172ada420456c4 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001449": - version: 1.0.30001450 - resolution: "caniuse-lite@npm:1.0.30001450" - checksum: 8c0/919d9a5b36507ac6064d53b52e985ea00c65c6e3b4d54192a11197c9ec4243e22ee151c07dfb7563a02366e035f159a1f986f2bdd1baa7ab53f2f6211e492c20 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001517": - version: 1.0.30001524 - resolution: "caniuse-lite@npm:1.0.30001524" - checksum: 8c0/a5c681736bf8ecb54e3d40341fdffc4c694f4d00cf73d9a719683e969546a4fef4b6525b8878856ec37c685a79df7cebb87ccc289272eaadbccbbb1e0213e332 - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001565": - version: 1.0.30001572 - resolution: "caniuse-lite@npm:1.0.30001572" - checksum: 7d02570fa576b158d96739f2c65ea3ad22e90a8b028a343902de1f13b7db8512144870f1d29ec5e9ae7189d96158d9643871b6e902e6680a06b27a9afe556da2 - languageName: node - linkType: hard - -"capital-case@npm:^1.0.4": - version: 1.0.4 - resolution: "capital-case@npm:1.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - upper-case-first: "npm:^2.0.2" - checksum: 8c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 - languageName: node - linkType: hard - -"capture-exit@npm:^2.0.0": - version: 2.0.0 - resolution: "capture-exit@npm:2.0.0" - dependencies: - rsvp: "npm:^4.8.4" - checksum: 8c0/d68df1e15937809501644a49c0267ef323b5b6a0cae5c08bbdceafd718aa08241844798bfdd762cf6756bc2becd83122aabc25b5222192f18093113bec670617 - languageName: node - linkType: hard - -"case-sensitive-paths-webpack-plugin@npm:^2.3.0": - version: 2.4.0 - resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" - checksum: 8c0/310dab619b661a7fa44ed773870be6d6d7373faff6953ad92720f9553e2579e46dda5b9a79eae6d25ff3733cc15aa466b96e5811af16213f23c115aa220b4ab4 - languageName: node - linkType: hard - -"ccount@npm:^1.0.0": - version: 1.1.0 - resolution: "ccount@npm:1.1.0" - checksum: 8c0/9ccfddfa45c8d6d01411b8e30d2ce03c55c33f32a69bdb84ee44d743427cdb01b03159954917023d0dac960c34973ba42626bb9fa883491ebb663a53a6713d43 - languageName: node - linkType: hard - -"chalk@npm:2.4.2, chalk@npm:^2.0.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: "npm:^3.2.1" - escape-string-regexp: "npm:^1.0.5" - supports-color: "npm:^5.3.0" - checksum: 8c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 - languageName: node - linkType: hard - -"chalk@npm:4.1.1, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1": - version: 4.1.1 - resolution: "chalk@npm:4.1.1" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 8c0/3866c8b96eca56b5ff4e1e9a243b65e4f77694a486a2cc49316d54af9dae463d2c52bd99b9f0b7a924b87faf3a16dd6ed12d3a7442ac385b608f285e54696c18 - languageName: node - linkType: hard - -"chalk@npm:4.1.2, chalk@npm:^4.1.2": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 8c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 - languageName: node - linkType: hard - -"chalk@npm:^1.0.0, chalk@npm:^1.1.3": - version: 1.1.3 - resolution: "chalk@npm:1.1.3" - dependencies: - ansi-styles: "npm:^2.2.1" - escape-string-regexp: "npm:^1.0.2" - has-ansi: "npm:^2.0.0" - strip-ansi: "npm:^3.0.0" - supports-color: "npm:^2.0.0" - checksum: 8c0/28c3e399ec286bb3a7111fd4225ebedb0d7b813aef38a37bca7c498d032459c265ef43404201d5fbb8d888d29090899c95335b4c0cda13e8b126ff15c541cef8 - languageName: node - linkType: hard - -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: "npm:^4.1.0" - supports-color: "npm:^7.1.0" - checksum: 8c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 - languageName: node - linkType: hard - -"chalk@npm:^5.2.0": - version: 5.2.0 - resolution: "chalk@npm:5.2.0" - checksum: 8c0/8a519b35c239f96e041b7f1ed8fdd79d3ca2332a8366cb957378b8a1b8a4cdfb740d19628e8bf74654d4c0917aa10cf39c20752e177a1304eac29a1168a740e9 - languageName: node - linkType: hard - -"change-case-all@npm:1.0.14": - version: 1.0.14 - resolution: "change-case-all@npm:1.0.14" - dependencies: - change-case: "npm:^4.1.2" - is-lower-case: "npm:^2.0.2" - is-upper-case: "npm:^2.0.2" - lower-case: "npm:^2.0.2" - lower-case-first: "npm:^2.0.2" - sponge-case: "npm:^1.0.1" - swap-case: "npm:^2.0.2" - title-case: "npm:^3.0.3" - upper-case: "npm:^2.0.2" - upper-case-first: "npm:^2.0.2" - checksum: 8c0/c2d5fda011b2430f9e503afdca5d8ed48b0e8ee96e38f5530193f8a503317c4a82e6b721c5ea8ef852a2534bdd3d1af25d76e0604b820cd3bc136cf9c179803e - languageName: node - linkType: hard - -"change-case-all@npm:1.0.15": - version: 1.0.15 - resolution: "change-case-all@npm:1.0.15" - dependencies: - change-case: "npm:^4.1.2" - is-lower-case: "npm:^2.0.2" - is-upper-case: "npm:^2.0.2" - lower-case: "npm:^2.0.2" - lower-case-first: "npm:^2.0.2" - sponge-case: "npm:^1.0.1" - swap-case: "npm:^2.0.2" - title-case: "npm:^3.0.3" - upper-case: "npm:^2.0.2" - upper-case-first: "npm:^2.0.2" - checksum: 8c0/0de81690de866aa8c477f8b5b08c6f9dbce4a078cffa5f014858f49fda548a9a6524b61f62f2940acce9f1fdcfeef3a7124090684e86e731f55d26c22713e2d7 - languageName: node - linkType: hard - -"change-case@npm:^4.1.2": - version: 4.1.2 - resolution: "change-case@npm:4.1.2" - dependencies: - camel-case: "npm:^4.1.2" - capital-case: "npm:^1.0.4" - constant-case: "npm:^3.0.4" - dot-case: "npm:^3.0.4" - header-case: "npm:^2.0.4" - no-case: "npm:^3.0.4" - param-case: "npm:^3.0.4" - pascal-case: "npm:^3.1.2" - path-case: "npm:^3.0.4" - sentence-case: "npm:^3.0.4" - snake-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 - languageName: node - linkType: hard - -"char-regex@npm:^1.0.2": - version: 1.0.2 - resolution: "char-regex@npm:1.0.2" - checksum: 8c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e - languageName: node - linkType: hard - -"char-regex@npm:^2.0.0": - version: 2.0.1 - resolution: "char-regex@npm:2.0.1" - checksum: 8c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 - languageName: node - linkType: hard - -"character-entities-legacy@npm:^1.0.0": - version: 1.1.4 - resolution: "character-entities-legacy@npm:1.1.4" - checksum: 8c0/ea4ca9c29887335eed86d78fc67a640168342b1274da84c097abb0575a253d1265281a5052f9a863979e952bcc267b4ecaaf4fe233a7e1e0d8a47806c65b96c7 - languageName: node - linkType: hard - -"character-entities@npm:^1.0.0": - version: 1.2.4 - resolution: "character-entities@npm:1.2.4" - checksum: 8c0/ad015c3d7163563b8a0ee1f587fb0ef305ef344e9fd937f79ca51cccc233786a01d591d989d5bf7b2e66b528ac9efba47f3b1897358324e69932f6d4b25adfe1 - languageName: node - linkType: hard - -"character-reference-invalid@npm:^1.0.0": - version: 1.1.4 - resolution: "character-reference-invalid@npm:1.1.4" - checksum: 8c0/29f05081c5817bd1e975b0bf61e77b60a40f62ad371d0f0ce0fdb48ab922278bc744d1fbe33771dced751887a8403f265ff634542675c8d7375f6ff4811efd0e - languageName: node - linkType: hard - -"charcodes@npm:^0.2.0": - version: 0.2.0 - resolution: "charcodes@npm:0.2.0" - checksum: 8c0/8fb1caa03503ae97f26cea4317e667be5eca4c74d7d822ffe87e42863309ea74deab830a3f718f131c0038e2dde9511ff75041fc79758fb1452e4525cced3dae - languageName: node - linkType: hard - -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 8c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d - languageName: node - linkType: hard - -"check-node-version@npm:4.2.1": - version: 4.2.1 - resolution: "check-node-version@npm:4.2.1" - dependencies: - chalk: "npm:^3.0.0" - map-values: "npm:^1.0.1" - minimist: "npm:^1.2.0" - object-filter: "npm:^1.0.2" - run-parallel: "npm:^1.1.4" - semver: "npm:^6.3.0" - bin: - check-node-version: bin.js - checksum: 8c0/7778e04d240710c64d952181d45c1efe21c2a032da529d8eafced5811652137bd24d53b0a850fac27cb75de8041f40fa268df66e8f57fbeeff82813215eefab7 - languageName: node - linkType: hard - -"check-types@npm:^8.0.3": - version: 8.0.3 - resolution: "check-types@npm:8.0.3" - checksum: 8c0/f55dd9a1cdff7f1a663feb034f62209b7697e94c6192c7cfa15d5e84e8dd860b863ab9ac435acc161e29d5f1b7136f6f94d99e02d87f60457199d478822b3903 - languageName: node - linkType: hard - -"checkpoint-client@npm:1.1.20": - version: 1.1.20 - resolution: "checkpoint-client@npm:1.1.20" - dependencies: - ci-info: "npm:3.1.1" - env-paths: "npm:2.2.1" - fast-write-atomic: "npm:0.2.1" - make-dir: "npm:3.1.0" - ms: "npm:2.1.3" - node-fetch: "npm:2.6.1" - uuid: "npm:8.3.2" - checksum: 8c0/5298978e3ae97c7030eee83fc45fc77287bae5e0095134c1921d2a6b2a11a6b03dd54f98a0caddc7e48be38c68deb04c1e3ae5d156f369b5a82200d11d3c4da5 - languageName: node - linkType: hard - -"cheerio-select@npm:^2.1.0": - version: 2.1.0 - resolution: "cheerio-select@npm:2.1.0" - dependencies: - boolbase: "npm:^1.0.0" - css-select: "npm:^5.1.0" - css-what: "npm:^6.1.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - checksum: 8c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 - languageName: node - linkType: hard - -"cheerio@npm:1.0.0-rc.12": - version: 1.0.0-rc.12 - resolution: "cheerio@npm:1.0.0-rc.12" - dependencies: - cheerio-select: "npm:^2.1.0" - dom-serializer: "npm:^2.0.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - htmlparser2: "npm:^8.0.1" - parse5: "npm:^7.0.0" - parse5-htmlparser2-tree-adapter: "npm:^7.0.0" - checksum: 8c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc - languageName: node - linkType: hard - -"chevrotain@npm:^10.4.2": - version: 10.5.0 - resolution: "chevrotain@npm:10.5.0" - dependencies: - "@chevrotain/cst-dts-gen": "npm:10.5.0" - "@chevrotain/gast": "npm:10.5.0" - "@chevrotain/types": "npm:10.5.0" - "@chevrotain/utils": "npm:10.5.0" - lodash: "npm:4.17.21" - regexp-to-ast: "npm:0.5.0" - checksum: 8c0/a67a8b9f326231e6e4bf42e0c82d5f6e0b69bcfe4266e406d644ee58d22f7cba63deb034973813d0f5761026328cd4928250136cde940e3ef238a1f020c7307a - languageName: node - linkType: hard - -"chokidar@npm:3.5.1, chokidar@npm:^3.4.0, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.4.3": - version: 3.5.1 - resolution: "chokidar@npm:3.5.1" - dependencies: - anymatch: "npm:~3.1.1" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.1" - glob-parent: "npm:~5.1.0" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.5.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 8c0/894d2fdeeef6a0bc61993a20b864e29e9296f2308628b8b2edf1bef2d59ab11f21938eebbbcbf581f15d16d3e030c08860d2fb035f7b9f3baebac57049a37959 - languageName: node - linkType: hard - -"chokidar@npm:3.5.3, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" - dependencies: - anymatch: "npm:~3.1.2" - braces: "npm:~3.0.2" - fsevents: "npm:~2.3.2" - glob-parent: "npm:~5.1.2" - is-binary-path: "npm:~2.1.0" - is-glob: "npm:~4.0.1" - normalize-path: "npm:~3.0.0" - readdirp: "npm:~3.6.0" - dependenciesMeta: - fsevents: - optional: true - checksum: 8c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 - languageName: node - linkType: hard - -"chokidar@npm:^2.1.8": - version: 2.1.8 - resolution: "chokidar@npm:2.1.8" - dependencies: - anymatch: "npm:^2.0.0" - async-each: "npm:^1.0.1" - braces: "npm:^2.3.2" - fsevents: "npm:^1.2.7" - glob-parent: "npm:^3.1.0" - inherits: "npm:^2.0.3" - is-binary-path: "npm:^1.0.0" - is-glob: "npm:^4.0.0" - normalize-path: "npm:^3.0.0" - path-is-absolute: "npm:^1.0.0" - readdirp: "npm:^2.2.1" - upath: "npm:^1.1.1" - dependenciesMeta: - fsevents: - optional: true - checksum: 8c0/5631cc00080224f9482cf5418dcbea111aec02fa8d81a8cfe37e47b9cf36089e071de52d503647e3a821a01426a40adc926ba899f657af86a51b8f8d4eef12a7 - languageName: node - linkType: hard - -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 8c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db - languageName: node - linkType: hard - -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 8c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 - languageName: node - linkType: hard - -"chrome-trace-event@npm:^1.0.2": - version: 1.0.3 - resolution: "chrome-trace-event@npm:1.0.3" - checksum: 8c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c - languageName: node - linkType: hard - -"ci-info@npm:3.1.1": - version: 3.1.1 - resolution: "ci-info@npm:3.1.1" - checksum: 8c0/1fefc3c6fb49c72b1fe5c056113ba1cc181e803e6a52956afa2e63c25ff1e66de873259a304e8ded1e5e2810e7e4fb8ece2b489b8665e545e78e1cdd818f7cba - languageName: node - linkType: hard - -"ci-info@npm:4.0.0": - version: 4.0.0 - resolution: "ci-info@npm:4.0.0" - checksum: ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 - languageName: node - linkType: hard - -"ci-info@npm:^2.0.0": - version: 2.0.0 - resolution: "ci-info@npm:2.0.0" - checksum: 8c0/8c5fa3830a2bcee2b53c2e5018226f0141db9ec9f7b1e27a5c57db5512332cde8a0beb769bcbaf0d8775a78afbf2bb841928feca4ea6219638a5b088f9884b46 - languageName: node - linkType: hard - -"ci-info@npm:^3.1.1": - version: 3.2.0 - resolution: "ci-info@npm:3.2.0" - checksum: 8c0/9479fb1d835c277b388f02b6f46f1a9355c8dbc07b33b896552949ed0d4708b317bf7221ef9a3c86e975549982f76d3b84b2c7c99a8b26220218c2f3a9b657d4 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.3.0 - resolution: "ci-info@npm:3.3.0" - checksum: 8c0/f23ec1b3c4717abb5fb9934fe0ab6db621cf767abd3832f07af2803e4809d21908d8b87321de4b79861dfe8105c08dba1803a9fb6346d5586b0c57db2bfbce3b - languageName: node - linkType: hard - -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 8c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^0.6.0": - version: 0.6.0 - resolution: "cjs-module-lexer@npm:0.6.0" - checksum: 8c0/a4fe091f5551e8580d74c0afbf767893ea0ace49f8e33eecb54ae8e325661f31d44752171b4ec52d33aca90c4d854114afe315aa6021780a3c49a0f4a67924b5 - languageName: node - linkType: hard - -"cjs-module-lexer@npm:^1.0.0": - version: 1.2.2 - resolution: "cjs-module-lexer@npm:1.2.2" - checksum: 8c0/83330e1feda2e3699b8c305bfa8f841b41822049393f5eefeb574e60bde556e2a251ee9b7971cde0cb47ac4f7823bf4ab4a6005b8471f86ad9f5509eefb66cbd - languageName: node - linkType: hard - -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: "npm:^3.1.0" - define-property: "npm:^0.2.5" - isobject: "npm:^3.0.0" - static-extend: "npm:^0.1.1" - checksum: 8c0/d44f4afc7a3e48dba4c2d3fada5f781a1adeeff371b875c3b578bc33815c6c29d5d06483c2abfd43a32d35b104b27b67bfa39c2e8a422fa858068bd756cfbd42 - languageName: node - linkType: hard - -"clean-css@npm:^4.2.3": - version: 4.2.3 - resolution: "clean-css@npm:4.2.3" - dependencies: - source-map: "npm:~0.6.0" - checksum: 8c0/738eb574a1780663bad95d1772a6b97a0140b49e8c77850082f324112eb2d528737393075eede14be6c9797d15f09dd64657772f0d4e6990c9c887150648539f - languageName: node - linkType: hard - -"clean-css@npm:^5.2.2": - version: 5.3.2 - resolution: "clean-css@npm:5.3.2" - dependencies: - source-map: "npm:~0.6.0" - checksum: 8c0/315e0e81306524bd2c1905fa6823bf7658be40799b78f446e5e6922808718d2b80266fb3e96842a06176fa683bc2c1a0d2827b08d154e2f9cf136d7bda909d33 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 8c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 - languageName: node - linkType: hard - -"cli-boxes@npm:^2.2.1": - version: 2.2.1 - resolution: "cli-boxes@npm:2.2.1" - checksum: 8c0/6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 - languageName: node - linkType: hard - -"cli-cursor@npm:^2.0.0, cli-cursor@npm:^2.1.0": - version: 2.1.0 - resolution: "cli-cursor@npm:2.1.0" - dependencies: - restore-cursor: "npm:^2.0.0" - checksum: 8c0/09ee6d8b5b818d840bf80ec9561eaf696672197d3a02a7daee2def96d5f52ce6e0bbe7afca754ccf14f04830b5a1b4556273e983507d5029f95bba3016618eda - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: "npm:^3.1.0" - checksum: 8c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 - languageName: node - linkType: hard - -"cli-cursor@npm:^4.0.0": - version: 4.0.0 - resolution: "cli-cursor@npm:4.0.0" - dependencies: - restore-cursor: "npm:^4.0.0" - checksum: 8c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c - languageName: node - linkType: hard - -"cli-spinners@npm:^2.5.0": - version: 2.7.0 - resolution: "cli-spinners@npm:2.7.0" - checksum: 8c0/5c781ace5c8f304ae4d138837f19cf88f03a97de3c3e388f9d1d6434146f06f6ce2a161d6237b3bb86448a05fbcbb20084f3fea96077e42a655b273e39c6f08d - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.0": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": "npm:1.5.0" - string-width: "npm:^4.2.0" - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 8c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c - languageName: node - linkType: hard - -"cli-table3@npm:^0.6.1": - version: 0.6.1 - resolution: "cli-table3@npm:0.6.1" - dependencies: - colors: "npm:1.4.0" - string-width: "npm:^4.2.0" - dependenciesMeta: - colors: - optional: true - checksum: 8c0/19ab1bb14bd11b3ca3557ce5ad37ef73e489ea814b99f803171e6ac0a3f2ae5fffb6dbc8864e33cdcf2a3644ebc31b488b8e624fd74af44a1c77cc365c143db4 - languageName: node - linkType: hard - -"cli-truncate@npm:^0.2.1": - version: 0.2.1 - resolution: "cli-truncate@npm:0.2.1" - dependencies: - slice-ansi: "npm:0.0.4" - string-width: "npm:^1.0.1" - checksum: 8c0/c6caa5e2b70d841c42f4a2270d6fc7129df915f8911e4afa90c79231ccc857cd819a2c90e0707fde04e51ce56b4d71646b843f6cbaff4f7cdcb3b91ed51f6e89 - languageName: node - linkType: hard - -"cli-truncate@npm:^2.1.0": - version: 2.1.0 - resolution: "cli-truncate@npm:2.1.0" - dependencies: - slice-ansi: "npm:^3.0.0" - string-width: "npm:^4.2.0" - checksum: 8c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 - languageName: node - linkType: hard - -"cli-truncate@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-truncate@npm:3.1.0" - dependencies: - slice-ansi: "npm:^5.0.0" - string-width: "npm:^5.0.0" - checksum: 8c0/a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c - languageName: node - linkType: hard - -"cli-width@npm:^3.0.0": - version: 3.0.0 - resolution: "cli-width@npm:3.0.0" - checksum: 8c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a - languageName: node - linkType: hard - -"client-only@npm:^0.0.1": - version: 0.0.1 - resolution: "client-only@npm:0.0.1" - checksum: 9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358 - languageName: node - linkType: hard - -"clipboard@npm:^2.0.0": - version: 2.0.8 - resolution: "clipboard@npm:2.0.8" - dependencies: - good-listener: "npm:^1.2.2" - select: "npm:^1.1.2" - tiny-emitter: "npm:^2.0.0" - checksum: 8c0/a2c50b28beeb52976cc2e48da30a4a1bc154792b1b08a83e148f741f3fa35141249582ab9ce6b224fbef88c617076557fe9e8fe3078301d625086c88e7fcf4eb - languageName: node - linkType: hard - -"cliui@npm:^5.0.0": - version: 5.0.0 - resolution: "cliui@npm:5.0.0" - dependencies: - string-width: "npm:^3.1.0" - strip-ansi: "npm:^5.2.0" - wrap-ansi: "npm:^5.1.0" - checksum: 8c0/76142bf306965850a71efd10c9755bd7f447c7c20dd652e1c1ce27d987f862a3facb3cceb2909cef6f0cb363646ee7a1735e3dfdd49f29ed16d733d33e15e2f8 - languageName: node - linkType: hard - -"cliui@npm:^6.0.0": - version: 6.0.0 - resolution: "cliui@npm:6.0.0" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - wrap-ansi: "npm:^6.2.0" - checksum: 8c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 - languageName: node - linkType: hard - -"cliui@npm:^7.0.2": - version: 7.0.4 - resolution: "cliui@npm:7.0.4" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - wrap-ansi: "npm:^7.0.0" - checksum: 8c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 - languageName: node - linkType: hard - -"cliui@npm:^8.0.1": - version: 8.0.1 - resolution: "cliui@npm:8.0.1" - dependencies: - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.1" - wrap-ansi: "npm:^7.0.0" - checksum: 8c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 - languageName: node - linkType: hard - -"clone-deep@npm:^4.0.1": - version: 4.0.1 - resolution: "clone-deep@npm:4.0.1" - dependencies: - is-plain-object: "npm:^2.0.4" - kind-of: "npm:^6.0.2" - shallow-clone: "npm:^3.0.0" - checksum: 8c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 - languageName: node - linkType: hard - -"clone-response@npm:^1.0.2": - version: 1.0.2 - resolution: "clone-response@npm:1.0.2" - dependencies: - mimic-response: "npm:^1.0.0" - checksum: 8c0/96f3527ef86d0c322e0a5188d929ab78ddbc3238d47ccbb00f8abb02b02e4ef70339646ec73d657383ffbdb1f0cfef6a937062d4f701ca6f84cee7a37114007f - languageName: node - linkType: hard - -"clone@npm:^1.0.2": - version: 1.0.4 - resolution: "clone@npm:1.0.4" - checksum: 8c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b - languageName: node - linkType: hard - -"clsx@npm:^1.1.1": - version: 1.1.1 - resolution: "clsx@npm:1.1.1" - checksum: 8c0/5c34e1d5623e3dce0dbf22eedd4f3cc7cd0dee6b1b1ef3ad49d042c9d86372a1dc7788c2ca3213ec08e65ad0e91572ae7cb77183a478c9977bd5327e8f43ffe5 - languageName: node - linkType: hard - -"clsx@npm:^1.2.1": - version: 1.2.1 - resolution: "clsx@npm:1.2.1" - checksum: 34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 - languageName: node - linkType: hard - -"clsx@npm:^2.0.0": - version: 2.1.0 - resolution: "clsx@npm:2.1.0" - checksum: c09c00ad14f638366ca814097e6cab533dfa1972a358da5b557be487168acbb25b4c1395e89ffa842a8a61ba87a462d2b4885bc9d4f8410b598f3cb339599cdb - languageName: node - linkType: hard - -"cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0": - version: 1.1.2 - resolution: "cluster-key-slot@npm:1.1.2" - checksum: 8c0/d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3 - languageName: node - linkType: hard - -"co@npm:^4.6.0": - version: 4.6.0 - resolution: "co@npm:4.6.0" - checksum: 8c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 - languageName: node - linkType: hard - -"coa@npm:^2.0.2": - version: 2.0.2 - resolution: "coa@npm:2.0.2" - dependencies: - "@types/q": "npm:^1.5.1" - chalk: "npm:^2.4.1" - q: "npm:^1.1.2" - checksum: 8c0/0264392e3b691a8551e619889f3e67558b4f755eeb09d67625032a25c37634731e778fabbd9d14df6477d6ae770e30ea9405d18e515b2ec492b0eb90bb8d7f43 - languageName: node - linkType: hard - -"code-block-writer@npm:^10.1.1": - version: 10.1.1 - resolution: "code-block-writer@npm:10.1.1" - checksum: 8c0/8573816797ac20256b22d0c9c72743f6dcbcef2cb7e08e7761b3f7a3f2cdd3abe1c66ed9dda123f7c1e5e3746a5528fe3c09473758f1d1555fe4c69add334b28 - languageName: node - linkType: hard - -"code-block-writer@npm:^11.0.0": - version: 11.0.3 - resolution: "code-block-writer@npm:11.0.3" - checksum: 8c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 - languageName: node - linkType: hard - -"code-block-writer@npm:^12.0.0": - version: 12.0.0 - resolution: "code-block-writer@npm:12.0.0" - checksum: 8c0/ced73cdc466bff968bba9e8e32340d88420d25a229b9269f7425a10a7c2c9a12ca702dcb601b2462b96472d354f021cf66e552179fcbe30c8f7ecd0173c5fa07 - languageName: node - linkType: hard - -"code-point-at@npm:^1.0.0": - version: 1.1.0 - resolution: "code-point-at@npm:1.1.0" - checksum: 8c0/33f6b234084e46e6e369b6f0b07949392651b4dde70fc6a592a8d3dafa08d5bb32e3981a02f31f6fc323a26bc03a4c063a9d56834848695bda7611c2417ea2e6 - languageName: node - linkType: hard - -"codemirror-graphql@npm:^2.0.10": - version: 2.0.10 - resolution: "codemirror-graphql@npm:2.0.10" - dependencies: - "@types/codemirror": "npm:^0.0.90" - graphql-language-service: "npm:5.2.0" - peerDependencies: - "@codemirror/language": 6.0.0 - codemirror: ^5.65.3 - graphql: ^15.5.0 || ^16.0.0 - checksum: 77fc5a83f5d29ef14e896e397b280a9716c0206cfe4d9904266a1d658ba715231d99b1704039e4eb108878851f8c7fd158fec38a626735301c5f7ee51aa9eb15 - languageName: node - linkType: hard - -"codemirror@npm:^5.65.3": - version: 5.65.16 - resolution: "codemirror@npm:5.65.16" - checksum: 72ab3aae5ee0511b33348761da43585a0368f2845016f1fe177e1aa9bf3d7beee7f98550ffd82908726bf731df2376dc371e383bf4c0c91a66e3f18d0b7c4f3b - languageName: node - linkType: hard - -"collapse-white-space@npm:^1.0.2": - version: 1.0.6 - resolution: "collapse-white-space@npm:1.0.6" - checksum: 8c0/7fd27a883eee1ddd5e39c53fbcd4a42dfe2a65dfac70e2c442d20827f5258202b360a12e99b4f0128c3addd2d64796bb2eb1bb8a3b75d5a2e9c061adb549c36b - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.1 - resolution: "collect-v8-coverage@npm:1.0.1" - checksum: 8c0/df8192811a773d10978fd25060124e4228d9a86bab40de3f18df5ce1a3730832351a52ba1c0e3915d5bd638298fc7bc9723760d25f534462746e269a6f0ac91c - languageName: node - linkType: hard - -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: "npm:^1.0.0" - object-visit: "npm:^1.0.0" - checksum: 8c0/add72a8d1c37cb90e53b1aaa2c31bf1989bfb733f0b02ce82c9fa6828c7a14358dba2e4f8e698c02f69e424aeccae1ffb39acdeaf872ade2f41369e84a2fcf8a - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0, color-convert@npm:^1.9.1": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: "npm:1.1.3" - checksum: 8c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: "npm:~1.1.4" - checksum: 8c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 8c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 - languageName: node - linkType: hard - -"color-name@npm:^1.0.0, color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: 8c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 - languageName: node - linkType: hard - -"color-string@npm:^1.5.4": - version: 1.5.5 - resolution: "color-string@npm:1.5.5" - dependencies: - color-name: "npm:^1.0.0" - simple-swizzle: "npm:^0.2.2" - checksum: 8c0/bd8c86fd859850f44f3f85881195c26e4adb86cc56670a312e3a606210a76bae3e968ed1c232fa124b480dfe51e546d8b17490ea34f13fdfe91816a79159d908 - languageName: node - linkType: hard - -"color-support@npm:^1.1.2, color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 8c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 - languageName: node - linkType: hard - -"color@npm:^3.0.0": - version: 3.1.3 - resolution: "color@npm:3.1.3" - dependencies: - color-convert: "npm:^1.9.1" - color-string: "npm:^1.5.4" - checksum: 8c0/dddbe51774b5c5675e2efcc3216419475364530ddcea09ee92fdebaaab3855e833d6644f98ea79a9d808b5aca31f5776d7a70c99eb8690cfba13287a7a1567c2 - languageName: node - linkType: hard - -"colord@npm:^2.9.1": - version: 2.9.3 - resolution: "colord@npm:2.9.3" - checksum: 8c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 - languageName: node - linkType: hard - -"colorette@npm:^1.2.2": - version: 1.2.2 - resolution: "colorette@npm:1.2.2" - checksum: 8c0/971b7dc0cfdb82df2266e54ce6c173bef0457be9ca8d6fc06a099efbe67dcddff17ccaae75020e4b8601cf48aea1f23afbf8a4be9fd501034da47bcdcbf42041 - languageName: node - linkType: hard - -"colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.16": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 8c0/2bcc9134095750fece6e88167011499b964b78bf0ea953469130ddb1dba3c8fe6c03debb0ae181e710e2be10900d117460f980483a7df4ba4a1bac3b182ecb64 - languageName: node - linkType: hard - -"colorette@npm:^2.0.20": - version: 2.0.20 - resolution: "colorette@npm:2.0.20" - checksum: 8c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 - languageName: node - linkType: hard - -"colors@npm:1.4.0, colors@npm:^1.4.0": - version: 1.4.0 - resolution: "colors@npm:1.4.0" - checksum: 8c0/9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.8": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: "npm:~1.0.0" - checksum: 8c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 - languageName: node - linkType: hard - -"comma-separated-tokens@npm:^1.0.0": - version: 1.0.8 - resolution: "comma-separated-tokens@npm:1.0.8" - checksum: 8c0/c3bcfeaa6d50313528a006a40bcc0f9576086665c9b48d4b3a76ddd63e7d6174734386c98be1881cbf6ecfc25e1db61cd775a7b896d2ea7a65de28f83a0f9b17 - languageName: node - linkType: hard - -"commander@npm:^10.0.1": - version: 10.0.1 - resolution: "commander@npm:10.0.1" - checksum: 8c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 - languageName: node - linkType: hard - -"commander@npm:^2.18.0, commander@npm:^2.19.0, commander@npm:^2.20.0, commander@npm:^2.20.3": - version: 2.20.3 - resolution: "commander@npm:2.20.3" - checksum: 8c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 - languageName: node - linkType: hard - -"commander@npm:^3.0.2": - version: 3.0.2 - resolution: "commander@npm:3.0.2" - checksum: 8c0/8a279b4bacde68f03664086260ccb623122d2bdae6f380a41c9e06b646e830372c30a4b88261238550e0ad69d53f7af8883cb705d8237fdd22947e84913b149c - languageName: node - linkType: hard - -"commander@npm:^4.0.0, commander@npm:^4.0.1, commander@npm:^4.1.1": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: 8c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab - languageName: node - linkType: hard - -"commander@npm:^6.1.0, commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: 8c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea - languageName: node - linkType: hard - -"commander@npm:^7.1.0, commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 8c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a - languageName: node - linkType: hard - -"commander@npm:^8.3.0": - version: 8.3.0 - resolution: "commander@npm:8.3.0" - checksum: 8c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 - languageName: node - linkType: hard - -"common-path-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "common-path-prefix@npm:3.0.0" - checksum: 8c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb - languageName: node - linkType: hard - -"common-tags@npm:1.8.2": - version: 1.8.2 - resolution: "common-tags@npm:1.8.2" - checksum: 8c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 - languageName: node - linkType: hard - -"commondir@npm:^1.0.1": - version: 1.0.1 - resolution: "commondir@npm:1.0.1" - checksum: 8c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 - languageName: node - linkType: hard - -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: 8c0/68774a0a3754fb6c0ba53c2e88886dfbd0c773931066abb1d7fd1b0c893b2a838d8f088ab4dca1f18cc1a4fc2e6932019eba3ded2d931b5ba2241ce40e93a24f - languageName: node - linkType: hard - -"compress-commons@npm:^3.0.0": - version: 3.0.0 - resolution: "compress-commons@npm:3.0.0" - dependencies: - buffer-crc32: "npm:^0.2.13" - crc32-stream: "npm:^3.0.1" - normalize-path: "npm:^3.0.0" - readable-stream: "npm:^2.3.7" - checksum: 8c0/1b633c816be0788ad11e5c5d02b4ecacce0ea8de59ee581821906f32687a64baadf025ee15ae96c543e2164d8c5a17fda59f1996f6b2d6acb1d6f7c020303f4f - languageName: node - linkType: hard - -"compress-commons@npm:^5.0.1": - version: 5.0.1 - resolution: "compress-commons@npm:5.0.1" - dependencies: - crc-32: "npm:^1.2.0" - crc32-stream: "npm:^5.0.0" - normalize-path: "npm:^3.0.0" - readable-stream: "npm:^3.6.0" - checksum: 1c604ac753b4ec643a807f3db545bf497d1e9c6f81e9132280c98d972b02bbeba087e7fb2d53f3043f9643a64a6140e9e39b94329040695d404b83a0c7f38fa2 - languageName: node - linkType: hard - -"compressible@npm:~2.0.16": - version: 2.0.18 - resolution: "compressible@npm:2.0.18" - dependencies: - mime-db: "npm:>= 1.43.0 < 2" - checksum: 8c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 - languageName: node - linkType: hard - -"compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" - dependencies: - accepts: "npm:~1.3.5" - bytes: "npm:3.0.0" - compressible: "npm:~2.0.16" - debug: "npm:2.6.9" - on-headers: "npm:~1.0.2" - safe-buffer: "npm:5.1.2" - vary: "npm:~1.1.2" - checksum: 8c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc - languageName: node - linkType: hard - -"compute-scroll-into-view@npm:^1.0.17": - version: 1.0.17 - resolution: "compute-scroll-into-view@npm:1.0.17" - checksum: 8c0/98ba88a3af2e4d9c39e1a329f9d1615eeed0e528350ce01b63fb43d1c611dfc31c0639f47844dc8e7bf4d429745bce88efbb035ee2116d51d33b33d55d794f0c - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 8c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f - languageName: node - linkType: hard - -"concat-stream@npm:^1.5.0": - version: 1.6.2 - resolution: "concat-stream@npm:1.6.2" - dependencies: - buffer-from: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^2.2.2" - typedarray: "npm:^0.0.6" - checksum: 8c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 - languageName: node - linkType: hard - -"concurrently@npm:8.2.2": - version: 8.2.2 - resolution: "concurrently@npm:8.2.2" - dependencies: - chalk: "npm:^4.1.2" - date-fns: "npm:^2.30.0" - lodash: "npm:^4.17.21" - rxjs: "npm:^7.8.1" - shell-quote: "npm:^1.8.1" - spawn-command: "npm:0.0.2" - supports-color: "npm:^8.1.1" - tree-kill: "npm:^1.2.2" - yargs: "npm:^17.7.2" - bin: - conc: dist/bin/concurrently.js - concurrently: dist/bin/concurrently.js - checksum: 0e9683196fe9c071d944345d21d8f34aa6c0cc50c0dd897e95619f2f1c9eb4871dca851b2569da17888235b7335b4c821ca19deed35bebcd9a131ee5d247f34c - languageName: node - linkType: hard - -"concurrently@npm:^6.0.2": - version: 6.5.1 - resolution: "concurrently@npm:6.5.1" - dependencies: - chalk: "npm:^4.1.0" - date-fns: "npm:^2.16.1" - lodash: "npm:^4.17.21" - rxjs: "npm:^6.6.3" - spawn-command: "npm:^0.0.2-1" - supports-color: "npm:^8.1.0" - tree-kill: "npm:^1.2.2" - yargs: "npm:^16.2.0" - bin: - concurrently: bin/concurrently.js - checksum: 8c0/4bc2eb5d8fa9a87d2241bc1f7830f5432fd52593944eed162567188f36d1f4219f336f72b5e6afee265547e8be1e54c8c893e5693d3874666a9ce5a7ffe4cc81 - languageName: node - linkType: hard - -"configstore@npm:3.1.5": - version: 3.1.5 - resolution: "configstore@npm:3.1.5" - dependencies: - dot-prop: "npm:^4.2.1" - graceful-fs: "npm:^4.1.2" - make-dir: "npm:^1.0.0" - unique-string: "npm:^1.0.0" - write-file-atomic: "npm:^2.0.0" - xdg-basedir: "npm:^3.0.0" - checksum: 8c0/a68edffee893b1803a108c4083dee481967f7eec232f83499bc86973d93d1e2728c1ea98cb1a4c7c583bc172abbdf197888ba0b0c12640631792186aa233918b - languageName: node - linkType: hard - -"connect-history-api-fallback@npm:^1.6.0": - version: 1.6.0 - resolution: "connect-history-api-fallback@npm:1.6.0" - checksum: 8c0/6d59c68070fcb2f6d981992f88d050d7544e8e1af6600c23ad680d955e316216794a742a1669d1f14ed5171fc628b916f8a4e15c5a1e55bffc8ccc60bfeb0b2c - languageName: node - linkType: hard - -"connect-history-api-fallback@npm:^2.0.0": - version: 2.0.0 - resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: 8c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 - languageName: node - linkType: hard - -"console-browserify@npm:^1.1.0": - version: 1.2.0 - resolution: "console-browserify@npm:1.2.0" - checksum: 8c0/89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 - languageName: node - linkType: hard - -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 - languageName: node - linkType: hard - -"constant-case@npm:^3.0.4": - version: 3.0.4 - resolution: "constant-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - upper-case: "npm:^2.0.2" - checksum: 8c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e - languageName: node - linkType: hard - -"constants-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "constants-browserify@npm:1.0.0" - checksum: 8c0/ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 - languageName: node - linkType: hard - -"content-disposition@npm:0.5.3": - version: 0.5.3 - resolution: "content-disposition@npm:0.5.3" - dependencies: - safe-buffer: "npm:5.1.2" - checksum: 8c0/988f131fedb2b79002337b5480951cc73f86e876b3e7feb6617b92e40a01f633db6f4c7765d486c02b468890465b2df96b7652b7e39caf22cc63517cf2e99839 - languageName: node - linkType: hard - -"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.3, content-disposition@npm:^0.5.4": - version: 0.5.4 - resolution: "content-disposition@npm:0.5.4" - dependencies: - safe-buffer: "npm:5.2.1" - checksum: 8c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb - languageName: node - linkType: hard - -"content-type@npm:~1.0.4": - version: 1.0.4 - resolution: "content-type@npm:1.0.4" - checksum: 8c0/19e08f406f9ae3f80fb4607c75fbde1f22546647877e8047c9fa0b1c61e38f3ede853f51e915c95fd499c2e1c7478cb23c35cfb804d0e8e0495e8db88cfaed75 - languageName: node - linkType: hard - -"convert-source-map@npm:^1.1.0, convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": - version: 1.7.0 - resolution: "convert-source-map@npm:1.7.0" - dependencies: - safe-buffer: "npm:~5.1.1" - checksum: 8c0/e58240044fa2ca34943a450c9af1f2c739a053dc91a97543dd73df666b7e28d9687285926081883950fcc7cb409aad7254d05afbbaf4e2e47491bbf9fad8b952 - languageName: node - linkType: hard - -"convert-source-map@npm:^2.0.0": - version: 2.0.0 - resolution: "convert-source-map@npm:2.0.0" - checksum: 8c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b - languageName: node - linkType: hard - -"cookie-signature@npm:1.0.6": - version: 1.0.6 - resolution: "cookie-signature@npm:1.0.6" - checksum: 8c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 - languageName: node - linkType: hard - -"cookie@npm:0.4.0": - version: 0.4.0 - resolution: "cookie@npm:0.4.0" - checksum: 8c0/71508a1c8a4e97bb88f42635542ef24ebe7e713f82573ac61e9b289616334d14bfb28210d7979d9ada24b0254f5fb563af938cac13bc8c0c3f60f47a2257f791 - languageName: node - linkType: hard - -"cookie@npm:0.5.0, cookie@npm:^0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 8c0/c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d - languageName: node - linkType: hard - -"cookie@npm:^0.4.1": - version: 0.4.1 - resolution: "cookie@npm:0.4.1" - checksum: 8c0/4d7bc798df3d0f34035977949cd6b7d05bbab47d7dcb868667f460b578a550cd20dec923832b8a3a107ef35aba091a3975e14f79efacf6e39282dc0fed6db4a1 - languageName: node - linkType: hard - -"cookie@npm:^0.4.2": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: 8c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 - languageName: node - linkType: hard - -"copy-anything@npm:^3.0.2": - version: 3.0.5 - resolution: "copy-anything@npm:3.0.5" - dependencies: - is-what: "npm:^4.1.8" - checksum: 8c0/01eadd500c7e1db71d32d95a3bfaaedcb839ef891c741f6305ab0461398056133de08f2d1bf4c392b364e7bdb7ce498513896e137a7a183ac2516b065c28a4fe - languageName: node - linkType: hard - -"copy-concurrently@npm:^1.0.0": - version: 1.0.5 - resolution: "copy-concurrently@npm:1.0.5" - dependencies: - aproba: "npm:^1.1.1" - fs-write-stream-atomic: "npm:^1.0.8" - iferr: "npm:^0.1.5" - mkdirp: "npm:^0.5.1" - rimraf: "npm:^2.5.4" - run-queue: "npm:^1.0.0" - checksum: 8c0/c2ce213cb27ee3df584d16eb6c9bfe99cfb531585007533c3e4c752521b4fbf0b2f7f90807d79c496683330808ecd9fdbd9ab9ddfa0913150b7f5097423348ce - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: 8c0/161f6760b7348c941007a83df180588fe2f1283e0867cc027182734e0f26134e6cc02de09aa24a95dc267b2e2025b55659eef76c8019df27bc2d883033690181 - languageName: node - linkType: hard - -"copy-to-clipboard@npm:^3.2.0": - version: 3.3.3 - resolution: "copy-to-clipboard@npm:3.3.3" - dependencies: - toggle-selection: "npm:^1.0.6" - checksum: 3ebf5e8ee00601f8c440b83ec08d838e8eabb068c1fae94a9cda6b42f288f7e1b552f3463635f419af44bf7675afc8d0390d30876cf5c2d5d35f86d9c56a3e5f - languageName: node - linkType: hard - -"copy-to-clipboard@npm:^3.3.1": - version: 3.3.1 - resolution: "copy-to-clipboard@npm:3.3.1" - dependencies: - toggle-selection: "npm:^1.0.6" - checksum: 8c0/cc38a2a07ec22b1b60c6bd1648a21178fade4d972b43e4c2570f36f8df59ca2b7e9f8a6125d271cf2927367d3ec4012c92deaf244c12cd79509244d5c7f0f4dd - languageName: node - linkType: hard - -"copy-webpack-plugin@npm:11.0.0": - version: 11.0.0 - resolution: "copy-webpack-plugin@npm:11.0.0" - dependencies: - fast-glob: "npm:^3.2.11" - glob-parent: "npm:^6.0.1" - globby: "npm:^13.1.1" - normalize-path: "npm:^3.0.0" - schema-utils: "npm:^4.0.0" - serialize-javascript: "npm:^6.0.0" - peerDependencies: - webpack: ^5.1.0 - checksum: 8c0/a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 - languageName: node - linkType: hard - -"copy-webpack-plugin@npm:^6.1.0": - version: 6.4.1 - resolution: "copy-webpack-plugin@npm:6.4.1" - dependencies: - cacache: "npm:^15.0.5" - fast-glob: "npm:^3.2.4" - find-cache-dir: "npm:^3.3.1" - glob-parent: "npm:^5.1.1" - globby: "npm:^11.0.1" - loader-utils: "npm:^2.0.0" - normalize-path: "npm:^3.0.0" - p-limit: "npm:^3.0.2" - schema-utils: "npm:^3.0.0" - serialize-javascript: "npm:^5.0.1" - webpack-sources: "npm:^1.4.3" - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - checksum: 8c0/f8ef9a775c8d79cb13866f3717ff8f296aab069f6249c2606b402eec52c1b666b6ab8a2bd2d4a05ff60e5d4bf53579aaaedeca35a179c78746fcc519899732a8 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.20.2, core-js-compat@npm:^3.21.0, core-js-compat@npm:^3.8.1": - version: 3.21.0 - resolution: "core-js-compat@npm:3.21.0" - dependencies: - browserslist: "npm:^4.19.1" - semver: "npm:7.0.0" - checksum: 8c0/8d0286d9be050abadbc777bb509cf6ad83a0fa594d4d86737b9fa5ce183777126c8eea0f0734e41baf121ec4da3a2cd12ace0861b349021af01a05033a9d4ed0 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.31.0": - version: 3.32.1 - resolution: "core-js-compat@npm:3.32.1" - dependencies: - browserslist: "npm:^4.21.10" - checksum: 8c0/59f1897ec3f6b67b9a68e146ce66ee76186e17b3ab4ecd0cd638a2cd8427e52d4dba5ca0190dc2986b9be05c99af721e2e689396bffa54efa8020a9b3ad96067 - languageName: node - linkType: hard - -"core-js-compat@npm:^3.33.1": - version: 3.35.0 - resolution: "core-js-compat@npm:3.35.0" - dependencies: - browserslist: "npm:^4.22.2" - checksum: 8c4379240b8decb94b21e81d5ba6f768418721061923b28c9dfc97574680c35d778d39c010207402fc7c8308a68a4cf6d5e02bcbcb96e931c52e6e0dce29a68c - languageName: node - linkType: hard - -"core-js-compat@npm:^3.9.0, core-js-compat@npm:^3.9.1": - version: 3.13.1 - resolution: "core-js-compat@npm:3.13.1" - dependencies: - browserslist: "npm:^4.16.6" - semver: "npm:7.0.0" - checksum: 8c0/02d4a47ea40d2fa121570c5933255a915259738629346a565e025659863de3ec4aa3955a497506378bcd3f5cae5d1bb3811d05a1c1c311ed3d5d04a778f198c9 - languageName: node - linkType: hard - -"core-js-pure@npm:^3.0.0, core-js-pure@npm:^3.10.2": - version: 3.13.1 - resolution: "core-js-pure@npm:3.13.1" - checksum: 8c0/82817525e84fb90d0f47724dac2e7042834d0e19950110171a0886b9c6fc134f44234e4bfce2dc19334ddacd2754f4ae63b7305d26809c536a40990725a03602 - languageName: node - linkType: hard - -"core-js-pure@npm:^3.23.3": - version: 3.27.2 - resolution: "core-js-pure@npm:3.27.2" - checksum: 8c0/861bb21d83914a01319ddadb42d7b39d253f87b638feaa958208146c0b045f9de984af1a0752dc0484a099b65257746c4a91f8f2c396ce80524126882984079c - languageName: node - linkType: hard - -"core-js-pure@npm:^3.30.2": - version: 3.32.1 - resolution: "core-js-pure@npm:3.32.1" - checksum: 8c0/f86fb7fbdb53b05b8413ca32995326ba13516f859c54b524f89ac78cd9fcaa6ccdd9172e7105cd38b7d9c7c3d5a7d7c61e4f631af850672fdc25de4fc63ff379 - languageName: node - linkType: hard - -"core-js-pure@npm:^3.8.1, core-js-pure@npm:^3.8.2": - version: 3.21.0 - resolution: "core-js-pure@npm:3.21.0" - checksum: 8c0/90c39a0f4561e56de17bdffb9edb4cf754e341f4d5cba7580b676436bec170cd1954d0f0870c8e97c96e151c14a112975f2574bc601f08559e044061eaca0d1a - languageName: node - linkType: hard - -"core-js@npm:3.10.1": - version: 3.10.1 - resolution: "core-js@npm:3.10.1" - checksum: 8c0/f969ba98b911a9bd2a7162ab055e508f6d6b92f8dae954eea2d48a89851ff676744c6f933a166a288ed310dcb41645bc5654c8d894af6a89cb8b94ae249857db - languageName: node - linkType: hard - -"core-js@npm:3.34.0": - version: 3.34.0 - resolution: "core-js@npm:3.34.0" - checksum: 408a77898abe03bf3e5dec2a451c36f4745081cca9022f8bdf9b817d57bb6d3a534d555f47a4b95e1daa5e21dbc79122eac2402e25720d425f5925127e55dcd8 - languageName: node - linkType: hard - -"core-js@npm:^3.0.4, core-js@npm:^3.2.1, core-js@npm:^3.6.5, core-js@npm:^3.8.2": - version: 3.13.1 - resolution: "core-js@npm:3.13.1" - checksum: 8c0/1766f415d17c421539d39464454a8d687fbd79b56c7cd2e8d2f6c99ed8d3a2036cec752a25ff8ce18cf61d783cee34093de04a68973dca383524d18178d4c0b8 - languageName: node - linkType: hard - -"core-js@npm:^3.27.2": - version: 3.27.2 - resolution: "core-js@npm:3.27.2" - checksum: 8c0/dd0041b8bea1033935bb055e15ce81c09eed7f2548485783993bf93923d4e9908b70cdbccac03f9bf6393497eca1d46b476e3eef773fe2ce7d957d1e552ebdbc - languageName: node - linkType: hard - -"core-util-is@npm:~1.0.0": - version: 1.0.2 - resolution: "core-util-is@npm:1.0.2" - checksum: 8c0/980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 - languageName: node - linkType: hard - -"cosmiconfig@npm:8.0.0": - version: 8.0.0 - resolution: "cosmiconfig@npm:8.0.0" - dependencies: - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - checksum: 8c0/cea301202bb68373f9c8ccc77a6002aab1032f327dd1458e5932ee1a2f48919c881074d702cece91f18275673817872a0d3d00eb46f30a33c8f2009dbbac0e5c - languageName: node - linkType: hard - -"cosmiconfig@npm:^5.0.0": - version: 5.2.1 - resolution: "cosmiconfig@npm:5.2.1" - dependencies: - import-fresh: "npm:^2.0.0" - is-directory: "npm:^0.3.1" - js-yaml: "npm:^3.13.1" - parse-json: "npm:^4.0.0" - checksum: 8c0/ae9ba309cdbb42d0c9d63dad5c1dfa1c56bb8f818cb8633eea14fd2dbdc9f33393b77658ba96fdabda497bc943afed8c3371d1222afe613c518ba676fa624645 - languageName: node - linkType: hard - -"cosmiconfig@npm:^6.0.0": - version: 6.0.0 - resolution: "cosmiconfig@npm:6.0.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.1.0" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.7.2" - checksum: 8c0/666ed8732d0bf7d7fe6f8516c8ee6041e0622032e8fa26201577b883d2767ad105d03f38b34b93d1f02f26b22a89e7bab4443b9d2e7f931f48d0e944ffa038b5 - languageName: node - linkType: hard - -"cosmiconfig@npm:^7.0.0": - version: 7.0.0 - resolution: "cosmiconfig@npm:7.0.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.2.1" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.10.0" - checksum: 8c0/532cb7fc3690afb00fa989d8127a824439e2e926a3d40b4e07c3e563fe1910b91ed19d611143267fa607538f324f07eeb79e917aea85859786e6e1c0c00b1cda - languageName: node - linkType: hard - -"cosmiconfig@npm:^8.1.3": - version: 8.2.0 - resolution: "cosmiconfig@npm:8.2.0" - dependencies: - import-fresh: "npm:^3.2.1" - js-yaml: "npm:^4.1.0" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - checksum: 8c0/4180aa6d1881b75ba591b2fc04b022741a3a4b67e9e243c0eb8d169b6e1efbd3cdf7e8ca19243c0f2e53a9d59ac3eccd5cad5f95f487fcbf4e740f9e86745747 - languageName: node - linkType: hard - -"cp-file@npm:^7.0.0": - version: 7.0.0 - resolution: "cp-file@npm:7.0.0" - dependencies: - graceful-fs: "npm:^4.1.2" - make-dir: "npm:^3.0.0" - nested-error-stacks: "npm:^2.0.0" - p-event: "npm:^4.1.0" - checksum: 8c0/db3ef3e3e466742f392ae71edb9b2cdbb314e855d97630a65de57bc1097bacf6e844f6d9d44882b8678c0de26ba7e656c2c915960435970067823372e807eafa - languageName: node - linkType: hard - -"cpy@npm:^8.1.2": - version: 8.1.2 - resolution: "cpy@npm:8.1.2" - dependencies: - arrify: "npm:^2.0.1" - cp-file: "npm:^7.0.0" - globby: "npm:^9.2.0" - has-glob: "npm:^1.0.0" - junk: "npm:^3.1.0" - nested-error-stacks: "npm:^2.1.0" - p-all: "npm:^2.1.0" - p-filter: "npm:^2.1.0" - p-map: "npm:^3.0.0" - checksum: 8c0/84611fdd526a0582ae501a0fa1e1d55e16348c69110eb17be5fc0c087b7b2aa6caec014286b669e4f123750d01e0c4db77d32fdcdb9840c3df4d161a137a345a - languageName: node - linkType: hard - -"crc-32@npm:^1.2.0": - version: 1.2.2 - resolution: "crc-32@npm:1.2.2" - bin: - crc32: bin/crc32.njs - checksum: 8c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 - languageName: node - linkType: hard - -"crc32-stream@npm:^3.0.1": - version: 3.0.1 - resolution: "crc32-stream@npm:3.0.1" - dependencies: - crc: "npm:^3.4.4" - readable-stream: "npm:^3.4.0" - checksum: 8c0/cf026cc08e68a7eb9f9245b3937d062339a54c2f5b4738c7fb861bd2db56ac220df3627f02ed6e0972633a99435d409f4470cf0a3aac6e944d87730493b6dea0 - languageName: node - linkType: hard - -"crc32-stream@npm:^5.0.0": - version: 5.0.0 - resolution: "crc32-stream@npm:5.0.0" - dependencies: - crc-32: "npm:^1.2.0" - readable-stream: "npm:^3.4.0" - checksum: bd6e6d49b76fd562eef3a4b7b64b1e551fb5dfca0a3b54fb7e59765c57468295b60755f85d3450fd61eee01dcca0974600157717cad8f356d513c28bac726a41 - languageName: node - linkType: hard - -"crc@npm:^3.4.4": - version: 3.8.0 - resolution: "crc@npm:3.8.0" - dependencies: - buffer: "npm:^5.1.0" - checksum: 8c0/1a0da36e5f95b19cd2a7b2eab5306a08f1c47bdd22da6f761ab764e2222e8e90a877398907cea94108bd5e41a6d311ea84d7914eaca67da2baa4050bd6384b3d - languageName: node - linkType: hard - -"create-ecdh@npm:^4.0.0": - version: 4.0.4 - resolution: "create-ecdh@npm:4.0.4" - dependencies: - bn.js: "npm:^4.1.0" - elliptic: "npm:^6.5.3" - checksum: 8c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: "npm:^1.0.1" - inherits: "npm:^2.0.1" - md5.js: "npm:^1.3.4" - ripemd160: "npm:^2.0.1" - sha.js: "npm:^2.4.0" - checksum: 8c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: "npm:^1.0.3" - create-hash: "npm:^1.1.0" - inherits: "npm:^2.0.1" - ripemd160: "npm:^2.0.0" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 8c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 - languageName: node - linkType: hard - -"create-jest@npm:^29.7.0": - version: 29.7.0 - resolution: "create-jest@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.9" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - prompts: "npm:^2.0.1" - bin: - create-jest: bin/create-jest.js - checksum: e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f - languageName: node - linkType: hard - -"create-redwood-app@workspace:../../packages/create-redwood-app": - version: 0.0.0-use.local - resolution: "create-redwood-app@workspace:../../packages/create-redwood-app" - dependencies: - "@babel/core": "npm:^7.22.20" - "@babel/plugin-transform-typescript": "npm:^7.22.15" - "@opentelemetry/api": "npm:1.7.0" - "@opentelemetry/exporter-trace-otlp-http": "npm:0.45.1" - "@opentelemetry/resources": "npm:1.18.1" - "@opentelemetry/sdk-trace-node": "npm:1.18.1" - "@opentelemetry/semantic-conventions": "npm:1.18.1" - "@redwoodjs/tui": "npm:6.0.7" - "@types/babel__core": "npm:7.20.4" - chalk: "npm:4.1.2" - check-node-version: "npm:4.2.1" - ci-info: "npm:4.0.0" - envinfo: "npm:7.11.0" - esbuild: "npm:0.19.9" - execa: "npm:5.1.1" - fs-extra: "npm:11.2.0" - jest: "npm:29.7.0" - klaw-sync: "npm:6.0.0" - semver: "npm:7.5.4" - systeminformation: "npm:5.21.20" - terminal-link: "npm:2.1.1" - untildify: "npm:4.0.0" - uuid: "npm:9.0.1" - yargs: "npm:17.7.2" - bin: - create-redwood-app: ./dist/create-redwood-app.js - languageName: unknown - linkType: soft - -"create-require@npm:^1.1.0": - version: 1.1.1 - resolution: "create-require@npm:1.1.1" - checksum: 8c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 - languageName: node - linkType: hard - -"cross-env@npm:7.0.3, cross-env@npm:^7.0.2": - version: 7.0.3 - resolution: "cross-env@npm:7.0.3" - dependencies: - cross-spawn: "npm:^7.0.1" - bin: - cross-env: src/bin/cross-env.js - cross-env-shell: src/bin/cross-env-shell.js - checksum: 8c0/f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf - languageName: node - linkType: hard - -"cross-fetch@npm:^3.1.5": - version: 3.1.5 - resolution: "cross-fetch@npm:3.1.5" - dependencies: - node-fetch: "npm:2.6.7" - checksum: 8c0/29b457f8df11b46b8388a53c947de80bfe04e6466a59c1628c9870b48505b90ec1d28a05b543a0247416a99f1cfe147d1efe373afdeb46a192334ba5fe91b871 - languageName: node - linkType: hard - -"cross-inspect@npm:1.0.0": - version: 1.0.0 - resolution: "cross-inspect@npm:1.0.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 - languageName: node - linkType: hard - -"cross-spawn@npm:7.0.3, cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: "npm:^3.1.0" - shebang-command: "npm:^2.0.0" - which: "npm:^2.0.1" - checksum: 8c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 - languageName: node - linkType: hard - -"cross-spawn@npm:^5.0.1": - version: 5.1.0 - resolution: "cross-spawn@npm:5.1.0" - dependencies: - lru-cache: "npm:^4.0.1" - shebang-command: "npm:^1.2.0" - which: "npm:^1.2.9" - checksum: 1918621fddb9f8c61e02118b2dbf81f611ccd1544ceaca0d026525341832b8511ce2504c60f935dbc06b35e5ef156fe8c1e72708c27dd486f034e9c0e1e07201 - languageName: node - linkType: hard - -"cross-spawn@npm:^6.0.0, cross-spawn@npm:^6.0.5": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" - dependencies: - nice-try: "npm:^1.0.4" - path-key: "npm:^2.0.1" - semver: "npm:^5.5.0" - shebang-command: "npm:^1.2.0" - which: "npm:^1.2.9" - checksum: 8c0/e05544722e9d7189b4292c66e42b7abeb21db0d07c91b785f4ae5fefceb1f89e626da2703744657b287e86dcd4af57b54567cef75159957ff7a8a761d9055012 - languageName: node - linkType: hard - -"crypto-browserify@npm:^3.11.0": - version: 3.12.0 - resolution: "crypto-browserify@npm:3.12.0" - dependencies: - browserify-cipher: "npm:^1.0.0" - browserify-sign: "npm:^4.0.0" - create-ecdh: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - create-hmac: "npm:^1.1.0" - diffie-hellman: "npm:^5.0.0" - inherits: "npm:^2.0.1" - pbkdf2: "npm:^3.0.3" - public-encrypt: "npm:^4.0.0" - randombytes: "npm:^2.0.0" - randomfill: "npm:^1.0.3" - checksum: 8c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 - languageName: node - linkType: hard - -"crypto-random-string@npm:^1.0.0": - version: 1.0.0 - resolution: "crypto-random-string@npm:1.0.0" - checksum: 8c0/0cb4dbbb895656919d1de11ba43829a3527edddb85a9c49c9d4c4eb783d3b03fc9f371cefee62c87082fd8758db2798a52a9cad48a7381826190d3c2cf858e4a - languageName: node - linkType: hard - -"crypto-random-string@npm:^2.0.0": - version: 2.0.0 - resolution: "crypto-random-string@npm:2.0.0" - checksum: 8c0/288589b2484fe787f9e146f56c4be90b940018f17af1b152e4dde12309042ff5a2bf69e949aab8b8ac253948381529cc6f3e5a2427b73643a71ff177fa122b37 - languageName: node - linkType: hard - -"css-color-keywords@npm:^1.0.0": - version: 1.0.0 - resolution: "css-color-keywords@npm:1.0.0" - checksum: 8c0/af205a86c68e0051846ed91eb3e30b4517e1904aac040013ff1d742019b3f9369ba5658ba40901dbbc121186fc4bf0e75a814321cc3e3182fbb2feb81c6d9cb7 - languageName: node - linkType: hard - -"css-color-names@npm:0.0.4, css-color-names@npm:^0.0.4": - version: 0.0.4 - resolution: "css-color-names@npm:0.0.4" - checksum: 8c0/88ef97c25bcfb217469cdff428049022438cc546eb208210f0edec03b75050723db3ba02cd0f4959c84cd0659be0b43af3323eff80d1ba5fb15c2accf09ccbe2 - languageName: node - linkType: hard - -"css-declaration-sorter@npm:^4.0.1": - version: 4.0.1 - resolution: "css-declaration-sorter@npm:4.0.1" - dependencies: - postcss: "npm:^7.0.1" - timsort: "npm:^0.3.0" - checksum: 8c0/5d99058fb4bfec937731724f917d982790f6f08afdf147835053de1f84ecd42f06b139fe68e005adda83c190fac1a84e663eb8003b6bb733a9c72a4420fe22d2 - languageName: node - linkType: hard - -"css-declaration-sorter@npm:^6.3.1": - version: 6.3.1 - resolution: "css-declaration-sorter@npm:6.3.1" - peerDependencies: - postcss: ^8.0.9 - checksum: 8c0/fc9aa675736eb1c8fc20fd9b8b6abb483c0344a6f1c659d1a9292596bbfe26150a8745a6da23bfa82b0c8a979b6a9ba5d235da0663873f39da1ca42b06caa5c9 - languageName: node - linkType: hard - -"css-loader@npm:6.8.1": - version: 6.8.1 - resolution: "css-loader@npm:6.8.1" - dependencies: - icss-utils: "npm:^5.1.0" - postcss: "npm:^8.4.21" - postcss-modules-extract-imports: "npm:^3.0.0" - postcss-modules-local-by-default: "npm:^4.0.3" - postcss-modules-scope: "npm:^3.0.0" - postcss-modules-values: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - semver: "npm:^7.3.8" - peerDependencies: - webpack: ^5.0.0 - checksum: 8c0/a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 - languageName: node - linkType: hard - -"css-loader@npm:^3.6.0": - version: 3.6.0 - resolution: "css-loader@npm:3.6.0" - dependencies: - camelcase: "npm:^5.3.1" - cssesc: "npm:^3.0.0" - icss-utils: "npm:^4.1.1" - loader-utils: "npm:^1.2.3" - normalize-path: "npm:^3.0.0" - postcss: "npm:^7.0.32" - postcss-modules-extract-imports: "npm:^2.0.0" - postcss-modules-local-by-default: "npm:^3.0.2" - postcss-modules-scope: "npm:^2.2.0" - postcss-modules-values: "npm:^3.0.0" - postcss-value-parser: "npm:^4.1.0" - schema-utils: "npm:^2.7.0" - semver: "npm:^6.3.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/ba9065a63f7531d50197207f2c9abb4d75f7e46db27bcfeb6b615a9fb1b1bf48ef4ccdf0f161ff6d35b6fe8752ee3259ee8eeca492666fd2703277d4d3c83534 - languageName: node - linkType: hard - -"css-loader@npm:^4.2.2": - version: 4.3.0 - resolution: "css-loader@npm:4.3.0" - dependencies: - camelcase: "npm:^6.0.0" - cssesc: "npm:^3.0.0" - icss-utils: "npm:^4.1.1" - loader-utils: "npm:^2.0.0" - postcss: "npm:^7.0.32" - postcss-modules-extract-imports: "npm:^2.0.0" - postcss-modules-local-by-default: "npm:^3.0.3" - postcss-modules-scope: "npm:^2.2.0" - postcss-modules-values: "npm:^3.0.0" - postcss-value-parser: "npm:^4.1.0" - schema-utils: "npm:^2.7.1" - semver: "npm:^7.3.2" - peerDependencies: - webpack: ^4.27.0 || ^5.0.0 - checksum: 8c0/adc0a57a3639519c5012c031ddebdfdb8f1f01930f46cf62ad2d8dff5c42bcbfb1acbab237cb7c5ce0125ef3236f5aadb5b64fe2b5d2a7e749cd9e245430a9c3 - languageName: node - linkType: hard - -"css-minimizer-webpack-plugin@npm:5.0.1": - version: 5.0.1 - resolution: "css-minimizer-webpack-plugin@npm:5.0.1" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.18" - cssnano: "npm:^6.0.1" - jest-worker: "npm:^29.4.3" - postcss: "npm:^8.4.24" - schema-utils: "npm:^4.0.1" - serialize-javascript: "npm:^6.0.1" - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - "@parcel/css": - optional: true - "@swc/css": - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true - lightningcss: - optional: true - checksum: 8c0/1792259e18f7c5ee25b6bbf60b38b64201747add83d1f751c8c654159b46ebacd0d1103d35f17d97197033e21e02d2ba4a4e9aa14c9c0d067b7c7653c721814e - languageName: node - linkType: hard - -"css-minimizer-webpack-plugin@npm:^1.2.0": - version: 1.3.0 - resolution: "css-minimizer-webpack-plugin@npm:1.3.0" - dependencies: - cacache: "npm:^15.0.5" - cssnano: "npm:^4.1.10" - find-cache-dir: "npm:^3.3.1" - jest-worker: "npm:^26.3.0" - p-limit: "npm:^3.0.2" - schema-utils: "npm:^3.0.0" - serialize-javascript: "npm:^5.0.1" - source-map: "npm:^0.6.1" - webpack-sources: "npm:^1.4.3" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/f4e971c6c079eaaa341f6cffa6f4644f4e1eab2150669a4136bb8f864b580de1e2ebb109e4c1c8d52995082a168a9f5d9344815a57215440771b8b9abab1ff73 - languageName: node - linkType: hard - -"css-select-base-adapter@npm:^0.1.1": - version: 0.1.1 - resolution: "css-select-base-adapter@npm:0.1.1" - checksum: 8c0/17f28a0d9e8596c541de250e48958e72a65399c9e15ba5689915d6631a451068187c19d674f08187843a61cb949951cb33c7db82bd7341536769523baed867dc - languageName: node - linkType: hard - -"css-select@npm:^2.0.0, css-select@npm:^2.0.2": - version: 2.1.0 - resolution: "css-select@npm:2.1.0" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^3.2.1" - domutils: "npm:^1.7.0" - nth-check: "npm:^1.0.2" - checksum: 8c0/47832492c8218ffd92ed18eaa325397bd0bd8e4bcf3bc71767c5e1ed8b4f39b672ba157b0b5e693ef50006017d78c19e46791a75b43bb192c4db3680a331afc7 - languageName: node - linkType: hard - -"css-select@npm:^3.1.2": - version: 3.1.2 - resolution: "css-select@npm:3.1.2" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^4.0.0" - domhandler: "npm:^4.0.0" - domutils: "npm:^2.4.3" - nth-check: "npm:^2.0.0" - checksum: 8c0/4957840a6f234610ff563f57bd580ca12d0dd25e50d9b389b4eb782506bff27a576924a0ff914775a5b0b7e1b9266d0013cbf024161b8154b1607cda7b5b8a04 - languageName: node - linkType: hard - -"css-select@npm:^4.1.3": - version: 4.3.0 - resolution: "css-select@npm:4.3.0" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^6.0.1" - domhandler: "npm:^4.3.1" - domutils: "npm:^2.8.0" - nth-check: "npm:^2.0.1" - checksum: 8c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 - languageName: node - linkType: hard - -"css-select@npm:^5.1.0": - version: 5.1.0 - resolution: "css-select@npm:5.1.0" - dependencies: - boolbase: "npm:^1.0.0" - css-what: "npm:^6.1.0" - domhandler: "npm:^5.0.2" - domutils: "npm:^3.0.1" - nth-check: "npm:^2.0.1" - checksum: 8c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 - languageName: node - linkType: hard - -"css-to-react-native@npm:^3.0.0": - version: 3.0.0 - resolution: "css-to-react-native@npm:3.0.0" - dependencies: - camelize: "npm:^1.0.0" - css-color-keywords: "npm:^1.0.0" - postcss-value-parser: "npm:^4.0.2" - checksum: 8c0/03dcf5381ff6a888e3621aaffd812fd52df803d01c264b99142a9f73942007c2e953bd27339d6e2da2504a940a2b0d3cc702d3a737165703a0d8ae9c5626c1c1 - languageName: node - linkType: hard - -"css-tree@npm:1.0.0-alpha.37": - version: 1.0.0-alpha.37 - resolution: "css-tree@npm:1.0.0-alpha.37" - dependencies: - mdn-data: "npm:2.0.4" - source-map: "npm:^0.6.1" - checksum: 8c0/8f3c197baea919f4f55d0e84b1665d5e7d5fd74cb192fd0bf951828929b9cd5fd71de074afb685705bf5b40d7b04d4c5a206bfab26954378f04f2f5ce426d2f8 - languageName: node - linkType: hard - -"css-tree@npm:^1.1.2": - version: 1.1.3 - resolution: "css-tree@npm:1.1.3" - dependencies: - mdn-data: "npm:2.0.14" - source-map: "npm:^0.6.1" - checksum: 8c0/499a507bfa39b8b2128f49736882c0dd636b0cd3370f2c69f4558ec86d269113286b7df469afc955de6a68b0dba00bc533e40022a73698081d600072d5d83c1c - languageName: node - linkType: hard - -"css-tree@npm:^2.2.1": - version: 2.3.1 - resolution: "css-tree@npm:2.3.1" - dependencies: - mdn-data: "npm:2.0.30" - source-map-js: "npm:^1.0.1" - checksum: 8c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 - languageName: node - linkType: hard - -"css-tree@npm:~2.2.0": - version: 2.2.1 - resolution: "css-tree@npm:2.2.1" - dependencies: - mdn-data: "npm:2.0.28" - source-map-js: "npm:^1.0.1" - checksum: 8c0/47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186 - languageName: node - linkType: hard - -"css-what@npm:^3.2.1": - version: 3.4.2 - resolution: "css-what@npm:3.4.2" - checksum: 8c0/454dca1b9dff8cf740d666d24a6c517562f374fe3a160891ebf8c82a9dd76864757913573c4db30537a959f5f595750420be00552ea6d5a9456ee68acc2349bf - languageName: node - linkType: hard - -"css-what@npm:^4.0.0": - version: 4.0.0 - resolution: "css-what@npm:4.0.0" - checksum: 8c0/d00bdd49bdf62010ab9b2c5e4bb9189af7c6d3103f3e397a41a4f3e9ca54d1a009bc6ea6e27906b16a6d0017acd3f542881f0e28515f40e420045bc7d783c259 - languageName: node - linkType: hard - -"css-what@npm:^6.0.1, css-what@npm:^6.1.0": - version: 6.1.0 - resolution: "css-what@npm:6.1.0" - checksum: 8c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 - languageName: node - linkType: hard - -"css.escape@npm:^1.5.1": - version: 1.5.1 - resolution: "css.escape@npm:1.5.1" - checksum: 8c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 - languageName: node - linkType: hard - -"css@npm:2.2.4": - version: 2.2.4 - resolution: "css@npm:2.2.4" - dependencies: - inherits: "npm:^2.0.3" - source-map: "npm:^0.6.1" - source-map-resolve: "npm:^0.5.2" - urix: "npm:^0.1.0" - checksum: 8c0/496fa66568ebd9e51b3153817dd36ec004a45780da6f818e13117e3c4e50b774af41fff70a6ff2fa03777b239c4028ff655fe571b20964b90e886441cd141569 - languageName: node - linkType: hard - -"css@npm:^3.0.0": - version: 3.0.0 - resolution: "css@npm:3.0.0" - dependencies: - inherits: "npm:^2.0.4" - source-map: "npm:^0.6.1" - source-map-resolve: "npm:^0.6.0" - checksum: 8c0/c17cb4a46a39c11b00225f1314158a892828af34cdf3badc7e88084882e9f414e4902a1d59231c0854f310af30bde343fd8a9e79c6001426fe88af45d3312fe2 - languageName: node - linkType: hard - -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: 8c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 - languageName: node - linkType: hard - -"cssfilter@npm:0.0.10": - version: 0.0.10 - resolution: "cssfilter@npm:0.0.10" - checksum: 8c0/478a227a616fb6e9bb338eb95f690df141b86231ec737cbea574484f31a09a51db894b4921afc4987459dae08d584355fd689ff2a7a7c7a74de4bb4c072ce553 - languageName: node - linkType: hard - -"cssnano-preset-default@npm:^4.0.8": - version: 4.0.8 - resolution: "cssnano-preset-default@npm:4.0.8" - dependencies: - css-declaration-sorter: "npm:^4.0.1" - cssnano-util-raw-cache: "npm:^4.0.1" - postcss: "npm:^7.0.0" - postcss-calc: "npm:^7.0.1" - postcss-colormin: "npm:^4.0.3" - postcss-convert-values: "npm:^4.0.1" - postcss-discard-comments: "npm:^4.0.2" - postcss-discard-duplicates: "npm:^4.0.2" - postcss-discard-empty: "npm:^4.0.1" - postcss-discard-overridden: "npm:^4.0.1" - postcss-merge-longhand: "npm:^4.0.11" - postcss-merge-rules: "npm:^4.0.3" - postcss-minify-font-values: "npm:^4.0.2" - postcss-minify-gradients: "npm:^4.0.2" - postcss-minify-params: "npm:^4.0.2" - postcss-minify-selectors: "npm:^4.0.2" - postcss-normalize-charset: "npm:^4.0.1" - postcss-normalize-display-values: "npm:^4.0.2" - postcss-normalize-positions: "npm:^4.0.2" - postcss-normalize-repeat-style: "npm:^4.0.2" - postcss-normalize-string: "npm:^4.0.2" - postcss-normalize-timing-functions: "npm:^4.0.2" - postcss-normalize-unicode: "npm:^4.0.1" - postcss-normalize-url: "npm:^4.0.1" - postcss-normalize-whitespace: "npm:^4.0.2" - postcss-ordered-values: "npm:^4.1.2" - postcss-reduce-initial: "npm:^4.0.3" - postcss-reduce-transforms: "npm:^4.0.2" - postcss-svgo: "npm:^4.0.3" - postcss-unique-selectors: "npm:^4.0.1" - checksum: 8c0/6017657e0733da6ca73098452a7aed1a9b408b8b745e58ac86a4e3a5aa44f8d4476c2d6f16284a00aa649396624a03fb9bacce4746cfbb0edb593871ff20c7a1 - languageName: node - linkType: hard - -"cssnano-preset-default@npm:^6.0.1": - version: 6.0.1 - resolution: "cssnano-preset-default@npm:6.0.1" - dependencies: - css-declaration-sorter: "npm:^6.3.1" - cssnano-utils: "npm:^4.0.0" - postcss-calc: "npm:^9.0.0" - postcss-colormin: "npm:^6.0.0" - postcss-convert-values: "npm:^6.0.0" - postcss-discard-comments: "npm:^6.0.0" - postcss-discard-duplicates: "npm:^6.0.0" - postcss-discard-empty: "npm:^6.0.0" - postcss-discard-overridden: "npm:^6.0.0" - postcss-merge-longhand: "npm:^6.0.0" - postcss-merge-rules: "npm:^6.0.1" - postcss-minify-font-values: "npm:^6.0.0" - postcss-minify-gradients: "npm:^6.0.0" - postcss-minify-params: "npm:^6.0.0" - postcss-minify-selectors: "npm:^6.0.0" - postcss-normalize-charset: "npm:^6.0.0" - postcss-normalize-display-values: "npm:^6.0.0" - postcss-normalize-positions: "npm:^6.0.0" - postcss-normalize-repeat-style: "npm:^6.0.0" - postcss-normalize-string: "npm:^6.0.0" - postcss-normalize-timing-functions: "npm:^6.0.0" - postcss-normalize-unicode: "npm:^6.0.0" - postcss-normalize-url: "npm:^6.0.0" - postcss-normalize-whitespace: "npm:^6.0.0" - postcss-ordered-values: "npm:^6.0.0" - postcss-reduce-initial: "npm:^6.0.0" - postcss-reduce-transforms: "npm:^6.0.0" - postcss-svgo: "npm:^6.0.0" - postcss-unique-selectors: "npm:^6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/401a8d0712cca6577df52cf4aac234ff4a946f0f51c0d09e7c518fff389706cff54d702ff22762e834b23401a89b836aef113e69cc66fa5dfa1f361bdd932495 - languageName: node - linkType: hard - -"cssnano-util-get-arguments@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-util-get-arguments@npm:4.0.0" - checksum: 8c0/d14ff2f16852ee0883844f960f035d15ecc04c516f3dd98979e5515b02e9b7f883a5b5a54fd209cc1d117bb906a28382a5b2dd15a165e8e8f3e66ae14fddbe03 - languageName: node - linkType: hard - -"cssnano-util-get-match@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-util-get-match@npm:4.0.0" - checksum: 8c0/62462d6fe07334f7bbe2530fa427c3fdd240af0cc949bb9feb2bf178432743ec1e6e5914f50c44cc3eb65488b1d6e6f9dcd5fbf948bc31e6672dea623e1923bb - languageName: node - linkType: hard - -"cssnano-util-raw-cache@npm:^4.0.1": - version: 4.0.1 - resolution: "cssnano-util-raw-cache@npm:4.0.1" - dependencies: - postcss: "npm:^7.0.0" - checksum: 8c0/d0bc709570d540b5b122baa47f61072f268488ef78eefac3388bdcfc880f533c4cf8361afafcad78222453d405509fd211a832382d61c5ad6f3fef142ce5afb5 - languageName: node - linkType: hard - -"cssnano-util-same-parent@npm:^4.0.0": - version: 4.0.1 - resolution: "cssnano-util-same-parent@npm:4.0.1" - checksum: 8c0/bec24c8609def0a73734a2d5e0df130655c9c7ec9098da0b66166e81f6614eb90fa43cb0afe81dabea51e253c11a240546c5e1a67b30d22aa297349394522642 - languageName: node - linkType: hard - -"cssnano-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "cssnano-utils@npm:4.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/ca5cb2be5ec8ea624c28f5f54c00a440557afd3c2b25cb568517db44d230833743f3db30729126efe4d7fc616a42718dd76255bbefcb7d3cc7e3ff5989d907b3 - languageName: node - linkType: hard - -"cssnano@npm:^4.1.10": - version: 4.1.11 - resolution: "cssnano@npm:4.1.11" - dependencies: - cosmiconfig: "npm:^5.0.0" - cssnano-preset-default: "npm:^4.0.8" - is-resolvable: "npm:^1.0.0" - postcss: "npm:^7.0.0" - checksum: 8c0/ca0898a512b203437fd8320b3618aa9806db8fed3406389c83f071b9e52e49b3b9e11c628a56690e61451bdc33dc63cd01567d94d599afd4087f548769ffa19e - languageName: node - linkType: hard - -"cssnano@npm:^6.0.1": - version: 6.0.1 - resolution: "cssnano@npm:6.0.1" - dependencies: - cssnano-preset-default: "npm:^6.0.1" - lilconfig: "npm:^2.1.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/b73a3a257dd32201ce504cb34b08f1259c8a260b063f58d33e03283149d94ee2ba938d7f9beae1413f0f34e06828759575ade6ae95fa01d199f291e1d4f6d2c2 - languageName: node - linkType: hard - -"csso@npm:^4.0.2, csso@npm:^4.2.0": - version: 4.2.0 - resolution: "csso@npm:4.2.0" - dependencies: - css-tree: "npm:^1.1.2" - checksum: 8c0/f8c6b1300efaa0f8855a7905ae3794a29c6496e7f16a71dec31eb6ca7cfb1f058a4b03fd39b66c4deac6cb06bf6b4ba86da7b67d7320389cb9994d52b924b903 - languageName: node - linkType: hard - -"csso@npm:^5.0.5": - version: 5.0.5 - resolution: "csso@npm:5.0.5" - dependencies: - css-tree: "npm:~2.2.0" - checksum: 8c0/ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b - languageName: node - linkType: hard - -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: 8c0/0d4fc70255ea3afbd4add79caffa3b01720929da91105340600d8c0f06c31716f933c6314c3d43b62b57c9637bc2eb35296a9e2db427e8b572ee38a4be2b5f82 - languageName: node - linkType: hard - -"cssom@npm:^0.5.0": - version: 0.5.0 - resolution: "cssom@npm:0.5.0" - checksum: 8c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 8c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: "npm:~0.3.6" - checksum: 8c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 - languageName: node - linkType: hard - -"csstype@npm:^2.5.7": - version: 2.6.17 - resolution: "csstype@npm:2.6.17" - checksum: 8c0/a23c2f571a4c593ef78fb2c15583665f591e1167e2596c037a6cdbea9c0754ae6c79cc2ba726a3970f6984552127b995cbb9a17c5f6b2a2085aa9e6f50e23b35 - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.0.8 - resolution: "csstype@npm:3.0.8" - checksum: 8c0/b76b31939e0d534d2128656a829512e989b739a81630217389ef47583903d42bfca180ad4fe68be6c4fd3621dcb5643e48e3b6d8df9f7802d7df4f38a9dc981f - languageName: node - linkType: hard - -"cyclist@npm:^1.0.1": - version: 1.0.1 - resolution: "cyclist@npm:1.0.1" - checksum: 8c0/3381d3b66a3b268e6e0abcc1fa8fbeeb9a98391d8455677509f9833813d7680cc737a10141f54c229e42f5b3133250f36f1aa04f56ef4ba9b29fa728c3c48c01 - languageName: node - linkType: hard - -"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:^3.1.6": - version: 3.2.4 - resolution: "d3-array@npm:3.2.4" - dependencies: - internmap: "npm:1 - 2" - checksum: 08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50 - languageName: node - linkType: hard - -"d3-array@npm:2, d3-array@npm:^2.3.0": - version: 2.12.1 - resolution: "d3-array@npm:2.12.1" - dependencies: - internmap: "npm:^1.0.0" - checksum: 7eca10427a9f113a4ca6a0f7301127cab26043fd5e362631ef5a0edd1c4b2dd70c56ed317566700c31e4a6d88b55f3951aaba192291817f243b730cb2352882e - languageName: node - linkType: hard - -"d3-color@npm:1 - 2": - version: 2.0.0 - resolution: "d3-color@npm:2.0.0" - checksum: 5aa58dfb78e3db764373a904eabb643dc024ff6071128a41e86faafa100e0e17a796e06ac3f2662e9937242bb75b8286788629773d76936f11c17bd5fe5e15cd - languageName: node - linkType: hard - -"d3-color@npm:1 - 3, d3-color@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-color@npm:3.1.0" - checksum: a4e20e1115fa696fce041fbe13fbc80dc4c19150fa72027a7c128ade980bc0eeeba4bcf28c9e21f0bce0e0dbfe7ca5869ef67746541dcfda053e4802ad19783c - languageName: node - linkType: hard - -"d3-ease@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-ease@npm:3.0.1" - checksum: fec8ef826c0cc35cda3092c6841e07672868b1839fcaf556e19266a3a37e6bc7977d8298c0fcb9885e7799bfdcef7db1baaba9cd4dcf4bc5e952cf78574a88b0 - languageName: node - linkType: hard - -"d3-format@npm:1 - 2": - version: 2.0.0 - resolution: "d3-format@npm:2.0.0" - checksum: c869af459e20767dc3d9cbb2946ba79cc266ae4fb35d11c50c63fc89ea4ed168c702c7e3db94d503b3618de9609bf3bf2d855ef53e21109ddd7eb9c8f3fcf8a1 - languageName: node - linkType: hard - -"d3-format@npm:1 - 3": - version: 3.1.0 - resolution: "d3-format@npm:3.1.0" - checksum: 049f5c0871ebce9859fc5e2f07f336b3c5bfff52a2540e0bac7e703fce567cd9346f4ad1079dd18d6f1e0eaa0599941c1810898926f10ac21a31fd0a34b4aa75 - languageName: node - linkType: hard - -"d3-format@npm:^1.4.4": - version: 1.4.5 - resolution: "d3-format@npm:1.4.5" - checksum: 40800a2fb2182d2d711cea3acc2b8b2b3afdb6f644c51de77feb9b08a6150b14c753933d2fd4ad2f6f45130757b738673372c45b4b820466c560f3b1ec0b3ce8 - languageName: node - linkType: hard - -"d3-hierarchy@npm:^1.1.8": - version: 1.1.9 - resolution: "d3-hierarchy@npm:1.1.9" - checksum: 63b0ae0953bda076866b8705f8ea6fa1f67ded7ee99d98b20ef4364ce21868c292c9b45e887fde0f0dba1d0202466b2a87e7d5a6cc6388e759aadc5f055142e0 - languageName: node - linkType: hard - -"d3-interpolate@npm:1 - 2, d3-interpolate@npm:1.2.0 - 2, d3-interpolate@npm:^2.0.1": - version: 2.0.1 - resolution: "d3-interpolate@npm:2.0.1" - dependencies: - d3-color: "npm:1 - 2" - checksum: 2a5725b0c9c7fef3e8878cf75ad67be851b1472de3dda1f694c441786a1a32e198ddfaa6880d6b280401c1af5b844b61ccdd63d85d1607c1e6bb3a3f0bf532ea - languageName: node - linkType: hard - -"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-interpolate@npm:3.0.1" - dependencies: - d3-color: "npm:1 - 3" - checksum: 19f4b4daa8d733906671afff7767c19488f51a43d251f8b7f484d5d3cfc36c663f0a66c38fe91eee30f40327443d799be17169f55a293a3ba949e84e57a33e6a - languageName: node - linkType: hard - -"d3-path@npm:1": - version: 1.0.9 - resolution: "d3-path@npm:1.0.9" - checksum: e35e84df5abc18091f585725b8235e1fa97efc287571585427d3a3597301e6c506dea56b11dfb3c06ca5858b3eb7f02c1bf4f6a716aa9eade01c41b92d497eb5 - languageName: node - linkType: hard - -"d3-path@npm:^3.1.0": - version: 3.1.0 - resolution: "d3-path@npm:3.1.0" - checksum: dc1d58ec87fa8319bd240cf7689995111a124b141428354e9637aa83059eb12e681f77187e0ada5dedfce346f7e3d1f903467ceb41b379bfd01cd8e31721f5da - languageName: node - linkType: hard - -"d3-scale-chromatic@npm:^2.0.0": - version: 2.0.0 - resolution: "d3-scale-chromatic@npm:2.0.0" - dependencies: - d3-color: "npm:1 - 2" - d3-interpolate: "npm:1 - 2" - checksum: 93cafe497b00046b1d4e237a8bb8981fbb35ba03070f420bd913872f6e9d2c9628ed8bb8c84c6a6ffe16029359fa74b646c5c5129732ef4186ab059a77da3021 - languageName: node - linkType: hard - -"d3-scale@npm:^3.2.3": - version: 3.3.0 - resolution: "d3-scale@npm:3.3.0" - dependencies: - d3-array: "npm:^2.3.0" - d3-format: "npm:1 - 2" - d3-interpolate: "npm:1.2.0 - 2" - d3-time: "npm:^2.1.1" - d3-time-format: "npm:2 - 3" - checksum: cb63c271ec9c5b632c245c63e0d0716b32adcc468247972c552f5be62fb34a17f71e4ac29fd8976704369f4b958bc6789c61a49427efe2160ae979d7843569dc - languageName: node - linkType: hard - -"d3-scale@npm:^4.0.2": - version: 4.0.2 - resolution: "d3-scale@npm:4.0.2" - dependencies: - d3-array: "npm:2.10.0 - 3" - d3-format: "npm:1 - 3" - d3-interpolate: "npm:1.2.0 - 3" - d3-time: "npm:2.1.1 - 3" - d3-time-format: "npm:2 - 4" - checksum: 65d9ad8c2641aec30ed5673a7410feb187a224d6ca8d1a520d68a7d6eac9d04caedbff4713d1e8545be33eb7fec5739983a7ab1d22d4e5ad35368c6729d362f1 - languageName: node - linkType: hard - -"d3-shape@npm:^1.3.5": - version: 1.3.7 - resolution: "d3-shape@npm:1.3.7" - dependencies: - d3-path: "npm:1" - checksum: 548057ce59959815decb449f15632b08e2a1bdce208f9a37b5f98ec7629dda986c2356bc7582308405ce68aedae7d47b324df41507404df42afaf352907577ae - languageName: node - linkType: hard - -"d3-shape@npm:^3.1.0": - version: 3.2.0 - resolution: "d3-shape@npm:3.2.0" - dependencies: - d3-path: "npm:^3.1.0" - checksum: f1c9d1f09926daaf6f6193ae3b4c4b5521e81da7d8902d24b38694517c7f527ce3c9a77a9d3a5722ad1e3ff355860b014557b450023d66a944eabf8cfde37132 - languageName: node - linkType: hard - -"d3-time-format@npm:2 - 3, d3-time-format@npm:^3.0.0": - version: 3.0.0 - resolution: "d3-time-format@npm:3.0.0" - dependencies: - d3-time: "npm:1 - 2" - checksum: 0abe3379f07d1c12ce8930cdddad1223c99cd3e4eac05cf409b5a7953e9ebed56a95a64b0977f63958cfb6101fa4a2a85533a5eae40df84f22c0117dbf5e8982 - languageName: node - linkType: hard - -"d3-time-format@npm:2 - 4": - version: 4.1.0 - resolution: "d3-time-format@npm:4.1.0" - dependencies: - d3-time: "npm:1 - 3" - checksum: 735e00fb25a7fd5d418fac350018713ae394eefddb0d745fab12bbff0517f9cdb5f807c7bbe87bb6eeb06249662f8ea84fec075f7d0cd68609735b2ceb29d206 - languageName: node - linkType: hard - -"d3-time@npm:1 - 2, d3-time@npm:^2.1.1": - version: 2.1.1 - resolution: "d3-time@npm:2.1.1" - dependencies: - d3-array: "npm:2" - checksum: 4a01770a857bc37d2bafb8f00250e0e6a1fcc8051aea93e5eed168d8ee93e92da508a75ab5e42fc5472aa37e2a83aac68afaf3f12d9167c184ce781faadf5682 - languageName: node - linkType: hard - -"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:^3.0.0": - version: 3.1.0 - resolution: "d3-time@npm:3.1.0" - dependencies: - d3-array: "npm:2 - 3" - checksum: a984f77e1aaeaa182679b46fbf57eceb6ebdb5f67d7578d6f68ef933f8eeb63737c0949991618a8d29472dbf43736c7d7f17c452b2770f8c1271191cba724ca1 - languageName: node - linkType: hard - -"d3-time@npm:^1.0.11": - version: 1.1.0 - resolution: "d3-time@npm:1.1.0" - checksum: 69ab137adff5b22d0fa148ea514a207bd9cd7d2c042ccf34a268f2ef73720b404f0be6e7b56c95650c53caf52080b5254e2a27f0a676f41d1dd22ef8872c8335 - languageName: node - linkType: hard - -"d3-timer@npm:^3.0.1": - version: 3.0.1 - resolution: "d3-timer@npm:3.0.1" - checksum: d4c63cb4bb5461d7038aac561b097cd1c5673969b27cbdd0e87fa48d9300a538b9e6f39b4a7f0e3592ef4f963d858c8a9f0e92754db73116770856f2fc04561a - languageName: node - linkType: hard - -"damerau-levenshtein@npm:^1.0.7, damerau-levenshtein@npm:^1.0.8": - version: 1.0.8 - resolution: "damerau-levenshtein@npm:1.0.8" - checksum: 8c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 - languageName: node - linkType: hard - -"data-uri-to-buffer@npm:^2.0.0": - version: 2.0.2 - resolution: "data-uri-to-buffer@npm:2.0.2" - checksum: 8c0/341b6191ed65fa453e97a6d44db06082121ebc2ef3e6e096dfb6a1ebbc75e8be39d4199a5b4dba0f0efc43f2a3b2bcc276d85cf1407eba880eb09ebf17c3c31e - languageName: node - linkType: hard - -"data-urls@npm:^2.0.0": - version: 2.0.0 - resolution: "data-urls@npm:2.0.0" - dependencies: - abab: "npm:^2.0.3" - whatwg-mimetype: "npm:^2.3.0" - whatwg-url: "npm:^8.0.0" - checksum: 8c0/1246442178eb756afb1d99e54669a119eafb3e69c73300d14089687c50c64f9feadd93c973f496224a12f89daa94267a6114aecd70e9b279c09d908c5be44d01 - languageName: node - linkType: hard - -"data-urls@npm:^3.0.2": - version: 3.0.2 - resolution: "data-urls@npm:3.0.2" - dependencies: - abab: "npm:^2.0.6" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - checksum: 8c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 - languageName: node - linkType: hard - -"dataloader@npm:2.1.0": - version: 2.1.0 - resolution: "dataloader@npm:2.1.0" - checksum: 8c0/91749b97c6cf218874aecc57116defbe28eb5dd102a2a6e292e084939f725d123dd49c186796069492a77eb105ff2aabae9c8b144cf82f92c1f673eb1abff7da - languageName: node - linkType: hard - -"date-fns@npm:^1.27.2": - version: 1.30.1 - resolution: "date-fns@npm:1.30.1" - checksum: 8c0/bad6ad7c15180121e15d61ad62a4a214c108d66f35b35f5eeb6ade837a3c29aa4444b9528a93a5374b95ba11231c142276351bf52f4d168676f9a1e17ce3726a - languageName: node - linkType: hard - -"date-fns@npm:^2.0.1, date-fns@npm:^2.16.1": - version: 2.22.1 - resolution: "date-fns@npm:2.22.1" - checksum: 8c0/918c02e884bc821a9db25ba0ae5317f3131d05291ae755c5f0094e6035d784e562574c1de9d12c9dce2c3eeabea92bde72c13274b87418d371312bb2670044d4 - languageName: node - linkType: hard - -"date-fns@npm:^2.28.0, date-fns@npm:^2.30.0": - version: 2.30.0 - resolution: "date-fns@npm:2.30.0" - dependencies: - "@babel/runtime": "npm:^7.21.0" - checksum: 8c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 - languageName: node - linkType: hard - -"dateformat@npm:^4.5.1": - version: 4.5.1 - resolution: "dateformat@npm:4.5.1" - checksum: 8c0/b8a0729386254f8e1633b552f156160777302f91cd81bba3dc91641b80ce2ea7f330e2980e95ee460e079fb4d7d1b821ef8562f38dc2b461c7101db9b503f504 - languageName: node - linkType: hard - -"debounce@npm:^1.2.0": - version: 1.2.1 - resolution: "debounce@npm:1.2.1" - checksum: 8c0/6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 - languageName: node - linkType: hard - -"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3, debug@npm:^2.6.0, debug@npm:^2.6.9": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: "npm:2.0.0" - checksum: 8c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:4.3.2, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.0, debug@npm:^4.3.1": - version: 4.3.2 - resolution: "debug@npm:4.3.2" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 8c0/3cc408070bcee066ee9b2a4f3a9c40f53728919ec7c7ff568f7c3a75b0723cb5a8407191a63495be4e10669e99b0ff7f26ec70e10b025da1898cdce4876d96ca - languageName: node - linkType: hard - -"debug@npm:^3.0.0, debug@npm:^3.1.1, debug@npm:^3.2.6, debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 8c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a - languageName: node - linkType: hard - -"debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: "npm:2.1.2" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 8c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 - languageName: node - linkType: hard - -"decamelize@npm:5.0.1": - version: 5.0.1 - resolution: "decamelize@npm:5.0.1" - checksum: 8c0/3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3 - languageName: node - linkType: hard - -"decamelize@npm:^1.2.0": - version: 1.2.0 - resolution: "decamelize@npm:1.2.0" - checksum: 8c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 - languageName: node - linkType: hard - -"decamelize@npm:^2.0.0": - version: 2.0.0 - resolution: "decamelize@npm:2.0.0" - dependencies: - xregexp: "npm:4.0.0" - checksum: 8c0/7908c37fa2e20022cfbf425c03aebdc8dee3c57b6c64135bbf23007f40528dd2463b4fb28755ee5dec7be3aca4b1d136de962bea6a886518b27c558b0f3a8bb5 - languageName: node - linkType: hard - -"decamelize@npm:^4.0.0": - version: 4.0.0 - resolution: "decamelize@npm:4.0.0" - checksum: 8c0/e06da03fc05333e8cd2778c1487da67ffbea5b84e03ca80449519b8fa61f888714bbc6f459ea963d5641b4aa98832130eb5cd193d90ae9f0a27eee14be8e278d - languageName: node - linkType: hard - -"decimal.js-light@npm:^2.4.1": - version: 2.5.1 - resolution: "decimal.js-light@npm:2.5.1" - checksum: 4fd33f535aac9e5bd832796831b65d9ec7914ad129c7437b3ab991b0c2eaaa5a57e654e6174c4a17f1b3895ea366f0c1ab4955cdcdf7cfdcf3ad5a58b456c020 - languageName: node - linkType: hard - -"decimal.js@npm:^10.2.1": - version: 10.2.1 - resolution: "decimal.js@npm:10.2.1" - checksum: 8c0/10b5baef9e4f1ce5df535b759acf7b3b72c7ceb252e200f063bdd08dde3dec51aa2ef9e4300fba98cc23ffd134e904b869fab3b74ad23fd23a06678c3946f1b5 - languageName: node - linkType: hard - -"decimal.js@npm:^10.4.2": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 8c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.0 - resolution: "decode-uri-component@npm:0.2.0" - checksum: 8c0/dbc3c72e4a740703f76fb3f51e35bb81546aa3e8c7897e015b8bc289813d3044ad6eaa6048fbb43f6b7b34ef005527b7511da50399caa78b91ee39266a341822 - languageName: node - linkType: hard - -"decompress-response@npm:^3.3.0": - version: 3.3.0 - resolution: "decompress-response@npm:3.3.0" - dependencies: - mimic-response: "npm:^1.0.0" - checksum: 8c0/5ffaf1d744277fd51c68c94ddc3081cd011b10b7de06637cccc6ecba137d45304a09ba1a776dee1c47fccc60b4a056c4bc74468eeea798ff1f1fca0024b45c9d - languageName: node - linkType: hard - -"decompress-response@npm:^6.0.0": - version: 6.0.0 - resolution: "decompress-response@npm:6.0.0" - dependencies: - mimic-response: "npm:^3.1.0" - checksum: bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e - languageName: node - linkType: hard - -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 8c0/7c3aa00ddfe3e5fcd477958e156156a5137e3bb6ff1493ca05edff4decf29a90a057974cc77e75951f8eb801c1816cb45aea1f52d628cdd000b82b36ab839d1b - languageName: node - linkType: hard - -"dedent@npm:^1.0.0": - version: 1.5.1 - resolution: "dedent@npm:1.5.1" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 8c0/f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 - languageName: node - linkType: hard - -"deep-equal@npm:^1.0.1": - version: 1.1.1 - resolution: "deep-equal@npm:1.1.1" - dependencies: - is-arguments: "npm:^1.0.4" - is-date-object: "npm:^1.0.1" - is-regex: "npm:^1.0.4" - object-is: "npm:^1.0.1" - object-keys: "npm:^1.1.1" - regexp.prototype.flags: "npm:^1.2.0" - checksum: 8c0/473d5dd1d707afd5ad3068864765590591b049d0e0d9a01931599dbbd820e35f09d0a42faa6e4644deb7cf6b7dc90f7bfdf5559f42279d67f714209b62036212 - languageName: node - linkType: hard - -"deep-equal@npm:^2.0.5": - version: 2.2.0 - resolution: "deep-equal@npm:2.2.0" - dependencies: - call-bind: "npm:^1.0.2" - es-get-iterator: "npm:^1.1.2" - get-intrinsic: "npm:^1.1.3" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.1" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.4.3" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: 8c0/31de99f3c1b516ef67ba82cbe54fdc1691cdd93ab8ede561eee94f7f8baff6594ddc0860c48707f6cd12e4efd5421e3450e20c40ca71906a9d0abe9017944cd3 - languageName: node - linkType: hard - -"deep-extend@npm:^0.6.0": - version: 0.6.0 - resolution: "deep-extend@npm:0.6.0" - checksum: 8c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 - languageName: node - linkType: hard - -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": - version: 0.1.3 - resolution: "deep-is@npm:0.1.3" - checksum: 8c0/f4e21bf6fbb51bca0214e04f079deadfc5a0df3d7822f4b5e45e78960ae1e9a379b93d650377b80ccd0fc6bd7cd995a0aeabbcc7496b8c2dd16ec57aece82d74 - languageName: node - linkType: hard - -"deep-object-diff@npm:^1.1.0": - version: 1.1.0 - resolution: "deep-object-diff@npm:1.1.0" - checksum: 8c0/74dabb27baf6edf8bc9b6c2e40ed2a5e143e2143d142ea6d7c366e29492b393deac1667cef2f3bf605dfdaca12fb07afce865426b041c681f7352ea1694dbac8 - languageName: node - linkType: hard - -"deepmerge@npm:4.3.1, deepmerge@npm:^4.3.1": - version: 4.3.1 - resolution: "deepmerge@npm:4.3.1" - checksum: 8c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 - languageName: node - linkType: hard - -"deepmerge@npm:^4.2.2": - version: 4.2.2 - resolution: "deepmerge@npm:4.2.2" - checksum: 8c0/d6136eee869057fea7a829aa2d10073ed49db5216e42a77cc737dd385334aab9b68dae22020a00c24c073d5f79cbbdd3f11b8d4fc87700d112ddaa0e1f968ef2 - languageName: node - linkType: hard - -"default-gateway@npm:^4.2.0": - version: 4.2.0 - resolution: "default-gateway@npm:4.2.0" - dependencies: - execa: "npm:^1.0.0" - ip-regex: "npm:^2.1.0" - checksum: 8c0/2f499b3a9a6c995fd2b4c0d2411256b1899c94e7eacdb895be64e25c301fa8bce8fd3f8152e540669bb178c6a355154c2f86ec23d4ff40ff3b8413d2a59cd86d - languageName: node - linkType: hard - -"default-gateway@npm:^6.0.3": - version: 6.0.3 - resolution: "default-gateway@npm:6.0.3" - dependencies: - execa: "npm:^5.0.0" - checksum: 8c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba - languageName: node - linkType: hard - -"defaults@npm:^1.0.3": - version: 1.0.4 - resolution: "defaults@npm:1.0.4" - dependencies: - clone: "npm:^1.0.2" - checksum: 8c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a - languageName: node - linkType: hard - -"defer-to-connect@npm:^1.0.1": - version: 1.1.3 - resolution: "defer-to-connect@npm:1.1.3" - checksum: 8c0/9feb161bd7d21836fdff31eba79c2b11b7aaf844be58faf727121f8b0d9c2e82b494560df0903f41b52dd75027dc7c9455c11b3739f3202b28ca92b56c8f960e - languageName: node - linkType: hard - -"defer-to-connect@npm:^2.0.0": - version: 2.0.1 - resolution: "defer-to-connect@npm:2.0.1" - checksum: 625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 - languageName: node - linkType: hard - -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": - version: 1.1.1 - resolution: "define-data-property@npm:1.1.1" - dependencies: - get-intrinsic: "npm:^1.2.1" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: 77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94 - languageName: node - linkType: hard - -"define-lazy-prop@npm:^2.0.0": - version: 2.0.0 - resolution: "define-lazy-prop@npm:2.0.0" - checksum: 8c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" - dependencies: - object-keys: "npm:^1.0.12" - checksum: 8c0/a2fa03d97ee44bb7c679bac7c3b3e63431a2efd83c12c0d61c7f5adf4fa1cf0a669c77afd274babbc5400926bdc2befb25679e4bf687140b078c0fe14f782e4f - languageName: node - linkType: hard - -"define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 8c0/1e09acd814c3761f2355d9c8a18fbc2b5d2e1073e1302245c134e96aacbff51b152e2a6f5f5db23af3c43e26f4e3a0d42f569aa4135f49046246c934bfb8e1dc - languageName: node - linkType: hard - -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" - dependencies: - define-data-property: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 - languageName: node - linkType: hard - -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: "npm:^0.1.0" - checksum: 8c0/9986915c0893818dedc9ca23eaf41370667762fd83ad8aa4bf026a28563120dbaacebdfbfbf2b18d3b929026b9c6ee972df1dbf22de8fafb5fe6ef18361e4750 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: "npm:^1.0.0" - checksum: 8c0/d7cf09db10d55df305f541694ed51dafc776ad9bb8a24428899c9f2d36b11ab38dce5527a81458d1b5e7c389f8cbe803b4abad6e91a0037a329d153b84fc975e - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: "npm:^1.0.2" - isobject: "npm:^3.0.1" - checksum: 8c0/f91a08ad008fa764172a2c072adc7312f10217ade89ddaea23018321c6d71b2b68b8c229141ed2064179404e345c537f1a2457c379824813695b51a6ad3e4969 - languageName: node - linkType: hard - -"del@npm:^4.1.1": - version: 4.1.1 - resolution: "del@npm:4.1.1" - dependencies: - "@types/glob": "npm:^7.1.1" - globby: "npm:^6.1.0" - is-path-cwd: "npm:^2.0.0" - is-path-in-cwd: "npm:^2.0.0" - p-map: "npm:^2.0.0" - pify: "npm:^4.0.1" - rimraf: "npm:^2.6.3" - checksum: 8c0/ed3233e86e39c0a6a7ea85d8ad0ebc00603078ad408b9c34b4742f707c20028c5731dce2e8aa9a6eb5ae6bee30ccc5405cf7b5d457306520e37c92d0410b6061 - languageName: node - linkType: hard - -"del@npm:^6.0.0": - version: 6.0.0 - resolution: "del@npm:6.0.0" - dependencies: - globby: "npm:^11.0.1" - graceful-fs: "npm:^4.2.4" - is-glob: "npm:^4.0.1" - is-path-cwd: "npm:^2.2.0" - is-path-inside: "npm:^3.0.2" - p-map: "npm:^4.0.0" - rimraf: "npm:^3.0.2" - slash: "npm:^3.0.0" - checksum: 8c0/c803f6b8a7633cb28ac2feb581175af829ac2fcd1ab3f59aa1f012800898b84e8a4368243850a1590666a55f567347628cf44048bf12aba2e37debde6d589c1a - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 8c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 - languageName: node - linkType: hard - -"delegate@npm:^3.1.2": - version: 3.2.0 - resolution: "delegate@npm:3.2.0" - checksum: 8c0/f8512633514f375b8675018088fdd679d92b84246ad6ba1de9fbc4ea7630f7fb0ff8772ac86c37a68233885f58c6b8b70676d7366f38cb2dcbf7baa474e2362d - languageName: node - linkType: hard - -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: 8c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 - languageName: node - linkType: hard - -"denque@npm:^2.1.0": - version: 2.1.0 - resolution: "denque@npm:2.1.0" - checksum: 8c0/f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363 - languageName: node - linkType: hard - -"depd@npm:2.0.0, depd@npm:^2.0.0, depd@npm:~2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: 8c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c - languageName: node - linkType: hard - -"depd@npm:~1.1.2": - version: 1.1.2 - resolution: "depd@npm:1.1.2" - checksum: 8c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 - languageName: node - linkType: hard - -"dependency-graph@npm:^0.11.0": - version: 0.11.0 - resolution: "dependency-graph@npm:0.11.0" - checksum: 8c0/9e6968d1534fdb502f7f3a25a3819b499f9d60f8389193950ed0b4d1618f1341b36b5d039f2cee256cfe10c9e8198ace16b271e370df06a93fac206e81602e7c - languageName: node - linkType: hard - -"deprecated-decorator@npm:^0.1.6": - version: 0.1.6 - resolution: "deprecated-decorator@npm:0.1.6" - checksum: 8c0/52427ae3389b6b20d98624db92a89f1f4f568649fe2d15091d71a2d6171cf42c3114d6f98b458518d949681a8baec6a123a61015a4576e8894a219b35cf89ad0 - languageName: node - linkType: hard - -"dequal@npm:^2.0.3": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 - languageName: node - linkType: hard - -"des.js@npm:^1.0.0": - version: 1.0.1 - resolution: "des.js@npm:1.0.1" - dependencies: - inherits: "npm:^2.0.1" - minimalistic-assert: "npm:^1.0.0" - checksum: 8c0/69bf742d1c381e01d75151bdcaac71a18d251d7debfc9b6ae5ee4b4edaf39691ae203c5ec9173ba89aedb3ddc622cdff4fca065448c6c2afb1140d9fb826339d - languageName: node - linkType: hard - -"destroy@npm:1.2.0": - version: 1.2.0 - resolution: "destroy@npm:1.2.0" - checksum: 8c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 - languageName: node - linkType: hard - -"destroy@npm:~1.0.4": - version: 1.0.4 - resolution: "destroy@npm:1.0.4" - checksum: 8c0/eab493808ba17a1fa22c71ef1a4e68d2c4c5222a38040606c966d2ab09117f3a7f3e05c39bffbe41a697f9de552039e43c30e46f0c3eab3faa9f82e800e172a0 - languageName: node - linkType: hard - -"detab@npm:2.0.4": - version: 2.0.4 - resolution: "detab@npm:2.0.4" - dependencies: - repeat-string: "npm:^1.5.4" - checksum: 8c0/969c7f5a04fc3f8c52eb3b9db2fd4ba20b9b9ce56c5659ebf4cf93ba6c1be68b651665d053affbe99e76733cf7d134546cdd6be038af368f8365f42a646d5fb8 - languageName: node - linkType: hard - -"detect-file@npm:^1.0.0": - version: 1.0.0 - resolution: "detect-file@npm:1.0.0" - checksum: 8c0/c782a5f992047944c39d337c82f5d1d21d65d1378986d46c354df9d9ec6d5f356bca0182969c11b08b9b8a7af8727b3c2d5a9fad0b022be4a3bf4c216f63ed07 - languageName: node - linkType: hard - -"detect-indent@npm:^6.0.0": - version: 6.1.0 - resolution: "detect-indent@npm:6.1.0" - checksum: 8c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 - languageName: node - linkType: hard - -"detect-libc@npm:^2.0.0": - version: 2.0.1 - resolution: "detect-libc@npm:2.0.1" - checksum: 8c0/153009d0ce4073ea885a97641aa1cc0327ff168b971fa3c770958345ad3ead4618f3747334435dc8edff32c0f56d8ba16dcf5271543c99b24af532b1cf84a61d - languageName: node - linkType: hard - -"detect-newline@npm:^3.0.0": - version: 3.1.0 - resolution: "detect-newline@npm:3.1.0" - checksum: 8c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d - languageName: node - linkType: hard - -"detect-node-es@npm:^1.1.0": - version: 1.1.0 - resolution: "detect-node-es@npm:1.1.0" - checksum: e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe - languageName: node - linkType: hard - -"detect-node@npm:^2.0.4": - version: 2.1.0 - resolution: "detect-node@npm:2.1.0" - checksum: 8c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 - languageName: node - linkType: hard - -"detect-port-alt@npm:1.1.6": - version: 1.1.6 - resolution: "detect-port-alt@npm:1.1.6" - dependencies: - address: "npm:^1.0.1" - debug: "npm:^2.6.0" - bin: - detect: ./bin/detect-port - detect-port: ./bin/detect-port - checksum: 8c0/7269e6aef7b782d98c77505c07a7a0f5e2ee98a9607dc791035fc0192fc58aa03cc833fae605e10eaf239a2a5a55cd938e0bb141dea764ac6180ca082fd62b23 - languageName: node - linkType: hard - -"detect-port@npm:^1.3.0": - version: 1.3.0 - resolution: "detect-port@npm:1.3.0" - dependencies: - address: "npm:^1.0.1" - debug: "npm:^2.6.0" - bin: - detect: ./bin/detect-port - detect-port: ./bin/detect-port - checksum: 8c0/6cafbd72d4f20860ea580b2f06e4c3350452ecb9acdfc1051c49b8a3dfa6f3d6bb252a69c0e97b3c5e13a2fa31a368aca2f7102e996e2caa7c938f3053b72b62 - languageName: node - linkType: hard - -"dicer@npm:0.3.0": - version: 0.3.0 - resolution: "dicer@npm:0.3.0" - dependencies: - streamsearch: "npm:0.1.2" - checksum: 8c0/4486f0448233145216cfadd5f6bbb4c26c3a28824da5344322b06051632e99d6af2b44f893fa8b30f1749ad175b4e565d301c760d0437226d9e41ccdb6546f35 - languageName: node - linkType: hard - -"didyoumean@npm:^1.2.2": - version: 1.2.2 - resolution: "didyoumean@npm:1.2.2" - checksum: 95d0b53d23b851aacff56dfadb7ecfedce49da4232233baecfeecb7710248c4aa03f0aa8995062f0acafaf925adf8536bd7044a2e68316fd7d411477599bc27b - languageName: node - linkType: hard - -"diff-sequences@npm:^26.6.2": - version: 26.6.2 - resolution: "diff-sequences@npm:26.6.2" - checksum: 8c0/a576b78f542377ce2bb032aa91aaf12376c6f562f79b2570f5fe16b4c18acff78de144ae44f0d86bedfe9c29ef38aa027db963850213e07bbc1c1a3b2834e861 - languageName: node - linkType: hard - -"diff-sequences@npm:^29.3.1": - version: 29.3.1 - resolution: "diff-sequences@npm:29.3.1" - checksum: 8c0/adbacc8d56c42f73c12a90e253c2b7024d2cd52c30bd81a3960a9cfd35164f8ecd3d8dd82ded38b0e48585923b56bd28f9aae942e6d1b23f444213b9d786b925 - languageName: node - linkType: hard - -"diff-sequences@npm:^29.6.3": - version: 29.6.3 - resolution: "diff-sequences@npm:29.6.3" - checksum: 8c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 - languageName: node - linkType: hard - -"diff@npm:^4.0.1": - version: 4.0.2 - resolution: "diff@npm:4.0.2" - checksum: 8c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 - languageName: node - linkType: hard - -"diffie-hellman@npm:^5.0.0": - version: 5.0.3 - resolution: "diffie-hellman@npm:5.0.3" - dependencies: - bn.js: "npm:^4.1.0" - miller-rabin: "npm:^4.0.0" - randombytes: "npm:^2.0.0" - checksum: 8c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf - languageName: node - linkType: hard - -"dir-glob@npm:^2.2.2": - version: 2.2.2 - resolution: "dir-glob@npm:2.2.2" - dependencies: - path-type: "npm:^3.0.0" - checksum: 8c0/67575fd496df80ec90969f1a9f881f03b4ef614ca2c07139df81a12f9816250780dff906f482def0f897dd748d22fa13c076b52ac635e0024f7d434846077a3a - languageName: node - linkType: hard - -"dir-glob@npm:^3.0.1": - version: 3.0.1 - resolution: "dir-glob@npm:3.0.1" - dependencies: - path-type: "npm:^4.0.0" - checksum: 8c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c - languageName: node - linkType: hard - -"dlv@npm:^1.1.3": - version: 1.1.3 - resolution: "dlv@npm:1.1.3" - checksum: 03eb4e769f19a027fd5b43b59e8a05e3fd2100ac239ebb0bf9a745de35d449e2f25cfaf3aa3934664551d72856f4ae8b7822016ce5c42c2d27c18ae79429ec42 - languageName: node - linkType: hard - -"dns-equal@npm:^1.0.0": - version: 1.0.0 - resolution: "dns-equal@npm:1.0.0" - checksum: 8c0/da966e5275ac50546e108af6bc29aaae2164d2ae96d60601b333c4a3aff91f50b6ca14929cf91f20a9cad1587b356323e300cea3ff6588a6a816988485f445f1 - languageName: node - linkType: hard - -"dns-packet@npm:^1.3.1": - version: 1.3.4 - resolution: "dns-packet@npm:1.3.4" - dependencies: - ip: "npm:^1.1.0" - safe-buffer: "npm:^5.0.1" - checksum: 8c0/ee06478da192f9014ab43c7e9118c77b9e353a8d5c06b0d2cba367b3501dd7453bcfed89354a8890cf740491379dcf4b28153d064d051e55c30cfbdf92b88608 - languageName: node - linkType: hard - -"dns-packet@npm:^5.2.2": - version: 5.4.0 - resolution: "dns-packet@npm:5.4.0" - dependencies: - "@leichtgewicht/ip-codec": "npm:^2.0.1" - checksum: 8c0/bd5ecfd7d8b9cacd4d0029819699051c4e231d8fa6ed96e1573f7fee4b9147c3406207a260adbd7fb5c6d08a7db7641836467f450fa88e2ec5075f482e39ed77 - languageName: node - linkType: hard - -"dns-txt@npm:^2.0.2": - version: 2.0.2 - resolution: "dns-txt@npm:2.0.2" - dependencies: - buffer-indexof: "npm:^1.0.0" - checksum: 8c0/71703e65156a2d626216157e6c4fddd844e7e790b6cd3cec830ef8eed80e7ea2697e5f4f2f3eb3aae809be3c91e370cad7a5d91b05ce6b6fcd5e191e7e3d31ca - languageName: node - linkType: hard - -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 8c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 8c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 - languageName: node - linkType: hard - -"dom-accessibility-api@npm:^0.5.4": - version: 0.5.4 - resolution: "dom-accessibility-api@npm:0.5.4" - checksum: 8c0/b0b4efb0f7b742cae68553c3c45aad3c019242a4086b41147aa6865a1061d6f47090d804ef603ff02fc417f1b8f863b86774d58bc83c046f271034ecad4ed6d3 - languageName: node - linkType: hard - -"dom-accessibility-api@npm:^0.5.6": - version: 0.5.11 - resolution: "dom-accessibility-api@npm:0.5.11" - checksum: 8c0/b0c4d37266bdec1b450313fee6656b59908596e116a1aa7338315c764b546ac6c5cd21e3229915b649a82f8e54fb0c2edfb904d34fab9c40f0eb90048f3f52d7 - languageName: node - linkType: hard - -"dom-accessibility-api@npm:^0.5.9": - version: 0.5.16 - resolution: "dom-accessibility-api@npm:0.5.16" - checksum: 8c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 - languageName: node - linkType: hard - -"dom-converter@npm:^0.2, dom-converter@npm:^0.2.0": - version: 0.2.0 - resolution: "dom-converter@npm:0.2.0" - dependencies: - utila: "npm:~0.4" - checksum: 8c0/e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 - languageName: node - linkType: hard - -"dom-helpers@npm:^3.4.0": - version: 3.4.0 - resolution: "dom-helpers@npm:3.4.0" - dependencies: - "@babel/runtime": "npm:^7.1.2" - checksum: 1d2d3e4eadac2c4f4c8c7470a737ab32b7ec28237c4d094ea967ec3184168fd12452196fcc424a5d7860b6176117301aeaecba39467bf1a6e8492a8e5c9639d1 - languageName: node - linkType: hard - -"dom-helpers@npm:^5.0.1": - version: 5.2.1 - resolution: "dom-helpers@npm:5.2.1" - dependencies: - "@babel/runtime": "npm:^7.8.7" - csstype: "npm:^3.0.2" - checksum: f735074d66dd759b36b158fa26e9d00c9388ee0e8c9b16af941c38f014a37fc80782de83afefd621681b19ac0501034b4f1c4a3bff5caa1b8667f0212b5e124c - languageName: node - linkType: hard - -"dom-serializer@npm:0": - version: 0.2.2 - resolution: "dom-serializer@npm:0.2.2" - dependencies: - domelementtype: "npm:^2.0.1" - entities: "npm:^2.0.0" - checksum: 8c0/5cb595fb77e1a23eca56742f47631e6f4af66ce1982c7ed28b3d0ef21f1f50304c067adc29d3eaf824c572be022cee88627d0ac9b929408f24e923f3c7bed37b - languageName: node - linkType: hard - -"dom-serializer@npm:^1.0.1": - version: 1.3.2 - resolution: "dom-serializer@npm:1.3.2" - dependencies: - domelementtype: "npm:^2.0.1" - domhandler: "npm:^4.2.0" - entities: "npm:^2.0.0" - checksum: 8c0/0a39ff0634da807b0e7b4e28d20305658e366d920050296ea6a306c29eb4094a1bf942a72ec2e51145f01efcff93e98eaa1eef4c299ca398e326a2e1c4641220 - languageName: node - linkType: hard - -"dom-serializer@npm:^2.0.0": - version: 2.0.0 - resolution: "dom-serializer@npm:2.0.0" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.2" - entities: "npm:^4.2.0" - checksum: 8c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 - languageName: node - linkType: hard - -"dom-walk@npm:^0.1.0": - version: 0.1.2 - resolution: "dom-walk@npm:0.1.2" - checksum: 8c0/4d2ad9062a9423d890f8577aa202b597a6b85f9489bdde656b9443901b8b322b289655c3affefc58ec2e41931e0828dfee0a1d2db6829a607d76def5901fc5a9 - languageName: node - linkType: hard - -"domain-browser@npm:^1.1.1": - version: 1.2.0 - resolution: "domain-browser@npm:1.2.0" - checksum: 8c0/a955f482f4b4710fbd77c12a33e77548d63603c30c80f61a80519f27e3db1ba8530b914584cc9e9365d2038753d6b5bd1f4e6c81e432b007b0ec95b8b5e69b1b - languageName: node - linkType: hard - -"domelementtype@npm:1, domelementtype@npm:^1.3.1": - version: 1.3.1 - resolution: "domelementtype@npm:1.3.1" - checksum: 8c0/6d4f5761060a21eaf3c96545501e9d188745c7e1c31b8d141bf15d8748feeadba868f4ea32877751b8678b286fb1afbe6ae905ca3fb8f0214d8322e482cdbec0 - languageName: node - linkType: hard - -"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0": - version: 2.2.0 - resolution: "domelementtype@npm:2.2.0" - checksum: 8c0/0e3824e21fb9ff2cda9579ad04ef0068c58cc1746cf723560e1b4cb73ccae324062d468b25a576948459df7dd99e42d8a100b7fcfc6e05c8eefa2e6fed3f8f7d - languageName: node - linkType: hard - -"domelementtype@npm:^2.3.0": - version: 2.3.0 - resolution: "domelementtype@npm:2.3.0" - checksum: 8c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 - languageName: node - linkType: hard - -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" - dependencies: - webidl-conversions: "npm:^5.0.0" - checksum: 8c0/24a3a07b85420671bc805ead7305e0f2ec9e55f104889b64c5a9fa7d93681e514f05c65f947bd9401b3da67f77b92fe7861bd15f4d0d418c4d32e34a2cd55d38 - languageName: node - linkType: hard - -"domexception@npm:^4.0.0": - version: 4.0.0 - resolution: "domexception@npm:4.0.0" - dependencies: - webidl-conversions: "npm:^7.0.0" - checksum: 8c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 - languageName: node - linkType: hard - -"domhandler@npm:^2.3.0": - version: 2.4.2 - resolution: "domhandler@npm:2.4.2" - dependencies: - domelementtype: "npm:1" - checksum: 8c0/6670cab73e97e3c6771dcf22b537db3f6a0be0ad6b370f03bb5f1b585d3b563d326787fdabe1190b7ca9d81c804e9b3f8a1431159c27c44f6c05f94afa92be2d - languageName: node - linkType: hard - -"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0": - version: 4.2.0 - resolution: "domhandler@npm:4.2.0" - dependencies: - domelementtype: "npm:^2.2.0" - checksum: 8c0/fd4e6f1c986402e7a703b671c4f7bdb1dcf278d613ca02a38374eae9d1bba9b3b4d5983519ad902e43c5bd1281456d11f226694e7bb4cfc00dde6f1d5f3aa13e - languageName: node - linkType: hard - -"domhandler@npm:^4.3.1": - version: 4.3.1 - resolution: "domhandler@npm:4.3.1" - dependencies: - domelementtype: "npm:^2.2.0" - checksum: 8c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b - languageName: node - linkType: hard - -"domhandler@npm:^5.0.1, domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": - version: 5.0.3 - resolution: "domhandler@npm:5.0.3" - dependencies: - domelementtype: "npm:^2.3.0" - checksum: 8c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a - languageName: node - linkType: hard - -"domutils@npm:^1.5.1, domutils@npm:^1.7.0": - version: 1.7.0 - resolution: "domutils@npm:1.7.0" - dependencies: - dom-serializer: "npm:0" - domelementtype: "npm:1" - checksum: 8c0/437fcd2d6d6be03f488152e73c6f953e289c58496baa22be9626b2b46f9cfd40486ae77d144487ff6b102929a3231cdb9a8bf8ef485fb7b7c30c985daedc77eb - languageName: node - linkType: hard - -"domutils@npm:^2.4.3": - version: 2.6.0 - resolution: "domutils@npm:2.6.0" - dependencies: - dom-serializer: "npm:^1.0.1" - domelementtype: "npm:^2.2.0" - domhandler: "npm:^4.2.0" - checksum: 8c0/4d19a1d3321d4945e1032a268ac1614f1f97d79fabad66ac07ebe55e219e61b4082a6a315ec0833822d80485c7834e8166669cbcbbebeab4859d978686ee16de - languageName: node - linkType: hard - -"domutils@npm:^2.5.2, domutils@npm:^2.8.0": - version: 2.8.0 - resolution: "domutils@npm:2.8.0" - dependencies: - dom-serializer: "npm:^1.0.1" - domelementtype: "npm:^2.2.0" - domhandler: "npm:^4.2.0" - checksum: 8c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db - languageName: node - linkType: hard - -"domutils@npm:^3.0.1": - version: 3.0.1 - resolution: "domutils@npm:3.0.1" - dependencies: - dom-serializer: "npm:^2.0.0" - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.1" - checksum: 8c0/8ec14e7e54f58cae0062fa9aaf97c05a094733ff6df8ede588c57d96799ceb45d1ea46479e8dd285f43af43b3e7618a501b2b41d2c2080078d5947b5fee2b5f9 - languageName: node - linkType: hard - -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 - languageName: node - linkType: hard - -"dot-prop@npm:^4.2.1": - version: 4.2.1 - resolution: "dot-prop@npm:4.2.1" - dependencies: - is-obj: "npm:^1.0.0" - checksum: 8c0/ea0a98871ef4de0cce05325979517a43b70eb3a3671254fce78f2629c125d5ddb69cfdd5570ace4e41d9f02ced06374ea0444d1aeae70290a19f73e02093318e - languageName: node - linkType: hard - -"dot-prop@npm:^5.2.0": - version: 5.3.0 - resolution: "dot-prop@npm:5.3.0" - dependencies: - is-obj: "npm:^2.0.0" - checksum: 8c0/93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599 - languageName: node - linkType: hard - -"dotenv-defaults@npm:2.0.1, dotenv-defaults@npm:^2.0.0": - version: 2.0.1 - resolution: "dotenv-defaults@npm:2.0.1" - dependencies: - dotenv: "npm:^8.2.0" - checksum: 8c0/f2bf720e969679fe27a8e2f07fe230b75526ebe499256ebdd8b8f05e9a64103aa09234a5f1ef29b960e914c8be0f1e9522b5b85e73b4de2e6d2159a667be312c - languageName: node - linkType: hard - -"dotenv-defaults@npm:5.0.2": - version: 5.0.2 - resolution: "dotenv-defaults@npm:5.0.2" - dependencies: - dotenv: "npm:^14.0.0" - checksum: 8c0/89fe77f8d97a183c701307dde7d328a973271b8ce04af3a48928250cd707a9f324b04a672a2ceb770db117a7724995c48e93edc438b3c9ce1207a67adee77098 - languageName: node - linkType: hard - -"dotenv-defaults@npm:^2.0.1, dotenv-defaults@npm:^2.0.2": - version: 2.0.2 - resolution: "dotenv-defaults@npm:2.0.2" - dependencies: - dotenv: "npm:^8.2.0" - checksum: 8c0/14b7b8f6c21a30404106384398728746e63405bfeabe47ef7aadd0e81de49986d5896a612e5b1acddf655af6472a24947b7b113aa3ef3270a2877afa9c5bd287 - languageName: node - linkType: hard - -"dotenv-expand@npm:^5.1.0": - version: 5.1.0 - resolution: "dotenv-expand@npm:5.1.0" - checksum: 8c0/24ac633de853ef474d0421cc639328b7134109c8dc2baaa5e3afb7495af5e9237136d7e6971e55668e4dce915487eb140967cdd2b3e99aa439e0f6bf8b56faeb - languageName: node - linkType: hard - -"dotenv-webpack@npm:8.0.1": - version: 8.0.1 - resolution: "dotenv-webpack@npm:8.0.1" - dependencies: - dotenv-defaults: "npm:^2.0.2" - peerDependencies: - webpack: ^4 || ^5 - checksum: 8c0/ddd12406e7b27a9f324110d34ddf6efdf386f8f6dbbf903cb74b63ed582c28262197eadca4e20cdee55d1e427cc4acd47c9dadd38bfc49219ae215d0b688c2e8 - languageName: node - linkType: hard - -"dotenv-webpack@npm:^2.0.0": - version: 2.0.0 - resolution: "dotenv-webpack@npm:2.0.0" - dependencies: - dotenv-defaults: "npm:^2.0.0" - peerDependencies: - webpack: ^1 || ^2 || ^3 || ^4 - checksum: 8c0/784fd439adcae0427de5987569a155be69cdd8af279139065826fc0838f1a96276d40c91fef275996cba790248d28a7ffca01dbb21932cb504715c71bf2e9bc2 - languageName: node - linkType: hard - -"dotenv@npm:16.3.1": - version: 16.3.1 - resolution: "dotenv@npm:16.3.1" - checksum: 8c0/b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 - languageName: node - linkType: hard - -"dotenv@npm:^14.0.0": - version: 14.3.2 - resolution: "dotenv@npm:14.3.2" - checksum: 8c0/cb428358aa3a8da735be727f8a9de56e148ddf97d84a75e528039dc90e55787688766e48204a50b8326ba1ebaa6e039584c1019dfc28fa144e68145d8cbe5946 - languageName: node - linkType: hard - -"dotenv@npm:^16.0.0": - version: 16.0.3 - resolution: "dotenv@npm:16.0.3" - checksum: 8c0/109457ac5f9e930ca8066ea33887b6f839ab24d647a7a8b49ddcd1f32662e2c35591c5e5b9819063e430148a664d0927f0cbe60cf9575d89bc524f47ff7e78f0 - languageName: node - linkType: hard - -"dotenv@npm:^8.0.0, dotenv@npm:^8.2.0": - version: 8.6.0 - resolution: "dotenv@npm:8.6.0" - checksum: 8c0/6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f - languageName: node - linkType: hard - -"downshift@npm:^6.0.15": - version: 6.1.7 - resolution: "downshift@npm:6.1.7" - dependencies: - "@babel/runtime": "npm:^7.14.8" - compute-scroll-into-view: "npm:^1.0.17" - prop-types: "npm:^15.7.2" - react-is: "npm:^17.0.2" - tslib: "npm:^2.3.0" - peerDependencies: - react: ">=16.12.0" - checksum: 8c0/d1c3c0071c5916c696db90987cf9c6b685aa5964a3c3cd4f9d3b6ade5007779066b5e81af2e05d1d6c4c3806f13df7e2fac5423a096ffcc0640e96e43f7e3f34 - languageName: node - linkType: hard - -"dset@npm:3.1.2, dset@npm:^3.1.1, dset@npm:^3.1.2": - version: 3.1.2 - resolution: "dset@npm:3.1.2" - checksum: 8c0/a10d5f214ccd53e7d2e79215473256b74cb98fd3f20ad4f4684ab575b19bac71e5dda524d6febcf42854062e3f575a2dbfca4d53d2ffb9ae238eecdcc97a095b - languageName: node - linkType: hard - -"duplexer3@npm:^0.1.4": - version: 0.1.4 - resolution: "duplexer3@npm:0.1.4" - checksum: 8c0/734e10ac7c3053b81374fa00153e884e257db27759bd63a774cb1551e1873189cdce79a8829659964d8b5113c49e45d517592ecbbb5e5201a4181b88f8ce8b0c - languageName: node - linkType: hard - -"duplexer@npm:^0.1.1, duplexer@npm:^0.1.2": - version: 0.1.2 - resolution: "duplexer@npm:0.1.2" - checksum: 8c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 - languageName: node - linkType: hard - -"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": - version: 3.7.1 - resolution: "duplexify@npm:3.7.1" - dependencies: - end-of-stream: "npm:^1.0.0" - inherits: "npm:^2.0.1" - readable-stream: "npm:^2.0.0" - stream-shift: "npm:^1.0.0" - checksum: 8c0/59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3 - languageName: node - linkType: hard - -"eastasianwidth@npm:^0.2.0": - version: 0.2.0 - resolution: "eastasianwidth@npm:0.2.0" - checksum: 8c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 - languageName: node - linkType: hard - -"ecdsa-sig-formatter@npm:1.0.11": - version: 1.0.11 - resolution: "ecdsa-sig-formatter@npm:1.0.11" - dependencies: - safe-buffer: "npm:^5.0.1" - checksum: 8c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c - languageName: node - linkType: hard - -"ee-first@npm:1.1.1": - version: 1.1.1 - resolution: "ee-first@npm:1.1.1" - checksum: 8c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 - languageName: node - linkType: hard - -"ejs@npm:^2.6.1": - version: 2.7.4 - resolution: "ejs@npm:2.7.4" - checksum: 8c0/d5700120ce5dd10e0853085003862f5d78c198326ed634838aa7f8b0bf1efd65ad9fa0f2bac0053af05afeb21fb015595166b2c4fc83c7ef8f481e469a01ad52 - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.3.564, electron-to-chromium@npm:^1.3.723": - version: 1.3.742 - resolution: "electron-to-chromium@npm:1.3.742" - checksum: 8c0/133528038b0968274c549e536dd45718b413340dca46dfab3c819fb1529efc0ba96faa2ce7053e0cfc342128b9be43dffb4a3922ca5ecc0ddb126eb8af3f7f1b - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.17": - version: 1.4.68 - resolution: "electron-to-chromium@npm:1.4.68" - checksum: 8c0/3e5b470c1289507917f44c7ab278cc18bcbc25a4e373c8d6d37a6044f63955fee2712c36bf077eeed119a346ceb614fdf692a0270c0491539a32c9cfbc58bf4c - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.284": - version: 1.4.284 - resolution: "electron-to-chromium@npm:1.4.284" - checksum: 8c0/33a7509755efbc0e13e81cdf0486ed37ea354857213b92a987a81e229083c1b2ee5f663c1103db9e5ec142a611e0daeeee02f757f7184833866f8aecb7046c2b - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.477": - version: 1.4.505 - resolution: "electron-to-chromium@npm:1.4.505" - checksum: 8c0/be2bc3fbbd80bc0f4897c03c8327eb3f0a5666a3b91328b435552e0ec304760171989e36a90c8e4e4b498cc9b13861a24c2b714c3796555ac055d3c69817ddaa - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.4.601": - version: 1.4.616 - resolution: "electron-to-chromium@npm:1.4.616" - checksum: a02416f3293d28120d5132546a6aea614ebd2d820a684f41b1c20138331922ddc672c4a59bfc4b91bb5aee1ba608f6c10cd3f69c344cd434397e7f14a4c97348 - languageName: node - linkType: hard - -"elegant-spinner@npm:^1.0.1": - version: 1.0.1 - resolution: "elegant-spinner@npm:1.0.1" - checksum: 8c0/df607c83c20fc3ce56c514175dd5d1ee7f667da00cee13d04d32c70d55e76555091fa236689e691cf7dedba17b0020fec635e499cdde84dbea2ef8639314e5f8 - languageName: node - linkType: hard - -"element-resize-detector@npm:^1.2.2": - version: 1.2.2 - resolution: "element-resize-detector@npm:1.2.2" - dependencies: - batch-processor: "npm:1.0.0" - checksum: 8c0/1df68352be4825168513ca782fd4520ec2986a228f66abe49c5f5fefc64c6955b86b114efabaf46e32fde2f9a591e6bf40769b153ebb878d205d454edd68485d - languageName: node - linkType: hard - -"elliptic@npm:^6.5.3": - version: 6.5.4 - resolution: "elliptic@npm:6.5.4" - dependencies: - bn.js: "npm:^4.11.9" - brorand: "npm:^1.1.0" - hash.js: "npm:^1.0.0" - hmac-drbg: "npm:^1.0.1" - inherits: "npm:^2.0.4" - minimalistic-assert: "npm:^1.0.1" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 8c0/5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 - languageName: node - linkType: hard - -"emittery@npm:^0.13.1": - version: 0.13.1 - resolution: "emittery@npm:0.13.1" - checksum: 8c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 - languageName: node - linkType: hard - -"emittery@npm:^0.7.1": - version: 0.7.2 - resolution: "emittery@npm:0.7.2" - checksum: 8c0/a90d8b59a14de5f3c2bf9d9884867ab6f62d1da1363b660e1429543286f627372c07b70d78465e739f4a616ba1e6638f63c831ef0da146b89c7935f1e5a96ad5 - languageName: node - linkType: hard - -"emoji-regex@npm:^7.0.1": - version: 7.0.3 - resolution: "emoji-regex@npm:7.0.3" - checksum: 8c0/a8917d695c3a3384e4b7230a6a06fd2de6b3db3709116792e8b7b36ddbb3db4deb28ad3e983e70d4f2a1f9063b5dab9025e4e26e9ca08278da4fbb73e213743f - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: 8c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 - languageName: node - linkType: hard - -"emoji-regex@npm:^9.2.2": - version: 9.2.2 - resolution: "emoji-regex@npm:9.2.2" - checksum: 8c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 - languageName: node - linkType: hard - -"emojis-list@npm:^2.0.0": - version: 2.1.0 - resolution: "emojis-list@npm:2.1.0" - checksum: 8c0/bbb941223bfb3e38054cb52ed1b3098a8dac0a90fdd2699eb8a3af3b2172cdc4af0932e05c3edd52e814997c8f45cf1d7f5e86e9ecdcd4e2390a0f27e6914db5 - languageName: node - linkType: hard - -"emojis-list@npm:^3.0.0": - version: 3.0.0 - resolution: "emojis-list@npm:3.0.0" - checksum: 8c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b - languageName: node - linkType: hard - -"emotion-theming@npm:^10.0.27": - version: 10.0.27 - resolution: "emotion-theming@npm:10.0.27" - dependencies: - "@babel/runtime": "npm:^7.5.5" - "@emotion/weak-memoize": "npm:0.2.5" - hoist-non-react-statics: "npm:^3.3.0" - peerDependencies: - "@emotion/core": ^10.0.27 - react: ">=16.3.0" - checksum: 8c0/094b6f80bbbd0323861c6ebccef451e7ec513374bf97d2dc694e81493126b3ab728cb3d681e354f03d3e2201dd19a865550237a47ad240265bb780d27841c10b - languageName: node - linkType: hard - -"encodeurl@npm:~1.0.2": - version: 1.0.2 - resolution: "encodeurl@npm:1.0.2" - checksum: 8c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec - languageName: node - linkType: hard - -"encoding-japanese@npm:2.0.0": - version: 2.0.0 - resolution: "encoding-japanese@npm:2.0.0" - checksum: 453bbca71d3666213a9bc873d5a69441b379f158a2992aa5cd1fc124c915b518e19fce7654f973d1334234f870e8053443a464c8f73ff9d7efe66bbc1ce1f4f6 - languageName: node - linkType: hard - -"encoding@npm:^0.1.12, encoding@npm:^0.1.13": - version: 0.1.13 - resolution: "encoding@npm:0.1.13" - dependencies: - iconv-lite: "npm:^0.6.2" - checksum: 8c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 - languageName: node - linkType: hard - -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1, end-of-stream@npm:^1.4.4": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: "npm:^1.4.0" - checksum: 8c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 - languageName: node - linkType: hard - -"endent@npm:^2.0.1": - version: 2.0.1 - resolution: "endent@npm:2.0.1" - dependencies: - dedent: "npm:^0.7.0" - fast-json-parse: "npm:^1.0.3" - objectorarray: "npm:^1.0.4" - checksum: 8c0/23038c650207ebae3833bd27f44653129f6ece199d6e16fc7893a4a3ae9de0f56b3de798644d48fe66c21a0ba0901f944b78c73e6f5bf50b2123e28869f7e464 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^4.1.1, enhanced-resolve@npm:^4.5.0": - version: 4.5.0 - resolution: "enhanced-resolve@npm:4.5.0" - dependencies: - graceful-fs: "npm:^4.1.2" - memory-fs: "npm:^0.5.0" - tapable: "npm:^1.0.0" - checksum: 8c0/d95fc630606ea35bed21c4a029bbb1681919571a2d1d2011c7fc42a26a9e48ed3d74a89949ce331e1fd3229850a303e3218b887b92951330f16bdfbb93a10e64 - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.10.0": - version: 5.12.0 - resolution: "enhanced-resolve@npm:5.12.0" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 8c0/5738924cfe3641d04b89c2856fee3d109d7bd71bbe234fb7f54843dda65f293e5f3eee6d5970ced70dbb09016085b961e60d1eb26cac72a21044479954b6cdfd - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.15.0": - version: 5.15.0 - resolution: "enhanced-resolve@npm:5.15.0" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 8c0/69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a - languageName: node - linkType: hard - -"enquirer@npm:2.3.6, enquirer@npm:^2.3.5": - version: 2.3.6 - resolution: "enquirer@npm:2.3.6" - dependencies: - ansi-colors: "npm:^4.1.1" - checksum: 8c0/8e070e052c2c64326a2803db9084d21c8aaa8c688327f133bf65c4a712586beb126fd98c8a01cfb0433e82a4bd3b6262705c55a63e0f7fb91d06b9cedbde9a11 - languageName: node - linkType: hard - -"enquirer@npm:2.4.1": - version: 2.4.1 - resolution: "enquirer@npm:2.4.1" - dependencies: - ansi-colors: "npm:^4.1.1" - strip-ansi: "npm:^6.0.1" - checksum: 8c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 - languageName: node - linkType: hard - -"entities@npm:^1.1.1": - version: 1.1.2 - resolution: "entities@npm:1.1.2" - checksum: 8c0/5b12fa8c4fb942f88af6f8791bbe7be0a59ebd91c8933cee091d94455efd1eeb200418c7b1bc8dd0f74cdd4db8cf4538eb043db14cfd1919130c25d8c6095215 - languageName: node - linkType: hard - -"entities@npm:^2.0.0": - version: 2.2.0 - resolution: "entities@npm:2.2.0" - checksum: 8c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 - languageName: node - linkType: hard - -"entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": - version: 4.4.0 - resolution: "entities@npm:4.4.0" - checksum: 8c0/b7971419897622d3996bbbff99249e166caaaf3ea95d3841d6dc5d3bf315f133b649fbe932623e3cc527d871112e7563a8284e24f23e472126aa90c4e9c3215b - languageName: node - linkType: hard - -"entities@npm:~2.1.0": - version: 2.1.0 - resolution: "entities@npm:2.1.0" - checksum: dd96ed95f7e017b7fbbcdd39bd6dc3dea6638f747c00610b53f23ea461ac409af87670f313805d85854bfce04f96e17d83575f75b3b2920365d78678ccd2a405 - languageName: node - linkType: hard - -"env-paths@npm:2.2.1, env-paths@npm:^2.2.0": - version: 2.2.1 - resolution: "env-paths@npm:2.2.1" - checksum: 8c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 - languageName: node - linkType: hard - -"envinfo@npm:7.11.0": - version: 7.11.0 - resolution: "envinfo@npm:7.11.0" - bin: - envinfo: dist/cli.js - checksum: 4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d - languageName: node - linkType: hard - -"envinfo@npm:^7.7.3, envinfo@npm:^7.8.1": - version: 7.8.1 - resolution: "envinfo@npm:7.8.1" - bin: - envinfo: dist/cli.js - checksum: 8c0/01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 - languageName: node - linkType: hard - -"err-code@npm:^2.0.2": - version: 2.0.3 - resolution: "err-code@npm:2.0.3" - checksum: 8c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 - languageName: node - linkType: hard - -"errno@npm:^0.1.3, errno@npm:~0.1.7": - version: 0.1.8 - resolution: "errno@npm:0.1.8" - dependencies: - prr: "npm:~1.0.1" - bin: - errno: cli.js - checksum: 8c0/83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 - languageName: node - linkType: hard - -"error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" - dependencies: - is-arrayish: "npm:^0.2.1" - checksum: 8c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce - languageName: node - linkType: hard - -"error-overlay-webpack-plugin@npm:^0.4.1": - version: 0.4.2 - resolution: "error-overlay-webpack-plugin@npm:0.4.2" - dependencies: - react-dev-utils: "npm:^11.0.1" - react-error-overlay: "npm:^6.0.8" - sockjs-client: "npm:^1.5.0" - url: "npm:^0.11.0" - peerDependencies: - webpack: ^4.0.0 - checksum: 8c0/1a5322b5b1156a529c20a91c1dab13421cd0aa0c8a4a323ecdb2da827124ff156b58e6065ab7bd9116c1bc813a105a4cc9a5f2aac0436f482ea7f718cdee8604 - languageName: node - linkType: hard - -"error-stack-parser@npm:^2.0.6": - version: 2.0.6 - resolution: "error-stack-parser@npm:2.0.6" - dependencies: - stackframe: "npm:^1.1.1" - checksum: 8c0/4a09ea8d6309f2ad492d8e5e417ddf3aeed17440e6747ea128f8423de1e6b9f24db9220845426ab43224481ebe6ec52e92aaff8211e7d28b79f462a220745352 - languageName: node - linkType: hard - -"es-abstract@npm:^1.17.0-next.0, es-abstract@npm:^1.17.2, es-abstract@npm:^1.18.0-next.1, es-abstract@npm:^1.18.0-next.2, es-abstract@npm:^1.18.2": - version: 1.18.3 - resolution: "es-abstract@npm:1.18.3" - dependencies: - call-bind: "npm:^1.0.2" - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.1.1" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.2" - is-callable: "npm:^1.2.3" - is-negative-zero: "npm:^2.0.1" - is-regex: "npm:^1.1.3" - is-string: "npm:^1.0.6" - object-inspect: "npm:^1.10.3" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.2" - string.prototype.trimend: "npm:^1.0.4" - string.prototype.trimstart: "npm:^1.0.4" - unbox-primitive: "npm:^1.0.1" - checksum: 8c0/e4faa9b23d775c2cb0e3aaa1e24b41deccbf7d61c6a30d80dc0fa35934997e87bd7592e1173431ece16432c24c2c45b3027787db4885868d34f4c723d3155f0a - languageName: node - linkType: hard - -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1": - version: 1.19.1 - resolution: "es-abstract@npm:1.19.1" - dependencies: - call-bind: "npm:^1.0.2" - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.1.1" - get-symbol-description: "npm:^1.0.0" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.2" - internal-slot: "npm:^1.0.3" - is-callable: "npm:^1.2.4" - is-negative-zero: "npm:^2.0.1" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.1" - is-string: "npm:^1.0.7" - is-weakref: "npm:^1.0.1" - object-inspect: "npm:^1.11.0" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.2" - string.prototype.trimend: "npm:^1.0.4" - string.prototype.trimstart: "npm:^1.0.4" - unbox-primitive: "npm:^1.0.1" - checksum: 8c0/24ed66dfa682f1bbcfa70cd95581c29a6ba88baf579619bff5690ac383b8612f3f5fcebf30dec8df634d507b633ef1ed9f09b010b07e17e3975d4ce674e3059c - languageName: node - linkType: hard - -"es-abstract@npm:^1.20.4": - version: 1.21.1 - resolution: "es-abstract@npm:1.21.1" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - es-set-tostringtag: "npm:^2.0.1" - es-to-primitive: "npm:^1.2.1" - function-bind: "npm:^1.1.1" - function.prototype.name: "npm:^1.1.5" - get-intrinsic: "npm:^1.1.3" - get-symbol-description: "npm:^1.0.0" - globalthis: "npm:^1.0.3" - gopd: "npm:^1.0.1" - has: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.0" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.4" - is-array-buffer: "npm:^3.0.1" - is-callable: "npm:^1.2.7" - is-negative-zero: "npm:^2.0.2" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.10" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.12.2" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.4.3" - safe-regex-test: "npm:^1.0.0" - string.prototype.trimend: "npm:^1.0.6" - string.prototype.trimstart: "npm:^1.0.6" - typed-array-length: "npm:^1.0.4" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.9" - checksum: 8c0/f05b7c6a0c2ff951bb358e252daa3b059de6aad2222d1338352a104c252824e9eeba7c18961b7e56b9d1bfb39f99580469144b39f05ec44af170b10dd69d4221 - languageName: node - linkType: hard - -"es-abstract@npm:^1.22.1": - version: 1.22.3 - resolution: "es-abstract@npm:1.22.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - arraybuffer.prototype.slice: "npm:^1.0.2" - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.5" - es-set-tostringtag: "npm:^2.0.1" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.2" - get-symbol-description: "npm:^1.0.0" - globalthis: "npm:^1.0.3" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - internal-slot: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.2" - is-callable: "npm:^1.2.7" - is-negative-zero: "npm:^2.0.2" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.12" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.1" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.1" - safe-array-concat: "npm:^1.0.1" - safe-regex-test: "npm:^1.0.0" - string.prototype.trim: "npm:^1.2.8" - string.prototype.trimend: "npm:^1.0.7" - string.prototype.trimstart: "npm:^1.0.7" - typed-array-buffer: "npm:^1.0.0" - typed-array-byte-length: "npm:^1.0.0" - typed-array-byte-offset: "npm:^1.0.0" - typed-array-length: "npm:^1.0.4" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.13" - checksum: da31ec43b1c8eb47ba8a17693cac143682a1078b6c3cd883ce0e2062f135f532e93d873694ef439670e1f6ca03195118f43567ba6f33fb0d6c7daae750090236 - languageName: node - linkType: hard - -"es-array-method-boxes-properly@npm:^1.0.0": - version: 1.0.0 - resolution: "es-array-method-boxes-properly@npm:1.0.0" - checksum: 8c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d - languageName: node - linkType: hard - -"es-get-iterator@npm:^1.0.2": - version: 1.1.2 - resolution: "es-get-iterator@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.0" - has-symbols: "npm:^1.0.1" - is-arguments: "npm:^1.1.0" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.5" - isarray: "npm:^2.0.5" - checksum: 8c0/76a832b3bfd85941c556287cd50a3ad612f5193264b761e2011503f311dfa20aa52b9ebd701d3f16022d4cb56a7130a4cfb50186427d3aecd0d4e547a471f68e - languageName: node - linkType: hard - -"es-get-iterator@npm:^1.1.2": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 8c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 - languageName: node - linkType: hard - -"es-iterator-helpers@npm:^1.0.12, es-iterator-helpers@npm:^1.0.15": - version: 1.0.15 - resolution: "es-iterator-helpers@npm:1.0.15" - dependencies: - asynciterator.prototype: "npm:^1.0.0" - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.1" - es-set-tostringtag: "npm:^2.0.1" - function-bind: "npm:^1.1.1" - get-intrinsic: "npm:^1.2.1" - globalthis: "npm:^1.0.3" - has-property-descriptors: "npm:^1.0.0" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.5" - iterator.prototype: "npm:^1.1.2" - safe-array-concat: "npm:^1.0.1" - checksum: b4c83f94bfe624260d5238092de3173989f76f1416b1d02c388aea3b2024174e5f5f0e864057311ac99790b57e836ca3545b6e77256b26066dac944519f5e6d6 - languageName: node - linkType: hard - -"es-module-lexer@npm:^0.9.0": - version: 0.9.3 - resolution: "es-module-lexer@npm:0.9.3" - checksum: 8c0/be77d73aee709fdc68d22b9938da81dfee3bc45e8d601629258643fe5bfdab253d6e2540035e035cfa8cf52a96366c1c19b46bcc23b4507b1d44e5907d2e7f6c - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.2.1": - version: 1.2.1 - resolution: "es-module-lexer@npm:1.2.1" - checksum: 8c0/6e0a9095e0abe38f480e0f366cdeca19db64d85a533da9332739a64d70e97a61e68c1f98a2396468ae6229245b8e5edcb1e48c4d3615ae4da9052a1bdc2367e2 - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.0.1": - version: 2.0.1 - resolution: "es-set-tostringtag@npm:2.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - has: "npm:^1.0.3" - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/9af096365e3861bb29755cc5f76f15f66a7eab0e83befca396129090c1d9737e54090278b8e5357e97b5f0a5b0459fca07c40c6740884c2659cbf90ef8e508cc - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0": - version: 1.0.0 - resolution: "es-shim-unscopables@npm:1.0.0" - dependencies: - has: "npm:^1.0.3" - checksum: 8c0/d54a66239fbd19535b3e50333913260394f14d2d7adb136a95396a13ca584bab400cf9cb2ffd9232f3fe2f0362540bd3a708240c493e46e13fe0b90cfcfedc3d - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 8c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 - languageName: node - linkType: hard - -"es5-shim@npm:^4.5.13": - version: 4.5.15 - resolution: "es5-shim@npm:4.5.15" - checksum: 8c0/e794e1458bfe89a7395e67486e4b9ec193d7d15a1fb5b17adc9bd11fb7ccfb3ca643faf7b1c72a0e145a79c475654fcbae1a0d5f71a1bcb3fe8d0c286798106c - languageName: node - linkType: hard - -"es6-object-assign@npm:^1.1.0": - version: 1.1.0 - resolution: "es6-object-assign@npm:1.1.0" - checksum: 8c0/11c165ae16866aca897dee9b689402f0e871589e859809343ef9e0fdd067133684db16fd15abdba2a99e7319222b9f43e6b747baabb909cee9d0ecbac8deebee - languageName: node - linkType: hard - -"es6-shim@npm:^0.35.5": - version: 0.35.6 - resolution: "es6-shim@npm:0.35.6" - checksum: 8c0/4ed9ceb017826032ea403eef82c4af97275f4e62590f8e31f8af823056a573ce096007c179718f72ce9d5a35c658ce887668a79e341fd1b64f09c2d905d0f1d5 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-android-arm64@npm:0.14.21" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-darwin-64@npm:0.14.21" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-darwin-arm64@npm:0.14.21" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-freebsd-64@npm:0.14.21" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-freebsd-arm64@npm:0.14.21" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-32@npm:0.14.21" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-64@npm:0.14.21" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-arm64@npm:0.14.21" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-arm@npm:0.14.21" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-mips64le@npm:0.14.21" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-ppc64le@npm:0.14.21" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-riscv64@npm:0.14.21" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-linux-s390x@npm:0.14.21" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-loader@npm:^2.10.0": - version: 2.18.0 - resolution: "esbuild-loader@npm:2.18.0" - dependencies: - esbuild: "npm:^0.14.6" - joycon: "npm:^3.0.1" - json5: "npm:^2.2.0" - loader-utils: "npm:^2.0.0" - tapable: "npm:^2.2.0" - webpack-sources: "npm:^2.2.0" - peerDependencies: - webpack: ^4.40.0 || ^5.0.0 - checksum: 8c0/885eb4e692da66e4d7a6814abace0d10eee4d62b7c7cacfedd1c995f43b0ec7f2bef9eb80ca624f720aca20e80b1540f3994efc319a1b59fb7acf7c6d801d63f - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-netbsd-64@npm:0.14.21" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-openbsd-64@npm:0.14.21" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-sunos-64@npm:0.14.21" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-windows-32@npm:0.14.21" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-windows-64@npm:0.14.21" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.21": - version: 0.14.21 - resolution: "esbuild-windows-arm64@npm:0.14.21" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:0.11.20": - version: 0.11.20 - resolution: "esbuild@npm:0.11.20" - bin: - esbuild: bin/esbuild - checksum: 8c0/5735a904244da0e299141df6786c38ea355dffe9374165feac1653e186ea5393bc230a67f2fa9aa2adf591206c19659201f16650cd70c3758080d8d1a896ebc6 - languageName: node - linkType: hard - -"esbuild@npm:0.19.9": - version: 0.19.9 - resolution: "esbuild@npm:0.19.9" - dependencies: - "@esbuild/android-arm": "npm:0.19.9" - "@esbuild/android-arm64": "npm:0.19.9" - "@esbuild/android-x64": "npm:0.19.9" - "@esbuild/darwin-arm64": "npm:0.19.9" - "@esbuild/darwin-x64": "npm:0.19.9" - "@esbuild/freebsd-arm64": "npm:0.19.9" - "@esbuild/freebsd-x64": "npm:0.19.9" - "@esbuild/linux-arm": "npm:0.19.9" - "@esbuild/linux-arm64": "npm:0.19.9" - "@esbuild/linux-ia32": "npm:0.19.9" - "@esbuild/linux-loong64": "npm:0.19.9" - "@esbuild/linux-mips64el": "npm:0.19.9" - "@esbuild/linux-ppc64": "npm:0.19.9" - "@esbuild/linux-riscv64": "npm:0.19.9" - "@esbuild/linux-s390x": "npm:0.19.9" - "@esbuild/linux-x64": "npm:0.19.9" - "@esbuild/netbsd-x64": "npm:0.19.9" - "@esbuild/openbsd-x64": "npm:0.19.9" - "@esbuild/sunos-x64": "npm:0.19.9" - "@esbuild/win32-arm64": "npm:0.19.9" - "@esbuild/win32-ia32": "npm:0.19.9" - "@esbuild/win32-x64": "npm:0.19.9" - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 85cf167596f52ec5cde47ec27013d49f04e3052e6b00cd4534095cd74a776955040b03b326d54a9588921dc631f76b97ebda76b52bb5152f3ef4a45cfba81dca - languageName: node - linkType: hard - -"esbuild@npm:^0.14.6": - version: 0.14.21 - resolution: "esbuild@npm:0.14.21" - dependencies: - esbuild-android-arm64: "npm:0.14.21" - esbuild-darwin-64: "npm:0.14.21" - esbuild-darwin-arm64: "npm:0.14.21" - esbuild-freebsd-64: "npm:0.14.21" - esbuild-freebsd-arm64: "npm:0.14.21" - esbuild-linux-32: "npm:0.14.21" - esbuild-linux-64: "npm:0.14.21" - esbuild-linux-arm: "npm:0.14.21" - esbuild-linux-arm64: "npm:0.14.21" - esbuild-linux-mips64le: "npm:0.14.21" - esbuild-linux-ppc64le: "npm:0.14.21" - esbuild-linux-riscv64: "npm:0.14.21" - esbuild-linux-s390x: "npm:0.14.21" - esbuild-netbsd-64: "npm:0.14.21" - esbuild-openbsd-64: "npm:0.14.21" - esbuild-sunos-64: "npm:0.14.21" - esbuild-windows-32: "npm:0.14.21" - esbuild-windows-64: "npm:0.14.21" - esbuild-windows-arm64: "npm:0.14.21" - dependenciesMeta: - esbuild-android-arm64: - optional: true - esbuild-darwin-64: - optional: true - esbuild-darwin-arm64: - optional: true - esbuild-freebsd-64: - optional: true - esbuild-freebsd-arm64: - optional: true - esbuild-linux-32: - optional: true - esbuild-linux-64: - optional: true - esbuild-linux-arm: - optional: true - esbuild-linux-arm64: - optional: true - esbuild-linux-mips64le: - optional: true - esbuild-linux-ppc64le: - optional: true - esbuild-linux-riscv64: - optional: true - esbuild-linux-s390x: - optional: true - esbuild-netbsd-64: - optional: true - esbuild-openbsd-64: - optional: true - esbuild-sunos-64: - optional: true - esbuild-windows-32: - optional: true - esbuild-windows-64: - optional: true - esbuild-windows-arm64: - optional: true - bin: - esbuild: bin/esbuild - checksum: 8c0/ef724e1db4d60c07c6df62594c21f67e3293d94add431dd050c6141abbe9351bc44d0cdcea9d2621b5e6532c8b186c879c7d7e1126befbadaaf426a62349477f - languageName: node - linkType: hard - -"esbuild@npm:^0.18.10, esbuild@npm:~0.18.20": - version: 0.18.20 - resolution: "esbuild@npm:0.18.20" - dependencies: - "@esbuild/android-arm": "npm:0.18.20" - "@esbuild/android-arm64": "npm:0.18.20" - "@esbuild/android-x64": "npm:0.18.20" - "@esbuild/darwin-arm64": "npm:0.18.20" - "@esbuild/darwin-x64": "npm:0.18.20" - "@esbuild/freebsd-arm64": "npm:0.18.20" - "@esbuild/freebsd-x64": "npm:0.18.20" - "@esbuild/linux-arm": "npm:0.18.20" - "@esbuild/linux-arm64": "npm:0.18.20" - "@esbuild/linux-ia32": "npm:0.18.20" - "@esbuild/linux-loong64": "npm:0.18.20" - "@esbuild/linux-mips64el": "npm:0.18.20" - "@esbuild/linux-ppc64": "npm:0.18.20" - "@esbuild/linux-riscv64": "npm:0.18.20" - "@esbuild/linux-s390x": "npm:0.18.20" - "@esbuild/linux-x64": "npm:0.18.20" - "@esbuild/netbsd-x64": "npm:0.18.20" - "@esbuild/openbsd-x64": "npm:0.18.20" - "@esbuild/sunos-x64": "npm:0.18.20" - "@esbuild/win32-arm64": "npm:0.18.20" - "@esbuild/win32-ia32": "npm:0.18.20" - "@esbuild/win32-x64": "npm:0.18.20" - dependenciesMeta: - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 8c0/473b1d92842f50a303cf948a11ebd5f69581cd254d599dd9d62f9989858e0533f64e83b723b5e1398a5b488c0f5fd088795b4235f65ecaf4f007d4b79f04bc88 - languageName: node - linkType: hard - -"escalade@npm:^3.0.2, escalade@npm:^3.1.1": - version: 3.1.1 - resolution: "escalade@npm:3.1.1" - checksum: 8c0/afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d - languageName: node - linkType: hard - -"escape-html@npm:~1.0.3": - version: 1.0.3 - resolution: "escape-html@npm:1.0.3" - checksum: 8c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 - languageName: node - linkType: hard - -"escape-string-regexp@npm:2.0.0, escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 8c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 8c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^4.0.0": - version: 4.0.0 - resolution: "escape-string-regexp@npm:4.0.0" - checksum: 8c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^5.0.0": - version: 5.0.0 - resolution: "escape-string-regexp@npm:5.0.0" - checksum: 6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95 - languageName: node - linkType: hard - -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: "npm:^4.0.1" - estraverse: "npm:^5.2.0" - esutils: "npm:^2.0.2" - optionator: "npm:^0.8.1" - source-map: "npm:~0.6.1" - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 8c0/7d9834841db85d7cce2026c18da56c803564ca18bd6c1e81934cc08329ac4d366fac8b571e8708a81e21143f3dada56a4e34c9a9904c8b066f13abe8d9869871 - languageName: node - linkType: hard - -"eslint-config-prettier@npm:8.10.0": - version: 8.10.0 - resolution: "eslint-config-prettier@npm:8.10.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 19f8c497d9bdc111a17a61b25ded97217be3755bbc4714477dfe535ed539dddcaf42ef5cf8bb97908b058260cf89a3d7c565cb0be31096cbcd39f4c2fa5fe43c - languageName: node - linkType: hard - -"eslint-config-prettier@npm:^8.3.0": - version: 8.3.0 - resolution: "eslint-config-prettier@npm:8.3.0" - peerDependencies: - eslint: ">=7.0.0" - bin: - eslint-config-prettier: bin/cli.js - checksum: 8c0/0d6bd272a05045f2815f0aba4592633a7226713d716d1a4c21126bbdbde27c98e7a6e2a8227e03fae343b40caf8c06a87e7ce87e69851279cf10334b6f36f7bc - languageName: node - linkType: hard - -"eslint-import-resolver-babel-module@npm:5.3.2": - version: 5.3.2 - resolution: "eslint-import-resolver-babel-module@npm:5.3.2" - dependencies: - pkg-up: "npm:^3.1.0" - resolve: "npm:^1.20.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - babel-plugin-module-resolver: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 8c0/168fc793cc565cb8c27eb69c67872420980a6fcaac4a5b6951bdaa2700c0745c997d282b3c8cce313c423a12933a0f6fcc347a799398f3cf7f91e9e8a35d2d69 - languageName: node - linkType: hard - -"eslint-import-resolver-babel-module@npm:^5.3.1": - version: 5.3.1 - resolution: "eslint-import-resolver-babel-module@npm:5.3.1" - dependencies: - pkg-up: "npm:^3.1.0" - resolve: "npm:^1.20.0" - peerDependencies: - "@babel/core": ^7.0.0-0 - babel-plugin-module-resolver: ^3.0.0 || ^4.0.0 - checksum: 8c0/6163953073f9e51c72de51b392a5f53e9d5793f1ed6e88e905acf210ec7cd8f757512d2997f6e4497cfc37e7e9926f937619e176b4ed37804960fb54062728f7 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.6": - version: 0.3.6 - resolution: "eslint-import-resolver-node@npm:0.3.6" - dependencies: - debug: "npm:^3.2.7" - resolve: "npm:^1.20.0" - checksum: 8c0/20e06f3fa27b49de7159c8db54b4d7f82c156498e0050c491fcf7395922f927765b8296bf857c3b487da361bd65c1dcc68203832ef8e9179b461aa4192406535 - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.9": - version: 0.3.9 - resolution: "eslint-import-resolver-node@npm:0.3.9" - dependencies: - debug: "npm:^3.2.7" - is-core-module: "npm:^2.13.0" - resolve: "npm:^1.22.4" - checksum: 0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.7.2": - version: 2.7.3 - resolution: "eslint-module-utils@npm:2.7.3" - dependencies: - debug: "npm:^3.2.7" - find-up: "npm:^2.1.0" - checksum: 8c0/d04498ed7d320fe49a8b510c408bbc6f5ebd56f492ad362a2516984583a179432af13c337240af0260de04b15c3d148c9eb6d88e7c29db411989edbbedc922a5 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.8.0": - version: 2.8.0 - resolution: "eslint-module-utils@npm:2.8.0" - dependencies: - debug: "npm:^3.2.7" - peerDependenciesMeta: - eslint: - optional: true - checksum: c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df - languageName: node - linkType: hard - -"eslint-plugin-babel@npm:5.3.1, eslint-plugin-babel@npm:^5.3.1": - version: 5.3.1 - resolution: "eslint-plugin-babel@npm:5.3.1" - dependencies: - eslint-rule-composer: "npm:^0.3.0" - peerDependencies: - eslint: ">=4.0.0" - checksum: 8c0/c73e054c3cf3c5392e8ea7e56f41db3859b9d7c0dd347c28a5f08ae87889cc4879fcddfe227ee1ec075a9ab62e34e245d7e6e723180dfa36d07397c2cbb2c1a1 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:2.29.0": - version: 2.29.0 - resolution: "eslint-plugin-import@npm:2.29.0" - dependencies: - array-includes: "npm:^3.1.7" - array.prototype.findlastindex: "npm:^1.2.3" - array.prototype.flat: "npm:^1.3.2" - array.prototype.flatmap: "npm:^1.3.2" - debug: "npm:^3.2.7" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.8.0" - hasown: "npm:^2.0.0" - is-core-module: "npm:^2.13.1" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.7" - object.groupby: "npm:^1.0.1" - object.values: "npm:^1.1.7" - semver: "npm:^6.3.1" - tsconfig-paths: "npm:^3.14.2" - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733 - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.22.1": - version: 2.25.4 - resolution: "eslint-plugin-import@npm:2.25.4" - dependencies: - array-includes: "npm:^3.1.4" - array.prototype.flat: "npm:^1.2.5" - debug: "npm:^2.6.9" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.6" - eslint-module-utils: "npm:^2.7.2" - has: "npm:^1.0.3" - is-core-module: "npm:^2.8.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.0.4" - object.values: "npm:^1.1.5" - resolve: "npm:^1.20.0" - tsconfig-paths: "npm:^3.12.0" - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 8c0/1119fbe50339a3977ae95b9696afb334ea78805c99c3652969f0262aae7d8735884d84c6fadb1da0ed8ed238c2474de2f38b68104d08b8e288915d7824869f44 - languageName: node - linkType: hard - -"eslint-plugin-jest-dom@npm:4.0.3": - version: 4.0.3 - resolution: "eslint-plugin-jest-dom@npm:4.0.3" - dependencies: - "@babel/runtime": "npm:^7.16.3" - "@testing-library/dom": "npm:^8.11.1" - requireindex: "npm:^1.2.0" - peerDependencies: - eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 - checksum: 8c0/4a9f17a1c3e537df6093cf82207121536a48565907d8173194339758f39d759db5f65fa6d632815eec36b4de2644fa2d721eae395c43943e2d4a76ecba9ebeb5 - languageName: node - linkType: hard - -"eslint-plugin-jest-dom@npm:^3.8.1": - version: 3.9.4 - resolution: "eslint-plugin-jest-dom@npm:3.9.4" - dependencies: - "@babel/runtime": "npm:^7.16.3" - "@testing-library/dom": "npm:^7.31.2" - requireindex: "npm:^1.2.0" - peerDependencies: - eslint: ">=6.8" - checksum: 8c0/bfc8f9994922d4a1211a5c2b435b1b7390268886fd0767e027e39af2d4c4a85116a9c8ef0b36662a35d5f08ae705cdaa16a6981cd50ded927d865fc0deb55813 - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:6.8.0": - version: 6.8.0 - resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" - dependencies: - "@babel/runtime": "npm:^7.23.2" - aria-query: "npm:^5.3.0" - array-includes: "npm:^3.1.7" - array.prototype.flatmap: "npm:^1.3.2" - ast-types-flow: "npm:^0.0.8" - axe-core: "npm:=4.7.0" - axobject-query: "npm:^3.2.1" - damerau-levenshtein: "npm:^1.0.8" - emoji-regex: "npm:^9.2.2" - es-iterator-helpers: "npm:^1.0.15" - hasown: "npm:^2.0.0" - jsx-ast-utils: "npm:^3.3.5" - language-tags: "npm:^1.0.9" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.7" - object.fromentries: "npm:^2.0.7" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 - languageName: node - linkType: hard - -"eslint-plugin-jsx-a11y@npm:^6.4.1": - version: 6.5.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.5.1" - dependencies: - "@babel/runtime": "npm:^7.16.3" - aria-query: "npm:^4.2.2" - array-includes: "npm:^3.1.4" - ast-types-flow: "npm:^0.0.7" - axe-core: "npm:^4.3.5" - axobject-query: "npm:^2.2.0" - damerau-levenshtein: "npm:^1.0.7" - emoji-regex: "npm:^9.2.2" - has: "npm:^1.0.3" - jsx-ast-utils: "npm:^3.2.1" - language-tags: "npm:^1.0.5" - minimatch: "npm:^3.0.4" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 8c0/320bafc9d27279b72b8c25db4d188690d9b334f69cfa3bd33ff17f7c7dfe89dc31b463c57e79a932a218dba771137c541f88af93cdb36ae7552bc051cef8a591 - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:4.2.1": - version: 4.2.1 - resolution: "eslint-plugin-prettier@npm:4.2.1" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - peerDependencies: - eslint: ">=7.28.0" - prettier: ">=2.0.0" - peerDependenciesMeta: - eslint-config-prettier: - optional: true - checksum: 8c0/c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:^3.4.0": - version: 3.4.1 - resolution: "eslint-plugin-prettier@npm:3.4.1" - dependencies: - prettier-linter-helpers: "npm:^1.0.0" - peerDependencies: - eslint: ">=5.0.0" - prettier: ">=1.13.0" - peerDependenciesMeta: - eslint-config-prettier: - optional: true - checksum: 8c0/b2599dd22b5b0d2e3baffc94ba55a33ed525d642125d657fbc8511a2458146bdcc2bc810418713bb0049e37765def92b51213a4467984f4c758807bea224d0c5 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:4.6.0": - version: 4.6.0 - resolution: "eslint-plugin-react-hooks@npm:4.6.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 8c0/58c7e10ea5792c33346fcf5cb4024e14837035ce412ff99c2dcb7c4f903dc9b17939078f80bfef826301ce326582c396c00e8e0ac9d10ac2cde2b42d33763c65 - languageName: node - linkType: hard - -"eslint-plugin-react-hooks@npm:^4.2.0": - version: 4.3.0 - resolution: "eslint-plugin-react-hooks@npm:4.3.0" - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 8c0/fdf491b182fd0815c95af6b5a9ef9de0640cbf0e446b2886899769470276c9a69be35a2aac42b2ada3e26b73cefee23b1eb4a93f27ee984b5763ee4718509629 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:7.33.2": - version: 7.33.2 - resolution: "eslint-plugin-react@npm:7.33.2" - dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flatmap: "npm:^1.3.1" - array.prototype.tosorted: "npm:^1.1.1" - doctrine: "npm:^2.1.0" - es-iterator-helpers: "npm:^1.0.12" - estraverse: "npm:^5.3.0" - jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.1.2" - object.entries: "npm:^1.1.6" - object.fromentries: "npm:^2.0.6" - object.hasown: "npm:^1.1.2" - object.values: "npm:^1.1.6" - prop-types: "npm:^15.8.1" - resolve: "npm:^2.0.0-next.4" - semver: "npm:^6.3.1" - string.prototype.matchall: "npm:^4.0.8" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: f9b247861024bafc396c4bd3c9ac946604b3b23077251c98f23602aa22027a0c33a69157fd49564e4ff7f17b3678e5dc366a46c7ec42a09454d7cbce786d5001 - languageName: node - linkType: hard - -"eslint-plugin-react@npm:^7.23.2": - version: 7.28.0 - resolution: "eslint-plugin-react@npm:7.28.0" - dependencies: - array-includes: "npm:^3.1.4" - array.prototype.flatmap: "npm:^1.2.5" - doctrine: "npm:^2.1.0" - estraverse: "npm:^5.3.0" - jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" - minimatch: "npm:^3.0.4" - object.entries: "npm:^1.1.5" - object.fromentries: "npm:^2.0.5" - object.hasown: "npm:^1.1.0" - object.values: "npm:^1.1.5" - prop-types: "npm:^15.7.2" - resolve: "npm:^2.0.0-next.3" - semver: "npm:^6.3.0" - string.prototype.matchall: "npm:^4.0.6" - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 8c0/b34001378601dac82d13e4a2ecbe2db4dc004981aec90afbaa92d0b712399a8709cf5a288721a7d59e326e80f19e8b1e426349164c598c4467460f09d599c21b - languageName: node - linkType: hard - -"eslint-rule-composer@npm:^0.3.0": - version: 0.3.0 - resolution: "eslint-rule-composer@npm:0.3.0" - checksum: 8c0/1f0c40d209e1503a955101a0dbba37e7fc67c8aaa47a5b9ae0b0fcbae7022c86e52b3df2b1b9ffd658e16cd80f31fff92e7222460a44d8251e61d49e0af79a07 - languageName: node - linkType: hard - -"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": - version: 5.1.1 - resolution: "eslint-scope@npm:5.1.1" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^4.1.1" - checksum: 8c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a - languageName: node - linkType: hard - -"eslint-scope@npm:^4.0.3": - version: 4.0.3 - resolution: "eslint-scope@npm:4.0.3" - dependencies: - esrecurse: "npm:^4.1.0" - estraverse: "npm:^4.1.1" - checksum: 8c0/a2a3fe5845938ce7cfd2e658c309a9bb27a7f9ce94f0cc447ed5f9fa95b16451556d7e1db4c8e5d2aaa02d02850f5346d23091bbe94f7097412ce846504b4dcc - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" - dependencies: - esrecurse: "npm:^4.3.0" - estraverse: "npm:^5.2.0" - checksum: 8c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 - languageName: node - linkType: hard - -"eslint-utils@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-utils@npm:2.1.0" - dependencies: - eslint-visitor-keys: "npm:^1.1.0" - checksum: 8c0/69521c5d6569384b24093125d037ba238d3d6e54367f7143af9928f5286369e912c26cad5016d730c0ffb9797ac9e83831059d7f1d863f7dc84330eb02414611 - languageName: node - linkType: hard - -"eslint-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "eslint-utils@npm:3.0.0" - dependencies: - eslint-visitor-keys: "npm:^2.0.0" - peerDependencies: - eslint: ">=5" - checksum: 8c0/45aa2b63667a8d9b474c98c28af908d0a592bed1a4568f3145cd49fb5d9510f545327ec95561625290313fe126e6d7bdfe3fdbdb6f432689fab6b9497d3bfb52 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^1.0.0, eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0": - version: 1.3.0 - resolution: "eslint-visitor-keys@npm:1.3.0" - checksum: 8c0/10c91fdbbe36810dd4308e57f9a8bc7177188b2a70247e54e3af1fa05ebc66414ae6fd4ce3c6c6821591f43a556e9037bc6b071122e099b5f8b7d2f76df553e3 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^2.0.0, eslint-visitor-keys@npm:^2.1.0": - version: 2.1.0 - resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: 8c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0": - version: 3.3.0 - resolution: "eslint-visitor-keys@npm:3.3.0" - checksum: 8c0/fc6a9b5bdee8d90e35e7564fd9db10fdf507a2c089a4f0d4d3dd091f7f4ac6790547c8b1b7a760642ef819f875ef86dd5bcb8cdf01b0775f57a699f4e6a20a18 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.1": - version: 3.4.1 - resolution: "eslint-visitor-keys@npm:3.4.1" - checksum: 8c0/b4ebd35aed5426cd81b1fb92487825f1acf47a31e91d76597a3ee0664d69627140c4dafaf9b319cfeb1f48c1113a393e21a734c669e6565a72e6fcc311bd9911 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.4.3": - version: 3.4.3 - resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 8c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 - languageName: node - linkType: hard - -"eslint@npm:8.55.0": - version: 8.55.0 - resolution: "eslint@npm:8.55.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.55.0" - "@humanwhocodes/config-array": "npm:^0.11.13" - "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" - ajv: "npm:^6.12.4" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - find-up: "npm:^5.0.0" - glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" - ignore: "npm:^5.2.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" - text-table: "npm:^0.2.0" - bin: - eslint: bin/eslint.js - checksum: d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1 - languageName: node - linkType: hard - -"eslint@npm:^7.25.0": - version: 7.32.0 - resolution: "eslint@npm:7.32.0" - dependencies: - "@babel/code-frame": "npm:7.12.11" - "@eslint/eslintrc": "npm:^0.4.3" - "@humanwhocodes/config-array": "npm:^0.5.0" - ajv: "npm:^6.10.0" - chalk: "npm:^4.0.0" - cross-spawn: "npm:^7.0.2" - debug: "npm:^4.0.1" - doctrine: "npm:^3.0.0" - enquirer: "npm:^2.3.5" - escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^5.1.1" - eslint-utils: "npm:^2.1.0" - eslint-visitor-keys: "npm:^2.0.0" - espree: "npm:^7.3.1" - esquery: "npm:^1.4.0" - esutils: "npm:^2.0.2" - fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" - functional-red-black-tree: "npm:^1.0.1" - glob-parent: "npm:^5.1.2" - globals: "npm:^13.6.0" - ignore: "npm:^4.0.6" - import-fresh: "npm:^3.0.0" - imurmurhash: "npm:^0.1.4" - is-glob: "npm:^4.0.0" - js-yaml: "npm:^3.13.1" - json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" - lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.0.4" - natural-compare: "npm:^1.4.0" - optionator: "npm:^0.9.1" - progress: "npm:^2.0.0" - regexpp: "npm:^3.1.0" - semver: "npm:^7.2.1" - strip-ansi: "npm:^6.0.0" - strip-json-comments: "npm:^3.1.0" - table: "npm:^6.0.9" - text-table: "npm:^0.2.0" - v8-compile-cache: "npm:^2.0.3" - bin: - eslint: bin/eslint.js - checksum: 8c0/84409f7767556179cb11529f1215f335c7dfccf90419df6147f949f14c347a960c7b569e80ed84011a0b6d10da1ef5046edbbb9b11c3e59aa6696d5217092e93 - languageName: node - linkType: hard - -"espree@npm:^7.3.0, espree@npm:^7.3.1": - version: 7.3.1 - resolution: "espree@npm:7.3.1" - dependencies: - acorn: "npm:^7.4.0" - acorn-jsx: "npm:^5.3.1" - eslint-visitor-keys: "npm:^1.3.0" - checksum: 8c0/f4e81b903f03eaf0e6925cea20571632da427deb6e14ca37e481f72c11f36d7bb4945fe8a2ff15ab22d078d3cd93ee65355fa94de9c27485c356481775f25d85 - languageName: node - linkType: hard - -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 8c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 - languageName: node - linkType: hard - -"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": - version: 4.0.1 - resolution: "esprima@npm:4.0.1" - bin: - esparse: ./bin/esparse.js - esvalidate: ./bin/esvalidate.js - checksum: 8c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 - languageName: node - linkType: hard - -"esquery@npm:^1.4.0": - version: 1.4.0 - resolution: "esquery@npm:1.4.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 8c0/b9b18178d33c4335210c76e062de979dc38ee6b49deea12bff1b2315e6cfcca1fd7f8bc49f899720ad8ff25967ac95b5b182e81a8b7b59ff09dbd0d978c32f64 - languageName: node - linkType: hard - -"esquery@npm:^1.4.2": - version: 1.5.0 - resolution: "esquery@npm:1.5.0" - dependencies: - estraverse: "npm:^5.1.0" - checksum: 8c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 - languageName: node - linkType: hard - -"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0": - version: 4.3.0 - resolution: "esrecurse@npm:4.3.0" - dependencies: - estraverse: "npm:^5.2.0" - checksum: 8c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 - languageName: node - linkType: hard - -"estraverse@npm:^4.1.1": - version: 4.3.0 - resolution: "estraverse@npm:4.3.0" - checksum: 8c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d - languageName: node - linkType: hard - -"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": - version: 5.2.0 - resolution: "estraverse@npm:5.2.0" - checksum: 8c0/76a07411841ddf30a6a75afc93e8c00bbfe255a62dee7e1dc90b06ce0d7b939a00cf816ae94566ab5bc1cfde773a49387a35650287840b842143fff46f8f9ae3 - languageName: node - linkType: hard - -"estraverse@npm:^5.3.0": - version: 5.3.0 - resolution: "estraverse@npm:5.3.0" - checksum: 8c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 - languageName: node - linkType: hard - -"estree-to-babel@npm:^3.1.0": - version: 3.2.1 - resolution: "estree-to-babel@npm:3.2.1" - dependencies: - "@babel/traverse": "npm:^7.1.6" - "@babel/types": "npm:^7.2.0" - c8: "npm:^7.6.0" - checksum: 8c0/c7949b141f569528b2608ab715d593a04f7e2e529df04e0b595d0a7dea819b410e71d1f04716e43ac1480942afc5701cb5151ad2906ee8402969651a389881bb - languageName: node - linkType: hard - -"esutils@npm:^2.0.2": - version: 2.0.3 - resolution: "esutils@npm:2.0.3" - checksum: 8c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 - languageName: node - linkType: hard - -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 8c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 - languageName: node - linkType: hard - -"event-target-shim@npm:^5.0.0": - version: 5.0.1 - resolution: "event-target-shim@npm:5.0.1" - checksum: 8c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b - languageName: node - linkType: hard - -"eventemitter3@npm:^3.1.0": - version: 3.1.2 - resolution: "eventemitter3@npm:3.1.2" - checksum: 8c0/c67262eccbf85848b7cc6d4abb6c6e34155e15686db2a01c57669fd0d44441a574a19d44d25948b442929e065774cbe5003d8e77eed47674fbf876ac77887793 - languageName: node - linkType: hard - -"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.1": - version: 4.0.7 - resolution: "eventemitter3@npm:4.0.7" - checksum: 8c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b - languageName: node - linkType: hard - -"eventemitter3@npm:^5.0.1": - version: 5.0.1 - resolution: "eventemitter3@npm:5.0.1" - checksum: 8c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 - languageName: node - linkType: hard - -"events@npm:1.1.1": - version: 1.1.1 - resolution: "events@npm:1.1.1" - checksum: 8c0/29ba5a4c7d03dd2f4a2d3d9d4dfd8332225256f666cd69f490975d2eff8d7c73f1fb4872877b2c1f3b485e8fb42462153d65e5a21ea994eb928c3bec9e0c826e - languageName: node - linkType: hard - -"events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": - version: 3.3.0 - resolution: "events@npm:3.3.0" - checksum: 8c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 - languageName: node - linkType: hard - -"eventsource@npm:^1.0.7": - version: 1.1.0 - resolution: "eventsource@npm:1.1.0" - dependencies: - original: "npm:^1.0.0" - checksum: 8c0/fabb4641ffb459f4d5baaf8b90c2dae2ada01252b3ca7f920797cf00b0f23236a9c4f2163aed9f2ded799c947f892321e9ee2d243c703ebd4a400be57692f474 - languageName: node - linkType: hard - -"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: "npm:^1.3.4" - node-gyp: "npm:latest" - safe-buffer: "npm:^5.1.1" - checksum: 8c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 - languageName: node - linkType: hard - -"exec-sh@npm:^0.3.2": - version: 0.3.6 - resolution: "exec-sh@npm:0.3.6" - checksum: 8c0/de29ed40c263989ea151cfc8561c9a41a443185d1998b0ff7aee248323af3b46db3a1dc5341816297d0c02dca472b188640490aa4ba3cae017f531f98102607d - languageName: node - linkType: hard - -"execa@npm:5.1.1": - version: 5.1.1 - resolution: "execa@npm:5.1.1" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^6.0.0" - human-signals: "npm:^2.1.0" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.1" - onetime: "npm:^5.1.2" - signal-exit: "npm:^3.0.3" - strip-final-newline: "npm:^2.0.0" - checksum: 8c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f - languageName: node - linkType: hard - -"execa@npm:^0.7.0": - version: 0.7.0 - resolution: "execa@npm:0.7.0" - dependencies: - cross-spawn: "npm:^5.0.1" - get-stream: "npm:^3.0.0" - is-stream: "npm:^1.1.0" - npm-run-path: "npm:^2.0.0" - p-finally: "npm:^1.0.0" - signal-exit: "npm:^3.0.0" - strip-eof: "npm:^1.0.0" - checksum: 812f1776e2a6b2226532e43c1af87d8a12e26de03a06e7e043f653acf5565e0656f5f6c64d66726fefa17178ac129caaa419a50905934e7c4a846417abb25d4a - languageName: node - linkType: hard - -"execa@npm:^1.0.0": - version: 1.0.0 - resolution: "execa@npm:1.0.0" - dependencies: - cross-spawn: "npm:^6.0.0" - get-stream: "npm:^4.0.0" - is-stream: "npm:^1.1.0" - npm-run-path: "npm:^2.0.0" - p-finally: "npm:^1.0.0" - signal-exit: "npm:^3.0.0" - strip-eof: "npm:^1.0.0" - checksum: 8c0/cc71707c9aa4a2552346893ee63198bf70a04b5a1bc4f8a0ef40f1d03c319eae80932c59191f037990d7d102193e83a38ec72115fff814ec2fb3099f3661a590 - languageName: node - linkType: hard - -"execa@npm:^4.0.0": - version: 4.1.0 - resolution: "execa@npm:4.1.0" - dependencies: - cross-spawn: "npm:^7.0.0" - get-stream: "npm:^5.0.0" - human-signals: "npm:^1.1.1" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.0" - onetime: "npm:^5.1.0" - signal-exit: "npm:^3.0.2" - strip-final-newline: "npm:^2.0.0" - checksum: 8c0/02211601bb1c52710260edcc68fb84c3c030dc68bafc697c90ada3c52cc31375337de8c24826015b8382a58d63569ffd203b79c94fef217d65503e3e8d2c52ba - languageName: node - linkType: hard - -"execa@npm:^5.0.0": - version: 5.0.0 - resolution: "execa@npm:5.0.0" - dependencies: - cross-spawn: "npm:^7.0.3" - get-stream: "npm:^6.0.0" - human-signals: "npm:^2.1.0" - is-stream: "npm:^2.0.0" - merge-stream: "npm:^2.0.0" - npm-run-path: "npm:^4.0.1" - onetime: "npm:^5.1.2" - signal-exit: "npm:^3.0.3" - strip-final-newline: "npm:^2.0.0" - checksum: 8c0/e110add7ca0de63aea415385ebad7236c8de281d5d9a916dbd69f59009dac3d5d631e6252c2ea5d0258220b0d22acf25649b2caf05fa162eaa1401339fc69ba4 - languageName: node - linkType: hard - -"executable@npm:^4.1.0": - version: 4.1.1 - resolution: "executable@npm:4.1.1" - dependencies: - pify: "npm:^2.2.0" - checksum: c3cc5d2d2e3cdb1b7d7b0639ebd5566d113d7ada21cfa07f5226d55ba2a210320116720e07570ed5659ef2ec516bc00c8f0488dac75d112fd324ef25c2100173 - languageName: node - linkType: hard - -"exit@npm:^0.1.2": - version: 0.1.2 - resolution: "exit@npm:0.1.2" - checksum: 8c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 - languageName: node - linkType: hard - -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: "npm:^2.3.3" - define-property: "npm:^0.2.5" - extend-shallow: "npm:^2.0.1" - posix-character-classes: "npm:^0.1.0" - regex-not: "npm:^1.0.0" - snapdragon: "npm:^0.8.1" - to-regex: "npm:^3.0.1" - checksum: 8c0/3e2fb95d2d7d7231486493fd65db913927b656b6fcdfcce41e139c0991a72204af619ad4acb1be75ed994ca49edb7995ef241dbf8cf44dc3c03d211328428a87 - languageName: node - linkType: hard - -"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": - version: 2.0.2 - resolution: "expand-tilde@npm:2.0.2" - dependencies: - homedir-polyfill: "npm:^1.0.1" - checksum: 8c0/205a60497422746d1c3acbc1d65bd609b945066f239a2b785e69a7a651ac4cbeb4e08555b1ea0023abbe855e6fcb5bbf27d0b371367fdccd303d4fb2b4d66845 - languageName: node - linkType: hard - -"expect@npm:^26.6.2": - version: 26.6.2 - resolution: "expect@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - ansi-styles: "npm:^4.0.0" - jest-get-type: "npm:^26.3.0" - jest-matcher-utils: "npm:^26.6.2" - jest-message-util: "npm:^26.6.2" - jest-regex-util: "npm:^26.0.0" - checksum: 8c0/e84ab6c96e99eaf92586e5c554317413352082b66be952ba338bf690e15106c0b6350ac99d0d66237d675cc75963811255120d47172a8e764b1d6a9ae2b6b1b4 - languageName: node - linkType: hard - -"expect@npm:^29.0.0": - version: 29.4.1 - resolution: "expect@npm:29.4.1" - dependencies: - "@jest/expect-utils": "npm:^29.4.1" - jest-get-type: "npm:^29.2.0" - jest-matcher-utils: "npm:^29.4.1" - jest-message-util: "npm:^29.4.1" - jest-util: "npm:^29.4.1" - checksum: 8c0/d950f83ed9c1ee2cde8d996d3327aaa13e87df9527077ced232b941a316c453ca9c953362548ba4d56ef95c66b181818033c9777a5b50ef36f0d7f07f4350490 - languageName: node - linkType: hard - -"expect@npm:^29.7.0": - version: 29.7.0 - resolution: "expect@npm:29.7.0" - dependencies: - "@jest/expect-utils": "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 - languageName: node - linkType: hard - -"express@npm:4.18.2, express@npm:^4.17.3": - version: 4.18.2 - resolution: "express@npm:4.18.2" - dependencies: - accepts: "npm:~1.3.8" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.20.1" - content-disposition: "npm:0.5.4" - content-type: "npm:~1.0.4" - cookie: "npm:0.5.0" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:2.0.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:1.2.0" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - merge-descriptors: "npm:1.0.1" - methods: "npm:~1.1.2" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.7" - proxy-addr: "npm:~2.0.7" - qs: "npm:6.11.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.2.1" - send: "npm:0.18.0" - serve-static: "npm:1.15.0" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 8c0/75af556306b9241bc1d7bdd40c9744b516c38ce50ae3210658efcbf96e3aed4ab83b3432f06215eae5610c123bc4136957dc06e50dfc50b7d4d775af56c4c59c - languageName: node - linkType: hard - -"express@npm:^4.16.3, express@npm:^4.17.1": - version: 4.17.1 - resolution: "express@npm:4.17.1" - dependencies: - accepts: "npm:~1.3.7" - array-flatten: "npm:1.1.1" - body-parser: "npm:1.19.0" - content-disposition: "npm:0.5.3" - content-type: "npm:~1.0.4" - cookie: "npm:0.4.0" - cookie-signature: "npm:1.0.6" - debug: "npm:2.6.9" - depd: "npm:~1.1.2" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - finalhandler: "npm:~1.1.2" - fresh: "npm:0.5.2" - merge-descriptors: "npm:1.0.1" - methods: "npm:~1.1.2" - on-finished: "npm:~2.3.0" - parseurl: "npm:~1.3.3" - path-to-regexp: "npm:0.1.7" - proxy-addr: "npm:~2.0.5" - qs: "npm:6.7.0" - range-parser: "npm:~1.2.1" - safe-buffer: "npm:5.1.2" - send: "npm:0.17.1" - serve-static: "npm:1.14.1" - setprototypeof: "npm:1.1.1" - statuses: "npm:~1.5.0" - type-is: "npm:~1.6.18" - utils-merge: "npm:1.0.1" - vary: "npm:~1.1.2" - checksum: 8c0/17bbe941cb98167d54d24f1b1f252e9e1757ad036b0ba7a836c51d3f1a7bf329ccbf72739d214599818ccec91115b7c5b87ad2d2a006e20142310af4d7c6f7bf - languageName: node - linkType: hard - -"ext-list@npm:^2.0.0": - version: 2.2.2 - resolution: "ext-list@npm:2.2.2" - dependencies: - mime-db: "npm:^1.28.0" - checksum: bfdb435f333dccbf3f9698dc9d8e38eb47b42d756800bfafa9ec0c1c8aace877c40095baf36f691bcfd09bb88ed247c6e51596e75a158280fa19cf8588a7e258 - languageName: node - linkType: hard - -"ext-name@npm:^5.0.0": - version: 5.0.0 - resolution: "ext-name@npm:5.0.0" - dependencies: - ext-list: "npm:^2.0.0" - sort-keys-length: "npm:^1.0.0" - checksum: 6750b34636bb6dca78e1bcc797615af68ecf50d62cf774624a32ee7879da99c949b5c41e8aa56ede4eb15c6abad6b1a8858d0934faab75ff6e2fd6f408debe18 - languageName: node - linkType: hard - -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: "npm:^0.1.0" - checksum: 8c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: "npm:^1.0.0" - is-extendable: "npm:^1.0.1" - checksum: 8c0/f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a - languageName: node - linkType: hard - -"extend@npm:^3.0.0": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: 8c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 - languageName: node - linkType: hard - -"external-editor@npm:^3.0.3": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: "npm:^0.7.0" - iconv-lite: "npm:^0.4.24" - tmp: "npm:^0.0.33" - checksum: 8c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 - languageName: node - linkType: hard - -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: "npm:^0.3.2" - define-property: "npm:^1.0.0" - expand-brackets: "npm:^2.1.4" - extend-shallow: "npm:^2.0.1" - fragment-cache: "npm:^0.2.1" - regex-not: "npm:^1.0.0" - snapdragon: "npm:^0.8.1" - to-regex: "npm:^3.0.1" - checksum: 8c0/e1a891342e2010d046143016c6c03d58455c2c96c30bf5570ea07929984ee7d48fad86b363aee08f7a8a638f5c3a66906429b21ecb19bc8e90df56a001cd282c - languageName: node - linkType: hard - -"extract-files@npm:^11.0.0": - version: 11.0.0 - resolution: "extract-files@npm:11.0.0" - checksum: 8c0/7ac1cd693d081099d7c29f2b36aad199f92c5ea234c2016eb37ba213dddaefe74d54566f0675de5917d35cf98670183c2c9a0d96094727eb2c6dae02be7fc308 - languageName: node - linkType: hard - -"extract-files@npm:^9.0.0": - version: 9.0.0 - resolution: "extract-files@npm:9.0.0" - checksum: 8c0/60259624c5e7a927d6bccdbedd685462ceee3dcaa28e509ecfff5e2c1032a652bb96ac645837ef1ac4c4fd4461b7896b008f106f7718245befdb0e1c98024640 - languageName: node - linkType: hard - -"fast-content-type-parse@npm:^1.1.0": - version: 1.1.0 - resolution: "fast-content-type-parse@npm:1.1.0" - checksum: 882bf990fa5d64be1825ce183818db43900ece0d7ef184cb9409bae8ed1001acbe536a657b1496382cb3e308e71ab39cc399bbdae70cba1745eecaeca4e55384 - languageName: node - linkType: hard - -"fast-decode-uri-component@npm:^1.0.1": - version: 1.0.1 - resolution: "fast-decode-uri-component@npm:1.0.1" - checksum: 8c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": - version: 3.1.3 - resolution: "fast-deep-equal@npm:3.1.3" - checksum: 8c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 - languageName: node - linkType: hard - -"fast-diff@npm:^1.1.2": - version: 1.2.0 - resolution: "fast-diff@npm:1.2.0" - checksum: 8c0/2fbcb23957fb0bc920832a94ba627b860400f9cce45e1594e931dabf62e858369a58c6c2603e2ecc4f7679580f710b5b5b6e698a355a9a9bfcfd93c06c7c4350 - languageName: node - linkType: hard - -"fast-equals@npm:^5.0.0": - version: 5.0.1 - resolution: "fast-equals@npm:5.0.1" - checksum: d7077b8b681036c2840ed9860a3048e44fc268fad2b525b8f25b43458be0c8ad976152eb4b475de9617170423c5b802121ebb61ed6641c3ac035fadaf805c8c0 - languageName: node - linkType: hard - -"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": - version: 1.3.2 - resolution: "fast-fifo@npm:1.3.2" - checksum: d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c - languageName: node - linkType: hard - -"fast-glob@npm:3.3.2, fast-glob@npm:^3.3.0": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 - languageName: node - linkType: hard - -"fast-glob@npm:^2.2.6": - version: 2.2.7 - resolution: "fast-glob@npm:2.2.7" - dependencies: - "@mrmlnc/readdir-enhanced": "npm:^2.2.1" - "@nodelib/fs.stat": "npm:^1.1.2" - glob-parent: "npm:^3.1.0" - is-glob: "npm:^4.0.0" - merge2: "npm:^1.2.3" - micromatch: "npm:^3.1.10" - checksum: 8c0/85bc858e298423d5a1b6eed6eee8556005a19d245c4ae9aceac04d56699ea9885ca0a2afc4f76b562416e94fe2048df6b2f306f3d4b7e51ed37b7a52fc1e4fc7 - languageName: node - linkType: hard - -"fast-glob@npm:^3.1.1, fast-glob@npm:^3.2.4, fast-glob@npm:^3.2.5": - version: 3.2.5 - resolution: "fast-glob@npm:3.2.5" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.0" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.2" - picomatch: "npm:^2.2.1" - checksum: 8c0/d3b90c1debb01a3f359491fd04ad474f2e5030a37245971b32d5c967a920c4efca74ebba786f1ebcb602442af1f88815af792b8a662125f74be24b98f2235bb4 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12": - version: 3.2.12 - resolution: "fast-glob@npm:3.2.12" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 8c0/08604fb8ef6442ce74068bef3c3104382bb1f5ab28cf75e4ee904662778b60ad620e1405e692b7edea598ef445f5d387827a965ba034e1892bf54b1dfde97f26 - languageName: node - linkType: hard - -"fast-glob@npm:^3.2.9": - version: 3.2.11 - resolution: "fast-glob@npm:3.2.11" - dependencies: - "@nodelib/fs.stat": "npm:^2.0.2" - "@nodelib/fs.walk": "npm:^1.2.3" - glob-parent: "npm:^5.1.2" - merge2: "npm:^1.3.0" - micromatch: "npm:^4.0.4" - checksum: 8c0/f726d4d6545ae9ade242eba78ae418cd8beac6c9291cdc36fc6b3b4e54f04fa0ecde5767256f2a600d6e14dc49a841adb3aa4b5f3f0c06b35dd4f3954965443d - languageName: node - linkType: hard - -"fast-json-parse@npm:1.0.3, fast-json-parse@npm:^1.0.3": - version: 1.0.3 - resolution: "fast-json-parse@npm:1.0.3" - checksum: 8c0/2c58c7a0f7f1725c9da1272839f9bee3ccc13b77672b18ab4ac470c707999bca39828cd7e79b87c73017f21c3ddff37992d03fa2fd2da124d9bd06c1d02c9b7e - languageName: node - linkType: hard - -"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": - version: 2.1.0 - resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 8c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b - languageName: node - linkType: hard - -"fast-json-stringify@npm:^5.7.0": - version: 5.7.0 - resolution: "fast-json-stringify@npm:5.7.0" - dependencies: - "@fastify/deepmerge": "npm:^1.0.0" - ajv: "npm:^8.10.0" - ajv-formats: "npm:^2.1.1" - fast-deep-equal: "npm:^3.1.3" - fast-uri: "npm:^2.1.0" - rfdc: "npm:^1.2.0" - checksum: 8c0/1c955b677e2cbae573217a22231a27fdf695ab916cc69ff5e0a944b984ebbedad4b6827eae7b1a4cd792fc967d5039f52f0e25471be555aec7ef87b5f62e70dc - languageName: node - linkType: hard - -"fast-json-stringify@npm:^5.8.0": - version: 5.9.2 - resolution: "fast-json-stringify@npm:5.9.2" - dependencies: - "@fastify/deepmerge": "npm:^1.0.0" - ajv: "npm:^8.10.0" - ajv-formats: "npm:^2.1.1" - fast-deep-equal: "npm:^3.1.3" - fast-uri: "npm:^2.1.0" - json-schema-ref-resolver: "npm:^1.0.1" - rfdc: "npm:^1.2.0" - checksum: 9afd11ad075b5b2fa8f7041e2a5086df4d8bc7e39cab708e4a9ee7dbcd233ebae75e0be3509a3bdcde80646431da27f6a734240344984712d651eef3e8ff63ba - languageName: node - linkType: hard - -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": - version: 2.0.6 - resolution: "fast-levenshtein@npm:2.0.6" - checksum: 8c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 - languageName: node - linkType: hard - -"fast-querystring@npm:^1.0.0": - version: 1.1.0 - resolution: "fast-querystring@npm:1.1.0" - dependencies: - fast-decode-uri-component: "npm:^1.0.1" - checksum: 8c0/2c82885a553792f860e2d27981e6db6b58a9028a9134ca0e5025229893195a1427138a1ec1512fb5ebe1fa59fbe930f0ee64ce3d6914462921fea3966ecf34c8 - languageName: node - linkType: hard - -"fast-querystring@npm:^1.1.1": - version: 1.1.1 - resolution: "fast-querystring@npm:1.1.1" - dependencies: - fast-decode-uri-component: "npm:^1.0.1" - checksum: 8c0/bfc14761201796ef2ad9b4c645512701c474c8ed2bd503f7dd4b966894f29ef67e38ef4d3cfb4c633fa6e9118d512b610356b1eae9d89a710f773f585d56d391 - languageName: node - linkType: hard - -"fast-querystring@npm:^1.1.2": - version: 1.1.2 - resolution: "fast-querystring@npm:1.1.2" - dependencies: - fast-decode-uri-component: "npm:^1.0.1" - checksum: e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3 - languageName: node - linkType: hard - -"fast-redact@npm:^3.0.0": - version: 3.0.1 - resolution: "fast-redact@npm:3.0.1" - checksum: 8c0/8c1fe72be6184235f4a571727e7c78b048a295715ef96f4dbbe9f6e22e7cf9f632ff7699150cc4a723760e81f83bfd0e62272f9a5f63ffb1a4720c1cdc3daf41 - languageName: node - linkType: hard - -"fast-redact@npm:^3.1.1": - version: 3.1.2 - resolution: "fast-redact@npm:3.1.2" - checksum: 8c0/3be61f1702d93f13beab3d8743568afdb7d5016ad71cb2a5e38b7e0c069d0736041ca123efcfa577cb91b0271fdca1fcb0c0201430839805be2ecaa398888643 - languageName: node - linkType: hard - -"fast-safe-stringify@npm:^2.0.7": - version: 2.0.7 - resolution: "fast-safe-stringify@npm:2.0.7" - checksum: 8c0/9031c630e55c19aa95f7c4fcaa3adaa20753dbb04722f8b78eedd8f825c2ddbda68449c89770f03f79dbadf5c4b30a421e0a0d960cb8db4f0d763cc9edfc709c - languageName: node - linkType: hard - -"fast-safe-stringify@npm:^2.0.8": - version: 2.1.1 - resolution: "fast-safe-stringify@npm:2.1.1" - checksum: 8c0/d90ec1c963394919828872f21edaa3ad6f1dddd288d2bd4e977027afff09f5db40f94e39536d4646f7e01761d704d72d51dce5af1b93717f3489ef808f5f4e4d - languageName: node - linkType: hard - -"fast-uri@npm:^2.0.0, fast-uri@npm:^2.1.0, fast-uri@npm:^2.2.0": - version: 2.2.0 - resolution: "fast-uri@npm:2.2.0" - checksum: 8c0/2242463c97c187762a6212c59eb9d881832d15210f16923daf40ee66fba06a801f4da7d6f1010fb4da101069ec99aeb2700bbbb3eb89141b2701a54048989a9c - languageName: node - linkType: hard - -"fast-url-parser@npm:^1.1.3": - version: 1.1.3 - resolution: "fast-url-parser@npm:1.1.3" - dependencies: - punycode: "npm:^1.3.2" - checksum: 8c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 - languageName: node - linkType: hard - -"fast-write-atomic@npm:0.2.1": - version: 0.2.1 - resolution: "fast-write-atomic@npm:0.2.1" - checksum: 8c0/972cc50a0a9d5a20eb173913421308ba73e3bf6a242eb40c6c9c9ac176d2e12cbc0510fc1878136a04920ddada3b261f2dbc36a339a5301c1683b248bd3dc14e - languageName: node - linkType: hard - -"fastest-levenshtein@npm:^1.0.12": - version: 1.0.16 - resolution: "fastest-levenshtein@npm:1.0.16" - checksum: 8c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b - languageName: node - linkType: hard - -"fastify-plugin@npm:^4.0.0, fastify-plugin@npm:^4.5.0": - version: 4.5.0 - resolution: "fastify-plugin@npm:4.5.0" - checksum: 8c0/81a63886e038fffb5427df5104c53b0f5d8ad89e59a451110cf591a81372ead1986df59d95bd897d9bd742f78e20eb3ff50bda0115382e6359ed1616883b9a01 - languageName: node - linkType: hard - -"fastify-raw-body@npm:4.3.0": - version: 4.3.0 - resolution: "fastify-raw-body@npm:4.3.0" - dependencies: - fastify-plugin: "npm:^4.0.0" - raw-body: "npm:^2.5.1" - secure-json-parse: "npm:^2.4.0" - checksum: 3260ab2fc3483a1668442b0a2b60a3f671948d8fc6e7a811ac782cfc28d31d8f064e7b3835ca21cb542d41c4a2a7bc84dd5c18ef0c38f90d7387dd6bbb83161d - languageName: node - linkType: hard - -"fastify@npm:4.24.3": - version: 4.24.3 - resolution: "fastify@npm:4.24.3" - dependencies: - "@fastify/ajv-compiler": "npm:^3.5.0" - "@fastify/error": "npm:^3.4.0" - "@fastify/fast-json-stringify-compiler": "npm:^4.3.0" - abstract-logging: "npm:^2.0.1" - avvio: "npm:^8.2.1" - fast-content-type-parse: "npm:^1.1.0" - fast-json-stringify: "npm:^5.8.0" - find-my-way: "npm:^7.7.0" - light-my-request: "npm:^5.11.0" - pino: "npm:^8.16.0" - process-warning: "npm:^2.2.0" - proxy-addr: "npm:^2.0.7" - rfdc: "npm:^1.3.0" - secure-json-parse: "npm:^2.7.0" - semver: "npm:^7.5.4" - toad-cache: "npm:^3.3.0" - checksum: 36018767b25cde307942f52172eedfc7c1ce186162222334e19caa607e3d29fe3de04cff2c08f21096d45fa4b071cd58a319392a6dbb5b5dbdf8230b38405c3e - languageName: node - linkType: hard - -"fastq@npm:^1.6.0": - version: 1.11.0 - resolution: "fastq@npm:1.11.0" - dependencies: - reusify: "npm:^1.0.4" - checksum: 8c0/7d3eaee64ec2b7336aa359d75a01a01bae845aed1fc2cdad8ea7a85ec00ee185a3c58b14bc709d99d3edc89b24f6290e55cdcc8a297ecc3735491b8c5e532cff - languageName: node - linkType: hard - -"fastq@npm:^1.6.1": - version: 1.15.0 - resolution: "fastq@npm:1.15.0" - dependencies: - reusify: "npm:^1.0.4" - checksum: 8c0/5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 - languageName: node - linkType: hard - -"fault@npm:^1.0.0": - version: 1.0.4 - resolution: "fault@npm:1.0.4" - dependencies: - format: "npm:^0.2.0" - checksum: 8c0/c86c11500c1b676787296f31ade8473adcc6784f118f07c1a9429730b6288d0412f96e069ce010aa57e4f65a9cccb5abee8868bbe3c5f10de63b20482c9baebd - languageName: node - linkType: hard - -"faye-websocket@npm:^0.11.3": - version: 0.11.4 - resolution: "faye-websocket@npm:0.11.4" - dependencies: - websocket-driver: "npm:>=0.5.1" - checksum: 8c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 - languageName: node - linkType: hard - -"fb-watchman@npm:^2.0.0": - version: 2.0.1 - resolution: "fb-watchman@npm:2.0.1" - dependencies: - bser: "npm:2.1.1" - checksum: 8c0/796ce6de1f915d4230771a6ad2219e0555275f2936d66022321845f7e69c65b10baa74959322b1ab94ac65b91307f1f09a6b8e2097a337ff113101ebbc4c6958 - languageName: node - linkType: hard - -"fbjs-css-vars@npm:^1.0.0": - version: 1.0.2 - resolution: "fbjs-css-vars@npm:1.0.2" - checksum: 8c0/dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f - languageName: node - linkType: hard - -"fbjs@npm:^3.0.0": - version: 3.0.4 - resolution: "fbjs@npm:3.0.4" - dependencies: - cross-fetch: "npm:^3.1.5" - fbjs-css-vars: "npm:^1.0.0" - loose-envify: "npm:^1.0.0" - object-assign: "npm:^4.1.0" - promise: "npm:^7.1.1" - setimmediate: "npm:^1.0.5" - ua-parser-js: "npm:^0.7.30" - checksum: 8c0/6c605d038d6852f0199a333e0b7f1f3e2602eebd0b815fba505f641912610007a0a8419222909e17ad0e07365d3b8a0bf45cacf9b43366dde0e95e5ced251632 - languageName: node - linkType: hard - -"figgy-pudding@npm:^3.5.1": - version: 3.5.2 - resolution: "figgy-pudding@npm:3.5.2" - checksum: 8c0/b21c7adaeb8485ef3c50e056b5dc8c3a6461818343aba141e0d7927aad47a0cb9f1d207ffdf494c380cd60d7c848c46a5ce5cb06987d10e9226fcec419c8af90 - languageName: node - linkType: hard - -"figures@npm:^1.7.0": - version: 1.7.0 - resolution: "figures@npm:1.7.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - object-assign: "npm:^4.1.0" - checksum: 8c0/a10942b0eec3372bf61822ab130d2bbecdf527d551b0b013fbe7175b7a0238ead644ee8930a1a3cb872fb9ab2ec27df30e303765a3b70b97852e2e9ee43bdff3 - languageName: node - linkType: hard - -"figures@npm:^2.0.0": - version: 2.0.0 - resolution: "figures@npm:2.0.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 8c0/5dc5a75fec3e7e04ae65d6ce51d28b3e70d4656c51b06996b6fdb2cb5b542df512e3b3c04482f5193a964edddafa5521479ff948fa84e12ff556e53e094ab4ce - languageName: node - linkType: hard - -"figures@npm:^3.0.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" - dependencies: - escape-string-regexp: "npm:^1.0.5" - checksum: 8c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 - languageName: node - linkType: hard - -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" - dependencies: - flat-cache: "npm:^3.0.4" - checksum: 8c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd - languageName: node - linkType: hard - -"file-loader@npm:^6.0.0, file-loader@npm:^6.2.0": - version: 6.2.0 - resolution: "file-loader@npm:6.2.0" - dependencies: - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/e176a57c2037ab0f78e5755dbf293a6b7f0f8392350a120bd03cc2ce2525bea017458ba28fea14ca535ff1848055e86d1a3a216bdb2561ef33395b27260a1dd3 - languageName: node - linkType: hard - -"file-system-cache@npm:^1.0.5": - version: 1.0.5 - resolution: "file-system-cache@npm:1.0.5" - dependencies: - bluebird: "npm:^3.3.5" - fs-extra: "npm:^0.30.0" - ramda: "npm:^0.21.0" - checksum: 8c0/4898deb88303c8d54548b857920bea7227535d951ad4ec873c3b26d2b31a03b6ce112df856e9b5fc5993be6dbfb30cb40a3a8feef4054c286c1017f241f9f533 - languageName: node - linkType: hard - -"file-type@npm:^17.1.6": - version: 17.1.6 - resolution: "file-type@npm:17.1.6" - dependencies: - readable-web-to-node-stream: "npm:^3.0.2" - strtok3: "npm:^7.0.0-alpha.9" - token-types: "npm:^5.0.0-alpha.2" - checksum: e75a00f4b57aadb81bac60e7315a7d15fa37276a8d2e7b551418388a039f89883e4e53fdb8e3ec6eb151f55f32e6f6a71c5069d6054c5dee20d2898fe853dcf2 - languageName: node - linkType: hard - -"file-uri-to-path@npm:1.0.0": - version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: 8c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 - languageName: node - linkType: hard - -"filename-reserved-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "filename-reserved-regex@npm:3.0.0" - checksum: 2b1df851a37f84723f9d8daf885ddfadd3dea2a124474db405295962abc1a01d6c9b6b27edec33bad32ef601e1a220f8a34d34f30ca5a911709700e2b517e268 - languageName: node - linkType: hard - -"filenamify@npm:^5.0.2": - version: 5.1.1 - resolution: "filenamify@npm:5.1.1" - dependencies: - filename-reserved-regex: "npm:^3.0.0" - strip-outer: "npm:^2.0.0" - trim-repeated: "npm:^2.0.0" - checksum: e644fdcb03059e5f98082214c74ce00e11175e766f4807a08d2c37f65b72b6698e5e07e6e4a18369f5c0adab57fb1a987baea034d6660ca4c6dab3e3ba5de66d - languageName: node - linkType: hard - -"filesize@npm:6.1.0": - version: 6.1.0 - resolution: "filesize@npm:6.1.0" - checksum: 8c0/bb9c90268aa4b6eace09fbabcb1b7337bca636fd1a1281801c375497d327ad1d3b7b30d5d52285eb9f96907a788919d54b4020915ec7ae87aa0203676b83900a - languageName: node - linkType: hard - -"filesize@npm:^3.6.1": - version: 3.6.1 - resolution: "filesize@npm:3.6.1" - checksum: 8c0/7b900b488c914d4b9146ddaf2865c410687977cf62c627760ff3c47dce4a00a53523658f40c9023bba8894d2e4841bc913af280472c2bb5aec29bc342eb33b6f - languageName: node - linkType: hard - -"fill-keys@npm:^1.0.2": - version: 1.0.2 - resolution: "fill-keys@npm:1.0.2" - dependencies: - is-object: "npm:~1.0.1" - merge-descriptors: "npm:~1.0.0" - checksum: 8c0/39d01c6d1fbb7cbb05ccbfee5746afcb03dbaf8990f09f3b1b23a144d215c0b685b9db8f40b0e949627e49baa8e5530a1b7f9a2c50ef29acc715a91c45bbb6da - languageName: node - linkType: hard - -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: "npm:^2.0.1" - is-number: "npm:^3.0.0" - repeat-string: "npm:^1.6.1" - to-regex-range: "npm:^2.1.0" - checksum: 8c0/ccd57b7c43d7e28a1f8a60adfa3c401629c08e2f121565eece95e2386ebc64dedc7128d8c3448342aabf19db0c55a34f425f148400c7a7be9a606ba48749e089 - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: "npm:^5.0.1" - checksum: 8c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f - languageName: node - linkType: hard - -"finalhandler@npm:1.2.0": - version: 1.2.0 - resolution: "finalhandler@npm:1.2.0" - dependencies: - debug: "npm:2.6.9" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - on-finished: "npm:2.4.1" - parseurl: "npm:~1.3.3" - statuses: "npm:2.0.1" - unpipe: "npm:~1.0.0" - checksum: 8c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 - languageName: node - linkType: hard - -"finalhandler@npm:~1.1.2": - version: 1.1.2 - resolution: "finalhandler@npm:1.1.2" - dependencies: - debug: "npm:2.6.9" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - on-finished: "npm:~2.3.0" - parseurl: "npm:~1.3.3" - statuses: "npm:~1.5.0" - unpipe: "npm:~1.0.0" - checksum: 8c0/6a96e1f5caab085628c11d9fdceb82ba608d5e426c6913d4d918409baa271037a47f28fbba73279e8ad614f0b8fa71ea791d265e408d760793829edd8c2f4584 - languageName: node - linkType: hard - -"find-babel-config@npm:^1.2.0": - version: 1.2.0 - resolution: "find-babel-config@npm:1.2.0" - dependencies: - json5: "npm:^0.5.1" - path-exists: "npm:^3.0.0" - checksum: 8c0/6ea93bde7fd062fac87f27789aa77142de87dd023a5a60ceb7c91f65c7fab967a57c0a410ef8c51b8e2a924194867ab2e901ff35a7da7b9db5a94150652385a3 - languageName: node - linkType: hard - -"find-babel-config@npm:^2.0.0": - version: 2.0.0 - resolution: "find-babel-config@npm:2.0.0" - dependencies: - json5: "npm:^2.1.1" - path-exists: "npm:^4.0.0" - checksum: 8c0/4d841cf74f0e17da20c4d52d520831e1ccf42eaa99570c07ea5948adabc14a0d1388dea690efdf66c007de8c4c61629458c11822c88ccc84d855d77668fa5247 - languageName: node - linkType: hard - -"find-cache-dir@npm:^2.0.0, find-cache-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: "npm:^1.0.1" - make-dir: "npm:^2.0.0" - pkg-dir: "npm:^3.0.0" - checksum: 8c0/556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb - languageName: node - linkType: hard - -"find-cache-dir@npm:^3.3.1": - version: 3.3.1 - resolution: "find-cache-dir@npm:3.3.1" - dependencies: - commondir: "npm:^1.0.1" - make-dir: "npm:^3.0.2" - pkg-dir: "npm:^4.1.0" - checksum: 8c0/589ece7a2721885c354f1f8c5c6d02c3acdfc9d62ae9fad2967e3a613fbfbc7a5ebdb727af3c77864f656224046fbc07e41733f9d9d3eb3896d149e9083ebbb4 - languageName: node - linkType: hard - -"find-cache-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "find-cache-dir@npm:4.0.0" - dependencies: - common-path-prefix: "npm:^3.0.0" - pkg-dir: "npm:^7.0.0" - checksum: 8c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff - languageName: node - linkType: hard - -"find-my-way@npm:^7.7.0": - version: 7.7.0 - resolution: "find-my-way@npm:7.7.0" - dependencies: - fast-deep-equal: "npm:^3.1.3" - fast-querystring: "npm:^1.0.0" - safe-regex2: "npm:^2.0.0" - checksum: 6b4fef5f3a21a73c5428337a02ce2f90af055e3fade6f57f3444a76d7f58a43891aba26597014ff02f9fd9071abfdd32b92ff2435aadaf96dd2316920c456f6e - languageName: node - linkType: hard - -"find-root@npm:^1.1.0": - version: 1.1.0 - resolution: "find-root@npm:1.1.0" - checksum: 8c0/1abc7f3bf2f8d78ff26d9e00ce9d0f7b32e5ff6d1da2857bcdf4746134c422282b091c672cde0572cac3840713487e0a7a636af9aa1b74cb11894b447a521efa - languageName: node - linkType: hard - -"find-up@npm:4.1.0, find-up@npm:^4.0.0, find-up@npm:^4.1.0": - version: 4.1.0 - resolution: "find-up@npm:4.1.0" - dependencies: - locate-path: "npm:^5.0.0" - path-exists: "npm:^4.0.0" - checksum: 8c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 - languageName: node - linkType: hard - -"find-up@npm:5.0.0, find-up@npm:^5.0.0": - version: 5.0.0 - resolution: "find-up@npm:5.0.0" - dependencies: - locate-path: "npm:^6.0.0" - path-exists: "npm:^4.0.0" - checksum: 8c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a - languageName: node - linkType: hard - -"find-up@npm:^2.1.0": - version: 2.1.0 - resolution: "find-up@npm:2.1.0" - dependencies: - locate-path: "npm:^2.0.0" - checksum: 8c0/c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 - languageName: node - linkType: hard - -"find-up@npm:^3.0.0": - version: 3.0.0 - resolution: "find-up@npm:3.0.0" - dependencies: - locate-path: "npm:^3.0.0" - checksum: 8c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 - languageName: node - linkType: hard - -"find-up@npm:^6.3.0": - version: 6.3.0 - resolution: "find-up@npm:6.3.0" - dependencies: - locate-path: "npm:^7.1.0" - path-exists: "npm:^5.0.0" - checksum: 8c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 - languageName: node - linkType: hard - -"find-versions@npm:^5.0.0": - version: 5.1.0 - resolution: "find-versions@npm:5.1.0" - dependencies: - semver-regex: "npm:^4.0.5" - checksum: f1ef79d0850e0bd1eba03def02892d31feccdef75129c14b2a2d1cec563e2c51ad5a01f6a7a2d59ddbf9ecca1014ff8a6353ff2e2885e004f7a81ab1488899d4 - languageName: node - linkType: hard - -"findup-sync@npm:^3.0.0": - version: 3.0.0 - resolution: "findup-sync@npm:3.0.0" - dependencies: - detect-file: "npm:^1.0.0" - is-glob: "npm:^4.0.0" - micromatch: "npm:^3.0.4" - resolve-dir: "npm:^1.0.1" - checksum: 8c0/ff6f37328a7629775db2abf0fcd40e7c117baf37f23006f206c18bcd9ca0ce99d8c24ae86df540370ec76c1080ab59fe82cb71d2c7c1ad819ccccee726af7e92 - languageName: node - linkType: hard - -"findup-sync@npm:^4.0.0": - version: 4.0.0 - resolution: "findup-sync@npm:4.0.0" - dependencies: - detect-file: "npm:^1.0.0" - is-glob: "npm:^4.0.0" - micromatch: "npm:^4.0.2" - resolve-dir: "npm:^1.0.1" - checksum: 8c0/3e7de4d0afda35ecdd6260ce9d31524161817466ad6218b092dc73554848ce9618b69ec0f841dc82e320a4b3bfaba19c71c154f5b249ffed28143ba95a743d37 - languageName: node - linkType: hard - -"flat-cache@npm:^3.0.4": - version: 3.0.4 - resolution: "flat-cache@npm:3.0.4" - dependencies: - flatted: "npm:^3.1.0" - rimraf: "npm:^3.0.2" - checksum: 8c0/f274dcbadb09ad8d7b6edf2ee9b034bc40bf0c12638f6c4084e9f1d39208cb104a5ebbb24b398880ef048200eaa116852f73d2d8b72e8c9627aba8c3e27ca057 - languageName: node - linkType: hard - -"flat@npm:^5.0.2": - version: 5.0.2 - resolution: "flat@npm:5.0.2" - bin: - flat: cli.js - checksum: f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe - languageName: node - linkType: hard - -"flatstr@npm:^1.0.12": - version: 1.0.12 - resolution: "flatstr@npm:1.0.12" - checksum: 8c0/f99cf801fd3606e8b4aa96b93ec09caab42bc304526ff55a80db03db0ef73c9a014e983a6d72009c4f1bc50e2483d137041fae18a325dc0d851d045c4d6929a9 - languageName: node - linkType: hard - -"flatted@npm:^3.1.0": - version: 3.1.1 - resolution: "flatted@npm:3.1.1" - checksum: 8c0/179b26156c37e529addfb530dd1ea3b9e49888fa7e2ec34bc644e603965db6889d70e1bbc14e2ccae680a0f71bbf7446c396660905a92b436a78f14d011fb349 - languageName: node - linkType: hard - -"flow-parser@npm:0.*": - version: 0.199.1 - resolution: "flow-parser@npm:0.199.1" - checksum: 8c0/1b991d8b479c66a8a33ca4c688233a2c639e9a9946dfa3ee9576ef1077a18c857d1d262ae0e8a0b67bd5387b9e1aa3981cde24815c1e51bddfe225d0e7a7b656 - languageName: node - linkType: hard - -"flush-write-stream@npm:^1.0.0": - version: 1.1.1 - resolution: "flush-write-stream@npm:1.1.1" - dependencies: - inherits: "npm:^2.0.3" - readable-stream: "npm:^2.3.6" - checksum: 8c0/2cd4f65b728d5f388197a03dafabc6a5e4f0c2ed1a2d912e288f7aa1c2996dd90875e55b50cf32c78dca55ad2e2dfae5d3db09b223838388033d87cf5920dd87 - languageName: node - linkType: hard - -"follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.10.0": - version: 1.14.8 - resolution: "follow-redirects@npm:1.14.8" - peerDependenciesMeta: - debug: - optional: true - checksum: 8c0/9ae4a95ce7869d4dd59d0cdbf416bcd711a63ef4642c120b8ba326bee28f625889423ae905bb14d6f6c4291938a841f3682f70f93698e6910cb4d34a46d291bc - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: "npm:^1.1.3" - checksum: 8c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa - languageName: node - linkType: hard - -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 8c0/42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 - languageName: node - linkType: hard - -"foreground-child@npm:^2.0.0": - version: 2.0.0 - resolution: "foreground-child@npm:2.0.0" - dependencies: - cross-spawn: "npm:^7.0.0" - signal-exit: "npm:^3.0.2" - checksum: 8c0/6719982783a448162f9a01500757fb2053bc5dcd4d67c7cd30739b38ccc01b39f84e408c30989d1d8774519c021c0498e2450ab127690fb09d7f2568fd94ffcc - languageName: node - linkType: hard - -"foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" - dependencies: - cross-spawn: "npm:^7.0.0" - signal-exit: "npm:^4.0.1" - checksum: 8c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:4.1.6, fork-ts-checker-webpack-plugin@npm:^4.1.6": - version: 4.1.6 - resolution: "fork-ts-checker-webpack-plugin@npm:4.1.6" - dependencies: - "@babel/code-frame": "npm:^7.5.5" - chalk: "npm:^2.4.1" - micromatch: "npm:^3.1.10" - minimatch: "npm:^3.0.4" - semver: "npm:^5.6.0" - tapable: "npm:^1.0.0" - worker-rpc: "npm:^0.1.0" - checksum: 8c0/2dddbe0d3bf2b84f4a5daada41091003decf881cffdef3bab72a699d0bfe3003e2d312405b304894153b5cfd0d0180d47f547e256525cdeb20f95de3df14a223 - languageName: node - linkType: hard - -"fork-ts-checker-webpack-plugin@npm:^6.0.4": - version: 6.5.0 - resolution: "fork-ts-checker-webpack-plugin@npm:6.5.0" - dependencies: - "@babel/code-frame": "npm:^7.8.3" - "@types/json-schema": "npm:^7.0.5" - chalk: "npm:^4.1.0" - chokidar: "npm:^3.4.2" - cosmiconfig: "npm:^6.0.0" - deepmerge: "npm:^4.2.2" - fs-extra: "npm:^9.0.0" - glob: "npm:^7.1.6" - memfs: "npm:^3.1.2" - minimatch: "npm:^3.0.4" - schema-utils: "npm:2.7.0" - semver: "npm:^7.3.2" - tapable: "npm:^1.0.0" - peerDependencies: - eslint: ">= 6" - typescript: ">= 2.7" - vue-template-compiler: "*" - webpack: ">= 4" - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - checksum: 8c0/875e9f09ef519ffcd15905c2b8d1f0f42b0012e87692417e60f4acd840f1f1c9dac6e663ca7bc9b12563d14f5b81ec86470d69a4212403cfad2949d22c2a53e1 - languageName: node - linkType: hard - -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 8c0/1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485 - languageName: node - linkType: hard - -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 8c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e - languageName: node - linkType: hard - -"format@npm:^0.2.0": - version: 0.2.2 - resolution: "format@npm:0.2.2" - checksum: 8c0/6032ba747541a43abf3e37b402b2f72ee08ebcb58bf84d816443dd228959837f1cddf1e8775b29fa27ff133f4bd146d041bfca5f9cf27f048edf3d493cf8fee6 - languageName: node - linkType: hard - -"forwarded@npm:0.2.0": - version: 0.2.0 - resolution: "forwarded@npm:0.2.0" - checksum: 8c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 - languageName: node - linkType: hard - -"forwarded@npm:~0.1.2": - version: 0.1.2 - resolution: "forwarded@npm:0.1.2" - checksum: 8c0/51bfceaf4b345085653d999a2115859cc7f6de1c4d63b550751df728ac00ed190814fe43f9abe6a8e4aec274e9e18a86cfaf9de69bf6d791c6cc9a92c481ed97 - languageName: node - linkType: hard - -"fraction.js@npm:^4.3.6": - version: 4.3.7 - resolution: "fraction.js@npm:4.3.7" - checksum: df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711 - languageName: node - linkType: hard - -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: "npm:^0.2.2" - checksum: 8c0/5891d1c1d1d5e1a7fb3ccf28515c06731476fa88f7a50f4ede8a0d8d239a338448e7f7cc8b73db48da19c229fa30066104fe6489862065a4f1ed591c42fbeabf - languageName: node - linkType: hard - -"framer-motion@npm:^6.5.1": - version: 6.5.1 - resolution: "framer-motion@npm:6.5.1" - dependencies: - "@emotion/is-prop-valid": "npm:^0.8.2" - "@motionone/dom": "npm:10.12.0" - framesync: "npm:6.0.1" - hey-listen: "npm:^1.0.8" - popmotion: "npm:11.0.3" - style-value-types: "npm:5.0.0" - tslib: "npm:^2.1.0" - peerDependencies: - react: ">=16.8 || ^17.0.0 || ^18.0.0" - react-dom: ">=16.8 || ^17.0.0 || ^18.0.0" - dependenciesMeta: - "@emotion/is-prop-valid": - optional: true - checksum: 69d64f7ac878eb5a0d90f1ccbaaee76f7731b276c4369fdce7d283fa92cca35ea05c42ad2da0c6c0ab4bb180b7fa4f511b6928bdb43818f6feaf245531d3df5a - languageName: node - linkType: hard - -"framesync@npm:6.0.1": - version: 6.0.1 - resolution: "framesync@npm:6.0.1" - dependencies: - tslib: "npm:^2.1.0" - checksum: ce84ce548a8612be070204b9cf3ce7258acead2d51df05586995340e501d1439dfc1f9402ede921a9c0dde854d80fd46e97c699a3657f8d7abd5bc705553bf2b - languageName: node - linkType: hard - -"fresh@npm:0.5.2": - version: 0.5.2 - resolution: "fresh@npm:0.5.2" - checksum: 8c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a - languageName: node - linkType: hard - -"from2@npm:^2.1.0": - version: 2.3.0 - resolution: "from2@npm:2.3.0" - dependencies: - inherits: "npm:^2.0.1" - readable-stream: "npm:^2.0.0" - checksum: 8c0/f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 - languageName: node - linkType: hard - -"fs-capacitor@npm:^2.0.4": - version: 2.0.4 - resolution: "fs-capacitor@npm:2.0.4" - checksum: 8c0/5fd6c09f08b66c53400b094b8346851d7cda497371508f04987a2cb9182240672e89cb1638a4cde1fc26ca187168700b7a0b7eabeb14f871c3ac47f930a5d288 - languageName: node - linkType: hard - -"fs-constants@npm:^1.0.0": - version: 1.0.0 - resolution: "fs-constants@npm:1.0.0" - checksum: 8c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 - languageName: node - linkType: hard - -"fs-extra@npm:11.2.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 - languageName: node - linkType: hard - -"fs-extra@npm:^0.30.0": - version: 0.30.0 - resolution: "fs-extra@npm:0.30.0" - dependencies: - graceful-fs: "npm:^4.1.2" - jsonfile: "npm:^2.1.0" - klaw: "npm:^1.0.0" - path-is-absolute: "npm:^1.0.0" - rimraf: "npm:^2.2.8" - checksum: 8c0/24f3c966018c7bf436bf38ca3a126f1d95bf0f82598302195c4f0c8887767f045dae308f92c53a39cead74631dabbc30fcf1c71dbe96f1f0148f6de8edd114bc - languageName: node - linkType: hard - -"fs-extra@npm:^10.0.0": - version: 10.0.0 - resolution: "fs-extra@npm:10.0.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 8c0/85802f3d9e49d197744a8372f0d78d5a1faa3df73f4c5375d6366a4b9f745197d3da1f095841443d50f29a9f81cdc01363eb6d17bef2ba70c268559368211040 - languageName: node - linkType: hard - -"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: "npm:^1.0.0" - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 8c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 - languageName: node - linkType: hard - -"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 8c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - -"fs-monkey@npm:1.0.3, fs-monkey@npm:^1.0.3": - version: 1.0.3 - resolution: "fs-monkey@npm:1.0.3" - checksum: 8c0/197fd276d224d54a27c6267c69887ec29ccd4bedd83d72b5050abf3b6c6ef83d7b86a85a87f615c24a4e6f9a4888fd151c9f16a37ffb23e37c4c2d14c1da6275 - languageName: node - linkType: hard - -"fs-readdir-recursive@npm:^1.1.0": - version: 1.1.0 - resolution: "fs-readdir-recursive@npm:1.1.0" - checksum: 8c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c - languageName: node - linkType: hard - -"fs-write-stream-atomic@npm:^1.0.8": - version: 1.0.10 - resolution: "fs-write-stream-atomic@npm:1.0.10" - dependencies: - graceful-fs: "npm:^4.1.2" - iferr: "npm:^0.1.5" - imurmurhash: "npm:^0.1.4" - readable-stream: "npm:1 || 2" - checksum: 8c0/293b2b4ed346d35a28f8637a20cb2aef31be86503da501c42c2eda8fefed328bac16ce0e5daa7019f9329d73930c58031eaea2ce0c70f1680943fbfb7cff808b - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 8c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 - languageName: node - linkType: hard - -"fsevents@npm:^1.2.7": - version: 1.2.13 - resolution: "fsevents@npm:1.2.13" - dependencies: - bindings: "npm:^1.5.0" - nan: "npm:^2.12.1" - checksum: 8c0/4427ff08db9ee7327f2c3ad58ec56f9096a917eed861bfffaa2e2be419479cdf37d00750869ab9ecbf5f59f32ad999bd59577d73fc639193e6c0ce52bb253e02 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@npm:^2.1.2, fsevents@npm:^2.3.2, fsevents@npm:~2.3.1, fsevents@npm:~2.3.2": - version: 2.3.2 - resolution: "fsevents@npm:2.3.2" - dependencies: - node-gyp: "npm:latest" - checksum: 8c0/be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@npm:~2.3.3": - version: 2.3.3 - resolution: "fsevents@npm:2.3.3" - dependencies: - node-gyp: "npm:latest" - checksum: a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A^1.2.7#optional!builtin": - version: 1.2.13 - resolution: "fsevents@patch:fsevents@npm%3A1.2.13#optional!builtin::version=1.2.13&hash=d11327" - dependencies: - bindings: "npm:^1.5.0" - nan: "npm:^2.12.1" - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A^2.1.2#optional!builtin, fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.1#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": - version: 2.3.2 - resolution: "fsevents@patch:fsevents@npm%3A2.3.2#optional!builtin::version=2.3.2&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"fsevents@patch:fsevents@npm%3A~2.3.3#optional!builtin": - version: 2.3.3 - resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" - dependencies: - node-gyp: "npm:latest" - conditions: os=darwin - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: 8c0/60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e - languageName: node - linkType: hard - -"function-bind@npm:^1.1.2": - version: 1.1.2 - resolution: "function-bind@npm:1.1.2" - checksum: d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.0": - version: 1.1.4 - resolution: "function.prototype.name@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - functions-have-names: "npm:^1.2.2" - checksum: 8c0/79cfef3eb6e2ba766b38e9a7055fc6c08e8dfd4bee0797b82048b0cd01a1af993171d0070dc4779e53bd9f4989e2ba5564cbcf12f0f4e440b8e4f284f57ecd16 - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.0" - functions-have-names: "npm:^1.2.2" - checksum: 8c0/b75fb8c5261f03a54f7cb53a8c99e0c40297efc3cf750c51d3a2e56f6741701c14eda51986d30c24063136a4c32d1643df9d1dd2f2a14b64fa011edd3e7117ae - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - functions-have-names: "npm:^1.2.3" - checksum: 9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b - languageName: node - linkType: hard - -"functional-red-black-tree@npm:^1.0.1": - version: 1.0.1 - resolution: "functional-red-black-tree@npm:1.0.1" - checksum: 8c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.2 - resolution: "functions-have-names@npm:1.2.2" - checksum: 8c0/63aa4c186b289115064c930a44ee8765593e62723a69e239588d951a5d971dfa23e18d3373303a9173f5b39011940c37fa2c04ffce49c1f0d43edca02047a6a8 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca - languageName: node - linkType: hard - -"fuse.js@npm:^3.6.1": - version: 3.6.1 - resolution: "fuse.js@npm:3.6.1" - checksum: 8c0/bd9d5bc4d82781de7bb46057e96775f9efc497eb8b334b61cfea589db730c1fe7789bf5ff61b1146c15e18ffe5b27715807e5d436f333662b47917b530ced5e9 - languageName: node - linkType: hard - -"gauge@npm:^3.0.0": - version: 3.0.2 - resolution: "gauge@npm:3.0.2" - dependencies: - aproba: "npm:^1.0.3 || ^2.0.0" - color-support: "npm:^1.1.2" - console-control-strings: "npm:^1.0.0" - has-unicode: "npm:^2.0.1" - object-assign: "npm:^4.1.1" - signal-exit: "npm:^3.0.0" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - wide-align: "npm:^1.1.2" - checksum: 8c0/75230ccaf216471e31025c7d5fcea1629596ca20792de50c596eb18ffb14d8404f927cd55535aab2eeecd18d1e11bd6f23ec3c2e9878d2dda1dc74bccc34b913 - languageName: node - linkType: hard - -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: "npm:^1.0.3 || ^2.0.0" - color-support: "npm:^1.1.3" - console-control-strings: "npm:^1.1.0" - has-unicode: "npm:^2.0.1" - signal-exit: "npm:^3.0.7" - string-width: "npm:^4.2.3" - strip-ansi: "npm:^6.0.1" - wide-align: "npm:^1.1.5" - checksum: 8c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c - languageName: node - linkType: hard - -"generic-pool@npm:3.9.0": - version: 3.9.0 - resolution: "generic-pool@npm:3.9.0" - checksum: 8c0/6b314d0d71170d5cbaf7162c423f53f8d6556b2135626a65bcdc03c089840b0a2f59eeb2d907939b8200e945eaf71ceb6630426f22d2128a1d242aec4b232aa7 - languageName: node - linkType: hard - -"gensync@npm:^1.0.0-beta.1, gensync@npm:^1.0.0-beta.2": - version: 1.0.0-beta.2 - resolution: "gensync@npm:1.0.0-beta.2" - checksum: 8c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 - languageName: node - linkType: hard - -"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": - version: 2.0.5 - resolution: "get-caller-file@npm:2.0.5" - checksum: 8c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.1 - resolution: "get-intrinsic@npm:1.1.1" - dependencies: - function-bind: "npm:^1.1.1" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.1" - checksum: 8c0/c01055578e9b8da37a7779b18b732436c55d93e5ffa56b0fc4d3da8468ad89a25ce2343ba1945f20c0e78119bc7bb296fb59a0da521b6e43fd632de73376e040 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.1.3": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" - dependencies: - function-bind: "npm:^1.1.1" - has: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" - checksum: 8c0/7c564f6b1061e6ca9eb1abab424a2cf80b93e75dcde65229d504e4055aa0ea54f88330e9b75d10e41c72bca881a947e84193b3549a4692d836f304239a178d63 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": - version: 1.2.2 - resolution: "get-intrinsic@npm:1.2.2" - dependencies: - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b - languageName: node - linkType: hard - -"get-nonce@npm:^1.0.0": - version: 1.0.1 - resolution: "get-nonce@npm:1.0.1" - checksum: 2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 - languageName: node - linkType: hard - -"get-package-type@npm:^0.1.0": - version: 0.1.0 - resolution: "get-package-type@npm:0.1.0" - checksum: 8c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be - languageName: node - linkType: hard - -"get-source@npm:^2.0.12": - version: 2.0.12 - resolution: "get-source@npm:2.0.12" - dependencies: - data-uri-to-buffer: "npm:^2.0.0" - source-map: "npm:^0.6.1" - checksum: 8c0/b1db46d28902344fd9407e1f0ed0b8f3a85cb4650f85ba8cee9c0b422fc75118172f12f735706e2c6e034617b13a2fbc5266e7fab617ecb184f0cee074b9dd3e - languageName: node - linkType: hard - -"get-stream@npm:^3.0.0": - version: 3.0.0 - resolution: "get-stream@npm:3.0.0" - checksum: 003f5f3b8870da59c6aafdf6ed7e7b07b48c2f8629cd461bd3900726548b6b8cfa2e14d6b7814fbb08f07a42f4f738407fa70b989928b2783a76b278505bba22 - languageName: node - linkType: hard - -"get-stream@npm:^4.0.0, get-stream@npm:^4.1.0": - version: 4.1.0 - resolution: "get-stream@npm:4.1.0" - dependencies: - pump: "npm:^3.0.0" - checksum: 8c0/294d876f667694a5ca23f0ca2156de67da950433b6fb53024833733975d32582896dbc7f257842d331809979efccf04d5e0b6b75ad4d45744c45f193fd497539 - languageName: node - linkType: hard - -"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: "npm:^3.0.0" - checksum: 8c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 - languageName: node - linkType: hard - -"get-stream@npm:^6.0.0": - version: 6.0.1 - resolution: "get-stream@npm:6.0.1" - checksum: 8c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.0": - version: 1.0.0 - resolution: "get-symbol-description@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 8c0/23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb - languageName: node - linkType: hard - -"get-them-args@npm:1.3.2": - version: 1.3.2 - resolution: "get-them-args@npm:1.3.2" - checksum: 8c0/a75e26d7369a00f596dc9c3c7b4259a219d4486a0beef51d991867103cc8c07d22814a24210d9c9f56cefb35f9848e16fe120b57b3ec1ea333054e715059d586 - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.7.2": - version: 4.7.2 - resolution: "get-tsconfig@npm:4.7.2" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 169b2beababfbb16e8a0ae813ee59d3e14d4960231c816615161ab5be68ec07a394dce59695742ac84295e2efab8d9e89bcf3abaf5e253dfbec3496e01bb9a65 - languageName: node - linkType: hard - -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 8c0/f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9 - languageName: node - linkType: hard - -"glob-parent@npm:^3.1.0": - version: 3.1.0 - resolution: "glob-parent@npm:3.1.0" - dependencies: - is-glob: "npm:^3.1.0" - path-dirname: "npm:^1.0.0" - checksum: 8c0/bfa89ce5ae1dfea4c2ece7b61d2ea230d87fcbec7472915cfdb3f4caf688a91ecb0dc86ae39b1e17505adce7e64cae3b971d64dc66091f3a0131169fd631b00d - languageName: node - linkType: hard - -"glob-parent@npm:^5.1.0, glob-parent@npm:^5.1.1, glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.0, glob-parent@npm:~5.1.2": - version: 5.1.2 - resolution: "glob-parent@npm:5.1.2" - dependencies: - is-glob: "npm:^4.0.1" - checksum: 8c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee - languageName: node - linkType: hard - -"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: "npm:^4.0.3" - checksum: 8c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 - languageName: node - linkType: hard - -"glob-promise@npm:^3.4.0": - version: 3.4.0 - resolution: "glob-promise@npm:3.4.0" - dependencies: - "@types/glob": "npm:*" - peerDependencies: - glob: "*" - checksum: 8c0/8862e309f46a97c9491d35900257c9174f72b8358a8f485cdba88eb2d5b0f9cf496dfe635711bbd871e89165f50ec3acd435cbef5bfc5efbc14508abced778ac - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.3.0": - version: 0.3.0 - resolution: "glob-to-regexp@npm:0.3.0" - checksum: 8c0/f7e8091288d88b397b715281560d86ba4998246c300cb0d51db483db0a4c68cb48b489af8da9c03262745e8aa5337ba596d82dee61ff9467c5d7c27d70b676aa - languageName: node - linkType: hard - -"glob-to-regexp@npm:^0.4.1": - version: 0.4.1 - resolution: "glob-to-regexp@npm:0.4.1" - checksum: 8c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 - languageName: node - linkType: hard - -"glob@npm:10.3.10, glob@npm:^10.3.10, glob@npm:^10.3.7": - version: 10.3.10 - resolution: "glob@npm:10.3.10" - dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^2.3.5" - minimatch: "npm:^9.0.1" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry: "npm:^1.10.1" - bin: - glob: dist/esm/bin.mjs - checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d - languageName: node - linkType: hard - -"glob@npm:7.1.6": - version: 7.1.6 - resolution: "glob@npm:7.1.6" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 8c0/2575cce9306ac534388db751f0aa3e78afedb6af8f3b529ac6b2354f66765545145dba8530abf7bff49fb399a047d3f9b6901c38ee4c9503f592960d9af67763 - languageName: node - linkType: hard - -"glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": - version: 7.1.7 - resolution: "glob@npm:7.1.7" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 8c0/173245e6f9ccf904309eb7ef4a44a11f3bf68e9e341dff5a28b5db0dd7123b7506daf41497f3437a0710f57198187b758c2351eeaabce4d16935e956920da6a4 - languageName: node - linkType: hard - -"glob@npm:^7.2.0": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.1.1" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 8c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe - languageName: node - linkType: hard - -"glob@npm:^8.0.0, glob@npm:^8.0.1, glob@npm:^8.0.3": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^5.0.1" - once: "npm:^1.3.0" - checksum: 8c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.0 - resolution: "global-dirs@npm:3.0.0" - dependencies: - ini: "npm:2.0.0" - checksum: 8c0/2b3c05967873662204dfe7159cfef20019e898b5ebe2ac70fc155e4cbe2207732f4b72d4ea1e72f10e91cee139d237ab4d39f1e282751093e7fe83c53abba46f - languageName: node - linkType: hard - -"global-modules@npm:2.0.0, global-modules@npm:^2.0.0": - version: 2.0.0 - resolution: "global-modules@npm:2.0.0" - dependencies: - global-prefix: "npm:^3.0.0" - checksum: 8c0/43b770fe24aa6028f4b9770ea583a47f39750be15cf6e2578f851e4ccc9e4fa674b8541928c0b09c21461ca0763f0d36e4068cec86c914b07fd6e388e66ba5b9 - languageName: node - linkType: hard - -"global-modules@npm:^1.0.0": - version: 1.0.0 - resolution: "global-modules@npm:1.0.0" - dependencies: - global-prefix: "npm:^1.0.1" - is-windows: "npm:^1.0.1" - resolve-dir: "npm:^1.0.0" - checksum: 8c0/7d91ecf78d4fcbc966b2d89c1400df273afea795bc8cadf39857ee1684e442065621fd79413ff5fcd9e90c6f1b2dc0123e644fa0b7811f987fd54c6b9afad858 - languageName: node - linkType: hard - -"global-prefix@npm:^1.0.1": - version: 1.0.2 - resolution: "global-prefix@npm:1.0.2" - dependencies: - expand-tilde: "npm:^2.0.2" - homedir-polyfill: "npm:^1.0.1" - ini: "npm:^1.3.4" - is-windows: "npm:^1.0.1" - which: "npm:^1.2.14" - checksum: 8c0/d8037e300f1dc04d5d410d16afa662e71bfad22dcceba6c9727bb55cc273b8988ca940b3402f62e5392fd261dd9924a9a73a865ef2000219461f31f3fc86be06 - languageName: node - linkType: hard - -"global-prefix@npm:^3.0.0": - version: 3.0.0 - resolution: "global-prefix@npm:3.0.0" - dependencies: - ini: "npm:^1.3.5" - kind-of: "npm:^6.0.2" - which: "npm:^1.3.1" - checksum: 8c0/510f489fb68d1cc7060f276541709a0ee6d41356ef852de48f7906c648ac223082a1cc8fce86725ca6c0e032bcdc1189ae77b4744a624b29c34a9d0ece498269 - languageName: node - linkType: hard - -"global@npm:^4.4.0": - version: 4.4.0 - resolution: "global@npm:4.4.0" - dependencies: - min-document: "npm:^2.19.0" - process: "npm:^0.11.10" - checksum: 8c0/4a467aec6602c00a7c5685f310574ab04e289ad7f894f0f01c9c5763562b82f4b92d1e381ce6c5bbb12173e2a9f759c1b63dda6370cfb199970267e14d90aa91 - languageName: node - linkType: hard - -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 8c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 - languageName: node - linkType: hard - -"globals@npm:^13.19.0": - version: 13.20.0 - resolution: "globals@npm:13.20.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 8c0/9a028f136f1e7a3574689f430f7d57faa0d699c4c7e92ade00b02882a892be31c314d50dff07b48e607283013117bb8a997406d03a1f7ab4a33a005eb16efd6c - languageName: node - linkType: hard - -"globals@npm:^13.6.0": - version: 13.9.0 - resolution: "globals@npm:13.9.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 8c0/7378b999b27c0a560acd3222a44dbb1df669c19a2a6fc63f20ae2b4db203371eb83b16e274464167cc1c27ee11204a100c6db26829d2bde6d9b82782fc341a7c - languageName: node - linkType: hard - -"globals@npm:^13.9.0": - version: 13.12.1 - resolution: "globals@npm:13.12.1" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 8c0/e4b7fe3a66c2d05b67b57fc14ed1bfaa29fd09a5faad192b27e27c338e0fd69fda8b43d0b0dd36b429ef7d7adf2e97b4a960c2d4bdc2d5e1b04dde977978c2dd - languageName: node - linkType: hard - -"globalthis@npm:^1.0.0": - version: 1.0.2 - resolution: "globalthis@npm:1.0.2" - dependencies: - define-properties: "npm:^1.1.3" - checksum: 8c0/dcb1f502192d1bdcd9bf07911e44567c4d7041d62ed65a31cc1df00e0e8fc1ac9669844c78c763cc89533a34f2e62c008260d3d1dc775954f7ca59027d0694b4 - languageName: node - linkType: hard - -"globalthis@npm:^1.0.3": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" - dependencies: - define-properties: "npm:^1.1.3" - checksum: 8c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 - languageName: node - linkType: hard - -"globby@npm:11.0.1": - version: 11.0.1 - resolution: "globby@npm:11.0.1" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.1.1" - ignore: "npm:^5.1.4" - merge2: "npm:^1.3.0" - slash: "npm:^3.0.0" - checksum: 8c0/b5966bb6e8fa88a02924a0ee71c619ad57b98660269ddecd5e939a42f4fc056e7958659bde539454e2deaeac79bbdeab01831783f05efd4b14305b5bfff44c09 - languageName: node - linkType: hard - -"globby@npm:^11.0.0, globby@npm:^11.0.1": - version: 11.0.3 - resolution: "globby@npm:11.0.3" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.1.1" - ignore: "npm:^5.1.4" - merge2: "npm:^1.3.0" - slash: "npm:^3.0.0" - checksum: 8c0/cb056bbb81196739d9ba3f316769ee87631c0833fb7d643c45da9c41e6a3f27699a93e21337e4ee1d179f6f37031c83335b2a80a6bddd252aceb8d44e7ef6b2d - languageName: node - linkType: hard - -"globby@npm:^11.0.2, globby@npm:^11.0.3, globby@npm:^11.1.0": - version: 11.1.0 - resolution: "globby@npm:11.1.0" - dependencies: - array-union: "npm:^2.1.0" - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.9" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^3.0.0" - checksum: 8c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 - languageName: node - linkType: hard - -"globby@npm:^13.1.1": - version: 13.1.3 - resolution: "globby@npm:13.1.3" - dependencies: - dir-glob: "npm:^3.0.1" - fast-glob: "npm:^3.2.11" - ignore: "npm:^5.2.0" - merge2: "npm:^1.4.1" - slash: "npm:^4.0.0" - checksum: 8c0/34199932fad67ae6a4cca764eaad8e7678efabd4321f553bfb8a52046e03f8e8e2f9c14216a6734b692b7c26c4da1b1cfe9ce23733d28d1777d73f4bf34b09c7 - languageName: node - linkType: hard - -"globby@npm:^6.1.0": - version: 6.1.0 - resolution: "globby@npm:6.1.0" - dependencies: - array-union: "npm:^1.0.1" - glob: "npm:^7.0.3" - object-assign: "npm:^4.0.1" - pify: "npm:^2.0.0" - pinkie-promise: "npm:^2.0.0" - checksum: 8c0/656ad1f0d02c6ef378c07589519ed3ec27fe988ea177195c05b8aff280320f3d67b91fa0baa6f7e49288f9bf1f92fc84f783a79ac3ed66278f3fa082e627ed84 - languageName: node - linkType: hard - -"globby@npm:^9.2.0": - version: 9.2.0 - resolution: "globby@npm:9.2.0" - dependencies: - "@types/glob": "npm:^7.1.1" - array-union: "npm:^1.0.2" - dir-glob: "npm:^2.2.2" - fast-glob: "npm:^2.2.6" - glob: "npm:^7.1.3" - ignore: "npm:^4.0.3" - pify: "npm:^4.0.1" - slash: "npm:^2.0.0" - checksum: 8c0/2bd47ec43797b81000f3619feff96803b22591961788c06d746f6c8ba2deb14676b591ee625eb74b197c0047b2236e4a7a2ad662417661231b317c1de67aee94 - languageName: node - linkType: hard - -"goober@npm:^2.0.15": - version: 2.0.37 - resolution: "goober@npm:2.0.37" - peerDependencies: - csstype: ^2.6.2 - checksum: 8c0/e26f0e14521b599afde84c7c845b0223f55fdf5db1fe1f8185782184f8e8aac1836ec3a58a23f0d55aac6868cd59177e82e587ef4ae0426421700903707a5299 - languageName: node - linkType: hard - -"goober@npm:^2.1.10": - version: 2.1.11 - resolution: "goober@npm:2.1.11" - peerDependencies: - csstype: ^3.0.10 - checksum: 8c0/6916ddf08285153f096e0328692b57c6a24c6e8e0938addfa2ea1a879b4106c89c3f0c4f31f37bf939c2c57847cfc428ef552607c092741065989a986288cb63 - languageName: node - linkType: hard - -"good-listener@npm:^1.2.2": - version: 1.2.2 - resolution: "good-listener@npm:1.2.2" - dependencies: - delegate: "npm:^3.1.2" - checksum: 8c0/5c532f2e223f1f3a12504077d6d960986979a7923fb428a26bde012b88ac57ffba1b28507f95bd16a73c1ae805fdb38d26d9442d538dd559fad159a7f58243fe - languageName: node - linkType: hard - -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 8c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 - languageName: node - linkType: hard - -"got@npm:^11.8.5": - version: 11.8.6 - resolution: "got@npm:11.8.6" - dependencies: - "@sindresorhus/is": "npm:^4.0.0" - "@szmarczak/http-timer": "npm:^4.0.5" - "@types/cacheable-request": "npm:^6.0.1" - "@types/responselike": "npm:^1.0.0" - cacheable-lookup: "npm:^5.0.3" - cacheable-request: "npm:^7.0.2" - decompress-response: "npm:^6.0.0" - http2-wrapper: "npm:^1.0.0-beta.5.2" - lowercase-keys: "npm:^2.0.0" - p-cancelable: "npm:^2.0.0" - responselike: "npm:^2.0.0" - checksum: 754dd44877e5cf6183f1e989ff01c648d9a4719e357457bd4c78943911168881f1cfb7b2cb15d885e2105b3ad313adb8f017a67265dd7ade771afdb261ee8cb1 - languageName: node - linkType: hard - -"got@npm:^9.6.0": - version: 9.6.0 - resolution: "got@npm:9.6.0" - dependencies: - "@sindresorhus/is": "npm:^0.14.0" - "@szmarczak/http-timer": "npm:^1.1.2" - cacheable-request: "npm:^6.0.0" - decompress-response: "npm:^3.3.0" - duplexer3: "npm:^0.1.4" - get-stream: "npm:^4.1.0" - lowercase-keys: "npm:^1.0.1" - mimic-response: "npm:^1.0.1" - p-cancelable: "npm:^1.0.0" - to-readable-stream: "npm:^1.0.0" - url-parse-lax: "npm:^3.0.0" - checksum: 8c0/5cb3111e14b48bf4fb8b414627be481ebfb14151ec867e80a74b6d1472489965b9c4f4ac5cf4f3b1f9b90c60a2ce63584d9072b16efd9a3171553e00afc5abc8 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4": - version: 4.2.6 - resolution: "graceful-fs@npm:4.2.6" - checksum: 8c0/f24a75a9ca057c3d482148242878c7fe9e25ce73a46c7480a58b53f1915c93d9ddf27c2d22d8b99182447e8d7f37ae6b29a74b246bbcc8c0d0b36b0d0648cea5 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.6": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 8c0/4223a833e38e1d0d2aea630c2433cfb94ddc07dfc11d511dbd6be1d16688c5be848acc31f9a5d0d0ddbfb56d2ee5a6ae0278aceeb0ca6a13f27e06b9956fb952 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.2.9": - version: 4.2.9 - resolution: "graceful-fs@npm:4.2.9" - checksum: 8c0/2a66760ce6677ca18a24a1ef15d440cfd970086446af1e78c9e9de083c48122d8bd9c3fdc37f8f80f34aae833fa0d9dd52725e75a1c3f433ddd34eece39e7376 - languageName: node - linkType: hard - -"graphemer@npm:^1.4.0": - version: 1.4.0 - resolution: "graphemer@npm:1.4.0" - checksum: 8c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 - languageName: node - linkType: hard - -"graphiql-explorer@npm:^0.9.0": - version: 0.9.0 - resolution: "graphiql-explorer@npm:0.9.0" - peerDependencies: - graphql: ^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - react: ^15.6.0 || ^16.0.0 - react-dom: ^15.6.0 || ^16.0.0 - checksum: 5dc209a26508600c290105aebf402747fffaa1dcb63298bdf6599b40b65c41cc5f10acd0c50597ae3c731e22eec5b943f982cca399b0468786a0e7b0a69a3390 - languageName: node - linkType: hard - -"graphiql@npm:3.0.10": - version: 3.0.10 - resolution: "graphiql@npm:3.0.10" - dependencies: - "@graphiql/react": "npm:^0.20.2" - "@graphiql/toolkit": "npm:^0.9.1" - graphql-language-service: "npm:^5.2.0" - markdown-it: "npm:^12.2.0" - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 - react: ^16.8.0 || ^17 || ^18 - react-dom: ^16.8.0 || ^17 || ^18 - checksum: 36750b94b8a1abaa2448f6eb6e29c8e38680d06e950bcaab67d26f3ab4509b2bdfcb74162e7e79846665c360943204c0d4d571176187e17a3e7073595763e42e - languageName: node - linkType: hard - -"graphql-config@npm:^4.5.0": - version: 4.5.0 - resolution: "graphql-config@npm:4.5.0" - dependencies: - "@graphql-tools/graphql-file-loader": "npm:^7.3.7" - "@graphql-tools/json-file-loader": "npm:^7.3.7" - "@graphql-tools/load": "npm:^7.5.5" - "@graphql-tools/merge": "npm:^8.2.6" - "@graphql-tools/url-loader": "npm:^7.9.7" - "@graphql-tools/utils": "npm:^9.0.0" - cosmiconfig: "npm:8.0.0" - jiti: "npm:1.17.1" - minimatch: "npm:4.2.3" - string-env-interpolation: "npm:1.0.1" - tslib: "npm:^2.4.0" - peerDependencies: - cosmiconfig-toml-loader: ^1.0.0 - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - peerDependenciesMeta: - cosmiconfig-toml-loader: - optional: true - checksum: 8c0/2f9fcc16fca402640f10d3b8c5502f2e77fe640b43ea1d9548664282f48fe2998707ef2e495d1b8b46b33f1c74bbf575c3981ed0a0af43cdfcad5356cae61ce7 - languageName: node - linkType: hard - -"graphql-depth-limit@npm:^1.1.0": - version: 1.1.0 - resolution: "graphql-depth-limit@npm:1.1.0" - dependencies: - arrify: "npm:^1.0.1" - peerDependencies: - graphql: "*" - checksum: 8c0/8f50268ab3e2553cfe64fad532a3bd60068865217f113ac7388bfea1484d36a7e711a1c26f6a03e67969923967f2a84b62618c07732ca2ca603c295f8a19dbf9 - languageName: node - linkType: hard - -"graphql-extensions@npm:^0.16.0": - version: 0.16.0 - resolution: "graphql-extensions@npm:0.16.0" - dependencies: - "@apollographql/apollo-tools": "npm:^0.5.0" - apollo-server-env: "npm:^3.2.0" - apollo-server-types: "npm:^0.10.0" - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/4aa2f9a1ef8a352354a48c311f3243704c23dbb26704ca042a710d70da5bbfe135ad8355f1b5ae1e1f588a225619c5208a60e9c1dc55bb12f76e2ac9564ddd01 - languageName: node - linkType: hard - -"graphql-language-service@npm:5.2.0, graphql-language-service@npm:^5.2.0": - version: 5.2.0 - resolution: "graphql-language-service@npm:5.2.0" - dependencies: - nullthrows: "npm:^1.0.0" - vscode-languageserver-types: "npm:^3.17.1" - peerDependencies: - graphql: ^15.5.0 || ^16.0.0 - bin: - graphql: dist/temp-bin.js - checksum: 2a865d6a7a7fa44bdce12768f7f3b2840a295f9cd684f30bb54db1f3def5f44ea8719c9605b6334fa76798d664f58ed025f17d78199f6c5bc431a67af50190fc - languageName: node - linkType: hard - -"graphql-request@npm:^5.0.0": - version: 5.1.0 - resolution: "graphql-request@npm:5.1.0" - dependencies: - "@graphql-typed-document-node/core": "npm:^3.1.1" - cross-fetch: "npm:^3.1.5" - extract-files: "npm:^9.0.0" - form-data: "npm:^3.0.0" - peerDependencies: - graphql: 14 - 16 - checksum: 8c0/89ca7ca1eaa08b0ed5aa5d86425cda3af2dcc61ea68e1f43ca0ede1aa1eb230d5192c5662760098dc0a7c0ff9b5de51250b38edeb962935f57c96bfb9d72116f - languageName: node - linkType: hard - -"graphql-scalars@npm:1.22.4": - version: 1.22.4 - resolution: "graphql-scalars@npm:1.22.4" - dependencies: - tslib: "npm:^2.5.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: d7df28c7bcd274049ee2b93536036b22bc2591bdb86a627a46d4557161965df96c8da6c4f7dc01684d46580d75c7b2fbba7fc5042b763b5b6cba879dc79e010e - languageName: node - linkType: hard - -"graphql-scalars@npm:1.9.3": - version: 1.9.3 - resolution: "graphql-scalars@npm:1.9.3" - dependencies: - tslib: "npm:~2.2.0" - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/e92b2febf9cfa80e1e39693a0ad4501d35778d62c1d2369c7edbdacc463faaff6f6408175c71b105c23acc01c19645dc6aae2de2b7439475672ca0fc796ee445 - languageName: node - linkType: hard - -"graphql-sse@npm:2.4.0": - version: 2.4.0 - resolution: "graphql-sse@npm:2.4.0" - peerDependencies: - graphql: ">=0.11 <=16" - checksum: 8653b334653fe232a1632f3ec3aa1af1fe77369e43fe9fc4e8a1e113af5ea9db673279df671d74ced49bfcd8f61d24ec824e2381eab0eab85232a3a4b611dd48 - languageName: node - linkType: hard - -"graphql-sse@npm:^2.0.0": - version: 2.2.3 - resolution: "graphql-sse@npm:2.2.3" - peerDependencies: - graphql: ">=0.11 <=16" - checksum: 8c0/57212bbb294f27cddfa46f3127bbb32423539134be00a8e980f81c5ca42146ec32d308575914b435750c7080e1f8a113293b10258c5642679026404f56672a06 - languageName: node - linkType: hard - -"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.12.3, graphql-tag@npm:^2.12.4, graphql-tag@npm:^2.12.6": - version: 2.12.6 - resolution: "graphql-tag@npm:2.12.6" - dependencies: - tslib: "npm:^2.1.0" - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 8c0/7763a72011bda454ed8ff1a0d82325f43ca6478e4ce4ab8b7910c4c651dd00db553132171c04d80af5d5aebf1ef6a8a9fd53ccfa33b90ddc00aa3d4be6114419 - languageName: node - linkType: hard - -"graphql-tag@npm:^2.11.0": - version: 2.12.4 - resolution: "graphql-tag@npm:2.12.4" - dependencies: - tslib: "npm:^2.1.0" - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/9ea24ebc9fc0af7c6d02bd76137bb95eaa4d8ff6f2a949e65abdd229d24ef2b4a10fd352e9676937d5182907de25da3a0a7486ea8ed482cb2dad5e7f91330d3a - languageName: node - linkType: hard - -"graphql-tools@npm:^4.0.8": - version: 4.0.8 - resolution: "graphql-tools@npm:4.0.8" - dependencies: - apollo-link: "npm:^1.2.14" - apollo-utilities: "npm:^1.0.1" - deprecated-decorator: "npm:^0.1.6" - iterall: "npm:^1.1.3" - uuid: "npm:^3.1.0" - peerDependencies: - graphql: ^0.13.0 || ^14.0.0 || ^15.0.0 - checksum: 8c0/b679ffe138b442c5342fb744035ec51bbef64e5a5d54c4cfb3e23da8b2d6ce8ba22d4f065408595cab97018c1ed7950b84a4a5b8b06e5de8f897ea84ce3840b6 - languageName: node - linkType: hard - -"graphql-ws@npm:5.11.3": - version: 5.11.3 - resolution: "graphql-ws@npm:5.11.3" - peerDependencies: - graphql: ">=0.11 <=16" - checksum: 8c0/9cfe899042a2cc09e12a171630d0fe2cdaa4299c601e09327fb67d53eec6fd06137459a498d11f2b3e406d35dc83d39525a653bc7920d708baa2f93b7c9ffae3 - languageName: node - linkType: hard - -"graphql-yoga@npm:4.0.4": - version: 4.0.4 - resolution: "graphql-yoga@npm:4.0.4" - dependencies: - "@envelop/core": "npm:^4.0.0" - "@graphql-tools/executor": "npm:^1.0.0" - "@graphql-tools/schema": "npm:^10.0.0" - "@graphql-tools/utils": "npm:^10.0.0" - "@graphql-yoga/logger": "npm:^1.0.0" - "@graphql-yoga/subscription": "npm:^4.0.0" - "@whatwg-node/fetch": "npm:^0.9.7" - "@whatwg-node/server": "npm:^0.9.1" - dset: "npm:^3.1.1" - lru-cache: "npm:^10.0.0" - tslib: "npm:^2.5.2" - peerDependencies: - graphql: ^15.2.0 || ^16.0.0 - checksum: 8c0/147471c0c2da15567b0f49f6f8e62d92761c4bee6a953152b1ecfa0041a56bd100b3975218680a35cfe30fdbaf0e9d9fbd764f4d63ec4c217afac27ce9c0bf5d - languageName: node - linkType: hard - -"graphql@npm:15.5.0, graphql@npm:^15.4.0": - version: 15.5.0 - resolution: "graphql@npm:15.5.0" - checksum: 8c0/b856750240ae12d852c918dc03699cfab61b5b4d1822ae0e4dfe201673eb0b5d99dbb7ff7c9cf83c43d0a87428555640ec392580364685f544e61192f7ffc274 - languageName: node - linkType: hard - -"graphql@npm:16.8.1, graphql@npm:^16.8.1": - version: 16.8.1 - resolution: "graphql@npm:16.8.1" - checksum: 129c318156b466f440914de80dbf7bc67d17f776f2a088a40cb0da611d19a97c224b1c6d2b13cbcbc6e5776e45ed7468b8432f9c3536724e079b44f1a3d57a8a - languageName: node - linkType: hard - -"graphql@npm:^15.3.0": - version: 15.8.0 - resolution: "graphql@npm:15.8.0" - checksum: 8c0/30cc09b77170a9d1ed68e4c017ec8c5265f69501c96e4f34f8f6613f39a886c96dd9853eac925f212566ed651736334c8fe24ceae6c44e8d7625c95c3009a801 - languageName: node - linkType: hard - -"graphql@npm:^16.0.0": - version: 16.6.0 - resolution: "graphql@npm:16.6.0" - checksum: 8c0/3a2c15ff58b69d017618d2b224fa6f3c4a7937e1f711c3a5e0948db536b4931e6e649560b53de7cc26735e027ceea6e2d0a6bb7c29fc4639b290313e3aa71618 - languageName: node - linkType: hard - -"growly@npm:^1.3.0": - version: 1.3.0 - resolution: "growly@npm:1.3.0" - checksum: 8c0/3043bd5c064e87f89e8c9b66894ed09fd882c7fa645621a543b45b72f040c7241e25061207a858ab191be2fbdac34795ff57c2a40962b154a6b2908a5e509252 - languageName: node - linkType: hard - -"gzip-size@npm:5.1.1, gzip-size@npm:^5.0.0": - version: 5.1.1 - resolution: "gzip-size@npm:5.1.1" - dependencies: - duplexer: "npm:^0.1.1" - pify: "npm:^4.0.1" - checksum: 8c0/1c346d3ab83b85687a9aa644928250b31e0fc42cf16ca152225a09465f7465b220849b3854b39a457681fabb37ab318b2c0f73be8991ecedf2073e082d1f6dd9 - languageName: node - linkType: hard - -"gzip-size@npm:^6.0.0": - version: 6.0.0 - resolution: "gzip-size@npm:6.0.0" - dependencies: - duplexer: "npm:^0.1.2" - checksum: 8c0/4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f - languageName: node - linkType: hard - -"handle-thing@npm:^2.0.0": - version: 2.0.1 - resolution: "handle-thing@npm:2.0.1" - checksum: 8c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 - languageName: node - linkType: hard - -"handlebars@npm:^4.7.7": - version: 4.7.7 - resolution: "handlebars@npm:4.7.7" - dependencies: - minimist: "npm:^1.2.5" - neo-async: "npm:^2.6.0" - source-map: "npm:^0.6.1" - uglify-js: "npm:^3.1.4" - wordwrap: "npm:^1.0.0" - dependenciesMeta: - uglify-js: - optional: true - bin: - handlebars: bin/handlebars - checksum: 8c0/4c0913fc0018a2a2e358ee94e4fe83f071762b8bec51a473d187e6642e94e569843adcf550ffe329554c63ad450c062f3a05447bd2e3fff5ebfe698e214225c6 - languageName: node - linkType: hard - -"has-ansi@npm:^2.0.0": - version: 2.0.0 - resolution: "has-ansi@npm:2.0.0" - dependencies: - ansi-regex: "npm:^2.0.0" - checksum: 8c0/f54e4887b9f8f3c4bfefd649c48825b3c093987c92c27880ee9898539e6f01aed261e82e73153c3f920fde0db5bf6ebd58deb498ed1debabcb4bc40113ccdf05 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 8c0/59dc0ceb28468fcad0d3fd20a5d679dd577bae177f5caaf0b1f742df42a30267271538ab282c1c7dce14fcb9ba53401055363edab51d28fbae85c17b30f98a31 - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 8c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 8c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 8c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 - languageName: node - linkType: hard - -"has-glob@npm:^1.0.0": - version: 1.0.0 - resolution: "has-glob@npm:1.0.0" - dependencies: - is-glob: "npm:^3.0.0" - checksum: 8c0/2546d20b7a667304d8b2e490c2d5a4e20e799a43eb6d97c0d47c0c737bbde082a73731001c791d445b904b3f408d584477df7d2d301183e13c4b3f0a3c81787b - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.1.1" - checksum: 8c0/d4ca882b6960d6257bd28baa3ddfa21f068d260411004a093b30ca357c740e11e985771c85216a6d1eef4161e862657f48c4758ec8ab515223b3895200ad164b - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: 8c0/c8a8fe411f810b23a564bd5546a8f3f0fff6f1b692740eb7a2fdc9df716ef870040806891e2f23ff4653f1083e3895bf12088703dd1a0eac3d9202d3a4768cd0 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "has-symbols@npm:1.0.2" - checksum: 8c0/bfac913244c77e6cb4e3cb6d617a70419f5fa4e1959e828a789b958933ceb997706eafb9615f27089e8fa57449094a3c81695ed3ec0c3b2fa8be8d506640b0f7 - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 8c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 8c0/1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011 - languageName: node - linkType: hard - -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 8c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c - languageName: node - linkType: hard - -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: "npm:^2.0.3" - has-values: "npm:^0.1.4" - isobject: "npm:^2.0.0" - checksum: 8c0/7a7c2e9d07bc9742c81806150adb154d149bc6155267248c459cd1ce2a64b0759980d26213260e4b7599c8a3754551179f155ded88d0533a0d2bc7bc29028432 - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: "npm:^2.0.6" - has-values: "npm:^1.0.0" - isobject: "npm:^3.0.0" - checksum: 8c0/17cdccaf50f8aac80a109dba2e2ee5e800aec9a9d382ef9deab66c56b34269e4c9ac720276d5ffa722764304a1180ae436df077da0dd05548cfae0209708ba4d - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: 8c0/a8f00ad862c20289798c35243d5bd0b0a97dd44b668c2204afe082e0265f2d0bf3b89fc8cc0ef01a52b49f10aa35cf85c336ee3a5f1cac96ed490f5e901cdbf2 - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: "npm:^3.0.0" - kind-of: "npm:^4.0.0" - checksum: 8c0/a6f2a1cc6b2e43eacc68e62e71ad6890def7f4b13d2ef06b4ad3ee156c23e470e6df144b9b467701908e17633411f1075fdff0cab45fb66c5e0584d89b25f35e - languageName: node - linkType: hard - -"has-yarn@npm:^2.1.0": - version: 2.1.0 - resolution: "has-yarn@npm:2.1.0" - checksum: 8c0/b5cab61b4129c2fc0474045b59705371b7f5ddf2aab8ba8725011e52269f017e06f75059a2c8a1d8011e9779c2885ad987263cfc6d1280f611c396b45fd5d74a - languageName: node - linkType: hard - -"has@npm:^1.0.0, has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: "npm:^1.1.1" - checksum: 8c0/e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b - languageName: node - linkType: hard - -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: "npm:^2.0.4" - readable-stream: "npm:^3.6.0" - safe-buffer: "npm:^5.2.0" - checksum: 8c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 - languageName: node - linkType: hard - -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: "npm:^2.0.3" - minimalistic-assert: "npm:^1.0.1" - checksum: 8c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 - languageName: node - linkType: hard - -"hasha@npm:^5.2.0": - version: 5.2.2 - resolution: "hasha@npm:5.2.2" - dependencies: - is-stream: "npm:^2.0.0" - type-fest: "npm:^0.8.0" - checksum: 8c0/9d10d4e665a37beea6e18ba3a0c0399a05b26e505c5ff2fe9115b64fedb3ca95f68c89cf15b08ee4d09fd3064b5e1bfc8e8247353c7aa6b7388471d0f86dca74 - languageName: node - linkType: hard - -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" - dependencies: - function-bind: "npm:^1.1.2" - checksum: 5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc - languageName: node - linkType: hard - -"hast-to-hyperscript@npm:^9.0.0": - version: 9.0.1 - resolution: "hast-to-hyperscript@npm:9.0.1" - dependencies: - "@types/unist": "npm:^2.0.3" - comma-separated-tokens: "npm:^1.0.0" - property-information: "npm:^5.3.0" - space-separated-tokens: "npm:^1.0.0" - style-to-object: "npm:^0.3.0" - unist-util-is: "npm:^4.0.0" - web-namespaces: "npm:^1.0.0" - checksum: 8c0/630f0db8e1c78d8d6e4f8bd19dec4b6ff6c3048ba0b07b8e34bb812dfbbdc96f4c16abca16c3bfc64e7757921f42790a7bd4a693d6ce99375f99dead65a19a12 - languageName: node - linkType: hard - -"hast-util-from-parse5@npm:^6.0.0": - version: 6.0.1 - resolution: "hast-util-from-parse5@npm:6.0.1" - dependencies: - "@types/parse5": "npm:^5.0.0" - hastscript: "npm:^6.0.0" - property-information: "npm:^5.0.0" - vfile: "npm:^4.0.0" - vfile-location: "npm:^3.2.0" - web-namespaces: "npm:^1.0.0" - checksum: 8c0/c5e7ee40347c3850ece717e37c3e277ca233848ebca341f68c2afbefdb912da415a2fd06940edc3ea4882ad520e1cac7bf3fcf66c31ae97e1bcf953fcb6a7db5 - languageName: node - linkType: hard - -"hast-util-parse-selector@npm:^2.0.0": - version: 2.2.5 - resolution: "hast-util-parse-selector@npm:2.2.5" - checksum: 8c0/29b7ee77960ded6a99d30c287d922243071cc07b39f2006f203bd08ee54eb8f66bdaa86ef6527477c766e2382d520b60ee4e4087f189888c35d8bcc020173648 - languageName: node - linkType: hard - -"hast-util-raw@npm:6.0.1": - version: 6.0.1 - resolution: "hast-util-raw@npm:6.0.1" - dependencies: - "@types/hast": "npm:^2.0.0" - hast-util-from-parse5: "npm:^6.0.0" - hast-util-to-parse5: "npm:^6.0.0" - html-void-elements: "npm:^1.0.0" - parse5: "npm:^6.0.0" - unist-util-position: "npm:^3.0.0" - vfile: "npm:^4.0.0" - web-namespaces: "npm:^1.0.0" - xtend: "npm:^4.0.0" - zwitch: "npm:^1.0.0" - checksum: 8c0/0ed0a2731251a4853710eda38e0bb79ee1ad8ccea69b391c16eb20895895818bced1c2c9eaf8853280f0aa6dc71d22b9eb6c9aab770dd1a225bb44d522eef1ef - languageName: node - linkType: hard - -"hast-util-to-parse5@npm:^6.0.0": - version: 6.0.0 - resolution: "hast-util-to-parse5@npm:6.0.0" - dependencies: - hast-to-hyperscript: "npm:^9.0.0" - property-information: "npm:^5.0.0" - web-namespaces: "npm:^1.0.0" - xtend: "npm:^4.0.0" - zwitch: "npm:^1.0.0" - checksum: 8c0/49d6c2389fd3170741cdb0483666bccd7e9e436fe386bcbd3931b019e4c006b5bb48022e07967e1021336e744e901082d6479cfa4bc2082efa3b1e5bdab2a36f - languageName: node - linkType: hard - -"hastscript@npm:^6.0.0": - version: 6.0.0 - resolution: "hastscript@npm:6.0.0" - dependencies: - "@types/hast": "npm:^2.0.0" - comma-separated-tokens: "npm:^1.0.0" - hast-util-parse-selector: "npm:^2.0.0" - property-information: "npm:^5.0.0" - space-separated-tokens: "npm:^1.0.0" - checksum: 8c0/f76d9cf373cb075c8523c8ad52709f09f7e02b7c9d3152b8d35c65c265b9f1878bed6023f215a7d16523921036d40a7da292cb6f4399af9b5eccac2a5a5eb330 - languageName: node - linkType: hard - -"he@npm:1.2.0, he@npm:^1.2.0": - version: 1.2.0 - resolution: "he@npm:1.2.0" - bin: - he: bin/he - checksum: 8c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 - languageName: node - linkType: hard - -"header-case@npm:^2.0.4": - version: 2.0.4 - resolution: "header-case@npm:2.0.4" - dependencies: - capital-case: "npm:^1.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb - languageName: node - linkType: hard - -"headers-polyfill@npm:3.2.5": - version: 3.2.5 - resolution: "headers-polyfill@npm:3.2.5" - checksum: 10202f4ebfaecd6aa31305f29664f876ac01d9174a3fb8fcc5a0df3eaf9c1767fb0d6cf6f961484f2bfd2101b6768090976f146bd88aeedd07af4e741cb2dcb7 - languageName: node - linkType: hard - -"headers-utils@npm:^3.0.2": - version: 3.0.2 - resolution: "headers-utils@npm:3.0.2" - checksum: 8c0/25020779f9ca05bdfa2b8157b3052aa4373ed8f15992c013232de56dc179ffd1c56bdfa851d185bdf708f254fee255b34054fddba8bbfe14544aec975318cdd9 - languageName: node - linkType: hard - -"hex-color-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "hex-color-regex@npm:1.1.0" - checksum: 8c0/43f0b8bbeb3906b6b2ddfb5ce6cbc28fb4f1e7b5129d0485e006ea20f92dc65f97b3b12591dd6a993de2ca10cb64a16a6a380a37481fc09432e7be0037be8f9c - languageName: node - linkType: hard - -"hey-listen@npm:^1.0.8": - version: 1.0.8 - resolution: "hey-listen@npm:1.0.8" - checksum: 38db3028b4756f3d536c0f6a92da53bad577ab649b06dddfd0a4d953f9a46bbc6a7f693c8c5b466a538d6d23dbc469260c848427f0de14198a2bbecbac37b39e - languageName: node - linkType: hard - -"highlight.js@npm:^10.1.1, highlight.js@npm:~10.7.0": - version: 10.7.2 - resolution: "highlight.js@npm:10.7.2" - checksum: 8c0/fdfba171d0858f1e5f051e7858a39ac94a27cef8132898727c301668e432401c0a684aa4ed069309d4738e8e21125e470ddddc55e677f102537dc8031b734c77 - languageName: node - linkType: hard - -"history@npm:5.0.0": - version: 5.0.0 - resolution: "history@npm:5.0.0" - dependencies: - "@babel/runtime": "npm:^7.7.6" - checksum: 8c0/6e1a0880c1d67a9040117e5b426e71bc35642488485354d378cb635f194c2177979558b6fb537972840c6993d92c1ae971ab6c33bf77be1b1f135349ea65cde0 - languageName: node - linkType: hard - -"history@npm:^5.2.0": - version: 5.2.0 - resolution: "history@npm:5.2.0" - dependencies: - "@babel/runtime": "npm:^7.7.6" - checksum: 8c0/45d5e1650e2161f0cf4ead3a1d6361e3973a035f44ace8a3b75ff9fe295039b45407af4e397ecfa2f49eb51ae1f051a3800ccf8c2455881ccf91727b846d07c2 - languageName: node - linkType: hard - -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: "npm:^1.0.3" - minimalistic-assert: "npm:^1.0.0" - minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 8c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d - languageName: node - linkType: hard - -"hoist-non-react-statics@npm:^3.0.0, hoist-non-react-statics@npm:^3.3.0, hoist-non-react-statics@npm:^3.3.2": - version: 3.3.2 - resolution: "hoist-non-react-statics@npm:3.3.2" - dependencies: - react-is: "npm:^16.7.0" - checksum: 8c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 - languageName: node - linkType: hard - -"homedir-polyfill@npm:^1.0.1": - version: 1.0.3 - resolution: "homedir-polyfill@npm:1.0.3" - dependencies: - parse-passwd: "npm:^1.0.0" - checksum: 8c0/3c099844f94b8b438f124bd5698bdcfef32b2d455115fb8050d7148e7f7b95fc89ba9922586c491f0e1cdebf437b1053c84ecddb8d596e109e9ac69c5b4a9e27 - languageName: node - linkType: hard - -"hoopy@npm:^0.1.4": - version: 0.1.4 - resolution: "hoopy@npm:0.1.4" - checksum: 8c0/4ef749e1a13d46cae52014b9de452635637086c333fc67245369a1262dee806386354a4ed845d507e59e5a0d3aef55246c0ec66f5bf2908d40eb77e7dff2a254 - languageName: node - linkType: hard - -"hosted-git-info@npm:^2.1.4": - version: 2.8.9 - resolution: "hosted-git-info@npm:2.8.9" - checksum: 8c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 - languageName: node - linkType: hard - -"hpack.js@npm:^2.1.6": - version: 2.1.6 - resolution: "hpack.js@npm:2.1.6" - dependencies: - inherits: "npm:^2.0.1" - obuf: "npm:^1.0.0" - readable-stream: "npm:^2.0.1" - wbuf: "npm:^1.1.0" - checksum: 8c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 - languageName: node - linkType: hard - -"hsl-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "hsl-regex@npm:1.0.0" - checksum: 8c0/ddc29f4943c4a1768e611fadaebf6913d039640267f1fad2ac06f4dbdbe5cbe535d77dd19804898834671dd82751a4401c1b4d2ecade25d158ea23665d263e84 - languageName: node - linkType: hard - -"hsla-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "hsla-regex@npm:1.0.0" - checksum: 8c0/307874844a055af7a8f225e3908e1f7a2d96aa28e86abcb7ce1837cd86acf32d1f3c71ae105416d4c8623c8f9220b1bc799598851b0826274faa047710985f76 - languageName: node - linkType: hard - -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" - dependencies: - whatwg-encoding: "npm:^1.0.5" - checksum: 8c0/6dc3aa2d35a8f0c8c7906ffb665dd24a88f7004f913fafdd3541d24a4da6182ab30c4a0a81387649a1234ecb90182c4136220ed12ae3dc1a57ed68e533dea416 - languageName: node - linkType: hard - -"html-encoding-sniffer@npm:^3.0.0": - version: 3.0.0 - resolution: "html-encoding-sniffer@npm:3.0.0" - dependencies: - whatwg-encoding: "npm:^2.0.0" - checksum: 8c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 - languageName: node - linkType: hard - -"html-entities@npm:^1.2.1, html-entities@npm:^1.3.1": - version: 1.4.0 - resolution: "html-entities@npm:1.4.0" - checksum: 8c0/eb2de616fb5948e681157805687672ea90e67c8a4f21a3215888ab422a984cab61fec96860708dca3bde0ae52577515683c8e28157ac8637220bb6a57a031b85 - languageName: node - linkType: hard - -"html-entities@npm:^2.1.0": - version: 2.3.2 - resolution: "html-entities@npm:2.3.2" - checksum: 8c0/69b50d032435e02765175d40ac3d94ceeb19b3ee32b869f79804f24f8efadf7928a1c3c4eddb85273809f95f7cffa416d05ca43e88d219575e8c5f6dd75bfc8d - languageName: node - linkType: hard - -"html-entities@npm:^2.3.2": - version: 2.3.3 - resolution: "html-entities@npm:2.3.3" - checksum: 8c0/a76cbdbb276d9499dc7ef800d23f3964254e659f04db51c8d1ff6abfe21992c69b7217ecfd6e3c16ff0aa027ba4261d77f0dba71f55639c16a325bbdf69c535d - languageName: node - linkType: hard - -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: 8c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 - languageName: node - linkType: hard - -"html-minifier-terser@npm:^5.0.1": - version: 5.1.1 - resolution: "html-minifier-terser@npm:5.1.1" - dependencies: - camel-case: "npm:^4.1.1" - clean-css: "npm:^4.2.3" - commander: "npm:^4.1.1" - he: "npm:^1.2.0" - param-case: "npm:^3.0.3" - relateurl: "npm:^0.2.7" - terser: "npm:^4.6.3" - bin: - html-minifier-terser: cli.js - checksum: 8c0/b38e678aa8065358c31ab58ada6efa1563e6e8d74c198ed1a1240b9d4ffcec077e2c5ce42b87f4fdefd7dd9041f82beb5cbd804c4f4179afc6f0f6e89b63f5f6 - languageName: node - linkType: hard - -"html-minifier-terser@npm:^6.0.2": - version: 6.1.0 - resolution: "html-minifier-terser@npm:6.1.0" - dependencies: - camel-case: "npm:^4.1.2" - clean-css: "npm:^5.2.2" - commander: "npm:^8.3.0" - he: "npm:^1.2.0" - param-case: "npm:^3.0.4" - relateurl: "npm:^0.2.7" - terser: "npm:^5.10.0" - bin: - html-minifier-terser: cli.js - checksum: 8c0/1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a - languageName: node - linkType: hard - -"html-to-text@npm:9.0.5": - version: 9.0.5 - resolution: "html-to-text@npm:9.0.5" - dependencies: - "@selderee/plugin-htmlparser2": "npm:^0.11.0" - deepmerge: "npm:^4.3.1" - dom-serializer: "npm:^2.0.0" - htmlparser2: "npm:^8.0.2" - selderee: "npm:^0.11.0" - checksum: 5d2c77b798cf88a81b1da2fc1ea1a3b3e2ff49fe5a3d812392f802fff18ec315cf0969bd7846ef2eb7df8c37f463bc63e8cbdcf84e42696c6f3e15dfa61cdf4f - languageName: node - linkType: hard - -"html-void-elements@npm:^1.0.0": - version: 1.0.5 - resolution: "html-void-elements@npm:1.0.5" - checksum: 8c0/97b6c108d7d6b31a45deddf95a65eb074bd0f358b55a61f3a031e055812eec368076ca23f0181674c5212166168988f35312756a3b376490e31e73d9a51f5549 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:5.5.4": - version: 5.5.4 - resolution: "html-webpack-plugin@npm:5.5.4" - dependencies: - "@types/html-minifier-terser": "npm:^6.0.0" - html-minifier-terser: "npm:^6.0.2" - lodash: "npm:^4.17.21" - pretty-error: "npm:^4.0.0" - tapable: "npm:^2.0.0" - peerDependencies: - webpack: ^5.20.0 - checksum: fd7b9882a7b44b78711d3489fd571308372a915924c2e619ad8a08d9100a17ae8899a3d3bb1934c326d45bf942330a693206088ba80f292dd6574d9e33c67a43 - languageName: node - linkType: hard - -"html-webpack-plugin@npm:^4.0.0, html-webpack-plugin@npm:^4.0.2": - version: 4.5.2 - resolution: "html-webpack-plugin@npm:4.5.2" - dependencies: - "@types/html-minifier-terser": "npm:^5.0.0" - "@types/tapable": "npm:^1.0.5" - "@types/webpack": "npm:^4.41.8" - html-minifier-terser: "npm:^5.0.1" - loader-utils: "npm:^1.2.3" - lodash: "npm:^4.17.20" - pretty-error: "npm:^2.1.1" - tapable: "npm:^1.1.3" - util.promisify: "npm:1.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/405f01eb8d5554bd0330c462003e215a793518809e29df0121d20ba2a9717078df33089fda0464c62453ce3af12b6a1fee51dd24761a56f610f509e1e5d503e9 - languageName: node - linkType: hard - -"htmlparser2@npm:^3.10.1": - version: 3.10.1 - resolution: "htmlparser2@npm:3.10.1" - dependencies: - domelementtype: "npm:^1.3.1" - domhandler: "npm:^2.3.0" - domutils: "npm:^1.5.1" - entities: "npm:^1.1.1" - inherits: "npm:^2.0.1" - readable-stream: "npm:^3.1.1" - checksum: 8c0/b1424536ff062088501efa06a2afd478545d3134a5ad2e28bbe02dc2d092784982286b90f1c87fa3d86692958dbfb8936352dfd71d1cb2ff7cb61208c00fcdb1 - languageName: node - linkType: hard - -"htmlparser2@npm:^6.1.0": - version: 6.1.0 - resolution: "htmlparser2@npm:6.1.0" - dependencies: - domelementtype: "npm:^2.0.1" - domhandler: "npm:^4.0.0" - domutils: "npm:^2.5.2" - entities: "npm:^2.0.0" - checksum: 8c0/3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 - languageName: node - linkType: hard - -"htmlparser2@npm:^8.0.1": - version: 8.0.1 - resolution: "htmlparser2@npm:8.0.1" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.2" - domutils: "npm:^3.0.1" - entities: "npm:^4.3.0" - checksum: 8c0/33942dc6d882f37132fe8e39d5fd860d5abcf52ca769b3742c1b35caae1225db9cfa4486f27ed983db5b6d478944008a515e6ee3a09cfe8fa84af412960e4ca1 - languageName: node - linkType: hard - -"htmlparser2@npm:^8.0.2": - version: 8.0.2 - resolution: "htmlparser2@npm:8.0.2" - dependencies: - domelementtype: "npm:^2.3.0" - domhandler: "npm:^5.0.3" - domutils: "npm:^3.0.1" - entities: "npm:^4.4.0" - checksum: 609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 - languageName: node - linkType: hard - -"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 8c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc - languageName: node - linkType: hard - -"http-deceiver@npm:^1.2.7": - version: 1.2.7 - resolution: "http-deceiver@npm:1.2.7" - checksum: 8c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 - languageName: node - linkType: hard - -"http-errors@npm:1.7.2": - version: 1.7.2 - resolution: "http-errors@npm:1.7.2" - dependencies: - depd: "npm:~1.1.2" - inherits: "npm:2.0.3" - setprototypeof: "npm:1.1.1" - statuses: "npm:>= 1.5.0 < 2" - toidentifier: "npm:1.0.0" - checksum: 8c0/49d3b2d52ee4bb24110fb4cff13a52e960501f63803d99bf50b6f93825335eab85bfd4809a90b5a5432ed13efe06c3979553a7a967cd196db1b0e23056068365 - languageName: node - linkType: hard - -"http-errors@npm:1.8.1": - version: 1.8.1 - resolution: "http-errors@npm:1.8.1" - dependencies: - depd: "npm:~1.1.2" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:>= 1.5.0 < 2" - toidentifier: "npm:1.0.1" - checksum: 8c0/f01aeecd76260a6fe7f08e192fcbe9b2f39ed20fc717b852669a69930167053b01790998275c6297d44f435cf0e30edd50c05223d1bec9bc484e6cf35b2d6f43 - languageName: node - linkType: hard - -"http-errors@npm:2.0.0": - version: 2.0.0 - resolution: "http-errors@npm:2.0.0" - dependencies: - depd: "npm:2.0.0" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:2.0.1" - toidentifier: "npm:1.0.1" - checksum: 8c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 - languageName: node - linkType: hard - -"http-errors@npm:^1.7.3": - version: 1.8.0 - resolution: "http-errors@npm:1.8.0" - dependencies: - depd: "npm:~1.1.2" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.2.0" - statuses: "npm:>= 1.5.0 < 2" - toidentifier: "npm:1.0.0" - checksum: 8c0/2deb37be07a858370a5c9f150de0e8a14e10410a46aeed2614e9e96ecc5f88e6d79b2b278b6a968635ff0d01142e84131db2afb07504adb73a3e9340acdbd70c - languageName: node - linkType: hard - -"http-errors@npm:~1.6.2": - version: 1.6.3 - resolution: "http-errors@npm:1.6.3" - dependencies: - depd: "npm:~1.1.2" - inherits: "npm:2.0.3" - setprototypeof: "npm:1.1.0" - statuses: "npm:>= 1.4.0 < 2" - checksum: 8c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 - languageName: node - linkType: hard - -"http-errors@npm:~1.7.2": - version: 1.7.3 - resolution: "http-errors@npm:1.7.3" - dependencies: - depd: "npm:~1.1.2" - inherits: "npm:2.0.4" - setprototypeof: "npm:1.1.1" - statuses: "npm:>= 1.5.0 < 2" - toidentifier: "npm:1.0.0" - checksum: 8c0/5c3443c340d35b2f18ce908266c4ae93305b7d900bef765ac8dc56fa90125b9fe18a1ed9ebf6af23dc3ba7763731921a2682bf968e199eccf383eb8f508be6c2 - languageName: node - linkType: hard - -"http-parser-js@npm:>=0.5.1": - version: 0.5.3 - resolution: "http-parser-js@npm:0.5.3" - checksum: 8c0/3a591d68384712b4717ab08b74600cd900913cd1807ec4b99e9bfd2ca48ad2a5b294db6063c12fb9baeb1397fae2fd6041b24bc9e3bd54772154f451cf711081 - languageName: node - linkType: hard - -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": "npm:1" - agent-base: "npm:6" - debug: "npm:4" - checksum: 8c0/4fa4774d65b5331814b74ac05cefea56854fc0d5989c80b13432c1b0d42a14c9f4342ca3ad9f0359a52e78da12b1744c9f8a28e50042136ea9171675d972a5fd - languageName: node - linkType: hard - -"http-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "http-proxy-agent@npm:5.0.0" - dependencies: - "@tootallnate/once": "npm:2" - agent-base: "npm:6" - debug: "npm:4" - checksum: 8c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 - languageName: node - linkType: hard - -"http-proxy-middleware@npm:0.19.1": - version: 0.19.1 - resolution: "http-proxy-middleware@npm:0.19.1" - dependencies: - http-proxy: "npm:^1.17.0" - is-glob: "npm:^4.0.0" - lodash: "npm:^4.17.11" - micromatch: "npm:^3.1.10" - checksum: 8c0/b0c466dd54fac365e93f43138cba256063040557ae24fc92944b06fac35e879b882085e36fe276e48f5a27848b1600cd3ae59a845cb18714f5c0f205523783b1 - languageName: node - linkType: hard - -"http-proxy-middleware@npm:2.0.6, http-proxy-middleware@npm:^2.0.3": - version: 2.0.6 - resolution: "http-proxy-middleware@npm:2.0.6" - dependencies: - "@types/http-proxy": "npm:^1.17.8" - http-proxy: "npm:^1.18.1" - is-glob: "npm:^4.0.1" - is-plain-obj: "npm:^3.0.0" - micromatch: "npm:^4.0.2" - peerDependencies: - "@types/express": ^4.17.13 - peerDependenciesMeta: - "@types/express": - optional: true - checksum: 8c0/25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 - languageName: node - linkType: hard - -"http-proxy-middleware@npm:^1.1.0": - version: 1.3.1 - resolution: "http-proxy-middleware@npm:1.3.1" - dependencies: - "@types/http-proxy": "npm:^1.17.5" - http-proxy: "npm:^1.18.1" - is-glob: "npm:^4.0.1" - is-plain-obj: "npm:^3.0.0" - micromatch: "npm:^4.0.2" - checksum: 8c0/34e6e211f04672a625dbbb2f63e834951eaedda72a28b7a559a0ce9c40dcd857dba312e482144cdc5255cd7fe63debbe4bbfc6c2f936fb31ccc3ceb814ad30da - languageName: node - linkType: hard - -"http-proxy@npm:^1.17.0, http-proxy@npm:^1.18.1": - version: 1.18.1 - resolution: "http-proxy@npm:1.18.1" - dependencies: - eventemitter3: "npm:^4.0.0" - follow-redirects: "npm:^1.0.0" - requires-port: "npm:^1.0.0" - checksum: 8c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 - languageName: node - linkType: hard - -"http2-wrapper@npm:^1.0.0-beta.5.2": - version: 1.0.3 - resolution: "http2-wrapper@npm:1.0.3" - dependencies: - quick-lru: "npm:^5.1.1" - resolve-alpn: "npm:^1.0.0" - checksum: 6a9b72a033e9812e1476b9d776ce2f387bc94bc46c88aea0d5dab6bd47d0a539b8178830e77054dd26d1142c866d515a28a4dc7c3ff4232c88ff2ebe4f5d12d1 - languageName: node - linkType: hard - -"https-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "https-browserify@npm:1.0.0" - checksum: 8c0/e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 8c0/670c04f7f0effb5a449c094ea037cbcfb28a5ab93ed22e8c343095202cc7288027869a5a21caf4ee3b8ea06f9624ef1e1fc9044669c0fd92617654ff39f30806 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^5.0.1": - version: 5.0.1 - resolution: "https-proxy-agent@npm:5.0.1" - dependencies: - agent-base: "npm:6" - debug: "npm:4" - checksum: 8c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 - languageName: node - linkType: hard - -"https-proxy-agent@npm:^7.0.2": - version: 7.0.2 - resolution: "https-proxy-agent@npm:7.0.2" - dependencies: - agent-base: "npm:^7.0.2" - debug: "npm:4" - checksum: 7735eb90073db087e7e79312e3d97c8c04baf7ea7ca7b013382b6a45abbaa61b281041a98f4e13c8c80d88f843785bcc84ba189165b4b4087b1e3496ba656d77 - languageName: node - linkType: hard - -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: 8c0/18810ed239a7a5e23fb6c32d0fd4be75d7cd337a07ad59b8dbf0794cb0761e6e628349ee04c409e605fe55344716eab5d0a47a62ba2a2d0d367c89a2b4247b1e - languageName: node - linkType: hard - -"human-signals@npm:^2.1.0": - version: 2.1.0 - resolution: "human-signals@npm:2.1.0" - checksum: 8c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a - languageName: node - linkType: hard - -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: "npm:^2.0.0" - checksum: 8c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a - languageName: node - linkType: hard - -"humanize-string@npm:2.1.0, humanize-string@npm:^2.1.0": - version: 2.1.0 - resolution: "humanize-string@npm:2.1.0" - dependencies: - decamelize: "npm:^2.0.0" - checksum: 8c0/a0ed69264b5069137afb369b46e18e8dbeb67edc7fb2ad1de18554108943e2fc59155f898013fb7a2f03522879adad7c9a93f1c88428844bcbee006c98db8f0a - languageName: node - linkType: hard - -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3" - checksum: 8c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 - languageName: node - linkType: hard - -"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2, iconv-lite@npm:^0.6.3": - version: 0.6.3 - resolution: "iconv-lite@npm:0.6.3" - dependencies: - safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 8c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 - languageName: node - linkType: hard - -"icss-utils@npm:^4.0.0, icss-utils@npm:^4.1.1": - version: 4.1.1 - resolution: "icss-utils@npm:4.1.1" - dependencies: - postcss: "npm:^7.0.14" - checksum: 8c0/22803c243bb097c2290b4e7c20ed14746f3e00e04856f953b751c7e6bb8c81620764bcf98d200a92d167af0884d19143c089d02e2bc609abcdeb86f465328797 - languageName: node - linkType: hard - -"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": - version: 5.1.0 - resolution: "icss-utils@npm:5.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 8c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d - languageName: node - linkType: hard - -"ieee754@npm:1.1.13": - version: 1.1.13 - resolution: "ieee754@npm:1.1.13" - checksum: 8c0/eaf8c87e014282bfb5b13670991a2ed086eaef35ccc3fb713833863f2e7213041b2c29246adbc5f6561d51d53861c3b11f3b82b28fc6fa1352edeff381f056e5 - languageName: node - linkType: hard - -"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 8c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb - languageName: node - linkType: hard - -"iferr@npm:^0.1.5": - version: 0.1.5 - resolution: "iferr@npm:0.1.5" - checksum: 8c0/e0669b1757d0501b43a158321945d1cc1fe56f28a972df2f88a5818f05c8853c7669ba5d6cfbbf9a1a312850699de6e528626df108d559005df7e15d16ee334c - languageName: node - linkType: hard - -"ignore-by-default@npm:^1.0.1": - version: 1.0.1 - resolution: "ignore-by-default@npm:1.0.1" - checksum: 8c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 - languageName: node - linkType: hard - -"ignore@npm:^4.0.3, ignore@npm:^4.0.6": - version: 4.0.6 - resolution: "ignore@npm:4.0.6" - checksum: 8c0/836ee7dc7fd9436096e2dba429359dbb9fa0e33d309e2b2d81692f375f6ca82024fc00567f798613d50c6b989e9cd2ad2b065acf116325cde177f02c86b7d4e0 - languageName: node - linkType: hard - -"ignore@npm:^5.1.4": - version: 5.1.8 - resolution: "ignore@npm:5.1.8" - checksum: 8c0/3d09e733049c7bad1c0982be8fe3e767bd7b756dd0bfeceff11acda0b7b57634b5516acc3554d2d536e64b2701b3d08d0e5fa4dbf46389847dd3f8fa49d437bb - languageName: node - linkType: hard - -"ignore@npm:^5.1.8, ignore@npm:^5.2.0": - version: 5.2.0 - resolution: "ignore@npm:5.2.0" - checksum: 8c0/7fb7b4c4c52c2555113ff968f8a83b8ac21b076282bfcb3f468c3fb429be69bd56222306c31de95dd452c647fc6ae24339b8047ebe3ef34c02591abfec58da01 - languageName: node - linkType: hard - -"immer@npm:8.0.1": - version: 8.0.1 - resolution: "immer@npm:8.0.1" - checksum: 8c0/5bda1b1e382b08e5c88bf84b710050d20b87455cc52b90b00ae2208932132bea6d780e05ea1cf73757214b7916a3b1f8ce21702e7ef40d90d187c896bcadb43e - languageName: node - linkType: hard - -"immutable@npm:~3.7.6": - version: 3.7.6 - resolution: "immutable@npm:3.7.6" - checksum: 8c0/efe2bbb2620aa897afbb79545b9eda4dd3dc072e05ae7004895a7efb43187e4265612a88f8723f391eb1c87c46c52fd11e2d1968e42404450c63e49558d7ca4e - languageName: node - linkType: hard - -"import-fresh@npm:^2.0.0": - version: 2.0.0 - resolution: "import-fresh@npm:2.0.0" - dependencies: - caller-path: "npm:^2.0.0" - resolve-from: "npm:^3.0.0" - checksum: 8c0/116c55ee5215a7839062285b60df85dbedde084c02111dc58c1b9d03ff7876627059f4beb16cdc090a3db21fea9022003402aa782139dc8d6302589038030504 - languageName: node - linkType: hard - -"import-fresh@npm:^3.0.0, import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" - dependencies: - parent-module: "npm:^1.0.0" - resolve-from: "npm:^4.0.0" - checksum: 8c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 - languageName: node - linkType: hard - -"import-from@npm:4.0.0": - version: 4.0.0 - resolution: "import-from@npm:4.0.0" - checksum: 8c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 - languageName: node - linkType: hard - -"import-local@npm:^2.0.0": - version: 2.0.0 - resolution: "import-local@npm:2.0.0" - dependencies: - pkg-dir: "npm:^3.0.0" - resolve-cwd: "npm:^2.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 8c0/68f2d9203d3760a836db97e917ea1793e865e0c5dd3749380ccaf52be907553febb0828f14c3169e66ba1a458d931b3cc5597cc9b623c7f79b395b0c3892601e - languageName: node - linkType: hard - -"import-local@npm:^3.0.2": - version: 3.0.2 - resolution: "import-local@npm:3.0.2" - dependencies: - pkg-dir: "npm:^4.2.0" - resolve-cwd: "npm:^3.0.0" - bin: - import-local-fixture: fixtures/cli.js - checksum: 8c0/593ec592c5c2c0849f94b81198077b53e342f02bd7a7cc3f8a3dd5b52f40a37003b3b2922a80b4e7b565c0f7c951a41849a03852c4e68144fff84bf892d129cb - languageName: node - linkType: hard - -"imurmurhash@npm:^0.1.4": - version: 0.1.4 - resolution: "imurmurhash@npm:0.1.4" - checksum: 8c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 - languageName: node - linkType: hard - -"indent-string@npm:^3.0.0": - version: 3.2.0 - resolution: "indent-string@npm:3.2.0" - checksum: 8c0/91b6d61621d24944c5c4d365d6f1ff4a490264ccaf1162a602faa0d323e69231db2180ad4ccc092c2f49cf8888cdb3da7b73e904cc0fdeec40d0bfb41ceb9478 - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 8c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f - languageName: node - linkType: hard - -"indexes-of@npm:^1.0.1": - version: 1.0.1 - resolution: "indexes-of@npm:1.0.1" - checksum: 8c0/1ea1d2d00173fa38f728acfa00303657e1115361481e52f6cbae47c5d603219006c9357abf6bc323f1fb0fbe937e363bbb19e5c66c12578eea6ec6b7e892bdba - languageName: node - linkType: hard - -"infer-owner@npm:^1.0.3, infer-owner@npm:^1.0.4": - version: 1.0.4 - resolution: "infer-owner@npm:1.0.4" - checksum: 8c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: "npm:^1.3.0" - wrappy: "npm:1" - checksum: 8c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.0, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 8c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 - languageName: node - linkType: hard - -"inherits@npm:2.0.1": - version: 2.0.1 - resolution: "inherits@npm:2.0.1" - checksum: 8c0/bfc7b37c21a2cddb272adc65b053b1716612d408bb2c9a4e5c32679dc2b08032aadd67880c405be3dff060a62e45b353fc3d9fa79a3067ad7a3deb6a283cc5c6 - languageName: node - linkType: hard - -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 8c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: 8c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 - languageName: node - linkType: hard - -"ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": - version: 1.3.8 - resolution: "ini@npm:1.3.8" - checksum: 8c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a - languageName: node - linkType: hard - -"inline-style-parser@npm:0.1.1": - version: 0.1.1 - resolution: "inline-style-parser@npm:0.1.1" - checksum: 8c0/08832a533f51a1e17619f2eabf2f5ec5e956d6dcba1896351285c65df022c9420de61d73256e1dca8015a52abf96cc84ddc3b73b898b22de6589d3962b5e501b - languageName: node - linkType: hard - -"inquirer@npm:^7.3.3": - version: 7.3.3 - resolution: "inquirer@npm:7.3.3" - dependencies: - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.1.0" - cli-cursor: "npm:^3.1.0" - cli-width: "npm:^3.0.0" - external-editor: "npm:^3.0.3" - figures: "npm:^3.0.0" - lodash: "npm:^4.17.19" - mute-stream: "npm:0.0.8" - run-async: "npm:^2.4.0" - rxjs: "npm:^6.6.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - through: "npm:^2.3.6" - checksum: 8c0/96e75974cfd863fe6653c075e41fa5f1a290896df141189816db945debabcd92d3277145f11aef8d2cfca5409ab003ccdd18a099744814057b52a2f27aeb8c94 - languageName: node - linkType: hard - -"inquirer@npm:^8.0.0, inquirer@npm:^8.2.0": - version: 8.2.5 - resolution: "inquirer@npm:8.2.5" - dependencies: - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.1.1" - cli-cursor: "npm:^3.1.0" - cli-width: "npm:^3.0.0" - external-editor: "npm:^3.0.3" - figures: "npm:^3.0.0" - lodash: "npm:^4.17.21" - mute-stream: "npm:0.0.8" - ora: "npm:^5.4.1" - run-async: "npm:^2.4.0" - rxjs: "npm:^7.5.5" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - through: "npm:^2.3.6" - wrap-ansi: "npm:^7.0.0" - checksum: 8c0/e3e64e10f5daeeb8f770f1310acceb4aab593c10d693e7676ecd4a5b023d5b865b484fec7ead516e5e394db70eff687ef85459f75890f11a99ceadc0f4adce18 - languageName: node - linkType: hard - -"internal-ip@npm:^4.3.0": - version: 4.3.0 - resolution: "internal-ip@npm:4.3.0" - dependencies: - default-gateway: "npm:^4.2.0" - ipaddr.js: "npm:^1.9.0" - checksum: 8c0/c0ad0b95981c8f21a2d4f115212af38c894a6a6d0a2a3cac4d73d1b5beb214fdfce7b5e66f087e8d575977d4df630886914412d1bc9c2678e5870210154ad65b - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" - dependencies: - get-intrinsic: "npm:^1.1.0" - has: "npm:^1.0.3" - side-channel: "npm:^1.0.4" - checksum: 8c0/bb41342a474c1b607458b0c716c742d779a6ed9dfaf7986e5d20d1e7f55b7f3676e4d9f416bc253af4fd78d367e1f83e586f74840302bcf2e60c424f9284dde5 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.4": - version: 1.0.4 - resolution: "internal-slot@npm:1.0.4" - dependencies: - get-intrinsic: "npm:^1.1.3" - has: "npm:^1.0.3" - side-channel: "npm:^1.0.4" - checksum: 8c0/37e320dcb66c764d77d84ce2589ce4891ed97461f4cb0c0e0b71e191e00de5a87c7528a9fec2942e1eda5b891b364895cd423a233c58b5197a00e23a70b71924 - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.5": - version: 1.0.6 - resolution: "internal-slot@npm:1.0.6" - dependencies: - get-intrinsic: "npm:^1.2.2" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: aa37cafc8ffbf513a340de58f40d5017b4949d99722d7e4f0e24b182455bdd258000d4bb1d7b4adcf9f8979b97049b99fe9defa9db8e18a78071d2637ac143fb - languageName: node - linkType: hard - -"internmap@npm:1 - 2": - version: 2.0.3 - resolution: "internmap@npm:2.0.3" - checksum: 8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed - languageName: node - linkType: hard - -"internmap@npm:^1.0.0": - version: 1.0.1 - resolution: "internmap@npm:1.0.1" - checksum: 60942be815ca19da643b6d4f23bd0bf4e8c97abbd080fb963fe67583b60bdfb3530448ad4486bae40810e92317bded9995cc31411218acc750d72cd4e8646eee - languageName: node - linkType: hard - -"interpret@npm:^1.4.0": - version: 1.4.0 - resolution: "interpret@npm:1.4.0" - checksum: 8c0/08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 - languageName: node - linkType: hard - -"interpret@npm:^2.2.0": - version: 2.2.0 - resolution: "interpret@npm:2.2.0" - checksum: 8c0/c0ef90daec6c4120bb7a226fa09a9511f6b5618aa9c94cf4641472f486948e643bb3b36efbd0136bbffdee876435af9fdf7bbb4622f5a16778eed5397f8a1946 - languageName: node - linkType: hard - -"interpret@npm:^3.1.1": - version: 3.1.1 - resolution: "interpret@npm:3.1.1" - checksum: 8c0/6f3c4d0aa6ec1b43a8862375588a249e3c917739895cbe67fe12f0a76260ea632af51e8e2431b50fbcd0145356dc28ca147be08dbe6a523739fd55c0f91dc2a5 - languageName: node - linkType: hard - -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 8c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc - languageName: node - linkType: hard - -"ioredis@npm:^5.3.2": - version: 5.3.2 - resolution: "ioredis@npm:5.3.2" - dependencies: - "@ioredis/commands": "npm:^1.1.1" - cluster-key-slot: "npm:^1.1.0" - debug: "npm:^4.3.4" - denque: "npm:^2.1.0" - lodash.defaults: "npm:^4.2.0" - lodash.isarguments: "npm:^3.1.0" - redis-errors: "npm:^1.2.0" - redis-parser: "npm:^3.0.0" - standard-as-callback: "npm:^2.1.0" - checksum: 8c0/0dd2b5b8004e891f5b62edf18ac223194f1f5204698ec827c903e789ea05b0b36f73395491749ec63c66470485bdfb228ccdf1714fbf631a0f78f33211f2c883 - languageName: node - linkType: hard - -"ip-regex@npm:^2.1.0": - version: 2.1.0 - resolution: "ip-regex@npm:2.1.0" - checksum: 8c0/3ce2d8307fa0373ca357eba7504e66e73b8121805fd9eba6a343aeb077c64c30659fa876b11ac7a75635b7529d2ce87723f208a5b9d51571513b5c68c0cc1541 - languageName: node - linkType: hard - -"ip@npm:^1.1.0, ip@npm:^1.1.5": - version: 1.1.5 - resolution: "ip@npm:1.1.5" - checksum: 8c0/877e98d676cd8d0ca01fee8282d11b91fb97be7dd9d0b2d6d98e161db2d4277954f5b55db7cfc8556fe6841cb100d13526a74f50ab0d83d6b130fe8445040175 - languageName: node - linkType: hard - -"ip@npm:^2.0.0": - version: 2.0.0 - resolution: "ip@npm:2.0.0" - checksum: 8c0/8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958 - languageName: node - linkType: hard - -"ipaddr.js@npm:1.9.1, ipaddr.js@npm:^1.9.0": - version: 1.9.1 - resolution: "ipaddr.js@npm:1.9.1" - checksum: 8c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a - languageName: node - linkType: hard - -"ipaddr.js@npm:^2.0.1": - version: 2.0.1 - resolution: "ipaddr.js@npm:2.0.1" - checksum: 8c0/0034dfd7a83e82bec6a569549f42c56eb47d051842e10ff0400d97b18f517131834d7c054893a31900cf9d54cf4d974eed97923e5e5965c298d004849f5f0ac9 - languageName: node - linkType: hard - -"ipv6-normalize@npm:1.0.1": - version: 1.0.1 - resolution: "ipv6-normalize@npm:1.0.1" - checksum: 89156fbfc4f8828b29adf8009332ec77cd93a17a6e28066d602c3154b7bbc37df07f981ab2b6debb46f9a716867262ae4ea5399f3fa9bb0fc8019e6dc2a96023 - languageName: node - linkType: hard - -"is-absolute-url@npm:^2.0.0": - version: 2.1.0 - resolution: "is-absolute-url@npm:2.1.0" - checksum: 8c0/2c324c3118752d82c18afadffbea14d35224e76f37a2ee80e05b209386c46d19bef77b58ede41f7b3be552cde16c6cdb0d884807175a6eb40e8c61281dc67c2f - languageName: node - linkType: hard - -"is-absolute-url@npm:^3.0.3": - version: 3.0.3 - resolution: "is-absolute-url@npm:3.0.3" - checksum: 8c0/04c415974c32e73a83d3a21a9bea18fc4e2c14fbe6bbd64832cf1e67a75ade2af0e900f552f0b8a447f1305f5ffc9d143ccd8d005dbe715d198c359d342b86f0 - languageName: node - linkType: hard - -"is-absolute@npm:^1.0.0": - version: 1.0.0 - resolution: "is-absolute@npm:1.0.0" - dependencies: - is-relative: "npm:^1.0.0" - is-windows: "npm:^1.0.1" - checksum: 8c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: "npm:^3.0.2" - checksum: 8c0/f2c314b314ec6e8a6e559351bff3c7ee9aed7a5e9c6f61dd8cb9e1382c8bfe33dca3f0e0af13daf9ded9e6e66390ff23b4acfb615d7a249009a51506a7b0f151 - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: "npm:^6.0.0" - checksum: 8c0/d68edafd8ef133e9003837f3c80f4e5b82b12ab5456c772d1796857671ae83e3a426ed225a28a7e35bceabbce68c1f1ffdabf47e6d53f5a4d6c4558776ad3c20 - languageName: node - linkType: hard - -"is-alphabetical@npm:1.0.4, is-alphabetical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphabetical@npm:1.0.4" - checksum: 8c0/1505b1de5a1fd74022c05fb21b0e683a8f5229366bac8dc4d34cf6935bcfd104d1125a5e6b083fb778847629f76e5bdac538de5367bdf2b927a1356164e23985 - languageName: node - linkType: hard - -"is-alphanumerical@npm:^1.0.0": - version: 1.0.4 - resolution: "is-alphanumerical@npm:1.0.4" - dependencies: - is-alphabetical: "npm:^1.0.0" - is-decimal: "npm:^1.0.0" - checksum: 8c0/d623abae7130a7015c6bf33d99151d4e7005572fd170b86568ff4de5ae86ac7096608b87dd4a1d4dbbd497e392b6396930ba76c9297a69455909cebb68005905 - languageName: node - linkType: hard - -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.0": - version: 1.1.0 - resolution: "is-arguments@npm:1.1.0" - dependencies: - call-bind: "npm:^1.0.0" - checksum: 8c0/685ca8dc30ec714947d37a5f41f1421dcfda760d8dfa5ef55bc3ffb0433b578959d01d3276f8ea423e0eed7b3d7d39c64fa83b98b62d388cfb9d190ee104d5d8 - languageName: node - linkType: hard - -"is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "is-array-buffer@npm:3.0.1" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - is-typed-array: "npm:^1.1.10" - checksum: 8c0/a20fc6be40c2efa9465f56274d4ad9c13b84b5f7efe76ec4897609817f079d5e86f3b392c3a78e12d96e0151bcf23389946b0721bd00a09fc9c14905fd7edb1b - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.0" - is-typed-array: "npm:^1.1.10" - checksum: 40ed13a5f5746ac3ae2f2e463687d9b5a3f5fd0086f970fb4898f0253c2a5ec2e3caea2d664dd8f54761b1c1948609702416921a22faebe160c7640a9217c80e - languageName: node - linkType: hard - -"is-arrayish@npm:^0.2.1": - version: 0.2.1 - resolution: "is-arrayish@npm:0.2.1" - checksum: 8c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 - languageName: node - linkType: hard - -"is-arrayish@npm:^0.3.1": - version: 0.3.2 - resolution: "is-arrayish@npm:0.3.2" - checksum: 8c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54 - languageName: node - linkType: hard - -"is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.2 - resolution: "is-bigint@npm:1.0.2" - checksum: 8c0/2e334fe08d219c979b3c8ede50021b64c22ff3db24b850f937598295f48bbaabf95f81b4ae5bbb6dafbe0eb3e6ca255adcac0f08d7a5357f2a807ecb549f1ae7 - languageName: node - linkType: hard - -"is-binary-path@npm:^1.0.0": - version: 1.0.1 - resolution: "is-binary-path@npm:1.0.1" - dependencies: - binary-extensions: "npm:^1.0.0" - checksum: 8c0/16e456fa3782eaf3d8e28d382b750507e3d54ff6694df8a1b2c6498da321e2ead311de9c42e653d8fb3213de72bac204b5f97e4a110cda8a72f17b1c1b4eb643 - languageName: node - linkType: hard - -"is-binary-path@npm:~2.1.0": - version: 2.1.0 - resolution: "is-binary-path@npm:2.1.0" - dependencies: - binary-extensions: "npm:^2.0.0" - checksum: 8c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.1 - resolution: "is-boolean-object@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 8c0/5d3af565c7f9064cb67b2182a70b0d043365f251ec13571efda2c65d057ec312c3faf1d92a77a59a288a409e8c8d4ce9c54e15065be63544a4cc9148ef2aebe9 - languageName: node - linkType: hard - -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 8c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 - languageName: node - linkType: hard - -"is-buffer@npm:^2.0.0": - version: 2.0.5 - resolution: "is-buffer@npm:2.0.5" - checksum: 8c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.3": - version: 1.2.3 - resolution: "is-callable@npm:1.2.3" - checksum: 8c0/359604b60827b38593deabeb78993cc838cfc2b8927760dca91eb31cb481678814fdcbf92ceac12dc2498926b5ffc4d01b3c10a4f21733742880f9b7847ea5f8 - languageName: node - linkType: hard - -"is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 8c0/bda3c67128741129d61e1cb7ca89025ca56b39bf3564657989567c9f6d1e20d6f5579750d3c1fa8887903c6dc669fbc695e33a1363e7c5ec944077e39d24f73d - languageName: node - linkType: hard - -"is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 8c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f - languageName: node - linkType: hard - -"is-ci@npm:^2.0.0": - version: 2.0.0 - resolution: "is-ci@npm:2.0.0" - dependencies: - ci-info: "npm:^2.0.0" - bin: - is-ci: bin.js - checksum: 8c0/17de4e2cd8f993c56c86472dd53dd9e2c7f126d0ee55afe610557046cdd64de0e8feadbad476edc9eeff63b060523b8673d9094ed2ab294b59efb5a66dd05a9a - languageName: node - linkType: hard - -"is-ci@npm:^3.0.0": - version: 3.0.0 - resolution: "is-ci@npm:3.0.0" - dependencies: - ci-info: "npm:^3.1.1" - bin: - is-ci: bin.js - checksum: 8c0/151a9cc5907a61d0b6805692d24fb55db5741ed073371f445ba7d0efd8c0a752f6a78734ef45580025288e026e15bfcbc03fc575e20ae07de624a39188ed866f - languageName: node - linkType: hard - -"is-color-stop@npm:^1.0.0": - version: 1.1.0 - resolution: "is-color-stop@npm:1.1.0" - dependencies: - css-color-names: "npm:^0.0.4" - hex-color-regex: "npm:^1.1.0" - hsl-regex: "npm:^1.0.0" - hsla-regex: "npm:^1.0.0" - rgb-regex: "npm:^1.0.1" - rgba-regex: "npm:^1.0.0" - checksum: 8c0/12d9a9d6b3da07bd69f678d6dbe897fccbd573ead12057f60c4773129e34ea2b658f29c1fb8ef84c548e8ac62061c04c16e23ffcb00d01900fa1f72b7ab3b569 - languageName: node - linkType: hard - -"is-core-module@npm:^2.13.0": - version: 2.13.0 - resolution: "is-core-module@npm:2.13.0" - dependencies: - has: "npm:^1.0.3" - checksum: 8c0/a8e7f46f8cefd7c9f6f5d54f3dbf1c40bf79467b6612d6023421ec6ea7e8e4c22593b3963ff7a3f770db07bc19fccbe7987a550a8bc1a4d6ec4115db5e4c5dca - languageName: node - linkType: hard - -"is-core-module@npm:^2.13.1": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" - dependencies: - hasown: "npm:^2.0.0" - checksum: 2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 - languageName: node - linkType: hard - -"is-core-module@npm:^2.2.0": - version: 2.4.0 - resolution: "is-core-module@npm:2.4.0" - dependencies: - has: "npm:^1.0.3" - checksum: 8c0/7df2fceca99f8b711e386a86217f6d9d21aac31d86ae2461225ff8b6b148e2a7a444cb64635fe702e56e7f75eb43e4f0b16d83595c28a131664da093fbfa4de7 - languageName: node - linkType: hard - -"is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": - version: 2.8.1 - resolution: "is-core-module@npm:2.8.1" - dependencies: - has: "npm:^1.0.3" - checksum: 8c0/f1139970deb2ec159c54be154d35cd17d71b9b56c60221ff7c8c328ca7efe20b6d676cef43d08c21966e162bfd5068dcd0ce23e64c77b76a19824563ecd82e0e - languageName: node - linkType: hard - -"is-core-module@npm:^2.9.0": - version: 2.11.0 - resolution: "is-core-module@npm:2.11.0" - dependencies: - has: "npm:^1.0.3" - checksum: 8c0/fd8f78ef4e243c295deafa809f89381d89aff5aaf38bb63266b17ee6e34b6a051baa5bdc2365456863336d56af6a59a4c1df1256b4eff7d6b4afac618586b004 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: "npm:^3.0.2" - checksum: 8c0/32fda7e966b2c1f093230d5ef2aad1bb86e43e7280da50961e38ec31dbd8a50570a2911fd45277d321074a0762adc98e8462bb62820462594128857225e90d21 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: "npm:^6.0.0" - checksum: 8c0/bed31385d7d1a0dbb2ab3077faf2188acf42609192dca4e320ed7b3dc14a9d70c00658956cdaa2c0402be136c6b56e183973ad81b730fd90ab427fb6fd3608be - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.4 - resolution: "is-date-object@npm:1.0.4" - checksum: 8c0/e037530de7b02f9d3c0a0bb7dae763f4c4a17c8380aab3576419d1cad3890f7db199c41d7d401a4f49fbfeff5f4b75a4755d73e40e461cc8bc0f2f3466877e00 - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e - languageName: node - linkType: hard - -"is-decimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-decimal@npm:1.0.4" - checksum: 8c0/a4ad53c4c5c4f5a12214e7053b10326711f6a71f0c63ba1314a77bd71df566b778e4ebd29f9fb6815f07a4dc50c3767fb19bd6fc9fa05e601410f1d64ffeac48 - languageName: node - linkType: hard - -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: "npm:^0.1.6" - is-data-descriptor: "npm:^0.1.4" - kind-of: "npm:^5.0.0" - checksum: 8c0/6b8f5617b764ef8c6be3d54830184357e6cdedd8e0eddf1b97d0658616ac170bfdbc7c1ad00e0aa9f5b767acdb9d6c63d4df936501784b34936bd0f9acf3b665 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: "npm:^1.0.0" - is-data-descriptor: "npm:^1.0.0" - kind-of: "npm:^6.0.2" - checksum: 8c0/a05169c7a87feb88fc155e3ada469090cfabb5a548a3f794358b511cc47a0871b8b95e7345be4925a22ef3df585c3923b31943b3ad6255ce563a9d97f2e221e0 - languageName: node - linkType: hard - -"is-directory@npm:^0.3.1": - version: 0.3.1 - resolution: "is-directory@npm:0.3.1" - checksum: 8c0/1c39c7d1753b04e9483b89fb88908b8137ab4743b6f481947e97ccf93ecb384a814c8d3f0b95b082b149c5aa19c3e9e4464e2791d95174bce95998c26bb1974b - languageName: node - linkType: hard - -"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": - version: 2.2.1 - resolution: "is-docker@npm:2.2.1" - bin: - is-docker: cli.js - checksum: 8c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc - languageName: node - linkType: hard - -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 8c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: "npm:^2.0.4" - checksum: 8c0/1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": - version: 2.1.1 - resolution: "is-extglob@npm:2.1.1" - checksum: 8c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 - languageName: node - linkType: hard - -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^1.0.0": - version: 1.0.0 - resolution: "is-fullwidth-code-point@npm:1.0.0" - dependencies: - number-is-nan: "npm:^1.0.0" - checksum: 8c0/12acfcf16142f2d431bf6af25d68569d3198e81b9799b4ae41058247aafcc666b0127d64384ea28e67a746372611fcbe9b802f69175287aba466da3eddd5ba0f - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^2.0.0": - version: 2.0.0 - resolution: "is-fullwidth-code-point@npm:2.0.0" - checksum: 8c0/e58f3e4a601fc0500d8b2677e26e9fe0cd450980e66adb29d85b6addf7969731e38f8e43ed2ec868a09c101a55ac3d8b78902209269f38c5286bc98f5bc1b4d9 - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 8c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^4.0.0": - version: 4.0.0 - resolution: "is-fullwidth-code-point@npm:4.0.0" - checksum: 8c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 - languageName: node - linkType: hard - -"is-function@npm:^1.0.2": - version: 1.0.2 - resolution: "is-function@npm:1.0.2" - checksum: 8c0/c55289042a0e828a773f1245e2652e0c029efacc78ebe03e61787746fda74e2c41006cd908f20b53c36e45f9e75464475a4b2d68b17f4c7b9f8018bcaec42f9e - languageName: node - linkType: hard - -"is-generator-fn@npm:^2.0.0": - version: 2.1.0 - resolution: "is-generator-fn@npm:2.1.0" - checksum: 8c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d - languageName: node - linkType: hard - -"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b - languageName: node - linkType: hard - -"is-glob@npm:4.0.3, is-glob@npm:^4.0.3": - version: 4.0.3 - resolution: "is-glob@npm:4.0.3" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 8c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a - languageName: node - linkType: hard - -"is-glob@npm:^3.0.0, is-glob@npm:^3.1.0": - version: 3.1.0 - resolution: "is-glob@npm:3.1.0" - dependencies: - is-extglob: "npm:^2.1.0" - checksum: 8c0/ba816a35dcf5285de924a8a4654df7b183a86381d73ea3bbf3df3cc61b3ba61fdddf90ee205709a2235b210ee600ee86e5e8600093cf291a662607fd032e2ff4 - languageName: node - linkType: hard - -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": - version: 4.0.1 - resolution: "is-glob@npm:4.0.1" - dependencies: - is-extglob: "npm:^2.1.1" - checksum: 8c0/a8414252499e4381756c36fe52ed778e090dd21d8cb81053384eafd5bc4fc36a6232ef528156ec98dce561f589d1d16659b7f9679b8c86864ac3c6acd5da6f66 - languageName: node - linkType: hard - -"is-hexadecimal@npm:^1.0.0": - version: 1.0.4 - resolution: "is-hexadecimal@npm:1.0.4" - checksum: 8c0/ec4c64e5624c0f240922324bc697e166554f09d3ddc7633fc526084502626445d0a871fbd8cae52a9844e83bd0bb414193cc5a66806d7b2867907003fc70c5ea - languageName: node - linkType: hard - -"is-interactive@npm:^1.0.0": - version: 1.0.0 - resolution: "is-interactive@npm:1.0.0" - checksum: 8c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d - languageName: node - linkType: hard - -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 8c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d - languageName: node - linkType: hard - -"is-lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "is-lower-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/c045e6a52dcc7c3857e2f8c850ded604cdc5269ff94625b03881cefc73bfc02f5099a1bc9bafa67793656711a40d4ab3e26e285a848e728506df20ead0ce8e2f - languageName: node - linkType: hard - -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: 8c0/119ff9137a37fd131a72fab3f4ab8c9d6a24b0a1ee26b4eff14dc625900d8675a97785eea5f4174265e2006ed076cc24e89f6e57ebd080a48338d914ec9168a5 - languageName: node - linkType: hard - -"is-nan@npm:^1.2.1": - version: 1.3.2 - resolution: "is-nan@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - checksum: 8c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.1": - version: 2.0.1 - resolution: "is-negative-zero@npm:2.0.1" - checksum: 8c0/e1ddf48f9e61a4802ccaa2ea9678fa8861dad25d57dcfd03a481320eaac42a3e2e0e8cabc1c8662d05f0188620a92b05c7e4aed8c1ebf48da96ff7a1af8e0f78 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: 8c0/eda024c158f70f2017f3415e471b818d314da5ef5be68f801b16314d4a4b6304a74cbed778acf9e2f955bb9c1c5f2935c1be0c7c99e1ad12286f45366217b6a3 - languageName: node - linkType: hard - -"is-node-process@npm:^1.2.0": - version: 1.2.0 - resolution: "is-node-process@npm:1.2.0" - checksum: 8c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.5 - resolution: "is-number-object@npm:1.0.5" - checksum: 8c0/b19d4768aeb551467850908ff2121aa2ed819ca8366f1d041e8aaf44b401c0ce90c193cad127ae3d34a68ce36977655bb4f5572640a692c1461a5cf2ed1cda11 - languageName: node - linkType: hard - -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: "npm:^3.0.2" - checksum: 8c0/e639c54640b7f029623df24d3d103901e322c0c25ea5bde97cd723c2d0d4c05857a8364ab5c58d963089dbed6bf1d0ffe975cb6aef917e2ad0ccbca653d31b4f - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 8c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 - languageName: node - linkType: hard - -"is-obj@npm:^1.0.0": - version: 1.0.1 - resolution: "is-obj@npm:1.0.1" - checksum: 8c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 - languageName: node - linkType: hard - -"is-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "is-obj@npm:2.0.0" - checksum: 8c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e - languageName: node - linkType: hard - -"is-object@npm:~1.0.1": - version: 1.0.2 - resolution: "is-object@npm:1.0.2" - checksum: 8c0/9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 - languageName: node - linkType: hard - -"is-observable@npm:^1.1.0": - version: 1.1.0 - resolution: "is-observable@npm:1.1.0" - dependencies: - symbol-observable: "npm:^1.1.0" - checksum: 8c0/cf3166b0822f70ad06e7851e09430166ce658349d54aaa64c93a03320420b9285735821b23164bdce741ff83a86730ac3e53035ce4e2511ed843dbff4105bfa2 - languageName: node - linkType: hard - -"is-path-cwd@npm:^2.0.0, is-path-cwd@npm:^2.2.0": - version: 2.2.0 - resolution: "is-path-cwd@npm:2.2.0" - checksum: 8c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a - languageName: node - linkType: hard - -"is-path-in-cwd@npm:^2.0.0": - version: 2.1.0 - resolution: "is-path-in-cwd@npm:2.1.0" - dependencies: - is-path-inside: "npm:^2.1.0" - checksum: 8c0/674a4282fb3732cf4b4e9ea31e06380d8b074fb8106c4c1742a9f0f3d5650bf059b2c45e5c4cfa7abe847ca88474de63abec323a7fe1eb14f8ec4de2fa951d3a - languageName: node - linkType: hard - -"is-path-inside@npm:^2.1.0": - version: 2.1.0 - resolution: "is-path-inside@npm:2.1.0" - dependencies: - path-is-inside: "npm:^1.0.2" - checksum: 8c0/50272b9aa301964c0bc4032d5c968e63c516d15bd7800cd06845df97bee637451fcd92a8001b37e309563eff2dffae5fa6d635a0c1d162dc257489c86b1fda51 - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 8c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 - languageName: node - linkType: hard - -"is-plain-obj@npm:^1.0.0": - version: 1.1.0 - resolution: "is-plain-obj@npm:1.1.0" - checksum: daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c - languageName: node - linkType: hard - -"is-plain-obj@npm:^2.0.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: 8c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53 - languageName: node - linkType: hard - -"is-plain-obj@npm:^3.0.0": - version: 3.0.0 - resolution: "is-plain-obj@npm:3.0.0" - checksum: 8c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc - languageName: node - linkType: hard - -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": - version: 2.0.4 - resolution: "is-plain-object@npm:2.0.4" - dependencies: - isobject: "npm:^3.0.1" - checksum: 8c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 - languageName: node - linkType: hard - -"is-plain-object@npm:^5.0.0": - version: 5.0.0 - resolution: "is-plain-object@npm:5.0.0" - checksum: 893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c - languageName: node - linkType: hard - -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: 8c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 - languageName: node - linkType: hard - -"is-primitive@npm:^3.0.1": - version: 3.0.1 - resolution: "is-primitive@npm:3.0.1" - checksum: 2e3b6f029fabbdda467ea51ea4fdd00e6552434108b863a08f296638072c506a7c195089e3e31f83e7fc14bebbd1c5c9f872fe127c9284a7665c8227b47ffdd6 - languageName: node - linkType: hard - -"is-promise@npm:^2.1.0": - version: 2.2.2 - resolution: "is-promise@npm:2.2.2" - checksum: 8c0/2dba959812380e45b3df0fb12e7cb4d4528c989c7abb03ececb1d1fd6ab1cbfee956ca9daa587b9db1d8ac3c1e5738cf217bdb3dfd99df8c691be4c00ae09069 - languageName: node - linkType: hard - -"is-regex@npm:^1.0.4, is-regex@npm:^1.1.2, is-regex@npm:^1.1.3": - version: 1.1.3 - resolution: "is-regex@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - has-symbols: "npm:^1.0.2" - checksum: 8c0/91abb3a54dfec0e12901860df4d7282da97578c85ea4c8e95674d146e7cfddc02084e5fc6eaee6142d161bf0d0fed22034e4176ef1378058e20f22271a2cb73e - languageName: node - linkType: hard - -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 - languageName: node - linkType: hard - -"is-relative@npm:^1.0.0": - version: 1.0.0 - resolution: "is-relative@npm:1.0.0" - dependencies: - is-unc-path: "npm:^1.0.0" - checksum: 8c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 - languageName: node - linkType: hard - -"is-resolvable@npm:^1.0.0": - version: 1.1.0 - resolution: "is-resolvable@npm:1.1.0" - checksum: 8c0/17d5bf39d9268173adf834c23effb6b4e926d809b528a851d87e6fb944e9606ed2c94dfaf1b1b675f922c2990fbc402d754136d8557c90a931ac7fd2f1e4cf07 - languageName: node - linkType: hard - -"is-root@npm:2.1.0": - version: 2.1.0 - resolution: "is-root@npm:2.1.0" - checksum: 8c0/83d3f5b052c3f28fbdbdf0d564bdd34fa14933f5694c78704f85cd1871255bc017fbe3fe2bc2fff2d227c6be5927ad2149b135c0a7c0060e7ac4e610d81a4f01 - languageName: node - linkType: hard - -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: 8c0/5f8bd1880df8c0004ce694e315e6e1e47a3452014be792880bb274a3b2cdb952fdb60789636ca6e084c7947ca8b7ae03ccaf54c93a7fcfed228af810559e5432 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "is-shared-array-buffer@npm:1.0.1" - checksum: 8c0/d27ff8661f30b6e90258a94c05c739260fb92f6c15d297cbf93e1122c6e7cf26ba65e89a63d427d22712f598905ca9d65840c1335449825aca4828e0bb53aa04 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 8c0/cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec - languageName: node - linkType: hard - -"is-stream@npm:^1.1.0": - version: 1.1.0 - resolution: "is-stream@npm:1.1.0" - checksum: 8c0/b8ae7971e78d2e8488d15f804229c6eed7ed36a28f8807a1815938771f4adff0e705218b7dab968270433f67103e4fef98062a0beea55d64835f705ee72c7002 - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "is-stream@npm:2.0.0" - checksum: 8c0/687f6bbd2b995573d33e6b40b2cbc8b9186a751aa3151c23e6fd2c4ca352e323a6dc010b09103f89c9ca0bf5c8c38f3fa8b74d5d9acd1c44f1499874d7e844f9 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.6": - version: 1.0.6 - resolution: "is-string@npm:1.0.6" - checksum: 8c0/1e40b3940be07bc844b91f832ab1d02b76b93a53489ca9658d8b319a2c5a9713cb1eb999060c942453560fa62fa9e74ebc74b2c43affcb7da78568cacff62a60 - languageName: node - linkType: hard - -"is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 8c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - checksum: 8c0/b71268a2e5f493f2b95af4cbfe7a65254a822f07d57f20c18f084347cd45f11810915fe37d7a6831fe4b81def24621a042fd1169ec558c50f830b591bc8c1f66 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.12": - version: 1.1.12 - resolution: "is-typed-array@npm:1.1.12" - dependencies: - which-typed-array: "npm:^1.1.11" - checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae - languageName: node - linkType: hard - -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 8c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec - languageName: node - linkType: hard - -"is-unc-path@npm:^1.0.0": - version: 1.0.0 - resolution: "is-unc-path@npm:1.0.0" - dependencies: - unc-path-regex: "npm:^0.1.2" - checksum: 8c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: 8c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 - languageName: node - linkType: hard - -"is-upper-case@npm:^2.0.2": - version: 2.0.2 - resolution: "is-upper-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/2236f416484a2643d55a07cc95443cecf96cbc5fb0de7f24c506a8bc5cc4c4de885ab56c5ec946eadd95b3b7960bff7ed51cc88511fa8e8a9d92f2f8969622d9 - languageName: node - linkType: hard - -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 8c0/9c9fec9efa7bf5030a4a927f33fff2a6976b93646259f92b517d3646c073cc5b98283a162ce75c412b060a46de07032444b530f0a4c9b6e012ef8f1741c3a987 - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.1, is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 8c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 8c0/ef5136bd446ae4603229b897f73efd0720c6ab3ec6cc05c8d5c4b51aa9f95164713c4cad0a22ff1fedf04865ff86cae4648bc1d5eead4b6388e1150525af1cc1 - languageName: node - linkType: hard - -"is-what@npm:^4.1.8": - version: 4.1.15 - resolution: "is-what@npm:4.1.15" - checksum: 8c0/7d9bab85977d8352684a7b046cfee8d68e23029f0d6d5b4b7f366cf6c83dee39903e412b655ebf155dc9706d4d1bce02f6351f75a1426381961b4155394082db - languageName: node - linkType: hard - -"is-whitespace-character@npm:^1.0.0": - version: 1.0.4 - resolution: "is-whitespace-character@npm:1.0.4" - checksum: 8c0/20f02cf42eafb44ff1706a04338dc45095cd691ae6984adb9a211b6b6df8d01e91722129ce55555e4c7c7b0b7d48e217553767f22eb7ec019b9f8dd3bc12cdfb - languageName: node - linkType: hard - -"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 8c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 - languageName: node - linkType: hard - -"is-word-character@npm:^1.0.0": - version: 1.0.4 - resolution: "is-word-character@npm:1.0.4" - checksum: 8c0/2247844064532986dc70869d961dccd1366932a147b52d4ec7f567f87edf7f9855a27b75f66b781db3b3175bbe05a76acbc6392a1a5c64c4c99fe3459dae33bd - languageName: node - linkType: hard - -"is-wsl@npm:^1.1.0": - version: 1.1.0 - resolution: "is-wsl@npm:1.1.0" - checksum: 8c0/7ad0012f21092d6f586c7faad84755a8ef0da9b9ec295e4dc82313cce4e1a93a3da3c217265016461f9b141503fe55fa6eb1fd5457d3f05e8d1bdbb48e50c13a - languageName: node - linkType: hard - -"is-wsl@npm:^2.1.1, is-wsl@npm:^2.2.0": - version: 2.2.0 - resolution: "is-wsl@npm:2.2.0" - dependencies: - is-docker: "npm:^2.0.0" - checksum: 8c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e - languageName: node - linkType: hard - -"isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0": - version: 1.0.0 - resolution: "isarray@npm:1.0.0" - checksum: 8c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 8c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd - languageName: node - linkType: hard - -"isbot@npm:3.7.1": - version: 3.7.1 - resolution: "isbot@npm:3.7.1" - checksum: 7c4733f6bf0cd98d6801ee24d4664edde0f0fabc329ff9858d41744dc0d6143701e8e7dfc7962bcdc46b7670911d716392cdd0a4a4bc9f5c98e03125d675f6c5 - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 8c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d - languageName: node - linkType: hard - -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: "npm:1.0.0" - checksum: 8c0/c4cafec73b3b2ee11be75dff8dafd283b5728235ac099b07d7873d5182553a707768e208327bbc12931b9422d8822280bf88d894a0024ff5857b3efefb480e7b - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": - version: 3.0.1 - resolution: "isobject@npm:3.0.1" - checksum: 8c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db - languageName: node - linkType: hard - -"isobject@npm:^4.0.0": - version: 4.0.0 - resolution: "isobject@npm:4.0.0" - checksum: 8c0/8efcda03af98cbb193737e30ffb77c71ca4e97dbf919f7aacec44b7410a166fa4e9fd71232bf5b00a919f98b5747ae359dbb5a5bc4195c93f6291423b9707df6 - languageName: node - linkType: hard - -"isomorphic-fetch@npm:^3.0.0": - version: 3.0.0 - resolution: "isomorphic-fetch@npm:3.0.0" - dependencies: - node-fetch: "npm:^2.6.1" - whatwg-fetch: "npm:^3.4.1" - checksum: 8c0/511b1135c6d18125a07de661091f5e7403b7640060355d2d704ce081e019bc1862da849482d079ce5e2559b8976d3de7709566063aec1b908369c0b98a2b075b - languageName: node - linkType: hard - -"isomorphic-ws@npm:5.0.0": - version: 5.0.0 - resolution: "isomorphic-ws@npm:5.0.0" - peerDependencies: - ws: "*" - checksum: 8c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-coverage@npm:3.0.0" - checksum: 8c0/29ab1980e973f169d0de899256c193caff192f30e5e4f50ec40bddac307d454c7c6493836fffea633469e7d1d1ab7fe04fa64c426f8bf8d14b17679284f5fd07 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: 8c0/10ecb00a50cac2f506af8231ce523ffa1ac1310db0435c8ffaabb50c1d72539906583aa13c84f8835dc103998b9989edc3c1de989d2e2a96a91a9ba44e5db6b9 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^4.0.0, istanbul-lib-instrument@npm:^4.0.3": - version: 4.0.3 - resolution: "istanbul-lib-instrument@npm:4.0.3" - dependencies: - "@babel/core": "npm:^7.7.5" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.0.0" - semver: "npm:^6.3.0" - checksum: 8c0/7f1005566a912e33e847576b2c1072d48a7c556810a54d912f3e2f0bd966171e68b30c40b0c1ce6ee9b8864de422d0c10e2d0dfd2d25b48723950cc78cd437c2 - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^5.0.4": - version: 5.2.1 - resolution: "istanbul-lib-instrument@npm:5.2.1" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^6.3.0" - checksum: 8c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee - languageName: node - linkType: hard - -"istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.0 - resolution: "istanbul-lib-instrument@npm:6.0.0" - dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" - istanbul-lib-coverage: "npm:^3.2.0" - semver: "npm:^7.5.4" - checksum: 8c0/ee86777f3692f95c3ae35c5cbc9aa979b551241da2de1284f75c507a2bdef948cc56ca90214c3bb47b5dc2ebe748610eb4f7c4d39b304f24a933bcd0867a05e8 - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0": - version: 3.0.0 - resolution: "istanbul-lib-report@npm:3.0.0" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^3.0.0" - supports-color: "npm:^7.1.0" - checksum: 8c0/81b0d5187c7603ed71bdea0b701a7329f8146549ca19aa26d91b4a163aea756f9d55c1a6dc1dcd087e24dfcb99baa69e266a68644fbfd5dc98107d6f6f5948d2 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^4.0.0": - version: 4.0.0 - resolution: "istanbul-lib-source-maps@npm:4.0.0" - dependencies: - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - source-map: "npm:^0.6.1" - checksum: 8c0/66a8d44486ec302004df2cd7442cec44301badf680775b787edc8e82a27edafd646b5c724694b22cf95efb39097d2821eaa0851d4aca8897603cb5148db532a0 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.0.2": - version: 3.0.2 - resolution: "istanbul-reports@npm:3.0.2" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 8c0/83bd200a0027277c79121a56267ce48e9cd4946d4d3875d14d084828b9b9194846c23ba83e98a8a0d0b6d7e2ac0f79bfca386aef1ea3d912d61b96a9aff22211 - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.1.3": - version: 3.1.5 - resolution: "istanbul-reports@npm:3.1.5" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 8c0/3a147171bffdbd3034856410b6ec81637871d17d10986513328fec23df6b666f66bd08ea480f5b7a5b9f7e8abc30f3e3c2e7d1b661fc57cdc479aaaa677b1011 - languageName: node - linkType: hard - -"iterall@npm:^1.1.3, iterall@npm:^1.2.1": - version: 1.3.0 - resolution: "iterall@npm:1.3.0" - checksum: 8c0/40de624e5fe937c4c0e511981b91caea9ff2142bfc0316cccc8506eaa03aa253820cc17c5bc5f0a98706c7268a373e5ebee9af9a0c8a359730cf7c05938b57b5 - languageName: node - linkType: hard - -"iterate-iterator@npm:^1.0.1": - version: 1.0.1 - resolution: "iterate-iterator@npm:1.0.1" - checksum: 8c0/f3bd011cb1019aa6ec90711717054aeefd31eddde7810742efd1d374f0e1b6bd5ec32aa00ac465b65e02f7e862df0ae96ee09e17be6736e373cdb15fff13b588 - languageName: node - linkType: hard - -"iterate-value@npm:^1.0.2": - version: 1.0.2 - resolution: "iterate-value@npm:1.0.2" - dependencies: - es-get-iterator: "npm:^1.0.2" - iterate-iterator: "npm:^1.0.1" - checksum: 8c0/77d32a5ac84877da2133689ff5e3983aa8214bace7faee3c746bf79d4524cc3fb8c0344a20d3699be20a15f0959ecd582d53a05b97f5d04c306bcd426800a650 - languageName: node - linkType: hard - -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" - dependencies: - define-properties: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - reflect.getprototypeof: "npm:^1.0.4" - set-function-name: "npm:^2.0.1" - checksum: a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 - languageName: node - linkType: hard - -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" - dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 - languageName: node - linkType: hard - -"jest-changed-files@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-changed-files@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - execa: "npm:^4.0.0" - throat: "npm:^5.0.0" - checksum: 8c0/6b679ba45c3fe08f659b59e2c22b6b773436e498aa57e62694ea1f185ed3d4e439bc1831dedca3df7b28d1562eec31ae9d79c65c8caea1dd5e620419da20013d - languageName: node - linkType: hard - -"jest-changed-files@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-changed-files@npm:29.7.0" - dependencies: - execa: "npm:^5.0.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - checksum: e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b - languageName: node - linkType: hard - -"jest-circus@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-circus@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/expect": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - dedent: "npm:^1.0.0" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^29.7.0" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - pure-rand: "npm:^6.0.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e - languageName: node - linkType: hard - -"jest-cli@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-cli@npm:26.6.3" - dependencies: - "@jest/core": "npm:^26.6.3" - "@jest/test-result": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - chalk: "npm:^4.0.0" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.4" - import-local: "npm:^3.0.2" - is-ci: "npm:^2.0.0" - jest-config: "npm:^26.6.3" - jest-util: "npm:^26.6.2" - jest-validate: "npm:^26.6.2" - prompts: "npm:^2.0.1" - yargs: "npm:^15.4.1" - bin: - jest: bin/jest.js - checksum: 8c0/3f62c26b300549115bcfc0393d7d49467d414d200bb211a8843fd48d0296ddbfc5e6fe808c64ad2039127657b662e3ba3db44166341bd5db2d089bf09cf82a2c - languageName: node - linkType: hard - -"jest-cli@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-cli@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - create-jest: "npm:^29.7.0" - exit: "npm:^0.1.2" - import-local: "npm:^3.0.2" - jest-config: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - yargs: "npm:^17.3.1" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a - languageName: node - linkType: hard - -"jest-config@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-config@npm:26.6.3" - dependencies: - "@babel/core": "npm:^7.1.0" - "@jest/test-sequencer": "npm:^26.6.3" - "@jest/types": "npm:^26.6.2" - babel-jest: "npm:^26.6.3" - chalk: "npm:^4.0.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.1" - graceful-fs: "npm:^4.2.4" - jest-environment-jsdom: "npm:^26.6.2" - jest-environment-node: "npm:^26.6.2" - jest-get-type: "npm:^26.3.0" - jest-jasmine2: "npm:^26.6.3" - jest-regex-util: "npm:^26.0.0" - jest-resolve: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - jest-validate: "npm:^26.6.2" - micromatch: "npm:^4.0.2" - pretty-format: "npm:^26.6.2" - peerDependencies: - ts-node: ">=9.0.0" - peerDependenciesMeta: - ts-node: - optional: true - checksum: 8c0/7ca34c8d4fa48d9af081e05a2a7a54df5ad03df14dc1edca52f162c65f54fbd3745c14512b3f9dd42b753bd90d4aec4b86a7e1fdd410780bc79d27be3af5a36e - languageName: node - linkType: hard - -"jest-config@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-config@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@jest/test-sequencer": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-jest: "npm:^29.7.0" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - deepmerge: "npm:^4.2.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-circus: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-runner: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - parse-json: "npm:^5.2.0" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-json-comments: "npm:^3.1.1" - peerDependencies: - "@types/node": "*" - ts-node: ">=9.0.0" - peerDependenciesMeta: - "@types/node": - optional: true - ts-node: - optional: true - checksum: bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 - languageName: node - linkType: hard - -"jest-diff@npm:^26.0.0, jest-diff@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-diff@npm:26.6.2" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^26.6.2" - jest-get-type: "npm:^26.3.0" - pretty-format: "npm:^26.6.2" - checksum: 8c0/3a9c88c8f308487059788ab1199e12f9b4657168964a2307573760b4d41ab5b851e5bef70125ef5ceddc1e201d6753d6ceae88994c197990dd9307cb7d94b9a1 - languageName: node - linkType: hard - -"jest-diff@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-diff@npm:29.4.1" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.3.1" - jest-get-type: "npm:^29.2.0" - pretty-format: "npm:^29.4.1" - checksum: 8c0/43d5923364859efd39769ad527b54f5f205a1862e4530f9d6b9c3895da29cdf2a7178bcdd466c4181d4679f89be3ef39d523616a2b5dd84be1d09c7c17f3b376 - languageName: node - linkType: hard - -"jest-diff@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-diff@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - diff-sequences: "npm:^29.6.3" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 - languageName: node - linkType: hard - -"jest-docblock@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-docblock@npm:26.0.0" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: 8c0/769c9379a906b98afd9fa2feca3a271a06bec62e26bb99e7bba4182ead955b677cbedeaa7b129653dd21ee9473604c40836651f7c4c1265e37ca2a68e01e0f8b - languageName: node - linkType: hard - -"jest-docblock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-docblock@npm:29.7.0" - dependencies: - detect-newline: "npm:^3.0.0" - checksum: d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 - languageName: node - linkType: hard - -"jest-each@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-each@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^26.3.0" - jest-util: "npm:^26.6.2" - pretty-format: "npm:^26.6.2" - checksum: 8c0/93fca8619afba3e9f77903929a5f4ba84a4b4ab22852d062a24e7029038456b2d5bef5761afa1c3ac52a59434484f101d44beae35f3b7e5ec1a8aa695a1c879a - languageName: node - linkType: hard - -"jest-each@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-each@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - pretty-format: "npm:^29.7.0" - checksum: f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:29.7.0": - version: 29.7.0 - resolution: "jest-environment-jsdom@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/jsdom": "npm:^20.0.0" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jsdom: "npm:^20.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-jsdom@npm:26.6.2" - dependencies: - "@jest/environment": "npm:^26.6.2" - "@jest/fake-timers": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - jest-mock: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - jsdom: "npm:^16.4.0" - checksum: 8c0/5bbcc49240d59e966adb690ae73bdd7cd650b401a2420837c4770dbd148ddb2d417bcfb9fe0b4f5e85fda5d5d2e93e62788b699350eb6bd924cbf6bc9c833080 - languageName: node - linkType: hard - -"jest-environment-node@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-environment-node@npm:26.6.2" - dependencies: - "@jest/environment": "npm:^26.6.2" - "@jest/fake-timers": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - jest-mock: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - checksum: 8c0/887382992bfd8110337cdc6e8a931f647d78363aa1ed777a2d9ff0f2edc468e6cc9e9b9a5d26c772534d0bd8ec41d860e433beb2d6f3c8a8a2cab3007ceec126 - languageName: node - linkType: hard - -"jest-environment-node@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-environment-node@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-mock: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - checksum: 61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b - languageName: node - linkType: hard - -"jest-get-type@npm:^26.3.0": - version: 26.3.0 - resolution: "jest-get-type@npm:26.3.0" - checksum: 8c0/112fc7f962d1c4625a51b6ccfe6e9c8e54ab80816bf8dbf2b1bf25d12c0f75c74ebad0c2f37622aea81019a2087451bfb12a46619ed6717e64ee875ea2de5520 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.2.0": - version: 29.2.0 - resolution: "jest-get-type@npm:29.2.0" - checksum: 8c0/6466631b344ff8e9d3fa6a47bafa4fc2baf42ec8b4f5de5c99fa1edda128af869da319af4cf770662776e4ed7a3e44656eba690cf5b662c664605b0331762bc7 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-get-type@npm:29.6.3" - checksum: 8c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b - languageName: node - linkType: hard - -"jest-haste-map@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-haste-map@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - "@types/graceful-fs": "npm:^4.1.2" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.1.2" - graceful-fs: "npm:^4.2.4" - jest-regex-util: "npm:^26.0.0" - jest-serializer: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - jest-worker: "npm:^26.6.2" - micromatch: "npm:^4.0.2" - sane: "npm:^4.0.3" - walker: "npm:^1.0.7" - dependenciesMeta: - fsevents: - optional: true - checksum: 8c0/85a40d8ecf4bfb659613f107c963c7366cdf6dcceb0ca73dc8ca09fbe0e2a63b976940f573db6260c43011993cb804275f447f268c3bc4b680c08baed300701d - languageName: node - linkType: hard - -"jest-haste-map@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-haste-map@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/graceful-fs": "npm:^4.1.3" - "@types/node": "npm:*" - anymatch: "npm:^3.0.3" - fb-watchman: "npm:^2.0.0" - fsevents: "npm:^2.3.2" - graceful-fs: "npm:^4.2.9" - jest-regex-util: "npm:^29.6.3" - jest-util: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - micromatch: "npm:^4.0.4" - walker: "npm:^1.0.8" - dependenciesMeta: - fsevents: - optional: true - checksum: 2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c - languageName: node - linkType: hard - -"jest-jasmine2@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-jasmine2@npm:26.6.3" - dependencies: - "@babel/traverse": "npm:^7.1.0" - "@jest/environment": "npm:^26.6.2" - "@jest/source-map": "npm:^26.6.2" - "@jest/test-result": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - co: "npm:^4.6.0" - expect: "npm:^26.6.2" - is-generator-fn: "npm:^2.0.0" - jest-each: "npm:^26.6.2" - jest-matcher-utils: "npm:^26.6.2" - jest-message-util: "npm:^26.6.2" - jest-runtime: "npm:^26.6.3" - jest-snapshot: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - pretty-format: "npm:^26.6.2" - throat: "npm:^5.0.0" - checksum: 8c0/9154ceb08fdfd263a1850af9008b6e5ab4d1242af45fede5a6580fc1db85cd9072a27b609590e76ae8d80e281b2ec96476528e8d37938b92061b746e88330f77 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-leak-detector@npm:26.6.2" - dependencies: - jest-get-type: "npm:^26.3.0" - pretty-format: "npm:^26.6.2" - checksum: 8c0/6062c04531126d1dfb3dee21483963dd75a975cb89a105b54cf767cc350b174ffcc9177d8750d14e30f36c475be7d96554c558bdf1f1ae6ad9b93bcea7097312 - languageName: node - linkType: hard - -"jest-leak-detector@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-leak-detector@npm:29.7.0" - dependencies: - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-matcher-utils@npm:26.6.2" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^26.6.2" - jest-get-type: "npm:^26.3.0" - pretty-format: "npm:^26.6.2" - checksum: 8c0/1303fc4dfd80848483b64bafc99beb31678653ad3f34b4c23e982a16016aec1f8a7de4a583044d9c43e59ee7e68e07c57f3a8b51e40fbefe42eafad45cc725ed - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-matcher-utils@npm:29.4.1" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.4.1" - jest-get-type: "npm:^29.2.0" - pretty-format: "npm:^29.4.1" - checksum: 8c0/a82def0b91c0963c2dbecff792a35bb55724dc3291980b16b37c005af6824c22de87a48e25d334702c4ad70df2c255bc647b69af48b3983f1cc67ef727980010 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-matcher-utils@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - pretty-format: "npm:^29.7.0" - checksum: 0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e - languageName: node - linkType: hard - -"jest-message-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-message-util@npm:26.6.2" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - "@jest/types": "npm:^26.6.2" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" - micromatch: "npm:^4.0.2" - pretty-format: "npm:^26.6.2" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.2" - checksum: 8c0/f6138d67154137cf3e985b2b469d0c78846cce787fed16b107c177fc9c6eb2606b7bce8e88d2a6bc830262d77469ecf26c70925cefc98dee83b5e8ed08981ff5 - languageName: node - linkType: hard - -"jest-message-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-message-util@npm:27.5.1" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^27.5.1" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^27.5.1" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 8c0/447c99061006949bd0c5ac3fcf4dfad11e763712ada1b3df1c1f276d1d4f55b3f7a8bee27591cd1fe23b56220830b2a74f321925d345374d1b7cf9cd536f19b5 - languageName: node - linkType: hard - -"jest-message-util@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-message-util@npm:29.4.1" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.4.1" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.4.1" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 8c0/6674843bac3c566832e47df77774cae51f736dce2ae5a222b65dbeb4d51e2c1d2b42abcedf05f1d01b0c658fece5103e047e534d210cef7fa65d1052186c8eb4 - languageName: node - linkType: hard - -"jest-message-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-message-util@npm:29.7.0" - dependencies: - "@babel/code-frame": "npm:^7.12.13" - "@jest/types": "npm:^29.6.3" - "@types/stack-utils": "npm:^2.0.0" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - micromatch: "npm:^4.0.4" - pretty-format: "npm:^29.7.0" - slash: "npm:^3.0.0" - stack-utils: "npm:^2.0.3" - checksum: 850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 - languageName: node - linkType: hard - -"jest-mock@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-mock@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - checksum: 8c0/cf77b49efe76cdedc63363ccdbae8bc68e0301fbded669e7b45647b7b7c1dce90985cf6a3a13da161f644523d7d0aad03184c6f39302ee4b52f954a1de37960f - languageName: node - linkType: hard - -"jest-mock@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-mock@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - checksum: 7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac - languageName: node - linkType: hard - -"jest-pnp-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "jest-pnp-resolver@npm:1.2.2" - peerDependencies: - jest-resolve: "*" - peerDependenciesMeta: - jest-resolve: - optional: true - checksum: 8c0/f6ef6193f7f015830aea3a13a4fd9f53a60746bbaa2d56d18af4afd26ed1b527039c466c8d2447f68b149db8a912b9493a727f29b809ff883b8b5daec16e98ce - languageName: node - linkType: hard - -"jest-regex-util@npm:^26.0.0": - version: 26.0.0 - resolution: "jest-regex-util@npm:26.0.0" - checksum: 8c0/988675764a08945b90f48e6f5a8640b0d9885a977f100a168061d10037d53808a6cdb7dc8cb6fe9b1332f0523b42bf3edbb6d2cc6c7f7ba582d05d432efb3e60 - languageName: node - linkType: hard - -"jest-regex-util@npm:^27.0.0": - version: 27.5.1 - resolution: "jest-regex-util@npm:27.5.1" - checksum: 8c0/f9790d417b667b38155c4bbd58f2afc0ad9f774381e5358776df02df3f29564069d4773c7ba050db6826bad8a4cc7ef82c3b4c65bfa508e419fdd063a9682c42 - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.0.0": - version: 29.2.0 - resolution: "jest-regex-util@npm:29.2.0" - checksum: 8c0/7e500f4f6fcbf5f46d284e83c9ade2e47707ee51e90d82e531fe10de05924a13dff89280d7184f1050129a070ce6db6336b41e2fd3bd07b8c32a91e8235f9840 - languageName: node - linkType: hard - -"jest-regex-util@npm:^29.6.3": - version: 29.6.3 - resolution: "jest-regex-util@npm:29.6.3" - checksum: 8c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-resolve-dependencies@npm:26.6.3" - dependencies: - "@jest/types": "npm:^26.6.2" - jest-regex-util: "npm:^26.0.0" - jest-snapshot: "npm:^26.6.2" - checksum: 8c0/d8a9392354d7775e2e7234e854069a1e0d21ea616b8de162562b57d77e296b8259952d03f10e2a3031a2369657d5950a807391455dadbafb3f4523804a2585d6 - languageName: node - linkType: hard - -"jest-resolve-dependencies@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve-dependencies@npm:29.7.0" - dependencies: - jest-regex-util: "npm:^29.6.3" - jest-snapshot: "npm:^29.7.0" - checksum: b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d - languageName: node - linkType: hard - -"jest-resolve@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-resolve@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^26.6.2" - read-pkg-up: "npm:^7.0.1" - resolve: "npm:^1.18.1" - slash: "npm:^3.0.0" - checksum: 8c0/9ead2ebe49efeb6c428c25b2da0e773844692cbd1b0b55145c950592053113e67b6121f9cfe1dcea901df3cea8c06ee38a464a37a9b611dc9f1ab376ea7be35a - languageName: node - linkType: hard - -"jest-resolve@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-resolve@npm:29.7.0" - dependencies: - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-pnp-resolver: "npm:^1.2.2" - jest-util: "npm:^29.7.0" - jest-validate: "npm:^29.7.0" - resolve: "npm:^1.20.0" - resolve.exports: "npm:^2.0.0" - slash: "npm:^3.0.0" - checksum: 59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 - languageName: node - linkType: hard - -"jest-runner@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runner@npm:26.6.3" - dependencies: - "@jest/console": "npm:^26.6.2" - "@jest/environment": "npm:^26.6.2" - "@jest/test-result": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - emittery: "npm:^0.7.1" - exit: "npm:^0.1.2" - graceful-fs: "npm:^4.2.4" - jest-config: "npm:^26.6.3" - jest-docblock: "npm:^26.0.0" - jest-haste-map: "npm:^26.6.2" - jest-leak-detector: "npm:^26.6.2" - jest-message-util: "npm:^26.6.2" - jest-resolve: "npm:^26.6.2" - jest-runtime: "npm:^26.6.3" - jest-util: "npm:^26.6.2" - jest-worker: "npm:^26.6.2" - source-map-support: "npm:^0.5.6" - throat: "npm:^5.0.0" - checksum: 8c0/81ce9ce686623c93e50b34babd12a4fdd05edf00b0478570ae57aa2384942fe6fc1c8ca8ee6715ec15561d350f45ec3c26a19304c20b91d4cf51e73b54b0d347 - languageName: node - linkType: hard - -"jest-runner@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runner@npm:29.7.0" - dependencies: - "@jest/console": "npm:^29.7.0" - "@jest/environment": "npm:^29.7.0" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - graceful-fs: "npm:^4.2.9" - jest-docblock: "npm:^29.7.0" - jest-environment-node: "npm:^29.7.0" - jest-haste-map: "npm:^29.7.0" - jest-leak-detector: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-resolve: "npm:^29.7.0" - jest-runtime: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - jest-watcher: "npm:^29.7.0" - jest-worker: "npm:^29.7.0" - p-limit: "npm:^3.1.0" - source-map-support: "npm:0.5.13" - checksum: 2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 - languageName: node - linkType: hard - -"jest-runtime@npm:^26.6.3": - version: 26.6.3 - resolution: "jest-runtime@npm:26.6.3" - dependencies: - "@jest/console": "npm:^26.6.2" - "@jest/environment": "npm:^26.6.2" - "@jest/fake-timers": "npm:^26.6.2" - "@jest/globals": "npm:^26.6.2" - "@jest/source-map": "npm:^26.6.2" - "@jest/test-result": "npm:^26.6.2" - "@jest/transform": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/yargs": "npm:^15.0.0" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^0.6.0" - collect-v8-coverage: "npm:^1.0.0" - exit: "npm:^0.1.2" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.4" - jest-config: "npm:^26.6.3" - jest-haste-map: "npm:^26.6.2" - jest-message-util: "npm:^26.6.2" - jest-mock: "npm:^26.6.2" - jest-regex-util: "npm:^26.0.0" - jest-resolve: "npm:^26.6.2" - jest-snapshot: "npm:^26.6.2" - jest-util: "npm:^26.6.2" - jest-validate: "npm:^26.6.2" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - yargs: "npm:^15.4.1" - bin: - jest-runtime: bin/jest-runtime.js - checksum: 8c0/d0fd139d01b9af87b5546586e8c3907d61e95c07d52fe29d7e247f08830a074f1d35c5417449fcfc5c1e5e210dd5c08c48e4789ca7900586e7624c202388a346 - languageName: node - linkType: hard - -"jest-runtime@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-runtime@npm:29.7.0" - dependencies: - "@jest/environment": "npm:^29.7.0" - "@jest/fake-timers": "npm:^29.7.0" - "@jest/globals": "npm:^29.7.0" - "@jest/source-map": "npm:^29.6.3" - "@jest/test-result": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - cjs-module-lexer: "npm:^1.0.0" - collect-v8-coverage: "npm:^1.0.0" - glob: "npm:^7.1.3" - graceful-fs: "npm:^4.2.9" - jest-haste-map: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-mock: "npm:^29.7.0" - jest-regex-util: "npm:^29.6.3" - jest-resolve: "npm:^29.7.0" - jest-snapshot: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - slash: "npm:^3.0.0" - strip-bom: "npm:^4.0.0" - checksum: 7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 - languageName: node - linkType: hard - -"jest-serializer@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-serializer@npm:26.6.2" - dependencies: - "@types/node": "npm:*" - graceful-fs: "npm:^4.2.4" - checksum: 8c0/1c67aa1acefdc0b244f2629aaef12a56e563a5c5cb817970d2b97bdad5e8aae187b269c8d356c42ff9711436499c4da71ec8400e6280dab110be8cc5300884b0 - languageName: node - linkType: hard - -"jest-snapshot@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-snapshot@npm:26.6.2" - dependencies: - "@babel/types": "npm:^7.0.0" - "@jest/types": "npm:^26.6.2" - "@types/babel__traverse": "npm:^7.0.4" - "@types/prettier": "npm:^2.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^26.6.2" - graceful-fs: "npm:^4.2.4" - jest-diff: "npm:^26.6.2" - jest-get-type: "npm:^26.3.0" - jest-haste-map: "npm:^26.6.2" - jest-matcher-utils: "npm:^26.6.2" - jest-message-util: "npm:^26.6.2" - jest-resolve: "npm:^26.6.2" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^26.6.2" - semver: "npm:^7.3.2" - checksum: 8c0/b7b829e7179411cf9a5718d9cf4214e3ac66c41fa17c2f32b7273d12a5e4e85e30504335c4a673f6537af660531fe7c475d09266d63cf19aae3d346809a9a4a2 - languageName: node - linkType: hard - -"jest-snapshot@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-snapshot@npm:29.7.0" - dependencies: - "@babel/core": "npm:^7.11.6" - "@babel/generator": "npm:^7.7.2" - "@babel/plugin-syntax-jsx": "npm:^7.7.2" - "@babel/plugin-syntax-typescript": "npm:^7.7.2" - "@babel/types": "npm:^7.3.3" - "@jest/expect-utils": "npm:^29.7.0" - "@jest/transform": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - babel-preset-current-node-syntax: "npm:^1.0.0" - chalk: "npm:^4.0.0" - expect: "npm:^29.7.0" - graceful-fs: "npm:^4.2.9" - jest-diff: "npm:^29.7.0" - jest-get-type: "npm:^29.6.3" - jest-matcher-utils: "npm:^29.7.0" - jest-message-util: "npm:^29.7.0" - jest-util: "npm:^29.7.0" - natural-compare: "npm:^1.4.0" - pretty-format: "npm:^29.7.0" - semver: "npm:^7.5.3" - checksum: 6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 - languageName: node - linkType: hard - -"jest-util@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-util@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - graceful-fs: "npm:^4.2.4" - is-ci: "npm:^2.0.0" - micromatch: "npm:^4.0.2" - checksum: 8c0/ab93709840f87bdf478d082f5465467c27a20a422cbe456cc2a56961d8c950ea52511995fb6063f62a113737f3dd714b836a1fbde51abef96642a5975e835a01 - languageName: node - linkType: hard - -"jest-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-util@npm:27.5.1" - dependencies: - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 8c0/0f60cd2a2e09a6646ccd4ff489f1970282c0694724104979e897bd5164f91204726f5408572bf5e759d09e59d5c4e4dc65a643d2b630e06a10402bba07bf2a2e - languageName: node - linkType: hard - -"jest-util@npm:^29.4.1": - version: 29.4.1 - resolution: "jest-util@npm:29.4.1" - dependencies: - "@jest/types": "npm:^29.4.1" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 8c0/71752470960b51dd868b4eaa72b95fd149a4a1930c5ec5e5c3ec9ed31b6eb6d6064cff6768723f7c93879dcde17824e0224948f406ff2af2925635465ff48d03 - languageName: node - linkType: hard - -"jest-util@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-util@npm:29.5.0" - dependencies: - "@jest/types": "npm:^29.5.0" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: 8c0/c7f1dc8ae82cd9614a31e09806499560b4812beb57589b214241dd213d3cc6d24417593aef2caf2d3d9694925438849fec371ff36ca8a7f1be8438fd41e83373 - languageName: node - linkType: hard - -"jest-util@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-util@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - chalk: "npm:^4.0.0" - ci-info: "npm:^3.2.0" - graceful-fs: "npm:^4.2.9" - picomatch: "npm:^2.2.3" - checksum: bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 - languageName: node - linkType: hard - -"jest-validate@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-validate@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - camelcase: "npm:^6.0.0" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^26.3.0" - leven: "npm:^3.1.0" - pretty-format: "npm:^26.6.2" - checksum: 8c0/0c8df164641e797f80011e359553411e097ea495b95b41100be00d6c827bfd854e92ef8c528fe4cac0d113055a5075d1409f2616099ec648dbd6809bb0a29c67 - languageName: node - linkType: hard - -"jest-validate@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-validate@npm:29.7.0" - dependencies: - "@jest/types": "npm:^29.6.3" - camelcase: "npm:^6.2.0" - chalk: "npm:^4.0.0" - jest-get-type: "npm:^29.6.3" - leven: "npm:^3.1.0" - pretty-format: "npm:^29.7.0" - checksum: a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 - languageName: node - linkType: hard - -"jest-watch-typeahead@npm:2.2.2": - version: 2.2.2 - resolution: "jest-watch-typeahead@npm:2.2.2" - dependencies: - ansi-escapes: "npm:^6.0.0" - chalk: "npm:^5.2.0" - jest-regex-util: "npm:^29.0.0" - jest-watcher: "npm:^29.0.0" - slash: "npm:^5.0.0" - string-length: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - peerDependencies: - jest: ^27.0.0 || ^28.0.0 || ^29.0.0 - checksum: 8c0/5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 - languageName: node - linkType: hard - -"jest-watch-typeahead@npm:^0.6.3": - version: 0.6.5 - resolution: "jest-watch-typeahead@npm:0.6.5" - dependencies: - ansi-escapes: "npm:^4.3.1" - chalk: "npm:^4.0.0" - jest-regex-util: "npm:^27.0.0" - jest-watcher: "npm:^27.0.0" - slash: "npm:^3.0.0" - string-length: "npm:^4.0.1" - strip-ansi: "npm:^6.0.0" - peerDependencies: - jest: ^26.0.0 || ^27.0.0 - checksum: 8c0/fd298fcc1581d7c34301b54a8891ba70fdc529adbf98e7ed98c5bdd92e7ac63b01e00341101f8f49c1c2f8cce4c6f677a4be1dad3fb1d0c0303b6e8e25717446 - languageName: node - linkType: hard - -"jest-watcher@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-watcher@npm:26.6.2" - dependencies: - "@jest/test-result": "npm:^26.6.2" - "@jest/types": "npm:^26.6.2" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - jest-util: "npm:^26.6.2" - string-length: "npm:^4.0.1" - checksum: 8c0/3a0caf17f3d586ec7099a576757336e6ba5ac6f2449e66aa1416214b32188970b1fa10f83e1aef58254a30a55a6698cbbb16aa5187c8023516d8bea8833aee12 - languageName: node - linkType: hard - -"jest-watcher@npm:^27.0.0": - version: 27.5.1 - resolution: "jest-watcher@npm:27.5.1" - dependencies: - "@jest/test-result": "npm:^27.5.1" - "@jest/types": "npm:^27.5.1" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - jest-util: "npm:^27.5.1" - string-length: "npm:^4.0.1" - checksum: 8c0/e42f5e38bc4da56bde6ccec4b13b7646460a3d6b567934e0ca96d72c2ce837223ffbb84a2f8428197da4323870c03f00969237f9b40f83a3072111a8cd66cc4b - languageName: node - linkType: hard - -"jest-watcher@npm:^29.0.0": - version: 29.4.1 - resolution: "jest-watcher@npm:29.4.1" - dependencies: - "@jest/test-result": "npm:^29.4.1" - "@jest/types": "npm:^29.4.1" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - jest-util: "npm:^29.4.1" - string-length: "npm:^4.0.1" - checksum: 8c0/f0e5af74fbd17ee415d560b0de289476c33831d75af0ef78430c430e20236f6771feab136839f2dd2fc9f55a6bb62c9412963d3aa6206a9851a1fba2036d99f8 - languageName: node - linkType: hard - -"jest-watcher@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-watcher@npm:29.7.0" - dependencies: - "@jest/test-result": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - "@types/node": "npm:*" - ansi-escapes: "npm:^4.2.1" - chalk: "npm:^4.0.0" - emittery: "npm:^0.13.1" - jest-util: "npm:^29.7.0" - string-length: "npm:^4.0.1" - checksum: ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 - languageName: node - linkType: hard - -"jest-worker@npm:^26.3.0, jest-worker@npm:^26.5.0, jest-worker@npm:^26.6.2": - version: 26.6.2 - resolution: "jest-worker@npm:26.6.2" - dependencies: - "@types/node": "npm:*" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^7.0.0" - checksum: 8c0/07e4dba650381604cda253ab6d5837fe0279c8d68c25884995b45bfe149a7a1e1b5a97f304b4518f257dac2a9ddc1808d57d650649c3ab855e9e60cf824d2970 - languageName: node - linkType: hard - -"jest-worker@npm:^27.4.5": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" - dependencies: - "@types/node": "npm:*" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 8c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b - languageName: node - linkType: hard - -"jest-worker@npm:^29.4.3": - version: 29.5.0 - resolution: "jest-worker@npm:29.5.0" - dependencies: - "@types/node": "npm:*" - jest-util: "npm:^29.5.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 8c0/4191ec3209cb1d838c931d47c7328fec7279eb7a5d40fa86bb3fac4d34cbad835349bc366150712259a274507fd210ddb450733032394d8e0b19640b3d3ac17d - languageName: node - linkType: hard - -"jest-worker@npm:^29.7.0": - version: 29.7.0 - resolution: "jest-worker@npm:29.7.0" - dependencies: - "@types/node": "npm:*" - jest-util: "npm:^29.7.0" - merge-stream: "npm:^2.0.0" - supports-color: "npm:^8.0.0" - checksum: 5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 - languageName: node - linkType: hard - -"jest@npm:29.7.0": - version: 29.7.0 - resolution: "jest@npm:29.7.0" - dependencies: - "@jest/core": "npm:^29.7.0" - "@jest/types": "npm:^29.6.3" - import-local: "npm:^3.0.2" - jest-cli: "npm:^29.7.0" - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - bin: - jest: bin/jest.js - checksum: f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b - languageName: node - linkType: hard - -"jest@npm:^26.4.2": - version: 26.6.3 - resolution: "jest@npm:26.6.3" - dependencies: - "@jest/core": "npm:^26.6.3" - import-local: "npm:^3.0.2" - jest-cli: "npm:^26.6.3" - bin: - jest: bin/jest.js - checksum: 8c0/4469f5c426f5b00855e2264dc4fce5ab16c0fab31d2dc6fc829d769ca7ec84a9c74763f7c1d281d085ad55897927a08df2b4778b0df899a66188ff0722e17d29 - languageName: node - linkType: hard - -"jiti@npm:1.17.1": - version: 1.17.1 - resolution: "jiti@npm:1.17.1" - bin: - jiti: bin/jiti.js - checksum: 8c0/1241a0dec1493867bfc25bb52ed37bbede9bc37f64ef6414dbef0f0059186734633cf25329bdd583237001a094f9c90017ee245ce96a053d0ce95e34df18a17b - languageName: node - linkType: hard - -"jiti@npm:^1.17.1": - version: 1.18.2 - resolution: "jiti@npm:1.18.2" - bin: - jiti: bin/jiti.js - checksum: 8c0/578343e883838a5d6775350925d9e1a647e00132ade9c8cc318c163b692988612472f0af3cd9d92b8d8ca61e623092e86ab89563cbf6394900a5a39962e3c4e8 - languageName: node - linkType: hard - -"jiti@npm:^1.19.1": - version: 1.21.0 - resolution: "jiti@npm:1.21.0" - bin: - jiti: bin/jiti.js - checksum: 7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f - languageName: node - linkType: hard - -"jmespath@npm:0.16.0": - version: 0.16.0 - resolution: "jmespath@npm:0.16.0" - checksum: 8c0/84cdca62c4a3d339701f01cc53decf16581c76ce49e6455119be1c5f6ab09a19e6788372536bd261d348d21cd817981605f8debae67affadba966219a2bac1c5 - languageName: node - linkType: hard - -"jmespath@npm:^0.15.0": - version: 0.15.0 - resolution: "jmespath@npm:0.15.0" - checksum: 8c0/95fe1cabb4a12fc2b443a7aa9e85dca52a87437038276765fc54bfbb651a03f5f739266c0b3520531e7cf67986f716308edad8fadb8fbc26bf82a146f881d2e3 - languageName: node - linkType: hard - -"joycon@npm:^2.2.5": - version: 2.2.5 - resolution: "joycon@npm:2.2.5" - checksum: 8c0/772580534f58bebf6bcee0ec1c998c03055a56b5377f9c53da866d5392d45ddb443a05a964a04335b35147a7d7e6fb9dcd1d9d13ef09780e6bf435bdab9e612c - languageName: node - linkType: hard - -"joycon@npm:^3.0.1": - version: 3.0.1 - resolution: "joycon@npm:3.0.1" - checksum: 8c0/636b55c8cfad54510d694badd1c5b83df7aef3bd90525c3c57ad708e385e44ea7d20c685f247f679c08be39afaf53dcc1f48c0f2c52276720ba21b44045219f5 - languageName: node - linkType: hard - -"js-levenshtein@npm:^1.1.6": - version: 1.1.6 - resolution: "js-levenshtein@npm:1.1.6" - checksum: 8c0/14045735325ea1fd87f434a74b11d8a14380f090f154747e613529c7cff68b5ee607f5230fa40665d5fb6125a3791f4c223f73b9feca754f989b059f5c05864f - languageName: node - linkType: hard - -"js-string-escape@npm:^1.0.1": - version: 1.0.1 - resolution: "js-string-escape@npm:1.0.1" - checksum: 8c0/2c33b9ff1ba6b84681c51ca0997e7d5a1639813c95d5b61cb7ad47e55cc28fa4a0b1935c3d218710d8e6bcee5d0cd8c44755231e3a4e45fc604534d9595a3628 - languageName: node - linkType: hard - -"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed - languageName: node - linkType: hard - -"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": - version: 3.14.1 - resolution: "js-yaml@npm:3.14.1" - dependencies: - argparse: "npm:^1.0.7" - esprima: "npm:^4.0.0" - bin: - js-yaml: bin/js-yaml.js - checksum: 8c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b - languageName: node - linkType: hard - -"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": - version: 4.1.0 - resolution: "js-yaml@npm:4.1.0" - dependencies: - argparse: "npm:^2.0.1" - bin: - js-yaml: bin/js-yaml.js - checksum: 8c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f - languageName: node - linkType: hard - -"jscodeshift@npm:0.15.0": - version: 0.15.0 - resolution: "jscodeshift@npm:0.15.0" - dependencies: - "@babel/core": "npm:^7.13.16" - "@babel/parser": "npm:^7.13.16" - "@babel/plugin-proposal-class-properties": "npm:^7.13.0" - "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8" - "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" - "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8" - "@babel/preset-flow": "npm:^7.13.13" - "@babel/preset-typescript": "npm:^7.13.0" - "@babel/register": "npm:^7.13.16" - babel-core: "npm:^7.0.0-bridge.0" - chalk: "npm:^4.1.2" - flow-parser: "npm:0.*" - graceful-fs: "npm:^4.2.4" - micromatch: "npm:^4.0.4" - neo-async: "npm:^2.5.0" - node-dir: "npm:^0.1.17" - recast: "npm:^0.23.1" - temp: "npm:^0.8.4" - write-file-atomic: "npm:^2.3.0" - peerDependencies: - "@babel/preset-env": ^7.1.6 - peerDependenciesMeta: - "@babel/preset-env": - optional: true - bin: - jscodeshift: bin/jscodeshift.js - checksum: 8c0/bfd2de159fe9aa30993b7d1d89db21c00c3a644d096adfcf8bce8c6be4ed02b357a919e8e1470ffd9dd43a3b1bc80bb33d53b30890354ee9c5d677c87b80f9a2 - languageName: node - linkType: hard - -"jsdom@npm:^16.4.0": - version: 16.6.0 - resolution: "jsdom@npm:16.6.0" - dependencies: - abab: "npm:^2.0.5" - acorn: "npm:^8.2.4" - acorn-globals: "npm:^6.0.0" - cssom: "npm:^0.4.4" - cssstyle: "npm:^2.3.0" - data-urls: "npm:^2.0.0" - decimal.js: "npm:^10.2.1" - domexception: "npm:^2.0.1" - escodegen: "npm:^2.0.0" - form-data: "npm:^3.0.0" - html-encoding-sniffer: "npm:^2.0.1" - http-proxy-agent: "npm:^4.0.1" - https-proxy-agent: "npm:^5.0.0" - is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.0" - parse5: "npm:6.0.1" - saxes: "npm:^5.0.1" - symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.0.0" - w3c-hr-time: "npm:^1.0.2" - w3c-xmlserializer: "npm:^2.0.0" - webidl-conversions: "npm:^6.1.0" - whatwg-encoding: "npm:^1.0.5" - whatwg-mimetype: "npm:^2.3.0" - whatwg-url: "npm:^8.5.0" - ws: "npm:^7.4.5" - xml-name-validator: "npm:^3.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 8c0/10413ac01c8b26b220669a4de21363795bca6747930ca9b3a1f81f64b58f5b8a96bbac2dcaf235501a34e34e5a0d2eb3601bcaee83c208edd104c86443ec73de - languageName: node - linkType: hard - -"jsdom@npm:^20.0.0": - version: 20.0.3 - resolution: "jsdom@npm:20.0.3" - dependencies: - abab: "npm:^2.0.6" - acorn: "npm:^8.8.1" - acorn-globals: "npm:^7.0.0" - cssom: "npm:^0.5.0" - cssstyle: "npm:^2.3.0" - data-urls: "npm:^3.0.2" - decimal.js: "npm:^10.4.2" - domexception: "npm:^4.0.0" - escodegen: "npm:^2.0.0" - form-data: "npm:^4.0.0" - html-encoding-sniffer: "npm:^3.0.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.1" - is-potential-custom-element-name: "npm:^1.0.1" - nwsapi: "npm:^2.2.2" - parse5: "npm:^7.1.1" - saxes: "npm:^6.0.0" - symbol-tree: "npm:^3.2.4" - tough-cookie: "npm:^4.1.2" - w3c-xmlserializer: "npm:^4.0.0" - webidl-conversions: "npm:^7.0.0" - whatwg-encoding: "npm:^2.0.0" - whatwg-mimetype: "npm:^3.0.0" - whatwg-url: "npm:^11.0.0" - ws: "npm:^8.11.0" - xml-name-validator: "npm:^4.0.0" - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 8c0/b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 - languageName: node - linkType: hard - -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" - bin: - jsesc: bin/jsesc - checksum: 8c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 - languageName: node - linkType: hard - -"jsesc@npm:~0.5.0": - version: 0.5.0 - resolution: "jsesc@npm:0.5.0" - bin: - jsesc: bin/jsesc - checksum: 8c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 - languageName: node - linkType: hard - -"json-bigint-patch@npm:0.0.8": - version: 0.0.8 - resolution: "json-bigint-patch@npm:0.0.8" - checksum: f2ee19607c4927d1b0f1fda2f3c3cdba1162d1a7f6a40ae5e3e034363cddd437a0ef48d975e1e572dc514a7396ab2247b443113444004f1e64af47ba298687b9 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.0": - version: 3.0.0 - resolution: "json-buffer@npm:3.0.0" - checksum: 8c0/118c060d84430a8ad8376d0c60250830f350a6381bd56541a1ef257ce7ba82d109d1f71a4c4e92e0be0e7ab7da568fad8f7bf02905910a76e8e0aa338621b944 - languageName: node - linkType: hard - -"json-buffer@npm:3.0.1": - version: 3.0.1 - resolution: "json-buffer@npm:3.0.1" - checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 - languageName: node - linkType: hard - -"json-parse-better-errors@npm:^1.0.1, json-parse-better-errors@npm:^1.0.2": - version: 1.0.2 - resolution: "json-parse-better-errors@npm:1.0.2" - checksum: 8c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb - languageName: node - linkType: hard - -"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": - version: 2.3.1 - resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 8c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 - languageName: node - linkType: hard - -"json-schema-ref-resolver@npm:^1.0.1": - version: 1.0.1 - resolution: "json-schema-ref-resolver@npm:1.0.1" - dependencies: - fast-deep-equal: "npm:^3.1.3" - checksum: aa89d88108c0109ae35b913c89c132fb50c00f3b99fc8a8309b524b9e3a6a77414f19a6a35a1253871462984cbabc74279ebbd9bf103c6629fb7b37c9fb59bcf - languageName: node - linkType: hard - -"json-schema-traverse@npm:^0.4.1": - version: 0.4.1 - resolution: "json-schema-traverse@npm:0.4.1" - checksum: 8c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce - languageName: node - linkType: hard - -"json-schema-traverse@npm:^1.0.0": - version: 1.0.0 - resolution: "json-schema-traverse@npm:1.0.0" - checksum: 8c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 - languageName: node - linkType: hard - -"json-stable-stringify-without-jsonify@npm:^1.0.1": - version: 1.0.1 - resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: 8c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 - languageName: node - linkType: hard - -"json-stable-stringify@npm:^1.0.1": - version: 1.0.2 - resolution: "json-stable-stringify@npm:1.0.2" - dependencies: - jsonify: "npm:^0.0.1" - checksum: 8c0/502d021c3c59c09587faa40d7693d77c00460fd6c68bae95d6e35804909ec8c4aec71b136d3a09df61a7ebf803eb6e820f23ede76b77e74b8b02c76afb2ada8c - languageName: node - linkType: hard - -"json-to-pretty-yaml@npm:^1.2.2": - version: 1.2.2 - resolution: "json-to-pretty-yaml@npm:1.2.2" - dependencies: - remedial: "npm:^1.0.7" - remove-trailing-spaces: "npm:^1.0.6" - checksum: 8c0/d28891860a7ae034873ac8ec5f69f5493106afed9a86295f1642a40b27a48df717c63966439a1dec5b8a4b30e99b86cd1b4ca7d979bb8048ffd7f7c67bfd88a3 - languageName: node - linkType: hard - -"json3@npm:^3.3.3": - version: 3.3.3 - resolution: "json3@npm:3.3.3" - checksum: 8c0/ca6942dbcef852c8fda5a87261b82dfa9135b43777cd05bdfc08d071592bd328e289c78eb15d0c45884d9cfe71a2a20601aaa9be16e98d488b5a2f51ee91f259 - languageName: node - linkType: hard - -"json5@npm:^0.5.0, json5@npm:^0.5.1": - version: 0.5.1 - resolution: "json5@npm:0.5.1" - bin: - json5: lib/cli.js - checksum: 8c0/aca0ab7ccf1883d3fc2ecc16219bc389716a773f774552817deaadb549acc0bb502e317a81946fc0a48f9eb6e0822cf1dc5a097009203f2c94de84c8db02a1f3 - languageName: node - linkType: hard - -"json5@npm:^1.0.1": - version: 1.0.1 - resolution: "json5@npm:1.0.1" - dependencies: - minimist: "npm:^1.2.0" - bin: - json5: lib/cli.js - checksum: 8c0/7f75dd797151680a4e14c4224c1343b32a43272aa6e6333ddec2b0822df4ea116971689b251879a1248592da24f7929902c13f83d7390c3f3d44f18e8e9719f5 - languageName: node - linkType: hard - -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: "npm:^1.2.0" - bin: - json5: lib/cli.js - checksum: 9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f - languageName: node - linkType: hard - -"json5@npm:^2.1.1, json5@npm:^2.2.2, json5@npm:^2.2.3": - version: 2.2.3 - resolution: "json5@npm:2.2.3" - bin: - json5: lib/cli.js - checksum: 8c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c - languageName: node - linkType: hard - -"json5@npm:^2.1.2, json5@npm:^2.1.3, json5@npm:^2.2.0": - version: 2.2.0 - resolution: "json5@npm:2.2.0" - dependencies: - minimist: "npm:^1.2.5" - bin: - json5: lib/cli.js - checksum: 8c0/fbe021f69fa100f0a863e5ab9105ead3971ad5141e7c0dc5134c6148545dae98a69602fb8f9f4dd65af0db7ca00887bf5b35af60be34c10f58fb5fc1f2366a4e - languageName: node - linkType: hard - -"jsonfile@npm:^2.1.0": - version: 2.4.0 - resolution: "jsonfile@npm:2.4.0" - dependencies: - graceful-fs: "npm:^4.1.6" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 8c0/02ad746d9490686519b3369bc9572694076eb982e1b4982c5ad9b91bc3c0ad30d10c866bb26b7a87f0c4025a80222cd2962cb57083b5a6a475a9031eab8c8962 - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: "npm:^4.1.6" - universalify: "npm:^2.0.0" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 8c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 - languageName: node - linkType: hard - -"jsonify@npm:^0.0.1": - version: 0.0.1 - resolution: "jsonify@npm:0.0.1" - checksum: 8c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 - languageName: node - linkType: hard - -"jsonwebtoken@npm:9.0.2": - version: 9.0.2 - resolution: "jsonwebtoken@npm:9.0.2" - dependencies: - jws: "npm:^3.2.2" - lodash.includes: "npm:^4.3.0" - lodash.isboolean: "npm:^3.0.3" - lodash.isinteger: "npm:^4.0.4" - lodash.isnumber: "npm:^3.0.3" - lodash.isplainobject: "npm:^4.0.6" - lodash.isstring: "npm:^4.0.1" - lodash.once: "npm:^4.0.0" - ms: "npm:^2.1.1" - semver: "npm:^7.5.4" - checksum: d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131 - languageName: node - linkType: hard - -"jsonwebtoken@npm:^8.5.1": - version: 8.5.1 - resolution: "jsonwebtoken@npm:8.5.1" - dependencies: - jws: "npm:^3.2.2" - lodash.includes: "npm:^4.3.0" - lodash.isboolean: "npm:^3.0.3" - lodash.isinteger: "npm:^4.0.4" - lodash.isnumber: "npm:^3.0.3" - lodash.isplainobject: "npm:^4.0.6" - lodash.isstring: "npm:^4.0.1" - lodash.once: "npm:^4.0.0" - ms: "npm:^2.1.1" - semver: "npm:^5.6.0" - checksum: 8c0/c5ad937b6fa23a230efa8ed8ca3c0da8ebfdd377bafc3e8432a11b03ef90e733400a00b26c0dfee47db44a2e64b88b154b57e9926a92990f98dd25aaed15006e - languageName: node - linkType: hard - -"jsonwebtoken@npm:^9.0.0": - version: 9.0.0 - resolution: "jsonwebtoken@npm:9.0.0" - dependencies: - jws: "npm:^3.2.2" - lodash: "npm:^4.17.21" - ms: "npm:^2.1.1" - semver: "npm:^7.3.8" - checksum: 8c0/60c30d90d8a69b8e7148306e0c299ac120dbde9c032add48d26df928fe349e952cf4b09f12d7942257681a936e3374e4d49280ab20f8a4578688c7f08d87f9bc - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^2.4.1 || ^3.0.0": - version: 3.2.0 - resolution: "jsx-ast-utils@npm:3.2.0" - dependencies: - array-includes: "npm:^3.1.2" - object.assign: "npm:^4.1.2" - checksum: 8c0/46e3f289c90367ef4f5c2fc748db595408446bdec5449dcc3d1b10c07e5cfe598f131f8b8cc77f0c5c7db09d5b011debd8c9e5cf0c59b47613435e87abbe7225 - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^3.2.1": - version: 3.2.1 - resolution: "jsx-ast-utils@npm:3.2.1" - dependencies: - array-includes: "npm:^3.1.3" - object.assign: "npm:^4.1.2" - checksum: 8c0/9259c93bf4f80a740efcade8e6087f28c839ebf75799c1a886e13f6b84b3b3360aee0576bccb32ce01cf838409cf7e1a8fa6f7bd4dfb301a006c42208243e5ac - languageName: node - linkType: hard - -"jsx-ast-utils@npm:^3.3.5": - version: 3.3.5 - resolution: "jsx-ast-utils@npm:3.3.5" - dependencies: - array-includes: "npm:^3.1.6" - array.prototype.flat: "npm:^1.3.1" - object.assign: "npm:^4.1.4" - object.values: "npm:^1.1.6" - checksum: a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 - languageName: node - linkType: hard - -"junk@npm:^3.1.0": - version: 3.1.0 - resolution: "junk@npm:3.1.0" - checksum: 8c0/820174b9fa9a3af09aeeeeb1022df2481a2b10752ce5f65ac63924a79cb9bba83ea7c288e8d5b448951109742da5ea69a230846f4bf3c17c5c6a1d0603b63db4 - languageName: node - linkType: hard - -"jwa@npm:^1.4.1": - version: 1.4.1 - resolution: "jwa@npm:1.4.1" - dependencies: - buffer-equal-constant-time: "npm:1.0.1" - ecdsa-sig-formatter: "npm:1.0.11" - safe-buffer: "npm:^5.0.1" - checksum: 8c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 - languageName: node - linkType: hard - -"jwks-rsa@npm:^1.8.1": - version: 1.12.3 - resolution: "jwks-rsa@npm:1.12.3" - dependencies: - "@types/express-jwt": "npm:0.0.42" - axios: "npm:^0.21.1" - debug: "npm:^4.1.0" - http-proxy-agent: "npm:^4.0.1" - https-proxy-agent: "npm:^5.0.0" - jsonwebtoken: "npm:^8.5.1" - limiter: "npm:^1.1.5" - lru-memoizer: "npm:^2.1.2" - ms: "npm:^2.1.2" - proxy-from-env: "npm:^1.1.0" - checksum: 8c0/04d00bc297bae613951bf960add2f60b7e7429fb9e0cc19dc773e8862aa63ad40d3b432063541d7b3caf8c48d200decdddfd3b1ee6ebd25cc896dbe8f8bade2d - languageName: node - linkType: hard - -"jws@npm:^3.2.2": - version: 3.2.2 - resolution: "jws@npm:3.2.2" - dependencies: - jwa: "npm:^1.4.1" - safe-buffer: "npm:^5.0.1" - checksum: 8c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff - languageName: node - linkType: hard - -"keyv@npm:^3.0.0": - version: 3.1.0 - resolution: "keyv@npm:3.1.0" - dependencies: - json-buffer: "npm:3.0.0" - checksum: 8c0/6ad784361b4c0213333a8c5bc0bcc59cf46cb7cbbe21fb2f1539ffcc8fe18b8f1562ff913b40552278fdea5f152a15996dfa61ce24ce1a22222560c650be4a1b - languageName: node - linkType: hard - -"keyv@npm:^4.0.0": - version: 4.5.4 - resolution: "keyv@npm:4.5.4" - dependencies: - json-buffer: "npm:3.0.1" - checksum: aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e - languageName: node - linkType: hard - -"kill-port@npm:1.6.1, kill-port@npm:^1.6.1": - version: 1.6.1 - resolution: "kill-port@npm:1.6.1" - dependencies: - get-them-args: "npm:1.3.2" - shell-exec: "npm:1.0.2" - bin: - kill-port: cli.js - checksum: 8c0/f9d51a43f8349f162f4f004bd6e68e54d615f9a8f994c780b09771962becb4458cd7ba3a043948ecb18405a7e0d9c31d7264924d0b7f6e24a6f2a01cc474de21 - languageName: node - linkType: hard - -"killable@npm:^1.0.1": - version: 1.0.1 - resolution: "killable@npm:1.0.1" - checksum: 8c0/1de0ffe2dd603920685d1b2027136051f095ab42be03e354a43713664e99617cf32cbdb61fc03742c329386d7cf9450edbf4593e50daeaae381e20627b477cd6 - languageName: node - linkType: hard - -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: "npm:^1.1.5" - checksum: 8c0/7e34bc29d4b02c997f92f080de34ebb92033a96736bbb0bb2410e033a7e5ae6571f1fa37b2d7710018f95361473b816c604234197f4f203f9cf149d8ef1574d9 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: "npm:^1.1.5" - checksum: 8c0/d6c44c75ee36898142dfc7106afbd50593216c37f96acb81a7ab33ca1a6938ce97d5692b8fc8fccd035f83811a9d97749d68771116441a48eedd0b68e2973165 - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: 8c0/fe85b7a2ed4b4d5a12e16e01d00d5c336e1760842fe0da38283605b9880c984288935e87b13138909e4d23d2d197a1d492f7393c6638d2c0fab8a900c4fb0392 - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": - version: 6.0.3 - resolution: "kind-of@npm:6.0.3" - checksum: 8c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 - languageName: node - linkType: hard - -"klaw-sync@npm:6.0.0": - version: 6.0.0 - resolution: "klaw-sync@npm:6.0.0" - dependencies: - graceful-fs: "npm:^4.1.11" - checksum: 8c0/00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a - languageName: node - linkType: hard - -"klaw@npm:^1.0.0": - version: 1.3.1 - resolution: "klaw@npm:1.3.1" - dependencies: - graceful-fs: "npm:^4.1.9" - dependenciesMeta: - graceful-fs: - optional: true - checksum: 8c0/da994768b02b3843cc994c99bad3cf1c8c67716beb4dd2834133c919e9e9ee788669fbe27d88ab0ad9a3991349c28280afccbde01c2318229b662dd7a05e4728 - languageName: node - linkType: hard - -"kleur@npm:^3.0.3": - version: 3.0.3 - resolution: "kleur@npm:3.0.3" - checksum: 8c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b - languageName: node - linkType: hard - -"kleur@npm:^4.1.4": - version: 4.1.4 - resolution: "kleur@npm:4.1.4" - checksum: 8c0/c70aaa99a6797b0a73a6f8a84c3912dbf49c95acf78cb661e30677999914843d0f5deedb0910458259c43c5fd98ea3195777988a8291c058874e29344dd1ea0c - languageName: node - linkType: hard - -"klona@npm:^2.0.4": - version: 2.0.5 - resolution: "klona@npm:2.0.5" - checksum: 8c0/5b752c11ca8e2996612386699f52cc5aed802aa4116663d26239ac0b054fae25191dacb95587ecf1a167b039daa9fc3fa2da17dfd5d0821f3037de3821d9a9e5 - languageName: node - linkType: hard - -"language-subtag-registry@npm:^0.3.20": - version: 0.3.22 - resolution: "language-subtag-registry@npm:0.3.22" - checksum: d1e09971260a7cd3b9fdeb190d33af0b6e99c8697013537d9aaa15f7856d9d83aee128ba8078e219df0a7cf4b8dd18d1a0c188f6543b500d92a2689d2d114b70 - languageName: node - linkType: hard - -"language-subtag-registry@npm:~0.3.2": - version: 0.3.21 - resolution: "language-subtag-registry@npm:0.3.21" - checksum: 8c0/349ff5b6fbba6dcf345e8edcdce3c7a47624fed4b8f72b9215686b8de7c65067a1c44a45bdbc88282bff5396be63333e3ec67a42ffaa22027ffe6b079d3500e4 - languageName: node - linkType: hard - -"language-tags@npm:^1.0.5": - version: 1.0.5 - resolution: "language-tags@npm:1.0.5" - dependencies: - language-subtag-registry: "npm:~0.3.2" - checksum: 8c0/04215e821af9a8f1bc6c99ab5aa0a316c3fe1912ca3337eb28596316064bddd8edd22f2883d866069ebdf01b2002e504a760a336b2c728b6d30514e86744f76c - languageName: node - linkType: hard - -"language-tags@npm:^1.0.9": - version: 1.0.9 - resolution: "language-tags@npm:1.0.9" - dependencies: - language-subtag-registry: "npm:^0.3.20" - checksum: 9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff - languageName: node - linkType: hard - -"latest-version@npm:5.1.0, latest-version@npm:^5.1.0": - version: 5.1.0 - resolution: "latest-version@npm:5.1.0" - dependencies: - package-json: "npm:^6.3.0" - checksum: 8c0/6219631d8651467c54c58ef1b5d5c5c53e146f5ae2b0ecbb78b202da3eaad55b05b043db2d2d6f1d4230ee071b2ae8c2f85089e01377e4338bad97fa76a963b7 - languageName: node - linkType: hard - -"launch-editor@npm:^2.6.0": - version: 2.6.0 - resolution: "launch-editor@npm:2.6.0" - dependencies: - picocolors: "npm:^1.0.0" - shell-quote: "npm:^1.7.3" - checksum: 8c0/4802b9569d8a1d477f8279a994094b415d89eb39dadbc568193bc366d64ac13827c8860539ee336fa6135a06596a9b8c8265cebac35c3fa36a2214d0eea38890 - languageName: node - linkType: hard - -"lazy-get-decorator@npm:2.2.1": - version: 2.2.1 - resolution: "lazy-get-decorator@npm:2.2.1" - checksum: 8c0/58d6e3d82293a70c6d14d5648ff6d9acd8d3d67ab0a3205b5e6f24aef55094737a71ee3d4ea7950e57be3eadaee91faee960ee3fa14daede119ea93ebf625396 - languageName: node - linkType: hard - -"lazy-get-decorator@npm:^2.2.0": - version: 2.2.0 - resolution: "lazy-get-decorator@npm:2.2.0" - checksum: 8c0/082fd22d116801d3648a315778293a8cb2111c8b5ca43a3df785650a35dff9333f1e8deba2bbbfc502c1e28b261138ffd7fabda4b75a63dd3a4d0895e5055f23 - languageName: node - linkType: hard - -"lazy-universal-dotenv@npm:^3.0.1": - version: 3.0.1 - resolution: "lazy-universal-dotenv@npm:3.0.1" - dependencies: - "@babel/runtime": "npm:^7.5.0" - app-root-dir: "npm:^1.0.2" - core-js: "npm:^3.0.4" - dotenv: "npm:^8.0.0" - dotenv-expand: "npm:^5.1.0" - checksum: 8c0/d7cf054661bcafe63c61978856f9cfacc2fc694430939681da9729016082fc9c07e4c472e7755452b518234ada38925ec5ad582b0c1f9aae7a43c24f105fdba9 - languageName: node - linkType: hard - -"lazystream@npm:^1.0.0": - version: 1.0.0 - resolution: "lazystream@npm:1.0.0" - dependencies: - readable-stream: "npm:^2.0.5" - checksum: 8c0/920d4467df293f0235c78354d7cbfe48e4fa5fa86d28e2259b910817d3531cc6edb24c603c0a7d52a3187e70bc795315cadf3ee724f625df320e9c06db25b963 - languageName: node - linkType: hard - -"leac@npm:^0.6.0": - version: 0.6.0 - resolution: "leac@npm:0.6.0" - checksum: 5257781e10791ef8462eb1cbe5e48e3cda7692486f2a775265d6f5216cc088960c62f138163b8df0dcf2119d18673bfe7b050d6b41543d92a7b7ac90e4eb1e8b - languageName: node - linkType: hard - -"leven@npm:2.1.0": - version: 2.1.0 - resolution: "leven@npm:2.1.0" - checksum: 8c0/e685243900aad7e854212001c9b7fe6d0806081e184d5077a561a91d07425852e8b7d1edf76b948f4be520b64e0015960be3a5f3e9acb0bec75a0e4134b422df - languageName: node - linkType: hard - -"leven@npm:^3.1.0": - version: 3.1.0 - resolution: "leven@npm:3.1.0" - checksum: 8c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df - languageName: node - linkType: hard - -"levn@npm:^0.4.1": - version: 0.4.1 - resolution: "levn@npm:0.4.1" - dependencies: - prelude-ls: "npm:^1.2.1" - type-check: "npm:~0.4.0" - checksum: 8c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e - languageName: node - linkType: hard - -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - checksum: 8c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 - languageName: node - linkType: hard - -"libbase64@npm:1.2.1": - version: 1.2.1 - resolution: "libbase64@npm:1.2.1" - checksum: 908db9dc88cbcd9e1b9355c78b9fefde5034d933a50e823bbbb6008a56908de1e5183e25bf648e9e7fe907f53e10e11676d5ac89fd624a300c46a705556182a5 - languageName: node - linkType: hard - -"libmime@npm:5.2.0": - version: 5.2.0 - resolution: "libmime@npm:5.2.0" - dependencies: - encoding-japanese: "npm:2.0.0" - iconv-lite: "npm:0.6.3" - libbase64: "npm:1.2.1" - libqp: "npm:2.0.1" - checksum: 22a75d7aad8f01bed7d9b32270a40a32c4d4e44070edda1067ea5229df99a09f34aedf3481693394aa998fa8375b6c90d1c651b491655692cb313561c5a48762 - languageName: node - linkType: hard - -"libmime@npm:5.2.1": - version: 5.2.1 - resolution: "libmime@npm:5.2.1" - dependencies: - encoding-japanese: "npm:2.0.0" - iconv-lite: "npm:0.6.3" - libbase64: "npm:1.2.1" - libqp: "npm:2.0.1" - checksum: cf91c78a05824f160e45b36850d52eee9e18073bfd4561ace3b3af8e52a8d551eccc0dcef428505e44d1f2146c16cec84e91e17d9489244451c38572862a857a - languageName: node - linkType: hard - -"libqp@npm:2.0.1": - version: 2.0.1 - resolution: "libqp@npm:2.0.1" - checksum: c52e51c70180fbf0b000036de33ed976da1f8355fd63feffbbf5a9653a816e9169917b1ce28b289a5006b28e44b2d84d234fdedbdfefc0de4802867aa03537df - languageName: node - linkType: hard - -"light-my-request@npm:^5.11.0": - version: 5.11.0 - resolution: "light-my-request@npm:5.11.0" - dependencies: - cookie: "npm:^0.5.0" - process-warning: "npm:^2.0.0" - set-cookie-parser: "npm:^2.4.1" - checksum: ad5512b5216f2095409b54daf901f714f76004e4c8acdaa1ec3aa2ffde7ddf11ac249f02a87344d766bbad59eb2732acfe3ee5bb7e8ad5fc71057ef0d4d3be25 - languageName: node - linkType: hard - -"lilconfig@npm:^2.1.0": - version: 2.1.0 - resolution: "lilconfig@npm:2.1.0" - checksum: 8c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 - languageName: node - linkType: hard - -"lilconfig@npm:^3.0.0": - version: 3.0.0 - resolution: "lilconfig@npm:3.0.0" - checksum: 7f5ee7a658dc016cacf146815e8d88b06f06f4402823b8b0934e305a57a197f55ccc9c5cd4fb5ea1b2b821c8ccaf2d54abd59602a4931af06eabda332388d3e6 - languageName: node - linkType: hard - -"limiter@npm:^1.1.5": - version: 1.1.5 - resolution: "limiter@npm:1.1.5" - checksum: 8c0/ebe2b20a820d1f67b8e1724051246434c419b2da041a7e9cd943f6daf113b8d17a52a1bd88fb79be5b624c10283ecb737f50edb5c1c88c71f4cd367108c97300 - languageName: node - linkType: hard - -"line-column@npm:1.0.2, line-column@npm:^1.0.2": - version: 1.0.2 - resolution: "line-column@npm:1.0.2" - dependencies: - isarray: "npm:^1.0.0" - isobject: "npm:^2.0.0" - checksum: 8c0/75aa918a9791362a3369c7222689350dc6df5b040314525ba79c3682f1386e13a3ceddd6b2584b8cb5c3ab3a5b3c50c940a182772dbb6361303bf6ef65fc2d64 - languageName: node - linkType: hard - -"lines-and-columns@npm:^1.1.6": - version: 1.1.6 - resolution: "lines-and-columns@npm:1.1.6" - checksum: 8c0/0dd62f0332c4572f07bf51af5829428989d5f710150ba7ae806524409282f1adbe0c33698137ce1ee3c419779e6ac3aa8974c7a4be7e2d040234e729229cdb21 - languageName: node - linkType: hard - -"linkify-it@npm:4.0.1": - version: 4.0.1 - resolution: "linkify-it@npm:4.0.1" - dependencies: - uc.micro: "npm:^1.0.1" - checksum: f1949ee2c7c2979c4f80c8c08f507d813f50775ebc5adfdb7ee662f28e0ee53dbd4a329d5231be67414405fc60d4e99b37536d6949702d311fe509a6bcbcf4a6 - languageName: node - linkType: hard - -"linkify-it@npm:^3.0.1": - version: 3.0.3 - resolution: "linkify-it@npm:3.0.3" - dependencies: - uc.micro: "npm:^1.0.1" - checksum: 468cb4954f85cdfc16e169db89a42d65287e3f121a9448b29c3c00d64c6f5a8f4367bea3978ba9109a0e3a10b19d50632b983639f91b9be9f20d1f63a5ff5bc1 - languageName: node - linkType: hard - -"listr-silent-renderer@npm:^1.1.1": - version: 1.1.1 - resolution: "listr-silent-renderer@npm:1.1.1" - checksum: 8c0/a13e08ebf863516a757bce4887f05290070772113d89095e9f51a07cf0b11a43a7563a67ff3b287c752c08f6d781fdb2123b02957534e3e0675fb564f2a42e1b - languageName: node - linkType: hard - -"listr-update-renderer@npm:^0.5.0": - version: 0.5.0 - resolution: "listr-update-renderer@npm:0.5.0" - dependencies: - chalk: "npm:^1.1.3" - cli-truncate: "npm:^0.2.1" - elegant-spinner: "npm:^1.0.1" - figures: "npm:^1.7.0" - indent-string: "npm:^3.0.0" - log-symbols: "npm:^1.0.2" - log-update: "npm:^2.3.0" - strip-ansi: "npm:^3.0.1" - peerDependencies: - listr: ^0.14.2 - checksum: 8c0/8ade44bf3dc6146c8e0178000619439e8889792c4689b66be6ce82bd459f5fe462ecb34b05147fb206a8ad60e6d4e6f34c9f48038e18366f867fd972688b8edc - languageName: node - linkType: hard - -"listr-verbose-renderer@npm:^0.5.0": - version: 0.5.0 - resolution: "listr-verbose-renderer@npm:0.5.0" - dependencies: - chalk: "npm:^2.4.1" - cli-cursor: "npm:^2.1.0" - date-fns: "npm:^1.27.2" - figures: "npm:^2.0.0" - checksum: 8c0/041cd1e82da7054f27ae0a914e98b40d15faf9f950ef850578fc6241d3fff3c2d7158a4f6226006e566b4c47bf445be2d254dd1ce5c16569a3a5dcd575bec656 - languageName: node - linkType: hard - -"listr-verbose-renderer@npm:^0.6.0": - version: 0.6.0 - resolution: "listr-verbose-renderer@npm:0.6.0" - dependencies: - chalk: "npm:^2.4.1" - cli-cursor: "npm:^2.1.0" - date-fns: "npm:^2.0.1" - figures: "npm:^2.0.0" - checksum: 8c0/3e81779c84e031ac0c4f637521185e83c687dcdd5fcaedc5e928e9dfe2e1372fea9f9c8c311a5b0c0db67eba5df570a3b4131ca63b02027f9635577cca61c81d - languageName: node - linkType: hard - -"listr2@npm:6.6.1": - version: 6.6.1 - resolution: "listr2@npm:6.6.1" - dependencies: - cli-truncate: "npm:^3.1.0" - colorette: "npm:^2.0.20" - eventemitter3: "npm:^5.0.1" - log-update: "npm:^5.0.1" - rfdc: "npm:^1.3.0" - wrap-ansi: "npm:^8.1.0" - peerDependencies: - enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - checksum: 8c0/2abfcd4346b8208e8d406cfe7a058cd10e3238f60de1ee53fa108a507b45b853ceb87e0d1d4ff229bbf6dd6e896262352e0c7a8895b8511cd55fe94304d3921e - languageName: node - linkType: hard - -"listr2@npm:^4.0.5": - version: 4.0.5 - resolution: "listr2@npm:4.0.5" - dependencies: - cli-truncate: "npm:^2.1.0" - colorette: "npm:^2.0.16" - log-update: "npm:^4.0.0" - p-map: "npm:^4.0.0" - rfdc: "npm:^1.3.0" - rxjs: "npm:^7.5.5" - through: "npm:^2.3.8" - wrap-ansi: "npm:^7.0.0" - peerDependencies: - enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - checksum: 8c0/0e64dc5e66fbd4361f6b35c49489ed842a1d7de30cf2b5c06bf4569669449288698b8ea93f7842aaf3c510963a1e554bca31376b9054d1521445d1ce4c917ea1 - languageName: node - linkType: hard - -"listr@npm:^0.14.3": - version: 0.14.3 - resolution: "listr@npm:0.14.3" - dependencies: - "@samverschueren/stream-to-observable": "npm:^0.3.0" - is-observable: "npm:^1.1.0" - is-promise: "npm:^2.1.0" - is-stream: "npm:^1.1.0" - listr-silent-renderer: "npm:^1.1.1" - listr-update-renderer: "npm:^0.5.0" - listr-verbose-renderer: "npm:^0.5.0" - p-map: "npm:^2.0.0" - rxjs: "npm:^6.3.3" - checksum: 8c0/753d518218c423f46bee8eeacccecadfd2e414ba9c0f602e7f85fe3f6fa18404dfab0812433aeda4683ee2548358488f597ac1a3d321196baec5d3149b200b10 - languageName: node - linkType: hard - -"loader-runner@npm:^2.4.0": - version: 2.4.0 - resolution: "loader-runner@npm:2.4.0" - checksum: 8c0/1f723bd8318453c2d073d7befbf891ba6d2a02f22622688bf7d22e7ba527a0f9476c7fdfedc6bfa2b55c0389d9f406f3a5239ed1b33c9088d77cfed085086a1e - languageName: node - linkType: hard - -"loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: 8c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 - languageName: node - linkType: hard - -"loader-utils@npm:1.1.0": - version: 1.1.0 - resolution: "loader-utils@npm:1.1.0" - dependencies: - big.js: "npm:^3.1.3" - emojis-list: "npm:^2.0.0" - json5: "npm:^0.5.0" - checksum: 8c0/6743bf79fa7691388bc9611128b94b7e43341bbe2dcc0e52dd942477b7c3213ae739af0d42c21f9ea5cb0f818ac33db4920944de74ccf30131bfd97379e9e28a - languageName: node - linkType: hard - -"loader-utils@npm:2.0.0, loader-utils@npm:^2.0.0": - version: 2.0.0 - resolution: "loader-utils@npm:2.0.0" - dependencies: - big.js: "npm:^5.2.2" - emojis-list: "npm:^3.0.0" - json5: "npm:^2.1.2" - checksum: 8c0/206eda981e486a28536b8a142074e0e927aac4c1f61565b2be402f0434f783a6bb0cef241fabec32ce541f28633a85e0beb68abd8fe9227b76b66d717de40550 - languageName: node - linkType: hard - -"loader-utils@npm:^1.2.3, loader-utils@npm:^1.4.0": - version: 1.4.0 - resolution: "loader-utils@npm:1.4.0" - dependencies: - big.js: "npm:^5.2.2" - emojis-list: "npm:^3.0.0" - json5: "npm:^1.0.1" - checksum: 8c0/b3f383612c23c0adf535d61709fb3eaf864afa54dae45608e3831156b89b4b05a0a4ddc6db7d742071babe872750ba3f4f9ce89326d94f6e096dbed978fa424e - languageName: node - linkType: hard - -"loader-utils@npm:^2.0.4": - version: 2.0.4 - resolution: "loader-utils@npm:2.0.4" - dependencies: - big.js: "npm:^5.2.2" - emojis-list: "npm:^3.0.0" - json5: "npm:^2.1.2" - checksum: 8c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 - languageName: node - linkType: hard - -"locate-path@npm:^2.0.0": - version: 2.0.0 - resolution: "locate-path@npm:2.0.0" - dependencies: - p-locate: "npm:^2.0.0" - path-exists: "npm:^3.0.0" - checksum: 8c0/24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 - languageName: node - linkType: hard - -"locate-path@npm:^3.0.0": - version: 3.0.0 - resolution: "locate-path@npm:3.0.0" - dependencies: - p-locate: "npm:^3.0.0" - path-exists: "npm:^3.0.0" - checksum: 8c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b - languageName: node - linkType: hard - -"locate-path@npm:^5.0.0": - version: 5.0.0 - resolution: "locate-path@npm:5.0.0" - dependencies: - p-locate: "npm:^4.1.0" - checksum: 8c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 - languageName: node - linkType: hard - -"locate-path@npm:^6.0.0": - version: 6.0.0 - resolution: "locate-path@npm:6.0.0" - dependencies: - p-locate: "npm:^5.0.0" - checksum: 8c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 - languageName: node - linkType: hard - -"locate-path@npm:^7.1.0": - version: 7.2.0 - resolution: "locate-path@npm:7.2.0" - dependencies: - p-locate: "npm:^6.0.0" - checksum: 8c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 - languageName: node - linkType: hard - -"lodash-decorators@npm:6.0.1, lodash-decorators@npm:^6.0.1": - version: 6.0.1 - resolution: "lodash-decorators@npm:6.0.1" - dependencies: - tslib: "npm:^1.9.2" - peerDependencies: - lodash: 4.x - checksum: 8c0/02881ae6e595245badbc29f4b4bc57f6fbab45ed5d7117c269b9a3c5efa57726670028074c989bd8b0a587211fa6d9447ac6124fb9e887c0571b307e1746bac8 - languageName: node - linkType: hard - -"lodash.chunk@npm:^4.2.0": - version: 4.2.0 - resolution: "lodash.chunk@npm:4.2.0" - checksum: 8c0/f9f99969561ad2f62af1f9a96c5bd0af776f000292b0d8db3126c28eb3b32e210d7c31b49c18d0d7901869bd769057046dc134b60cfa0c2c4ce017823a26bb23 - languageName: node - linkType: hard - -"lodash.clonedeep@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.clonedeep@npm:4.5.0" - checksum: 8c0/2caf0e4808f319d761d2939ee0642fa6867a4bbf2cfce43276698828380756b99d4c4fa226d881655e6ac298dd453fe12a5ec8ba49861777759494c534936985 - languageName: node - linkType: hard - -"lodash.debounce@npm:^4.0.8": - version: 4.0.8 - resolution: "lodash.debounce@npm:4.0.8" - checksum: 8c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 - languageName: node - linkType: hard - -"lodash.defaults@npm:^4.2.0": - version: 4.2.0 - resolution: "lodash.defaults@npm:4.2.0" - checksum: 8c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 - languageName: node - linkType: hard - -"lodash.difference@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.difference@npm:4.5.0" - checksum: 8c0/5d52859218a7df427547ff1fadbc397879709fe6c788b037df7d6d92b676122c92bd35ec85d364edb596b65dfc6573132f420c9b4ee22bb6b9600cd454c90637 - languageName: node - linkType: hard - -"lodash.escape@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.escape@npm:4.0.1" - checksum: 8c0/90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b - languageName: node - linkType: hard - -"lodash.escaperegexp@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.escaperegexp@npm:4.1.2" - checksum: 8c0/484ad4067fa9119bb0f7c19a36ab143d0173a081314993fe977bd00cf2a3c6a487ce417a10f6bac598d968364f992153315f0dbe25c9e38e3eb7581dd333e087 - languageName: node - linkType: hard - -"lodash.flatten@npm:^4.4.0": - version: 4.4.0 - resolution: "lodash.flatten@npm:4.4.0" - checksum: 8c0/97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a - languageName: node - linkType: hard - -"lodash.includes@npm:^4.3.0": - version: 4.3.0 - resolution: "lodash.includes@npm:4.3.0" - checksum: 8c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b - languageName: node - linkType: hard - -"lodash.invokemap@npm:^4.6.0": - version: 4.6.0 - resolution: "lodash.invokemap@npm:4.6.0" - checksum: 2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 - languageName: node - linkType: hard - -"lodash.isarguments@npm:^3.1.0": - version: 3.1.0 - resolution: "lodash.isarguments@npm:3.1.0" - checksum: 8c0/5e8f95ba10975900a3920fb039a3f89a5a79359a1b5565e4e5b4310ed6ebe64011e31d402e34f577eca983a1fc01ff86c926e3cbe602e1ddfc858fdd353e62d8 - languageName: node - linkType: hard - -"lodash.isboolean@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isboolean@npm:3.0.3" - checksum: 8c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 - languageName: node - linkType: hard - -"lodash.isequal@npm:^4.0.0, lodash.isequal@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.isequal@npm:4.5.0" - checksum: 8c0/dfdb2356db19631a4b445d5f37868a095e2402292d59539a987f134a8778c62a2810c2452d11ae9e6dcac71fc9de40a6fedcb20e2952a15b431ad8b29e50e28f - languageName: node - linkType: hard - -"lodash.isinteger@npm:^4.0.4": - version: 4.0.4 - resolution: "lodash.isinteger@npm:4.0.4" - checksum: 8c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 - languageName: node - linkType: hard - -"lodash.isnumber@npm:^3.0.3": - version: 3.0.3 - resolution: "lodash.isnumber@npm:3.0.3" - checksum: 8c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d - languageName: node - linkType: hard - -"lodash.isplainobject@npm:^4.0.6": - version: 4.0.6 - resolution: "lodash.isplainobject@npm:4.0.6" - checksum: 8c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb - languageName: node - linkType: hard - -"lodash.isstring@npm:^4.0.1": - version: 4.0.1 - resolution: "lodash.isstring@npm:4.0.1" - checksum: 8c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 - languageName: node - linkType: hard - -"lodash.memoize@npm:^4.1.2": - version: 4.1.2 - resolution: "lodash.memoize@npm:4.1.2" - checksum: 8c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 - languageName: node - linkType: hard - -"lodash.merge@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.merge@npm:4.6.2" - checksum: 8c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 - languageName: node - linkType: hard - -"lodash.mergewith@npm:^4.6.2": - version: 4.6.2 - resolution: "lodash.mergewith@npm:4.6.2" - checksum: 8c0/4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5 - languageName: node - linkType: hard - -"lodash.omitby@npm:^4.6.0": - version: 4.6.0 - resolution: "lodash.omitby@npm:4.6.0" - checksum: 8c0/4608b1d8c4063b63349a3462852465fbe74781d737fbb26a0a7f00b0e65f6ccbc13fa490a38f9380103d93fc398e3873983038efadfafc67ccafbb25d9bc7bf4 - languageName: node - linkType: hard - -"lodash.once@npm:^4.0.0": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: 8c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 - languageName: node - linkType: hard - -"lodash.pullall@npm:^4.2.0": - version: 4.2.0 - resolution: "lodash.pullall@npm:4.2.0" - checksum: b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c - languageName: node - linkType: hard - -"lodash.sortby@npm:^4.7.0": - version: 4.7.0 - resolution: "lodash.sortby@npm:4.7.0" - checksum: 8c0/fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 - languageName: node - linkType: hard - -"lodash.truncate@npm:^4.4.2": - version: 4.4.2 - resolution: "lodash.truncate@npm:4.4.2" - checksum: 8c0/4e870d54e8a6c86c8687e057cec4069d2e941446ccab7f40b4d9555fa5872d917d0b6aa73bece7765500a3123f1723bcdba9ae881b679ef120bba9e1a0b0ed70 - languageName: node - linkType: hard - -"lodash.union@npm:^4.6.0": - version: 4.6.0 - resolution: "lodash.union@npm:4.6.0" - checksum: 8c0/6da7f72d1facd472f6090b49eefff984c9f9179e13172039c0debca6851d21d37d83c7ad5c43af23bd220f184cd80e6897e8e3206509fae491f9068b02ae6319 - languageName: node - linkType: hard - -"lodash.uniq@npm:4.5.0, lodash.uniq@npm:^4.5.0": - version: 4.5.0 - resolution: "lodash.uniq@npm:4.5.0" - checksum: 8c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e - languageName: node - linkType: hard - -"lodash.uniqby@npm:^4.7.0": - version: 4.7.0 - resolution: "lodash.uniqby@npm:4.7.0" - checksum: c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 - languageName: node - linkType: hard - -"lodash@npm:4.17.21, lodash@npm:^4.0.0, lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.7.0, lodash@npm:~4.17.0": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: 8c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c - languageName: node - linkType: hard - -"log-symbols@npm:^1.0.2": - version: 1.0.2 - resolution: "log-symbols@npm:1.0.2" - dependencies: - chalk: "npm:^1.0.0" - checksum: 8c0/c64e1fe41d0d043840f8b592d043b8607a836b846506f525a53d99d578561f02f97b2cba1d2b3c30bae5311d64b308d5a392a9930d252b906a9042fc2877da7a - languageName: node - linkType: hard - -"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: "npm:^4.1.0" - is-unicode-supported: "npm:^0.1.0" - checksum: 8c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 - languageName: node - linkType: hard - -"log-update@npm:^2.3.0": - version: 2.3.0 - resolution: "log-update@npm:2.3.0" - dependencies: - ansi-escapes: "npm:^3.0.0" - cli-cursor: "npm:^2.0.0" - wrap-ansi: "npm:^3.0.1" - checksum: 8c0/9bf21b138801ab4770a2bfa735161cf005b869360eaf5003a84ba64ddc5f5c3ce7217f4f1fa79d9c1f510d792213b2c9800327228e94df05859d19b716215d90 - languageName: node - linkType: hard - -"log-update@npm:^4.0.0": - version: 4.0.0 - resolution: "log-update@npm:4.0.0" - dependencies: - ansi-escapes: "npm:^4.3.0" - cli-cursor: "npm:^3.1.0" - slice-ansi: "npm:^4.0.0" - wrap-ansi: "npm:^6.2.0" - checksum: 8c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 - languageName: node - linkType: hard - -"log-update@npm:^5.0.1": - version: 5.0.1 - resolution: "log-update@npm:5.0.1" - dependencies: - ansi-escapes: "npm:^5.0.0" - cli-cursor: "npm:^4.0.0" - slice-ansi: "npm:^5.0.0" - strip-ansi: "npm:^7.0.1" - wrap-ansi: "npm:^8.0.1" - checksum: 8c0/1050ea2027e80f32e132aace909987cb00c2719368c78b82ffca681a5b3f4020eeb5f4b4e310c47c35c6c36aff258c1d1bc51485ac44d6fdac9eb0a4275c539f - languageName: node - linkType: hard - -"logical-not@npm:^1.0.1": - version: 1.0.7 - resolution: "logical-not@npm:1.0.7" - checksum: 8c0/e17191cc240e0fc6662962c90485e5a038e3a10cd436b040e33114e1bfc6d0d46eba56e6b4b215a50c9ef6c89507aa5bf03e78bc25ea5210ba78bde872e8fc4d - languageName: node - linkType: hard - -"loglevel@npm:^1.6.7": - version: 1.7.1 - resolution: "loglevel@npm:1.7.1" - checksum: 8c0/14b481b7f5a3e2405f2c54c7a5914ba0e65c6cbc961dc90dc8ec67e1cf0ce549330ff5ab9024e52f232f8f2ca78ef27286f72c38f495ba8ab281aff18763b53c - languageName: node - linkType: hard - -"loglevel@npm:^1.6.8": - version: 1.8.0 - resolution: "loglevel@npm:1.8.0" - checksum: 8c0/e67645b38062e73ef72b37664f0cd43e9deea2e9e4a161d67998578f5b758c47740ec976e9dca7d2d05b23414df8004ded8955da50b6ad1dc9628739f645e905 - languageName: node - linkType: hard - -"long@npm:^4.0.0": - version: 4.0.0 - resolution: "long@npm:4.0.0" - checksum: 8c0/50a6417d15b06104dbe4e3d4a667c39b137f130a9108ea8752b352a4cfae047531a3ac351c181792f3f8768fe17cca6b0f406674a541a86fb638aaac560d83ed - languageName: node - linkType: hard - -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": - version: 1.4.0 - resolution: "loose-envify@npm:1.4.0" - dependencies: - js-tokens: "npm:^3.0.0 || ^4.0.0" - bin: - loose-envify: cli.js - checksum: 8c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e - languageName: node - linkType: hard - -"lower-case-first@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case-first@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/22253389fa0693ec1ba09b9394be3a8228304bf21d074703db2eef97c16cda9c66462d88f9b91d4ad0186493d23cad99c63d38ebc13f9a808bc83aad539ff404 - languageName: node - linkType: hard - -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b - languageName: node - linkType: hard - -"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": - version: 1.0.1 - resolution: "lowercase-keys@npm:1.0.1" - checksum: 8c0/56776a8e1ef1aca98ecf6c19b30352ae1cf257b65b8ac858b7d8a0e8b348774d12a9b41aa7f59bfea51bff44bc7a198ab63ba4406bfba60dba008799618bef66 - languageName: node - linkType: hard - -"lowercase-keys@npm:^2.0.0": - version: 2.0.0 - resolution: "lowercase-keys@npm:2.0.0" - checksum: 8c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 - languageName: node - linkType: hard - -"lowlight@npm:^1.14.0": - version: 1.20.0 - resolution: "lowlight@npm:1.20.0" - dependencies: - fault: "npm:^1.0.0" - highlight.js: "npm:~10.7.0" - checksum: 8c0/728bce6f6fe8b157f48d3324e597f452ce0eed2ccff1c0f41a9047380f944e971eb45bceb31f08fbb64d8f338dabb166f10049b35b92c7ec5cf0241d6adb3dea - languageName: node - linkType: hard - -"lru-cache@npm:*, lru-cache@npm:^10.0.0, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 8c0/982dabfb227b9a2daf56d712ae0e72e01115a28c0a2068cd71277bca04568f3417bbf741c6c7941abc5c620fd8059e34f15607f90ebccbfa0a17533322d27a8e - languageName: node - linkType: hard - -"lru-cache@npm:7.18.3, lru-cache@npm:^7.7.1": - version: 7.18.3 - resolution: "lru-cache@npm:7.18.3" - checksum: 8c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed - languageName: node - linkType: hard - -"lru-cache@npm:^4.0.1": - version: 4.1.5 - resolution: "lru-cache@npm:4.1.5" - dependencies: - pseudomap: "npm:^1.0.2" - yallist: "npm:^2.1.2" - checksum: 1ca5306814e5add9ec63556d6fd9b24a4ecdeaef8e9cea52cbf30301e6b88c8d8ddc7cab45b59b56eb763e6c45af911585dc89925a074ab65e1502e3fe8103cf - languageName: node - linkType: hard - -"lru-cache@npm:^5.1.1": - version: 5.1.1 - resolution: "lru-cache@npm:5.1.1" - dependencies: - yallist: "npm:^3.0.2" - checksum: 8c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: "npm:^4.0.0" - checksum: 8c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 - languageName: node - linkType: hard - -"lru-cache@npm:~4.0.0": - version: 4.0.2 - resolution: "lru-cache@npm:4.0.2" - dependencies: - pseudomap: "npm:^1.0.1" - yallist: "npm:^2.0.0" - checksum: 8c0/92ff839ef07632d35f6bddd870909ae49edc1956b409b6a6db342e6d92bbea4aa4f7107dae35db7d5dd59cf27d5a43bbd335f26e2458d1b8860783f68fc1a0af - languageName: node - linkType: hard - -"lru-memoizer@npm:^2.1.2": - version: 2.1.4 - resolution: "lru-memoizer@npm:2.1.4" - dependencies: - lodash.clonedeep: "npm:^4.5.0" - lru-cache: "npm:~4.0.0" - checksum: 8c0/b19d3823a3b0f0370dc71c4710a5519f2aba955a715403c709d692e2d34400b4c6956396a9f6b165ca475464108c279212fdeca560ee375683d44b2210e731b9 - languageName: node - linkType: hard - -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" - bin: - lz-string: bin/bin.js - checksum: 8c0/683d2d01607444605bee9902b05851415ae54e4de75ff14971c7e070d0fab53a7f1f82e659f24e6ccdc63080832b937418e278a611ed4a354bf2e7ad6f0b874b - languageName: node - linkType: hard - -"lz-string@npm:^1.5.0": - version: 1.5.0 - resolution: "lz-string@npm:1.5.0" - bin: - lz-string: bin/bin.js - checksum: 8c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b - languageName: node - linkType: hard - -"mailparser@npm:3.6.5": - version: 3.6.5 - resolution: "mailparser@npm:3.6.5" - dependencies: - encoding-japanese: "npm:2.0.0" - he: "npm:1.2.0" - html-to-text: "npm:9.0.5" - iconv-lite: "npm:0.6.3" - libmime: "npm:5.2.1" - linkify-it: "npm:4.0.1" - mailsplit: "npm:5.4.0" - nodemailer: "npm:6.9.3" - tlds: "npm:1.240.0" - checksum: b3b2d8d7f9f9230f449bf0cfac45c0386b63365929e389e196326496d7bae58377830b4cebb59a4d44c429b349590a8e191704f26e7fb1fddcbd7492482c7d35 - languageName: node - linkType: hard - -"mailsplit@npm:5.4.0": - version: 5.4.0 - resolution: "mailsplit@npm:5.4.0" - dependencies: - libbase64: "npm:1.2.1" - libmime: "npm:5.2.0" - libqp: "npm:2.0.1" - checksum: b0e1ce1866ea44413ca0ee8b7291afb671cb3f7ced2a53c644e3097b64b74079a4cb1ec02c9aaaef6a9927a71187304ac1a809852503aba2f829b67ce2d41496 - languageName: node - linkType: hard - -"make-dir@npm:3.1.0, make-dir@npm:^3.0.0, make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": - version: 3.1.0 - resolution: "make-dir@npm:3.1.0" - dependencies: - semver: "npm:^6.0.0" - checksum: 8c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa - languageName: node - linkType: hard - -"make-dir@npm:^1.0.0": - version: 1.3.0 - resolution: "make-dir@npm:1.3.0" - dependencies: - pify: "npm:^3.0.0" - checksum: 8c0/5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 - languageName: node - linkType: hard - -"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "make-dir@npm:2.1.0" - dependencies: - pify: "npm:^4.0.1" - semver: "npm:^5.6.0" - checksum: 8c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 - languageName: node - linkType: hard - -"make-error@npm:^1.1.1": - version: 1.3.6 - resolution: "make-error@npm:1.3.6" - checksum: 8c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f - languageName: node - linkType: hard - -"make-fetch-happen@npm:^10.0.3": - version: 10.2.1 - resolution: "make-fetch-happen@npm:10.2.1" - dependencies: - agentkeepalive: "npm:^4.2.1" - cacache: "npm:^16.1.0" - http-cache-semantics: "npm:^4.1.0" - http-proxy-agent: "npm:^5.0.0" - https-proxy-agent: "npm:^5.0.0" - is-lambda: "npm:^1.0.1" - lru-cache: "npm:^7.7.1" - minipass: "npm:^3.1.6" - minipass-collect: "npm:^1.0.2" - minipass-fetch: "npm:^2.0.3" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - promise-retry: "npm:^2.0.1" - socks-proxy-agent: "npm:^7.0.0" - ssri: "npm:^9.0.0" - checksum: 8c0/28ec392f63ab93511f400839dcee83107eeecfaad737d1e8487ea08b4332cd89a8f3319584222edd9f6f1d0833cf516691469496d46491863f9e88c658013949 - languageName: node - linkType: hard - -"make-fetch-happen@npm:^9.1.0": - version: 9.1.0 - resolution: "make-fetch-happen@npm:9.1.0" - dependencies: - agentkeepalive: "npm:^4.1.3" - cacache: "npm:^15.2.0" - http-cache-semantics: "npm:^4.1.0" - http-proxy-agent: "npm:^4.0.1" - https-proxy-agent: "npm:^5.0.0" - is-lambda: "npm:^1.0.1" - lru-cache: "npm:^6.0.0" - minipass: "npm:^3.1.3" - minipass-collect: "npm:^1.0.2" - minipass-fetch: "npm:^1.3.2" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.2" - promise-retry: "npm:^2.0.1" - socks-proxy-agent: "npm:^6.0.0" - ssri: "npm:^8.0.0" - checksum: 8c0/2c737faf6a7f67077679da548b5bfeeef890595bf8c4323a1f76eae355d27ebb33dcf9cf1a673f944cf2f2a7cbf4e2b09f0a0a62931737728f210d902c6be966 - languageName: node - linkType: hard - -"makeerror@npm:1.0.12": - version: 1.0.12 - resolution: "makeerror@npm:1.0.12" - dependencies: - tmpl: "npm:1.0.5" - checksum: 8c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c - languageName: node - linkType: hard - -"makeerror@npm:1.0.x": - version: 1.0.11 - resolution: "makeerror@npm:1.0.11" - dependencies: - tmpl: "npm:1.0.x" - checksum: 8c0/b24a6f55ee7e4e3ebd39fcebedadabd02a6ab60a58be87037d02ec8e633cb3a65492b8d107387ec2edbdc2b93aafcad9b4de53657cb70e6716b03f7b0f263dc8 - languageName: node - linkType: hard - -"map-cache@npm:^0.2.0, map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 8c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 - languageName: node - linkType: hard - -"map-or-similar@npm:^1.5.0": - version: 1.5.0 - resolution: "map-or-similar@npm:1.5.0" - checksum: 8c0/33c6ccfdc272992e33e4e99a69541a3e7faed9de3ac5bc732feb2500a9ee71d3f9d098980a70b7746e7eeb7f859ff7dfb8aa9b5ecc4e34170a32ab78cfb18def - languageName: node - linkType: hard - -"map-values@npm:^1.0.1": - version: 1.0.1 - resolution: "map-values@npm:1.0.1" - checksum: 8c0/a1e2a4fe64f60e43c6f6508e872a081651544fd654b643ffcbdd2cae72611af1f6e4dfb51484fe3e802db4eb5f340cab4022b9b86075136801e9d1db45053b40 - languageName: node - linkType: hard - -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: "npm:^1.0.0" - checksum: 8c0/fb3475e5311939a6147e339999113db607adc11c7c3cd3103e5e9dbf502898416ecba6b1c7c649c6d4d12941de00cee58b939756bdf20a9efe7d4fa5a5738b73 - languageName: node - linkType: hard - -"markdown-escapes@npm:^1.0.0": - version: 1.0.4 - resolution: "markdown-escapes@npm:1.0.4" - checksum: 8c0/cf3f2231191d9df61cd1d02a50a55a5c89ab9cebfe75572950f4844b93a41d561eed2d82e42732d55f2c55fa0d426b51df3a7f378b4068ae1e2923bb758a9cc8 - languageName: node - linkType: hard - -"markdown-it@npm:^12.2.0": - version: 12.3.2 - resolution: "markdown-it@npm:12.3.2" - dependencies: - argparse: "npm:^2.0.1" - entities: "npm:~2.1.0" - linkify-it: "npm:^3.0.1" - mdurl: "npm:^1.0.1" - uc.micro: "npm:^1.0.5" - bin: - markdown-it: bin/markdown-it.js - checksum: 7f97b924e6f90e2c5ccdfb486a19bd7885b938f568a86b527bf6f916a16b01a298e6739f86a99e77acb5e7c020f6c8b34bd726364179b3f820e48b2971a6450c - languageName: node - linkType: hard - -"markdown-to-jsx@npm:^7.1.3": - version: 7.1.6 - resolution: "markdown-to-jsx@npm:7.1.6" - peerDependencies: - react: ">= 0.14.0" - checksum: 8c0/cf326848d995a93322e355088b4e8a213a116799904a87897c07f5329de2281b4e7e681e507836153320a2af760f84ce4304f919c79bdc196b90511986d20eaf - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 8c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 - languageName: node - linkType: hard - -"mdast-squeeze-paragraphs@npm:^4.0.0": - version: 4.0.0 - resolution: "mdast-squeeze-paragraphs@npm:4.0.0" - dependencies: - unist-util-remove: "npm:^2.0.0" - checksum: 8c0/0b44a85d7e6d98772b1dbb28a46a35c74c2791c6cf057bfd2e590a4e011d626627e5bf82d4497706f0dae03da02a63a9279aca17c4c23a9c7173792adba8e6fc - languageName: node - linkType: hard - -"mdast-util-definitions@npm:^4.0.0": - version: 4.0.0 - resolution: "mdast-util-definitions@npm:4.0.0" - dependencies: - unist-util-visit: "npm:^2.0.0" - checksum: 8c0/d81bb0b702f99878c8e8e4f66dd7f6f673ab341f061b3d9487ba47dad28b584e02f16b4c42df23714eaac8a7dd8544ba7d77308fad8d4a9fd0ac92e2a7f56be9 - languageName: node - linkType: hard - -"mdast-util-to-hast@npm:10.0.1": - version: 10.0.1 - resolution: "mdast-util-to-hast@npm:10.0.1" - dependencies: - "@types/mdast": "npm:^3.0.0" - "@types/unist": "npm:^2.0.0" - mdast-util-definitions: "npm:^4.0.0" - mdurl: "npm:^1.0.0" - unist-builder: "npm:^2.0.0" - unist-util-generated: "npm:^1.0.0" - unist-util-position: "npm:^3.0.0" - unist-util-visit: "npm:^2.0.0" - checksum: 8c0/08d0977c60ee951cb5e2e84bc821a842da463c37f7bbb79abf0be0894120ed5e2fc1d003d072d3bb968d8e813a916e132a094166d5562deb424acc45e1c661f4 - languageName: node - linkType: hard - -"mdn-data@npm:2.0.14": - version: 2.0.14 - resolution: "mdn-data@npm:2.0.14" - checksum: 8c0/67241f8708c1e665a061d2b042d2d243366e93e5bf1f917693007f6d55111588b952dcbfd3ea9c2d0969fb754aad81b30fdcfdcc24546495fc3b24336b28d4bd - languageName: node - linkType: hard - -"mdn-data@npm:2.0.28": - version: 2.0.28 - resolution: "mdn-data@npm:2.0.28" - checksum: 8c0/20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b - languageName: node - linkType: hard - -"mdn-data@npm:2.0.30": - version: 2.0.30 - resolution: "mdn-data@npm:2.0.30" - checksum: 8c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 - languageName: node - linkType: hard - -"mdn-data@npm:2.0.4": - version: 2.0.4 - resolution: "mdn-data@npm:2.0.4" - checksum: 8c0/a935c4530b938407481f7d0ccb82119ae618d9c673d2ee78bb10dcba8bd0ccbe2e2c7fe850ddc60b67e08f4c9d97f50b900993f6c2f2926e64a52ed6baa00b3a - languageName: node - linkType: hard - -"mdurl@npm:^1.0.0, mdurl@npm:^1.0.1": - version: 1.0.1 - resolution: "mdurl@npm:1.0.1" - checksum: 8c0/ea8534341eb002aaa532a722daef6074cd8ca66202e10a2b4cda46722c1ebdb1da92197ac300bc953d3ef1bf41cd6561ef2cc69d82d5d0237dae00d4a61a4eee - languageName: node - linkType: hard - -"media-typer@npm:0.3.0": - version: 0.3.0 - resolution: "media-typer@npm:0.3.0" - checksum: 8c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 - languageName: node - linkType: hard - -"memfs@npm:^3.1.2": - version: 3.4.1 - resolution: "memfs@npm:3.4.1" - dependencies: - fs-monkey: "npm:1.0.3" - checksum: 8c0/d8f73f0903c7802027fea07b5cc39fc984f0fdff528214a0ef2937001fec88e11d755675a725e83a2b14a7c96c054c903bf7d1774d5133116597f201c37f6a5e - languageName: node - linkType: hard - -"memfs@npm:^3.4.3": - version: 3.4.13 - resolution: "memfs@npm:3.4.13" - dependencies: - fs-monkey: "npm:^1.0.3" - checksum: 8c0/f14ab3ff938eacf688577d1b0f7bf77ca3a05d4df9c335b024ed6790e6b224b569cc4b61c1de604c0420a0fac6b3fbf3f283c72fd2be9ce395534539599ac63b - languageName: node - linkType: hard - -"memjs@npm:1.3.1": - version: 1.3.1 - resolution: "memjs@npm:1.3.1" - checksum: 8c0/1d77b54335fb234378d7be31c6a9c2e219797b4913b893bb85b67fc25112073ff4c6e7c84f59d31e0fa3a62c0320219c90a7bda65e53ff9792679af036290961 - languageName: node - linkType: hard - -"memoizerific@npm:^1.11.3": - version: 1.11.3 - resolution: "memoizerific@npm:1.11.3" - dependencies: - map-or-similar: "npm:^1.5.0" - checksum: 8c0/661bf69b7afbfad57f0208f0c63324f4c96087b480708115b78ee3f0237d86c7f91347f6db31528740b2776c2e34c709bcb034e1e910edee2270c9603a0a469e - languageName: node - linkType: hard - -"memory-fs@npm:^0.4.1": - version: 0.4.1 - resolution: "memory-fs@npm:0.4.1" - dependencies: - errno: "npm:^0.1.3" - readable-stream: "npm:^2.0.1" - checksum: 8c0/f114c44ad8285103cb0e71420cf5bb628d3eb6cbd918197f5951590ff56ba2072f4a97924949c170320cdf180d2da4e8d16a0edd92ba0ca2d2de51dc932841e2 - languageName: node - linkType: hard - -"memory-fs@npm:^0.5.0": - version: 0.5.0 - resolution: "memory-fs@npm:0.5.0" - dependencies: - errno: "npm:^0.1.3" - readable-stream: "npm:^2.0.1" - checksum: 8c0/2737a27b14a9e8b8cd757be2ad99e8cc504b78a78aba9d6aa18ff1ef528e2223a433413d2df6ab5332997a5a8ccf075e6c6e90e31ab732a55455ca620e4a720b - languageName: node - linkType: hard - -"merge-descriptors@npm:1.0.1, merge-descriptors@npm:~1.0.0": - version: 1.0.1 - resolution: "merge-descriptors@npm:1.0.1" - checksum: 8c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 8c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 - languageName: node - linkType: hard - -"merge2@npm:^1.2.3, merge2@npm:^1.3.0, merge2@npm:^1.4.1": - version: 1.4.1 - resolution: "merge2@npm:1.4.1" - checksum: 8c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb - languageName: node - linkType: hard - -"meros@npm:1.2.1": - version: 1.2.1 - resolution: "meros@npm:1.2.1" - peerDependencies: - "@types/node": ">=13" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 8c0/f8debb9d03e89cba545b9b7d4d51f2412b33ba86e6f6b2eb0e481a3eaf9975d168e6e708887d87b9fbf5a188f9d5878b50f6fb2ded9614f4cd20feb50d452a5d - languageName: node - linkType: hard - -"meros@npm:^1.1.4": - version: 1.3.0 - resolution: "meros@npm:1.3.0" - peerDependencies: - "@types/node": ">=13" - peerDependenciesMeta: - "@types/node": - optional: true - checksum: 2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 - languageName: node - linkType: hard - -"methods@npm:~1.1.2": - version: 1.1.2 - resolution: "methods@npm:1.1.2" - checksum: 8c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 - languageName: node - linkType: hard - -"microevent.ts@npm:~0.1.1": - version: 0.1.1 - resolution: "microevent.ts@npm:0.1.1" - checksum: 8c0/1f18f23ebebf155d3f480b1414cec7667a477a09ced2c60705b204cfaba82cbecc76169d890b9a675f237cb1a5497ba744ca8619a65802ac6765148a05bb6bf4 - languageName: node - linkType: hard - -"micromatch@npm:^3.0.4, micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: "npm:^4.0.0" - array-unique: "npm:^0.3.2" - braces: "npm:^2.3.1" - define-property: "npm:^2.0.2" - extend-shallow: "npm:^3.0.2" - extglob: "npm:^2.0.4" - fragment-cache: "npm:^0.2.1" - kind-of: "npm:^6.0.2" - nanomatch: "npm:^1.2.9" - object.pick: "npm:^1.3.0" - regex-not: "npm:^1.0.0" - snapdragon: "npm:^0.8.1" - to-regex: "npm:^3.0.2" - checksum: 8c0/531a32e7ac92bef60657820202be71b63d0f945c08a69cc4c239c0b19372b751483d464a850a2e3a5ff6cc9060641e43d44c303af104c1a27493d137d8af017f - languageName: node - linkType: hard - -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4": - version: 4.0.4 - resolution: "micromatch@npm:4.0.4" - dependencies: - braces: "npm:^3.0.1" - picomatch: "npm:^2.2.3" - checksum: 8c0/87bc95e3e52ebe413dbadd43c96e797c736bf238f154e3b546859493e83781b6f7fa4dfa54e423034fb9aeea65259ee6480551581271c348d8e19214910a5a64 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.5": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: "npm:^3.0.2" - picomatch: "npm:^2.3.1" - checksum: 8c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff - languageName: node - linkType: hard - -"miller-rabin@npm:^4.0.0": - version: 4.0.1 - resolution: "miller-rabin@npm:4.0.1" - dependencies: - bn.js: "npm:^4.0.0" - brorand: "npm:^1.0.1" - bin: - miller-rabin: bin/miller-rabin - checksum: 8c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 - languageName: node - linkType: hard - -"mime-db@npm:1.47.0, mime-db@npm:>= 1.43.0 < 2": - version: 1.47.0 - resolution: "mime-db@npm:1.47.0" - checksum: 8c0/059c380d6587a0c2d1c854a466871cfeb0bb5dcd941611e3dd311fe4596b155d6a1a55a63d24d41dbfe60e274cde80e0c88747c57a7e8daf47cafb960d8def25 - languageName: node - linkType: hard - -"mime-db@npm:1.51.0": - version: 1.51.0 - resolution: "mime-db@npm:1.51.0" - checksum: 8c0/0019c731d3967b62e4aefa1d416709386649305cc5a94dd13d315960c8111a0a9c4d1dc542545e69a476e316df4fc03de18dbc83a82e97aefdb046267649a548 - languageName: node - linkType: hard - -"mime-db@npm:1.52.0, mime-db@npm:^1.28.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 8c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa - languageName: node - linkType: hard - -"mime-types@npm:2.1.35, mime-types@npm:^2.1.31, mime-types@npm:~2.1.34": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: "npm:1.52.0" - checksum: 8c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24": - version: 2.1.30 - resolution: "mime-types@npm:2.1.30" - dependencies: - mime-db: "npm:1.47.0" - checksum: 8c0/92e5cf94346316b8dd15ee160c2451ce2c910bd93e737a51c6259a29c5346b117aaa6891ac4e4bacb34300cd5d76ea5b17e94e41e42efe1a76e07d197b5ada0c - languageName: node - linkType: hard - -"mime-types@npm:^2.1.26": - version: 2.1.34 - resolution: "mime-types@npm:2.1.34" - dependencies: - mime-db: "npm:1.51.0" - checksum: 8c0/7cb55d499f67fbaa9b4e5da552c54ae5c9ac1d57df93f89e2af185d2f3e7a3e6f2030b5b248fec2130f659ebcd9a40e51f63f91006b3ea876b3cadf4755ea410 - languageName: node - linkType: hard - -"mime@npm:1.6.0": - version: 1.6.0 - resolution: "mime@npm:1.6.0" - bin: - mime: cli.js - checksum: 8c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 - languageName: node - linkType: hard - -"mime@npm:^2.4.4": - version: 2.5.2 - resolution: "mime@npm:2.5.2" - bin: - mime: cli.js - checksum: 8c0/6feb4a221498b25913590c6d6b2e980d519b57a6fc07849be3b8ee507a8980211e11b371d2d53d92dd883e46e699cd6f7712e7d71743f036adb5b0a8ea3005d5 - languageName: node - linkType: hard - -"mime@npm:^3.0.0": - version: 3.0.0 - resolution: "mime@npm:3.0.0" - bin: - mime: cli.js - checksum: 8c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 - languageName: node - linkType: hard - -"mimic-fn@npm:^1.0.0": - version: 1.2.0 - resolution: "mimic-fn@npm:1.2.0" - checksum: 8c0/ad55214aec6094c0af4c0beec1a13787556f8116ed88807cf3f05828500f21f93a9482326bcd5a077ae91e3e8795b4e76b5b4c8bb12237ff0e4043a365516cba - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: 8c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 - languageName: node - linkType: hard - -"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": - version: 1.0.1 - resolution: "mimic-response@npm:1.0.1" - checksum: 8c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa - languageName: node - linkType: hard - -"mimic-response@npm:^3.1.0": - version: 3.1.0 - resolution: "mimic-response@npm:3.1.0" - checksum: 0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 - languageName: node - linkType: hard - -"min-document@npm:^2.19.0": - version: 2.19.0 - resolution: "min-document@npm:2.19.0" - dependencies: - dom-walk: "npm:^0.1.0" - checksum: 8c0/783724da716fc73a51c171865d7b29bf2b855518573f82ef61c40d214f6898d7b91b5c5419e4d22693cdb78d4615873ebc3b37d7639d3dd00ca283e5a07c7af9 - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: 8c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c - languageName: node - linkType: hard - -"mini-css-extract-plugin@npm:2.7.6": - version: 2.7.6 - resolution: "mini-css-extract-plugin@npm:2.7.6" - dependencies: - schema-utils: "npm:^4.0.0" - peerDependencies: - webpack: ^5.0.0 - checksum: 8c0/4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 - languageName: node - linkType: hard - -"mini-css-extract-plugin@npm:^1.4.1": - version: 1.6.2 - resolution: "mini-css-extract-plugin@npm:1.6.2" - dependencies: - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - webpack-sources: "npm:^1.1.0" - peerDependencies: - webpack: ^4.4.0 || ^5.0.0 - checksum: 8c0/138c008f8a510012266d2834227e75181feeffd09e89e9cde0a63f17be3d64ea3ddbba01036aac9c8a969462c0142285659a20c294e8d01ba948aa1124affdc2 - languageName: node - linkType: hard - -"mini-svg-data-uri@npm:^1.2.3": - version: 1.4.4 - resolution: "mini-svg-data-uri@npm:1.4.4" - bin: - mini-svg-data-uri: cli.js - checksum: 24545fa30b5a45449241bf19c25b8bc37594b63ec06401b3d563bd1c2e8a6abb7c18741f8b354e0064baa63c291be214154bf3a66f201ae71dfab3cc1a5e3191 - languageName: node - linkType: hard - -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: 8c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd - languageName: node - linkType: hard - -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 8c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 - languageName: node - linkType: hard - -"minimatch@npm:3.0.4, minimatch@npm:^3.0.2, minimatch@npm:^3.0.4": - version: 3.0.4 - resolution: "minimatch@npm:3.0.4" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 8c0/d0a2bcd93ebec08a9eef3ca83ba33c9fb6feb93932e0b4dc6aa46c5f37a9404bea7ad9ff7cafe23ce6634f1fe3b206f5315ecbb05812da6e692c21d8ecfd3dae - languageName: node - linkType: hard - -"minimatch@npm:4.2.3": - version: 4.2.3 - resolution: "minimatch@npm:4.2.3" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 8c0/ce19d52a4692037aa7768bfcdca0cef3eb3975ab8e3aaf32ab0a3d23863fca94ba7555d1ca67893320076efe8376e61bf7cc6fa82161a3c1127f0d0b9b06b666 - languageName: node - linkType: hard - -"minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 8c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 - languageName: node - linkType: hard - -"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 8c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 - languageName: node - linkType: hard - -"minimatch@npm:^7.4.3": - version: 7.4.6 - resolution: "minimatch@npm:7.4.6" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 8c0/e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 - languageName: node - linkType: hard - -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 8c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac - languageName: node - linkType: hard - -"minimist@npm:^1.1.1, minimist@npm:^1.2.0, minimist@npm:^1.2.5": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 8c0/c143b0c199af4df7a55c7a37b6465cdd438acdc6a3a345ba0fe9d94dfcc2042263f650879bc73be607c843deeaeaadf39c864e55bc6d80b36a025eca1a062ee7 - languageName: node - linkType: hard - -"minimist@npm:^1.2.6": - version: 1.2.7 - resolution: "minimist@npm:1.2.7" - checksum: 8c0/8808da67ca50ee19ab2d69051d77ee78572e67297fd8a1635ecc757a15106ccdfb5b8c4d11d84750120142f1684e5329a141295728c755e5d149eedd73cc6572 - languageName: node - linkType: hard - -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" - dependencies: - minipass: "npm:^3.0.0" - checksum: 8c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 - languageName: node - linkType: hard - -"minipass-fetch@npm:^1.3.2": - version: 1.4.1 - resolution: "minipass-fetch@npm:1.4.1" - dependencies: - encoding: "npm:^0.1.12" - minipass: "npm:^3.1.0" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.0.0" - dependenciesMeta: - encoding: - optional: true - checksum: 8c0/a43da7401cd7c4f24b993887d41bd37d097356083b0bb836fd655916467463a1e6e9e553b2da4fcbe8745bf23d40c8b884eab20745562199663b3e9060cd8e7a - languageName: node - linkType: hard - -"minipass-fetch@npm:^2.0.3": - version: 2.1.2 - resolution: "minipass-fetch@npm:2.1.2" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^3.1.6" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 8c0/33ab2c5bdb3d91b9cb8bc6ae42d7418f4f00f7f7beae14b3bb21ea18f9224e792f560a6e17b6f1be12bbeb70dbe99a269f4204c60e5d99130a0777b153505c43 - languageName: node - linkType: hard - -"minipass-flush@npm:^1.0.5": - version: 1.0.5 - resolution: "minipass-flush@npm:1.0.5" - dependencies: - minipass: "npm:^3.0.0" - checksum: 8c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd - languageName: node - linkType: hard - -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": - version: 1.2.4 - resolution: "minipass-pipeline@npm:1.2.4" - dependencies: - minipass: "npm:^3.0.0" - checksum: 8c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 - languageName: node - linkType: hard - -"minipass-sized@npm:^1.0.3": - version: 1.0.3 - resolution: "minipass-sized@npm:1.0.3" - dependencies: - minipass: "npm:^3.0.0" - checksum: 8c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb - languageName: node - linkType: hard - -"minipass@npm:^3.0.0, minipass@npm:^3.1.1": - version: 3.1.3 - resolution: "minipass@npm:3.1.3" - dependencies: - yallist: "npm:^4.0.0" - checksum: 8c0/5dbbf1afd68aa686f0b587f2104c96c22b517da2db35787329ff460128efe583ba363e9cd4572895cdf0f0633fa3ad1b65283a953d889a76f11bdfbb19567bc6 - languageName: node - linkType: hard - -"minipass@npm:^3.1.0, minipass@npm:^3.1.3, minipass@npm:^3.1.6": - version: 3.3.6 - resolution: "minipass@npm:3.3.6" - dependencies: - yallist: "npm:^4.0.0" - checksum: 8c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c - languageName: node - linkType: hard - -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 8c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0": - version: 7.0.3 - resolution: "minipass@npm:7.0.3" - checksum: 8c0/c85426bce6310368218aad1f20b8f242180b6c2058209c78840959d6fff8a4738076a3224c3a6b651080f95684d559be1bdb084939bc40011c653ec4552cf06e - languageName: node - linkType: hard - -"minizlib@npm:^2.0.0, minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 8c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 - languageName: node - linkType: hard - -"mississippi@npm:^3.0.0": - version: 3.0.0 - resolution: "mississippi@npm:3.0.0" - dependencies: - concat-stream: "npm:^1.5.0" - duplexify: "npm:^3.4.2" - end-of-stream: "npm:^1.1.0" - flush-write-stream: "npm:^1.0.0" - from2: "npm:^2.1.0" - parallel-transform: "npm:^1.1.0" - pump: "npm:^3.0.0" - pumpify: "npm:^1.3.3" - stream-each: "npm:^1.1.0" - through2: "npm:^2.0.0" - checksum: 8c0/97424a331ce1b9f789a0d3fa47d725dad9adfe5e0ead8bc458ba9fb51c4d2630df6b0966ca9dcbb4c90db48737d58126cbf0e3c170697bf41c265606efa91103 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: "npm:^1.0.2" - is-extendable: "npm:^1.0.1" - checksum: 8c0/cb39ffb73c377222391af788b4c83d1a6cecb2d9fceb7015384f8deb46e151a9b030c21ef59a79cb524d4557e3f74c7248ab948a62a6e7e296b42644863d183b - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": - version: 0.5.5 - resolution: "mkdirp@npm:0.5.5" - dependencies: - minimist: "npm:^1.2.5" - bin: - mkdirp: bin/cmd.js - checksum: 8c0/4469faeeba703bc46b7cdbe3097d6373747a581eb8b556ce41c8fd25a826eb3254466c6522ba823c2edb0b6f0da7beb91cf71f040bc4e361534a3e67f0994bd0 - languageName: node - linkType: hard - -"mkdirp@npm:^0.5.6": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: "npm:^1.2.6" - bin: - mkdirp: bin/cmd.js - checksum: 8c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: 8c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf - languageName: node - linkType: hard - -"mkdirp@npm:^2.1.6": - version: 2.1.6 - resolution: "mkdirp@npm:2.1.6" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 8c0/96f551c651dd8f5f9435d53df1a7b9bfc553be769ee6da5192c37c1f303a376ef1c6996f96913d4a8d357060451d4526a346031d1919f92c58806a5fa3cd8dfe - languageName: node - linkType: hard - -"module-not-found-error@npm:^1.0.1": - version: 1.0.1 - resolution: "module-not-found-error@npm:1.0.1" - checksum: 8c0/e57250016b320ef9d0e0037fdb63fb279ca93100a0cee3ef6e90139cbec734215be4a70857dfc0d62ee353d9f8126d2882aa0a80dba49b69292901263a21ea69 - languageName: node - linkType: hard - -"morgan@npm:^1.10.0": - version: 1.10.0 - resolution: "morgan@npm:1.10.0" - dependencies: - basic-auth: "npm:~2.0.1" - debug: "npm:2.6.9" - depd: "npm:~2.0.0" - on-finished: "npm:~2.3.0" - on-headers: "npm:~1.0.2" - checksum: 8c0/684db061daca28f8d8e3bfd50bd0d21734401b46f74ea76f6df7785d45698fcd98f6d3b81a6bad59f8288c429183afba728c428e8f66d2e8c30fd277af3b5b3a - languageName: node - linkType: hard - -"move-concurrently@npm:^1.0.1": - version: 1.0.1 - resolution: "move-concurrently@npm:1.0.1" - dependencies: - aproba: "npm:^1.1.1" - copy-concurrently: "npm:^1.0.0" - fs-write-stream-atomic: "npm:^1.0.8" - mkdirp: "npm:^0.5.1" - rimraf: "npm:^2.5.4" - run-queue: "npm:^1.0.3" - checksum: 8c0/0fe81acf3bbbc322013c2f4ee4a48cf8d180a7d925fb9284c0f1f444e862d7eb0421ee074b68d35357a12f0d5e94a322049dc9da480672331b5b8895743eb66a - languageName: node - linkType: hard - -"mri@npm:1.1.4": - version: 1.1.4 - resolution: "mri@npm:1.1.4" - checksum: 8c0/eb577c2ef60385aa287afdac777e536996f4fd3144250c201097e7ec121568139d482c92cb9a512f90e428d6dc3e9ba8e9de89bc204424cb96f187a4bdc465c1 - languageName: node - linkType: hard - -"mrmime@npm:^2.0.0": - version: 2.0.0 - resolution: "mrmime@npm:2.0.0" - checksum: 312b35ed288986aec90955410b21ed7427fd1e4ee318cb5fc18765c8d029eeded9444faa46589e5b1ed6b35fb2054a802ac8dcb917ddf6b3e189cb3bf11a965c - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 8c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d - languageName: node - linkType: hard - -"ms@npm:2.1.1": - version: 2.1.1 - resolution: "ms@npm:2.1.1" - checksum: 8c0/056140c631e740369fa21142417aba1bd629ab912334715216c666eb681c8f015c622dd4e38bc1d836b30852b05641331661703af13a0397eb0ca420fc1e75d9 - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 8c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc - languageName: node - linkType: hard - -"ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.2, ms@npm:^2.1.3": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: 8c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 - languageName: node - linkType: hard - -"msw@npm:1.3.2": - version: 1.3.2 - resolution: "msw@npm:1.3.2" - dependencies: - "@mswjs/cookies": "npm:^0.2.2" - "@mswjs/interceptors": "npm:^0.17.10" - "@open-draft/until": "npm:^1.0.3" - "@types/cookie": "npm:^0.4.1" - "@types/js-levenshtein": "npm:^1.1.1" - chalk: "npm:^4.1.1" - chokidar: "npm:^3.4.2" - cookie: "npm:^0.4.2" - graphql: "npm:^16.8.1" - headers-polyfill: "npm:3.2.5" - inquirer: "npm:^8.2.0" - is-node-process: "npm:^1.2.0" - js-levenshtein: "npm:^1.1.6" - node-fetch: "npm:^2.6.7" - outvariant: "npm:^1.4.0" - path-to-regexp: "npm:^6.2.0" - strict-event-emitter: "npm:^0.4.3" - type-fest: "npm:^2.19.0" - yargs: "npm:^17.3.1" - peerDependencies: - typescript: ">= 4.4.x <= 5.2.x" - peerDependenciesMeta: - typescript: - optional: true - bin: - msw: cli/index.js - checksum: c644d8e80b12b15c7b366aa6e0b39442f3ffd3b94824171e562066d8535c720fd824d84986d738a427720e59228660c11991bf724e4dd9face00b0b0f2af8f0d - languageName: node - linkType: hard - -"msw@npm:^0.28.2": - version: 0.28.2 - resolution: "msw@npm:0.28.2" - dependencies: - "@mswjs/cookies": "npm:^0.1.4" - "@mswjs/interceptors": "npm:^0.8.0" - "@open-draft/until": "npm:^1.0.3" - "@types/cookie": "npm:^0.4.0" - "@types/inquirer": "npm:^7.3.1" - "@types/js-levenshtein": "npm:^1.1.0" - chalk: "npm:^4.1.0" - chokidar: "npm:^3.4.2" - cookie: "npm:^0.4.1" - graphql: "npm:^15.4.0" - headers-utils: "npm:^3.0.2" - inquirer: "npm:^7.3.3" - js-levenshtein: "npm:^1.1.6" - node-fetch: "npm:^2.6.1" - node-match-path: "npm:^0.6.1" - statuses: "npm:^2.0.0" - strict-event-emitter: "npm:^0.2.0" - yargs: "npm:^16.2.0" - bin: - msw: cli/index.js - checksum: 8c0/08027aded5851a9a92eeb374cec5c615c719357f4851f848aba1c888f804f4ee355f296d03537251f33a4954138c52828d1bcaeec1f3f6fefe88965aaa981dc2 - languageName: node - linkType: hard - -"multicast-dns-service-types@npm:^1.1.0": - version: 1.1.0 - resolution: "multicast-dns-service-types@npm:1.1.0" - checksum: 8c0/25abc0e9ee509f38d874e22b03d563b16009d3976760d29bed25bf70ea992cfe30b0403743f49342279c67178a03311d31ecc1ec54bf79af2e6fe55f11af2660 - languageName: node - linkType: hard - -"multicast-dns@npm:^6.0.1": - version: 6.2.3 - resolution: "multicast-dns@npm:6.2.3" - dependencies: - dns-packet: "npm:^1.3.1" - thunky: "npm:^1.0.2" - bin: - multicast-dns: cli.js - checksum: 8c0/972fc50869e922d80d66eeb91ad39fd2e107241e0c791fc914e76578e4f7f3dfe3bf007020dd4d7ed4d0ffd69d9aa2238a9f8bbb4d160bd6eb3f35dde0c2c513 - languageName: node - linkType: hard - -"multicast-dns@npm:^7.2.5": - version: 7.2.5 - resolution: "multicast-dns@npm:7.2.5" - dependencies: - dns-packet: "npm:^5.2.2" - thunky: "npm:^1.0.2" - bin: - multicast-dns: cli.js - checksum: 8c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 - languageName: node - linkType: hard - -"multimatch@npm:^4.0.0": - version: 4.0.0 - resolution: "multimatch@npm:4.0.0" - dependencies: - "@types/minimatch": "npm:^3.0.3" - array-differ: "npm:^3.0.0" - array-union: "npm:^2.1.0" - arrify: "npm:^2.0.1" - minimatch: "npm:^3.0.4" - checksum: 8c0/08e6b71ea2eee2feba17bb4159d247b78d26f9a9b556abddc136c05baa5eba9d80717986e494972284947e9c0e26a19eba3fe20851463fa3dbb770e289f7a0b8 - languageName: node - linkType: hard - -"mustache@npm:^4.2.0": - version: 4.2.0 - resolution: "mustache@npm:4.2.0" - bin: - mustache: bin/mustache - checksum: 8c0/1f8197e8a19e63645a786581d58c41df7853da26702dbc005193e2437c98ca49b255345c173d50c08fe4b4dbb363e53cb655ecc570791f8deb09887248dd34a2 - languageName: node - linkType: hard - -"mute-stream@npm:0.0.8": - version: 0.0.8 - resolution: "mute-stream@npm:0.0.8" - checksum: 8c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 - languageName: node - linkType: hard - -"mz@npm:^2.7.0": - version: 2.7.0 - resolution: "mz@npm:2.7.0" - dependencies: - any-promise: "npm:^1.0.0" - object-assign: "npm:^4.0.1" - thenify-all: "npm:^1.0.0" - checksum: 103114e93f87362f0b56ab5b2e7245051ad0276b646e3902c98397d18bb8f4a77f2ea4a2c9d3ad516034ea3a56553b60d3f5f78220001ca4c404bd711bd0af39 - languageName: node - linkType: hard - -"nan@npm:^2.12.1": - version: 2.14.2 - resolution: "nan@npm:2.14.2" - dependencies: - node-gyp: "npm:latest" - checksum: 8c0/38b054d91fe8e2a66aa45a4108434188eddf23eff4ce9a605929a37792f1a8703eaf652386168e7b00a360ab1a90f6d0bca67271299eeba35bbe1326fc780239 - languageName: node - linkType: hard - -"nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" - bin: - nanoid: bin/nanoid.cjs - checksum: 8c0/a0747d5c6021828fe8d38334e5afb05d3268d7d4b06024058ec894ccc47070e4e81d268a6b75488d2ff3485fa79a75c251d4b7c6f31051bb54bb662b6fd2a27d - languageName: node - linkType: hard - -"nanoid@npm:^3.3.6": - version: 3.3.6 - resolution: "nanoid@npm:3.3.6" - bin: - nanoid: bin/nanoid.cjs - checksum: 8c0/606b355960d0fcbe3d27924c4c52ef7d47d3b57208808ece73279420d91469b01ec1dce10fae512b6d4a8c5a5432b352b228336a8b2202a6ea68e67fa348e2ee - languageName: node - linkType: hard - -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" - bin: - nanoid: bin/nanoid.cjs - checksum: e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 - languageName: node - linkType: hard - -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: "npm:^4.0.0" - array-unique: "npm:^0.3.2" - define-property: "npm:^2.0.2" - extend-shallow: "npm:^3.0.2" - fragment-cache: "npm:^0.2.1" - is-windows: "npm:^1.0.2" - kind-of: "npm:^6.0.2" - object.pick: "npm:^1.3.0" - regex-not: "npm:^1.0.0" - snapdragon: "npm:^0.8.1" - to-regex: "npm:^3.0.1" - checksum: 8c0/0f5cefa755ca2e20c86332821995effb24acb79551ddaf51c1b9112628cad234a0d8fd9ac6aa56ad1f8bfad6ff6ae86e851acb960943249d9fa44b091479953a - languageName: node - linkType: hard - -"native-url@npm:^0.2.6": - version: 0.2.6 - resolution: "native-url@npm:0.2.6" - dependencies: - querystring: "npm:^0.2.0" - checksum: 8c0/d29d4a96ce20c107da0febcfd402665a2033f46075a51b3d70c97b0fadf6b102658b573aa04e33e82b7d8ec7686a760a4af96991653ee848ee3a57e30202d205 - languageName: node - linkType: hard - -"natural-compare-lite@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare-lite@npm:1.4.0" - checksum: 8c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 - languageName: node - linkType: hard - -"natural-compare@npm:^1.4.0": - version: 1.4.0 - resolution: "natural-compare@npm:1.4.0" - checksum: 8c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 - languageName: node - linkType: hard - -"negotiator@npm:0.6.2": - version: 0.6.2 - resolution: "negotiator@npm:0.6.2" - checksum: 8c0/cda4955b5a0d6624ff3322c9a9e7bfc039b8f2b0133708208edbb28be6ebb62c45493aee098374d8d0aeda60fc37dd08cf53cd60bd5fad3efb8fc36b52e3cdce - languageName: node - linkType: hard - -"negotiator@npm:0.6.3, negotiator@npm:^0.6.2, negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: 8c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 - languageName: node - linkType: hard - -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1, neo-async@npm:^2.6.2": - version: 2.6.2 - resolution: "neo-async@npm:2.6.2" - checksum: 8c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d - languageName: node - linkType: hard - -"nested-error-stacks@npm:^2.0.0, nested-error-stacks@npm:^2.1.0": - version: 2.1.0 - resolution: "nested-error-stacks@npm:2.1.0" - checksum: 8c0/8d4e8f81a66be0910d766b3a5972117b0a65bade2f18b2dcb414489e73f93d84dd2b88d5cbf3550b7f427c2f2bbfe2e6e2945b228eefe3328b1fde335df220d1 - languageName: node - linkType: hard - -"new-github-issue-url@npm:^0.2.1": - version: 0.2.1 - resolution: "new-github-issue-url@npm:0.2.1" - checksum: 8c0/64dcfa7a181c8ac2a33f2329c7167289c4fa9b75e1f47f635f63b99d3f442cbb02f67db9fc56a17774a2a91fa94546889baf54799cb701bd5031377d6793c406 - languageName: node - linkType: hard - -"nice-try@npm:^1.0.4": - version: 1.0.5 - resolution: "nice-try@npm:1.0.5" - checksum: 8c0/95568c1b73e1d0d4069a3e3061a2102d854513d37bcfda73300015b7ba4868d3b27c198d1dbbd8ebdef4112fc2ed9e895d4a0f2e1cce0bd334f2a1346dc9205f - languageName: node - linkType: hard - -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: "npm:^2.0.2" - tslib: "npm:^2.0.3" - checksum: 8c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 - languageName: node - linkType: hard - -"node-addon-api@npm:^3.2.1": - version: 3.2.1 - resolution: "node-addon-api@npm:3.2.1" - dependencies: - node-gyp: "npm:latest" - checksum: 8c0/41f21c9d12318875a2c429befd06070ce367065a3ef02952cfd4ea17ef69fa14012732f510b82b226e99c254da8d671847ea018cad785f839a5366e02dd56302 - languageName: node - linkType: hard - -"node-addon-api@npm:^4.2.0": - version: 4.3.0 - resolution: "node-addon-api@npm:4.3.0" - dependencies: - node-gyp: "npm:latest" - checksum: 8c0/5febe94d58cdef319bc96a357b43d7a13776c93ee3f2edb374000f16454e65cec06035497947d5fdaa50db1cc7ab8e3a30ca8669bb07a1b159f0307dc2c1ccdf - languageName: node - linkType: hard - -"node-dir@npm:^0.1.10, node-dir@npm:^0.1.17": - version: 0.1.17 - resolution: "node-dir@npm:0.1.17" - dependencies: - minimatch: "npm:^3.0.2" - checksum: 8c0/16222e871708c405079ff8122d4a7e1d522c5b90fc8f12b3112140af871cfc70128c376e845dcd0044c625db0d2efebd2d852414599d240564db61d53402b4c1 - languageName: node - linkType: hard - -"node-environment-flags@npm:^1.0.5": - version: 1.0.6 - resolution: "node-environment-flags@npm:1.0.6" - dependencies: - object.getownpropertydescriptors: "npm:^2.0.3" - semver: "npm:^5.7.0" - checksum: 8c0/8be86f294f8b065a1e126e9ceb7a4b38b75eb7ec6391060e6e093ab9649e5c1fa977f2a5fe799b6ada862d65ce8259d1b7eabf2057774d641306e467d58cb96b - languageName: node - linkType: hard - -"node-fetch@npm:2.6.1, node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1": - version: 2.6.1 - resolution: "node-fetch@npm:2.6.1" - checksum: 8c0/c58586d121782df045681e29608f940be90c7d8c4cada29957c148cfcc5e2d81d74b690cf10ee6879ed055da7ea821450a74ff43f3bde651cf6c8a5f34a77e2a - languageName: node - linkType: hard - -"node-fetch@npm:2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8c0/fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 - languageName: node - linkType: hard - -"node-fetch@npm:^2.6.7": - version: 2.6.9 - resolution: "node-fetch@npm:2.6.9" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 8c0/7a4a0e027e509b741bec4172749103f158da23187ff251cb988dd54ea7267519c3fa11838971da0f5f3c54e79da3174e7bd72aa2179c9f69887511ece16c9c0f - languageName: node - linkType: hard - -"node-forge@npm:^0.10.0": - version: 0.10.0 - resolution: "node-forge@npm:0.10.0" - checksum: 8c0/9cbf9ac8fc3889a5a46b0248f7238ee4014770bf31d22e04c0c7f04ed91c8be4584c5f534cdf6037e99f236c636c925cba960501ed2b850e077512e152760663 - languageName: node - linkType: hard - -"node-forge@npm:^1": - version: 1.3.1 - resolution: "node-forge@npm:1.3.1" - checksum: 8c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 - languageName: node - linkType: hard - -"node-gyp-build@npm:^4.3.0": - version: 4.6.0 - resolution: "node-gyp-build@npm:4.6.0" - bin: - node-gyp-build: bin.js - node-gyp-build-optional: optional.js - node-gyp-build-test: build-test.js - checksum: 8c0/147add65942acd3cf641d11d9becd030128c7298a5b4aec4ebf3ad4afcc3d0298ad2562afba3e7b2bf70160c5e2e82235e3bc043ff9c52dc68bdd36c856764fe - languageName: node - linkType: hard - -"node-gyp@npm:8.x": - version: 8.4.1 - resolution: "node-gyp@npm:8.4.1" - dependencies: - env-paths: "npm:^2.2.0" - glob: "npm:^7.1.4" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^9.1.0" - nopt: "npm:^5.0.0" - npmlog: "npm:^6.0.0" - rimraf: "npm:^3.0.2" - semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^2.0.2" - bin: - node-gyp: bin/node-gyp.js - checksum: 8c0/80ef333b3a882eb6a2695a8e08f31d618f4533eff192864e4a3a16b67ff0abc9d8c1d5fac0395550ec699326b9248c5e2b3be178492f7f4d1ccf97d2cf948021 - languageName: node - linkType: hard - -"node-gyp@npm:latest": - version: 9.3.1 - resolution: "node-gyp@npm:9.3.1" - dependencies: - env-paths: "npm:^2.2.0" - glob: "npm:^7.1.4" - graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^10.0.3" - nopt: "npm:^6.0.0" - npmlog: "npm:^6.0.0" - rimraf: "npm:^3.0.2" - semver: "npm:^7.3.5" - tar: "npm:^6.1.2" - which: "npm:^2.0.2" - bin: - node-gyp: bin/node-gyp.js - checksum: 8c0/3285c110768eb65aadd9aa1d056f917e594ea22611d21fd535ab3677ea433d0a281e7f09bc73d53e64b02214f4379dbca476dc33faffe455b0ac1d5ba92802f4 - languageName: node - linkType: hard - -"node-int64@npm:^0.4.0": - version: 0.4.0 - resolution: "node-int64@npm:0.4.0" - checksum: 8c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a - languageName: node - linkType: hard - -"node-libs-browser@npm:^2.2.1": - version: 2.2.1 - resolution: "node-libs-browser@npm:2.2.1" - dependencies: - assert: "npm:^1.1.1" - browserify-zlib: "npm:^0.2.0" - buffer: "npm:^4.3.0" - console-browserify: "npm:^1.1.0" - constants-browserify: "npm:^1.0.0" - crypto-browserify: "npm:^3.11.0" - domain-browser: "npm:^1.1.1" - events: "npm:^3.0.0" - https-browserify: "npm:^1.0.0" - os-browserify: "npm:^0.3.0" - path-browserify: "npm:0.0.1" - process: "npm:^0.11.10" - punycode: "npm:^1.2.4" - querystring-es3: "npm:^0.2.0" - readable-stream: "npm:^2.3.3" - stream-browserify: "npm:^2.0.1" - stream-http: "npm:^2.7.2" - string_decoder: "npm:^1.0.0" - timers-browserify: "npm:^2.0.4" - tty-browserify: "npm:0.0.0" - url: "npm:^0.11.0" - util: "npm:^0.11.0" - vm-browserify: "npm:^1.0.1" - checksum: 8c0/0e05321a6396408903ed642231d2bca7dd96492d074c7af161ba06a63c95378bd3de50b4105eccbbc02d93ba3da69f0ff5e624bc2a8c92ca462ceb6a403e7986 - languageName: node - linkType: hard - -"node-match-path@npm:^0.6.1": - version: 0.6.3 - resolution: "node-match-path@npm:0.6.3" - checksum: 8c0/b2e6a084f32e3cd97e600f792a46da6e68fbcf77ebad6c13ccca9eceb030f4961c358cfca26e4532e48e98779ca9a83edd2b6d7ba216c1a06961d435b1b05f9b - languageName: node - linkType: hard - -"node-modules-regexp@npm:^1.0.0": - version: 1.0.0 - resolution: "node-modules-regexp@npm:1.0.0" - checksum: 8c0/d4a9b6425a18e9fadd38f21a7f7820b3bfda4663c7d3b9f80043e3f5f7e27a0a1e04f524077b00a15ae77148cd81319da5772900229d89541062f7e876b36763 - languageName: node - linkType: hard - -"node-notifier@npm:^8.0.0": - version: 8.0.2 - resolution: "node-notifier@npm:8.0.2" - dependencies: - growly: "npm:^1.3.0" - is-wsl: "npm:^2.2.0" - semver: "npm:^7.3.2" - shellwords: "npm:^0.1.1" - uuid: "npm:^8.3.0" - which: "npm:^2.0.2" - checksum: 8c0/8df8618628c14ef26214a376dbde425264b92ae5e5944d21807f41e3d2ed3ff29f6c5aba089f4a5f22328b2157aa874e93f2304a2134b1ee59508cedf7e889bb - languageName: node - linkType: hard - -"node-releases@npm:^1.1.61, node-releases@npm:^1.1.71": - version: 1.1.72 - resolution: "node-releases@npm:1.1.72" - checksum: 8c0/a67f496d5fc8681dd435cea087ad39923adf8875c1c6454ae3c92c5fd02d0f78fd86e2bf8a390102bd66d0d230beb83580a5a1fdded2b6dc105514d08d3653b3 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.1": - version: 2.0.2 - resolution: "node-releases@npm:2.0.2" - checksum: 8c0/d4f0f090670c02c3537b38c43ff39216be0addd75908cd7027bfff30a3ce8ac9b1db0c802c60756d1e79c33b8154dd0c9f2e5bbfb0deaaf39563299d52458ae9 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 8c0/2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.8": - version: 2.0.9 - resolution: "node-releases@npm:2.0.9" - checksum: 8c0/5422bf4233efffeb7bcbf1546cf745e6ef96adfd58d3e6d3fe530d8c2682ceb6c3144512b9abe646cce440d2b1cc91f4303e9828f99f31dcc60d3c7896b76f8e - languageName: node - linkType: hard - -"nodemailer@npm:6.9.3": - version: 6.9.3 - resolution: "nodemailer@npm:6.9.3" - checksum: a51f8ca46bf8960915f74b7d0c050e498bc5a76d2e5b376ce7abe638da997c246f4a828d231e8845de5eabf189aa23dd92af2dfe63ed04c9c194f3c014ad955d - languageName: node - linkType: hard - -"nodemailer@npm:6.9.4": - version: 6.9.4 - resolution: "nodemailer@npm:6.9.4" - checksum: c50778ae499da089b5cceb4bbe6366900b14a76155c5e379e80996b46a2ba7db094b624e04b839f8c992e86bdad218f26b914467b3047fa8223142a42a4252f5 - languageName: node - linkType: hard - -"nodemon@npm:3.0.2": - version: 3.0.2 - resolution: "nodemon@npm:3.0.2" - dependencies: - chokidar: "npm:^3.5.2" - debug: "npm:^4" - ignore-by-default: "npm:^1.0.1" - minimatch: "npm:^3.1.2" - pstree.remy: "npm:^1.1.8" - semver: "npm:^7.5.3" - simple-update-notifier: "npm:^2.0.0" - supports-color: "npm:^5.5.0" - touch: "npm:^3.1.0" - undefsafe: "npm:^2.0.5" - bin: - nodemon: bin/nodemon.js - checksum: 65837603fa790d723f8d59e1f098342ed5a5517c3a38ea3b52ca3d532ed21924ecd43fbaceadb458472ae0a8ae6b8395bda22ccd062709ad50c5c4537a625c9d - languageName: node - linkType: hard - -"nopt@npm:^5.0.0": - version: 5.0.0 - resolution: "nopt@npm:5.0.0" - dependencies: - abbrev: "npm:1" - bin: - nopt: bin/nopt.js - checksum: 8c0/fc5c4f07155cb455bf5fc3dd149fac421c1a40fd83c6bfe83aa82b52f02c17c5e88301321318adaa27611c8a6811423d51d29deaceab5fa158b585a61a551061 - languageName: node - linkType: hard - -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" - dependencies: - abbrev: "npm:^1.0.0" - bin: - nopt: bin/nopt.js - checksum: 8c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 - languageName: node - linkType: hard - -"nopt@npm:~1.0.10": - version: 1.0.10 - resolution: "nopt@npm:1.0.10" - dependencies: - abbrev: "npm:1" - bin: - nopt: ./bin/nopt.js - checksum: 8c0/ddfbd892116a125fd68849ef564dd5b1f0a5ba0dbbf18782e9499e2efad8f4d3790635b47c6b5d3f7e014069e7b3ce5b8112687e9ae093fcd2678188c866fe28 - languageName: node - linkType: hard - -"normalize-package-data@npm:^2.5.0": - version: 2.5.0 - resolution: "normalize-package-data@npm:2.5.0" - dependencies: - hosted-git-info: "npm:^2.1.4" - resolve: "npm:^1.10.0" - semver: "npm:2 || 3 || 4 || 5" - validate-npm-package-license: "npm:^3.0.1" - checksum: 8c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 - languageName: node - linkType: hard - -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: "npm:^1.0.1" - checksum: 8c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b - languageName: node - linkType: hard - -"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": - version: 3.0.0 - resolution: "normalize-path@npm:3.0.0" - checksum: 8c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 - languageName: node - linkType: hard - -"normalize-range@npm:^0.1.2": - version: 0.1.2 - resolution: "normalize-range@npm:0.1.2" - checksum: 8c0/bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 - languageName: node - linkType: hard - -"normalize-url@npm:^3.0.0": - version: 3.3.0 - resolution: "normalize-url@npm:3.3.0" - checksum: 8c0/07c2fdcfac898d97eee256d7f62108034224588263fadc45caba0cc402b2bd59b9bd9e66e0c54ac9ee902fcb27af80cacd36375f641409f46749b4eb10f47352 - languageName: node - linkType: hard - -"normalize-url@npm:^4.1.0": - version: 4.5.1 - resolution: "normalize-url@npm:4.5.1" - checksum: 8c0/6362e9274fdcc310f8b17e20de29754c94e1820d864114f03d3bfd6286a0028fc51705fb3fd4e475013357b5cd7421fc17f3aba93f2289056779a9bb23bccf59 - languageName: node - linkType: hard - -"normalize-url@npm:^6.0.1": - version: 6.1.0 - resolution: "normalize-url@npm:6.1.0" - checksum: 95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 - languageName: node - linkType: hard - -"npm-run-path@npm:^2.0.0": - version: 2.0.2 - resolution: "npm-run-path@npm:2.0.2" - dependencies: - path-key: "npm:^2.0.0" - checksum: 8c0/95549a477886f48346568c97b08c4fda9cdbf7ce8a4fbc2213f36896d0d19249e32d68d7451bdcbca8041b5fba04a6b2c4a618beaf19849505c05b700740f1de - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.0, npm-run-path@npm:^4.0.1": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: "npm:^3.0.0" - checksum: 8c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac - languageName: node - linkType: hard - -"npmlog@npm:^5.0.1": - version: 5.0.1 - resolution: "npmlog@npm:5.0.1" - dependencies: - are-we-there-yet: "npm:^2.0.0" - console-control-strings: "npm:^1.1.0" - gauge: "npm:^3.0.0" - set-blocking: "npm:^2.0.0" - checksum: 8c0/489ba519031013001135c463406f55491a17fc7da295c18a04937fe3a4d523fd65e88dd418a28b967ab743d913fdeba1e29838ce0ad8c75557057c481f7d49fa - languageName: node - linkType: hard - -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: "npm:^3.0.0" - console-control-strings: "npm:^1.1.0" - gauge: "npm:^4.0.3" - set-blocking: "npm:^2.0.0" - checksum: 8c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 - languageName: node - linkType: hard - -"nth-check@npm:^1.0.2": - version: 1.0.2 - resolution: "nth-check@npm:1.0.2" - dependencies: - boolbase: "npm:~1.0.0" - checksum: 8c0/1a67ce53a99e276eea672f892d712b29f3e6802bbbef7285ffab72ecea4f972e8244defac1ebded0daffabf459def31355bb9c64e5657ac2ab032c13f185d0fd - languageName: node - linkType: hard - -"nth-check@npm:^2.0.0": - version: 2.0.0 - resolution: "nth-check@npm:2.0.0" - dependencies: - boolbase: "npm:^1.0.0" - checksum: 8c0/ef2042e155aa46de731205847ec8b386962647b2ef14ae51195e3e5da67d0fb2f49bf7492c4d2d760cdfe5caf533a992f4572eb0a0d086a1aaf894329dd782e9 - languageName: node - linkType: hard - -"nth-check@npm:^2.0.1": - version: 2.1.1 - resolution: "nth-check@npm:2.1.1" - dependencies: - boolbase: "npm:^1.0.0" - checksum: 8c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 - languageName: node - linkType: hard - -"null-loader@npm:4.0.1, null-loader@npm:^4.0.1": - version: 4.0.1 - resolution: "null-loader@npm:4.0.1" - dependencies: - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/fe9a74a928c9ddc1eab7be0e4322516439562d6efd6feeb0f7c61777d4b79a6a8e5a6bc8133deb59408f3f423bdf84c154a88168154a583154e9e33d544b4d42 - languageName: node - linkType: hard - -"nullthrows@npm:^1.0.0, nullthrows@npm:^1.1.1": - version: 1.1.1 - resolution: "nullthrows@npm:1.1.1" - checksum: 8c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 - languageName: node - linkType: hard - -"num2fraction@npm:^1.2.2": - version: 1.2.2 - resolution: "num2fraction@npm:1.2.2" - checksum: 8c0/3bf17b44af00508a2b0370146629710645c3e3ff3c052893680efe3f4a6ff5c953ce9e54734013b02b35744a49352d54fbc5d8b455fac979047ef17dd8ec74bd - languageName: node - linkType: hard - -"number-is-nan@npm:^1.0.0": - version: 1.0.1 - resolution: "number-is-nan@npm:1.0.1" - checksum: 8c0/cb97149006acc5cd512c13c1838223abdf202e76ddfa059c5e8e7507aff2c3a78cd19057516885a2f6f5b576543dc4f7b6f3c997cc7df53ae26c260855466df5 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.0": - version: 2.2.0 - resolution: "nwsapi@npm:2.2.0" - checksum: 8c0/1fd5adff9c6ab56b2e668dfb35a3f7517a5bd7a8817cd2af01037797fd1cb2fc6b22c2af1b06c1a66dd0536e36df1202a9fc21d8c37a0f24189b19d00606a091 - languageName: node - linkType: hard - -"nwsapi@npm:^2.2.2": - version: 2.2.2 - resolution: "nwsapi@npm:2.2.2" - checksum: 8c0/f7c4fedb0dc0786204ee99f440e9827d6e01a0c0322e93b5c9a9a382dd0bd9650d98ca3d1967a77554e3ec1f9a46a20cfea80a41fb00e91c5101c53d8b2c9aed - languageName: node - linkType: hard - -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 8c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 - languageName: node - linkType: hard - -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: "npm:^0.1.0" - define-property: "npm:^0.2.5" - kind-of: "npm:^3.0.3" - checksum: 8c0/79314b05e9d626159a04f1d913f4c4aba9eae8848511cf5f4c8e3b04bb3cc313b65f60357f86462c959a14c2d58380fedf89b6b32ecec237c452a5ef3900a293 - languageName: node - linkType: hard - -"object-filter@npm:^1.0.2": - version: 1.0.2 - resolution: "object-filter@npm:1.0.2" - checksum: 8c0/15ce6852c1826db20b7c65ddc7519ce76f9cf06b1cf5140b49a2d06b265ab897692cfc90627c0a907f4d1e8fd0c1fe6d36e20931d4ced5e2e30c49451b7d4b70 - languageName: node - linkType: hard - -"object-hash@npm:^3.0.0": - version: 3.0.0 - resolution: "object-hash@npm:3.0.0" - checksum: a06844537107b960c1c8b96cd2ac8592a265186bfa0f6ccafe0d34eabdb526f6fa81da1f37c43df7ed13b12a4ae3457a16071603bcd39d8beddb5f08c37b0f47 - languageName: node - linkType: hard - -"object-inspect@npm:^1.10.3, object-inspect@npm:^1.9.0": - version: 1.10.3 - resolution: "object-inspect@npm:1.10.3" - checksum: 8c0/42bf0d9df02fba934148c9d30183c57c8327aa09deefbfa24b563019fe25678a49c96bdd2c9c14d9c21f067e73bc02d0d54861d72cefb53b29e5258b9455cc50 - languageName: node - linkType: hard - -"object-inspect@npm:^1.11.0": - version: 1.12.0 - resolution: "object-inspect@npm:1.12.0" - checksum: 8c0/5ea7837f39f8da87b7cf25e81d14d21c45aae87ecbf0a5997a4d1950eacff363b85d39eab9ef6677ea36e862c708a4fe880ca2ffae1492acacdcbc963f2ee239 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.2": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: 8c0/752bb5f4dc595e214157ea8f442adb77bdb850ace762b078d151d8b6486331ab12364997a89ee6509be1023b15adf2b3774437a7105f8a5043dfda11ed622411 - languageName: node - linkType: hard - -"object-inspect@npm:^1.13.1": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d - languageName: node - linkType: hard - -"object-is@npm:^1.0.1, object-is@npm:^1.1.5": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 8c0/8c263fb03fc28f1ffb54b44b9147235c5e233dc1ca23768e7d2569740b5d860154d7cc29a30220fe28ed6d8008e2422aefdebfe987c103e1c5d190cf02d9d886 - languageName: node - linkType: hard - -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: 8c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d - languageName: node - linkType: hard - -"object-path@npm:^0.11.4": - version: 0.11.5 - resolution: "object-path@npm:0.11.5" - checksum: 8c0/cf30d7f26f9d61a5eeb68a68c707b2e9ef7ac43c71161c15a8157465947910d86d61e86cd3b321af243a22c39e7ee5691c973468cd9fff37567c80cba60b521c - languageName: node - linkType: hard - -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: "npm:^3.0.0" - checksum: 8c0/086b475bda24abd2318d2b187c3e928959b89f5cb5883d6fe5a42d03719b61fc18e765f658de9ac8730e67ba9ff26d61e73d991215948ff9ecefe771e0071029 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": - version: 4.1.2 - resolution: "object.assign@npm:4.1.2" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - has-symbols: "npm:^1.0.1" - object-keys: "npm:^1.1.1" - checksum: 8c0/ee0e796fad8952f05644d11632f046dc4b424f9a41d3816e11a612163b12a873c800456be9acdaec6221b72590ab5267e5fe4bf4cf1c67f88b05f82f133ac829 - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - has-symbols: "npm:^1.0.3" - object-keys: "npm:^1.1.1" - checksum: 8c0/2f286118c023e557757620e647b02e7c88d3d417e0c568fca0820de8ec9cca68928304854d5b03e99763eddad6e78a6716e2930f7e6372e4b9b843f3fd3056f3 - languageName: node - linkType: hard - -"object.entries@npm:^1.1.0": - version: 1.1.4 - resolution: "object.entries@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.2" - checksum: 8c0/c63a146f655b38038078f095cd181740bf8e7d2e1da7f22cc46df161db0c3a9d842aed08a1aa35a58bda38c92915a4bfcfc467093aa6f1ccdf99aca010145c44 - languageName: node - linkType: hard - -"object.entries@npm:^1.1.5": - version: 1.1.5 - resolution: "object.entries@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 8c0/308c07970818b0fb2b0ed92120b8fad76fb69a63c853592eac48c8437bb2385bc43f00b80d263aa2920b352c66c944018df7221099fc8e2d3bfb778566ca4ebb - languageName: node - linkType: hard - -"object.entries@npm:^1.1.6": - version: 1.1.6 - resolution: "object.entries@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8c0/8782c71db3a068ccbae9e0541e6b4ac2c25dc67c63f97b7e6ad3c88271d7820197e7398e37747f96542ed47c27f0b81148cdf14c42df15dc22f64818ae7bb5bf - languageName: node - linkType: hard - -"object.entries@npm:^1.1.7": - version: 1.1.7 - resolution: "object.entries@npm:1.1.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.0 || ^1.0.0": - version: 2.0.4 - resolution: "object.fromentries@npm:2.0.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - has: "npm:^1.0.3" - checksum: 8c0/e26dcb09b2ec3474ae2e2b87b1f0e6ed6c667bd9abe073760f399b791d0f37d8429c37604b9e956044079878b9875ef47ddd2f272af56b6643b7ed44b6ea07a6 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.5": - version: 2.0.5 - resolution: "object.fromentries@npm:2.0.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 8c0/a1bedcdec0e1f15fc1f9dccecf7df18ae4678fc95deb42099b649a3660511f2d1dead3b09b8f7dcf15205b0f7ce69d74e3cc3368511abf85b021d86226aa77d4 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.6": - version: 2.0.6 - resolution: "object.fromentries@npm:2.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8c0/db6759ea68131cbdb70b1152f9984b49db03e81de4f6de079b39929bebd8b45501e5333ca2351991e07ee56f4651606c023396644e8f25c0806fa39a26c4c6e6 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.7": - version: 2.0.7 - resolution: "object.fromentries@npm:2.0.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b - languageName: node - linkType: hard - -"object.getownpropertydescriptors@npm:^2.0.3, object.getownpropertydescriptors@npm:^2.1.0, object.getownpropertydescriptors@npm:^2.1.1, object.getownpropertydescriptors@npm:^2.1.2": - version: 2.1.2 - resolution: "object.getownpropertydescriptors@npm:2.1.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - checksum: 8c0/00e7910e98f24f32c1c1846d11c0d47a57d50ec34242d40562815a1137e94d814d87fa13c66b1a750ea3581a728a3c43eb3175aa173ac5e1981ba120d9d93009 - languageName: node - linkType: hard - -"object.groupby@npm:^1.0.1": - version: 1.0.1 - resolution: "object.groupby@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - checksum: 61e41fbf08cc04ed860363db9629eedeaa590fce243c0960e948fd7b11f78a9d4350065c339936d118a2dd8775d7259e26207340cc8ce688bec66cb615fec6fe - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.0": - version: 1.1.0 - resolution: "object.hasown@npm:1.1.0" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 8c0/19ed5cc17695747a7750e0d42f7a3cd9f4b209435debaaad6b0bcbcde9b18207791d61bf3e4384e3c665bb32c7cad8b30d74c039276e31dfbaf0bf4442d1cc37 - languageName: node - linkType: hard - -"object.hasown@npm:^1.1.2": - version: 1.1.2 - resolution: "object.hasown@npm:1.1.2" - dependencies: - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8c0/419fc1c74a2aea7ebb4d49b79d5b1599a010b26c18eae35bd061ccdd013ccb749c499d8dd6ee21a91e6d7264ccc592573d0f13562970f76e25fc844d8c1b02ce - languageName: node - linkType: hard - -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: "npm:^3.0.1" - checksum: 8c0/cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e - languageName: node - linkType: hard - -"object.values@npm:^1.1.0": - version: 1.1.4 - resolution: "object.values@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.2" - checksum: 8c0/c436e669ddd80b4acc4d79afb9cbff0cb794e94d711782a06b412efe3ea4fa08c7096eff22b322c74fc07286e4ff327f3005b3d12f6d769ab0941dca3e7c8f32 - languageName: node - linkType: hard - -"object.values@npm:^1.1.5": - version: 1.1.5 - resolution: "object.values@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - checksum: 8c0/9c6afa9a25ce36c27c8baef2321eaa719fc2b042ef17aa462b1fa1502ed7ce7acf18b269be2e7b0d91f228839f10a28fa30ebc8cb7e47dbf6a2e4e67cad466c1 - languageName: node - linkType: hard - -"object.values@npm:^1.1.6": - version: 1.1.6 - resolution: "object.values@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8c0/3381204390f10c9f653a4875a50d221c67b5c16cb80a6ac06c706fc82a7cad8400857d4c7a0731193b0abb56b84fe803eabcf7addcf32de76397bbf207e68c66 - languageName: node - linkType: hard - -"object.values@npm:^1.1.7": - version: 1.1.7 - resolution: "object.values@npm:1.1.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b - languageName: node - linkType: hard - -"objectorarray@npm:^1.0.4": - version: 1.0.4 - resolution: "objectorarray@npm:1.0.4" - checksum: 8c0/fb1a1c9ebadf21c3793a3c390d8675a049819c589585299de12239f9368758fbf08d34f15b2644942a4b3a8d6bb493560bf12faf099a2148a93f76427e200fa4 - languageName: node - linkType: hard - -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": - version: 1.1.2 - resolution: "obuf@npm:1.1.2" - checksum: 8c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 - languageName: node - linkType: hard - -"on-exit-leak-free@npm:^2.1.0": - version: 2.1.0 - resolution: "on-exit-leak-free@npm:2.1.0" - checksum: 8c0/66cf10b270ffd4df593efd75f9122a16980672cb583380440e44f96db1c41607c42b8986e96f1563c769daed3af270c240e1195fc6e6393da1da5c36233d848b - languageName: node - linkType: hard - -"on-finished@npm:2.4.1": - version: 2.4.1 - resolution: "on-finished@npm:2.4.1" - dependencies: - ee-first: "npm:1.1.1" - checksum: 8c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 - languageName: node - linkType: hard - -"on-finished@npm:~2.3.0": - version: 2.3.0 - resolution: "on-finished@npm:2.3.0" - dependencies: - ee-first: "npm:1.1.1" - checksum: 8c0/c904f9e518b11941eb60279a3cbfaf1289bd0001f600a950255b1dede9fe3df8cd74f38483550b3bb9485165166acb5db500c3b4c4337aec2815c88c96fcc2ea - languageName: node - linkType: hard - -"on-headers@npm:~1.0.2": - version: 1.0.2 - resolution: "on-headers@npm:1.0.2" - checksum: 8c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: "npm:1" - checksum: 8c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 - languageName: node - linkType: hard - -"onetime@npm:^2.0.0": - version: 2.0.1 - resolution: "onetime@npm:2.0.1" - dependencies: - mimic-fn: "npm:^1.0.0" - checksum: 8c0/b4e44a8c34e70e02251bfb578a6e26d6de6eedbed106cd78211d2fd64d28b6281d54924696554e4e966559644243753ac5df73c87f283b0927533d3315696215 - languageName: node - linkType: hard - -"onetime@npm:^5.1.0, onetime@npm:^5.1.2": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: "npm:^2.1.0" - checksum: 8c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f - languageName: node - linkType: hard - -"open@npm:^7.0.2, open@npm:^7.0.3": - version: 7.4.2 - resolution: "open@npm:7.4.2" - dependencies: - is-docker: "npm:^2.0.0" - is-wsl: "npm:^2.1.1" - checksum: 8c0/77573a6a68f7364f3a19a4c80492712720746b63680ee304555112605ead196afe91052bd3c3d165efdf4e9d04d255e87de0d0a77acec11ef47fd5261251813f - languageName: node - linkType: hard - -"open@npm:^8.0.9": - version: 8.4.0 - resolution: "open@npm:8.4.0" - dependencies: - define-lazy-prop: "npm:^2.0.0" - is-docker: "npm:^2.1.1" - is-wsl: "npm:^2.2.0" - checksum: 8c0/585596580226cbeb7262f36b5acc7eed05211dc26980020a2527f829336b8b07fd79cdc4240f4d995b5615f635e0a59ebb0261c4419fef91edd5d4604c463f18 - languageName: node - linkType: hard - -"opener@npm:^1.5.1, opener@npm:^1.5.2": - version: 1.5.2 - resolution: "opener@npm:1.5.2" - bin: - opener: bin/opener-bin.js - checksum: 8c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 - languageName: node - linkType: hard - -"opn@npm:^5.5.0": - version: 5.5.0 - resolution: "opn@npm:5.5.0" - dependencies: - is-wsl: "npm:^1.1.0" - checksum: 8c0/03f78b1ab464fd0d97543e2a90e47ca872e2324696bc13f741467693060fe058e87e38e9cfc9f3b568e60dfb31579fbe664d8e806b2f219262c423da953bba4c - languageName: node - linkType: hard - -"optimism@npm:^0.16.1": - version: 0.16.1 - resolution: "optimism@npm:0.16.1" - dependencies: - "@wry/context": "npm:^0.6.0" - "@wry/trie": "npm:^0.3.0" - checksum: 8c0/8b815d39968d7d89406b160de0a17920921dc3110e5ecbae513caa30ee314ea36db65ede9b278da86101ae0f8556de7226eb02ec5e6d2a67a080fd3af2d331f0 - languageName: node - linkType: hard - -"optimism@npm:^0.18.0": - version: 0.18.0 - resolution: "optimism@npm:0.18.0" - dependencies: - "@wry/caches": "npm:^1.0.0" - "@wry/context": "npm:^0.7.0" - "@wry/trie": "npm:^0.4.3" - tslib: "npm:^2.3.0" - checksum: 8e97c6d660cb80cf5f444209b9dd29ee6951fa7b344d4c4fc6d4aaf0ad0710dddaf834d0f5d7211b3658b15ef6c6a22cbcb98c7a8121e3fee9666fe0fd62d876 - languageName: node - linkType: hard - -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: "npm:~0.1.3" - fast-levenshtein: "npm:~2.0.6" - levn: "npm:~0.3.0" - prelude-ls: "npm:~1.1.2" - type-check: "npm:~0.3.2" - word-wrap: "npm:~1.2.3" - checksum: 8c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 - languageName: node - linkType: hard - -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" - dependencies: - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - word-wrap: "npm:^1.2.3" - checksum: 8c0/8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4 - languageName: node - linkType: hard - -"optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" - dependencies: - "@aashutoshrathi/word-wrap": "npm:^1.2.3" - deep-is: "npm:^0.1.3" - fast-levenshtein: "npm:^2.0.6" - levn: "npm:^0.4.1" - prelude-ls: "npm:^1.2.1" - type-check: "npm:^0.4.0" - checksum: 8c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c - languageName: node - linkType: hard - -"ora@npm:^5.4.1": - version: 5.4.1 - resolution: "ora@npm:5.4.1" - dependencies: - bl: "npm:^4.1.0" - chalk: "npm:^4.1.0" - cli-cursor: "npm:^3.1.0" - cli-spinners: "npm:^2.5.0" - is-interactive: "npm:^1.0.0" - is-unicode-supported: "npm:^0.1.0" - log-symbols: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - wcwidth: "npm:^1.0.1" - checksum: 8c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 - languageName: node - linkType: hard - -"original@npm:^1.0.0": - version: 1.0.2 - resolution: "original@npm:1.0.2" - dependencies: - url-parse: "npm:^1.4.3" - checksum: 8c0/af143d5be62b055ffb6fc2a0d08a650b822f48feca4ea21940c1f7a147727a317faedca254394ad0028ddaa4eecf7cf4376c370d746386cc35974e9122ebb14a - languageName: node - linkType: hard - -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 8c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 - languageName: node - linkType: hard - -"os-filter-obj@npm:^2.0.0": - version: 2.0.0 - resolution: "os-filter-obj@npm:2.0.0" - dependencies: - arch: "npm:^2.1.0" - checksum: 2734dcef67dfa027b3aeb8c721893c9c97b4d261efebd2a8469330d8b62ccaae072599aef0d3037bf285385fa14fb745f2e6d6958805924bb008031691cc7253 - languageName: node - linkType: hard - -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 8c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 - languageName: node - linkType: hard - -"outvariant@npm:^1.2.1": - version: 1.3.0 - resolution: "outvariant@npm:1.3.0" - checksum: 8c0/567c639e0fd41c2da5d9298b365ca99c6ba614703317b2a5bbbf7ca1df457f36afe29ce1e7fce6fddf6942f6a8304c57e400b8ff559bf5f5d2c9556c05d63553 - languageName: node - linkType: hard - -"outvariant@npm:^1.4.0": - version: 1.4.0 - resolution: "outvariant@npm:1.4.0" - checksum: 8c0/502d075509fe9709a376cdf9a3eccbd9599fe0c42ed8c723e8c95d4856fa80154e1e957ea0d0d6bb9e0c33352086a6a623803fb5f16775322ede4b9354635bb5 - languageName: node - linkType: hard - -"overlayscrollbars@npm:^1.13.1": - version: 1.13.1 - resolution: "overlayscrollbars@npm:1.13.1" - checksum: 8c0/e3eed665fc157bf5ae97a6762d2f8234d058230085e55af3b8c41ffc4d1d7c75947b877169b089462d041e361761a627f855a98b85563ddccb4869f00ddc0c28 - languageName: node - linkType: hard - -"p-all@npm:^2.1.0": - version: 2.1.0 - resolution: "p-all@npm:2.1.0" - dependencies: - p-map: "npm:^2.0.0" - checksum: 8c0/874eafa2e3f38b258f8beed34549befbc8a52a63818e0981b8beff03f592e1e1f47b8aab2483f844f2745815ffa010def58bf1edbc95614466c55411f02f3049 - languageName: node - linkType: hard - -"p-cancelable@npm:^1.0.0": - version: 1.1.0 - resolution: "p-cancelable@npm:1.1.0" - checksum: 8c0/9f16d7d58897edb07b1a9234b2bfce3665c747f0f13886e25e2144ecab4595412017cc8cc3b0042f89864b997d6dba76c130724e1c0923fc41ff3c9399b87449 - languageName: node - linkType: hard - -"p-cancelable@npm:^2.0.0": - version: 2.1.1 - resolution: "p-cancelable@npm:2.1.1" - checksum: 8c6dc1f8dd4154fd8b96a10e55a3a832684c4365fb9108056d89e79fbf21a2465027c04a59d0d797b5ffe10b54a61a32043af287d5c4860f1e996cbdbc847f01 - languageName: node - linkType: hard - -"p-each-series@npm:^2.1.0": - version: 2.2.0 - resolution: "p-each-series@npm:2.2.0" - checksum: 8c0/32a7cce1312bf70f99079db2ff070fc3ee2ed6efe0fa0444616fa38f79730ad09b461d009127d25254c4c865c40b6664e2c656b1a7b2c4781756d9173c974269 - languageName: node - linkType: hard - -"p-event@npm:^4.1.0": - version: 4.2.0 - resolution: "p-event@npm:4.2.0" - dependencies: - p-timeout: "npm:^3.1.0" - checksum: 8c0/f1b6a2fb13d47f2a8afc00150da5ece0d28940ce3d8fa562873e091d3337d298e78fee9cb18b768598ff1d11df608b2ae23868309ff6405b864a2451ccd6d25a - languageName: node - linkType: hard - -"p-filter@npm:^2.1.0": - version: 2.1.0 - resolution: "p-filter@npm:2.1.0" - dependencies: - p-map: "npm:^2.0.0" - checksum: 8c0/5ac34b74b3b691c04212d5dd2319ed484f591c557a850a3ffc93a08cb38c4f5540be059c6b10a185773c479ca583a91ea00c7d6c9958c815e6b74d052f356645 - languageName: node - linkType: hard - -"p-finally@npm:^1.0.0": - version: 1.0.0 - resolution: "p-finally@npm:1.0.0" - checksum: 8c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 - languageName: node - linkType: hard - -"p-limit@npm:3.1.0, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": - version: 3.1.0 - resolution: "p-limit@npm:3.1.0" - dependencies: - yocto-queue: "npm:^0.1.0" - checksum: 8c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a - languageName: node - linkType: hard - -"p-limit@npm:^1.1.0": - version: 1.3.0 - resolution: "p-limit@npm:1.3.0" - dependencies: - p-try: "npm:^1.0.0" - checksum: 8c0/5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee - languageName: node - linkType: hard - -"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": - version: 2.3.0 - resolution: "p-limit@npm:2.3.0" - dependencies: - p-try: "npm:^2.0.0" - checksum: 8c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 - languageName: node - linkType: hard - -"p-limit@npm:^4.0.0": - version: 4.0.0 - resolution: "p-limit@npm:4.0.0" - dependencies: - yocto-queue: "npm:^1.0.0" - checksum: 8c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad - languageName: node - linkType: hard - -"p-locate@npm:^2.0.0": - version: 2.0.0 - resolution: "p-locate@npm:2.0.0" - dependencies: - p-limit: "npm:^1.1.0" - checksum: 8c0/82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 - languageName: node - linkType: hard - -"p-locate@npm:^3.0.0": - version: 3.0.0 - resolution: "p-locate@npm:3.0.0" - dependencies: - p-limit: "npm:^2.0.0" - checksum: 8c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 - languageName: node - linkType: hard - -"p-locate@npm:^4.1.0": - version: 4.1.0 - resolution: "p-locate@npm:4.1.0" - dependencies: - p-limit: "npm:^2.2.0" - checksum: 8c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 - languageName: node - linkType: hard - -"p-locate@npm:^5.0.0": - version: 5.0.0 - resolution: "p-locate@npm:5.0.0" - dependencies: - p-limit: "npm:^3.0.2" - checksum: 8c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a - languageName: node - linkType: hard - -"p-locate@npm:^6.0.0": - version: 6.0.0 - resolution: "p-locate@npm:6.0.0" - dependencies: - p-limit: "npm:^4.0.0" - checksum: 8c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 - languageName: node - linkType: hard - -"p-map@npm:^2.0.0": - version: 2.1.0 - resolution: "p-map@npm:2.1.0" - checksum: 8c0/735dae87badd4737a2dd582b6d8f93e49a1b79eabbc9815a4d63a528d5e3523e978e127a21d784cccb637010e32103a40d2aaa3ab23ae60250b1a820ca752043 - languageName: node - linkType: hard - -"p-map@npm:^3.0.0": - version: 3.0.0 - resolution: "p-map@npm:3.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 8c0/297930737e52412ad9f5787c52774ad6496fad9a8be5f047e75fd0a3dc61930d8f7a9b2bbe1c4d1404e54324228a4f69721da2538208dadaa4ef4c81773c9f20 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 8c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 - languageName: node - linkType: hard - -"p-retry@npm:^3.0.1": - version: 3.0.1 - resolution: "p-retry@npm:3.0.1" - dependencies: - retry: "npm:^0.12.0" - checksum: 8c0/4fbec30cb0d8d10c5d9d1787a2d2c2b5ee60ddfa1897e86ec4e556ca1dff0901859872d7a7ecc33dd94af6e1c3a92ed79cc828161bbd221a2a1e464971c51b1b - languageName: node - linkType: hard - -"p-retry@npm:^4.2.0": - version: 4.5.0 - resolution: "p-retry@npm:4.5.0" - dependencies: - "@types/retry": "npm:^0.12.0" - retry: "npm:^0.12.0" - checksum: 8c0/748d524304973385b4ec7d10bca92034a8a7dcc6231cb9ac592ea5e1d3fb2dc9b2e8178d58ce2ffb1d7ded5889126c5efe9bcb3d373249c9d5746bb86f3ecdc6 - languageName: node - linkType: hard - -"p-retry@npm:^4.5.0": - version: 4.6.2 - resolution: "p-retry@npm:4.6.2" - dependencies: - "@types/retry": "npm:0.12.0" - retry: "npm:^0.13.1" - checksum: 8c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 - languageName: node - linkType: hard - -"p-timeout@npm:^3.1.0": - version: 3.2.0 - resolution: "p-timeout@npm:3.2.0" - dependencies: - p-finally: "npm:^1.0.0" - checksum: 8c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 - languageName: node - linkType: hard - -"p-try@npm:^1.0.0": - version: 1.0.0 - resolution: "p-try@npm:1.0.0" - checksum: 8c0/757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a - languageName: node - linkType: hard - -"p-try@npm:^2.0.0": - version: 2.2.0 - resolution: "p-try@npm:2.2.0" - checksum: 8c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f - languageName: node - linkType: hard - -"package-json@npm:^6.3.0": - version: 6.5.0 - resolution: "package-json@npm:6.5.0" - dependencies: - got: "npm:^9.6.0" - registry-auth-token: "npm:^4.0.0" - registry-url: "npm:^5.0.0" - semver: "npm:^6.2.0" - checksum: 8c0/60c29fe357af43f96c92c334aa0160cebde44e8e65c1e5f9b065efb3f501af812f268ec967a07757b56447834ef7f71458ebbab94425a9f09c271f348f9b764f - languageName: node - linkType: hard - -"pako@npm:~1.0.5": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 8c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe - languageName: node - linkType: hard - -"parallel-transform@npm:^1.1.0": - version: 1.2.0 - resolution: "parallel-transform@npm:1.2.0" - dependencies: - cyclist: "npm:^1.0.1" - inherits: "npm:^2.0.3" - readable-stream: "npm:^2.1.5" - checksum: 8c0/ab0e58569e73681ca4b9c9228189bdb6cbea535295fae344cf0d8342fd33a950961914f3c414f81894c1498fb9ad1c079b4625d2b7ceae9e6ab812f22e3bea3f - languageName: node - linkType: hard - -"param-case@npm:3.0.4, param-case@npm:^3.0.3, param-case@npm:^3.0.4": - version: 3.0.4 - resolution: "param-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 - languageName: node - linkType: hard - -"parent-module@npm:^1.0.0": - version: 1.0.1 - resolution: "parent-module@npm:1.0.1" - dependencies: - callsites: "npm:^3.0.0" - checksum: 8c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 - languageName: node - linkType: hard - -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": - version: 5.1.6 - resolution: "parse-asn1@npm:5.1.6" - dependencies: - asn1.js: "npm:^5.2.0" - browserify-aes: "npm:^1.0.0" - evp_bytestokey: "npm:^1.0.0" - pbkdf2: "npm:^3.0.3" - safe-buffer: "npm:^5.1.1" - checksum: 8c0/4ed1d9b9e120c5484d29d67bb90171aac0b73422bc016d6294160aea983275c28a27ab85d862059a36a86a97dd31b7ddd97486802ca9fac67115fe3409e9dcbd - languageName: node - linkType: hard - -"parse-entities@npm:^2.0.0": - version: 2.0.0 - resolution: "parse-entities@npm:2.0.0" - dependencies: - character-entities: "npm:^1.0.0" - character-entities-legacy: "npm:^1.0.0" - character-reference-invalid: "npm:^1.0.0" - is-alphanumerical: "npm:^1.0.0" - is-decimal: "npm:^1.0.0" - is-hexadecimal: "npm:^1.0.0" - checksum: 8c0/f85a22c0ea406ff26b53fdc28641f01cc36fa49eb2e3135f02693286c89ef0bcefc2262d99b3688e20aac2a14fd10b75c518583e875c1b9fe3d1f937795e0854 - languageName: node - linkType: hard - -"parse-filepath@npm:^1.0.2": - version: 1.0.2 - resolution: "parse-filepath@npm:1.0.2" - dependencies: - is-absolute: "npm:^1.0.0" - map-cache: "npm:^0.2.0" - path-root: "npm:^0.1.1" - checksum: 8c0/37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 - languageName: node - linkType: hard - -"parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "parse-json@npm:4.0.0" - dependencies: - error-ex: "npm:^1.3.1" - json-parse-better-errors: "npm:^1.0.1" - checksum: 8c0/8d80790b772ccb1bcea4e09e2697555e519d83d04a77c2b4237389b813f82898943a93ffff7d0d2406203bdd0c30dcf95b1661e3a53f83d0e417f053957bef32 - languageName: node - linkType: hard - -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": - version: 5.2.0 - resolution: "parse-json@npm:5.2.0" - dependencies: - "@babel/code-frame": "npm:^7.0.0" - error-ex: "npm:^1.3.1" - json-parse-even-better-errors: "npm:^2.3.0" - lines-and-columns: "npm:^1.1.6" - checksum: 8c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 - languageName: node - linkType: hard - -"parse-ms@npm:^2.1.0": - version: 2.1.0 - resolution: "parse-ms@npm:2.1.0" - checksum: 8c0/9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 - languageName: node - linkType: hard - -"parse-passwd@npm:^1.0.0": - version: 1.0.0 - resolution: "parse-passwd@npm:1.0.0" - checksum: 8c0/1c05c05f95f184ab9ca604841d78e4fe3294d46b8e3641d305dcc28e930da0e14e602dbda9f3811cd48df5b0e2e27dbef7357bf0d7c40e41b18c11c3a8b8d17b - languageName: node - linkType: hard - -"parse5-htmlparser2-tree-adapter@npm:^7.0.0": - version: 7.0.0 - resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" - dependencies: - domhandler: "npm:^5.0.2" - parse5: "npm:^7.0.0" - checksum: 8c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 - languageName: node - linkType: hard - -"parse5@npm:6.0.1, parse5@npm:^6.0.0": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 8c0/595821edc094ecbcfb9ddcb46a3e1fe3a718540f8320eff08b8cf6742a5114cce2d46d45f95c26191c11b184dcaf4e2960abcd9c5ed9eb9393ac9a37efcfdecb - languageName: node - linkType: hard - -"parse5@npm:^7.0.0, parse5@npm:^7.1.1": - version: 7.1.2 - resolution: "parse5@npm:7.1.2" - dependencies: - entities: "npm:^4.4.0" - checksum: 8c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 - languageName: node - linkType: hard - -"parseley@npm:^0.12.0": - version: 0.12.1 - resolution: "parseley@npm:0.12.1" - dependencies: - leac: "npm:^0.6.0" - peberminta: "npm:^0.9.0" - checksum: df3de74172b72305b867298a71e5882c413df75d30f2bafb5fb70779dfd349c5e4db03441fbf8ca83da8e4aa72bd0ef2b5c73086c4825d27d1c649d61bc0bcc0 - languageName: node - linkType: hard - -"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": - version: 1.3.3 - resolution: "parseurl@npm:1.3.3" - checksum: 8c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 - languageName: node - linkType: hard - -"pascal-case@npm:^3.1.2": - version: 3.1.2 - resolution: "pascal-case@npm:3.1.2" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 - languageName: node - linkType: hard - -"pascalcase@npm:1.0.0, pascalcase@npm:^1.0.0": - version: 1.0.0 - resolution: "pascalcase@npm:1.0.0" - checksum: 8c0/5fac7a6346b23307664f020cdd42d245a3189bf3b9b21cd167ea5e28a17b403e6670c60a3055d9c7d56ec00ffab446f862ff8148add23cd2c5a035c4d07efa26 - languageName: node - linkType: hard - -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: 8c0/48dfe90618e33810bf58211d8f39ad2c0262f19ad6354da1ba563935b5f429f36409a1fb9187c220328f7a4dc5969917f8e3e01ee089b5f1627b02aefe39567b - languageName: node - linkType: hard - -"path-browserify@npm:0.0.1": - version: 0.0.1 - resolution: "path-browserify@npm:0.0.1" - checksum: 8c0/3d59710cddeea06509d91935196185900f3d9d29376dff68ff0e146fbd41d0fb304e983d0158f30cabe4dd2ffcc6a7d3d977631994ee984c88e66aed50a1ccd3 - languageName: node - linkType: hard - -"path-browserify@npm:^1.0.1": - version: 1.0.1 - resolution: "path-browserify@npm:1.0.1" - checksum: 8c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 - languageName: node - linkType: hard - -"path-case@npm:^3.0.4": - version: 3.0.4 - resolution: "path-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 - languageName: node - linkType: hard - -"path-dirname@npm:^1.0.0": - version: 1.0.2 - resolution: "path-dirname@npm:1.0.2" - checksum: 8c0/71e59be2bada7c91f62b976245fd421b7cb01fde3207fe53a82d8880621ad04fd8b434e628c9cf4e796259fc168a107d77cd56837725267c5b2c58cefe2c4e1b - languageName: node - linkType: hard - -"path-exists@npm:^3.0.0": - version: 3.0.0 - resolution: "path-exists@npm:3.0.0" - checksum: 8c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 - languageName: node - linkType: hard - -"path-exists@npm:^4.0.0": - version: 4.0.0 - resolution: "path-exists@npm:4.0.0" - checksum: 8c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b - languageName: node - linkType: hard - -"path-exists@npm:^5.0.0": - version: 5.0.0 - resolution: "path-exists@npm:5.0.0" - checksum: 8c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 8c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 - languageName: node - linkType: hard - -"path-is-inside@npm:^1.0.2": - version: 1.0.2 - resolution: "path-is-inside@npm:1.0.2" - checksum: 8c0/7fdd4b41672c70461cce734fc222b33e7b447fa489c7c4377c95e7e6852d83d69741f307d88ec0cc3b385b41cb4accc6efac3c7c511cd18512e95424f5fa980c - languageName: node - linkType: hard - -"path-key@npm:^2.0.0, path-key@npm:^2.0.1": - version: 2.0.1 - resolution: "path-key@npm:2.0.1" - checksum: 8c0/dd2044f029a8e58ac31d2bf34c34b93c3095c1481942960e84dd2faa95bbb71b9b762a106aead0646695330936414b31ca0bd862bf488a937ad17c8c5d73b32b - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 8c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c - languageName: node - linkType: hard - -"path-parse@npm:^1.0.6, path-parse@npm:^1.0.7": - version: 1.0.7 - resolution: "path-parse@npm:1.0.7" - checksum: 8c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 - languageName: node - linkType: hard - -"path-root-regex@npm:^0.1.0": - version: 0.1.2 - resolution: "path-root-regex@npm:0.1.2" - checksum: 8c0/27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 - languageName: node - linkType: hard - -"path-root@npm:^0.1.1": - version: 0.1.1 - resolution: "path-root@npm:0.1.1" - dependencies: - path-root-regex: "npm:^0.1.0" - checksum: 8c0/aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 - languageName: node - linkType: hard - -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" - dependencies: - lru-cache: "npm:^9.1.1 || ^10.0.0" - minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: 8c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e - languageName: node - linkType: hard - -"path-to-regexp@npm:0.1.7": - version: 0.1.7 - resolution: "path-to-regexp@npm:0.1.7" - checksum: 8c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 - languageName: node - linkType: hard - -"path-to-regexp@npm:^6.2.0": - version: 6.2.1 - resolution: "path-to-regexp@npm:6.2.1" - checksum: 8c0/7a73811ca703e5c199e5b50b9649ab8f6f7b458a37f7dff9ea338815203f5b1f95fe8cb24d4fdfe2eab5d67ce43562d92534330babca35cdf3231f966adb9360 - languageName: node - linkType: hard - -"path-type@npm:^3.0.0": - version: 3.0.0 - resolution: "path-type@npm:3.0.0" - dependencies: - pify: "npm:^3.0.0" - checksum: 8c0/1332c632f1cac15790ebab8dd729b67ba04fc96f81647496feb1c2975d862d046f41e4b975dbd893048999b2cc90721f72924ad820acc58c78507ba7141a8e56 - languageName: node - linkType: hard - -"path-type@npm:^4.0.0": - version: 4.0.0 - resolution: "path-type@npm:4.0.0" - checksum: 8c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c - languageName: node - linkType: hard - -"pbkdf2@npm:^3.0.3": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" - dependencies: - create-hash: "npm:^1.1.2" - create-hmac: "npm:^1.1.4" - ripemd160: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 8c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd - languageName: node - linkType: hard - -"peberminta@npm:^0.9.0": - version: 0.9.0 - resolution: "peberminta@npm:0.9.0" - checksum: 59c2c39269d9f7f559cf44582f1c0503524c6a9bc3478e0309adba2b41c71ab98745a239a4e6f98f46105291256e6d8f12ae9860d9f016b1c9a6f52c0b63bfe7 - languageName: node - linkType: hard - -"peek-readable@npm:^5.0.0": - version: 5.0.0 - resolution: "peek-readable@npm:5.0.0" - checksum: 060aece3a907a157b4839aa923b61b664b59cac7296dc8d8e0ddcc39065a4f1e328dd2f171c8a49e869aabc6e076a1be59f939183fb0ababc81f3c870006d672 - languageName: node - linkType: hard - -"picocolors@npm:^0.2.1": - version: 0.2.1 - resolution: "picocolors@npm:0.2.1" - checksum: 8c0/98a83c77912c80aea0fc518aec184768501bfceafa490714b0f43eda9c52e372b844ce0a591e822bbfe5df16dcf366be7cbdb9534d39cf54a80796340371ee17 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: 8c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 - languageName: node - linkType: hard - -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3": - version: 2.3.0 - resolution: "picomatch@npm:2.3.0" - checksum: 8c0/a65bde78212368e16afb82429a0ea033d20a836270446acb53ec6e31d939bccf1213f788bc49361f7aff47b67c1fb74d898f99964f67f26ca07a3cd815ddbcbb - languageName: node - linkType: hard - -"picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 8c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be - languageName: node - linkType: hard - -"pify@npm:^2.0.0, pify@npm:^2.2.0, pify@npm:^2.3.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 8c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc - languageName: node - linkType: hard - -"pify@npm:^3.0.0": - version: 3.0.0 - resolution: "pify@npm:3.0.0" - checksum: 8c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 - languageName: node - linkType: hard - -"pify@npm:^4.0.1": - version: 4.0.1 - resolution: "pify@npm:4.0.1" - checksum: 8c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf - languageName: node - linkType: hard - -"pinkie-promise@npm:^2.0.0": - version: 2.0.1 - resolution: "pinkie-promise@npm:2.0.1" - dependencies: - pinkie: "npm:^2.0.0" - checksum: 8c0/11b5e5ce2b090c573f8fad7b517cbca1bb9a247587306f05ae71aef6f9b2cd2b923c304aa9663c2409cfde27b367286179f1379bc4ec18a3fbf2bb0d473b160a - languageName: node - linkType: hard - -"pinkie@npm:^2.0.0": - version: 2.0.4 - resolution: "pinkie@npm:2.0.4" - checksum: 8c0/25228b08b5597da42dc384221aa0ce56ee0fbf32965db12ba838e2a9ca0193c2f0609c45551ee077ccd2060bf109137fdb185b00c6d7e0ed7e35006d20fdcbc6 - languageName: node - linkType: hard - -"pino-abstract-transport@npm:v1.1.0": - version: 1.1.0 - resolution: "pino-abstract-transport@npm:1.1.0" - dependencies: - readable-stream: "npm:^4.0.0" - split2: "npm:^4.0.0" - checksum: 6e9b9d5a2c0a37f91ecaf224d335daae1ae682b1c79a05b06ef9e0f0a5d289f8e597992217efc857796dae6f1067e9b4882f95c6228ff433ddc153532cae8aca - languageName: node - linkType: hard - -"pino-pretty@npm:^4.7.1": - version: 4.8.0 - resolution: "pino-pretty@npm:4.8.0" - dependencies: - "@hapi/bourne": "npm:^2.0.0" - args: "npm:^5.0.1" - chalk: "npm:^4.0.0" - dateformat: "npm:^4.5.1" - fast-safe-stringify: "npm:^2.0.7" - jmespath: "npm:^0.15.0" - joycon: "npm:^2.2.5" - pump: "npm:^3.0.0" - readable-stream: "npm:^3.6.0" - rfdc: "npm:^1.3.0" - split2: "npm:^3.1.1" - strip-json-comments: "npm:^3.1.1" - bin: - pino-pretty: bin.js - checksum: 8c0/71c7470c57726e0bc6acd0dea4efc682cef451ead7ca7025b84fde3595b49c53bee3df7a329b8759206621214b72180c3647ba8814a206d942a9194b7f32f44c - languageName: node - linkType: hard - -"pino-std-serializers@npm:^3.1.0": - version: 3.2.0 - resolution: "pino-std-serializers@npm:3.2.0" - checksum: 8c0/ae08159372b5bbe69f13770a7f20ba7ded0bb97b2c6f42f780995582135ca907e66504f06371c12f991dbfcd489280f942786c02a9e8e952974d455cb0a477c9 - languageName: node - linkType: hard - -"pino-std-serializers@npm:^6.0.0": - version: 6.1.0 - resolution: "pino-std-serializers@npm:6.1.0" - checksum: 8c0/4901b4d2fd1e86398d062c63d34175559abfe46f74f6daa81ac7d311eacb5c3afd76d425982120c287442ae2ff1b74826bbf3f9e9d4d55c9b78549170795a74a - languageName: node - linkType: hard - -"pino@npm:8.16.2": - version: 8.16.2 - resolution: "pino@npm:8.16.2" - dependencies: - atomic-sleep: "npm:^1.0.0" - fast-redact: "npm:^3.1.1" - on-exit-leak-free: "npm:^2.1.0" - pino-abstract-transport: "npm:v1.1.0" - pino-std-serializers: "npm:^6.0.0" - process-warning: "npm:^2.0.0" - quick-format-unescaped: "npm:^4.0.3" - real-require: "npm:^0.2.0" - safe-stable-stringify: "npm:^2.3.1" - sonic-boom: "npm:^3.7.0" - thread-stream: "npm:^2.0.0" - bin: - pino: bin.js - checksum: ea1b2f426985a442b65566a75e3f20eed47c1f51f3aea9a10fc16a452feb339cde4d5439d724c822408fce6a8bfcf6d24f61421547f4cc718f44a6eb47921293 - languageName: node - linkType: hard - -"pino@npm:^6.11.3": - version: 6.13.4 - resolution: "pino@npm:6.13.4" - dependencies: - fast-redact: "npm:^3.0.0" - fast-safe-stringify: "npm:^2.0.8" - flatstr: "npm:^1.0.12" - pino-std-serializers: "npm:^3.1.0" - process-warning: "npm:^1.0.0" - quick-format-unescaped: "npm:^4.0.3" - sonic-boom: "npm:^1.0.2" - bin: - pino: bin.js - checksum: 8c0/bdfb172f75896b9c23ebbf90c0a4a162dab5ebfa3cdf2349c6e41b675d7dbf625d578920072d832caab196d5522da0ad3a4a568a55d5360eadd0868ef0b322e6 - languageName: node - linkType: hard - -"pino@npm:^8.16.0": - version: 8.17.2 - resolution: "pino@npm:8.17.2" - dependencies: - atomic-sleep: "npm:^1.0.0" - fast-redact: "npm:^3.1.1" - on-exit-leak-free: "npm:^2.1.0" - pino-abstract-transport: "npm:v1.1.0" - pino-std-serializers: "npm:^6.0.0" - process-warning: "npm:^3.0.0" - quick-format-unescaped: "npm:^4.0.3" - real-require: "npm:^0.2.0" - safe-stable-stringify: "npm:^2.3.1" - sonic-boom: "npm:^3.7.0" - thread-stream: "npm:^2.0.0" - bin: - pino: bin.js - checksum: 9e55af6cd9d1833a4dbe64924fc73163295acd3c988a9c7db88926669f2574ab7ec607e8487b6dd71dbdad2d7c1c1aac439f37e59233f37220b1a9d88fa2ce01 - languageName: node - linkType: hard - -"pirates@npm:^4.0.0, pirates@npm:^4.0.1": - version: 4.0.1 - resolution: "pirates@npm:4.0.1" - dependencies: - node-modules-regexp: "npm:^1.0.0" - checksum: 8c0/5713323c619b27c7ae895542a5a476cf3cda6d4f1446c3ef4d613050a476463ad73369bbbab75c316a2e8211a5200d427913c14d928e900e18a291de334c1963 - languageName: node - linkType: hard - -"pirates@npm:^4.0.4, pirates@npm:^4.0.5": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: 8c0/58b6ff0f137a3d70ff34ac4802fd19819cdc19b53e9c95adecae6c7cfc77719a11f561ad85d46e79e520ef57c31145a564c8bc3bee8cfee75d441fab2928a51d - languageName: node - linkType: hard - -"pirates@npm:^4.0.6": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 - languageName: node - linkType: hard - -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: "npm:^3.0.0" - checksum: 8c0/902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 - languageName: node - linkType: hard - -"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": - version: 4.2.0 - resolution: "pkg-dir@npm:4.2.0" - dependencies: - find-up: "npm:^4.0.0" - checksum: 8c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 - languageName: node - linkType: hard - -"pkg-dir@npm:^5.0.0": - version: 5.0.0 - resolution: "pkg-dir@npm:5.0.0" - dependencies: - find-up: "npm:^5.0.0" - checksum: 8c0/793a496d685dc55bbbdbbb22d884535c3b29241e48e3e8d37e448113a71b9e42f5481a61fdc672d7322de12fbb2c584dd3a68bf89b18fffce5c48a390f911bc5 - languageName: node - linkType: hard - -"pkg-dir@npm:^7.0.0": - version: 7.0.0 - resolution: "pkg-dir@npm:7.0.0" - dependencies: - find-up: "npm:^6.3.0" - checksum: 8c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 - languageName: node - linkType: hard - -"pkg-up@npm:3.1.0, pkg-up@npm:^3.1.0": - version: 3.1.0 - resolution: "pkg-up@npm:3.1.0" - dependencies: - find-up: "npm:^3.0.0" - checksum: 8c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab - languageName: node - linkType: hard - -"pluralize@npm:8.0.0, pluralize@npm:^8.0.0": - version: 8.0.0 - resolution: "pluralize@npm:8.0.0" - checksum: 8c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 - languageName: node - linkType: hard - -"pnp-webpack-plugin@npm:1.6.4": - version: 1.6.4 - resolution: "pnp-webpack-plugin@npm:1.6.4" - dependencies: - ts-pnp: "npm:^1.1.6" - checksum: 8c0/6cedab8a9cd129b9f58408023f80cad528e361685f50c2149da7ad8fb79bd2043d3250c68b8723aa43ecdb913931edf04ecaa4d7afe719d0e151055d41779599 - languageName: node - linkType: hard - -"polished@npm:^4.0.5": - version: 4.1.2 - resolution: "polished@npm:4.1.2" - dependencies: - "@babel/runtime": "npm:^7.13.17" - checksum: 8c0/22a8aad9cad522f08b0cea5a1fba2cbe1e6bb09843182ae1e9174a40b2eb5a6833a8c1a0f6264b1a802fe2c63bdca7222603877ac25a016972bca5e46f9f4012 - languageName: node - linkType: hard - -"popmotion@npm:11.0.3": - version: 11.0.3 - resolution: "popmotion@npm:11.0.3" - dependencies: - framesync: "npm:6.0.1" - hey-listen: "npm:^1.0.8" - style-value-types: "npm:5.0.0" - tslib: "npm:^2.1.0" - checksum: ed196cf034c199a2ab6095f047924b38e24f386c33a182970ad6e1769002b72adff34a72ba7ab2cf34ff5bbfd711ef4caf2e9843ebb7a5c9cafa27c50e525f70 - languageName: node - linkType: hard - -"portfinder@npm:1.0.32": - version: 1.0.32 - resolution: "portfinder@npm:1.0.32" - dependencies: - async: "npm:^2.6.4" - debug: "npm:^3.2.7" - mkdirp: "npm:^0.5.6" - checksum: 8c0/cef8b567b78aabccc59fe8e103bac8b394bb45a6a69be626608f099f454124c775aaf47b274c006332c07ab3f501cde55e49aaeb9d49d78d90362d776a565cbf - languageName: node - linkType: hard - -"portfinder@npm:^1.0.26": - version: 1.0.28 - resolution: "portfinder@npm:1.0.28" - dependencies: - async: "npm:^2.6.2" - debug: "npm:^3.1.1" - mkdirp: "npm:^0.5.5" - checksum: 8c0/fefd3d65a6464b498e0e9b4a4b82f29489441bb1892a3350403cfdf6e591e583d9e75bac1c6ae8ca2cdf1a942ae18890831a0a855bb1bb977678acdf9e5a560f - languageName: node - linkType: hard - -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: 8c0/cce88011548a973b4af58361cd8f5f7b5a6faff8eef0901565802f067bcabf82597e920d4c97c22068464be3cbc6447af589f6cc8a7d813ea7165be60a0395bc - languageName: node - linkType: hard - -"postcss-calc@npm:^7.0.1": - version: 7.0.5 - resolution: "postcss-calc@npm:7.0.5" - dependencies: - postcss: "npm:^7.0.27" - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.0.2" - checksum: 8c0/37f10245a1280d96165a8f56a0cd90fcbc3f9277fc50b54ba79a45f24da4662b8ce57dcffe81331e8997bcc56f7b89fae4e8d9dc27b8c5d72010976d622388e3 - languageName: node - linkType: hard - -"postcss-calc@npm:^9.0.0": - version: 9.0.1 - resolution: "postcss-calc@npm:9.0.1" - dependencies: - postcss-selector-parser: "npm:^6.0.11" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.2 - checksum: 8c0/e0df07337162dbcaac5d6e030c7fd289e21da8766a9daca5d6b2b3c8094bb524ae5d74c70048ea7fe5fe4960ce048c60ac97922d917c3bbff34f58e9d2b0eb0e - languageName: node - linkType: hard - -"postcss-colormin@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-colormin@npm:4.0.3" - dependencies: - browserslist: "npm:^4.0.0" - color: "npm:^3.0.0" - has: "npm:^1.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/7f722c3287e51c6103554e536d0ee8497f137f6292874180cb50de98c8e86b0701898aafc81fa133fef29f3f857dc2a36b101d9b629556dcff02487e91e668af - languageName: node - linkType: hard - -"postcss-colormin@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-colormin@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-api: "npm:^3.0.0" - colord: "npm:^2.9.1" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/b05763b68f7f23333f408734f13be4bde641934ecbde25ac7d7fa648ab5e826716bffac0193067b317e861c6dabad81db9c012e865a83f81b6bce5c7e25c0fdd - languageName: node - linkType: hard - -"postcss-convert-values@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-convert-values@npm:4.0.1" - dependencies: - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/19d81085b7e74610f35a857eb0daba90fc3f0195e211175051ff7cd77f1a6c2b16e82059495651c37e83a3c47b4ad8eae4eb6e7792ad01a2694ba541f518f50e - languageName: node - linkType: hard - -"postcss-convert-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-convert-values@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/8c20d31a39e0ddf7db4fde0da62e293279b5ee84c36919f2e5760650fa6f2984f1a40bfdbe8d1f7829bd37b17e5e589535f0aaaf71d4df29ad203cef830b9d7a - languageName: node - linkType: hard - -"postcss-discard-comments@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-discard-comments@npm:4.0.2" - dependencies: - postcss: "npm:^7.0.0" - checksum: 8c0/12b491ae1a730137bc77443d2dda274ec385e8a8994a87eda67ca811c9b733f21d362fac6762f9b850a9093ef645201bedcfda91983909cd1b14092524dbbe26 - languageName: node - linkType: hard - -"postcss-discard-comments@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-comments@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/c8792cd99c7696b21917d55937e02fb854a82ee308edf7564f18ad19bec4abf4756ba234e17f7d129d6b0dbaf6253bcddc435b1aeee190d4d26dcc2448f5453a - languageName: node - linkType: hard - -"postcss-discard-duplicates@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-discard-duplicates@npm:4.0.2" - dependencies: - postcss: "npm:^7.0.0" - checksum: 8c0/ca7a9a1564e4a8aedccb0fb9a8b4b3b42328998d30e54a6cbff8cee85cf9d1751acb802549f2cf8d4a846731f9a22946e83d2ab430ea66332c58e13d9c6e9d08 - languageName: node - linkType: hard - -"postcss-discard-duplicates@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-duplicates@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/5fb0de3b187b09538a8c10f25bcc3e7b0865337a96a0599f8213864f0d52812f6c90142d170258293a30484b95e096dee28fc8fddb302016f93d4a8d269bb18f - languageName: node - linkType: hard - -"postcss-discard-empty@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-discard-empty@npm:4.0.1" - dependencies: - postcss: "npm:^7.0.0" - checksum: 8c0/be6c575a92dfd8b43e3e31af27b4585273e51b8576a8f8b68128fd66a050aeed2395e8f68000ab4047a5a51388fd1c1d6abdcb21469bccf99394faef5638ed94 - languageName: node - linkType: hard - -"postcss-discard-empty@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-empty@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/5dfe01f93ee2bb85e71f7832498bd051b772b9c724a5630f749237b07a14b47c2b2800b4215ab4cf0d8cba29552725b40334f3ef9d349f7aacf410ad351715dc - languageName: node - linkType: hard - -"postcss-discard-overridden@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-discard-overridden@npm:4.0.1" - dependencies: - postcss: "npm:^7.0.0" - checksum: 8c0/187408dbc7668d8b9c8326b8c8a615c191d1cd159095dd77a35bdd7d53688a650e68f043cdacccb78429a0d0339b834313060ae45c63d022ec3c13f581d37be8 - languageName: node - linkType: hard - -"postcss-discard-overridden@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-discard-overridden@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/3a0c91241a95a887ef10227c761fb2c48870966bda5530de635002e485abc2743dfbfdc96e3b6a21f10c6231f0cfbe1a0eae0a01a89629d64a711eab3ee008c6 - languageName: node - linkType: hard - -"postcss-flexbugs-fixes@npm:^4.2.1": - version: 4.2.1 - resolution: "postcss-flexbugs-fixes@npm:4.2.1" - dependencies: - postcss: "npm:^7.0.26" - checksum: 8c0/57d2894dadd5762ae243792ca45806281ca9c32a9270519f2fd5d95cf1445590df260997b3d9ff937b9e1a551644799881c7f337352dde4e453805687c1ebee8 - languageName: node - linkType: hard - -"postcss-import@npm:^15.1.0": - version: 15.1.0 - resolution: "postcss-import@npm:15.1.0" - dependencies: - postcss-value-parser: "npm:^4.0.0" - read-cache: "npm:^1.0.0" - resolve: "npm:^1.1.7" - peerDependencies: - postcss: ^8.0.0 - checksum: 518aee5c83ea6940e890b0be675a2588db68b2582319f48c3b4e06535a50ea6ee45f7e63e4309f8754473245c47a0372632378d1d73d901310f295a92f26f17b - languageName: node - linkType: hard - -"postcss-js@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-js@npm:4.0.1" - dependencies: - camelcase-css: "npm:^2.0.1" - peerDependencies: - postcss: ^8.4.21 - checksum: af35d55cb873b0797d3b42529514f5318f447b134541844285c9ac31a17497297eb72296902967911bb737a75163441695737300ce2794e3bd8c70c13a3b106e - languageName: node - linkType: hard - -"postcss-load-config@npm:^4.0.1": - version: 4.0.2 - resolution: "postcss-load-config@npm:4.0.2" - dependencies: - lilconfig: "npm:^3.0.0" - yaml: "npm:^2.3.4" - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - checksum: 3d7939acb3570b0e4b4740e483d6e555a3e2de815219cb8a3c8fc03f575a6bde667443aa93369c0be390af845cb84471bf623e24af833260de3a105b78d42519 - languageName: node - linkType: hard - -"postcss-loader@npm:^4.2.0": - version: 4.3.0 - resolution: "postcss-loader@npm:4.3.0" - dependencies: - cosmiconfig: "npm:^7.0.0" - klona: "npm:^2.0.4" - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - semver: "npm:^7.3.4" - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/3405584e571ec4d66d7c2b665a2a4823eaa7208433fd40eb6b669ac441f23398bc81fc18fe631c7d7805a303ad31f284a5066c4097dd082c1faba7edf13db8aa - languageName: node - linkType: hard - -"postcss-merge-longhand@npm:^4.0.11": - version: 4.0.11 - resolution: "postcss-merge-longhand@npm:4.0.11" - dependencies: - css-color-names: "npm:0.0.4" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - stylehacks: "npm:^4.0.0" - checksum: 8c0/6611e41d7fd103befdf429277214da56bcba37e4f2e7a5a0d4b463f418e7b66f71bfa6b5bb21be6e92e9d9e30884d9cc13c7f8025abef69e0941a0202afbcf15 - languageName: node - linkType: hard - -"postcss-merge-longhand@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-merge-longhand@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - stylehacks: "npm:^6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/0b67c590d301ab7f087ea7421e1eac0cccd2ff1c146a2dfa16d3f32b770d12a5999b8c6ea177efc443f4fb9df13b941c401365c634533878eef1982ad9d0bb98 - languageName: node - linkType: hard - -"postcss-merge-rules@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-merge-rules@npm:4.0.3" - dependencies: - browserslist: "npm:^4.0.0" - caniuse-api: "npm:^3.0.0" - cssnano-util-same-parent: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-selector-parser: "npm:^3.0.0" - vendors: "npm:^1.0.0" - checksum: 8c0/999462a396a3987355bce10318db03b2cff08b8162285e98f247713620eb4ac352e325f4dec6362dda91747303d3c83386e48aad3cc8e671f5e51a094a7d9c68 - languageName: node - linkType: hard - -"postcss-merge-rules@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-merge-rules@npm:6.0.1" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-api: "npm:^3.0.0" - cssnano-utils: "npm:^4.0.0" - postcss-selector-parser: "npm:^6.0.5" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/b6a2a196905cd170757aa7b8bc74dab1fc7e2b2ca6a19c6d355fb7c41ff736023b4176c1008a7049f6a1b24a94a30d066c4e51229c1282a941f7fd6056085af7 - languageName: node - linkType: hard - -"postcss-minify-font-values@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-font-values@npm:4.0.2" - dependencies: - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/e22eec80302a193f18956ea6f32f3c010603b607e7c35753c9af14d7ac2c53f1f4cc45bd150c478a04805ade8914ec612f67e486f07fd82bc0af1fe779f3670f - languageName: node - linkType: hard - -"postcss-minify-font-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-font-values@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/6b74b1ec19bf76dcae7947c42145cb200b38767680512728f76168ae246db453798760e56111bd28ade9011d3655a79da4b33a93e5349f98fb0c1b22cc65ff36 - languageName: node - linkType: hard - -"postcss-minify-gradients@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-gradients@npm:4.0.2" - dependencies: - cssnano-util-get-arguments: "npm:^4.0.0" - is-color-stop: "npm:^1.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/946546279c2fd2d84c9ce42085c524940a5feb3bc73ca8d45bffc978196194565017531d9b405578f02a5d1c337fd7c982d690aaa56471d1c13475c3cefefbdc - languageName: node - linkType: hard - -"postcss-minify-gradients@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-gradients@npm:6.0.0" - dependencies: - colord: "npm:^2.9.1" - cssnano-utils: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/59046acd470bee151291ba99421846d776c4ed243acb05a005e74f64f92b968d712d35e727f5e4a90e632d6d6aeb3a01083469f50bfdf1fb9ecae7f4ae52d9b8 - languageName: node - linkType: hard - -"postcss-minify-params@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-params@npm:4.0.2" - dependencies: - alphanum-sort: "npm:^1.0.0" - browserslist: "npm:^4.0.0" - cssnano-util-get-arguments: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - uniqs: "npm:^2.0.0" - checksum: 8c0/c43f5a04f62b864303e14a8584c662d1b3f6f9ed1df5585a43f778197729e3ee2b8fc099b2977b47f813ea11f32e3c8fcd59937ecd8a92b39c8207ce6c745936 - languageName: node - linkType: hard - -"postcss-minify-params@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-params@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - cssnano-utils: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/d4d1469b7ad7fe53900eb19c156ec6dcfeaf71641d29ba4df31f47d8fa8ac700df5b8d3e3768e66d695d5356ed348cea901314653046c8e48422962f165a1933 - languageName: node - linkType: hard - -"postcss-minify-selectors@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-minify-selectors@npm:4.0.2" - dependencies: - alphanum-sort: "npm:^1.0.0" - has: "npm:^1.0.0" - postcss: "npm:^7.0.0" - postcss-selector-parser: "npm:^3.0.0" - checksum: 8c0/e7f5ffcfb3d9a763201952327c5bf4cd3d4fcb0ffdbab156d935600cbb7bf0d15b7b039449fe3971f54edd33043d7a41580715ee6d57f3cb0336ba1ca915fa12 - languageName: node - linkType: hard - -"postcss-minify-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-minify-selectors@npm:6.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.5" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/1cdd3bd231cf25f54ab370d959f727dfcbe839a1d97bcfd65add9df73747a45d299a009ff16111bbe78943e8f81dcf5f84ae4106847b23dd3652de7aadc0b297 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^2.0.0": - version: 2.0.0 - resolution: "postcss-modules-extract-imports@npm:2.0.0" - dependencies: - postcss: "npm:^7.0.5" - checksum: 8c0/170e8d680c267c536563e76979f04dc80e6dfa026d49f1e9ead2d0981a74b0c64d2894a8fd691e50568f12144553cf0b948ab43263872b3f696dcb34b683e238 - languageName: node - linkType: hard - -"postcss-modules-extract-imports@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-extract-imports@npm:3.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 8c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^3.0.2, postcss-modules-local-by-default@npm:^3.0.3": - version: 3.0.3 - resolution: "postcss-modules-local-by-default@npm:3.0.3" - dependencies: - icss-utils: "npm:^4.1.1" - postcss: "npm:^7.0.32" - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.1.0" - checksum: 8c0/007fd7286b4e120edfdf1a41f2006e9c8cb49e1613a4e3f0fdc184ad14273a1bbfc39ced3bc7cbad9af64bf67056e8ea0dcfda16d3057562343a48ee9ec2ccac - languageName: node - linkType: hard - -"postcss-modules-local-by-default@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-modules-local-by-default@npm:4.0.3" - dependencies: - icss-utils: "npm:^5.0.0" - postcss-selector-parser: "npm:^6.0.2" - postcss-value-parser: "npm:^4.1.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 8c0/be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^2.2.0": - version: 2.2.0 - resolution: "postcss-modules-scope@npm:2.2.0" - dependencies: - postcss: "npm:^7.0.6" - postcss-selector-parser: "npm:^6.0.0" - checksum: 8c0/60b4438d43e6629d72b31a5122037e5574f8a6a4629038cd74afc4e5197cebc55b76c765b6bfcc2421bc740d19c3c97e68918e560a0fe88047c2131d0966df3c - languageName: node - linkType: hard - -"postcss-modules-scope@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-scope@npm:3.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.4" - peerDependencies: - postcss: ^8.1.0 - checksum: 8c0/60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a - languageName: node - linkType: hard - -"postcss-modules-values@npm:^3.0.0": - version: 3.0.0 - resolution: "postcss-modules-values@npm:3.0.0" - dependencies: - icss-utils: "npm:^4.0.0" - postcss: "npm:^7.0.6" - checksum: 8c0/f97b4669446810aa9c4c22538e24faee203e8462f1c7d38923c57140903bc170451dfec5974e480c2c367690735042cbfec187d209d0044d99f829f29ad0e610 - languageName: node - linkType: hard - -"postcss-modules-values@npm:^4.0.0": - version: 4.0.0 - resolution: "postcss-modules-values@npm:4.0.0" - dependencies: - icss-utils: "npm:^5.0.0" - peerDependencies: - postcss: ^8.1.0 - checksum: 8c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc - languageName: node - linkType: hard - -"postcss-nested@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-nested@npm:6.0.1" - dependencies: - postcss-selector-parser: "npm:^6.0.11" - peerDependencies: - postcss: ^8.2.14 - checksum: 2a50aa36d5d103c2e471954830489f4c024deed94fa066169101db55171368d5f80b32446b584029e0471feee409293d0b6b1d8ede361f6675ba097e477b3cbd - languageName: node - linkType: hard - -"postcss-normalize-charset@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-charset@npm:4.0.1" - dependencies: - postcss: "npm:^7.0.0" - checksum: 8c0/4eea4cb61e9153c064354919d3a0eb4666d5f2ea36c5cc1d24e9901601a03fb9bb40e5161f7203088afb306c7bdf21dfaf19489378d642a612741deb5cb17723 - languageName: node - linkType: hard - -"postcss-normalize-charset@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-charset@npm:6.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/5232eac7f62097b1d349546182af2db7db34989867c147517cd407ab23c8450558a7f858eb8dac130959dae2d02d3460c5afa510e0ffe22221cb218f2bd79adb - languageName: node - linkType: hard - -"postcss-normalize-display-values@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-display-values@npm:4.0.2" - dependencies: - cssnano-util-get-match: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/01083456e37d466c093defdb7b7fc8779a1ec6fbe0a18469127d243c49fb7c61cc70d378c04461314d7b38327c2833ca928317413bf2a41402b3214a950d7e00 - languageName: node - linkType: hard - -"postcss-normalize-display-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-display-values@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/58163258a52610fa0d2b61bd6e872b9a2b25da1f2209cbf34fad3b62a4139fff9e0e6b298dcd1adfe6ac556098aad8b79c387280f3a949180f8fb12e6b41fecf - languageName: node - linkType: hard - -"postcss-normalize-positions@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-positions@npm:4.0.2" - dependencies: - cssnano-util-get-arguments: "npm:^4.0.0" - has: "npm:^1.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/1b774b7277420869bfeb5921d66584b1669a2a0d47b34e11b839a34049895e6146721d26c20e6aab7928240a8565ac6dec13b6101837ee50b7edc3016f6288f6 - languageName: node - linkType: hard - -"postcss-normalize-positions@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-positions@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/de2ced6cfdf2931d7cbc8f9c96bb12487119dba1b454c7ac01fd19f7afdaa9bf6c63f59624281293379ead5a3d5e883007a3f192f02c40ab41528ccc5a399f5c - languageName: node - linkType: hard - -"postcss-normalize-repeat-style@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-repeat-style@npm:4.0.2" - dependencies: - cssnano-util-get-arguments: "npm:^4.0.0" - cssnano-util-get-match: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/a13e6d0aac3a7a0627a180bcca04467dcab23f14a676ded735dee1ca742293ea7baf283f2cf3c8e28b7429b2ab158b6646f4375d0bbbeffec7870fea1818af0b - languageName: node - linkType: hard - -"postcss-normalize-repeat-style@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-repeat-style@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/1643132094067709ca7d1fa2beededd28565c83bc8a6c2a4dec879a97e1d425ca1293a8832a45732eef12b52960f024330cfb654a8a222fb7ea768a75989c31e - languageName: node - linkType: hard - -"postcss-normalize-string@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-string@npm:4.0.2" - dependencies: - has: "npm:^1.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/2827a5a16bbfd87c4f41aa30e818428eb3a86755c43938590e7436c6f7bf7cc17099b37f6b89425f0b7f46d482e230dc3d887426b26566a818eeaa64131e8c8d - languageName: node - linkType: hard - -"postcss-normalize-string@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-string@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/d586ce274451229c6a3d625edef882b342ab7702babb632845c8c201c7bcc08481f282000d19d17edb7b5ef0b1982e715a16ab60990d124e937c4aef3304151e - languageName: node - linkType: hard - -"postcss-normalize-timing-functions@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-timing-functions@npm:4.0.2" - dependencies: - cssnano-util-get-match: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/999c3166332b83c7cad2d5cf21dfda52349068eeeec79117304e754d3607dc7ed2133f78c1c0fec870c34e700687a4ed0b4f8780ca3c0a4428b422fbc72ec14e - languageName: node - linkType: hard - -"postcss-normalize-timing-functions@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-timing-functions@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/a70742648cec15eea031096f2ad99c21c79228ce4c4ccc9f63c277c07e9e3add96298cc67b0b1797896507248153e0a662f85f490f53147ded7008b459dd5ba3 - languageName: node - linkType: hard - -"postcss-normalize-unicode@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-unicode@npm:4.0.1" - dependencies: - browserslist: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/9841bcfb11c4371cea853c2b88756428215c3dd64b3535b136189ca67f721b309d32d59067ca9ba8a6862a69c1ada4a5ca65c8d40757fd2ba87f313bccc97634 - languageName: node - linkType: hard - -"postcss-normalize-unicode@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-unicode@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/cd9b06ed09c29ccc0b2cb222044d7ec49fb710fdd6f0878b26d7f3324478d8271a555ba3d82fc8d9fdcf8671a83c499cdfa09c0e73d4dee928adff4042ed8b22 - languageName: node - linkType: hard - -"postcss-normalize-url@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-normalize-url@npm:4.0.1" - dependencies: - is-absolute-url: "npm:^2.0.0" - normalize-url: "npm:^3.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/713d0b87d5dd0aa126f3f4850be581b05c3668887c591f84e89ca90fb892a6a78fb7fdcf4750c968bf804dcd0bd9d7768e0339c7259e891a69c5d6b414333a3f - languageName: node - linkType: hard - -"postcss-normalize-url@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-url@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/719a7feee4adf638cc0b4bc204d89485388ca81f0ad0a181a225122f488f956abd29f429d69e5a57fffe93fbd2a22eab7737bd8b55b19979efba26e008b2ec11 - languageName: node - linkType: hard - -"postcss-normalize-whitespace@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-normalize-whitespace@npm:4.0.2" - dependencies: - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/497ed988df6c4e6f2dcfcc9f6cfff967585c941549d885b02ef55b2d1ab7bceabb633595dd5b6ad1a2998af0c8c6f2d59cdffad4828c86ca79a690dd727a6dc2 - languageName: node - linkType: hard - -"postcss-normalize-whitespace@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-normalize-whitespace@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/8421dd5813c1e555d7c2847dd8b71a5138ee2091341ebd1ea686d5b00cd46d249a29027e142289f873ca7f5fc995b51eb68f9693fec6d61cf951c759d109c37d - languageName: node - linkType: hard - -"postcss-ordered-values@npm:^4.1.2": - version: 4.1.2 - resolution: "postcss-ordered-values@npm:4.1.2" - dependencies: - cssnano-util-get-arguments: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/6866d7b0b8b7f1986614216af124b36bc10b41995ee690d6a025fb9135438578041be30e779117f20fca94df97189f460d7013d6839d7e2a225802652074f12f - languageName: node - linkType: hard - -"postcss-ordered-values@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-ordered-values@npm:6.0.0" - dependencies: - cssnano-utils: "npm:^4.0.0" - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/b01352b0ea014e0037a5b8b3bd866696924bfb2cf3b47b73547786a1954e6771c04790fbe4c651bf029bafdbfde70f49e611f9ef309e945f753425841f343017 - languageName: node - linkType: hard - -"postcss-reduce-initial@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-reduce-initial@npm:4.0.3" - dependencies: - browserslist: "npm:^4.0.0" - caniuse-api: "npm:^3.0.0" - has: "npm:^1.0.0" - postcss: "npm:^7.0.0" - checksum: 8c0/5358b64afbfc3eb0b51031f4568850a5c9142ccf45a6416736802778972d7157811cefebcd2b3afbbf7267db3d39bb09575a8c976ca6552b99ffbf7fdd5083ea - languageName: node - linkType: hard - -"postcss-reduce-initial@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-reduce-initial@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - caniuse-api: "npm:^3.0.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/7cf6340bde9f70c7d9b20bc3ee53e883bf27ed56fcc3bb2a2c736b311d977098a7c3a6b9e4be4d2c159d0042bf7742bb5af59628cd89cf838968dacc5ae15c80 - languageName: node - linkType: hard - -"postcss-reduce-transforms@npm:^4.0.2": - version: 4.0.2 - resolution: "postcss-reduce-transforms@npm:4.0.2" - dependencies: - cssnano-util-get-match: "npm:^4.0.0" - has: "npm:^1.0.0" - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - checksum: 8c0/72b9c83fb8af3ec756a8dedcc13d025068896484da00c6859c4e0980eb37b85766354cdbf83283f1f047417b00fc3f7472f3acd7411e301fcfe067e02fae03f3 - languageName: node - linkType: hard - -"postcss-reduce-transforms@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-reduce-transforms@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/6da900d22dd8760b8a2ace32013036e3c4c4d9d560c31255eceea54563e3ddb2ca830bc9072fe2a1abacb8c48a008656887fc2f6ba1873e590342ad8e6bc269d - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^3.0.0": - version: 3.1.2 - resolution: "postcss-selector-parser@npm:3.1.2" - dependencies: - dot-prop: "npm:^5.2.0" - indexes-of: "npm:^1.0.1" - uniq: "npm:^1.0.1" - checksum: 8c0/65f8fb1dcd64e9a3de03a6bd5e0a2e67475a01057d8470b46723cd569d1ddba4d18107e45aee26b46d8cdaab6ef8f5aad7c2e934fc4c46386418cc578dcc181b - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.0, postcss-selector-parser@npm:^6.0.2": - version: 6.0.6 - resolution: "postcss-selector-parser@npm:6.0.6" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 8c0/57b8cee8f9130fb6b3783251e59e1ea782098367d7ea748b69d75fa9be0f0934134c2e426808ec11e3d3489819a407ef0e0036097f255ada41dc1cebd90ec8b0 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.11": - version: 6.0.12 - resolution: "postcss-selector-parser@npm:6.0.12" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 8c0/48d4ed587cd26ff8646a71dd5e5b102755b9565381bdcee58c400b1f1df5e18aff923eb1c0442661aa914ff6c8e20e116413da51bea6af36afb069daae737294 - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5": - version: 6.0.11 - resolution: "postcss-selector-parser@npm:6.0.11" - dependencies: - cssesc: "npm:^3.0.0" - util-deprecate: "npm:^1.0.2" - checksum: 8c0/70be26abb75dec3c51be312a086e640aee4a32f18114cfbdf8feac0b6373a5494b5571370ab158174e1d692afc50c198d799ae9759afe5da1da1e629e465112c - languageName: node - linkType: hard - -"postcss-svgo@npm:^4.0.3": - version: 4.0.3 - resolution: "postcss-svgo@npm:4.0.3" - dependencies: - postcss: "npm:^7.0.0" - postcss-value-parser: "npm:^3.0.0" - svgo: "npm:^1.0.0" - checksum: 8c0/555eccf33c533e5f28f8441c5b14a2b1f606d56b8a357efad190f8d6d2646c11e088b740ba21798d41ba7c6819b6bd237a805dd1f8ddd44dd5c1c50ab5532f91 - languageName: node - linkType: hard - -"postcss-svgo@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-svgo@npm:6.0.0" - dependencies: - postcss-value-parser: "npm:^4.2.0" - svgo: "npm:^3.0.2" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/ec567cd5e982e3c0393695628bc508b87dcfe4e4b2049930e79e6c629c349fad19403f0d39d76ceda3e0f15ffd065304e76152f397fae2f3f848cdb847a0b564 - languageName: node - linkType: hard - -"postcss-unique-selectors@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-unique-selectors@npm:4.0.1" - dependencies: - alphanum-sort: "npm:^1.0.0" - postcss: "npm:^7.0.0" - uniqs: "npm:^2.0.0" - checksum: 8c0/a7c1ef42914b89b05db624667edfcba9cd6dddc90ab9dc0049c42dd03cad02c9a6a128bded04188d32a62de263ac1893b5ff6ce4e8bb1ad628cfd944068d6edf - languageName: node - linkType: hard - -"postcss-unique-selectors@npm:^6.0.0": - version: 6.0.0 - resolution: "postcss-unique-selectors@npm:6.0.0" - dependencies: - postcss-selector-parser: "npm:^6.0.5" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/63e81a7965ff8874fdf39ef0ae0f12cc21352548733538f52eda73f0ed5a7fab7fda9090facf50395d07873c5a6f02d31a6171fd476c80858b03090ec4c61d31 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^3.0.0": - version: 3.3.1 - resolution: "postcss-value-parser@npm:3.3.1" - checksum: 8c0/23eed98d8eeadb1f9ef1db4a2757da0f1d8e7c1dac2a38d6b35d971aab9eb3c6d8a967d0e9f435558834ffcd966afbbe875a56bcc5bcdd09e663008c106b3e47 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.2.0": - version: 4.2.0 - resolution: "postcss-value-parser@npm:4.2.0" - checksum: 8c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.2, postcss-value-parser@npm:^4.1.0": - version: 4.1.0 - resolution: "postcss-value-parser@npm:4.1.0" - checksum: 8c0/55b30eaa103765a7cc0468d2a41da6e200f992f2634c63eb89a97dd9b722732365e30dba007c2c040a8cb0c94ba8b70b0c97bcd1de62318ebae72bb5de9537e0 - languageName: node - linkType: hard - -"postcss@npm:8.4.31": - version: 8.4.31 - resolution: "postcss@npm:8.4.31" - dependencies: - nanoid: "npm:^3.3.6" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf - languageName: node - linkType: hard - -"postcss@npm:^7.0.0, postcss@npm:^7.0.1, postcss@npm:^7.0.14, postcss@npm:^7.0.26, postcss@npm:^7.0.27, postcss@npm:^7.0.32, postcss@npm:^7.0.5, postcss@npm:^7.0.6": - version: 7.0.35 - resolution: "postcss@npm:7.0.35" - dependencies: - chalk: "npm:^2.4.2" - source-map: "npm:^0.6.1" - supports-color: "npm:^6.1.0" - checksum: 8c0/cc989bc097942ca1e914dc6b02e1cf9b5bed445f5fedb8f8e2313fcd73ef612db617c973ef6e90417816b43ee1324bf17345d4d5a7a55f9b9984cba5184fe23b - languageName: node - linkType: hard - -"postcss@npm:^7.0.36": - version: 7.0.39 - resolution: "postcss@npm:7.0.39" - dependencies: - picocolors: "npm:^0.2.1" - source-map: "npm:^0.6.1" - checksum: 8c0/fd27ee808c0d02407582cccfad4729033e2b439d56cd45534fb39aaad308bb35a290f3b7db5f2394980e8756f9381b458a625618550808c5ff01a125f51efc53 - languageName: node - linkType: hard - -"postcss@npm:^8.2.14, postcss@npm:^8.4.24, postcss@npm:^8.4.27": - version: 8.4.29 - resolution: "postcss@npm:8.4.29" - dependencies: - nanoid: "npm:^3.3.6" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 8c0/b50b7ad4ac6c9ba029eda4381863570b7aed2672ffae2566ef109e556bae01823a51180409877ff2cce1fe186025751c7191c301eafc07b0d90c630ab5e0365c - languageName: node - linkType: hard - -"postcss@npm:^8.4.21": - version: 8.4.21 - resolution: "postcss@npm:8.4.21" - dependencies: - nanoid: "npm:^3.3.4" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 8c0/a26e7cc86a1807d624d9965914c26c20faa3f237184cbd69db537387f6a4f62df97347549144284d47e9e8e27e7c60e797cb3b92ad36cb2f4c3c9cb3b73f9758 - languageName: node - linkType: hard - -"postcss@npm:^8.4.23": - version: 8.4.32 - resolution: "postcss@npm:8.4.32" - dependencies: - nanoid: "npm:^3.3.7" - picocolors: "npm:^1.0.0" - source-map-js: "npm:^1.0.2" - checksum: 39308a9195fa34d4dbdd7b58a896cff0c7809f84f7a4ac1b95b68ca86c9138a395addff33075668ed3983d41b90aac05754c445237a9365eb1c3a5602ebd03ad - languageName: node - linkType: hard - -"prelude-ls@npm:^1.2.1": - version: 1.2.1 - resolution: "prelude-ls@npm:1.2.1" - checksum: 8c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd - languageName: node - linkType: hard - -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: 8c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 - languageName: node - linkType: hard - -"prepend-http@npm:^2.0.0": - version: 2.0.0 - resolution: "prepend-http@npm:2.0.0" - checksum: 8c0/b023721ffd967728e3a25e3a80dd73827e9444e586800ab90a21b3a8e67f362d28023085406ad53a36db1e4d98cb10e43eb37d45c6b733140a9165ead18a0987 - languageName: node - linkType: hard - -"prettier-linter-helpers@npm:^1.0.0": - version: 1.0.0 - resolution: "prettier-linter-helpers@npm:1.0.0" - dependencies: - fast-diff: "npm:^1.1.2" - checksum: 8c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab - languageName: node - linkType: hard - -"prettier@npm:2.8.8": - version: 2.8.8 - resolution: "prettier@npm:2.8.8" - bin: - prettier: bin-prettier.js - checksum: 8c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a - languageName: node - linkType: hard - -"prettier@npm:>=2.2.1 <=2.3.0": - version: 2.3.0 - resolution: "prettier@npm:2.3.0" - bin: - prettier: bin-prettier.js - checksum: 8c0/b9f434af2f25a37aad0b133894827e980885eb8bf317444c9dde0401ed2c7f463f9996d691f5ee5a0a4450ab46a894cd6557516b561e2522821522ce1f4c6668 - languageName: node - linkType: hard - -"prettier@npm:^1.19.1": - version: 1.19.1 - resolution: "prettier@npm:1.19.1" - bin: - prettier: ./bin-prettier.js - checksum: 8c0/12efb4e486c1e1d006e9eadd3b6585fc6beb9481dc801080fc23d3e75ec599d88c6fea1b40aef167128069e8fe76b4205bb8306ad145575d1b051b8fa70cfaae - languageName: node - linkType: hard - -"prettier@npm:^2.2.1": - version: 2.5.1 - resolution: "prettier@npm:2.5.1" - bin: - prettier: bin-prettier.js - checksum: 8c0/fa9750193b3fcdb4bd54ba4e57996d335de4cd492d277539b6ffb6d146c8b6d3c3dc264b75021914c99c91574643637f607da08ef4588ef30a7b78d14326f470 - languageName: node - linkType: hard - -"prettier@npm:^2.6.2, prettier@npm:^2.8.3": - version: 2.8.3 - resolution: "prettier@npm:2.8.3" - bin: - prettier: bin-prettier.js - checksum: 8c0/373fda1908c8f7f06e6b9966986f35784152d4f10c907c7153062fe36542358d696433450f3efb356b7438c855a8d8b4133c3e486057dc63117d94596ff3f5f1 - languageName: node - linkType: hard - -"pretty-bytes@npm:5.6.0": - version: 5.6.0 - resolution: "pretty-bytes@npm:5.6.0" - checksum: 8c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 - languageName: node - linkType: hard - -"pretty-error@npm:^2.1.1": - version: 2.1.2 - resolution: "pretty-error@npm:2.1.2" - dependencies: - lodash: "npm:^4.17.20" - renderkid: "npm:^2.0.4" - checksum: 8c0/779743faf707308e5d07c53c3ec94596c0cb631c92104a2721dd5d021ade39505a9151c5a5f838dfd26b02a06752c410eb6de1769c4fe327c90bd083f61a1fa1 - languageName: node - linkType: hard - -"pretty-error@npm:^4.0.0": - version: 4.0.0 - resolution: "pretty-error@npm:4.0.0" - dependencies: - lodash: "npm:^4.17.20" - renderkid: "npm:^3.0.0" - checksum: 8c0/dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 - languageName: node - linkType: hard - -"pretty-format@npm:^26.0.0, pretty-format@npm:^26.6.2": - version: 26.6.2 - resolution: "pretty-format@npm:26.6.2" - dependencies: - "@jest/types": "npm:^26.6.2" - ansi-regex: "npm:^5.0.0" - ansi-styles: "npm:^4.0.0" - react-is: "npm:^17.0.1" - checksum: 8c0/b5ddf0e949b874b699d313fe9407f0eb65e67d00823b2dd95335905a73457260af7612f3bff6b48611fcca9ffcff003359e4c9faba4200d6209da433a859aef3 - languageName: node - linkType: hard - -"pretty-format@npm:^27.0.2, pretty-format@npm:^27.5.1": - version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" - dependencies: - ansi-regex: "npm:^5.0.1" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^17.0.1" - checksum: 8c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.4.1": - version: 29.4.1 - resolution: "pretty-format@npm:29.4.1" - dependencies: - "@jest/schemas": "npm:^29.4.0" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: 8c0/462bbbc60a1054a5b87738b0c671c8c8b8e6a142c9fd7b8d421bbd58a530b47059b6ed51a4aeec40572af38d422239f130188a79810cac17faebf5b280db2b9d - languageName: node - linkType: hard - -"pretty-format@npm:^29.7.0": - version: 29.7.0 - resolution: "pretty-format@npm:29.7.0" - dependencies: - "@jest/schemas": "npm:^29.6.3" - ansi-styles: "npm:^5.0.0" - react-is: "npm:^18.0.0" - checksum: edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f - languageName: node - linkType: hard - -"pretty-hrtime@npm:^1.0.3": - version: 1.0.3 - resolution: "pretty-hrtime@npm:1.0.3" - checksum: 8c0/67cb3fc283a72252b49ac488647e6a01b78b7aa1b8f2061834aa1650691229081518ef3ca940f77f41cc8a8f02ba9eeb74b843481596670209e493062f2e89e0 - languageName: node - linkType: hard - -"pretty-ms@npm:7.0.1": - version: 7.0.1 - resolution: "pretty-ms@npm:7.0.1" - dependencies: - parse-ms: "npm:^2.1.0" - checksum: 8c0/069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c - languageName: node - linkType: hard - -"prettysize@npm:^2.0.0": - version: 2.0.0 - resolution: "prettysize@npm:2.0.0" - checksum: 8c0/b5ff8d54844a133d09b582540b731d721af4b86c3d8a9322f204e9e4cb08f891d076ad29acf1ad4091a0515920dd8bf26c96435dcf6ce248131ca4a3f8a1ec89 - languageName: node - linkType: hard - -"printable-characters@npm:^1.0.42": - version: 1.0.42 - resolution: "printable-characters@npm:1.0.42" - checksum: 8c0/7c94d94c6041a37c385af770c7402ad5a2e8a3429ca4d2505a9f19fde39bac9a8fd1edfbfa02f1eae5b4b0f3536b6b8ee6c84621f7c0fcb41476b2df6ee20e4b - languageName: node - linkType: hard - -"prisma@npm:2.22.1": - version: 2.22.1 - resolution: "prisma@npm:2.22.1" - dependencies: - "@prisma/engines": "npm:2.22.0-21.60cc71d884972ab4e897f0277c4b84383dddaf6c" - bin: - prisma: build/index.js - prisma2: build/index.js - checksum: 8c0/1783f5d38fbe75a75d1be0fcf90c54801ea05129d6ac8692eb17403b6ac1d50f65757d9ad68976c36c4df5bb9627850a7b0a49490bd5d478a70c32fd7580239a - languageName: node - linkType: hard - -"prisma@npm:5.7.0": - version: 5.7.0 - resolution: "prisma@npm:5.7.0" - dependencies: - "@prisma/engines": "npm:5.7.0" - bin: - prisma: build/index.js - checksum: dec098d6a0661e435522fd8ae1990b8ad36a6077a1ff91fe591d2f52a442fbd44240c6cea2cef3ae0cfd033bf560ea577da375c575c103e7323890b50fd88387 - languageName: node - linkType: hard - -"prismjs@npm:^1.21.0, prismjs@npm:~1.23.0": - version: 1.23.0 - resolution: "prismjs@npm:1.23.0" - dependencies: - clipboard: "npm:^2.0.0" - dependenciesMeta: - clipboard: - optional: true - checksum: 8c0/c40d4d2b9bbd93df03eee11c4a92153543d29e92e0cfd078d13aed2853ad4c2b3f6e529f24ae75972925db60f194d80962841a43975dae8f2ec78995f101b0b9 - languageName: node - linkType: hard - -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 8c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 - languageName: node - linkType: hard - -"process-warning@npm:^1.0.0": - version: 1.0.0 - resolution: "process-warning@npm:1.0.0" - checksum: 8c0/43ec4229d64eb5c58340c8aacade49eb5f6fd513eae54140abf365929ca20987f0a35c5868125e2b583cad4de8cd257beb5667d9cc539d9190a7a4c3014adf22 - languageName: node - linkType: hard - -"process-warning@npm:^2.0.0": - version: 2.1.0 - resolution: "process-warning@npm:2.1.0" - checksum: 8c0/f0983c9878ecd023d3056bfc335fdb33f1f7c1fc4742b92e2088d833894c08e8852208943b6e5d824a8c3d81547bc86452ecf19775402833c61512aaa47012a5 - languageName: node - linkType: hard - -"process-warning@npm:^2.2.0": - version: 2.2.0 - resolution: "process-warning@npm:2.2.0" - checksum: 8c0/22b252ca6c1edf7fe3c6ab30c39f9a2fa240dc5af46fd0f94c4dcbc577e7570dcccfc1cbfb4510db4759906b9170cb8b18c519d581cdf2ea649e5ac6bb9a0e60 - languageName: node - linkType: hard - -"process-warning@npm:^3.0.0": - version: 3.0.0 - resolution: "process-warning@npm:3.0.0" - checksum: 60f3c8ddee586f0706c1e6cb5aa9c86df05774b9330d792d7c8851cf0031afd759d665404d07037e0b4901b55c44a423f07bdc465c63de07d8d23196bb403622 - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: 8c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 - languageName: node - linkType: hard - -"progress@npm:^2.0.0, progress@npm:^2.0.3": - version: 2.0.3 - resolution: "progress@npm:2.0.3" - checksum: 8c0/1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c - languageName: node - linkType: hard - -"promise-inflight@npm:^1.0.1": - version: 1.0.1 - resolution: "promise-inflight@npm:1.0.1" - checksum: 8c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc - languageName: node - linkType: hard - -"promise-retry@npm:^2.0.1": - version: 2.0.1 - resolution: "promise-retry@npm:2.0.1" - dependencies: - err-code: "npm:^2.0.2" - retry: "npm:^0.12.0" - checksum: 8c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 - languageName: node - linkType: hard - -"promise.allsettled@npm:^1.0.0": - version: 1.0.4 - resolution: "promise.allsettled@npm:1.0.4" - dependencies: - array.prototype.map: "npm:^1.0.3" - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - get-intrinsic: "npm:^1.0.2" - iterate-value: "npm:^1.0.2" - checksum: 8c0/c55db1239f128b5069d008d649f87487b71e2393a3956ca4ea4f5e4642169b1b3150d33fdceebe4fa84a3b54f566ec7fc2819eb31bce68ae5a86e2f7067ef86f - languageName: node - linkType: hard - -"promise.prototype.finally@npm:^3.1.0": - version: 3.1.2 - resolution: "promise.prototype.finally@npm:3.1.2" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.0-next.0" - function-bind: "npm:^1.1.1" - checksum: 8c0/b683555adaa10ddf85c87837b0304d113d4638eae70b773adac45124eadf299719a2513e3f262deea399aa8682b0606b42ebd87e7ad88ea0df06a336b957a434 - languageName: node - linkType: hard - -"promise@npm:^7.1.1": - version: 7.3.1 - resolution: "promise@npm:7.3.1" - dependencies: - asap: "npm:~2.0.3" - checksum: 8c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f - languageName: node - linkType: hard - -"prompts@npm:2.4.0": - version: 2.4.0 - resolution: "prompts@npm:2.4.0" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 8c0/9e64082a08c32bbb91e9507874034e8c21c924aabee9468699252cf16d8f6147d053494a3d67976bc59455bdf997ce82be0a7857f2a014ec3deb72dc956e1303 - languageName: node - linkType: hard - -"prompts@npm:2.4.2, prompts@npm:^2.4.0, prompts@npm:^2.4.1": - version: 2.4.2 - resolution: "prompts@npm:2.4.2" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 8c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 - languageName: node - linkType: hard - -"prompts@npm:^2.0.1": - version: 2.4.1 - resolution: "prompts@npm:2.4.1" - dependencies: - kleur: "npm:^3.0.3" - sisteransi: "npm:^1.0.5" - checksum: 8c0/787fe069231badf306b7604ad4160bf891f754fd674659b288bd8d32d6dbddadeeb1d5f60fea9cebc18c9df94eeaa1ed89074604ecacc7e16c0d9719fb72e797 - languageName: node - linkType: hard - -"prop-types@npm:15.x, prop-types@npm:^15.5.4, prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.13.1" - checksum: 8c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 - languageName: node - linkType: hard - -"prop-types@npm:^15.6.0, prop-types@npm:^15.7.2": - version: 15.7.2 - resolution: "prop-types@npm:15.7.2" - dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.8.1" - checksum: 8c0/4eb527daec962acd789c621ce3234a6f077ce202049291642d8efd13b19805adf07227672c570531cdb56a357640ea27e336527682b7ed4be0c5b392a01662ab - languageName: node - linkType: hard - -"property-information@npm:^5.0.0, property-information@npm:^5.3.0": - version: 5.6.0 - resolution: "property-information@npm:5.6.0" - dependencies: - xtend: "npm:^4.0.0" - checksum: 8c0/d54b77c31dc13bb6819559080b2c67d37d94be7dc271f404f139a16a57aa96fcc0b3ad806d4a5baef9e031744853e4afe3df2e37275aacb1f78079bbb652c5af - languageName: node - linkType: hard - -"proptypes@npm:^1.1.0": - version: 1.1.0 - resolution: "proptypes@npm:1.1.0" - checksum: 8c0/8944fb0763433438cbe5c34fac004edabb33be3cf4454079cbef10f752f614c4082c935d916b7347d4541323323e17e159ac2f804ef783cdf19870298f64eca6 - languageName: node - linkType: hard - -"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": - version: 2.0.7 - resolution: "proxy-addr@npm:2.0.7" - dependencies: - forwarded: "npm:0.2.0" - ipaddr.js: "npm:1.9.1" - checksum: 8c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 - languageName: node - linkType: hard - -"proxy-addr@npm:~2.0.5": - version: 2.0.6 - resolution: "proxy-addr@npm:2.0.6" - dependencies: - forwarded: "npm:~0.1.2" - ipaddr.js: "npm:1.9.1" - checksum: 8c0/38bb75b062b7727fc5bee125f5d471e7e615e28e96732bca124aefe8a52098e40db6a5e1df072e3004e4e4625ab84b735e5547c4d8e4f9200486a3e67775b010 - languageName: node - linkType: hard - -"proxy-from-env@npm:^1.1.0": - version: 1.1.0 - resolution: "proxy-from-env@npm:1.1.0" - checksum: 8c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b - languageName: node - linkType: hard - -"proxyquire@npm:2.1.3, proxyquire@npm:^2.1.3": - version: 2.1.3 - resolution: "proxyquire@npm:2.1.3" - dependencies: - fill-keys: "npm:^1.0.2" - module-not-found-error: "npm:^1.0.1" - resolve: "npm:^1.11.1" - checksum: 8c0/f2e57670ed57ef047720516f0ad2f88bfdba4aaa54139bf5d7fe6ec84bf91ec932f402c56439b44d3596743fd9405be4aac99a924eb897e3396c5be1a81672b0 - languageName: node - linkType: hard - -"prr@npm:~1.0.1": - version: 1.0.1 - resolution: "prr@npm:1.0.1" - checksum: 8c0/5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f - languageName: node - linkType: hard - -"pseudomap@npm:^1.0.1, pseudomap@npm:^1.0.2": - version: 1.0.2 - resolution: "pseudomap@npm:1.0.2" - checksum: 8c0/5a91ce114c64ed3a6a553aa7d2943868811377388bb31447f9d8028271bae9b05b340fe0b6961a64e45b9c72946aeb0a4ab635e8f7cb3715ffd0ff2beeb6a679 - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.8.0 - resolution: "psl@npm:1.8.0" - checksum: 8c0/b5f1956f7530860e1918e7238291689fdc3cab9c2c0cdbc47cde21addcc7f62495d794692cc1e43e54728d273f78037e8e73ac43009509a1a7f823341f4039c8 - languageName: node - linkType: hard - -"pstree.remy@npm:^1.1.8": - version: 1.1.8 - resolution: "pstree.remy@npm:1.1.8" - checksum: 8c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 - languageName: node - linkType: hard - -"public-encrypt@npm:^4.0.0": - version: 4.0.3 - resolution: "public-encrypt@npm:4.0.3" - dependencies: - bn.js: "npm:^4.1.0" - browserify-rsa: "npm:^4.0.0" - create-hash: "npm:^1.1.0" - parse-asn1: "npm:^5.0.0" - randombytes: "npm:^2.0.1" - safe-buffer: "npm:^5.1.2" - checksum: 8c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 - languageName: node - linkType: hard - -"pump@npm:^2.0.0": - version: 2.0.1 - resolution: "pump@npm:2.0.1" - dependencies: - end-of-stream: "npm:^1.1.0" - once: "npm:^1.3.1" - checksum: 8c0/f1fe8960f44d145f8617ea4c67de05392da4557052980314c8f85081aee26953bdcab64afad58a2b1df0e8ff7203e3710e848cbe81a01027978edc6e264db355 - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: "npm:^1.1.0" - once: "npm:^1.3.1" - checksum: 8c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 - languageName: node - linkType: hard - -"pumpify@npm:^1.3.3": - version: 1.5.1 - resolution: "pumpify@npm:1.5.1" - dependencies: - duplexify: "npm:^3.6.0" - inherits: "npm:^2.0.3" - pump: "npm:^2.0.0" - checksum: 8c0/0bcabf9e3dbf2d0cc1f9b84ac80d3c75386111caf8963bfd98817a1e2192000ac0ccc804ca6ccd5b2b8430fdb71347b20fb2f014fe3d41adbacb1b502a841c45 - languageName: node - linkType: hard - -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: 8c0/281fd20eaf4704f79d80cb0dc65065bf6452ee67989b3e8941aed6360a5a9a8a01d3e2ed71d0bde3cd74fb5a5dd9db4160bed5a8c20bed4b6764c24ce4c7d2d2 - languageName: node - linkType: hard - -"punycode@npm:^1.2.4, punycode@npm:^1.3.2": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: 8c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.1.1 - resolution: "punycode@npm:2.1.1" - checksum: 8c0/83815ca9b9177f055771f31980cbec7ffaef10257d50a95ab99b4a30f0404846e85fa6887ee1bbc0aaddb7bad6d96e2fa150a016051ff0f6b92be4ad613ddca8 - languageName: node - linkType: hard - -"pure-rand@npm:^6.0.0": - version: 6.0.2 - resolution: "pure-rand@npm:6.0.2" - checksum: 8c0/0556bee2e16a8d081a2b7630d9cb4e5dafd4e6bd6e4c61de1cf1ef5974f127847523e3d0e62884f6f5d64b66a5e93b05bd8f37ed009f3a4fe5089899e05914aa - languageName: node - linkType: hard - -"pvtsutils@npm:^1.3.2": - version: 1.3.2 - resolution: "pvtsutils@npm:1.3.2" - dependencies: - tslib: "npm:^2.4.0" - checksum: 8c0/bb10fd980841134835878eac56acbc082d05371c8cd9a1c3f7fc8831a22022fc34fa60e3a1a0bc3bdcb5c26f42fa4f9723be1b7bb7077a74fcb350444cf5e883 - languageName: node - linkType: hard - -"pvutils@npm:^1.1.3": - version: 1.1.3 - resolution: "pvutils@npm:1.1.3" - checksum: 8c0/23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac - languageName: node - linkType: hard - -"q@npm:^1.1.2": - version: 1.5.1 - resolution: "q@npm:1.5.1" - checksum: 8c0/7855fbdba126cb7e92ef3a16b47ba998c0786ec7fface236e3eb0135b65df36429d91a86b1fff3ab0927b4ac4ee88a2c44527c7c3b8e2a37efbec9fe34803df4 - languageName: node - linkType: hard - -"qs@npm:6.11.0": - version: 6.11.0 - resolution: "qs@npm:6.11.0" - dependencies: - side-channel: "npm:^1.0.4" - checksum: 8c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f - languageName: node - linkType: hard - -"qs@npm:6.11.2": - version: 6.11.2 - resolution: "qs@npm:6.11.2" - dependencies: - side-channel: "npm:^1.0.4" - checksum: 8c0/4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 - languageName: node - linkType: hard - -"qs@npm:6.7.0": - version: 6.7.0 - resolution: "qs@npm:6.7.0" - checksum: 8c0/04e6934d8cfa4f352e5bf5fe16eeed75dccad16d1e03b53ece849839b7439940f0df8bf0bc4750306d65baf95ebe165315f61122067e33bfee7b7ef4e3945813 - languageName: node - linkType: hard - -"qs@npm:6.9.6": - version: 6.9.6 - resolution: "qs@npm:6.9.6" - checksum: 8c0/b635a0f35b53c8d19f41f5be01b1be24909b99a74be4eaa076814cf3707e49fbcb0c7eb3c5d4396c10eb0073888e76761e4efe8a2f65a60fb28b0b3397740a83 - languageName: node - linkType: hard - -"qs@npm:^6.10.0": - version: 6.10.1 - resolution: "qs@npm:6.10.1" - dependencies: - side-channel: "npm:^1.0.4" - checksum: 8c0/92f119ac886edfba0fcb9b77a16182d0a4c9e4ada4feeb767616db8ae7c7c512472a985360dccda2da485b2059816cc03f0287271422e7139a2d0a7ad259e8a5 - languageName: node - linkType: hard - -"qs@npm:^6.9.3": - version: 6.10.3 - resolution: "qs@npm:6.10.3" - dependencies: - side-channel: "npm:^1.0.4" - checksum: 8c0/c6684df925fd2c6f0940b8fbfe5d8b5a8634dc96c0908309655cbe61a3fbf94cedc6b11e669fca1971b53459b6f732cccd4eeb6484b5b77b405ad0cfb936e6fe - languageName: node - linkType: hard - -"querystring-es3@npm:^0.2.0": - version: 0.2.1 - resolution: "querystring-es3@npm:0.2.1" - checksum: 8c0/476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 - languageName: node - linkType: hard - -"querystring@npm:0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 8c0/2036c9424beaacd3978bac9e4ba514331cc73163bea7bf3ad7e2c7355e55501938ec195312c607753f9c6e70b1bf9dfcda38db6241bd299c034e27ac639d64ed - languageName: node - linkType: hard - -"querystring@npm:^0.2.0": - version: 0.2.1 - resolution: "querystring@npm:0.2.1" - checksum: 8c0/6841b32bec4f16ffe7f5b5e4373b47ad451f079cde3a7f45e63e550f0ecfd8f8189ef81fb50079413b3fc1c59b06146e4c98192cb74ed7981aca72090466cd94 - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 8c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa - languageName: node - linkType: hard - -"queue-microtask@npm:^1.2.2": - version: 1.2.3 - resolution: "queue-microtask@npm:1.2.3" - checksum: 8c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 - languageName: node - linkType: hard - -"queue-tick@npm:^1.0.1": - version: 1.0.1 - resolution: "queue-tick@npm:1.0.1" - checksum: 0db998e2c9b15215317dbcf801e9b23e6bcde4044e115155dae34f8e7454b9a783f737c9a725528d677b7a66c775eb7a955cf144fe0b87f62b575ce5bfd515a9 - languageName: node - linkType: hard - -"quick-format-unescaped@npm:^4.0.3": - version: 4.0.3 - resolution: "quick-format-unescaped@npm:4.0.3" - checksum: 8c0/6995ff97b43325bb0f0001c5aff9bb890b9637603ca99cc0c753ef49da1fb59b9ee43ad888f47ea4bd9248f32c5f469c67e1d2012c3f69c691570af7d2fb0c7e - languageName: node - linkType: hard - -"quick-lru@npm:^5.1.1": - version: 5.1.1 - resolution: "quick-lru@npm:5.1.1" - checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da - languageName: node - linkType: hard - -"ramda@npm:0.21.0, ramda@npm:^0.21.0": - version: 0.21.0 - resolution: "ramda@npm:0.21.0" - checksum: 8c0/a5d28ef8f09f7fd024b2a92477f5356e6323c26be29992c87139757e39b20f9006b6a4c69002b952b2ddb88d983823b26ed68020257660617e3a395b7ea2d6da - languageName: node - linkType: hard - -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": - version: 2.1.0 - resolution: "randombytes@npm:2.1.0" - dependencies: - safe-buffer: "npm:^5.1.0" - checksum: 8c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 - languageName: node - linkType: hard - -"randomfill@npm:^1.0.3": - version: 1.0.4 - resolution: "randomfill@npm:1.0.4" - dependencies: - randombytes: "npm:^2.0.5" - safe-buffer: "npm:^5.1.0" - checksum: 8c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c - languageName: node - linkType: hard - -"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": - version: 1.2.1 - resolution: "range-parser@npm:1.2.1" - checksum: 8c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 - languageName: node - linkType: hard - -"raw-body@npm:2.4.0": - version: 2.4.0 - resolution: "raw-body@npm:2.4.0" - dependencies: - bytes: "npm:3.1.0" - http-errors: "npm:1.7.2" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 8c0/c7ff86d9d4a91f0d9ab3e2eb45b2197d2534e0f24fded16989085fe71207539f63100a6fd49507a5ff1907ff38511e510a3e6098102b9e8711cd84d7344a703a - languageName: node - linkType: hard - -"raw-body@npm:2.4.2": - version: 2.4.2 - resolution: "raw-body@npm:2.4.2" - dependencies: - bytes: "npm:3.1.1" - http-errors: "npm:1.8.1" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 8c0/50596d32fc57f4da839c9f938f84debddcfe09caffc5005a60cccc1c0aebb2c7d714fc1513252f9da6900aebf00a12062f959050aefe9767144b6df7f9f125d5 - languageName: node - linkType: hard - -"raw-body@npm:2.5.1, raw-body@npm:^2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" - dependencies: - bytes: "npm:3.1.2" - http-errors: "npm:2.0.0" - iconv-lite: "npm:0.4.24" - unpipe: "npm:1.0.0" - checksum: 8c0/5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 - languageName: node - linkType: hard - -"raw-loader@npm:^4.0.2": - version: 4.0.2 - resolution: "raw-loader@npm:4.0.2" - dependencies: - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^3.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/981ebe65e1cee7230300d21ba6dcd8bd23ea81ef4ad2b167c0f62d93deba347f27921d330be848634baab3831cf9f38900af6082d6416c2e937fe612fa6a74ff - languageName: node - linkType: hard - -"rc@npm:^1.2.8": - version: 1.2.8 - resolution: "rc@npm:1.2.8" - dependencies: - deep-extend: "npm:^0.6.0" - ini: "npm:~1.3.0" - minimist: "npm:^1.2.0" - strip-json-comments: "npm:~2.0.1" - bin: - rc: ./cli.js - checksum: 8c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 - languageName: node - linkType: hard - -"react-colorful@npm:^5.1.2": - version: 5.5.1 - resolution: "react-colorful@npm:5.5.1" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 8c0/f5991c675f82d204d73638b49077d710934cc1e6a47f95a6fc8a14761d926bd416346cedc7ac4da98a942561e053b675fa0ab0d52120ec9fbdb25027502d2dde - languageName: node - linkType: hard - -"react-day-picker@npm:^8.7.1": - version: 8.10.0 - resolution: "react-day-picker@npm:8.10.0" - peerDependencies: - date-fns: ^2.28.0 || ^3.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: e9868aced1e40b4cb7d6cf8d50e250226b38ec7ebea944b65aa9db20a0f36d0581b8a501297d09dcbf2d812de852168952b3fb27990915381629d6e314c2a4d8 - languageName: node - linkType: hard - -"react-dev-utils@npm:^11.0.1": - version: 11.0.4 - resolution: "react-dev-utils@npm:11.0.4" - dependencies: - "@babel/code-frame": "npm:7.10.4" - address: "npm:1.1.2" - browserslist: "npm:4.14.2" - chalk: "npm:2.4.2" - cross-spawn: "npm:7.0.3" - detect-port-alt: "npm:1.1.6" - escape-string-regexp: "npm:2.0.0" - filesize: "npm:6.1.0" - find-up: "npm:4.1.0" - fork-ts-checker-webpack-plugin: "npm:4.1.6" - global-modules: "npm:2.0.0" - globby: "npm:11.0.1" - gzip-size: "npm:5.1.1" - immer: "npm:8.0.1" - is-root: "npm:2.1.0" - loader-utils: "npm:2.0.0" - open: "npm:^7.0.2" - pkg-up: "npm:3.1.0" - prompts: "npm:2.4.0" - react-error-overlay: "npm:^6.0.9" - recursive-readdir: "npm:2.2.2" - shell-quote: "npm:1.7.2" - strip-ansi: "npm:6.0.0" - text-table: "npm:0.2.0" - checksum: 8c0/3982f6a35035627b4465c8afd2f6db6a571b9e7b09c7d2f2e517de9cd48bb76778f4c692cdc99a26d2961d7dac371553fd7815ec0d2ec281927feeba60ce8a70 - languageName: node - linkType: hard - -"react-docgen-typescript@npm:^2.0.0": - version: 2.2.2 - resolution: "react-docgen-typescript@npm:2.2.2" - peerDependencies: - typescript: ">= 4.3.x" - checksum: 8c0/d31a061a21b5d4b67d4af7bc742541fd9e16254bd32861cd29c52565bc2175f40421a3550d52b6a6b0d0478e7cc408558eb0060a0bdd2957b02cfceeb0ee1e88 - languageName: node - linkType: hard - -"react-docgen@npm:^5.0.0": - version: 5.4.0 - resolution: "react-docgen@npm:5.4.0" - dependencies: - "@babel/core": "npm:^7.7.5" - "@babel/generator": "npm:^7.12.11" - "@babel/runtime": "npm:^7.7.6" - ast-types: "npm:^0.14.2" - commander: "npm:^2.19.0" - doctrine: "npm:^3.0.0" - estree-to-babel: "npm:^3.1.0" - neo-async: "npm:^2.6.1" - node-dir: "npm:^0.1.10" - strip-indent: "npm:^3.0.0" - bin: - react-docgen: bin/react-docgen.js - checksum: 8c0/9163705247736ca0ea2a0d18544b86801e47c4cac82e2d309c39b82bc9caa5e8a0b3f98fa3129cc1bb7fc50288993a12d719fa10834c5f7b2f2939d5b5e93611 - languageName: node - linkType: hard - -"react-dom@npm:0.0.0-experimental-e5205658f-20230913": - version: 0.0.0-experimental-e5205658f-20230913 - resolution: "react-dom@npm:0.0.0-experimental-e5205658f-20230913" - dependencies: - loose-envify: "npm:^1.1.0" - scheduler: "npm:0.0.0-experimental-e5205658f-20230913" - peerDependencies: - react: 0.0.0-experimental-e5205658f-20230913 - checksum: b8e0e0edf05161a39cd8495ac11dbebccda0e69245d1f33d07697122e65649a1f0539ff8ad7277d833aabc9cbee8da9d80de14d0766262412da5bf824d5eb823 - languageName: node - linkType: hard - -"react-dom@npm:^17.0.2": - version: 17.0.2 - resolution: "react-dom@npm:17.0.2" - dependencies: - loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - scheduler: "npm:^0.20.2" - peerDependencies: - react: 17.0.2 - checksum: 8c0/51abbcb72450fe527ebf978c3bc989ba266630faaa53f47a2fae5392369729e8de62b2e4683598cbe651ea7873cd34ec7d5127e2f50bf4bfe6bd0c3ad9bddcb0 - languageName: node - linkType: hard - -"react-draggable@npm:^4.0.0, react-draggable@npm:^4.0.3": - version: 4.4.6 - resolution: "react-draggable@npm:4.4.6" - dependencies: - clsx: "npm:^1.1.1" - prop-types: "npm:^15.8.1" - peerDependencies: - react: ">= 16.3.0" - react-dom: ">= 16.3.0" - checksum: 1e8cf47414a8554caa68447e5f27749bc40e1eabb4806e2dadcb39ab081d263f517d6aaec5231677e6b425603037c7e3386d1549898f9ffcc98a86cabafb2b9a - languageName: node - linkType: hard - -"react-draggable@npm:^4.4.3": - version: 4.4.4 - resolution: "react-draggable@npm:4.4.4" - dependencies: - clsx: "npm:^1.1.1" - prop-types: "npm:^15.6.0" - peerDependencies: - react: ">= 16.3.0" - react-dom: ">= 16.3.0" - checksum: 8c0/04399a3d1fde392b2adeb30be619adf0344cd59bd17e93e2e165da617a2c2c6db68903614b3a98bb5d98299dff36bf776346afcbd59b954a89b2ead4de70da99 - languageName: node - linkType: hard - -"react-error-boundary@npm:4.0.11": - version: 4.0.11 - resolution: "react-error-boundary@npm:4.0.11" - dependencies: - "@babel/runtime": "npm:^7.12.5" - peerDependencies: - react: ">=16.13.1" - checksum: 33dad3df7687971e65c7182d97f44bd618cb5d77d1c338e0a7c17c5cf7706a07b9055fffb771ff19bad750d40dd3cfd18d661a60b0518e73197e294dc185f18c - languageName: node - linkType: hard - -"react-error-overlay@npm:^6.0.8": - version: 6.0.10 - resolution: "react-error-overlay@npm:6.0.10" - checksum: 8c0/123dc3a6d079a190f94bb4138b5b970e9f592a614f411afd8045a9eab6107d1c750da3a756b19f012b53cd318bc2287cbe6a7ba683ba1d904821d9f7e5135472 - languageName: node - linkType: hard - -"react-error-overlay@npm:^6.0.9": - version: 6.0.9 - resolution: "react-error-overlay@npm:6.0.9" - checksum: 8c0/02f51337f34589305f827249acb597446489794cc5b5e721a6260111325b56942a7471b76967cba304e797d7e4ef16dd0bd989c112dd0bb9586270df0d75a4a9 - languageName: node - linkType: hard - -"react-fast-compare@npm:^3.0.1, react-fast-compare@npm:^3.2.0": - version: 3.2.0 - resolution: "react-fast-compare@npm:3.2.0" - checksum: 8c0/2a7d75ce9fb5da1e3c01f74a5cd592f3369a8cc8d44e93654bf147ab221f430238e8be70677e896f2bfcb96a1cb7a47a8d05d84633de764a9d57d27005a4bb9e - languageName: node - linkType: hard - -"react-grid-layout@npm:1.3.4": - version: 1.3.4 - resolution: "react-grid-layout@npm:1.3.4" - dependencies: - clsx: "npm:^1.1.1" - lodash.isequal: "npm:^4.0.0" - prop-types: "npm:^15.8.1" - react-draggable: "npm:^4.0.0" - react-resizable: "npm:^3.0.4" - peerDependencies: - react: ">= 16.3.0" - react-dom: ">= 16.3.0" - checksum: 2c4a9ca1284cf6a618070aeccf8ffb8d2d91798452f7606395a4524bda27fad82ba9c818cb3e420d617fec8aed93c0caaae060c714d21a929c6f5c75727697b7 - languageName: node - linkType: hard - -"react-helmet-async@npm:1.3.0": - version: 1.3.0 - resolution: "react-helmet-async@npm:1.3.0" - dependencies: - "@babel/runtime": "npm:^7.12.5" - invariant: "npm:^2.2.4" - prop-types: "npm:^15.7.2" - react-fast-compare: "npm:^3.2.0" - shallowequal: "npm:^1.1.0" - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - checksum: 8c0/8f3e6d26beff61d2ed18f7b41561df3e4d83a7582914c7196aa65158c7f3cce939276547d7a0b8987952d9d44131406df74efba02d1f8fa8a3940b49e6ced70b - languageName: node - linkType: hard - -"react-helmet-async@npm:^1.0.7": - version: 1.2.2 - resolution: "react-helmet-async@npm:1.2.2" - dependencies: - "@babel/runtime": "npm:^7.12.5" - invariant: "npm:^2.2.4" - prop-types: "npm:^15.7.2" - react-fast-compare: "npm:^3.2.0" - shallowequal: "npm:^1.1.0" - peerDependencies: - react: ^16.6.0 || ^17.0.0 - react-dom: ^16.6.0 || ^17.0.0 - checksum: 8c0/29cfa2f521b12d2f899a4f09dcba3106168f676a92ac2c9fc1a3acef19452896961e9b30b432195d9c7a59589fcbcef32afc136642affe82d014b8f31b442c1e - languageName: node - linkType: hard - -"react-hook-form@npm:7.48.2": - version: 7.48.2 - resolution: "react-hook-form@npm:7.48.2" - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - checksum: 77663276288d3e240da76c469612fec2bfb2dd34ed0512adb8554b8567e89a316c3df62266e51639f66a9a9d50ce175e8dc965f94bc31afecb460ed48333dafa - languageName: node - linkType: hard - -"react-hot-toast@npm:2.4.1": - version: 2.4.1 - resolution: "react-hot-toast@npm:2.4.1" - dependencies: - goober: "npm:^2.1.10" - peerDependencies: - react: ">=16" - react-dom: ">=16" - checksum: 8c0/591ecec3c6adc1cdb70f00165a57baa3d7f75d0d30fa767213c36496bdcc6be2b2e6a3edbf7c04f7d726a1b17dcfb5e7feb2136b04b17c9ccb769894b970f365 - languageName: node - linkType: hard - -"react-hot-toast@npm:^1.0.2": - version: 1.0.2 - resolution: "react-hot-toast@npm:1.0.2" - dependencies: - goober: "npm:^2.0.15" - peerDependencies: - react: ">=16" - react-dom: ">=16" - checksum: 8c0/b1d87e8e1774653e8e115f70be252ee608edbf39772a1bac56589129442c5814fcd2d833f4b9ac939d9b47219e5fe9eab5effbbd3a86f5b21291d750c8586623 - languageName: node - linkType: hard - -"react-is@npm:^16.10.2, react-is@npm:^16.13.1, react-is@npm:^16.7.0, react-is@npm:^16.8.0, react-is@npm:^16.8.1": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: 8c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 - languageName: node - linkType: hard - -"react-is@npm:^17.0.1, react-is@npm:^17.0.2": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 8c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 - languageName: node - linkType: hard - -"react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: 8c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 - languageName: node - linkType: hard - -"react-lifecycles-compat@npm:^3.0.4": - version: 3.0.4 - resolution: "react-lifecycles-compat@npm:3.0.4" - checksum: 1d0df3c85af79df720524780f00c064d53a9dd1899d785eddb7264b378026979acbddb58a4b7e06e7d0d12aa1494fd5754562ee55d32907b15601068dae82c27 - languageName: node - linkType: hard - -"react-popper-tooltip@npm:^3.1.1": - version: 3.1.1 - resolution: "react-popper-tooltip@npm:3.1.1" - dependencies: - "@babel/runtime": "npm:^7.12.5" - "@popperjs/core": "npm:^2.5.4" - react-popper: "npm:^2.2.4" - peerDependencies: - react: ^16.6.0 || ^17.0.0 - react-dom: ^16.6.0 || ^17.0.0 - checksum: 8c0/782a7a4a066251dd794a790b83e9764a97dbb616a16b0fe501020b0cf7a9fec6804449e7b9b7714bfc4bb5eeba073550b850483aea25245e32317b9ead23c9ec - languageName: node - linkType: hard - -"react-popper@npm:^2.2.4": - version: 2.2.5 - resolution: "react-popper@npm:2.2.5" - dependencies: - react-fast-compare: "npm:^3.0.1" - warning: "npm:^4.0.2" - peerDependencies: - "@popperjs/core": ^2.0.0 - react: ^16.8.0 || ^17 - checksum: 8c0/199ff9ec23670eece1c5972d48d2c5e9c28938dd610c432979fdab631a38371f8a3a5fbb9dcaeec0cff9ce9fb58b3bc1965c525de14fdb78f5e9b35f0d90f335 - languageName: node - linkType: hard - -"react-refresh@npm:0.14.0, react-refresh@npm:^0.14.0": - version: 0.14.0 - resolution: "react-refresh@npm:0.14.0" - checksum: 8c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d - languageName: node - linkType: hard - -"react-refresh@npm:^0.10.0": - version: 0.10.0 - resolution: "react-refresh@npm:0.10.0" - checksum: 8c0/616e82bed3787bf4e55dcc1c9836f251b93523dd4b0ffb1c24c2dcf5d09f686fbf3cffc7d489cd7f12429f76ddf66eb431748fc07df56b18a888a7705cbc079e - languageName: node - linkType: hard - -"react-refresh@npm:^0.11.0": - version: 0.11.0 - resolution: "react-refresh@npm:0.11.0" - checksum: 8c0/cbb5616c7ba670bbd2f37ddadcdfefa66e727ea188e89733ccb8184d3b874631104b0bc016d5676a7ade4d9c79100b99b46b6ed10cd117ab5d1ddcbf8653a9f2 - languageName: node - linkType: hard - -"react-remove-scroll-bar@npm:^2.3.3": - version: 2.3.4 - resolution: "react-remove-scroll-bar@npm:2.3.4" - dependencies: - react-style-singleton: "npm:^2.2.1" - tslib: "npm:^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 - checksum: 2262750dc1022c56d2c79e8d865c00045881c57bcaca74810ae8adac35cfdf723ff7d6b3b0e95c85eb9a0cff90bb4b1e0af801bd703ce8c0a2e35ab14ff1babb - languageName: node - linkType: hard - -"react-remove-scroll@npm:2.5.5": - version: 2.5.5 - resolution: "react-remove-scroll@npm:2.5.5" - dependencies: - react-remove-scroll-bar: "npm:^2.3.3" - react-style-singleton: "npm:^2.2.1" - tslib: "npm:^2.1.0" - use-callback-ref: "npm:^1.3.0" - use-sidecar: "npm:^1.1.2" - 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 - checksum: 4952657e6a7b9d661d4ad4dfcef81b9c7fa493e35164abff99c35c0b27b3d172ef7ad70c09416dc44dd14ff2e6b38a5ec7da27e27e90a15cbad36b8fd2fd8054 - languageName: node - linkType: hard - -"react-resizable@npm:^3.0.4": - version: 3.0.5 - resolution: "react-resizable@npm:3.0.5" - dependencies: - prop-types: "npm:15.x" - react-draggable: "npm:^4.0.3" - peerDependencies: - react: ">= 16.3" - checksum: cfe50aa6efb79e0aa09bd681a5beab2fcd1186737c4952eb4c3974ed9395d5d263ccd1130961d06b8f5e24c8f544dd2967b5c740ce68719962d1771de7bdb350 - languageName: node - linkType: hard - -"react-router-dom@npm:6.8.1": - version: 6.8.1 - resolution: "react-router-dom@npm:6.8.1" - dependencies: - "@remix-run/router": "npm:1.3.2" - react-router: "npm:6.8.1" - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: ce2a756b8deeacf375166d2f009b344560dc45f34ddba213b48caf3089d4035563068beda2bff091904d2a1544b78135cbb9a5fa2f1cd645b7429f2b740defd5 - languageName: node - linkType: hard - -"react-router-dom@npm:^6.0.0": - version: 6.2.1 - resolution: "react-router-dom@npm:6.2.1" - dependencies: - history: "npm:^5.2.0" - react-router: "npm:6.2.1" - peerDependencies: - react: ">=16.8" - react-dom: ">=16.8" - checksum: 8c0/cdec44b06c89f95bb038f964079597ff02a87db62ce231bf61e23500ad75cc321087d06def3b68f38f7805eb84a43fdd0b9f61b45fb3d7f0158d2604da5a538f - languageName: node - linkType: hard - -"react-router@npm:6.2.1, react-router@npm:^6.0.0": - version: 6.2.1 - resolution: "react-router@npm:6.2.1" - dependencies: - history: "npm:^5.2.0" - peerDependencies: - react: ">=16.8" - checksum: 8c0/591b4f1fe1c7904b608dfe693b82518c9b453b790421e6ebfec76cee72f7bc2db7a61fb187edf5501484b1f738f090561b8b9ba104b5c1b8757c330c11ece485 - languageName: node - linkType: hard - -"react-router@npm:6.8.1": - version: 6.8.1 - resolution: "react-router@npm:6.8.1" - dependencies: - "@remix-run/router": "npm:1.3.2" - peerDependencies: - react: ">=16.8" - checksum: ff37445433394f3468c67fb3fb14d3e5c303cd4a9937da31b663818952b0241af3c2de822123e7d06231131e757ce2c72dd08da7e23964b52e6416588112e02e - languageName: node - linkType: hard - -"react-server-dom-webpack@npm:0.0.0-experimental-e5205658f-20230913": - version: 0.0.0-experimental-e5205658f-20230913 - resolution: "react-server-dom-webpack@npm:0.0.0-experimental-e5205658f-20230913" - dependencies: - acorn-loose: "npm:^8.3.0" - loose-envify: "npm:^1.1.0" - neo-async: "npm:^2.6.1" - peerDependencies: - react: 0.0.0-experimental-e5205658f-20230913 - react-dom: 0.0.0-experimental-e5205658f-20230913 - webpack: ^5.59.0 - checksum: 94c29f986209c3d174a3b200526a8f1e8e10c9c831d29e9938e5f6e08146020a37a5ec19410af73d21e32906c35c7c1f68b044c720ef5d785d4de6cbb0438a88 - languageName: node - linkType: hard - -"react-sizeme@npm:^3.0.1": - version: 3.0.1 - resolution: "react-sizeme@npm:3.0.1" - dependencies: - element-resize-detector: "npm:^1.2.2" - invariant: "npm:^2.2.4" - shallowequal: "npm:^1.1.0" - throttle-debounce: "npm:^3.0.1" - peerDependencies: - react: ^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0 - react-dom: ^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0 - checksum: 8c0/80ba5b25dd26ce72e3597ad5ff05718ac90e5778ae270f0c6a196a643773d6b0ac9fbcef3ba3785b29505594c7323f3df28fb29aa18030ddb72f04ee9ac0465b - languageName: node - linkType: hard - -"react-smooth@npm:^2.0.5": - version: 2.0.5 - resolution: "react-smooth@npm:2.0.5" - dependencies: - fast-equals: "npm:^5.0.0" - react-transition-group: "npm:2.9.0" - peerDependencies: - prop-types: ^15.6.0 - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 3d7e5d0c7c927bebf47743d868ac76e8637cf18564cd1fd12edab5cfdad462743ebdd5a2f4030c653d2244f6cf85fabe26a78ee4308e7b9c738b6818755ce0b1 - languageName: node - linkType: hard - -"react-split-pane@npm:0.1.92": - version: 0.1.92 - resolution: "react-split-pane@npm:0.1.92" - dependencies: - prop-types: "npm:^15.7.2" - react-lifecycles-compat: "npm:^3.0.4" - react-style-proptype: "npm:^3.2.2" - peerDependencies: - react: ^16.0.0-0 - react-dom: ^16.0.0-0 - checksum: 14fdf1e247905abf1e3619042a29ee03ac62f80436bb0c672b04be5d4f0b7c1aeb6d992d5631bcc5b43d3fb766ee4387dc10a83251240a5de6809072a07dfef6 - languageName: node - linkType: hard - -"react-style-proptype@npm:^3.2.2": - version: 3.2.2 - resolution: "react-style-proptype@npm:3.2.2" - dependencies: - prop-types: "npm:^15.5.4" - checksum: 5996267c2b65b3873593e6bc6bb0ac0fddc93c15bddf7a23370ecdabf3e6655367895b8a6b8f0871bef7821b68b21042d150aabd7c16519c3d47e27819d9351f - languageName: node - linkType: hard - -"react-style-singleton@npm:^2.2.1": - version: 2.2.1 - resolution: "react-style-singleton@npm:2.2.1" - dependencies: - get-nonce: "npm:^1.0.0" - invariant: "npm:^2.2.4" - tslib: "npm:^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 - checksum: 6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad - languageName: node - linkType: hard - -"react-syntax-highlighter@npm:^13.5.3": - version: 13.5.3 - resolution: "react-syntax-highlighter@npm:13.5.3" - dependencies: - "@babel/runtime": "npm:^7.3.1" - highlight.js: "npm:^10.1.1" - lowlight: "npm:^1.14.0" - prismjs: "npm:^1.21.0" - refractor: "npm:^3.1.0" - peerDependencies: - react: ">= 0.14.0" - checksum: 8c0/d045ede02cff40d5a80ca7788995844ab52a6ca1e440317364738983e9c295f63db5c5e8a04059315a7ba847575d00e58440eb2c8f6a000bb2deff518c9294a1 - languageName: node - linkType: hard - -"react-textarea-autosize@npm:^8.3.0": - version: 8.3.2 - resolution: "react-textarea-autosize@npm:8.3.2" - dependencies: - "@babel/runtime": "npm:^7.10.2" - use-composed-ref: "npm:^1.0.0" - use-latest: "npm:^1.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - checksum: 8c0/02e44f3df1081318673274a9dc46b694ec101be5bd1449d870fa03f762ef5e46da1d1799d0a5142679889014572b70bfc9bf14240d94c61c6c19746cba7d3cee - languageName: node - linkType: hard - -"react-toastify@npm:9.1.3": - version: 9.1.3 - resolution: "react-toastify@npm:9.1.3" - dependencies: - clsx: "npm:^1.1.1" - peerDependencies: - react: ">=16" - react-dom: ">=16" - checksum: 51de1e51e9357a24773fbcd45a4db18bf74b8ec40d86a2bfb4a4fee23ca4f9fffdac5dfb7a3c21baea39971f72f72dfcdc79403a6de006f74d69e7bc12f8b3e0 - languageName: node - linkType: hard - -"react-transition-group@npm:2.9.0": - version: 2.9.0 - resolution: "react-transition-group@npm:2.9.0" - dependencies: - dom-helpers: "npm:^3.4.0" - loose-envify: "npm:^1.4.0" - prop-types: "npm:^15.6.2" - react-lifecycles-compat: "npm:^3.0.4" - peerDependencies: - react: ">=15.0.0" - react-dom: ">=15.0.0" - checksum: df40608e9defb6873290b9f2165921f17139b8edbb2019e2de38f77477f9cbd8fdb739b20e1e04cb16a513137c80e85cf5f0fff96049a94b740d389313394476 - languageName: node - linkType: hard - -"react-transition-group@npm:^4.4.5": - version: 4.4.5 - resolution: "react-transition-group@npm:4.4.5" - dependencies: - "@babel/runtime": "npm:^7.5.5" - dom-helpers: "npm:^5.0.1" - loose-envify: "npm:^1.4.0" - prop-types: "npm:^15.6.2" - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 2ba754ba748faefa15f87c96dfa700d5525054a0141de8c75763aae6734af0740e77e11261a1e8f4ffc08fd9ab78510122e05c21c2d79066c38bb6861a886c82 - languageName: node - linkType: hard - -"react@npm:0.0.0-experimental-e5205658f-20230913": - version: 0.0.0-experimental-e5205658f-20230913 - resolution: "react@npm:0.0.0-experimental-e5205658f-20230913" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 69f384cd192d6fc83bd77457b539c171cd89b44fd105c67c77a2c57b237c1068c598470ddf524084bdb7d9b0bc16362918493dbc3fbcb909af8edd92c6be9759 - languageName: node - linkType: hard - -"react@npm:^17.0.2": - version: 17.0.2 - resolution: "react@npm:17.0.2" - dependencies: - loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - checksum: 8c0/07ae8959acf1596f0550685102fd6097d461a54a4fd46a50f88a0cd7daaa97fdd6415de1dcb4bfe0da6aa43221a6746ce380410fa848acc60f8ac41f6649c148 - languageName: node - linkType: hard - -"read-cache@npm:^1.0.0": - version: 1.0.0 - resolution: "read-cache@npm:1.0.0" - dependencies: - pify: "npm:^2.3.0" - checksum: 90cb2750213c7dd7c80cb420654344a311fdec12944e81eb912cd82f1bc92aea21885fa6ce442e3336d9fccd663b8a7a19c46d9698e6ca55620848ab932da814 - languageName: node - linkType: hard - -"read-pkg-up@npm:^7.0.1": - version: 7.0.1 - resolution: "read-pkg-up@npm:7.0.1" - dependencies: - find-up: "npm:^4.1.0" - read-pkg: "npm:^5.2.0" - type-fest: "npm:^0.8.1" - checksum: 8c0/82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385 - languageName: node - linkType: hard - -"read-pkg@npm:^5.2.0": - version: 5.2.0 - resolution: "read-pkg@npm:5.2.0" - dependencies: - "@types/normalize-package-data": "npm:^2.4.0" - normalize-package-data: "npm:^2.5.0" - parse-json: "npm:^5.0.0" - type-fest: "npm:^0.6.0" - checksum: 8c0/b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb - languageName: node - linkType: hard - -"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:^2.3.7, readable-stream@npm:~2.3.6": - version: 2.3.7 - resolution: "readable-stream@npm:2.3.7" - dependencies: - core-util-is: "npm:~1.0.0" - inherits: "npm:~2.0.3" - isarray: "npm:~1.0.0" - process-nextick-args: "npm:~2.0.0" - safe-buffer: "npm:~5.1.1" - string_decoder: "npm:~1.1.1" - util-deprecate: "npm:~1.0.1" - checksum: 8c0/1708755e6cf9daff6ff60fa5b4575636472289c5b95d38058a91f94732b8d024a940a0d4d955639195ce42c22cab16973ee8fea8deedd24b5fec3dd596465f86 - languageName: node - linkType: hard - -"readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: "npm:^2.0.3" - string_decoder: "npm:^1.1.1" - util-deprecate: "npm:^1.0.1" - checksum: 8c0/937bedd29ac8a68331666291922bea892fa2be1a33269e582de9f844a2002f146cf831e39cd49fe6a378d3f0c27358f259ed0e20d20f0bdc6a3f8fc21fce42dc - languageName: node - linkType: hard - -"readable-stream@npm:^4.0.0": - version: 4.3.0 - resolution: "readable-stream@npm:4.3.0" - dependencies: - abort-controller: "npm:^3.0.0" - buffer: "npm:^6.0.3" - events: "npm:^3.3.0" - process: "npm:^0.11.10" - checksum: 8c0/c74b8bfdfa09b0295e3cf031c17358ce6638e04498299c9c85ff922cd786e44b4098e79961d0c7ac9aa5a8279b335b8eb2f97d41fb0661bebce643be0ec3f49b - languageName: node - linkType: hard - -"readable-web-to-node-stream@npm:^3.0.2": - version: 3.0.2 - resolution: "readable-web-to-node-stream@npm:3.0.2" - dependencies: - readable-stream: "npm:^3.6.0" - checksum: 533d5cd1580232a2c753e52a245be13fc552e6f82c5053a8a8da7ea1063d73a34f936a86b3d4433cdb4a13dd683835cfc87f230936cb96d329a1e28b6040f42e - languageName: node - linkType: hard - -"readdir-glob@npm:^1.1.2": - version: 1.1.3 - resolution: "readdir-glob@npm:1.1.3" - dependencies: - minimatch: "npm:^5.1.0" - checksum: a37e0716726650845d761f1041387acd93aa91b28dd5381950733f994b6c349ddc1e21e266ec7cc1f9b92e205a7a972232f9b89d5424d07361c2c3753d5dbace - languageName: node - linkType: hard - -"readdirp@npm:^2.2.1": - version: 2.2.1 - resolution: "readdirp@npm:2.2.1" - dependencies: - graceful-fs: "npm:^4.1.11" - micromatch: "npm:^3.1.10" - readable-stream: "npm:^2.0.2" - checksum: 8c0/770d177372ff2212d382d425d55ca48301fcbf3231ab3827257bbcca7ff44fb51fe4af6acc2dda8512dc7f29da390e9fbea5b2b3fc724b86e85cc828395b7797 - languageName: node - linkType: hard - -"readdirp@npm:~3.5.0": - version: 3.5.0 - resolution: "readdirp@npm:3.5.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 8c0/293de2ed981884a09e76fbf90bddc7e1a87667e57e0284ddc8c177e3151b0d179a9a56441d9f2f3654423924ec100af57ba9e507086527f98fd1d21bdd041c3e - languageName: node - linkType: hard - -"readdirp@npm:~3.6.0": - version: 3.6.0 - resolution: "readdirp@npm:3.6.0" - dependencies: - picomatch: "npm:^2.2.1" - checksum: 8c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b - languageName: node - linkType: hard - -"real-require@npm:^0.2.0": - version: 0.2.0 - resolution: "real-require@npm:0.2.0" - checksum: 8c0/23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0 - languageName: node - linkType: hard - -"recast@npm:^0.20.3": - version: 0.20.5 - resolution: "recast@npm:0.20.5" - dependencies: - ast-types: "npm:0.14.2" - esprima: "npm:~4.0.0" - source-map: "npm:~0.6.1" - tslib: "npm:^2.0.1" - checksum: 8c0/7810216ff36c7376eddd66d3ce6b2df421305fdc983f2122711837911712177d52d804419655e1f29d4bb93016c178cffe442af410bdcf726050ca19af6fed32 - languageName: node - linkType: hard - -"recast@npm:^0.23.1": - version: 0.23.1 - resolution: "recast@npm:0.23.1" - dependencies: - assert: "npm:^2.0.0" - ast-types: "npm:^0.16.1" - esprima: "npm:~4.0.0" - source-map: "npm:~0.6.1" - tslib: "npm:^2.0.1" - checksum: 8c0/ce3f239721f56ef0773683eb1de774fb4c748f9aa3b81a935a06726226d27a2f884fd0f716f5ca17b96072061d72577e3a5e3a4883e2ce0c11c22a536dd2139a - languageName: node - linkType: hard - -"recharts-scale@npm:^0.4.4": - version: 0.4.5 - resolution: "recharts-scale@npm:0.4.5" - dependencies: - decimal.js-light: "npm:^2.4.1" - checksum: 64ce1fc4ebe62001787bf4dc4cbb779452d33831619309c71c50277c58e8968ffe98941562d9d0d5ffdb02588ebd62f4fe6548fa826110fd458db9c3cc6dadc1 - languageName: node - linkType: hard - -"recharts@npm:^2.7.1": - version: 2.10.3 - resolution: "recharts@npm:2.10.3" - dependencies: - clsx: "npm:^2.0.0" - eventemitter3: "npm:^4.0.1" - lodash: "npm:^4.17.19" - react-is: "npm:^16.10.2" - react-smooth: "npm:^2.0.5" - recharts-scale: "npm:^0.4.4" - tiny-invariant: "npm:^1.3.1" - victory-vendor: "npm:^36.6.8" - peerDependencies: - prop-types: ^15.6.0 - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 7c2896e05bef4777362621ab3b4de5aaa2469370295638028e93f1fc917fbf93c94ff09d330c5d01529c50d2b7a9b4a29a4f259e3f39b0a7b471f9dfe5ecbe1d - languageName: node - linkType: hard - -"rechoir@npm:^0.8.0": - version: 0.8.0 - resolution: "rechoir@npm:0.8.0" - dependencies: - resolve: "npm:^1.20.0" - checksum: 8c0/1a30074124a22abbd5d44d802dac26407fa72a0a95f162aa5504ba8246bc5452f8b1a027b154d9bdbabcd8764920ff9333d934c46a8f17479c8912e92332f3ff - languageName: node - linkType: hard - -"recursive-readdir@npm:2.2.2": - version: 2.2.2 - resolution: "recursive-readdir@npm:2.2.2" - dependencies: - minimatch: "npm:3.0.4" - checksum: 8c0/0137fab9e9f2a2784465a613a214f60cf76d62ce22c4237ac818c4e6d6ebb4c890d12b4547619dab843673dfa12ca4096baa32d64fdaed84793a544a02c2e1e1 - languageName: node - linkType: hard - -"redent@npm:^3.0.0": - version: 3.0.0 - resolution: "redent@npm:3.0.0" - dependencies: - indent-string: "npm:^4.0.0" - strip-indent: "npm:^3.0.0" - checksum: 8c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae - languageName: node - linkType: hard - -"redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": - version: 1.2.0 - resolution: "redis-errors@npm:1.2.0" - checksum: 8c0/5b316736e9f532d91a35bff631335137a4f974927bb2fb42bf8c2f18879173a211787db8ac4c3fde8f75ed6233eb0888e55d52510b5620e30d69d7d719c8b8a7 - languageName: node - linkType: hard - -"redis-parser@npm:^3.0.0": - version: 3.0.0 - resolution: "redis-parser@npm:3.0.0" - dependencies: - redis-errors: "npm:^1.0.0" - checksum: 8c0/ee16ac4c7b2a60b1f42a2cdaee22b005bd4453eb2d0588b8a4939718997ae269da717434da5d570fe0b05030466eeb3f902a58cf2e8e1ca058bf6c9c596f632f - languageName: node - linkType: hard - -"redis@npm:4.6.7": - version: 4.6.7 - resolution: "redis@npm:4.6.7" - dependencies: - "@redis/bloom": "npm:1.2.0" - "@redis/client": "npm:1.5.8" - "@redis/graph": "npm:1.1.0" - "@redis/json": "npm:1.0.4" - "@redis/search": "npm:1.1.3" - "@redis/time-series": "npm:1.0.4" - checksum: 8c0/8f9a1b622509be305dd7ff2c94c338dd8ed809b407c465e9faf5cf6b79827f92cbe82d6f08e549c59d1d331a7657fd1f202954bee20a06c0afd60d976ce6b679 - languageName: node - linkType: hard - -"reflect.getprototypeof@npm:^1.0.4": - version: 1.0.4 - resolution: "reflect.getprototypeof@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - get-intrinsic: "npm:^1.2.1" - globalthis: "npm:^1.0.3" - which-builtin-type: "npm:^1.1.3" - checksum: 02104cdd22658b637efe6b1df73658edab539268347327c8250a72d0cb273dcdf280c284e2d94155d22601d022d16be1a816a8616d679e447cbcbde9860d15cb - languageName: node - linkType: hard - -"refractor@npm:^3.1.0": - version: 3.3.1 - resolution: "refractor@npm:3.3.1" - dependencies: - hastscript: "npm:^6.0.0" - parse-entities: "npm:^2.0.0" - prismjs: "npm:~1.23.0" - checksum: 8c0/d12a747a75e73f0683ba34f01fcce845b89f49d9945b3f57ad1a9989438d9b6e47ff73a510e62aa112cca624942a9416608692409474cf74e6a877b3c422dcf4 - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.0.1": - version: 10.0.1 - resolution: "regenerate-unicode-properties@npm:10.0.1" - dependencies: - regenerate: "npm:^1.4.2" - checksum: 8c0/2ac39799588f81003b0b406611067c738ae63f876e8e66b1299b4d1c658ed435bf20007e08f45f1f49a7871510fc2d12cace283724cd4c6907a19adf6d5850a5 - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^10.1.0": - version: 10.1.0 - resolution: "regenerate-unicode-properties@npm:10.1.0" - dependencies: - regenerate: "npm:^1.4.2" - checksum: 8c0/17818ea6f67c5a4884b9e18842edc4b3838a12f62e24f843e80fbb6d8cb649274b5b86d98bb02075074e02021850e597a92ff6b58bbe5caba4bf5fd8e4e38b56 - languageName: node - linkType: hard - -"regenerate-unicode-properties@npm:^8.2.0": - version: 8.2.0 - resolution: "regenerate-unicode-properties@npm:8.2.0" - dependencies: - regenerate: "npm:^1.4.0" - checksum: 8c0/c55226ab8927045794c4bf6838374cb9b02846ba4d918a13fd5d7cbff9d63e9df61e9a3f0e44cc7af3bb1298e75da3af985a9787c7264849c88cb4f6b2a70b06 - languageName: node - linkType: hard - -"regenerate@npm:^1.4.0, regenerate@npm:^1.4.2": - version: 1.4.2 - resolution: "regenerate@npm:1.4.2" - checksum: 8c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 8c0/12b069dc774001fbb0014f6a28f11c09ebfe3c0d984d88c9bced77fdb6fedbacbca434d24da9ae9371bfbf23f754869307fb51a4c98a8b8b18e5ef748677ca24 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.4, regenerator-runtime@npm:^0.13.7": - version: 0.13.7 - resolution: "regenerator-runtime@npm:0.13.7" - checksum: 8c0/4731a13643ced51020fcb20eaf77ff7b50aa11e5e53d8bf0affccb8c2beb9ce7f881059b961be4e1df959eb396e8c2daed2ecf6e8409b235fbc234e6c63784d0 - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.14.0": - version: 0.14.0 - resolution: "regenerator-runtime@npm:0.14.0" - checksum: 8c0/e25f062c1a183f81c99681691a342760e65c55e8d3a4d4fe347ebe72433b123754b942b70b622959894e11f8a9131dc549bd3c9a5234677db06a4af42add8d12 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.14.2": - version: 0.14.5 - resolution: "regenerator-transform@npm:0.14.5" - dependencies: - "@babel/runtime": "npm:^7.8.4" - checksum: 8c0/d3005b61a4fca820cd5091af689e94e57d5d5d7581368bad9c1881edf6987a2a5a7f0a9e177cd23f1d8ab7eda00c749a1eb5d4c73cabb27d8711c0e83c6c29d9 - languageName: node - linkType: hard - -"regenerator-transform@npm:^0.15.2": - version: 0.15.2 - resolution: "regenerator-transform@npm:0.15.2" - dependencies: - "@babel/runtime": "npm:^7.8.4" - checksum: 8c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 - languageName: node - linkType: hard - -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: "npm:^3.0.2" - safe-regex: "npm:^1.1.0" - checksum: 8c0/a0f8d6045f63b22e9759db10e248369c443b41cedd7dba0922d002b66c2734bc2aef0d98c4d45772d1f756245f4c5203856b88b9624bba2a58708858a8d485d6 - languageName: node - linkType: hard - -"regex-parser@npm:^2.2.11": - version: 2.2.11 - resolution: "regex-parser@npm:2.2.11" - checksum: 8c0/6572acbd46b5444215a73cf164f3c6fdbd73b8a2cde6a31a97307e514d20f5cbb8609f9e4994a7744207f2d1bf9e6fca4bbc0c9854f2b3da77ae0063efdc3f98 - languageName: node - linkType: hard - -"regexp-to-ast@npm:0.5.0": - version: 0.5.0 - resolution: "regexp-to-ast@npm:0.5.0" - checksum: 8c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.2.0, regexp.prototype.flags@npm:^1.3.1": - version: 1.3.1 - resolution: "regexp.prototype.flags@npm:1.3.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 8c0/499745fc4634e1619c050b09afe81aa1b88e0eac589543c8c78baa2e7090df313e1e8e6033bd7206ee498c2640b05593b3dfa3c603beb6ab9773277a8b7e5206 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - functions-have-names: "npm:^1.2.2" - checksum: 8c0/5d797c7fb95f72a52dd9685a485faf0af3c55a4d1f2fafc1153a7be3df036cc3274b195b3ae051ee3d896a01960b446d726206e0d9a90b749e90d93445bb781f - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.1": - version: 1.5.1 - resolution: "regexp.prototype.flags@npm:1.5.1" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - set-function-name: "npm:^2.0.0" - checksum: 1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8 - languageName: node - linkType: hard - -"regexpp@npm:^3.1.0": - version: 3.1.0 - resolution: "regexpp@npm:3.1.0" - checksum: 8c0/4d638ab01571275a424b6635b6b80f6abc8a7cd446e4640586f171a4d608724ca867e960956b310324add9d08f12f480c7e8ca33b595662794e83a8488789820 - languageName: node - linkType: hard - -"regexpu-core@npm:^4.7.1": - version: 4.7.1 - resolution: "regexpu-core@npm:4.7.1" - dependencies: - regenerate: "npm:^1.4.0" - regenerate-unicode-properties: "npm:^8.2.0" - regjsgen: "npm:^0.5.1" - regjsparser: "npm:^0.6.4" - unicode-match-property-ecmascript: "npm:^1.0.4" - unicode-match-property-value-ecmascript: "npm:^1.2.0" - checksum: 8c0/0b10019aa980c0defa5b4a234e8edc86fd2b138a6d50d65cc6a537d67e033a2778b7323c3b0c5850733a9c4847d5e3869dbe8810ca81fef1644a391de295b278 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.0.1": - version: 5.0.1 - resolution: "regexpu-core@npm:5.0.1" - dependencies: - regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.0.1" - regjsgen: "npm:^0.6.0" - regjsparser: "npm:^0.8.2" - unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.0.0" - checksum: 8c0/a4ea0af1391e3e02301de37bee244400d4efabe14125c3540e7c156bf803748154983b2cfb6477cfcab41db5c0909d6bda077fd73523bc89d4694db2359aabc2 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.2.1": - version: 5.2.2 - resolution: "regexpu-core@npm:5.2.2" - dependencies: - regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.1.0" - regjsgen: "npm:^0.7.1" - regjsparser: "npm:^0.9.1" - unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 8c0/1d025e2144ee7207db424125a81f5989bd337f56cddc23c0c83c1051679eee33d8c65c0e1e23fa494c2d8c9f0b19c47df0315a924445ad40e733c8aad4286f83 - languageName: node - linkType: hard - -"regexpu-core@npm:^5.3.1": - version: 5.3.2 - resolution: "regexpu-core@npm:5.3.2" - dependencies: - "@babel/regjsgen": "npm:^0.8.0" - regenerate: "npm:^1.4.2" - regenerate-unicode-properties: "npm:^10.1.0" - regjsparser: "npm:^0.9.1" - unicode-match-property-ecmascript: "npm:^2.0.0" - unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 8c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 - languageName: node - linkType: hard - -"registry-auth-token@npm:^4.0.0": - version: 4.2.1 - resolution: "registry-auth-token@npm:4.2.1" - dependencies: - rc: "npm:^1.2.8" - checksum: 8c0/ae23c68b8cd9d3afc99e160791f83a1e74aae9e3229a2a602b849c91164567fc6a3c31b7f2c1ac0e1e622be0d6671773439a55923e3bc1062d55a5c8dd843b65 - languageName: node - linkType: hard - -"registry-url@npm:^5.0.0": - version: 5.1.0 - resolution: "registry-url@npm:5.1.0" - dependencies: - rc: "npm:^1.2.8" - checksum: 8c0/c2c455342b5836cbed5162092eba075c7a02c087d9ce0fde8aeb4dc87a8f4a34a542e58bf4d8ec2d4cb73f04408cb3148ceb1f76647f76b978cfec22047dc6d6 - languageName: node - linkType: hard - -"regjsgen@npm:^0.5.1": - version: 0.5.2 - resolution: "regjsgen@npm:0.5.2" - checksum: 8c0/66cd5a9427a6db11a18eb544ecadf6866c8eeb3bf66d57185a9788929263b42641068df014d7e4d32a5cfbf114676f9bdd3013629203f03b1538416a1f4050e3 - languageName: node - linkType: hard - -"regjsgen@npm:^0.6.0": - version: 0.6.0 - resolution: "regjsgen@npm:0.6.0" - checksum: 8c0/e06ef822a4ab9a2faddbdc7f58c294939f9a22c02ca56b404f07f1f9c6bd51dc345ab8b5e2d3267f274a1f77ba4c56d9741e1c53b494bf12da6842c70fe35edc - languageName: node - linkType: hard - -"regjsgen@npm:^0.7.1": - version: 0.7.1 - resolution: "regjsgen@npm:0.7.1" - checksum: 8c0/5e49462fb782d43f6dd25bb39f92dbc93980392e66def07fa181638180a2a68752b568e1d323791a4ccbfd737b39ba794c37a224326e0eb7fe5b09cafd2b0c07 - languageName: node - linkType: hard - -"regjsparser@npm:^0.6.4": - version: 0.6.9 - resolution: "regjsparser@npm:0.6.9" - dependencies: - jsesc: "npm:~0.5.0" - bin: - regjsparser: bin/parser - checksum: 8c0/8e1cc1456803a25dda02f1066387531c5825db8e7cb94d0027612cb7dc985cde1085971a33232216e772ddbfa05bb866fe12121c684ad8aedfe77cbe316c77ce - languageName: node - linkType: hard - -"regjsparser@npm:^0.8.2": - version: 0.8.4 - resolution: "regjsparser@npm:0.8.4" - dependencies: - jsesc: "npm:~0.5.0" - bin: - regjsparser: bin/parser - checksum: 8c0/d7658e0b59f16f55f2a50d8d2f731165e85d7b22b7c7a08e70b080b0e49b893b0e282caff4b00b35336aaa66851a2faa1b0cb53094e71da1dcefd837a3b202ec - languageName: node - linkType: hard - -"regjsparser@npm:^0.9.1": - version: 0.9.1 - resolution: "regjsparser@npm:0.9.1" - dependencies: - jsesc: "npm:~0.5.0" - bin: - regjsparser: bin/parser - checksum: 8c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 - languageName: node - linkType: hard - -"relateurl@npm:^0.2.7": - version: 0.2.7 - resolution: "relateurl@npm:0.2.7" - checksum: 8c0/c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a - languageName: node - linkType: hard - -"relay-runtime@npm:12.0.0": - version: 12.0.0 - resolution: "relay-runtime@npm:12.0.0" - dependencies: - "@babel/runtime": "npm:^7.0.0" - fbjs: "npm:^3.0.0" - invariant: "npm:^2.2.4" - checksum: 8c0/f5d29b5c2f3c8a3438d43dcbc3022bd454c4ecbd4f0b10616df08bedc62d8aaa84f155f23e374053cf9f4a8238b93804e37a5b37ed9dc7ad01436d62d1b01d53 - languageName: node - linkType: hard - -"remark-footnotes@npm:2.0.0": - version: 2.0.0 - resolution: "remark-footnotes@npm:2.0.0" - checksum: 8c0/45b55b3440b74bfeed11fba5ed6b31f2fd35ab4e9ba169061b76a19f5ff4d16d851c9f3c423c7fa54eb0fa5e6043b89098cb9478e9b5b417cf4bdef5571b0236 - languageName: node - linkType: hard - -"remark-mdx@npm:1.6.22": - version: 1.6.22 - resolution: "remark-mdx@npm:1.6.22" - dependencies: - "@babel/core": "npm:7.12.9" - "@babel/helper-plugin-utils": "npm:7.10.4" - "@babel/plugin-proposal-object-rest-spread": "npm:7.12.1" - "@babel/plugin-syntax-jsx": "npm:7.12.1" - "@mdx-js/util": "npm:1.6.22" - is-alphabetical: "npm:1.0.4" - remark-parse: "npm:8.0.3" - unified: "npm:9.2.0" - checksum: 8c0/3a964048e58cba7848d59fc920baa330a9b7f619fedb44d4d7985d84875eba8d92e0d0dd0617e28326c6086e21ef441664748526a2517a42555d44c648453b0a - languageName: node - linkType: hard - -"remark-parse@npm:8.0.3": - version: 8.0.3 - resolution: "remark-parse@npm:8.0.3" - dependencies: - ccount: "npm:^1.0.0" - collapse-white-space: "npm:^1.0.2" - is-alphabetical: "npm:^1.0.0" - is-decimal: "npm:^1.0.0" - is-whitespace-character: "npm:^1.0.0" - is-word-character: "npm:^1.0.0" - markdown-escapes: "npm:^1.0.0" - parse-entities: "npm:^2.0.0" - repeat-string: "npm:^1.5.4" - state-toggle: "npm:^1.0.0" - trim: "npm:0.0.1" - trim-trailing-lines: "npm:^1.0.0" - unherit: "npm:^1.0.4" - unist-util-remove-position: "npm:^2.0.0" - vfile-location: "npm:^3.0.0" - xtend: "npm:^4.0.1" - checksum: 8c0/cbb859e2585864942823ce4d23a1b1514168a066ba91d47ca09ff45a5563b81bf17160c182ac7efed718712291c35a117db89b6ce603d04a845497ae7041c185 - languageName: node - linkType: hard - -"remark-squeeze-paragraphs@npm:4.0.0": - version: 4.0.0 - resolution: "remark-squeeze-paragraphs@npm:4.0.0" - dependencies: - mdast-squeeze-paragraphs: "npm:^4.0.0" - checksum: 8c0/61b39acfde3bebb1e9364a6991957f83ab0d878c0fd1de0e86e9bf9e060574cefb7a76057d64e7422e2a2bcf6e3c54635a4ae43f00b3dda38812ae4b6f4342f4 - languageName: node - linkType: hard - -"remedial@npm:^1.0.7": - version: 1.0.8 - resolution: "remedial@npm:1.0.8" - checksum: 8c0/ca1e22d2958e3f0f2fdb5f1c23fecadab5d83a0b1e291c67474c806ce07801212f1d2006995bdcfb592803ead7666e2b1fbb9281b3f32d4a87ff2335b3777725 - languageName: node - linkType: hard - -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: 8c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc - languageName: node - linkType: hard - -"remove-trailing-spaces@npm:^1.0.6": - version: 1.0.8 - resolution: "remove-trailing-spaces@npm:1.0.8" - checksum: 8c0/b9a4d74fd77e4a81b83cd19152abe1d658e5ecf13bc9b789c2699d7166d3879258a61625f8fc0274ef5719ab70e514ae86234fee481f6b41b50729949b837c1b - languageName: node - linkType: hard - -"renderkid@npm:^2.0.4": - version: 2.0.5 - resolution: "renderkid@npm:2.0.5" - dependencies: - css-select: "npm:^2.0.2" - dom-converter: "npm:^0.2" - htmlparser2: "npm:^3.10.1" - lodash: "npm:^4.17.20" - strip-ansi: "npm:^3.0.0" - checksum: 8c0/3f39762a28528a990fe89e347703418554441bfe76e58135e4be5f959a84d32fae6b085a1f706119eb48b7083c90c85e3e8f588f9a1fb669a9067f8bd79bac8f - languageName: node - linkType: hard - -"renderkid@npm:^3.0.0": - version: 3.0.0 - resolution: "renderkid@npm:3.0.0" - dependencies: - css-select: "npm:^4.1.3" - dom-converter: "npm:^0.2.0" - htmlparser2: "npm:^6.1.0" - lodash: "npm:^4.17.21" - strip-ansi: "npm:^6.0.1" - checksum: 8c0/24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 8c0/81aa8d82bc845780803ef52df3533fa399974b99df571d0bb86e91f0ffca9ee4b9c4e8e5e72af087938cc28d2aef93d106a6d01da685d72ce96455b90a9f9f69 - languageName: node - linkType: hard - -"repeat-string@npm:^1.5.4, repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 8c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d - languageName: node - linkType: hard - -"require-dir@npm:^1.2.0": - version: 1.2.0 - resolution: "require-dir@npm:1.2.0" - checksum: 8c0/f634977b64e0e881c2ae752dd2eb0993782c4714225158e0a4c1694b94f1bf895622d2eefa7db4702be8c89e6b490e07a2709dd127c1cfc0c1371f5158063677 - languageName: node - linkType: hard - -"require-directory@npm:^2.1.1": - version: 2.1.1 - resolution: "require-directory@npm:2.1.1" - checksum: 8c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 - languageName: node - linkType: hard - -"require-from-string@npm:^2.0.2": - version: 2.0.2 - resolution: "require-from-string@npm:2.0.2" - checksum: 8c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 - languageName: node - linkType: hard - -"require-main-filename@npm:^2.0.0": - version: 2.0.0 - resolution: "require-main-filename@npm:2.0.0" - checksum: 8c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 - languageName: node - linkType: hard - -"requireindex@npm:^1.2.0": - version: 1.2.0 - resolution: "requireindex@npm:1.2.0" - checksum: 8c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: 8c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 - languageName: node - linkType: hard - -"reselect@npm:^4.0.0": - version: 4.0.0 - resolution: "reselect@npm:4.0.0" - checksum: 8c0/b5957ad2a8fa1ad0c6510da6bd199511eee8bb0ea9278ca67a6f92d8b968ca632b46955a4332de19cc983325123c5cdc88e5887c8fc5b0d4b5938d1807cc3882 - languageName: node - linkType: hard - -"reselect@npm:^4.1.7": - version: 4.1.7 - resolution: "reselect@npm:4.1.7" - checksum: 8c0/d94b6fec351b5f612d2424d8e7aaee9b62cb3a83a345c4e79e09aa35fb9874923a7e82ad9a2cb25491c1522ed07a1c32df9e585ae67c48630613133c7aa14ec7 - languageName: node - linkType: hard - -"resolve-alpn@npm:^1.0.0": - version: 1.2.1 - resolution: "resolve-alpn@npm:1.2.1" - checksum: b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 - languageName: node - linkType: hard - -"resolve-cwd@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-cwd@npm:2.0.0" - dependencies: - resolve-from: "npm:^3.0.0" - checksum: 8c0/10c3a7ffeb55af51206f5ca8696ed833376179399336ce8e9df8f76c044c13bccd0e9a3148708daf272193179a581ddb076e203eaa71efa0ad341b243174ca12 - languageName: node - linkType: hard - -"resolve-cwd@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-cwd@npm:3.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 8c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 - languageName: node - linkType: hard - -"resolve-dir@npm:^1.0.0, resolve-dir@npm:^1.0.1": - version: 1.0.1 - resolution: "resolve-dir@npm:1.0.1" - dependencies: - expand-tilde: "npm:^2.0.0" - global-modules: "npm:^1.0.0" - checksum: 8c0/8197ed13e4a51d9cd786ef6a09fc83450db016abe7ef3311ca39389b3e508d77c26fe0cf0483a9b407b8caa2764bb5ccc52cf6a017ded91492a416475a56066f - languageName: node - linkType: hard - -"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": - version: 5.0.0 - resolution: "resolve-from@npm:5.0.0" - checksum: 8c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 - languageName: node - linkType: hard - -"resolve-from@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-from@npm:3.0.0" - checksum: 8c0/24affcf8e81f4c62f0dcabc774afe0e19c1f38e34e43daac0ddb409d79435fc3037f612b0cc129178b8c220442c3babd673e88e870d27215c99454566e770ebc - languageName: node - linkType: hard - -"resolve-from@npm:^4.0.0": - version: 4.0.0 - resolution: "resolve-from@npm:4.0.0" - checksum: 8c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 - languageName: node - linkType: hard - -"resolve-pkg-maps@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab - languageName: node - linkType: hard - -"resolve-pkg@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve-pkg@npm:2.0.0" - dependencies: - resolve-from: "npm:^5.0.0" - checksum: 8c0/c48af43563ae10fef4a20217808d7cc1de450837f5522963b559975d7b0bb28b7eee6f98bd815a93ebd083cc56b3139c520a22c066ee7abea73b819ea2764713 - languageName: node - linkType: hard - -"resolve-url-loader@npm:5.0.0": - version: 5.0.0 - resolution: "resolve-url-loader@npm:5.0.0" - dependencies: - adjust-sourcemap-loader: "npm:^4.0.0" - convert-source-map: "npm:^1.7.0" - loader-utils: "npm:^2.0.0" - postcss: "npm:^8.2.14" - source-map: "npm:0.6.1" - checksum: 8c0/53eef3620332f2fc35a4deffaa4395064b2ffd1bc28be380faa3f1e99c2fb7bbf0f705700b4539387d5b6c39586df54a92cd5d031606f19de4bf9e0ff1b6a522 - languageName: node - linkType: hard - -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 8c0/c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54 - languageName: node - linkType: hard - -"resolve.exports@npm:^2.0.0": - version: 2.0.0 - resolution: "resolve.exports@npm:2.0.0" - checksum: 8c0/fc6d2a10a37f32618c2674f0462bd3a2e5155bbe2764b8f4d5404977e3a8f26a3ecc1c72d8302ae1d7840ebff9dc5a92e1098b93338f3de8aea4647c63a0ddef - languageName: node - linkType: hard - -"resolve@npm:^1.1.7, resolve@npm:^1.22.2, resolve@npm:^1.22.4": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a - languageName: node - linkType: hard - -"resolve@npm:^1.10.0, resolve@npm:^1.11.1, resolve@npm:^1.12.0, resolve@npm:^1.13.1, resolve@npm:^1.14.2, resolve@npm:^1.18.1, resolve@npm:^1.20.0": - version: 1.20.0 - resolution: "resolve@npm:1.20.0" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: 8c0/d2c99e3bfbfd1f5aa4d134fa893b0157b923d6bfdc36563cb126995982ebfd0d93d901f851e4577897580f7c87d9a62d307b811422009fd3d2a8ed0571c2eabb - languageName: node - linkType: hard - -"resolve@npm:^1.19.0, resolve@npm:^1.3.2": - version: 1.22.0 - resolution: "resolve@npm:1.22.0" - dependencies: - is-core-module: "npm:^2.8.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 8c0/efe07a7cd69015a95a5f4e6cc3d372354b93d67a70410ec686413b2054dfa0d5ef16ff52c057a83634debb17f278b99db6dbc60367a4475ae01dda29c6eaa6e4 - languageName: node - linkType: hard - -"resolve@npm:^1.22.1": - version: 1.22.1 - resolution: "resolve@npm:1.22.1" - dependencies: - is-core-module: "npm:^2.9.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 8c0/6d58b1cb40f3fc80b9e45dd799d84cdc3829a993e4b9fa3b59d331e1dfacd0870e1851f4d0eb549d68c796e0b7087b43d1aec162653ccccff9e18191221a6e7d - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.3": - version: 2.0.0-next.3 - resolution: "resolve@npm:2.0.0-next.3" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: 8c0/669f6ad21d914df8c8d414092e263c7276598ad674c32edc2763b621bf03d0481816a5173ec552b0e97dd826c522b3109e5903db0c8eff085c1e1975a1ace8d2 - languageName: node - linkType: hard - -"resolve@npm:^2.0.0-next.4": - version: 2.0.0-next.4 - resolution: "resolve@npm:2.0.0-next.4" - dependencies: - is-core-module: "npm:^2.9.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 8c0/1de92669e7c46cfe125294c66d5405e13288bb87b97e9bdab71693ceebbcc0255c789bde30e2834265257d330d8ff57414d7d88e3097d8f69951f3ce978bf045 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.13.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.11.1#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.13.1#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.18.1#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin": - version: 1.20.0 - resolution: "resolve@patch:resolve@npm%3A1.20.0#optional!builtin::version=1.20.0&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: b6a5345d1f015cebba11dffa6a1982b39fe9ef42ed86ed832e51bd01c10817666df6d7b11579bc88664f5d57f2a5fe073a7f46b4e72a3efe7ed0cb450ee786da - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.19.0#optional!builtin, resolve@patch:resolve@npm%3A^1.3.2#optional!builtin": - version: 1.22.0 - resolution: "resolve@patch:resolve@npm%3A1.22.0#optional!builtin::version=1.22.0&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.8.1" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: ef8061e81f40c39070748e8e263c8767d8fcc7c34e9ee85211b29fbc2aedb1ae7cda7d735c2cdbe9367060e9f85ec11c2694e370c121c6bcbb472a7bd0b19555 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": - version: 1.22.1 - resolution: "resolve@patch:resolve@npm%3A1.22.1#optional!builtin::version=1.22.1&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.9.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: 0d8ccceba5537769c42aa75e4aa75ae854aac866a11d7e9ffdb1663f0158ee646a0d48fc2818ed5e7fb364d64220a1fb9092a160e11e00cbdd5fbab39a13092c - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^2.0.0-next.3#optional!builtin": - version: 2.0.0-next.3 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.3#optional!builtin::version=2.0.0-next.3&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.2.0" - path-parse: "npm:^1.0.6" - checksum: ecd5da8e5f3042952bd9fd46725ef850144e7c3d707d963039df677809716660ccf5efa66742fbc6796d280c23d18915384fada76869a9c554e15cf1e6df9278 - languageName: node - linkType: hard - -"resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin": - version: 2.0.0-next.4 - resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#optional!builtin::version=2.0.0-next.4&hash=c3c19d" - dependencies: - is-core-module: "npm:^2.9.0" - path-parse: "npm:^1.0.7" - supports-preserve-symlinks-flag: "npm:^1.0.0" - bin: - resolve: bin/resolve - checksum: ed2bb51d616b9cd30fe85cf49f7a2240094d9fa01a221d361918462be81f683d1855b7f192391d2ab5325245b42464ca59690db5bd5dad0a326fc0de5974dd10 - languageName: node - linkType: hard - -"response-iterator@npm:^0.2.6": - version: 0.2.6 - resolution: "response-iterator@npm:0.2.6" - checksum: 8c0/60e6b552cd610643269d5d916d270cc8a4bea978cbe4779d6ef8083ac6b89006795508034e4c4ebe204eded75ac32bf243589ba82c1184591dde0674f6db785e - languageName: node - linkType: hard - -"responselike@npm:^1.0.2": - version: 1.0.2 - resolution: "responselike@npm:1.0.2" - dependencies: - lowercase-keys: "npm:^1.0.0" - checksum: 8c0/1c2861d1950790da96159ca490eda645130eaf9ccc4d76db20f685ba944feaf30f45714b4318f550b8cd72990710ad68355ff15c41da43ed9a93c102c0ffa403 - languageName: node - linkType: hard - -"responselike@npm:^2.0.0": - version: 2.0.1 - resolution: "responselike@npm:2.0.1" - dependencies: - lowercase-keys: "npm:^2.0.0" - checksum: 360b6deb5f101a9f8a4174f7837c523c3ec78b7ca8a7c1d45a1062b303659308a23757e318b1e91ed8684ad1205721142dd664d94771cd63499353fd4ee732b5 - languageName: node - linkType: hard - -"restore-cursor@npm:^2.0.0": - version: 2.0.0 - resolution: "restore-cursor@npm:2.0.0" - dependencies: - onetime: "npm:^2.0.0" - signal-exit: "npm:^3.0.2" - checksum: 8c0/f5b335bee06f440445e976a7031a3ef53691f9b7c4a9d42a469a0edaf8a5508158a0d561ff2b26a1f4f38783bcca2c0e5c3a44f927326f6694d5b44d7a4993e6 - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: "npm:^5.1.0" - signal-exit: "npm:^3.0.2" - checksum: 8c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f - languageName: node - linkType: hard - -"restore-cursor@npm:^4.0.0": - version: 4.0.0 - resolution: "restore-cursor@npm:4.0.0" - dependencies: - onetime: "npm:^5.1.0" - signal-exit: "npm:^3.0.2" - checksum: 8c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 - languageName: node - linkType: hard - -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: 8c0/01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f - languageName: node - linkType: hard - -"ret@npm:~0.2.0": - version: 0.2.2 - resolution: "ret@npm:0.2.2" - checksum: 8c0/1a41e543913cda851abb1dae4852efa97bb693ce58fde3b51cc1cae94e2599dd70b91ad6268a4a07fc238305be06fed91723ef6d08863c48a0d02e0a74b943cd - languageName: node - linkType: hard - -"retry@npm:0.12.0, retry@npm:^0.12.0": - version: 0.12.0 - resolution: "retry@npm:0.12.0" - checksum: 8c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe - languageName: node - linkType: hard - -"retry@npm:^0.13.1": - version: 0.13.1 - resolution: "retry@npm:0.13.1" - checksum: 8c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 - languageName: node - linkType: hard - -"reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 8c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 - languageName: node - linkType: hard - -"rfdc@npm:^1.2.0, rfdc@npm:^1.3.0": - version: 1.3.0 - resolution: "rfdc@npm:1.3.0" - checksum: 8c0/a17fd7b81f42c7ae4cb932abd7b2f677b04cc462a03619fb46945ae1ccae17c3bc87c020ffdde1751cbfa8549860a2883486fdcabc9b9de3f3108af32b69a667 - languageName: node - linkType: hard - -"rgb-regex@npm:^1.0.1": - version: 1.0.1 - resolution: "rgb-regex@npm:1.0.1" - checksum: 8c0/ab43ea8b92c1e0c6d6bc811d7fff05927ae87473f9576363ae57213b1fd10605549a5cf89c79ccb7a02dd32e1f093c79891868ef31fd92cdb5378d7b180d73f5 - languageName: node - linkType: hard - -"rgba-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "rgba-regex@npm:1.0.0" - checksum: 8c0/4296e7dd41c0edf66c18c13824b746099af642e1b52de97addb6b22051398567090cf1df20bacd1d400cfc79aee6f3a428e0def623d358844495e3630189892c - languageName: node - linkType: hard - -"rimraf@npm:5.0.5": - version: 5.0.5 - resolution: "rimraf@npm:5.0.5" - dependencies: - glob: "npm:^10.3.7" - bin: - rimraf: dist/esm/bin.mjs - checksum: d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 - languageName: node - linkType: hard - -"rimraf@npm:^2.2.8, rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: ./bin.js - checksum: 8c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 - languageName: node - linkType: hard - -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: bin.js - checksum: 8c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 - languageName: node - linkType: hard - -"rimraf@npm:~2.6.2": - version: 2.6.3 - resolution: "rimraf@npm:2.6.3" - dependencies: - glob: "npm:^7.1.3" - bin: - rimraf: ./bin.js - checksum: 8c0/f1e646f8c567795f2916aef7aadf685b543da6b9a53e482bb04b07472c7eef2b476045ba1e29f401c301c66b630b22b815ab31fdd60c5e1ae6566ff523debf45 - languageName: node - linkType: hard - -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" - dependencies: - hash-base: "npm:^3.0.0" - inherits: "npm:^2.0.1" - checksum: 8c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a - languageName: node - linkType: hard - -"rollup@npm:3.29.4": - version: 3.29.4 - resolution: "rollup@npm:3.29.4" - dependencies: - fsevents: "npm:~2.3.2" - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 65eddf84bf389ea8e4d4c1614b1c6a298d08f8ae785c0c087e723a879190c8aaddbab4aa3b8a0524551b9036750c9f8bfea27b377798accfd2ba5084ceff5aaa - languageName: node - linkType: hard - -"rollup@npm:^3.27.1": - version: 3.28.1 - resolution: "rollup@npm:3.28.1" - dependencies: - fsevents: "npm:~2.3.2" - dependenciesMeta: - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: 8c0/e64df31db426d11044510ec2b150a969b8752e3e68090ebfd528f6523ca8a8d5b31f754d3bc0a9c6ecec907128600358d383b2961a1791aecc5d44f908035b4c - languageName: node - linkType: hard - -"root-workspace-0b6124@workspace:.": - version: 0.0.0-use.local - resolution: "root-workspace-0b6124@workspace:." - dependencies: - "@redwoodjs/core": "npm:0.32.2" - languageName: unknown - linkType: soft - -"rsvp@npm:^4.8.4": - version: 4.8.5 - resolution: "rsvp@npm:4.8.5" - checksum: 8c0/7978f01060a48204506a8ebe15cdbd468498f5ae538b1d7ee3e7630375ba7cb2f98df2f596c12d3f4d5d5c21badc1c6ca8009f5142baded8511609a28eabd19a - languageName: node - linkType: hard - -"run-async@npm:^2.4.0": - version: 2.4.1 - resolution: "run-async@npm:2.4.1" - checksum: 8c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 - languageName: node - linkType: hard - -"run-parallel@npm:^1.1.4, run-parallel@npm:^1.1.9": - version: 1.2.0 - resolution: "run-parallel@npm:1.2.0" - dependencies: - queue-microtask: "npm:^1.2.2" - checksum: 8c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 - languageName: node - linkType: hard - -"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": - version: 1.0.3 - resolution: "run-queue@npm:1.0.3" - dependencies: - aproba: "npm:^1.1.1" - checksum: 8c0/4e8964279d8f160f9ffaabe82eaad11a1d4c0db596a0f2b5257ae9d2b900c7e1ffcece3e5719199436f50718e1e7f45bb4bf7a82e331a4e734d67c2588a90cbb - languageName: node - linkType: hard - -"rx@npm:4.1.0": - version: 4.1.0 - resolution: "rx@npm:4.1.0" - checksum: 8c0/c2a2cf8cb350f38b5396f8ee6af1bc359c5ed5a409d710111a2da215bfb3fe77f75b5f0a0dd6fe6b57c5bdadf3b128ad1f8ad99de27da2c13ae9ba908a642cee - languageName: node - linkType: hard - -"rxjs@npm:^6.3.3, rxjs@npm:^6.4.0, rxjs@npm:^6.6.0, rxjs@npm:^6.6.3": - version: 6.6.7 - resolution: "rxjs@npm:6.6.7" - dependencies: - tslib: "npm:^1.9.0" - checksum: 8c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe - languageName: node - linkType: hard - -"rxjs@npm:^7.5.5": - version: 7.8.0 - resolution: "rxjs@npm:7.8.0" - dependencies: - tslib: "npm:^2.1.0" - checksum: 8c0/c48833638ae5d339332f8b792e716c3c662950ba95ba04e9e97a8cfd4628d8f009129672793c6c067c872a4dab5757231d41d7256a2114a5fabbf30d8a5b9d67 - languageName: node - linkType: hard - -"rxjs@npm:^7.8.1": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" - dependencies: - tslib: "npm:^2.1.0" - checksum: 8c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 - languageName: node - linkType: hard - -"safe-array-concat@npm:^1.0.1": - version: 1.0.1 - resolution: "safe-array-concat@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - isarray: "npm:^2.0.5" - checksum: 4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8 - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.1": - version: 5.1.1 - resolution: "safe-buffer@npm:5.1.1" - checksum: 8c0/1c233bd105deeba3c9a8911ed4ec24ba45adbb51fec02f7944a10a202c38e3df4ef2b524bdeb55f2e4f8c77c13b2959e2e2e6022e5d99acdd70633b5f7e138cf - languageName: node - linkType: hard - -"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": - version: 5.1.2 - resolution: "safe-buffer@npm:5.1.2" - checksum: 8c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 - languageName: node - linkType: hard - -"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: 8c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 - languageName: node - linkType: hard - -"safe-regex-test@npm:^1.0.0": - version: 1.0.0 - resolution: "safe-regex-test@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - is-regex: "npm:^1.1.4" - checksum: 8c0/14a81a7e683f97b2d6e9c8be61fddcf8ed7a02f4e64a825515f96bb1738eb007145359313741d2704d28b55b703a0f6300c749dde7c1dbc13952a2b85048ede2 - languageName: node - linkType: hard - -"safe-regex2@npm:^2.0.0": - version: 2.0.0 - resolution: "safe-regex2@npm:2.0.0" - dependencies: - ret: "npm:~0.2.0" - checksum: 8c0/f499e4fc69caafd7dd8023759e69a32991baa66e90bec5e2a7777b907943b27068dbff4e7a32cc8231f1354fcb779142f419e85498ae1e37384dc60619509c27 - languageName: node - linkType: hard - -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: "npm:~0.1.10" - checksum: 8c0/547d58aa5184cbef368fd5ed5f28d20f911614748c5da6b35f53fd6626396707587251e6e3d1e3010fd3ff1212e413841b8825eaa5f317017ca62a30899af31a - languageName: node - linkType: hard - -"safe-stable-stringify@npm:^2.3.1": - version: 2.4.2 - resolution: "safe-stable-stringify@npm:2.4.2" - checksum: 8c0/9120fb0576693a3d04fc39fec594df446ad9975a5b8c0771d1adcad164c64810996880328c0092550764d094f33a58dc823fc85204f2f1ee40b040e24f106335 - languageName: node - linkType: hard - -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: 8c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 - languageName: node - linkType: hard - -"sane@npm:^4.0.3": - version: 4.1.0 - resolution: "sane@npm:4.1.0" - dependencies: - "@cnakazawa/watch": "npm:^1.0.3" - anymatch: "npm:^2.0.0" - capture-exit: "npm:^2.0.0" - exec-sh: "npm:^0.3.2" - execa: "npm:^1.0.0" - fb-watchman: "npm:^2.0.0" - micromatch: "npm:^3.1.4" - minimist: "npm:^1.1.1" - walker: "npm:~1.0.5" - bin: - sane: ./src/cli.js - checksum: 8c0/7d0991ecaa10b02c6d0339a6f7e31db776971f3b659a351916dcc7ce3464671e72b54d80bcce118e39d4343e1e56c699fe35f6cb89fbd88b07095b72841cbfb0 - languageName: node - linkType: hard - -"sax@npm:1.2.1": - version: 1.2.1 - resolution: "sax@npm:1.2.1" - checksum: 8c0/1ae269cfde0b3774b4c92eb744452b6740bde5c5744fe5cadef6f496e42d9b632f483fb6aff9a23c0749c94c6951b06b0c5a90a5e99c879d3401cfd5ba61dc02 - languageName: node - linkType: hard - -"sax@npm:>=0.6.0, sax@npm:~1.2.4": - version: 1.2.4 - resolution: "sax@npm:1.2.4" - checksum: 8c0/6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 - languageName: node - linkType: hard - -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: "npm:^2.2.0" - checksum: 8c0/b7476c41dbe1c3a89907d2546fecfba234de5e66743ef914cde2603f47b19bed09732ab51b528ad0f98b958369d8be72b6f5af5c9cfad69972a73d061f0b3952 - languageName: node - linkType: hard - -"saxes@npm:^6.0.0": - version: 6.0.0 - resolution: "saxes@npm:6.0.0" - dependencies: - xmlchars: "npm:^2.2.0" - checksum: 8c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 - languageName: node - linkType: hard - -"scheduler@npm:0.0.0-experimental-e5205658f-20230913": - version: 0.0.0-experimental-e5205658f-20230913 - resolution: "scheduler@npm:0.0.0-experimental-e5205658f-20230913" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 20475be7524bb89002818cfc0f54af122c0e2c07c07ddb92275e10c0e8d1a51a9c7ca3b4b95e9b27017da4e22f1510c478afe08becc1073decfd03ae5823f452 - languageName: node - linkType: hard - -"scheduler@npm:^0.20.2": - version: 0.20.2 - resolution: "scheduler@npm:0.20.2" - dependencies: - loose-envify: "npm:^1.1.0" - object-assign: "npm:^4.1.1" - checksum: 8c0/b0982e4b0f34f4ffa4f2f486161c0fd9ce9b88680b045dccbf250eb1aa4fd27413570645455187a83535e2370f5c667a251045547765408492bd883cbe95fcdb - languageName: node - linkType: hard - -"schema-utils@npm:2.7.0": - version: 2.7.0 - resolution: "schema-utils@npm:2.7.0" - dependencies: - "@types/json-schema": "npm:^7.0.4" - ajv: "npm:^6.12.2" - ajv-keywords: "npm:^3.4.1" - checksum: 8c0/723c3c856a0313a89aa81c5fb2c93d4b11225f5cdd442665fddd55d3c285ae72e079f5286a3a9a1a973affe888f6c33554a2cf47b79b24cd8de2f1f756a6fb1b - languageName: node - linkType: hard - -"schema-utils@npm:^1.0.0": - version: 1.0.0 - resolution: "schema-utils@npm:1.0.0" - dependencies: - ajv: "npm:^6.1.0" - ajv-errors: "npm:^1.0.0" - ajv-keywords: "npm:^3.1.0" - checksum: 8c0/670e22d7f0ff0b6f4514a4d6fb27c359101b44b7dbfd9563af201af72eb4a9ff06144020cab5f85b16e88821fd09b97cbdae6c893721c6528c8cb704124e6a2f - languageName: node - linkType: hard - -"schema-utils@npm:^2.6.5, schema-utils@npm:^2.7.0, schema-utils@npm:^2.7.1": - version: 2.7.1 - resolution: "schema-utils@npm:2.7.1" - dependencies: - "@types/json-schema": "npm:^7.0.5" - ajv: "npm:^6.12.4" - ajv-keywords: "npm:^3.5.2" - checksum: 8c0/f484f34464edd8758712d5d3ba25a306e367dac988aecaf4ce112e99baae73f33a807b5cf869240bb6648c80720b36af2d7d72be3a27faa49a2d4fc63fa3f85f - languageName: node - linkType: hard - -"schema-utils@npm:^3.0.0": - version: 3.0.0 - resolution: "schema-utils@npm:3.0.0" - dependencies: - "@types/json-schema": "npm:^7.0.6" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 8c0/6590ce7cf328c5313866f9f4757e4a9aeaf5b1277b66467ae92a2538ef9268cfe79dfbfcf0be0eef3ccffa0a221c91224b687eab0a40352286f70f55bde10c82 - languageName: node - linkType: hard - -"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": - version: 3.1.1 - resolution: "schema-utils@npm:3.1.1" - dependencies: - "@types/json-schema": "npm:^7.0.8" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 8c0/55a8da802a5f8f0ce6f68b6a139f3261cb423bd23795766da866a0f5738fc40303370fbe0c3eeba60b2a91c569ad7ce5318fea455f8fe866098c5a3a6b9050b0 - languageName: node - linkType: hard - -"schema-utils@npm:^3.2.0": - version: 3.3.0 - resolution: "schema-utils@npm:3.3.0" - dependencies: - "@types/json-schema": "npm:^7.0.8" - ajv: "npm:^6.12.5" - ajv-keywords: "npm:^3.5.2" - checksum: 8c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.0": - version: 4.0.0 - resolution: "schema-utils@npm:4.0.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.8.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.0.0" - checksum: 8c0/d76f1b0724fb74fa9da19d4f98ebe89c2703d8d28df9dc44d66ab9a9cbca869b434181a36a2bc00ec53980f27e8fabe143759bdc8754692bbf7ef614fc6e9da4 - languageName: node - linkType: hard - -"schema-utils@npm:^4.0.1": - version: 4.2.0 - resolution: "schema-utils@npm:4.2.0" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.9.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.1.0" - checksum: 8c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 - languageName: node - linkType: hard - -"scuid@npm:^1.1.0": - version: 1.1.0 - resolution: "scuid@npm:1.1.0" - checksum: 8c0/01c6bd2657ceaa148ead0c836df6251f561166142059261022a38dba429b30141e27ab3c0eca1012b88912f51a9e848e475fe1b6259ef1c61a0a7f6eb54fb261 - languageName: node - linkType: hard - -"secure-json-parse@npm:^2.4.0, secure-json-parse@npm:^2.7.0": - version: 2.7.0 - resolution: "secure-json-parse@npm:2.7.0" - checksum: 8c0/f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4 - languageName: node - linkType: hard - -"selderee@npm:^0.11.0": - version: 0.11.0 - resolution: "selderee@npm:0.11.0" - dependencies: - parseley: "npm:^0.12.0" - checksum: c2ad8313a0dbf3c0b74752a8d03cfbc0931ae77a36679cdb64733eb732c1762f95a5174249bf7e8b8103874cb0e013a030f9c8b72f5d41e62f1d847d4a845d39 - languageName: node - linkType: hard - -"select-hose@npm:^2.0.0": - version: 2.0.0 - resolution: "select-hose@npm:2.0.0" - checksum: 8c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 - languageName: node - linkType: hard - -"select@npm:^1.1.2": - version: 1.1.2 - resolution: "select@npm:1.1.2" - checksum: 8c0/5dbd871c03a52aa70ce29ab46e9115d26cb34404717e7e705e678b3b4d535bacfa0a4c4c2d32262acec7b6fdfb6827e8980ea4ef969a8681f8a0b752331a0a02 - languageName: node - linkType: hard - -"selfsigned@npm:^1.10.8": - version: 1.10.14 - resolution: "selfsigned@npm:1.10.14" - dependencies: - node-forge: "npm:^0.10.0" - checksum: 8c0/cb7c92e28a3e8a34e91a3b20b9dd7d237a1bffccd9890c434f74eef65ae8bfffe7c1ab3379faac017b957ea44522923e06e2b41e0858c643edb01137a507cd16 - languageName: node - linkType: hard - -"selfsigned@npm:^2.1.1": - version: 2.1.1 - resolution: "selfsigned@npm:2.1.1" - dependencies: - node-forge: "npm:^1" - checksum: 8c0/4a2509c8a5bd49c3630a799de66b317352b52746bec981133d4f8098365da35d2344f0fbedf14aacf2cd1e88682048e2df11ad9dc59331d3b1c0a5ec3e6e16ad - languageName: node - linkType: hard - -"semver-regex@npm:^4.0.5": - version: 4.0.5 - resolution: "semver-regex@npm:4.0.5" - checksum: c270eda133691dfaab90318df995e96222e4c26c47b17f7c8bd5e5fe88b81ed67b59695fe27546e0314b0f0423c7faed1f93379ad9db47c816df2ddf770918ff - languageName: node - linkType: hard - -"semver-truncate@npm:^3.0.0": - version: 3.0.0 - resolution: "semver-truncate@npm:3.0.0" - dependencies: - semver: "npm:^7.3.5" - checksum: faede4e69e81590ee6b4141f5e89ae1162cd0ecafe660f0ae72bca45f16677a01a3bc26283201b695cec8409e1e861b8b2b10b0621c1661983e7ab10736caeee - languageName: node - linkType: hard - -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0, semver@npm:^5.7.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" - bin: - semver: ./bin/semver - checksum: 8c0/d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 - languageName: node - linkType: hard - -"semver@npm:7.0.0": - version: 7.0.0 - resolution: "semver@npm:7.0.0" - bin: - semver: bin/semver.js - checksum: 8c0/7fd341680a967a0abfd66f3a7d36ba44e52ff5d3e799e9a6cdb01a68160b64ef09be82b4af05459effeecdd836f002c2462555d2821cd890dfdfe36a0d9f56a5 - languageName: node - linkType: hard - -"semver@npm:7.5.4, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 8c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e - languageName: node - linkType: hard - -"semver@npm:^6.0.0, semver@npm:^6.1.1, semver@npm:^6.1.2, semver@npm:^6.2.0, semver@npm:^6.3.0": - version: 6.3.0 - resolution: "semver@npm:6.3.0" - bin: - semver: ./bin/semver.js - checksum: 8c0/1f4959e15bcfbaf727e964a4920f9260141bb8805b399793160da4e7de128e42a7d1f79c1b7d5cd21a6073fba0d55feb9966f5fef3e5ccb8e1d7ead3d7527458 - languageName: node - linkType: hard - -"semver@npm:^6.3.1": - version: 6.3.1 - resolution: "semver@npm:6.3.1" - bin: - semver: bin/semver.js - checksum: 8c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d - languageName: node - linkType: hard - -"semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 8c0/d450455b2601396dbc7d9f058a6709b1c0b99d74a911f9436c77887600ffcdb5f63d5adffa0c3b8f0092937d8a41cc61c6437bcba375ef4151cb1335ebe4f1f9 - languageName: node - linkType: hard - -"semver@npm:^7.3.7, semver@npm:^7.3.8": - version: 7.3.8 - resolution: "semver@npm:7.3.8" - dependencies: - lru-cache: "npm:^6.0.0" - bin: - semver: bin/semver.js - checksum: 8c0/7e581d679530db31757301c2117721577a2bb36a301a443aac833b8efad372cda58e7f2a464fe4412ae1041cc1f63a6c1fe0ced8c57ce5aca1e0b57bb0d627b9 - languageName: node - linkType: hard - -"send@npm:0.17.1": - version: 0.17.1 - resolution: "send@npm:0.17.1" - dependencies: - debug: "npm:2.6.9" - depd: "npm:~1.1.2" - destroy: "npm:~1.0.4" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:~1.7.2" - mime: "npm:1.6.0" - ms: "npm:2.1.1" - on-finished: "npm:~2.3.0" - range-parser: "npm:~1.2.1" - statuses: "npm:~1.5.0" - checksum: 8c0/712e27d5d4f38d6097a649bbe8846a30a6f9d1995e78e1c133a7a351ec26508b0d8fb707dadb6e003f3753d3f9310667e04633522883b81300abd9978b28afd2 - languageName: node - linkType: hard - -"send@npm:0.18.0": - version: 0.18.0 - resolution: "send@npm:0.18.0" - dependencies: - debug: "npm:2.6.9" - depd: "npm:2.0.0" - destroy: "npm:1.2.0" - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - http-errors: "npm:2.0.0" - mime: "npm:1.6.0" - ms: "npm:2.1.3" - on-finished: "npm:2.4.1" - range-parser: "npm:~1.2.1" - statuses: "npm:2.0.1" - checksum: 8c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a - languageName: node - linkType: hard - -"sentence-case@npm:^3.0.4": - version: 3.0.4 - resolution: "sentence-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - upper-case-first: "npm:^2.0.2" - checksum: 8c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 - languageName: node - linkType: hard - -"serialize-javascript@npm:^4.0.0": - version: 4.0.0 - resolution: "serialize-javascript@npm:4.0.0" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 8c0/510dfe7f0311c0b2f7ab06311afa1668ba2969ab2f1faaac0a4924ede76b7f22ba85cfdeaa0052ec5a047bca42c8cd8ac8df8f0efe52f9bd290b3a39ae69fe9d - languageName: node - linkType: hard - -"serialize-javascript@npm:^5.0.1": - version: 5.0.1 - resolution: "serialize-javascript@npm:5.0.1" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 8c0/646bd92a8298d764d38316f3006bce0b0def6d0e254791396ac34403847654d9346b0b6ed7865efd799d93d4c47d900e08a8fa7a6f7f8d2dbaebab5444c3b431 - languageName: node - linkType: hard - -"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": - version: 6.0.1 - resolution: "serialize-javascript@npm:6.0.1" - dependencies: - randombytes: "npm:^2.1.0" - checksum: 8c0/1af427f4fee3fee051f54ffe15f77068cff78a3c96d20f5c1178d20630d3ab122d8350e639d5e13cde8111ef9db9439b871305ffb185e24be0a2149cec230988 - languageName: node - linkType: hard - -"serve-favicon@npm:^2.5.0": - version: 2.5.0 - resolution: "serve-favicon@npm:2.5.0" - dependencies: - etag: "npm:~1.8.1" - fresh: "npm:0.5.2" - ms: "npm:2.1.1" - parseurl: "npm:~1.3.2" - safe-buffer: "npm:5.1.1" - checksum: 8c0/7244ced3c46f8dfde591dc801f1e21ebc8fa07c4870cbbaee3ce37104b3aad32858e674e251a8ed4837867ea0dd67cb734b485ae5a7b0895cb6022f8b8c79303 - languageName: node - linkType: hard - -"serve-index@npm:^1.9.1": - version: 1.9.1 - resolution: "serve-index@npm:1.9.1" - dependencies: - accepts: "npm:~1.3.4" - batch: "npm:0.6.1" - debug: "npm:2.6.9" - escape-html: "npm:~1.0.3" - http-errors: "npm:~1.6.2" - mime-types: "npm:~2.1.17" - parseurl: "npm:~1.3.2" - checksum: 8c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c - languageName: node - linkType: hard - -"serve-static@npm:1.14.1": - version: 1.14.1 - resolution: "serve-static@npm:1.14.1" - dependencies: - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.17.1" - checksum: 8c0/f4ebc459bff763ae372e4148c2af13e2b813033f384cb2bc4e1c129c722fa14bfaf6e85f41c95363d49f97de7244e7961c929b2f942ddbd4c520c9610322dae5 - languageName: node - linkType: hard - -"serve-static@npm:1.15.0": - version: 1.15.0 - resolution: "serve-static@npm:1.15.0" - dependencies: - encodeurl: "npm:~1.0.2" - escape-html: "npm:~1.0.3" - parseurl: "npm:~1.3.3" - send: "npm:0.18.0" - checksum: 8c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba - languageName: node - linkType: hard - -"server-only@npm:^0.0.1": - version: 0.0.1 - resolution: "server-only@npm:0.0.1" - checksum: 4704f0ef85da0be981af6d4ed8e739d39bcfd265b9c246a684060acda5642d0fdc6daffc2308e71e2682c5f508090978802eae0a77623c9b90a49f9ae68048d6 - languageName: node - linkType: hard - -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 8c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 - languageName: node - linkType: hard - -"set-cookie-parser@npm:^2.4.1": - version: 2.5.1 - resolution: "set-cookie-parser@npm:2.5.1" - checksum: 8c0/7a22e3ef0f5f762eb8c0e71426bcf7050b481ac483bbb3a2175a2a233d40e473fdc9d0f460e63e3c63b7e0da00d696d8e067eb62fd1cd0a73e015b9cae444d61 - languageName: node - linkType: hard - -"set-cookie-parser@npm:^2.4.6": - version: 2.4.8 - resolution: "set-cookie-parser@npm:2.4.8" - checksum: 8c0/2ada2102dda9b1d2c1b7d4bfeafc80b2f0952b1f9d9069b65312db573b7e73bc41ee30e83d702eb18c5346b5ec455c2d62096150d7ab5be4121aacc2bcbfec4e - languageName: node - linkType: hard - -"set-function-length@npm:^1.1.1": - version: 1.1.1 - resolution: "set-function-length@npm:1.1.1" - dependencies: - define-data-property: "npm:^1.1.1" - get-intrinsic: "npm:^1.2.1" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - checksum: a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95 - languageName: node - linkType: hard - -"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": - version: 2.0.1 - resolution: "set-function-name@npm:2.0.1" - dependencies: - define-data-property: "npm:^1.0.1" - functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.0" - checksum: 6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a - languageName: node - linkType: hard - -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: "npm:^2.0.1" - is-extendable: "npm:^0.1.1" - is-plain-object: "npm:^2.0.3" - split-string: "npm:^3.0.1" - checksum: 8c0/4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b - languageName: node - linkType: hard - -"set-value@npm:^4.1.0": - version: 4.1.0 - resolution: "set-value@npm:4.1.0" - dependencies: - is-plain-object: "npm:^2.0.4" - is-primitive: "npm:^3.0.1" - checksum: dc186676b6cc0cfcf1656b8acdfe7a68591f0645dd2872250100817fb53e5e9298dc1727a95605ac03f82110e9b3820c90a0a02d84e0fb89f210922b08b37e02 - languageName: node - linkType: hard - -"setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: 8c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.0": - version: 1.1.0 - resolution: "setprototypeof@npm:1.1.0" - checksum: 8c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 - languageName: node - linkType: hard - -"setprototypeof@npm:1.1.1": - version: 1.1.1 - resolution: "setprototypeof@npm:1.1.1" - checksum: 8c0/1084b783f2d77908b0a593619e1214c2118c44c7c3277f6099dd7ca8acfc056c009e5d1b2860eae5e8b0ba9bc0a978c15613ff102ccc1093bb48aa6e0ed75e2f - languageName: node - linkType: hard - -"setprototypeof@npm:1.2.0": - version: 1.2.0 - resolution: "setprototypeof@npm:1.2.0" - checksum: 8c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc - languageName: node - linkType: hard - -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.11, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - bin: - sha.js: ./bin.js - checksum: 8c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 - languageName: node - linkType: hard - -"shallow-clone@npm:^3.0.0": - version: 3.0.1 - resolution: "shallow-clone@npm:3.0.1" - dependencies: - kind-of: "npm:^6.0.2" - checksum: 8c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e - languageName: node - linkType: hard - -"shallowequal@npm:^1.1.0": - version: 1.1.0 - resolution: "shallowequal@npm:1.1.0" - checksum: 8c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c - languageName: node - linkType: hard - -"shebang-command@npm:^1.2.0": - version: 1.2.0 - resolution: "shebang-command@npm:1.2.0" - dependencies: - shebang-regex: "npm:^1.0.0" - checksum: 8c0/7b20dbf04112c456b7fc258622dafd566553184ac9b6938dd30b943b065b21dabd3776460df534cc02480db5e1b6aec44700d985153a3da46e7db7f9bd21326d - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: "npm:^3.0.0" - checksum: 8c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e - languageName: node - linkType: hard - -"shebang-regex@npm:^1.0.0": - version: 1.0.0 - resolution: "shebang-regex@npm:1.0.0" - checksum: 8c0/9abc45dee35f554ae9453098a13fdc2f1730e525a5eb33c51f096cc31f6f10a4b38074c1ebf354ae7bffa7229506083844008dfc3bb7818228568c0b2dc1fff2 - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 8c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 - languageName: node - linkType: hard - -"shell-exec@npm:1.0.2": - version: 1.0.2 - resolution: "shell-exec@npm:1.0.2" - checksum: 8c0/3733ed251bc025340a373da151c44d36e69d37f570e94f5dd6a968427e8d9f751a58dd87c5a01bf0ad1289ad1de963a425aaf14ad3a06f8aee56f776462b63ca - languageName: node - linkType: hard - -"shell-quote@npm:1.7.2, shell-quote@npm:^1.7.2": - version: 1.7.2 - resolution: "shell-quote@npm:1.7.2" - checksum: 8c0/656aefdcdc394560ca091140a58b95e97f43d5e14bb60ff4a92556ca48841e49af6e837441e887c7890c7a86ae8542960c90e460a86799b68c53271784909edb - languageName: node - linkType: hard - -"shell-quote@npm:^1.7.3": - version: 1.8.0 - resolution: "shell-quote@npm:1.8.0" - checksum: 8c0/651a201a1af981d49326fac8c005bbe2af97bc56fcabded0b22944c08eea0ba3bccfa497168d4bcb70508ca5802fe1cb83ca89a7e121eb0701d4c8b1d6c71a5d - languageName: node - linkType: hard - -"shell-quote@npm:^1.8.1": - version: 1.8.1 - resolution: "shell-quote@npm:1.8.1" - checksum: 8c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a - languageName: node - linkType: hard - -"shellwords@npm:^0.1.1": - version: 0.1.1 - resolution: "shellwords@npm:0.1.1" - checksum: 8c0/7d66b28927e0b524b71b2e185651fcd88a70473a077dd230fbf86188380e948ffb36cea00832d78fc13c93cd15f6f52286fb05f2746b7580623ca1ec619eb004 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.0" - get-intrinsic: "npm:^1.0.2" - object-inspect: "npm:^1.9.0" - checksum: 8c0/054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3": - version: 3.0.3 - resolution: "signal-exit@npm:3.0.3" - checksum: 8c0/645cf460a417158e7d7fd03fb276aa12aecc49ab61a2ea36dac1987870a454e8af476ed926c8a8713a1adfde69c5964a4ca322c87fcca2367b36e1681207cf5f - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.7": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: 8c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 - languageName: node - linkType: hard - -"signal-exit@npm:^4.0.1": - version: 4.0.1 - resolution: "signal-exit@npm:4.0.1" - checksum: 8c0/8ff362b7fe81d50cb664c773d2406d68f02aef7ab50b2fdb6a0bb2514730529062be4f981cc5534c05f34a20caa6f91a78a5d1dc90446a968359d80adb63b014 - languageName: node - linkType: hard - -"signedsource@npm:^1.0.0": - version: 1.0.0 - resolution: "signedsource@npm:1.0.0" - checksum: 8c0/dbb4ade9c94888e83c16d23ef1a43195799de091d366d130be286415e8aeb97b3f25b14fd26fc5888e1335d703ad561374fddee32e43b7cea04751b93d178a47 - languageName: node - linkType: hard - -"simple-swizzle@npm:^0.2.2": - version: 0.2.2 - resolution: "simple-swizzle@npm:0.2.2" - dependencies: - is-arrayish: "npm:^0.3.1" - checksum: 8c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308 - languageName: node - linkType: hard - -"simple-update-notifier@npm:^2.0.0": - version: 2.0.0 - resolution: "simple-update-notifier@npm:2.0.0" - dependencies: - semver: "npm:^7.5.3" - checksum: 2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c - languageName: node - linkType: hard - -"sirv@npm:^2.0.3": - version: 2.0.4 - resolution: "sirv@npm:2.0.4" - dependencies: - "@polka/url": "npm:^1.0.0-next.24" - mrmime: "npm:^2.0.0" - totalist: "npm:^3.0.0" - checksum: 68f8ee857f6a9415e9c07a1f31c7c561df8d5f1b1ba79bee3de583fa37da8718def5309f6b1c6e2c3ef77de45d74f5e49efc7959214443aa92d42e9c99180a4e - languageName: node - linkType: hard - -"sisteransi@npm:^1.0.5": - version: 1.0.5 - resolution: "sisteransi@npm:1.0.5" - checksum: 8c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 - languageName: node - linkType: hard - -"slash@npm:3.0.0, slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 8c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b - languageName: node - linkType: hard - -"slash@npm:^2.0.0": - version: 2.0.0 - resolution: "slash@npm:2.0.0" - checksum: 8c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 - languageName: node - linkType: hard - -"slash@npm:^4.0.0": - version: 4.0.0 - resolution: "slash@npm:4.0.0" - checksum: 8c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 - languageName: node - linkType: hard - -"slash@npm:^5.0.0": - version: 5.0.0 - resolution: "slash@npm:5.0.0" - checksum: 8c0/157e61f9c749d107a2069a8d6169f40451bf8853e4e104938afd6c02ad224059033bc0420aeb85ad5ff71d36ca483a90bd1ea831a2ffa427317ce4844bcd966a - languageName: node - linkType: hard - -"slice-ansi@npm:0.0.4": - version: 0.0.4 - resolution: "slice-ansi@npm:0.0.4" - checksum: 8c0/997d4cc73e34aa8c0f60bdb71701b16c062cc4acd7a95e3b10e8c05d790eb5e735d9b470270dc6f443b1ba21492db7ceb849d5c93011d1256061bf7ed7216c7a - languageName: node - linkType: hard - -"slice-ansi@npm:^3.0.0": - version: 3.0.0 - resolution: "slice-ansi@npm:3.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - astral-regex: "npm:^2.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - checksum: 8c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c - languageName: node - linkType: hard - -"slice-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "slice-ansi@npm:4.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - astral-regex: "npm:^2.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - checksum: 8c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 - languageName: node - linkType: hard - -"slice-ansi@npm:^5.0.0": - version: 5.0.0 - resolution: "slice-ansi@npm:5.0.0" - dependencies: - ansi-styles: "npm:^6.0.0" - is-fullwidth-code-point: "npm:^4.0.0" - checksum: 8c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f - languageName: node - linkType: hard - -"smart-buffer@npm:^4.2.0": - version: 4.2.0 - resolution: "smart-buffer@npm:4.2.0" - checksum: 8c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 - languageName: node - linkType: hard - -"smtp-server@npm:3.13.0": - version: 3.13.0 - resolution: "smtp-server@npm:3.13.0" - dependencies: - base32.js: "npm:0.1.0" - ipv6-normalize: "npm:1.0.1" - nodemailer: "npm:6.9.4" - checksum: d6ad58ff6a01e46d864646a96d27173e93cb80aeca0180185a2b4ec5d144efa20813c3808702a3ea544d969f5506edcac1a0a230fee31ee2d341f5d3955ad1f0 - languageName: node - linkType: hard - -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 8c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd - languageName: node - linkType: hard - -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: "npm:^1.0.0" - isobject: "npm:^3.0.0" - snapdragon-util: "npm:^3.0.1" - checksum: 8c0/7616e6a1ca054afe3ad8defda17ebe4c73b0800d2e0efd635c44ee1b286f8ac7900517314b5330862ce99b28cd2782348ee78bae573ff0f55832ad81d9657f3f - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: "npm:^3.2.0" - checksum: 8c0/4441856d343399ba7f37f79681949d51b922e290fcc07e7bc94655a50f584befa4fb08f40c3471cd160e004660161964d8ff140cba49baa59aa6caba774240e3 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: "npm:^0.11.1" - debug: "npm:^2.2.0" - define-property: "npm:^0.2.5" - extend-shallow: "npm:^2.0.1" - map-cache: "npm:^0.2.2" - source-map: "npm:^0.5.6" - source-map-resolve: "npm:^0.5.0" - use: "npm:^3.1.0" - checksum: 8c0/dfdac1f73d47152d72fc07f4322da09bbddfa31c1c9c3ae7346f252f778c45afa5b03e90813332f02f04f6de8003b34a168c456f8bb719024d092f932520ffca - languageName: node - linkType: hard - -"sockjs-client@npm:^1.5.0": - version: 1.5.2 - resolution: "sockjs-client@npm:1.5.2" - dependencies: - debug: "npm:^3.2.6" - eventsource: "npm:^1.0.7" - faye-websocket: "npm:^0.11.3" - inherits: "npm:^2.0.4" - json3: "npm:^3.3.3" - url-parse: "npm:^1.5.3" - checksum: 8c0/09c5275e97d146a4dc9fcebe220fd26c575595f3d1af160d6d26e9f14a2fdcdc628d98c85d3d445527fe2314bdac6f30425347556e26966f62a99d6d3b857df8 - languageName: node - linkType: hard - -"sockjs@npm:^0.3.21, sockjs@npm:^0.3.24": - version: 0.3.24 - resolution: "sockjs@npm:0.3.24" - dependencies: - faye-websocket: "npm:^0.11.3" - uuid: "npm:^8.3.2" - websocket-driver: "npm:^0.7.4" - checksum: 8c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^6.0.0": - version: 6.2.1 - resolution: "socks-proxy-agent@npm:6.2.1" - dependencies: - agent-base: "npm:^6.0.2" - debug: "npm:^4.3.3" - socks: "npm:^2.6.2" - checksum: 8c0/d75c1cf1fdd7f8309a43a77f84409b793fc0f540742ef915154e70ac09a08b0490576fe85d4f8d68bbf80e604a62957a17ab5ef50d312fe1442b0ab6f8f6e6f6 - languageName: node - linkType: hard - -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" - dependencies: - agent-base: "npm:^6.0.2" - debug: "npm:^4.3.3" - socks: "npm:^2.6.2" - checksum: 8c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 - languageName: node - linkType: hard - -"socks@npm:^2.6.2": - version: 2.7.1 - resolution: "socks@npm:2.7.1" - dependencies: - ip: "npm:^2.0.0" - smart-buffer: "npm:^4.2.0" - checksum: 8c0/43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130 - languageName: node - linkType: hard - -"sonic-boom@npm:^1.0.2": - version: 1.4.1 - resolution: "sonic-boom@npm:1.4.1" - dependencies: - atomic-sleep: "npm:^1.0.0" - flatstr: "npm:^1.0.12" - checksum: 8c0/3498b835071365cc94aac0eae50c5ee3c2552a4e48cf6dce59ae2d995af6c62a8f529377852b39b073b8190b772a9fb2cdb48f515c0fec4948646dea862fb120 - languageName: node - linkType: hard - -"sonic-boom@npm:^2.1.0": - version: 2.6.0 - resolution: "sonic-boom@npm:2.6.0" - dependencies: - atomic-sleep: "npm:^1.0.0" - checksum: 8c0/11e40e811f1a21554fcdd90d26ae5f6b6851cd9a15a9fe717cb1daa29a33012a39a200751dbe56d1f05bde1024c99f6c2deb9cd35247477c61a79cf83c68a96d - languageName: node - linkType: hard - -"sonic-boom@npm:^3.7.0": - version: 3.7.0 - resolution: "sonic-boom@npm:3.7.0" - dependencies: - atomic-sleep: "npm:^1.0.0" - checksum: 57a3d560efb77f4576db111168ee2649c99e7869fda6ce0ec2a4e5458832d290ba58d74b073ddb5827d9a30f96d23cff79157993d919e1a6d5f28d8b6391c7f0 - languageName: node - linkType: hard - -"sort-keys-length@npm:^1.0.0": - version: 1.0.1 - resolution: "sort-keys-length@npm:1.0.1" - dependencies: - sort-keys: "npm:^1.0.0" - checksum: 4567d08aa859c7e48b7e2cba14a8ae09a100f6a3bd7cf5d21dccd808d6332c945b9a7e2230a95c16e0e6eac1a943cd050ae51a5d1b4c8ec4b1e89a5801be9aa2 - languageName: node - linkType: hard - -"sort-keys@npm:^1.0.0": - version: 1.1.2 - resolution: "sort-keys@npm:1.1.2" - dependencies: - is-plain-obj: "npm:^1.0.0" - checksum: 5dd383b0299a40277051f7498c3999520138e2eb50d422962f658738341c9e82349fad4a3024d5ba1a3122688fbaf958f2a472d4c53bade55515097c2ce15420 - languageName: node - linkType: hard - -"source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": - version: 2.0.1 - resolution: "source-list-map@npm:2.0.1" - checksum: 8c0/2e5e421b185dcd857f46c3c70e2e711a65d717b78c5f795e2e248c9d67757882ea989b80ebc08cf164eeeda5f4be8aa95d3b990225070b2daaaf3257c5958149 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: 8c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.5.0, source-map-resolve@npm:^0.5.2": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: "npm:^2.1.2" - decode-uri-component: "npm:^0.2.0" - resolve-url: "npm:^0.2.1" - source-map-url: "npm:^0.4.0" - urix: "npm:^0.1.0" - checksum: 8c0/410acbe93882e058858d4c1297be61da3e1533f95f25b95903edddc1fb719654e705663644677542d1fb78a66390238fad1a57115fc958a0724cf9bb509caf57 - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.6.0": - version: 0.6.0 - resolution: "source-map-resolve@npm:0.6.0" - dependencies: - atob: "npm:^2.1.2" - decode-uri-component: "npm:^0.2.0" - checksum: 8c0/bc2a94af3d2417196195eecf0130925b3558726726504a7c7bd1b9e383c4a789fa3f4616c4c673cf8bd7930ddd2e80481f203422282aeae342dbd56b91995188 - languageName: node - linkType: hard - -"source-map-support@npm:0.5.13": - version: 0.5.13 - resolution: "source-map-support@npm:0.5.13" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 8c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e - languageName: node - linkType: hard - -"source-map-support@npm:^0.5.16, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.19": - version: 0.5.19 - resolution: "source-map-support@npm:0.5.19" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 8c0/a232cb02dc5c2c048460dff3ca1a4c2aa44488822028932daff99b8707c8e4f87d2535dae319d65691c905096f2c06a2517793472634efb01f8a095661b9aa93 - languageName: node - linkType: hard - -"source-map-support@npm:~0.5.20": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" - dependencies: - buffer-from: "npm:^1.0.0" - source-map: "npm:^0.6.0" - checksum: 8c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d - languageName: node - linkType: hard - -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 8c0/f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 - languageName: node - linkType: hard - -"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 8c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 - languageName: node - linkType: hard - -"source-map@npm:0.7.4": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc - languageName: node - linkType: hard - -"source-map@npm:^0.5.0, source-map@npm:^0.5.6, source-map@npm:^0.5.7": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 8c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 - languageName: node - linkType: hard - -"source-map@npm:^0.7.3, source-map@npm:~0.7.2": - version: 0.7.3 - resolution: "source-map@npm:0.7.3" - checksum: 8c0/7d2ddb51f3d2451847692a9ac7808da2b2b3bf7aef92ece33128919040a7e74d9a5edfde7a781f035c974deff876afaf83f2e30484faffffb86484e7408f5d7c - languageName: node - linkType: hard - -"space-separated-tokens@npm:^1.0.0": - version: 1.1.5 - resolution: "space-separated-tokens@npm:1.1.5" - checksum: 8c0/3ee0a6905f89e1ffdfe474124b1ade9fe97276a377a0b01350bc079b6ec566eb5b219e26064cc5b7f3899c05bde51ffbc9154290b96eaf82916a1e2c2c13ead9 - languageName: node - linkType: hard - -"spawn-command@npm:0.0.2": - version: 0.0.2 - resolution: "spawn-command@npm:0.0.2" - checksum: 8c0/b22f2d71239e6e628a400831861ba747750bbb40c0a53323754cf7b84330b73d81e40ff1f9055e6d1971818679510208a9302e13d9ff3b32feb67e74d7a1b3ef - languageName: node - linkType: hard - -"spawn-command@npm:^0.0.2-1": - version: 0.0.2-1 - resolution: "spawn-command@npm:0.0.2-1" - checksum: 8c0/4e1fae2db43a7e7159b7fc4cd813bab56c0a5c0bc04c152749f7ef68170ccbe9014a35f444e19e5c095afec780bc5bca1ac73ec16eb1ab0f9a2f881c180e6b70 - languageName: node - linkType: hard - -"spdx-correct@npm:^3.0.0": - version: 3.1.1 - resolution: "spdx-correct@npm:3.1.1" - dependencies: - spdx-expression-parse: "npm:^3.0.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 8c0/25909eecc4024963a8e398399dbdd59ddb925bd7dbecd9c9cf6df0d75c29b68cd30b82123564acc51810eb02cfc4b634a2e16e88aa982433306012e318849249 - languageName: node - linkType: hard - -"spdx-exceptions@npm:^2.1.0": - version: 2.3.0 - resolution: "spdx-exceptions@npm:2.3.0" - checksum: 8c0/83089e77d2a91cb6805a5c910a2bedb9e50799da091f532c2ba4150efdef6e53f121523d3e2dc2573a340dc0189e648b03157097f65465b3a0c06da1f18d7e8a - languageName: node - linkType: hard - -"spdx-expression-parse@npm:^3.0.0": - version: 3.0.1 - resolution: "spdx-expression-parse@npm:3.0.1" - dependencies: - spdx-exceptions: "npm:^2.1.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 8c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 - languageName: node - linkType: hard - -"spdx-license-ids@npm:^3.0.0": - version: 3.0.9 - resolution: "spdx-license-ids@npm:3.0.9" - checksum: 8c0/44914745592a2afcbe776c2291324e3dee129b47217454da5f8f71b023345a42684f45b11d06a55d8ec900ce05ad95b8a26f9ef13eb1bb644013700bd98093ca - languageName: node - linkType: hard - -"spdy-transport@npm:^3.0.0": - version: 3.0.0 - resolution: "spdy-transport@npm:3.0.0" - dependencies: - debug: "npm:^4.1.0" - detect-node: "npm:^2.0.4" - hpack.js: "npm:^2.1.6" - obuf: "npm:^1.1.2" - readable-stream: "npm:^3.0.6" - wbuf: "npm:^1.7.3" - checksum: 8c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb - languageName: node - linkType: hard - -"spdy@npm:^4.0.2": - version: 4.0.2 - resolution: "spdy@npm:4.0.2" - dependencies: - debug: "npm:^4.1.0" - handle-thing: "npm:^2.0.0" - http-deceiver: "npm:^1.2.7" - select-hose: "npm:^2.0.0" - spdy-transport: "npm:^3.0.0" - checksum: 8c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf - languageName: node - linkType: hard - -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: "npm:^3.0.0" - checksum: 8c0/72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70 - languageName: node - linkType: hard - -"split2@npm:4.2.0": - version: 4.2.0 - resolution: "split2@npm:4.2.0" - checksum: 8c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 - languageName: node - linkType: hard - -"split2@npm:^3.1.1": - version: 3.2.2 - resolution: "split2@npm:3.2.2" - dependencies: - readable-stream: "npm:^3.0.0" - checksum: 8c0/2dad5603c52b353939befa3e2f108f6e3aff42b204ad0f5f16dd12fd7c2beab48d117184ce6f7c8854f9ee5ffec6faae70d243711dd7d143a9f635b4a285de4e - languageName: node - linkType: hard - -"split2@npm:^4.0.0": - version: 4.1.0 - resolution: "split2@npm:4.1.0" - checksum: 8c0/c02219211c6c55137977b729b44a22462386bf8878f61c9221ebb0347509ffeaf1285f93a9376e361e03f2c8969e83fff0c04745f56dcccdd30c65bec7db8084 - languageName: node - linkType: hard - -"sponge-case@npm:^1.0.1": - version: 1.0.1 - resolution: "sponge-case@npm:1.0.1" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/dbe42f300ae9f7fbd83c40f71c2a61ecf9c86b927b5668bae067d1e516e314671cc85166f87017e51b56938409b1fc042719eb46a6d5bb30cc1cf23252a82761 - languageName: node - linkType: hard - -"sprintf-js@npm:~1.0.2": - version: 1.0.3 - resolution: "sprintf-js@npm:1.0.3" - checksum: 8c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb - languageName: node - linkType: hard - -"sqlite3@npm:5.1.6": - version: 5.1.6 - resolution: "sqlite3@npm:5.1.6" - dependencies: - "@mapbox/node-pre-gyp": "npm:^1.0.0" - node-addon-api: "npm:^4.2.0" - node-gyp: "npm:8.x" - tar: "npm:^6.1.11" - peerDependencies: - node-gyp: 8.x - dependenciesMeta: - node-gyp: - optional: true - peerDependenciesMeta: - node-gyp: - optional: true - checksum: 8c0/85f1dd1f4b9fa906578330e7badc1116c61ef4e7c64a09897268923f5c9ff4ae1e0a447dd4594c0f8c3b20a410fcc5d8d00d1056225a5186c57ea7f7c9b18974 - languageName: node - linkType: hard - -"sqlite@npm:4.2.1": - version: 4.2.1 - resolution: "sqlite@npm:4.2.1" - checksum: 8c0/55cd4161aedcf41e3ca05990fd036d38a248503f0d2c7c5df67ae01c17059188c38219fbc679965dcab26c5d5a9431b25f12f9c46d65f377d8d851c5a4d48334 - languageName: node - linkType: hard - -"ssri@npm:^6.0.1": - version: 6.0.2 - resolution: "ssri@npm:6.0.2" - dependencies: - figgy-pudding: "npm:^3.5.1" - checksum: 8c0/e6f18c57dc9fed69343db5c59f95ef334e9664bfbdbad686c190ef2c6ad6b35e9b56cb203f3e4eb7eee6cb7bb602daa26dab6685e3847f0b5c464cdf7d9c2cee - languageName: node - linkType: hard - -"ssri@npm:^8.0.0, ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" - dependencies: - minipass: "npm:^3.1.1" - checksum: 8c0/5cfae216ae02dcd154d1bbed2d0a60038a4b3a2fcaac3c7e47401ff4e058e551ee74cfdba618871bf168cd583db7b8324f94af6747d4303b73cd4c3f6dc5c9c2 - languageName: node - linkType: hard - -"ssri@npm:^9.0.0": - version: 9.0.1 - resolution: "ssri@npm:9.0.1" - dependencies: - minipass: "npm:^3.1.1" - checksum: 8c0/c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 - languageName: node - linkType: hard - -"stable@npm:^0.1.8": - version: 0.1.8 - resolution: "stable@npm:0.1.8" - checksum: 8c0/df74b5883075076e78f8e365e4068ecd977af6c09da510cfc3148a303d4b87bc9aa8f7c48feb67ed4ef970b6140bd9eabba2129e28024aa88df5ea0114cba39d - languageName: node - linkType: hard - -"stack-trace@npm:0.0.10": - version: 0.0.10 - resolution: "stack-trace@npm:0.0.10" - checksum: 8c0/9ff3dabfad4049b635a85456f927a075c9d0c210e3ea336412d18220b2a86cbb9b13ec46d6c37b70a302a4ea4d49e30e5d4944dd60ae784073f1cde778ac8f4b - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.2": - version: 2.0.3 - resolution: "stack-utils@npm:2.0.3" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 8c0/b5391171b11024c7a092bbdb818b1784cd77ec9b91ed17fa2cc5f2391457db4aa2186567df097ae1579f75abcdd929bc6f72df57a20d19db4d20f07d9d98bb46 - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.3": - version: 2.0.5 - resolution: "stack-utils@npm:2.0.5" - dependencies: - escape-string-regexp: "npm:^2.0.0" - checksum: 8c0/059f828eed5b03b963e8200529c27bd92b105f2cac9dffc9edcbc739ea8fa108e4ec45d0da257d8e0f7b5ac98db5643a0787e5c25ceab1396f7123e1ee15a086 - languageName: node - linkType: hard - -"stackframe@npm:^1.1.1": - version: 1.2.0 - resolution: "stackframe@npm:1.2.0" - checksum: 8c0/b3ad9e9884eb4555e4be0c1359d700c10f2c9d01cddcd67f574bb2f99cec57b0d1b8e18ebbf68d633e904ba29830cae9b601545fb8b97724779a784f79a2586c - languageName: node - linkType: hard - -"stacktracey@npm:2.1.8": - version: 2.1.8 - resolution: "stacktracey@npm:2.1.8" - dependencies: - as-table: "npm:^1.0.36" - get-source: "npm:^2.0.12" - checksum: 8c0/e17357d0a532d303138899b910ab660572009a1f4cde1cbf73b99416957a2378e6e1c791b3c31b043cf7c5f37647da1dd114e66c9203f23c65b34f783665405b - languageName: node - linkType: hard - -"standard-as-callback@npm:^2.1.0": - version: 2.1.0 - resolution: "standard-as-callback@npm:2.1.0" - checksum: 8c0/012677236e3d3fdc5689d29e64ea8a599331c4babe86956bf92fc5e127d53f85411c5536ee0079c52c43beb0026b5ce7aa1d834dd35dd026e82a15d1bcaead1f - languageName: node - linkType: hard - -"state-toggle@npm:^1.0.0": - version: 1.0.3 - resolution: "state-toggle@npm:1.0.3" - checksum: 8c0/6051ee5654b39b0006911ae3130fa7f47675e07db16a711d8cd23d43b63f383e98f3bd9fa80e118a3f5964a11284d8eee180baef27a556146e628f8da74aba12 - languageName: node - linkType: hard - -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: "npm:^0.2.5" - object-copy: "npm:^0.1.0" - checksum: 8c0/284f5865a9e19d079f1badbcd70d5f9f82e7a08393f818a220839cd5f71729e89105e1c95322bd28e833161d484cee671380ca443869ae89578eef2bf55c0653 - languageName: node - linkType: hard - -"statuses@npm:2.0.1, statuses@npm:^2.0.0": - version: 2.0.1 - resolution: "statuses@npm:2.0.1" - checksum: 8c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 - languageName: node - linkType: hard - -"statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": - version: 1.5.0 - resolution: "statuses@npm:1.5.0" - checksum: 8c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 - languageName: node - linkType: hard - -"stdout-update@npm:1.6.8": - version: 1.6.8 - resolution: "stdout-update@npm:1.6.8" - dependencies: - ansi-escapes: "npm:^4.3.2" - ansi-styles: "npm:^5.2.0" - string-width: "npm:^4.2.2" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/2435eba195367cde1bb4f4ae19af3f9a7d38f240bfa05c9f562c0feb8e6f46fd83f78e928b3025f105e6b3baefcca693009cc46b7065679ca0edaec2e223f193 - languageName: node - linkType: hard - -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: "npm:^1.0.4" - checksum: 8c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 - languageName: node - linkType: hard - -"store2@npm:^2.12.0": - version: 2.12.0 - resolution: "store2@npm:2.12.0" - checksum: 8c0/ea0c9d89aa61dd0e398f55b88841a7f5f09f5179852415db861d2b134c5a779d39a9686937e4cd17fcf2866ea08a812b1a918e03d1500ef29724bd7661f46e24 - languageName: node - linkType: hard - -"stream-browserify@npm:^2.0.1": - version: 2.0.2 - resolution: "stream-browserify@npm:2.0.2" - dependencies: - inherits: "npm:~2.0.1" - readable-stream: "npm:^2.0.2" - checksum: 8c0/485562bd5d962d633ae178449029c6fa2611052e356bdb5668f768544aa4daa94c4f9a97de718f3f30ad98f3cb98a5f396252bb3855aff153c138f79c0e8f6ac - languageName: node - linkType: hard - -"stream-each@npm:^1.1.0": - version: 1.2.3 - resolution: "stream-each@npm:1.2.3" - dependencies: - end-of-stream: "npm:^1.1.0" - stream-shift: "npm:^1.0.0" - checksum: 8c0/7ed229d3b7c24373058b5742b00066da8d3122d1487c8219a025ed53a8978545c77654a529a8e9c62ba83ae80c424cbb0204776b49abf72270d2e8154831dd5f - languageName: node - linkType: hard - -"stream-http@npm:^2.7.2": - version: 2.8.3 - resolution: "stream-http@npm:2.8.3" - dependencies: - builtin-status-codes: "npm:^3.0.0" - inherits: "npm:^2.0.1" - readable-stream: "npm:^2.3.6" - to-arraybuffer: "npm:^1.0.0" - xtend: "npm:^4.0.0" - checksum: 8c0/fbe7d327a29216bbabe88d3819bb8f7a502f11eeacf3212579e5af1f76fa7283f6ffa66134ab7d80928070051f571d1029e85f65ce3369fffd4c4df3669446c4 - languageName: node - linkType: hard - -"stream-shift@npm:^1.0.0": - version: 1.0.1 - resolution: "stream-shift@npm:1.0.1" - checksum: 8c0/b63a0d178cde34b920ad93e2c0c9395b840f408d36803b07c61416edac80ef9e480a51910e0ceea0d679cec90921bcd2cccab020d3a9fa6c73a98b0fbec132fd - languageName: node - linkType: hard - -"streamsearch@npm:0.1.2": - version: 0.1.2 - resolution: "streamsearch@npm:0.1.2" - checksum: 8c0/408a3db5b5643c1d6eb65c9d8ccc011b4857bfca41946d808b7f165b5b85f47755b2ff56ec1c4bbbeb5a496afcde9adfea12f9f67bd09ff3f04ae3f1f58d37c6 - languageName: node - linkType: hard - -"streamsearch@npm:^1.1.0": - version: 1.1.0 - resolution: "streamsearch@npm:1.1.0" - checksum: 8c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab - languageName: node - linkType: hard - -"streamx@npm:^2.15.0": - version: 2.15.6 - resolution: "streamx@npm:2.15.6" - dependencies: - fast-fifo: "npm:^1.1.0" - queue-tick: "npm:^1.0.1" - checksum: 3a763cbd96d335de7f28e211f080273fa7f077999284ad82884bdf331d5fcf240be33414b0eedecaa78a39ad10d833403c82c162f556f166bc8292447e84ef66 - languageName: node - linkType: hard - -"strict-event-emitter@npm:^0.2.0": - version: 0.2.0 - resolution: "strict-event-emitter@npm:0.2.0" - dependencies: - events: "npm:^3.3.0" - checksum: 8c0/7a8aa7563a4957841b5b9963634ca77d718006d3f58d1b4e6fa7f96fecb145fbbe58a44e7610b56ff87885c2bab9539a47f239bd8d13fa947e62f621f46cbf72 - languageName: node - linkType: hard - -"strict-event-emitter@npm:^0.2.4": - version: 0.2.8 - resolution: "strict-event-emitter@npm:0.2.8" - dependencies: - events: "npm:^3.3.0" - checksum: 8c0/6891e19fea4f0289e4da2fe7050d85906eaca7f774aa38fe674f0e58fdece1b63b868614fa23974c4cb862aa99358caa987523b705fdfff4639231c62e384394 - languageName: node - linkType: hard - -"strict-event-emitter@npm:^0.4.3": - version: 0.4.4 - resolution: "strict-event-emitter@npm:0.4.4" - checksum: 8c0/1d73c4db48d3b3b861c0f9d1720269ecd8156834abb2e5b5a32064d49f2f402925da54aee8a6a66e6f70c5ca7b4b4cf4a9162e244e564410069cabb4fcecec50 - languageName: node - linkType: hard - -"string-env-interpolation@npm:1.0.1, string-env-interpolation@npm:^1.0.1": - version: 1.0.1 - resolution: "string-env-interpolation@npm:1.0.1" - checksum: 8c0/410046e621e71678e71816377d799b40ba88d236708c0ad015114137fa3575f1b3cf14bfd63ec5eaa35ea43ac582308e60a8e1a3839a10f475b8db73470105bc - languageName: node - linkType: hard - -"string-length@npm:^4.0.1": - version: 4.0.2 - resolution: "string-length@npm:4.0.2" - dependencies: - char-regex: "npm:^1.0.2" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c - languageName: node - linkType: hard - -"string-length@npm:^5.0.1": - version: 5.0.1 - resolution: "string-length@npm:5.0.1" - dependencies: - char-regex: "npm:^2.0.0" - strip-ansi: "npm:^7.0.1" - checksum: 8c0/311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 - languageName: node - linkType: hard - -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.2 - resolution: "string-width@npm:4.2.2" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/3874075d5b9c29f4260a338bf3d8152f266a8e6cf27538fd5c89f9dee0a5148d602df5c07c1308707b8a20029aac7842aebb6f861a84e24e79b3d97531894c23 - languageName: node - linkType: hard - -"string-width@npm:^1.0.1": - version: 1.0.2 - resolution: "string-width@npm:1.0.2" - dependencies: - code-point-at: "npm:^1.0.0" - is-fullwidth-code-point: "npm:^1.0.0" - strip-ansi: "npm:^3.0.0" - checksum: 8c0/c558438baed23a9ab9370bb6a939acbdb2b2ffc517838d651aad0f5b2b674fb85d460d9b1d0b6a4c210dffd09e3235222d89a5bd4c0c1587f78b2bb7bc00c65e - languageName: node - linkType: hard - -"string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.2.2, string-width@npm:^4.2.3": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: "npm:^8.0.0" - is-fullwidth-code-point: "npm:^3.0.0" - strip-ansi: "npm:^6.0.1" - checksum: 8c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b - languageName: node - linkType: hard - -"string-width@npm:^2.1.1": - version: 2.1.1 - resolution: "string-width@npm:2.1.1" - dependencies: - is-fullwidth-code-point: "npm:^2.0.0" - strip-ansi: "npm:^4.0.0" - checksum: 8c0/e5f2b169fcf8a4257a399f95d069522f056e92ec97dbdcb9b0cdf14d688b7ca0b1b1439a1c7b9773cd79446cbafd582727279d6bfdd9f8edd306ea5e90e5b610 - languageName: node - linkType: hard - -"string-width@npm:^3.0.0, string-width@npm:^3.1.0": - version: 3.1.0 - resolution: "string-width@npm:3.1.0" - dependencies: - emoji-regex: "npm:^7.0.1" - is-fullwidth-code-point: "npm:^2.0.0" - strip-ansi: "npm:^5.1.0" - checksum: 8c0/85fa0d4f106e7999bb68c1c640c76fa69fb8c069dab75b009e29c123914e2d3b532e6cfa4b9d1bd913176fc83dedd7a2d7bf40d21a81a8a1978432cedfb65b91 - languageName: node - linkType: hard - -"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": - version: 5.1.2 - resolution: "string-width@npm:5.1.2" - dependencies: - eastasianwidth: "npm:^0.2.0" - emoji-regex: "npm:^9.2.2" - strip-ansi: "npm:^7.0.1" - checksum: 8c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.0 || ^3.0.1": - version: 4.0.5 - resolution: "string.prototype.matchall@npm:4.0.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.2" - get-intrinsic: "npm:^1.1.1" - has-symbols: "npm:^1.0.2" - internal-slot: "npm:^1.0.3" - regexp.prototype.flags: "npm:^1.3.1" - side-channel: "npm:^1.0.4" - checksum: 8c0/b11199267eb55ed189d2b5f6865553784c47ee4f9953a9acd2d95e747915590b426dcdd7cad9952de4cf7bb1a62da1d59d9a8ea03b4aa3de0d7617535691d290 - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.6": - version: 4.0.6 - resolution: "string.prototype.matchall@npm:4.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.19.1" - get-intrinsic: "npm:^1.1.1" - has-symbols: "npm:^1.0.2" - internal-slot: "npm:^1.0.3" - regexp.prototype.flags: "npm:^1.3.1" - side-channel: "npm:^1.0.4" - checksum: 8c0/967bf965b7f2aa565abe05773d066ae1d17e631e1e64576036c0543bd257f0f166f71ad252500061a6c3783bc047963ab3cce23c9000941f42e230c59db2c6cc - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.8": - version: 4.0.8 - resolution: "string.prototype.matchall@npm:4.0.8" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - internal-slot: "npm:^1.0.3" - regexp.prototype.flags: "npm:^1.4.3" - side-channel: "npm:^1.0.4" - checksum: 8c0/644523d05c1ee93bab7474e999a5734ee5f6ad2d7ad24ed6ea8706c270dc92b352bde0f2a5420bfbeed54e28cb6a770c3800e1988a5267a70fd5e677c7750abc - languageName: node - linkType: hard - -"string.prototype.padend@npm:^3.0.0": - version: 3.1.2 - resolution: "string.prototype.padend@npm:3.1.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - checksum: 8c0/2d8faeedfa41598f06c52ad9fe30b78f19a9b4f6175808c4a01f74ff03a5492c09e4473b4d8bdf47f14f5001c275a8765f2dbfa9f9ea4d48fcaea31b35c202d5 - languageName: node - linkType: hard - -"string.prototype.padstart@npm:^3.0.0": - version: 3.1.2 - resolution: "string.prototype.padstart@npm:3.1.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.18.0-next.2" - checksum: 8c0/cb4403f36fd4e5abcbceddba41774a3d64320deb097a348539e34721db2ee92761761d265531bfa4d27718df1aa8a64bd95bceb646c5d598899cc2a222645d6f - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.8": - version: 1.2.8 - resolution: "string.prototype.trim@npm:1.2.8" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimend@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 8c0/9fca11ab237f31cf55736e3e987deb312dd8e1bea7515e0f62949f1494f714083089a432ad5d99ea83f690a9290f58d0ce3d3f3356f5717e4c349d7d1b642af7 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimend@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8c0/51b663e3195a74b58620a250b3fc4efb58951000f6e7d572a9f671c038f2f37f24a2b8c6994500a882aeab2f1c383fac1e8c023c01eb0c8b4e52d2f13b6c4513 - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimend@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.4": - version: 1.0.4 - resolution: "string.prototype.trimstart@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 8c0/4e4f836f9416c3db176587ab4e9b62f45b11489ab93c2b14e796c82a4f1c912278f31a4793cc00c2bee11002e56c964e9f131b8f78d96ffbd89822a11bd786fe - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.6": - version: 1.0.6 - resolution: "string.prototype.trimstart@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - es-abstract: "npm:^1.20.4" - checksum: 8c0/13b9970d4e234002dfc8069c655c1fe19e83e10ced208b54858c41bb0f7544e581ac0ce746e92b279563664ad63910039f7253f36942113fec413b2b4e7c1fcd - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimstart@npm:1.0.7" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - checksum: 0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f - languageName: node - linkType: hard - -"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: "npm:~5.2.0" - checksum: 8c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d - languageName: node - linkType: hard - -"string_decoder@npm:~1.1.1": - version: 1.1.1 - resolution: "string_decoder@npm:1.1.1" - dependencies: - safe-buffer: "npm:~5.1.0" - checksum: 8c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e - languageName: node - linkType: hard - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: "npm:^5.0.1" - checksum: 8c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 - languageName: node - linkType: hard - -"strip-ansi@npm:6.0.0, strip-ansi@npm:^6.0.0": - version: 6.0.0 - resolution: "strip-ansi@npm:6.0.0" - dependencies: - ansi-regex: "npm:^5.0.0" - checksum: 8c0/85257c80250541cc0e65088c7dc768563bdbd1bf7120471d6d3a73cdc60e8149a50038c12a6fd4a30b674587f306ae42e2cc73ac3095daf193633daa0bd8f928 - languageName: node - linkType: hard - -"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": - version: 3.0.1 - resolution: "strip-ansi@npm:3.0.1" - dependencies: - ansi-regex: "npm:^2.0.0" - checksum: 8c0/f6e7fbe8e700105dccf7102eae20e4f03477537c74b286fd22cfc970f139002ed6f0d9c10d0e21aa9ed9245e0fa3c9275930e8795c5b947da136e4ecb644a70f - languageName: node - linkType: hard - -"strip-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-ansi@npm:4.0.0" - dependencies: - ansi-regex: "npm:^3.0.0" - checksum: 8c0/d75d9681e0637ea316ddbd7d4d3be010b1895a17e885155e0ed6a39755ae0fd7ef46e14b22162e66a62db122d3a98ab7917794e255532ab461bb0a04feb03e7d - languageName: node - linkType: hard - -"strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": - version: 5.2.0 - resolution: "strip-ansi@npm:5.2.0" - dependencies: - ansi-regex: "npm:^4.1.0" - checksum: 8c0/de4658c8a097ce3b15955bc6008f67c0790f85748bdc025b7bc8c52c7aee94bc4f9e50624516150ed173c3db72d851826cd57e7a85fe4e4bb6dbbebd5d297fdf - languageName: node - linkType: hard - -"strip-ansi@npm:^7.0.1": - version: 7.0.1 - resolution: "strip-ansi@npm:7.0.1" - dependencies: - ansi-regex: "npm:^6.0.1" - checksum: 8c0/a94805f54caefae6cf4870ee6acfe50cff69d90a37994bf02c096042d9939ee211e1568f34b9fa5efa03c7d7fea79cb3ac8a4e517ceb848284ae300da06ca7e9 - languageName: node - linkType: hard - -"strip-bom@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-bom@npm:3.0.0" - checksum: 8c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 - languageName: node - linkType: hard - -"strip-bom@npm:^4.0.0": - version: 4.0.0 - resolution: "strip-bom@npm:4.0.0" - checksum: 8c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef - languageName: node - linkType: hard - -"strip-eof@npm:^1.0.0": - version: 1.0.0 - resolution: "strip-eof@npm:1.0.0" - checksum: 8c0/f336beed8622f7c1dd02f2cbd8422da9208fae81daf184f73656332899978919d5c0ca84dc6cfc49ad1fc4dd7badcde5412a063cf4e0d7f8ed95a13a63f68f45 - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 8c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f - languageName: node - linkType: hard - -"strip-indent@npm:3.0.0, strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: "npm:^1.0.0" - checksum: 8c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 - languageName: node - linkType: hard - -"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": - version: 3.1.1 - resolution: "strip-json-comments@npm:3.1.1" - checksum: 8c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd - languageName: node - linkType: hard - -"strip-json-comments@npm:~2.0.1": - version: 2.0.1 - resolution: "strip-json-comments@npm:2.0.1" - checksum: 8c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 - languageName: node - linkType: hard - -"strip-outer@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-outer@npm:2.0.0" - checksum: 6633b62914884dd63bc94221368b8d8a8df4cbde3d50849de0cfa3bf9f76751828108c9cc9195bcd1b70d73317cc25d3c1c4d6b717be437a1f6161206f44fe75 - languageName: node - linkType: hard - -"strtok3@npm:^7.0.0-alpha.9": - version: 7.0.0 - resolution: "strtok3@npm:7.0.0" - dependencies: - "@tokenizer/token": "npm:^0.3.0" - peek-readable: "npm:^5.0.0" - checksum: 63a72b10a302719242bfd31ca53955a06bb091dfec46ef14ca10c4b17ab15780ed8365cd5b270cfbde92d571f677539957add436e4bf9cccdf9977b40d762583 - languageName: node - linkType: hard - -"style-loader@npm:3.3.3": - version: 3.3.3 - resolution: "style-loader@npm:3.3.3" - peerDependencies: - webpack: ^5.0.0 - checksum: 8c0/104bae8abd0627579dc14f3917cf65f1117e8098e3529872f09c26b5eee07933567b7be5c8ebf94d16e322b6e726dc569c5787111bf3786915850db4e351ef33 - languageName: node - linkType: hard - -"style-loader@npm:^1.1.3, style-loader@npm:^1.3.0": - version: 1.3.0 - resolution: "style-loader@npm:1.3.0" - dependencies: - loader-utils: "npm:^2.0.0" - schema-utils: "npm:^2.7.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/21137d63623690af0c8b135f94e01af724bc0dea560c65ff553aa06c560fac69c068ec19ae7893b3667e50e79a660e051783803c949bcd559a8fc2f839397056 - languageName: node - linkType: hard - -"style-to-object@npm:0.3.0, style-to-object@npm:^0.3.0": - version: 0.3.0 - resolution: "style-to-object@npm:0.3.0" - dependencies: - inline-style-parser: "npm:0.1.1" - checksum: 8c0/afe9b96ba077a9068baf8887091870f50298157c0ebf5378151792cf2a2ce084fec9b34fc544da0d9f8e6c22ca0c9e23aa6f075bb8eb051aa1d64363e9987600 - languageName: node - linkType: hard - -"style-value-types@npm:5.0.0": - version: 5.0.0 - resolution: "style-value-types@npm:5.0.0" - dependencies: - hey-listen: "npm:^1.0.8" - tslib: "npm:^2.1.0" - checksum: a7b693269d48c0cab73da6c88eade845e71b5f330541a9ccb6a065468739d9bafdeb34f94fb89581931371275846da53e35989218cbc0c2d1a38f127e4d765fd - languageName: node - linkType: hard - -"styled-components@npm:^5.1.0": - version: 5.3.0 - resolution: "styled-components@npm:5.3.0" - dependencies: - "@babel/helper-module-imports": "npm:^7.0.0" - "@babel/traverse": "npm:^7.4.5" - "@emotion/is-prop-valid": "npm:^0.8.8" - "@emotion/stylis": "npm:^0.8.4" - "@emotion/unitless": "npm:^0.7.4" - babel-plugin-styled-components: "npm:>= 1.12.0" - css-to-react-native: "npm:^3.0.0" - hoist-non-react-statics: "npm:^3.0.0" - shallowequal: "npm:^1.1.0" - supports-color: "npm:^5.5.0" - peerDependencies: - react: ">= 16.8.0" - react-dom: ">= 16.8.0" - react-is: ">= 16.8.0" - checksum: 8c0/27b0ab7998bcbc3fdf06e155103d75f364fe722dbb64e6ed07a609d56b28da0dcff0cc81be0350b6c3cec323d1d9d2c0f3d82270f6fa24da22285262fea84271 - languageName: node - linkType: hard - -"stylehacks@npm:^4.0.0": - version: 4.0.3 - resolution: "stylehacks@npm:4.0.3" - dependencies: - browserslist: "npm:^4.0.0" - postcss: "npm:^7.0.0" - postcss-selector-parser: "npm:^3.0.0" - checksum: 8c0/d063adba9018dbf765f80bd4fa5136dfabd5d9bb7b3654a4990c633c539e0f38e758fc9d16c12876afbcec1dd6534d9e9178aa0a3e183345ff034eae9605d35b - languageName: node - linkType: hard - -"stylehacks@npm:^6.0.0": - version: 6.0.0 - resolution: "stylehacks@npm:6.0.0" - dependencies: - browserslist: "npm:^4.21.4" - postcss-selector-parser: "npm:^6.0.4" - peerDependencies: - postcss: ^8.2.15 - checksum: 8c0/6ce277c816dd826fdc765258d612a160bad03dae52ab51ef1676efae07e96923ebeb6880d6522eefc50d2e81cb90b632615120c73aed190f345e8d836def67b6 - languageName: node - linkType: hard - -"subscriptions-transport-ws@npm:^0.9.19": - version: 0.9.19 - resolution: "subscriptions-transport-ws@npm:0.9.19" - dependencies: - backo2: "npm:^1.0.2" - eventemitter3: "npm:^3.1.0" - iterall: "npm:^1.2.1" - symbol-observable: "npm:^1.0.4" - ws: "npm:^5.2.0 || ^6.0.0 || ^7.0.0" - peerDependencies: - graphql: ">=0.10.0" - checksum: 8c0/6f2ade56865f0ba291d3ff82c79781b051c2374873bac853286fedfdbc05001b8c4018ab7cba44af667ead7f573e48d18892d58a8f9ca8d90dfb4bff5c125045 - languageName: node - linkType: hard - -"sucrase@npm:^3.32.0": - version: 3.35.0 - resolution: "sucrase@npm:3.35.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.2" - commander: "npm:^4.0.0" - glob: "npm:^10.3.10" - lines-and-columns: "npm:^1.1.6" - mz: "npm:^2.7.0" - pirates: "npm:^4.0.1" - ts-interface-checker: "npm:^0.1.9" - bin: - sucrase: bin/sucrase - sucrase-node: bin/sucrase-node - checksum: ac85f3359d2c2ecbf5febca6a24ae9bf96c931f05fde533c22a94f59c6a74895e5d5f0e871878dfd59c2697a75ebb04e4b2224ef0bfc24ca1210735c2ec191ef - languageName: node - linkType: hard - -"superjson@npm:^1.12.2": - version: 1.13.1 - resolution: "superjson@npm:1.13.1" - dependencies: - copy-anything: "npm:^3.0.2" - checksum: 8c0/596edde148df1f05f09236b0715ad97bcf803514e65a271d4f945557e35652b838e65c96520946b7ee7a62cb96f26a565749dc14897de2bcf9ac12371f1a4f8c - languageName: node - linkType: hard - -"supports-color@npm:^2.0.0": - version: 2.0.0 - resolution: "supports-color@npm:2.0.0" - checksum: 8c0/570e0b63be36cccdd25186350a6cb2eaad332a95ff162fa06d9499982315f2fe4217e69dd98e862fbcd9c81eaff300a825a1fe7bf5cc752e5b84dfed042b0dda - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 8c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 - languageName: node - linkType: hard - -"supports-color@npm:^6.1.0": - version: 6.1.0 - resolution: "supports-color@npm:6.1.0" - dependencies: - has-flag: "npm:^3.0.0" - checksum: 8c0/ebf2befe41b55932c6d77192b91775f1403c389440ce2dab6f72663cf32ee87a1d9dea3512131a18e45ccac91424a8873b266142828489d0206d65ee93d224b6 - languageName: node - linkType: hard - -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 8c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 - languageName: node - linkType: hard - -"supports-color@npm:^8.0.0, supports-color@npm:^8.1.0, supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: "npm:^4.0.0" - checksum: 8c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 - languageName: node - linkType: hard - -"supports-hyperlinks@npm:^2.0.0": - version: 2.2.0 - resolution: "supports-hyperlinks@npm:2.2.0" - dependencies: - has-flag: "npm:^4.0.0" - supports-color: "npm:^7.0.0" - checksum: 8c0/022677b8891c75bfdab99cf471248ddc823c666c6d5811fbee1257d502cdfb0047c5a3b3fd34854da7b688716af921470abdeabbe80fb035ae1157f457134b48 - languageName: node - linkType: hard - -"supports-preserve-symlinks-flag@npm:^1.0.0": - version: 1.0.0 - resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 8c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 - languageName: node - linkType: hard - -"svg-parser@npm:^2.0.4": - version: 2.0.4 - resolution: "svg-parser@npm:2.0.4" - checksum: 8c0/02f6cb155dd7b63ebc2f44f36365bc294543bebb81b614b7628f1af3c54ab64f7e1cec20f06e252bf95bdde78441ae295a412c68ad1678f16a6907d924512b7a - languageName: node - linkType: hard - -"svg-react-loader@npm:^0.4.6": - version: 0.4.6 - resolution: "svg-react-loader@npm:0.4.6" - dependencies: - css: "npm:2.2.4" - loader-utils: "npm:1.1.0" - ramda: "npm:0.21.0" - rx: "npm:4.1.0" - traverse: "npm:0.6.6" - xml2js: "npm:0.4.17" - checksum: 8c0/4c5b9717f892824fd567d0fe06b82898324fe0cdb02894f7e61160e1eb67c3b3e6f72557a91824c22e49d3c3318d5777b245197864c3a4c7c0e870767ec15bcd - languageName: node - linkType: hard - -"svgo@npm:^1.0.0": - version: 1.3.2 - resolution: "svgo@npm:1.3.2" - dependencies: - chalk: "npm:^2.4.1" - coa: "npm:^2.0.2" - css-select: "npm:^2.0.0" - css-select-base-adapter: "npm:^0.1.1" - css-tree: "npm:1.0.0-alpha.37" - csso: "npm:^4.0.2" - js-yaml: "npm:^3.13.1" - mkdirp: "npm:~0.5.1" - object.values: "npm:^1.1.0" - sax: "npm:~1.2.4" - stable: "npm:^0.1.8" - unquote: "npm:~1.1.1" - util.promisify: "npm:~1.0.0" - bin: - svgo: ./bin/svgo - checksum: 8c0/261a82b08acf63accd7a54b47b4ffcd2fc7e7d7f8efef3cbc61184583b24b4c5434656004c30190302821af0f6d7b047eac730b0dcdab5d179e6a74383ccc776 - languageName: node - linkType: hard - -"svgo@npm:^2.0.3": - version: 2.3.0 - resolution: "svgo@npm:2.3.0" - dependencies: - "@trysound/sax": "npm:0.1.1" - chalk: "npm:^4.1.0" - commander: "npm:^7.1.0" - css-select: "npm:^3.1.2" - css-tree: "npm:^1.1.2" - csso: "npm:^4.2.0" - stable: "npm:^0.1.8" - bin: - svgo: bin/svgo - checksum: 8c0/53165f1bade243e19fdf22f44db24173aca4ed1e78838f27a8a4c8a7ec1f965a64ae2a8a976d6cdc4c962e84dd9cbeb5468cc95f002f9b9856ddd3e2c285bc1e - languageName: node - linkType: hard - -"svgo@npm:^3.0.2": - version: 3.0.2 - resolution: "svgo@npm:3.0.2" - dependencies: - "@trysound/sax": "npm:0.2.0" - commander: "npm:^7.2.0" - css-select: "npm:^5.1.0" - css-tree: "npm:^2.2.1" - csso: "npm:^5.0.5" - picocolors: "npm:^1.0.0" - bin: - svgo: bin/svgo - checksum: 8c0/d682d416dd68cdcbab5e1e77b93d621325480e97dfe87777e845ea9a0ce05d03fc837ce17080af67e787f6b24430b805ff79f4591dda30a0ab4060b6a3ac2adf - languageName: node - linkType: hard - -"swap-case@npm:^2.0.2": - version: 2.0.2 - resolution: "swap-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/6a47c1926e06395ead750905e103be388aeec8c9697f20b14bc3e1e86fcb4fc78e5033197afe6cc8bbed80f0a4ee1f184b0fa22eec7f4a767bdfd278683d52eb - languageName: node - linkType: hard - -"symbol-observable@npm:^1.0.4, symbol-observable@npm:^1.1.0": - version: 1.2.0 - resolution: "symbol-observable@npm:1.2.0" - checksum: 8c0/009fee50798ef80ed4b8195048288f108b03de162db07493f2e1fd993b33fafa72d659e832b584da5a2427daa78e5a738fb2a9ab027ee9454252e0bedbcd1fdc - languageName: node - linkType: hard - -"symbol-observable@npm:^4.0.0": - version: 4.0.0 - resolution: "symbol-observable@npm:4.0.0" - checksum: 8c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d - languageName: node - linkType: hard - -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 8c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 - languageName: node - linkType: hard - -"symbol.prototype.description@npm:^1.0.0": - version: 1.0.4 - resolution: "symbol.prototype.description@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.2" - es-abstract: "npm:^1.18.0-next.2" - has-symbols: "npm:^1.0.1" - object.getownpropertydescriptors: "npm:^2.1.2" - checksum: 8c0/478ee3a8bba417d31e5daa131402e93168914bc43858ec893dcd1bb5f57ad7768c19f2908628e49cc9c243bc7cc90273c91689cbf848334777debcb05a17cebd - languageName: node - linkType: hard - -"synchronous-promise@npm:^2.0.15": - version: 2.0.15 - resolution: "synchronous-promise@npm:2.0.15" - checksum: 8c0/967778e7570dc496d7630a89db3bada38876574797c9b272ee50f6ecd7afcebf450268b4bb48a84274d213ab9fd4865dbcc6edeb279f9ecaddf189d5446cbe43 - languageName: node - linkType: hard - -"systeminformation@npm:5.21.20": - version: 5.21.20 - resolution: "systeminformation@npm:5.21.20" - bin: - systeminformation: lib/cli.js - checksum: 4d7ea2b0df75f122854cc964926dfb8f8fbe9297afcbf2fad1218cfb684163e9486f5c6032814fe528d5d39585b43f33c4af11e0ea07b8b591f18c27f791fbba - conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) - languageName: node - linkType: hard - -"tabbable@npm:^6.0.1": - version: 6.2.0 - resolution: "tabbable@npm:6.2.0" - checksum: ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 - languageName: node - linkType: hard - -"table@npm:^6.0.9": - version: 6.7.1 - resolution: "table@npm:6.7.1" - dependencies: - ajv: "npm:^8.0.1" - lodash.clonedeep: "npm:^4.5.0" - lodash.truncate: "npm:^4.4.2" - slice-ansi: "npm:^4.0.0" - string-width: "npm:^4.2.0" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/1a3fb631491748d99bcdeddc555fd1ca65c37232846ed552fea51aea7f6b4e42be4b32053ffecbfaebf812229e96c9599c4b494995acf7168ad351ad874cb15f - languageName: node - linkType: hard - -"tailwind-merge@npm:^1.9.1": - version: 1.14.0 - resolution: "tailwind-merge@npm:1.14.0" - checksum: a66f5ab1a2bb2b0f5a40a031867a6bc900de98eb3339b2a51759351221527a3d600eecb6cb5a038830aa89548eba72bb63aa3856cb9f31c9a3918b42eb3df350 - languageName: node - linkType: hard - -"tailwindcss@npm:3.3.5": - version: 3.3.5 - resolution: "tailwindcss@npm:3.3.5" - dependencies: - "@alloc/quick-lru": "npm:^5.2.0" - arg: "npm:^5.0.2" - chokidar: "npm:^3.5.3" - didyoumean: "npm:^1.2.2" - dlv: "npm:^1.1.3" - fast-glob: "npm:^3.3.0" - glob-parent: "npm:^6.0.2" - is-glob: "npm:^4.0.3" - jiti: "npm:^1.19.1" - lilconfig: "npm:^2.1.0" - micromatch: "npm:^4.0.5" - normalize-path: "npm:^3.0.0" - object-hash: "npm:^3.0.0" - picocolors: "npm:^1.0.0" - postcss: "npm:^8.4.23" - postcss-import: "npm:^15.1.0" - postcss-js: "npm:^4.0.1" - postcss-load-config: "npm:^4.0.1" - postcss-nested: "npm:^6.0.1" - postcss-selector-parser: "npm:^6.0.11" - resolve: "npm:^1.22.2" - sucrase: "npm:^3.32.0" - bin: - tailwind: lib/cli.js - tailwindcss: lib/cli.js - checksum: a57c0a9cdba9db19097e34e25b7e4690fab43f31ba200afc3bb9635a03036ca93e9884a17b616fb8a2486d57d2ecc9a06862ce4685b3ace57f7a67436e7594a0 - languageName: node - linkType: hard - -"tapable@npm:^1.0.0, tapable@npm:^1.1.3": - version: 1.1.3 - resolution: "tapable@npm:1.1.3" - checksum: 8c0/c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 - languageName: node - linkType: hard - -"tapable@npm:^2.0.0, tapable@npm:^2.2.0": - version: 2.2.0 - resolution: "tapable@npm:2.2.0" - checksum: 8c0/3d404f474bbea65fe9ea2d00d48b332bc9ed7e841b683fa9d202edef5f2a18028e3ef5a65b96b164ef1b29ce16d5e4b1a5c165b3fa20ae80183c351892cea974 - languageName: node - linkType: hard - -"tapable@npm:^2.1.1": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 8c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 - languageName: node - linkType: hard - -"tar-stream@npm:^2.1.2": - version: 2.2.0 - resolution: "tar-stream@npm:2.2.0" - dependencies: - bl: "npm:^4.0.3" - end-of-stream: "npm:^1.4.1" - fs-constants: "npm:^1.0.0" - inherits: "npm:^2.0.3" - readable-stream: "npm:^3.1.1" - checksum: 8c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 - languageName: node - linkType: hard - -"tar-stream@npm:^3.0.0": - version: 3.1.6 - resolution: "tar-stream@npm:3.1.6" - dependencies: - b4a: "npm:^1.6.4" - fast-fifo: "npm:^1.2.0" - streamx: "npm:^2.15.0" - checksum: 7d52d1a56eb25b8434c9544becb737eb6c4f0ed19d205e739fdd2537ad8d1d623a6c93f7f8e58d9028cb0cdf86c0d8b67164e070cd1702cc78b8ab7cba0f3702 - languageName: node - linkType: hard - -"tar@npm:^6.0.1, tar@npm:^6.0.2": - version: 6.1.0 - resolution: "tar@npm:6.1.0" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^3.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 8c0/f28341501670556f5dced0a987205b1e408785ec296e60d5297ea155df18a55b7f5a20a538631791c11e5863677cc2911a2d861acb950b11e7f25fe95dd4aed2 - languageName: node - linkType: hard - -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.1.14 - resolution: "tar@npm:6.1.14" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 8c0/da1c3e70c75620f3e49c2f2a2872901759a12c09787c313039c9a0afc3638ae2b3c47d62921efe593e44d0b56a3cc4228b776c835349f1f56b475befc6e021c3 - languageName: node - linkType: hard - -"tasuku@npm:2.0.1": - version: 2.0.1 - resolution: "tasuku@npm:2.0.1" - dependencies: - yoga-layout-prebuilt: "npm:1.10.0" - checksum: 8c0/0c28c9c9b836826d2858b92d69a2d5125c89cacd1f856159dad567fdbdc85b21e6fc2876dfce65dc698b47791bc8c553687eaab922355b9c331875786b86e7fc - languageName: node - linkType: hard - -"telejson@npm:^5.3.2, telejson@npm:^5.3.3": - version: 5.3.3 - resolution: "telejson@npm:5.3.3" - dependencies: - "@types/is-function": "npm:^1.0.0" - global: "npm:^4.4.0" - is-function: "npm:^1.0.2" - is-regex: "npm:^1.1.2" - is-symbol: "npm:^1.0.3" - isobject: "npm:^4.0.0" - lodash: "npm:^4.17.21" - memoizerific: "npm:^1.11.3" - checksum: 8c0/14be7bf39634c253181eceabe10c6fe1768ba2baf7a1aad8b0289b9ca7fff976d4ecd9445628ef1e9faf382e2c46e3a7db7da2e3b0bd8a540917d20ff18cd182 - languageName: node - linkType: hard - -"temp-dir@npm:^1.0.0": - version: 1.0.0 - resolution: "temp-dir@npm:1.0.0" - checksum: 8c0/648669d5e154d1961217784c786acadccf0156519c19e0aceda7edc76f5bdfa32a40dd7f88ebea9238ed6e3dedf08b846161916c8947058c384761351be90a8e - languageName: node - linkType: hard - -"temp-dir@npm:^2.0.0": - version: 2.0.0 - resolution: "temp-dir@npm:2.0.0" - checksum: 8c0/b1df969e3f3f7903f3426861887ed76ba3b495f63f6d0c8e1ce22588679d9384d336df6064210fda14e640ed422e2a17d5c40d901f60e161c99482d723f4d309 - languageName: node - linkType: hard - -"temp-write@npm:^4.0.0": - version: 4.0.0 - resolution: "temp-write@npm:4.0.0" - dependencies: - graceful-fs: "npm:^4.1.15" - is-stream: "npm:^2.0.0" - make-dir: "npm:^3.0.0" - temp-dir: "npm:^1.0.0" - uuid: "npm:^3.3.2" - checksum: 8c0/91a6b0dd85a5d606db3e1326b23830c2c14b7a249a26a1e42a023af597edeedef338a3b37a38b6bbd22cceee4fff2108545cfb65fca1ab8289927cf9501d6c9e - languageName: node - linkType: hard - -"temp@npm:^0.8.4": - version: 0.8.4 - resolution: "temp@npm:0.8.4" - dependencies: - rimraf: "npm:~2.6.2" - checksum: 8c0/7f071c963031bfece37e13c5da11e9bb451e4ddfc4653e23e327a2f91594102dc826ef6a693648e09a6e0eb856f507967ec759ae55635e0878091eccf411db37 - languageName: node - linkType: hard - -"tempy@npm:1.0.1, tempy@npm:^1.0.0": - version: 1.0.1 - resolution: "tempy@npm:1.0.1" - dependencies: - del: "npm:^6.0.0" - is-stream: "npm:^2.0.0" - temp-dir: "npm:^2.0.0" - type-fest: "npm:^0.16.0" - unique-string: "npm:^2.0.0" - checksum: 8c0/864a1cf1b5536dc21e84ae45dbbc3ba4dd2c7ec1674d895f99c349cf209df959a53d797ca38d0b2cf69c7684d565fde5cfc67faaa63b7208ffb21d454b957472 - languageName: node - linkType: hard - -"terminal-link@npm:2.1.1, terminal-link@npm:^2.0.0, terminal-link@npm:^2.1.1": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: "npm:^4.2.1" - supports-hyperlinks: "npm:^2.0.0" - checksum: 8c0/947458a5cd5408d2ffcdb14aee50bec8fb5022ae683b896b2f08ed6db7b2e7d42780d5c8b51e930e9c322bd7c7a517f4fa7c76983d0873c83245885ac5ee13e3 - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^1.4.3": - version: 1.4.5 - resolution: "terser-webpack-plugin@npm:1.4.5" - dependencies: - cacache: "npm:^12.0.2" - find-cache-dir: "npm:^2.1.0" - is-wsl: "npm:^1.1.0" - schema-utils: "npm:^1.0.0" - serialize-javascript: "npm:^4.0.0" - source-map: "npm:^0.6.1" - terser: "npm:^4.1.2" - webpack-sources: "npm:^1.4.0" - worker-farm: "npm:^1.7.0" - peerDependencies: - webpack: ^4.0.0 - checksum: 8c0/97164cfa383cf988832427e912cd9606471452f15f8bfb905ae51f1a42561f90ea541141e1e530e59f8307639fed7dfdbd626aec8390acd6ad80e58ea3fcf6df - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^4.2.3": - version: 4.2.3 - resolution: "terser-webpack-plugin@npm:4.2.3" - dependencies: - cacache: "npm:^15.0.5" - find-cache-dir: "npm:^3.3.1" - jest-worker: "npm:^26.5.0" - p-limit: "npm:^3.0.2" - schema-utils: "npm:^3.0.0" - serialize-javascript: "npm:^5.0.1" - source-map: "npm:^0.6.1" - terser: "npm:^5.3.4" - webpack-sources: "npm:^1.4.3" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/52bd036b72b596b162e65dce314f1ee7ba1e82b97200d919b61ad50592dc72608b5fe50d7e3f6c0934e42183dfc746b98b922c9e1d00d75253933f799687fa4b - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.1.3": - version: 5.3.6 - resolution: "terser-webpack-plugin@npm:5.3.6" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.14" - jest-worker: "npm:^27.4.5" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.0" - terser: "npm:^5.14.1" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 8c0/75ac4de6f95e62667166572b1db9f54ef163f02a7f9234549239d1a42462a5a0df67a821d791e1eb105a5a6e02941a5b03c271c56a886a508b83b90c2d52863e - languageName: node - linkType: hard - -"terser-webpack-plugin@npm:^5.3.7": - version: 5.3.7 - resolution: "terser-webpack-plugin@npm:5.3.7" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.17" - jest-worker: "npm:^27.4.5" - schema-utils: "npm:^3.1.1" - serialize-javascript: "npm:^6.0.1" - terser: "npm:^5.16.5" - peerDependencies: - webpack: ^5.1.0 - peerDependenciesMeta: - "@swc/core": - optional: true - esbuild: - optional: true - uglify-js: - optional: true - checksum: 8c0/fe54487e67dfff86f874561a2ee8c43aaf6a41ac1474527d8dc60209502a779e74ae0d647523cd9d98c9d3c4d7e77a3ad0eddf3be36745424a0dd05603e94bb1 - languageName: node - linkType: hard - -"terser@npm:^4.1.2, terser@npm:^4.6.3": - version: 4.8.0 - resolution: "terser@npm:4.8.0" - dependencies: - commander: "npm:^2.20.0" - source-map: "npm:~0.6.1" - source-map-support: "npm:~0.5.12" - bin: - terser: bin/terser - checksum: 8c0/5dbe6684ecfba94b20c556d0774e8ac05265509bf9fe7e05ed306ac839f7de33e72b9238a4a35d274f340330358d0cff88b543545ae7433f0e2a05ddf61159f1 - languageName: node - linkType: hard - -"terser@npm:^5.10.0, terser@npm:^5.14.1": - version: 5.16.2 - resolution: "terser@npm:5.16.2" - dependencies: - "@jridgewell/source-map": "npm:^0.3.2" - acorn: "npm:^8.5.0" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 8c0/e68c4ecc738c897277353b1883980030475f895b6c4ea9be06e1ed49eb193655efeec408f71a60492464857df86533e7e20474db9b02aa3d3389d1305e5edad8 - languageName: node - linkType: hard - -"terser@npm:^5.16.5": - version: 5.17.1 - resolution: "terser@npm:5.17.1" - dependencies: - "@jridgewell/source-map": "npm:^0.3.2" - acorn: "npm:^8.5.0" - commander: "npm:^2.20.0" - source-map-support: "npm:~0.5.20" - bin: - terser: bin/terser - checksum: 8c0/00d4712b954307709b4e14cf17e0ab2fc2d527b480a50f212414aad12a739fb374d7b3391da2b73f82e21c9d469111ad2cd1d054861759624bd67c6dea4bd76a - languageName: node - linkType: hard - -"terser@npm:^5.3.4": - version: 5.7.0 - resolution: "terser@npm:5.7.0" - dependencies: - commander: "npm:^2.20.0" - source-map: "npm:~0.7.2" - source-map-support: "npm:~0.5.19" - bin: - terser: bin/terser - checksum: 8c0/b02067e05a0c80fdb0cfdbcef868947bc6c1c38a72856729bd6a29d7c29b22bad6b811d2969a62038d6fa19a672938995a9e522eb9bbe122ffb58e09455678a2 - languageName: node - linkType: hard - -"test-exclude@npm:^6.0.0": - version: 6.0.0 - resolution: "test-exclude@npm:6.0.0" - dependencies: - "@istanbuljs/schema": "npm:^0.1.2" - glob: "npm:^7.1.4" - minimatch: "npm:^3.0.4" - checksum: 8c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 - languageName: node - linkType: hard - -"text-table@npm:0.2.0, text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: 8c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c - languageName: node - linkType: hard - -"thenify-all@npm:^1.0.0": - version: 1.6.0 - resolution: "thenify-all@npm:1.6.0" - dependencies: - thenify: "npm:>= 3.1.0 < 4" - checksum: 9b896a22735e8122754fe70f1d65f7ee691c1d70b1f116fda04fea103d0f9b356e3676cb789506e3909ae0486a79a476e4914b0f92472c2e093d206aed4b7d6b - languageName: node - linkType: hard - -"thenify@npm:>= 3.1.0 < 4": - version: 3.3.1 - resolution: "thenify@npm:3.3.1" - dependencies: - any-promise: "npm:^1.0.0" - checksum: f375aeb2b05c100a456a30bc3ed07ef03a39cbdefe02e0403fb714b8c7e57eeaad1a2f5c4ecfb9ce554ce3db9c2b024eba144843cd9e344566d9fcee73b04767 - languageName: node - linkType: hard - -"thread-stream@npm:^2.0.0": - version: 2.3.0 - resolution: "thread-stream@npm:2.3.0" - dependencies: - real-require: "npm:^0.2.0" - checksum: 8c0/06f60892adab3f3b5b8930857a0049d29b89cbb95581b079274c87ee0aea718d12d8d56e8ad3aafa5ded3321aaf51a4e1b1ce70340d650fbfa1cdd6d0d399bc2 - languageName: node - linkType: hard - -"throat@npm:^5.0.0": - version: 5.0.0 - resolution: "throat@npm:5.0.0" - checksum: 8c0/1b9c661dabf93ff9026fecd781ccfd9b507c41b9d5e581614884fffd09f3f9ebfe26d3be668ccf904fd324dd3f6efe1a3ec7f83e91b1dff9fdcc6b7d39b8bfe3 - languageName: node - linkType: hard - -"throttle-debounce@npm:^3.0.1": - version: 3.0.1 - resolution: "throttle-debounce@npm:3.0.1" - checksum: 8c0/c8e558479463b7ed8bac30d6b10cc87abd1c9fc64edfce2db4109be1a04acaef5d2d0557f49c1a3845ea07d9f79e6e0389b1b60db0a77c44e5b7a1216596f285 - languageName: node - linkType: hard - -"through2@npm:^2.0.0, through2@npm:^2.0.1": - version: 2.0.5 - resolution: "through2@npm:2.0.5" - dependencies: - readable-stream: "npm:~2.3.6" - xtend: "npm:~4.0.1" - checksum: 8c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade - languageName: node - linkType: hard - -"through@npm:^2.3.6, through@npm:^2.3.8": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: 8c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc - languageName: node - linkType: hard - -"thunky@npm:^1.0.2": - version: 1.1.0 - resolution: "thunky@npm:1.1.0" - checksum: 8c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 - languageName: node - linkType: hard - -"timers-browserify@npm:^2.0.4": - version: 2.0.12 - resolution: "timers-browserify@npm:2.0.12" - dependencies: - setimmediate: "npm:^1.0.4" - checksum: 8c0/98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 - languageName: node - linkType: hard - -"timsort@npm:^0.3.0": - version: 0.3.0 - resolution: "timsort@npm:0.3.0" - checksum: 8c0/571b2054a0db3cf80eb255f8609a1f798cae9176f9ec6e3fbd03d64186c015cc9e1e75b88ba38e1d71aebcc03a931352522c7387dcb90caeb148375c7bc106f4 - languageName: node - linkType: hard - -"tiny-emitter@npm:^2.0.0": - version: 2.1.0 - resolution: "tiny-emitter@npm:2.1.0" - checksum: 8c0/459c0bd6e636e80909898220eb390e1cba2b15c430b7b06cec6ac29d87acd29ef618b9b32532283af749f5d37af3534d0e3bde29fdf6bcefbf122784333c953d - languageName: node - linkType: hard - -"tiny-invariant@npm:^1.3.1": - version: 1.3.1 - resolution: "tiny-invariant@npm:1.3.1" - checksum: 5b87c1d52847d9452b60d0dcb77011b459044e0361ca8253bfe7b43d6288106e12af926adb709a6fc28900e3864349b91dad9a4ac93c39aa15f360b26c2ff4db - languageName: node - linkType: hard - -"tiny-lru@npm:^10.0.0": - version: 10.0.1 - resolution: "tiny-lru@npm:10.0.1" - checksum: 8c0/37cbb0419044026cf3d701734bd03e360315aba338f346736a46d8aaaafec8b4f1054c2e4e614a34ab19a5ad04673ee95fdd2d7b97e2b5e7cf9db2426f00d114 - languageName: node - linkType: hard - -"tiny-warning@npm:^1.0.3": - version: 1.0.3 - resolution: "tiny-warning@npm:1.0.3" - checksum: 8c0/ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa - languageName: node - linkType: hard - -"title-case@npm:3.0.3, title-case@npm:^3.0.3": - version: 3.0.3 - resolution: "title-case@npm:3.0.3" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/face56f686060f777b43a180d371407124d201eb4238c19d9e97030fd54859696ca4e2ca499cc232f8700f24f2414cc08aab9fdf6d39acff055dd825a4d86d6a - languageName: node - linkType: hard - -"tlds@npm:1.240.0": - version: 1.240.0 - resolution: "tlds@npm:1.240.0" - bin: - tlds: bin.js - checksum: c9c9f0fd8ed5fffdb7d8fb73575d16fae621b1a6a8a7c0a19c28b05092893696de1dcc670e068965af0296f07abb8a9c96695a0f3e7de4bb70b558841ed49ba9 - languageName: node - linkType: hard - -"tmp@npm:0.2.1": - version: 0.2.1 - resolution: "tmp@npm:0.2.1" - dependencies: - rimraf: "npm:^3.0.0" - checksum: 8c0/67607aa012059c9ce697bee820ee51bc0f39b29a8766def4f92d3f764d67c7cf9205d537d24e0cb1ce9685c40d4c628ead010910118ea18348666b5c46ed9123 - languageName: node - linkType: hard - -"tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: "npm:~1.0.2" - checksum: 8c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 - languageName: node - linkType: hard - -"tmpl@npm:1.0.5": - version: 1.0.5 - resolution: "tmpl@npm:1.0.5" - checksum: 8c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 - languageName: node - linkType: hard - -"tmpl@npm:1.0.x": - version: 1.0.4 - resolution: "tmpl@npm:1.0.4" - checksum: 8c0/1eba5c6cefdc432ba393255d8fa1ada48c7ec3ec0d1c58955bb5293fff4f8a1cc4b305bea7940aba9301006009ea7a38a2f9333db0f332d72a732e9e4ae7ac9c - languageName: node - linkType: hard - -"to-arraybuffer@npm:^1.0.0": - version: 1.0.1 - resolution: "to-arraybuffer@npm:1.0.1" - checksum: 8c0/2460bd95524f4845a751e4f8bf9937f9f3dcd1651f104e1512868782f858f8302c1cf25bbc30794bc1b3ff65c4e135158377302f2abaff43a2d8e3c38dfe098c - languageName: node - linkType: hard - -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: 8c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 - languageName: node - linkType: hard - -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: "npm:^3.0.2" - checksum: 8c0/731832a977614c03a770363ad2bd9e9c82f233261861724a8e612bb90c705b94b1a290a19f52958e8e179180bb9b71121ed65e245691a421467726f06d1d7fc3 - languageName: node - linkType: hard - -"to-readable-stream@npm:^1.0.0": - version: 1.0.0 - resolution: "to-readable-stream@npm:1.0.0" - checksum: 8c0/79cb836e2fb4f2885745a8c212eab7ebc52e93758ff0737feceaed96df98e4d04b8903fe8c27f2e9f3f856a5068ac332918b235c5d801b3efe02a51a3fa0eb36 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: "npm:^3.0.0" - repeat-string: "npm:^1.6.1" - checksum: 8c0/440d82dbfe0b2e24f36dd8a9467240406ad1499fc8b2b0f547372c22ed1d092ace2a3eb522bb09bfd9c2f39bf1ca42eb78035cf6d2b8c9f5c78da3abc96cd949 - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: "npm:^7.0.0" - checksum: 8c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 - languageName: node - linkType: hard - -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: "npm:^2.0.2" - extend-shallow: "npm:^3.0.2" - regex-not: "npm:^1.0.2" - safe-regex: "npm:^1.1.0" - checksum: 8c0/99d0b8ef397b3f7abed4bac757b0f0bb9f52bfd39167eb7105b144becfaa9a03756892352d01ac6a911f0c1ceef9f81db68c46899521a3eed054082042796120 - languageName: node - linkType: hard - -"toad-cache@npm:^3.3.0": - version: 3.4.1 - resolution: "toad-cache@npm:3.4.1" - checksum: 5324d2d4e5a30218d99c6d72797a5dac6b6df24ee98f07845b72e99f817bcc2600bbd1e740c16401ed16eaeb35c34cef62f7c77b15e239894c1afd574a121039 - languageName: node - linkType: hard - -"toggle-selection@npm:^1.0.6": - version: 1.0.6 - resolution: "toggle-selection@npm:1.0.6" - checksum: 8c0/f2cf1f2c70f374fd87b0cdc8007453ba9e981c4305a8bf4eac10a30e62ecdfd28bca7d18f8f15b15a506bf8a7bfb20dbe3539f0fcf2a2c8396c1a78d53e1f179 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.0": - version: 1.0.0 - resolution: "toidentifier@npm:1.0.0" - checksum: 8c0/27a37b8b21126e7216d40c02f410065b1de35b0f844368d0ccaabba7987595703006d45e5c094b086220cbbc5864d4b99766b460110e4bc15b9db574c5c58be2 - languageName: node - linkType: hard - -"toidentifier@npm:1.0.1": - version: 1.0.1 - resolution: "toidentifier@npm:1.0.1" - checksum: 8c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 - languageName: node - linkType: hard - -"token-types@npm:^5.0.0-alpha.2": - version: 5.0.1 - resolution: "token-types@npm:5.0.1" - dependencies: - "@tokenizer/token": "npm:^0.3.0" - ieee754: "npm:^1.2.1" - checksum: cb671b2b52271362816d22b7a076082b0da033cd7807992b81ae53cfd8541bd013ac29e455c3c7a8bb4f88aa1c5315a12353c3599b7f568df238d3c1723f9d8d - languageName: node - linkType: hard - -"toml@npm:^3.0.0": - version: 3.0.0 - resolution: "toml@npm:3.0.0" - checksum: 8c0/8d7ed3e700ca602e5419fca343e1c595eb7aa177745141f0761a5b20874b58ee5c878cd045c408da9d130cb2b611c639912210ba96ce2f78e443569aa8060c18 - languageName: node - linkType: hard - -"totalist@npm:^3.0.0": - version: 3.0.1 - resolution: "totalist@npm:3.0.1" - checksum: 4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 - languageName: node - linkType: hard - -"touch@npm:^3.1.0": - version: 3.1.0 - resolution: "touch@npm:3.1.0" - dependencies: - nopt: "npm:~1.0.10" - bin: - nodetouch: ./bin/nodetouch.js - checksum: 8c0/dacb4a639401b83b0a40b56c0565e01096e5ecf38b22a4840d9eeb642a5bea136c6a119e4543f9b172349a5ee343b10cda0880eb47f7d7ddfd6eac59dcf53244 - languageName: node - linkType: hard - -"tough-cookie@npm:^4.0.0": - version: 4.0.0 - resolution: "tough-cookie@npm:4.0.0" - dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.1.2" - checksum: 8c0/8ecd1f1ff1fa1d2c04f5e8533ae61d9b43062279aa62d7daf52a16fd99643fa569ae38464b6ae3f3fe1aa2184cee1539ff2066120eb95b9ac9684e8047b0ea3c - languageName: node - linkType: hard - -"tough-cookie@npm:^4.1.2": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" - dependencies: - psl: "npm:^1.1.33" - punycode: "npm:^2.1.1" - universalify: "npm:^0.2.0" - url-parse: "npm:^1.5.3" - checksum: 8c0/1f9d97bc9ff22b41e107eca4a146064f916e567b5557795dbfe742f098557ba1101b8f7c4e02ac785236663f7f086c37dc595a5b9813ef8fb27f8d800dc9eb9b - languageName: node - linkType: hard - -"tr46@npm:^2.0.2": - version: 2.1.0 - resolution: "tr46@npm:2.1.0" - dependencies: - punycode: "npm:^2.1.1" - checksum: 8c0/397f5c39d97c5fe29fa9bab73b03853be18ad2738b2c66ee5ce84ecb36b091bdaec493f9b3cee711d45f7678f342452600843264cc8242b591c8dc983146a6c4 - languageName: node - linkType: hard - -"tr46@npm:^3.0.0": - version: 3.0.0 - resolution: "tr46@npm:3.0.0" - dependencies: - punycode: "npm:^2.1.1" - checksum: 8c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b - languageName: node - linkType: hard - -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 8c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 - languageName: node - linkType: hard - -"traverse@npm:0.6.6": - version: 0.6.6 - resolution: "traverse@npm:0.6.6" - checksum: 8c0/72b2c95463e991063cfa3603dc80e8ca35cae4bf1a736e5b6df3a50226dca341777699f702b55f61b9a329e7be0a76fb77d994f4981f49de98bb02065ca1e7d9 - languageName: node - linkType: hard - -"tree-kill@npm:^1.2.2": - version: 1.2.2 - resolution: "tree-kill@npm:1.2.2" - bin: - tree-kill: cli.js - checksum: 8c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 - languageName: node - linkType: hard - -"trim-repeated@npm:^2.0.0": - version: 2.0.0 - resolution: "trim-repeated@npm:2.0.0" - dependencies: - escape-string-regexp: "npm:^5.0.0" - checksum: 7c81ea60fc5eb509142735e41fbc41d964aeeb491f0deceea9e030a630d05ed236031f69946b5944156dbdd564f4d86cde5e9c775c321a5e96308761679128cf - languageName: node - linkType: hard - -"trim-trailing-lines@npm:^1.0.0": - version: 1.1.4 - resolution: "trim-trailing-lines@npm:1.1.4" - checksum: 8c0/95c35ece5fc806e626e7a93a2135c52932d1dee584963138dbefb1df6cb7adcb7a7c68e2c63f05c536f0681c9260e1d5262cb2e234242d23b9a31617b2c1d53c - languageName: node - linkType: hard - -"trim@npm:0.0.1": - version: 0.0.1 - resolution: "trim@npm:0.0.1" - checksum: 8c0/d974971fc8b8629d13286f20ec6ccc48f480494ca9df358d452beb1fd7eea1b802be41cc7ee157be4abbdf1b3ca79cc6d04c34b14a7026037d437e8de9dacecb - languageName: node - linkType: hard - -"trough@npm:^1.0.0": - version: 1.0.5 - resolution: "trough@npm:1.0.5" - checksum: 8c0/f036d0d7f9bc7cfe5ee650d70b57bb1f048f3292adf6c81bb9b228e546b2b2e5b74ea04a060d21472108a8cda05ec4814bbe86f87ee35c182c50cb41b5c1810a - languageName: node - linkType: hard - -"tryer@npm:^1.0.1": - version: 1.0.1 - resolution: "tryer@npm:1.0.1" - checksum: 8c0/19070409a0009dc26127636cc14d2415e9cf8b1dc07b29694e57ea8bb5ea1bded012c0e792f6235b46e31189a7b866841668b3850867ff7eac1a6b55332c960d - languageName: node - linkType: hard - -"ts-dedent@npm:^2.0.0": - version: 2.1.1 - resolution: "ts-dedent@npm:2.1.1" - checksum: 8c0/7ac68dbc2e864db6e3f0500a8b6af5bf775020bfe09816cf647469e06acdcb76d2a24b1b0211614c3c44e0978aa081a51a3dde6b8f211a68f945cbc177f7f9c2 - languageName: node - linkType: hard - -"ts-essentials@npm:^2.0.3": - version: 2.0.12 - resolution: "ts-essentials@npm:2.0.12" - checksum: 8c0/f7da013394c3201f36dfbdd18ea41b428287e680a4e802168161c9704f3fd21475c5697257d03a69b9c077364808bcf88e6353cc9f82d786f5c99048844d2039 - languageName: node - linkType: hard - -"ts-interface-checker@npm:^0.1.9": - version: 0.1.13 - resolution: "ts-interface-checker@npm:0.1.13" - checksum: 232509f1b84192d07b81d1e9b9677088e590ac1303436da1e92b296e9be8e31ea042e3e1fd3d29b1742ad2c959e95afe30f63117b8f1bc3a3850070a5142fea7 - languageName: node - linkType: hard - -"ts-invariant@npm:^0.10.3": - version: 0.10.3 - resolution: "ts-invariant@npm:0.10.3" - dependencies: - tslib: "npm:^2.1.0" - checksum: 8c0/2fbc178d5903d325ee0b87fad38827eac11888b6e86979b06754fd4bcdcf44c2a99b8bcd5d59d149c0464ede55ae810b02a2aee6835ad10efe4dd0e22efd68c0 - languageName: node - linkType: hard - -"ts-invariant@npm:^0.4.0": - version: 0.4.4 - resolution: "ts-invariant@npm:0.4.4" - dependencies: - tslib: "npm:^1.9.3" - checksum: 8c0/73783533764fb453bd71ceeaed238e7b4ccc0e2b12a631bf779d357b2520c71bace2be98a3ef2e96848d44a6d2202e1cad1e6cac74d5a09c3abac58f9225bf8f - languageName: node - linkType: hard - -"ts-invariant@npm:^0.9.4": - version: 0.9.4 - resolution: "ts-invariant@npm:0.9.4" - dependencies: - tslib: "npm:^2.1.0" - checksum: 8c0/67cb364f535f40312e72d317bdc24c34fc09a43b63ecb1eab7285d6dc909f1f9b2dd73906104e510031cf3b1493636c7f0120f211c8f92783ada3be4c57f0f58 - languageName: node - linkType: hard - -"ts-log@npm:^2.2.3": - version: 2.2.5 - resolution: "ts-log@npm:2.2.5" - checksum: 8c0/bbc45faa97d47238b896e85e9e0fc12e3d2d72b56755fba305290489532319c83bae82e282b92a5469f432f2dfa365da7ee0469d6d528ce04cd9dd75d4e2a147 - languageName: node - linkType: hard - -"ts-morph@npm:15.1.0": - version: 15.1.0 - resolution: "ts-morph@npm:15.1.0" - dependencies: - "@ts-morph/common": "npm:~0.16.0" - code-block-writer: "npm:^11.0.0" - checksum: 8c0/ef72fe65e5837afb49f11a67f98922687c92653a3391a258448d36b2d2a16d82487a8de93c0e61f7f79151539f2b6e46fa1ef8cb17f1e1bc9317f3d6819c0655 - languageName: node - linkType: hard - -"ts-morph@npm:^10.0.2": - version: 10.1.0 - resolution: "ts-morph@npm:10.1.0" - dependencies: - "@ts-morph/common": "npm:~0.9.2" - code-block-writer: "npm:^10.1.1" - checksum: 8c0/283d943b8606050e742de91ed572545994b96d57f8e34d6ff0a37f5db3d65f22da251b3cf52ff555a8da1164bebb67be6a29f9de4f869d5e7f8f5c0bead9bcd8 - languageName: node - linkType: hard - -"ts-morph@npm:^18.0.0": - version: 18.0.0 - resolution: "ts-morph@npm:18.0.0" - dependencies: - "@ts-morph/common": "npm:~0.19.0" - code-block-writer: "npm:^12.0.0" - checksum: 8c0/6ea3259bf46a786eb446f75586aaa3a23715529889069e28e7bbd57e85e21585097559ec5b94e1b99cd6e6e9097d644d71e4a1e3274499f46b1cafd6a009b534 - languageName: node - linkType: hard - -"ts-node@npm:10.9.1": - version: 10.9.1 - resolution: "ts-node@npm:10.9.1" - dependencies: - "@cspotcode/source-map-support": "npm:^0.8.0" - "@tsconfig/node10": "npm:^1.0.7" - "@tsconfig/node12": "npm:^1.0.7" - "@tsconfig/node14": "npm:^1.0.0" - "@tsconfig/node16": "npm:^1.0.2" - acorn: "npm:^8.4.1" - acorn-walk: "npm:^8.1.1" - arg: "npm:^4.1.0" - create-require: "npm:^1.1.0" - diff: "npm:^4.0.1" - make-error: "npm:^1.1.1" - v8-compile-cache-lib: "npm:^3.0.1" - yn: "npm:3.1.1" - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - 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 - checksum: 8c0/95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d - languageName: node - linkType: hard - -"ts-pnp@npm:^1.1.6": - version: 1.2.0 - resolution: "ts-pnp@npm:1.2.0" - peerDependenciesMeta: - typescript: - optional: true - checksum: 8c0/ff32b4f810f9d99f676d70fe2c0e327cb6c812214bd4fc7135870b039f9e85a85b2c20f8fe030d9bd36e9598a12faa391f10aecb95df624b92f1af6bd47dc397 - languageName: node - linkType: hard - -"ts-toolbelt@npm:9.6.0": - version: 9.6.0 - resolution: "ts-toolbelt@npm:9.6.0" - checksum: 8c0/838f9a2f0fe881d5065257a23b402c41315b33ff987b73db3e2b39fcb70640c4c7220e1ef118ed5676763543724fdbf4eda7b0e2c17acb667ed1401336af9f8c - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.12.0": - version: 3.12.0 - resolution: "tsconfig-paths@npm:3.12.0" - dependencies: - "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.1" - minimist: "npm:^1.2.0" - strip-bom: "npm:^3.0.0" - checksum: 8c0/3e3ccdd48868cd6e9ba2ebbd0ca9bc316cc50953490f23a0469c04fac22d9a33c0812e5102c9fdb22aab1fbca809bd1a34fe65b2c41f68e2688bc487f7928518 - languageName: node - linkType: hard - -"tsconfig-paths@npm:^3.14.2": - version: 3.15.0 - resolution: "tsconfig-paths@npm:3.15.0" - dependencies: - "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 - languageName: node - linkType: hard - -"tslib@npm:^1.10.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.2, tslib@npm:^1.9.3": - version: 1.14.1 - resolution: "tslib@npm:1.14.1" - checksum: 8c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 - languageName: node - linkType: hard - -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:~2.2.0": - version: 2.2.0 - resolution: "tslib@npm:2.2.0" - checksum: 8c0/62c705c4d73bcafa3e191df21ed8f024497b61f0e97c3f3e864ae51bcc98d31b830f73ab94b12f7c0dbd2e8f26af759cb521dd61ae88793f0f2abc32b43599a3 - languageName: node - linkType: hard - -"tslib@npm:^2.3.0": - version: 2.3.1 - resolution: "tslib@npm:2.3.1" - checksum: 8c0/4efd888895bdb3b987086b2b7793ad1013566f882b0eb7a328384e5ecc0d71cafb16bbeab3196200cbf7f01a73ccc25acc2f131d4ea6ee959be7436a8a306482 - languageName: node - linkType: hard - -"tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:~2.5.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: 8c0/e32fc99cc730dd514e53c44e668d76016e738f0bcc726aad5dbd2d335cf19b87a95a9b1e4f0a9993e370f1d702b5e471cdd4acabcac428a3099d496b9af2021e - languageName: node - linkType: hard - -"tslib@npm:^2.5.2": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 8c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb - languageName: node - linkType: hard - -"tslib@npm:~2.0.1": - version: 2.0.3 - resolution: "tslib@npm:2.0.3" - checksum: 8c0/57d9f8e71a768c37a70fcabbb76d686b31773329200db7135faff905818038c742191a0c3791e452ae738d057522c6151d34beddc8e4d0d897f28df84e55a0c0 - languageName: node - linkType: hard - -"tslib@npm:~2.4.0": - version: 2.4.1 - resolution: "tslib@npm:2.4.1" - checksum: 8c0/9ac0e4fd1033861f0b4f0d848dc3009ebcc3aa4757a06e8602a2d8a7aed252810e3540e54e70709f06c0f95311faa8584f769bcbede48aff785eb7e4d399b9ec - languageName: node - linkType: hard - -"tstyche@npm:1.0.0-beta.3": - version: 1.0.0-beta.3 - resolution: "tstyche@npm:1.0.0-beta.3" - peerDependencies: - typescript: 4.x || 5.x - peerDependenciesMeta: - typescript: - optional: true - bin: - tstyche: build/bin.js - checksum: 8db6acde30b8905c891c3854837340e7bbfee20e79e6eae2e674e1e966737f8c79079325c330b51b922f3157a3fcb26da0005032a45ade302f20b1d3e3ccfd37 - languageName: node - linkType: hard - -"tsutils@npm:^3.21.0": - version: 3.21.0 - resolution: "tsutils@npm:3.21.0" - dependencies: - tslib: "npm:^1.8.1" - 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" - checksum: 8c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 - languageName: node - linkType: hard - -"tsx@npm:4.6.2": - version: 4.6.2 - resolution: "tsx@npm:4.6.2" - dependencies: - esbuild: "npm:~0.18.20" - fsevents: "npm:~2.3.3" - get-tsconfig: "npm:^4.7.2" - dependenciesMeta: - fsevents: - optional: true - bin: - tsx: dist/cli.mjs - checksum: df47757e1df80bdd425be220636d4ba1da1e512dc14837573576a4d68cf93e36626862f69085ac29b04c127a74e0084939be1f15189a12e26480131176693d61 - languageName: node - linkType: hard - -"tty-browserify@npm:0.0.0": - version: 0.0.0 - resolution: "tty-browserify@npm:0.0.0" - checksum: 8c0/c0c68206565f1372e924d5cdeeff1a0d9cc729833f1da98c03d78be8f939e5f61a107bd0ab77d1ef6a47d62bb0e48b1081fbea273acf404959e22fd3891439c5 - languageName: node - linkType: hard - -"type-check@npm:^0.4.0, type-check@npm:~0.4.0": - version: 0.4.0 - resolution: "type-check@npm:0.4.0" - dependencies: - prelude-ls: "npm:^1.2.1" - checksum: 8c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 - languageName: node - linkType: hard - -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: "npm:~1.1.2" - checksum: 8c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 - languageName: node - linkType: hard - -"type-detect@npm:4.0.8": - version: 4.0.8 - resolution: "type-detect@npm:4.0.8" - checksum: 8c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd - languageName: node - linkType: hard - -"type-fest@npm:^0.16.0": - version: 0.16.0 - resolution: "type-fest@npm:0.16.0" - checksum: 8c0/6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 - languageName: node - linkType: hard - -"type-fest@npm:^0.20.2": - version: 0.20.2 - resolution: "type-fest@npm:0.20.2" - checksum: 8c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: 8c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 - languageName: node - linkType: hard - -"type-fest@npm:^0.6.0": - version: 0.6.0 - resolution: "type-fest@npm:0.6.0" - checksum: 8c0/0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 - languageName: node - linkType: hard - -"type-fest@npm:^0.8.0, type-fest@npm:^0.8.1": - version: 0.8.1 - resolution: "type-fest@npm:0.8.1" - checksum: 8c0/dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 - languageName: node - linkType: hard - -"type-fest@npm:^1.0.2": - version: 1.4.0 - resolution: "type-fest@npm:1.4.0" - checksum: 8c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 - languageName: node - linkType: hard - -"type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: 8c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb - languageName: node - linkType: hard - -"type-fest@npm:^3.0.0": - version: 3.5.4 - resolution: "type-fest@npm:3.5.4" - checksum: 8c0/ef34bd0f9881049d49b5eb3a3eb18362136cb1cea97cab625e8a14465cbe19cd355970126094355ff2b2b84eb860473789580fb1ae75b3babfafeacbd164ae7f - languageName: node - linkType: hard - -"type-is@npm:~1.6.17, type-is@npm:~1.6.18": - version: 1.6.18 - resolution: "type-is@npm:1.6.18" - dependencies: - media-typer: "npm:0.3.0" - mime-types: "npm:~2.1.24" - checksum: 8c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-buffer@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - is-typed-array: "npm:^1.1.10" - checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-length@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - has-proto: "npm:^1.0.1" - is-typed-array: "npm:^1.1.10" - checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-offset@npm:1.0.0" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - has-proto: "npm:^1.0.1" - is-typed-array: "npm:^1.1.10" - checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 - languageName: node - linkType: hard - -"typed-array-length@npm:^1.0.4": - version: 1.0.4 - resolution: "typed-array-length@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - is-typed-array: "npm:^1.1.9" - checksum: 8c0/c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 - languageName: node - linkType: hard - -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: "npm:^1.0.0" - checksum: 8c0/4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 - languageName: node - linkType: hard - -"typedarray@npm:^0.0.6": - version: 0.0.6 - resolution: "typedarray@npm:0.0.6" - checksum: 8c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 - languageName: node - linkType: hard - -"typescript@npm:5.3.3": - version: 5.3.3 - resolution: "typescript@npm:5.3.3" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f - languageName: node - linkType: hard - -"typescript@npm:^4.2.4": - version: 4.5.5 - resolution: "typescript@npm:4.5.5" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 8c0/ac15b92f3dcd9a4233cab288a913ccbd96729fc488181396fa93c0297ccef3cd3c2f9a7a63340efb0d07bff3d5026028fc81b9c1ef08076029e057081eb5884b - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A5.3.3#optional!builtin": - version: 5.3.3 - resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin::version=5.3.3&hash=e012d7" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 - languageName: node - linkType: hard - -"typescript@patch:typescript@npm%3A^4.2.4#optional!builtin": - version: 4.5.5 - resolution: "typescript@patch:typescript@npm%3A4.5.5#optional!builtin::version=4.5.5&hash=bcec9a" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: e7c8f7eb15922501b9c453724f243feee42fe07403e7fdcc83b293a70e88b85cd60cf3faf40d49134573d2323b8b3a3238f3def4b11218dd06227b893dfc903d - languageName: node - linkType: hard - -"ua-parser-js@npm:^0.7.30": - version: 0.7.33 - resolution: "ua-parser-js@npm:0.7.33" - checksum: 8c0/d58bf54c91e3e80e6e086b6215fa15266791e23e6e403039179c020129940168634a5b931f65ce70c6550b05d0d62c7c944bf7378b6b42133cd4a7ccb07f1948 - languageName: node - linkType: hard - -"uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": - version: 1.0.6 - resolution: "uc.micro@npm:1.0.6" - checksum: 9bde2afc6f2e24b899db6caea47dae778b88862ca76688d844ef6e6121dec0679c152893a74a6cfbd2e6fde34654e6bd8424fee8e0166cdfa6c9ae5d42b8a17b - languageName: node - linkType: hard - -"uglify-js@npm:^3.1.4": - version: 3.15.1 - resolution: "uglify-js@npm:3.15.1" - bin: - uglifyjs: bin/uglifyjs - checksum: 8c0/99b7d059d70918fb2c76081962c0707799e7ca909c7fe058706605f69ddc0bf1ed4597334a517dcca65e78110c0a1614e9feb1e55a27dec3e1a29671347f0b94 - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.1": - version: 1.0.1 - resolution: "unbox-primitive@npm:1.0.1" - dependencies: - function-bind: "npm:^1.1.1" - has-bigints: "npm:^1.0.1" - has-symbols: "npm:^1.0.2" - which-boxed-primitive: "npm:^1.0.2" - checksum: 8c0/6f0b91b0744c6f9fd05afa70484914b70686596be628543a143fab018733f902ff39fad2c3cf8f00fd5d32ba8bce8edf9cf61cee940c1af892316e112b25812b - languageName: node - linkType: hard - -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 8c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 - languageName: node - linkType: hard - -"unc-path-regex@npm:^0.1.2": - version: 0.1.2 - resolution: "unc-path-regex@npm:0.1.2" - checksum: 8c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 - languageName: node - linkType: hard - -"undefsafe@npm:^2.0.5": - version: 2.0.5 - resolution: "undefsafe@npm:2.0.5" - checksum: 8c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 - languageName: node - linkType: hard - -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 - languageName: node - linkType: hard - -"undici@npm:3.3.6": - version: 3.3.6 - resolution: "undici@npm:3.3.6" - checksum: 8c0/8bb1b5d603b6d40c5c660c20571e25b1627994272dcc293d661e760c52b0ed8c334295cfc0823550585d1e4930c9dd563bf7a1d9f6fa006e85dda38fdda3cf5b - languageName: node - linkType: hard - -"undici@npm:^5.19.1": - version: 5.22.0 - resolution: "undici@npm:5.22.0" - dependencies: - busboy: "npm:^1.6.0" - checksum: 8c0/a9c1d5bdac6aa95fb623bd9bbba3f2c190556e5c03c7a5d904fbded257ca52de0cfcdfc921e4f8d82a349bacf6d6d2437e905fb9e14435a7347fd76f2303bf0a - languageName: node - linkType: hard - -"unfetch@npm:^4.2.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 8c0/a5c0a896a6f09f278b868075aea65652ad185db30e827cb7df45826fe5ab850124bf9c44c4dafca4bf0c55a0844b17031e8243467fcc38dd7a7d435007151f1b - languageName: node - linkType: hard - -"unherit@npm:^1.0.4": - version: 1.1.3 - resolution: "unherit@npm:1.1.3" - dependencies: - inherits: "npm:^2.0.0" - xtend: "npm:^4.0.0" - checksum: 8c0/f953b548e56ef347b14c0897484ff22187acfeeb599afe2994cfdbfaddffe8731b999029e243fd40966b597bdffd541f3b5a54254797b98aebb760bb39dd8456 - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^1.0.4": - version: 1.0.4 - resolution: "unicode-canonical-property-names-ecmascript@npm:1.0.4" - checksum: 8c0/68707d399303178b060953d38cca4c3502fadf7fd5e74b5bf2c2bec41a6a1db336228cc8ec53e2bca8badc17f4212d677c71934d9cd4ab6f5ec2e9a9ce0ae235 - languageName: node - linkType: hard - -"unicode-canonical-property-names-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 8c0/0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^1.0.4": - version: 1.0.4 - resolution: "unicode-match-property-ecmascript@npm:1.0.4" - dependencies: - unicode-canonical-property-names-ecmascript: "npm:^1.0.4" - unicode-property-aliases-ecmascript: "npm:^1.0.4" - checksum: 8c0/957103d97a501520dbe4f89ce8a1d8d5c1495bdfe72b706828e5c62643fcb9ccb4b4b85931d65d2f899aea5f04696e1dddaaa0114b866583d3966855272d1452 - languageName: node - linkType: hard - -"unicode-match-property-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-ecmascript@npm:2.0.0" - dependencies: - unicode-canonical-property-names-ecmascript: "npm:^2.0.0" - unicode-property-aliases-ecmascript: "npm:^2.0.0" - checksum: 8c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^1.2.0": - version: 1.2.0 - resolution: "unicode-match-property-value-ecmascript@npm:1.2.0" - checksum: 8c0/9a8758e1d96ba653309569eaf06673b2fdb77d8cb496eebc2008f392682d99d8e5f431373224cb48ce310f2fe8f1a817f52a748c571db98ffda80f734a99d61d - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.0.0" - checksum: 8c0/01de52b5ab875a695e0ff7b87671197e39dcca497ef3c11f1c04d958933352a91d56c280e3908a76a1a0468d37d0227e5450a7956073591ce157d52603b45953 - languageName: node - linkType: hard - -"unicode-match-property-value-ecmascript@npm:^2.1.0": - version: 2.1.0 - resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" - checksum: 8c0/f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^1.0.4": - version: 1.1.0 - resolution: "unicode-property-aliases-ecmascript@npm:1.1.0" - checksum: 8c0/a7b39fbd20d71efef87b742836ede19b16330a30ff5314a2371de6734b959546ce352eb5022eda79cc7a2213f46e218f94bd61be9506549f1f97f03f6372cf31 - languageName: node - linkType: hard - -"unicode-property-aliases-ecmascript@npm:^2.0.0": - version: 2.0.0 - resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" - checksum: 8c0/db7f7ae188ce1a59b133a2c97021aebe30acc18a55f41074d126dcce5ac9d789dbd3ce7947e391b23db27f969251037b6ae05871d036aaa6cc0a6510c429aa1c - languageName: node - linkType: hard - -"unified@npm:9.2.0": - version: 9.2.0 - resolution: "unified@npm:9.2.0" - dependencies: - bail: "npm:^1.0.0" - extend: "npm:^3.0.0" - is-buffer: "npm:^2.0.0" - is-plain-obj: "npm:^2.0.0" - trough: "npm:^1.0.0" - vfile: "npm:^4.0.0" - checksum: 8c0/53aedb794b0ada002b72593d74633f45742e3dfe771a8091c0f51b59119f74f3f1bba0a24c5d72a35629793f992cf9e1debf21aa4689dc718482ffec3a633623 - languageName: node - linkType: hard - -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: "npm:^3.1.0" - get-value: "npm:^2.0.6" - is-extendable: "npm:^0.1.1" - set-value: "npm:^2.0.1" - checksum: 8c0/8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592 - languageName: node - linkType: hard - -"uniq@npm:^1.0.1": - version: 1.0.1 - resolution: "uniq@npm:1.0.1" - checksum: 8c0/369dca4a07fdd8de9e48378b9d4b6861722ca71d5f496e91687916bd4b48b8cf3d6db1677be1b40eea63bc6d4728efb4b4e0bd7a89c5fd2d23e7a2cff8009c7a - languageName: node - linkType: hard - -"uniqs@npm:^2.0.0": - version: 2.0.0 - resolution: "uniqs@npm:2.0.0" - checksum: 8c0/f244b158f6b3d30ddea2092c581fe9eb746d6db889a859fd0001e4b7566767bfcc53cdf11e6286f097bb130ebad71025709f41f2e4dd38e5c2f03ec28052baab - languageName: node - linkType: hard - -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: "npm:^2.0.0" - checksum: 8c0/d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 - languageName: node - linkType: hard - -"unique-filename@npm:^2.0.0": - version: 2.0.1 - resolution: "unique-filename@npm:2.0.1" - dependencies: - unique-slug: "npm:^3.0.0" - checksum: 8c0/55d95cd670c4a86117ebc34d394936d712d43b56db6bc511f9ca00f666373818bf9f075fb0ab76bcbfaf134592ef26bb75aad20786c1ff1ceba4457eaba90fb8 - languageName: node - linkType: hard - -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 8c0/9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 - languageName: node - linkType: hard - -"unique-slug@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-slug@npm:3.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 8c0/617240eb921af803b47d322d75a71a363dacf2e56c29ae5d1404fad85f64f4ec81ef10ee4fd79215d0202cbe1e5a653edb0558d59c9c81d3bd538c2d58e4c026 - languageName: node - linkType: hard - -"unique-string@npm:^1.0.0": - version: 1.0.0 - resolution: "unique-string@npm:1.0.0" - dependencies: - crypto-random-string: "npm:^1.0.0" - checksum: 8c0/79cc2a6515a51e6350c74f65c92246511966c47528f1119318cbe8d68a508842f4e5a2a81857a65f3919629397a525f820505116dd89cac425294598e35ca12c - languageName: node - linkType: hard - -"unique-string@npm:^2.0.0": - version: 2.0.0 - resolution: "unique-string@npm:2.0.0" - dependencies: - crypto-random-string: "npm:^2.0.0" - checksum: 8c0/11820db0a4ba069d174bedfa96c588fc2c96b083066fafa186851e563951d0de78181ac79c744c1ed28b51f9d82ac5b8196ff3e4560d0178046ef455d8c2244b - languageName: node - linkType: hard - -"unist-builder@npm:2.0.3, unist-builder@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-builder@npm:2.0.3" - checksum: 8c0/d8b13ffd774bfe6175ca988d63cbaf6d85882a0701d6158597134ce1c3acf665a09421461a4036704f77edb8a6a2792d09eb55382428c2a9a60488b44909eeae - languageName: node - linkType: hard - -"unist-util-generated@npm:^1.0.0": - version: 1.1.6 - resolution: "unist-util-generated@npm:1.1.6" - checksum: 8c0/ee04a58a6711145ec5c8c6f10dfd3335ac93d9039dc35e7410ffc1299d6f3671b27d9b7aa486f826bd66ec15807ad6d0bf9348b34a1046440e1617abcf42903f - languageName: node - linkType: hard - -"unist-util-is@npm:^4.0.0": - version: 4.1.0 - resolution: "unist-util-is@npm:4.1.0" - checksum: 8c0/21ca3d7bacc88853b880b19cb1b133a056c501617d7f9b8cce969cd8b430ed7e1bc416a3a11b02540d5de6fb86807e169d00596108a459d034cf5faec97c055e - languageName: node - linkType: hard - -"unist-util-position@npm:^3.0.0": - version: 3.1.0 - resolution: "unist-util-position@npm:3.1.0" - checksum: 8c0/a89d4095560f01e0ddfdab3deae6abd250ee6b91c3b23922de05297227a4aede076d96cb0e22e9962d0e85f54d11f719d1e11388233d0936631b8527485a02a8 - languageName: node - linkType: hard - -"unist-util-remove-position@npm:^2.0.0": - version: 2.0.1 - resolution: "unist-util-remove-position@npm:2.0.1" - dependencies: - unist-util-visit: "npm:^2.0.0" - checksum: 8c0/9aadc8e9fafc4eeb04462454ab084184b84b397a367cab3787c59411b16c8f03d13e80e9ffd6bdae68bf8e5175f42008f410288a041a6ee53bcac8ced45a12ed - languageName: node - linkType: hard - -"unist-util-remove@npm:^2.0.0": - version: 2.1.0 - resolution: "unist-util-remove@npm:2.1.0" - dependencies: - unist-util-is: "npm:^4.0.0" - checksum: 8c0/f7dea56fb720ddab5e406af12ce37453b028273e23a7cc3e4c9f3f1ec85e1f72c6943a1ebb907120c9be0b1d08b209d7b8c7d2191a5012e16081056edf638df9 - languageName: node - linkType: hard - -"unist-util-stringify-position@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-util-stringify-position@npm:2.0.3" - dependencies: - "@types/unist": "npm:^2.0.2" - checksum: 8c0/46fa03f840df173b7f032cbfffdb502fb05b79b3fb5451681c796cf4985d9087a537833f5afb75d55e79b46bbbe4b3d81dd75a1062f9289091c526aebe201d5d - languageName: node - linkType: hard - -"unist-util-visit-parents@npm:^3.0.0": - version: 3.1.1 - resolution: "unist-util-visit-parents@npm:3.1.1" - dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-is: "npm:^4.0.0" - checksum: 8c0/231c80c5ba8e79263956fcaa25ed2a11ad7fe77ac5ba0d322e9d51bbc4238501e3bb52f405e518bcdc5471e27b33eff520db0aa4a3b1feb9fb6e2de6ae385d49 - languageName: node - linkType: hard - -"unist-util-visit@npm:2.0.3, unist-util-visit@npm:^2.0.0": - version: 2.0.3 - resolution: "unist-util-visit@npm:2.0.3" - dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-is: "npm:^4.0.0" - unist-util-visit-parents: "npm:^3.0.0" - checksum: 8c0/7b11303d82271ca53a2ced2d56c87a689dd518596c99ff4a11cdff750f5cc5c0e4b64b146bd2363557cb29443c98713bfd1e8dc6d1c3f9d474b9eb1f23a60888 - languageName: node - linkType: hard - -"universalify@npm:^0.1.2": - version: 0.1.2 - resolution: "universalify@npm:0.1.2" - checksum: 8c0/e70e0339f6b36f34c9816f6bf9662372bd241714dc77508d231d08386d94f2c4aa1ba1318614f92015f40d45aae1b9075cd30bd490efbe39387b60a76ca3f045 - languageName: node - linkType: hard - -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: 8c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 8c0/07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 - languageName: node - linkType: hard - -"unixify@npm:^1.0.0": - version: 1.0.0 - resolution: "unixify@npm:1.0.0" - dependencies: - normalize-path: "npm:^2.1.1" - checksum: 8c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e - languageName: node - linkType: hard - -"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": - version: 1.0.0 - resolution: "unpipe@npm:1.0.0" - checksum: 8c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c - languageName: node - linkType: hard - -"unquote@npm:~1.1.1": - version: 1.1.1 - resolution: "unquote@npm:1.1.1" - checksum: 8c0/de59fb48cbaadc636002c6563dcb6b1bce95c91ebecb92addbc9bb47982cb03e7d8a8371c9617267b9e5746bbcb4403394139bc1310106b9ac4c26790ed57859 - languageName: node - linkType: hard - -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: "npm:^0.3.1" - isobject: "npm:^3.0.0" - checksum: 8c0/68a796dde4a373afdbf017de64f08490a3573ebee549136da0b3a2245299e7f65f647ef70dc13c4ac7f47b12fba4de1646fa0967a365638578fedce02b9c0b1f - languageName: node - linkType: hard - -"untildify@npm:4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 8c0/d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a - languageName: node - linkType: hard - -"upath@npm:^1.1.1": - version: 1.2.0 - resolution: "upath@npm:1.2.0" - checksum: 8c0/3746f24099bf69dbf8234cecb671e1016e1f6b26bd306de4ff8966fb0bc463fa1014ffc48646b375de1ab573660e3a0256f6f2a87218b2dfa1779a84ef6992fa - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.10": - version: 1.0.10 - resolution: "update-browserslist-db@npm:1.0.10" - dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - browserslist-lint: cli.js - checksum: 8c0/e6fa55b515a674cc3b6c045d1f37f72780ddbbbb48b3094391fb2e43357b859ca5cee4c7d3055fd654d442ef032777d0972494a9a2e6c30d3660ee57b7138ae9 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.11": - version: 1.0.11 - resolution: "update-browserslist-db@npm:1.0.11" - dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 8c0/280d5cf92e302d8de0c12ef840a6af26ec024a5158aa2020975cd01bf0ded09c709793a6f421e6d0f1a47557d6a1a10dc43af80f9c30b8fd0df9691eb98c1c69 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" - dependencies: - escalade: "npm:^3.1.1" - picocolors: "npm:^1.0.0" - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 - languageName: node - linkType: hard - -"upper-case-first@npm:^2.0.2": - version: 2.0.2 - resolution: "upper-case-first@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 - languageName: node - linkType: hard - -"upper-case@npm:^2.0.2": - version: 2.0.2 - resolution: "upper-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 8c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 - languageName: node - linkType: hard - -"uri-js@npm:^4.2.2": - version: 4.4.1 - resolution: "uri-js@npm:4.4.1" - dependencies: - punycode: "npm:^2.1.0" - checksum: 8c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c - languageName: node - linkType: hard - -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 8c0/264f1b29360c33c0aec5fb9819d7e28f15d1a3b83175d2bcc9131efe8583f459f07364957ae3527f1478659ec5b2d0f1ad401dfb625f73e4d424b3ae35fc5fc0 - languageName: node - linkType: hard - -"url-loader@npm:4.1.0": - version: 4.1.0 - resolution: "url-loader@npm:4.1.0" - dependencies: - loader-utils: "npm:^2.0.0" - mime-types: "npm:^2.1.26" - schema-utils: "npm:^2.6.5" - peerDependencies: - file-loader: "*" - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - checksum: 8c0/541ac9c59754e4fe782fd631c0f8f9715ffe8c7a5fb3c5c789dab3a564b709c30442d6e50e20b729e23524eb9eb53aa020bb9ce17f910dd772af2224223f0968 - languageName: node - linkType: hard - -"url-loader@npm:4.1.1, url-loader@npm:^4.1.1": - version: 4.1.1 - resolution: "url-loader@npm:4.1.1" - dependencies: - loader-utils: "npm:^2.0.0" - mime-types: "npm:^2.1.27" - schema-utils: "npm:^3.0.0" - peerDependencies: - file-loader: "*" - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - file-loader: - optional: true - checksum: 8c0/71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 - languageName: node - linkType: hard - -"url-parse-lax@npm:^3.0.0": - version: 3.0.0 - resolution: "url-parse-lax@npm:3.0.0" - dependencies: - prepend-http: "npm:^2.0.0" - checksum: 8c0/16f918634d41a4fab9e03c5f9702968c9930f7c29aa1a8c19a6dc01f97d02d9b700ab9f47f8da0b9ace6e0c0e99c27848994de1465b494bced6940c653481e55 - languageName: node - linkType: hard - -"url-parse@npm:^1.4.3, url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: "npm:^2.1.1" - requires-port: "npm:^1.0.0" - checksum: 8c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 - languageName: node - linkType: hard - -"url@npm:0.10.3": - version: 0.10.3 - resolution: "url@npm:0.10.3" - dependencies: - punycode: "npm:1.3.2" - querystring: "npm:0.2.0" - checksum: 8c0/f0a1c7d99ac35dd68a8962bc7b3dd38f08d457387fc686f0669ff881b00a68eabd9cb3aded09dfbe25401d7b632fc4a9c074cb373f6a4bd1d8b5324d1d442a0d - languageName: node - linkType: hard - -"url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" - dependencies: - punycode: "npm:1.3.2" - querystring: "npm:0.2.0" - checksum: 8c0/bbe05f9f570ec5c06421c50ca63f287e61279092eed0891db69a9619323703ccd3987e6eed234c468794cf25680c599680d5c1f58d26090f1956c8e9ed8346a2 - languageName: node - linkType: hard - -"urlpattern-polyfill@npm:^6.0.2": - version: 6.0.2 - resolution: "urlpattern-polyfill@npm:6.0.2" - dependencies: - braces: "npm:^3.0.2" - checksum: 8c0/28301775a23ae371ea02798d4a94d65ee894cdab4ede0d2b82f8d3642804febeb145900c1bce65d1d075ed942ac2ee58c193f3f6b2498f274a06e407cba5e019 - languageName: node - linkType: hard - -"urlpattern-polyfill@npm:^8.0.0": - version: 8.0.2 - resolution: "urlpattern-polyfill@npm:8.0.2" - checksum: 8c0/5388bbe8459dbd8861ee7cb97904be915dd863a9789c2191c528056f16adad7836ec22762ed002fed44e8995d0f98bdfb75a606466b77233e70d0f61b969aaf9 - languageName: node - linkType: hard - -"urlpattern-polyfill@npm:^9.0.0": - version: 9.0.0 - resolution: "urlpattern-polyfill@npm:9.0.0" - checksum: 8c0/1fecb4a7695ad7917b02193896ec7b5773bb730ee3fbbb583cfaf134cc99da054c18560a35e7e901ad4e2f7a6035b6754313a2bb84126a7f118201427d465185 - languageName: node - linkType: hard - -"use-callback-ref@npm:^1.3.0": - version: 1.3.1 - resolution: "use-callback-ref@npm:1.3.1" - dependencies: - tslib: "npm:^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 - checksum: 6666cd62e13053d03e453b5199037cb8f6475a8f55afd664ff488bd8f2ee2ede4da3b220dd7e60f5ecd4926133364fbf4b1aed463eeb8203e7c5be3b1533b59b - languageName: node - linkType: hard - -"use-composed-ref@npm:^1.0.0": - version: 1.1.0 - resolution: "use-composed-ref@npm:1.1.0" - dependencies: - ts-essentials: "npm:^2.0.3" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - checksum: 8c0/e1a82bf4f1295c3c09b46ce65ce651ecfd6686cf7283880b0c62596145cf0166f0d98a853c1e0dce679b49c2ec11d5ae6c22df966998db183a6c1c2b9c77f5b4 - languageName: node - linkType: hard - -"use-isomorphic-layout-effect@npm:^1.0.0": - version: 1.1.1 - resolution: "use-isomorphic-layout-effect@npm:1.1.1" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 8c0/eaf2766a10b837f5d6bc5b34906349217bf612eb9623624edead75d436169d625d34eec131d15adf40a22180c17d6c3374dcdb82097bc7105710143aa69e12a4 - languageName: node - linkType: hard - -"use-latest@npm:^1.0.0": - version: 1.2.0 - resolution: "use-latest@npm:1.2.0" - dependencies: - use-isomorphic-layout-effect: "npm:^1.0.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 8c0/c2e60f8efa4ea90972b7879e3d6acebef23695f7eeb0d7ca82c1e44f142d701d8b71580f742555ddde2af1b90d071c407c02cc7175529beed137cc138b6e793c - languageName: node - linkType: hard - -"use-sidecar@npm:^1.1.2": - version: 1.1.2 - resolution: "use-sidecar@npm:1.1.2" - dependencies: - detect-node-es: "npm:^1.1.0" - tslib: "npm:^2.0.0" - 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 - checksum: 89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 - languageName: node - linkType: hard - -"use-url-search-params@npm:2.5.1": - version: 2.5.1 - resolution: "use-url-search-params@npm:2.5.1" - peerDependencies: - react: "*" - checksum: a4b88944f9aa0f56c4e556ddf80c047a1568604dc160bf1ce6c31a02623d07a17927753aeb95d9c403097c9ecc01cad114f0c1b74aedb744cfd8075e26f068b8 - languageName: node - linkType: hard - -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 8c0/75b48673ab80d5139c76922630d5a8a44e72ed58dbaf54dee1b88352d10e1c1c1fc332066c782d8ae9a56503b85d3dc67ff6d2ffbd9821120466d1280ebb6d6e - languageName: node - linkType: hard - -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": - version: 1.0.2 - resolution: "util-deprecate@npm:1.0.2" - checksum: 8c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 - languageName: node - linkType: hard - -"util.promisify@npm:1.0.0": - version: 1.0.0 - resolution: "util.promisify@npm:1.0.0" - dependencies: - define-properties: "npm:^1.1.2" - object.getownpropertydescriptors: "npm:^2.0.3" - checksum: 8c0/af9df9d111b1464586e4fa414ccf6de61c3a14c0664a66a497438a0507d47f65389f5e025c048ef7e2bf6dba73e95adc3d0c56111a0952ae0282817fc4dd83b2 - languageName: node - linkType: hard - -"util.promisify@npm:^1.0.0": - version: 1.1.1 - resolution: "util.promisify@npm:1.1.1" - dependencies: - call-bind: "npm:^1.0.0" - define-properties: "npm:^1.1.3" - for-each: "npm:^0.3.3" - has-symbols: "npm:^1.0.1" - object.getownpropertydescriptors: "npm:^2.1.1" - checksum: 8c0/aacccbf770c667430ca3b7fce9a2a04a80fcd1f9f4de5507ea54cc3bbbcdcd33cbd2501ac23d1c477c5c40817234f6068b89cf7792f0610fe6e7df7ac0fe83ce - languageName: node - linkType: hard - -"util.promisify@npm:~1.0.0": - version: 1.0.1 - resolution: "util.promisify@npm:1.0.1" - dependencies: - define-properties: "npm:^1.1.3" - es-abstract: "npm:^1.17.2" - has-symbols: "npm:^1.0.1" - object.getownpropertydescriptors: "npm:^2.1.0" - checksum: 8c0/d72b7c1344816bc9c8713efbf5cb23b536730a8fb7df9ae50654d9efa4d24241fc5ecc69a7dc63b9a2f98cabc9635c303923671933f8c6f41fa7d64fe2188e27 - languageName: node - linkType: hard - -"util@npm:0.10.3": - version: 0.10.3 - resolution: "util@npm:0.10.3" - dependencies: - inherits: "npm:2.0.1" - checksum: 8c0/88bb58fec3b1f5f43dea27795f61f24b3b505bbba6f3ad6e91b32db0cd0928b2acb54ebe21603a75743c6e21a52f954cd2ffb6cddafed5a01169dd1287db3ff3 - languageName: node - linkType: hard - -"util@npm:^0.11.0": - version: 0.11.1 - resolution: "util@npm:0.11.1" - dependencies: - inherits: "npm:2.0.3" - checksum: 8c0/8e9d1a85e661c8a8d9883d821aedbff3f8d9c3accd85357020905386ada5653b20389fc3591901e2a0bde64f8dc86b28c3f990114aa5a38eaaf30b455fa3cdf6 - languageName: node - linkType: hard - -"util@npm:^0.12.0, util@npm:^0.12.3, util@npm:^0.12.4": - version: 0.12.5 - resolution: "util@npm:0.12.5" - dependencies: - inherits: "npm:^2.0.3" - is-arguments: "npm:^1.0.4" - is-generator-function: "npm:^1.0.7" - is-typed-array: "npm:^1.1.3" - which-typed-array: "npm:^1.1.2" - checksum: 8c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 - languageName: node - linkType: hard - -"utila@npm:~0.4": - version: 0.4.0 - resolution: "utila@npm:0.4.0" - checksum: 8c0/2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e - languageName: node - linkType: hard - -"utils-merge@npm:1.0.1": - version: 1.0.1 - resolution: "utils-merge@npm:1.0.1" - checksum: 8c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 - languageName: node - linkType: hard - -"uuid@npm:8.0.0": - version: 8.0.0 - resolution: "uuid@npm:8.0.0" - bin: - uuid: dist/bin/uuid - checksum: 8c0/e62301a1c6102da5ce9a147b492a4b5cfa14d2e8fdf4a6ebfda7929cb72d186f84173815ec18fa4160a03bf9724b16ece3737b3ac6701815bc965f8fa4279298 - languageName: node - linkType: hard - -"uuid@npm:8.3.2, uuid@npm:^8.0.0, uuid@npm:^8.3.0, uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 8c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 - languageName: node - linkType: hard - -"uuid@npm:9.0.1": - version: 9.0.1 - resolution: "uuid@npm:9.0.1" - bin: - uuid: dist/bin/uuid - checksum: 1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b - languageName: node - linkType: hard - -"uuid@npm:^3.1.0, uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 8c0/1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 - languageName: node - linkType: hard - -"v8-compile-cache-lib@npm:^3.0.1": - version: 3.0.1 - resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: 8c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 - languageName: node - linkType: hard - -"v8-compile-cache@npm:^2.0.3, v8-compile-cache@npm:^2.1.1": - version: 2.3.0 - resolution: "v8-compile-cache@npm:2.3.0" - checksum: 8c0/b2d866febf943fbbf0b5e8d43ae9a9b0dacd11dd76e6a9c8e8032268f0136f081e894a2723774ae2d86befa994be4d4046b0717d82df4f3a10e067994ad5c688 - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^7.0.0, v8-to-istanbul@npm:^7.1.0": - version: 7.1.2 - resolution: "v8-to-istanbul@npm:7.1.2" - dependencies: - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^1.6.0" - source-map: "npm:^0.7.3" - checksum: 8c0/a901917e3e321e2c74a9582cbe6652ff2b983040a683c924ce98fbccdfe249cbcb34d7d7913a13a7e4eee9bed3a51c7181b09103f4405d92f4ebac1cc40dc005 - languageName: node - linkType: hard - -"v8-to-istanbul@npm:^9.0.1": - version: 9.0.1 - resolution: "v8-to-istanbul@npm:9.0.1" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.12" - "@types/istanbul-lib-coverage": "npm:^2.0.1" - convert-source-map: "npm:^1.6.0" - checksum: 8c0/aaa6491ee0505010a818a98bd7abdb30c0136a93eac12106b836e1afb519759ea4da795cceaf7fe871d26ed6cb669e46fd48533d6f8107a23213d723a028f805 - languageName: node - linkType: hard - -"v8flags@npm:^3.1.1": - version: 3.2.0 - resolution: "v8flags@npm:3.2.0" - dependencies: - homedir-polyfill: "npm:^1.0.1" - checksum: 8c0/aa0149384c1b75eee60f9e4339dbcc891d5a2154f51dbe41feb35a2227e88c0f30701234676c47b7887414c6a95bce23783931eeed52126842b7ba3a75984da7 - languageName: node - linkType: hard - -"validate-npm-package-license@npm:^3.0.1": - version: 3.0.4 - resolution: "validate-npm-package-license@npm:3.0.4" - dependencies: - spdx-correct: "npm:^3.0.0" - spdx-expression-parse: "npm:^3.0.0" - checksum: 8c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f - languageName: node - linkType: hard - -"value-or-promise@npm:1.0.12, value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": - version: 1.0.12 - resolution: "value-or-promise@npm:1.0.12" - checksum: 8c0/b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262 - languageName: node - linkType: hard - -"value-or-promise@npm:1.0.6": - version: 1.0.6 - resolution: "value-or-promise@npm:1.0.6" - checksum: 8c0/6fb7f97932cc92d2573b5b80999614a369412a713f8e10ed055772316d02fd4f67d86e436e0959ee10923adc7f8a8d85745bdceb2a8b2901de2a5badb27c3e0f - languageName: node - linkType: hard - -"vary@npm:~1.1.2": - version: 1.1.2 - resolution: "vary@npm:1.1.2" - checksum: 8c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f - languageName: node - linkType: hard - -"vendors@npm:^1.0.0": - version: 1.0.4 - resolution: "vendors@npm:1.0.4" - checksum: 8c0/a9b097f3607013a23bf447cbaff85b79b694cc23b20e81a6aea1ea9e1c59854c93f7c87abcc71b57999e050606e499d9ce18df67968823644b20f6e03d56022a - languageName: node - linkType: hard - -"vfile-location@npm:^3.0.0, vfile-location@npm:^3.2.0": - version: 3.2.0 - resolution: "vfile-location@npm:3.2.0" - checksum: 8c0/d9513c738fcac26388f4ee04337663514434df718201309088377b53be3fdcfdb01a4a8f02f5a21ebf33690a670f31229e4c7c3991fb7af63f549fda3ec36836 - languageName: node - linkType: hard - -"vfile-message@npm:^2.0.0": - version: 2.0.4 - resolution: "vfile-message@npm:2.0.4" - dependencies: - "@types/unist": "npm:^2.0.0" - unist-util-stringify-position: "npm:^2.0.0" - checksum: 8c0/ce50d90e0e5dc8f995f39602dd2404f1756388a54209c983d259b17c15e6f262a53546977a638065bc487d0657799fa96f4c1ba6b2915d9724a4968e9c7ff1c8 - languageName: node - linkType: hard - -"vfile@npm:^4.0.0": - version: 4.2.1 - resolution: "vfile@npm:4.2.1" - dependencies: - "@types/unist": "npm:^2.0.0" - is-buffer: "npm:^2.0.0" - unist-util-stringify-position: "npm:^2.0.0" - vfile-message: "npm:^2.0.0" - checksum: 8c0/4816aecfedc794ba4d3131abff2032ef0e825632cfa8cd20dd9d83819ef260589924f4f3e8fa30e06da2d8e60d7ec8ef7d0af93e0483df62890738258daf098a - languageName: node - linkType: hard - -"victory-vendor@npm:^36.6.8": - version: 36.7.0 - resolution: "victory-vendor@npm:36.7.0" - dependencies: - "@types/d3-array": "npm:^3.0.3" - "@types/d3-ease": "npm:^3.0.0" - "@types/d3-interpolate": "npm:^3.0.1" - "@types/d3-scale": "npm:^4.0.2" - "@types/d3-shape": "npm:^3.1.0" - "@types/d3-time": "npm:^3.0.0" - "@types/d3-timer": "npm:^3.0.0" - d3-array: "npm:^3.1.6" - d3-ease: "npm:^3.0.1" - d3-interpolate: "npm:^3.0.1" - d3-scale: "npm:^4.0.2" - d3-shape: "npm:^3.1.0" - d3-time: "npm:^3.0.0" - d3-timer: "npm:^3.0.1" - checksum: 9afbcfe7d0c088ed1e8f0b9c7973c5fcc9ee4feb88c7e4962347a60beaf2b3bd27436c6fa25e9c49715f4f02d66f3c5557c1a47b81c9b0a653efd341fee0ce07 - languageName: node - linkType: hard - -"vite@npm:4.5.1": - version: 4.5.1 - resolution: "vite@npm:4.5.1" - dependencies: - esbuild: "npm:^0.18.10" - fsevents: "npm:~2.3.2" - postcss: "npm:^8.4.27" - rollup: "npm:^3.27.1" - peerDependencies: - "@types/node": ">= 14" - less: "*" - lightningcss: ^1.21.0 - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: 352a94b13f793e4bcbc424d680a32507343223eeda8917fde0f23c1fa1ba3db7c806dade8461ca5cfb270154ddb8895a219fdd4384519fe9b8e46d1cf491a890 - languageName: node - linkType: hard - -"vm-browserify@npm:^1.0.1": - version: 1.1.2 - resolution: "vm-browserify@npm:1.1.2" - checksum: 8c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b - languageName: node - linkType: hard - -"vscode-jsonrpc@npm:6.0.0": - version: 6.0.0 - resolution: "vscode-jsonrpc@npm:6.0.0" - checksum: 8c0/22c35873155a62e71c454ad71165683536361eaabc1f07af41cbfd83c4c3bbfe3b36b58faba2b059d8f20da61b645a8c687bdf449407196e0bdb0a080257ca69 - languageName: node - linkType: hard - -"vscode-languageserver-protocol@npm:^3.15.3": - version: 3.16.0 - resolution: "vscode-languageserver-protocol@npm:3.16.0" - dependencies: - vscode-jsonrpc: "npm:6.0.0" - vscode-languageserver-types: "npm:3.16.0" - checksum: 8c0/6a1ca737d826a710271b36d72c0833dfc8f78c68416725173892195d04b358ee8eb1095d5edfb7a62c7ea01128c762b9463ee8b6b1949efe060a43fe621ea62a - languageName: node - linkType: hard - -"vscode-languageserver-textdocument@npm:1.0.1": - version: 1.0.1 - resolution: "vscode-languageserver-textdocument@npm:1.0.1" - checksum: 8c0/171f513ecefd9ce30b8dde3566f0ffa6b7a211f0f351330c706b2ec4e9085eab16689ebe18de4dd4f5d1053a69e364cd4ee773709ef37356ed1d46e64ba83f14 - languageName: node - linkType: hard - -"vscode-languageserver-textdocument@npm:1.0.8": - version: 1.0.8 - resolution: "vscode-languageserver-textdocument@npm:1.0.8" - checksum: 8c0/2981b4d0935c47d76fda9d80840b71de414990a2976840106a462277a26002c7abe2453ab872a00861803cf62ed6b340c6ecbc7a3549788309e28096b73a4d52 - languageName: node - linkType: hard - -"vscode-languageserver-types@npm:3.15.1": - version: 3.15.1 - resolution: "vscode-languageserver-types@npm:3.15.1" - checksum: 8c0/27100ad94b080ce70c656eeb1074f627106a860a442173b796b375f443c848dc403913337684f52b552437748031e72d7229ba23416829ec457ebeb2fa85e3b8 - languageName: node - linkType: hard - -"vscode-languageserver-types@npm:3.16.0": - version: 3.16.0 - resolution: "vscode-languageserver-types@npm:3.16.0" - checksum: 8c0/cc1bd68a7fe94152849e434cfc6fd8471f5c17198057fc6c95814d4b1655ab2b76d577b5fcd0f1f2a5df0285f054c96b9698e6d33e8183846f152d6e7d3ecc97 - languageName: node - linkType: hard - -"vscode-languageserver-types@npm:3.17.3": - version: 3.17.3 - resolution: "vscode-languageserver-types@npm:3.17.3" - checksum: 8c0/a70d4ac0dbc08ba425b97e329e6a5696dabc6a264415bacb861e10d859b224f1b46d1fb41c17b6fdd31b32749d3bdfc819cb1b8a57dbe0d1e70e661ba8cfa397 - languageName: node - linkType: hard - -"vscode-languageserver-types@npm:^3.17.1": - version: 3.17.5 - resolution: "vscode-languageserver-types@npm:3.17.5" - checksum: 1e1260de79a2cc8de3e46f2e0182cdc94a7eddab487db5a3bd4ee716f67728e685852707d72c059721ce500447be9a46764a04f0611e94e4321ffa088eef36f8 - languageName: node - linkType: hard - -"vscode-languageserver@npm:6.1.1": - version: 6.1.1 - resolution: "vscode-languageserver@npm:6.1.1" - dependencies: - vscode-languageserver-protocol: "npm:^3.15.3" - bin: - installServerIntoExtension: ./bin/installServerIntoExtension - checksum: 8c0/90d7a6a3d3428a381d84a563299ebb59cec3f534ec78b76f6444f79da514380088b7bab2f2c428e15f071afa0b75aaf30a97e644f314e00753231870e8ead204 - languageName: node - linkType: hard - -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: "npm:^1.0.0" - checksum: 8c0/7795b61fb51ce222414891eef8e6cb13240b62f64351b4474f99c84de2bc37d37dd0efa193f37391e9737097b881a111d1e003e3d7a9583693f8d5a858b02627 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" - dependencies: - xml-name-validator: "npm:^3.0.0" - checksum: 8c0/92b8af34766f5bb8f37c505bc459ee1791b30af778d3a86551f7dd3b1716f79cb98c71d65d03f2bf6eba6b09861868eaf2be7e233b9202b26a9df7595f2bd290 - languageName: node - linkType: hard - -"w3c-xmlserializer@npm:^4.0.0": - version: 4.0.0 - resolution: "w3c-xmlserializer@npm:4.0.0" - dependencies: - xml-name-validator: "npm:^4.0.0" - checksum: 8c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 - languageName: node - linkType: hard - -"walker@npm:^1.0.7, walker@npm:~1.0.5": - version: 1.0.7 - resolution: "walker@npm:1.0.7" - dependencies: - makeerror: "npm:1.0.x" - checksum: 8c0/c726d584482985fc5bd96a87fec0c5b804c4badf5e7cafdeb736204390a7ed222bb5cdce9e2dace7655ea23f9c8efa96fdd3217d8f64f86c5d509d5fed865ab4 - languageName: node - linkType: hard - -"walker@npm:^1.0.8": - version: 1.0.8 - resolution: "walker@npm:1.0.8" - dependencies: - makeerror: "npm:1.0.12" - checksum: 8c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e - languageName: node - linkType: hard - -"warning@npm:^4.0.2": - version: 4.0.3 - resolution: "warning@npm:4.0.3" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 8c0/aebab445129f3e104c271f1637fa38e55eb25f968593e3825bd2f7a12bd58dc3738bb70dc8ec85826621d80b4acfed5a29ebc9da17397c6125864d72301b937e - languageName: node - linkType: hard - -"watchpack-chokidar2@npm:^2.0.1": - version: 2.0.1 - resolution: "watchpack-chokidar2@npm:2.0.1" - dependencies: - chokidar: "npm:^2.1.8" - checksum: 8c0/9b8d880ae2543dd4f26a69f6b7f881119494f6b772b7431027a06a5cf963e0ebc1cac91a3ef479365c358b693c65fa80a1f8297427fa11fd4c080c3d6408c372 - languageName: node - linkType: hard - -"watchpack@npm:^1.7.4": - version: 1.7.5 - resolution: "watchpack@npm:1.7.5" - dependencies: - chokidar: "npm:^3.4.1" - graceful-fs: "npm:^4.1.2" - neo-async: "npm:^2.5.0" - watchpack-chokidar2: "npm:^2.0.1" - dependenciesMeta: - chokidar: - optional: true - watchpack-chokidar2: - optional: true - checksum: 8c0/53e3b112064f5de9edbb2a14973fb3901d9697b24cc70f8531a143eaace2353a273ca25c0ba21def8d3803cfedb8f6861ca1e49e9782257e40d5b5f8f5365c86 - languageName: node - linkType: hard - -"watchpack@npm:^2.0.0-beta.10, watchpack@npm:^2.4.0": - version: 2.4.0 - resolution: "watchpack@npm:2.4.0" - dependencies: - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.1.2" - checksum: 8c0/c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 - languageName: node - linkType: hard - -"watchpack@npm:^2.2.0": - version: 2.3.1 - resolution: "watchpack@npm:2.3.1" - dependencies: - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.1.2" - checksum: 8c0/00e44f5cc6ca299dd1ff52bf926a70a23ae1aeb6b399b7e32569d6d31ef1fc9bc3f5570ade6fef220dd6d74ee70259c9621b79cf487552caf1ea2727aa40f984 - languageName: node - linkType: hard - -"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": - version: 1.7.3 - resolution: "wbuf@npm:1.7.3" - dependencies: - minimalistic-assert: "npm:^1.0.0" - checksum: 8c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 - languageName: node - linkType: hard - -"wcwidth@npm:^1.0.1": - version: 1.0.1 - resolution: "wcwidth@npm:1.0.1" - dependencies: - defaults: "npm:^1.0.3" - checksum: 8c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 - languageName: node - linkType: hard - -"web-encoding@npm:^1.1.5": - version: 1.1.5 - resolution: "web-encoding@npm:1.1.5" - dependencies: - "@zxing/text-encoding": "npm:0.9.0" - util: "npm:^0.12.3" - dependenciesMeta: - "@zxing/text-encoding": - optional: true - checksum: 8c0/59d5413338ec0894c690006f5d8508b0c88cae1d8c78606c3f326e351c672196461ed808b849fe08d0900fa56a61fcacb9ff576499068d2ead0a7bc04afa7d34 - languageName: node - linkType: hard - -"web-namespaces@npm:^1.0.0": - version: 1.1.4 - resolution: "web-namespaces@npm:1.1.4" - checksum: 8c0/05b5782c32a33ef94fa7a412afdebc9d0d3cc7b59db31d2cc7bd80de3e237d4b6309cb5f156d06e3a837b9826c9414448c25111ec1d4407d2025ffeb7bea4f62 - languageName: node - linkType: hard - -"web-streams-polyfill@npm:^3.2.1": - version: 3.2.1 - resolution: "web-streams-polyfill@npm:3.2.1" - checksum: 8c0/70ed6b5708e14afa2ab699221ea197d7c68ec0c8274bbe0181aecc5ba636ca27cbd383d2049f0eb9d529e738f5c088825502b317f3df24d18a278e4cc9a10e8b - languageName: node - linkType: hard - -"web@workspace:web": - version: 0.0.0-use.local - resolution: "web@workspace:web" - dependencies: - "@redwoodjs/router": "npm:0.32.2" - "@redwoodjs/web": "npm:0.32.2" - prop-types: "npm:^15.7.2" - react: "npm:^17.0.2" - react-dom: "npm:^17.0.2" - react-is: "npm:^16.8.0" - styled-components: "npm:^5.1.0" - languageName: unknown - linkType: soft - -"webcrypto-core@npm:^1.7.4": - version: 1.7.5 - resolution: "webcrypto-core@npm:1.7.5" - dependencies: - "@peculiar/asn1-schema": "npm:^2.1.6" - "@peculiar/json-schema": "npm:^1.1.12" - asn1js: "npm:^3.0.1" - pvtsutils: "npm:^1.3.2" - tslib: "npm:^2.4.0" - checksum: 8c0/2578f4a1efe76e918d0e7dfe2bd1c2aa3bc92304e8fefebfc952cdb4bb47e15f877232bed3ca8105d451abdc4be3db9644b6365097ead5c6b840f2c5f84dc73d - languageName: node - linkType: hard - -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: 8c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db - languageName: node - linkType: hard - -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: 8c0/bf31df332ed11e1114bfcae7712d9ab2c37e7faa60ba32d8fdbee785937c0b012eee235c19d2b5d84f5072db84a160e8d08dd382da7f850feec26a4f46add8ff - languageName: node - linkType: hard - -"webidl-conversions@npm:^6.1.0": - version: 6.1.0 - resolution: "webidl-conversions@npm:6.1.0" - checksum: 8c0/66ad3b9073cd1e0e173444d8c636673b016e25b5856694429072cc966229adb734a8d410188e031effadcfb837936d79bc9e87c48f4d5925a90d42dec97f6590 - languageName: node - linkType: hard - -"webidl-conversions@npm:^7.0.0": - version: 7.0.0 - resolution: "webidl-conversions@npm:7.0.0" - checksum: 8c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 - languageName: node - linkType: hard - -"webpack-bundle-analyzer@npm:4.9.1": - version: 4.9.1 - resolution: "webpack-bundle-analyzer@npm:4.9.1" - dependencies: - "@discoveryjs/json-ext": "npm:0.5.7" - acorn: "npm:^8.0.4" - acorn-walk: "npm:^8.0.0" - commander: "npm:^7.2.0" - escape-string-regexp: "npm:^4.0.0" - gzip-size: "npm:^6.0.0" - is-plain-object: "npm:^5.0.0" - lodash.debounce: "npm:^4.0.8" - lodash.escape: "npm:^4.0.1" - lodash.flatten: "npm:^4.4.0" - lodash.invokemap: "npm:^4.6.0" - lodash.pullall: "npm:^4.2.0" - lodash.uniqby: "npm:^4.7.0" - opener: "npm:^1.5.2" - picocolors: "npm:^1.0.0" - sirv: "npm:^2.0.3" - ws: "npm:^7.3.1" - bin: - webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 - languageName: node - linkType: hard - -"webpack-bundle-analyzer@npm:^3.6.1": - version: 3.9.0 - resolution: "webpack-bundle-analyzer@npm:3.9.0" - dependencies: - acorn: "npm:^7.1.1" - acorn-walk: "npm:^7.1.1" - bfj: "npm:^6.1.1" - chalk: "npm:^2.4.1" - commander: "npm:^2.18.0" - ejs: "npm:^2.6.1" - express: "npm:^4.16.3" - filesize: "npm:^3.6.1" - gzip-size: "npm:^5.0.0" - lodash: "npm:^4.17.19" - mkdirp: "npm:^0.5.1" - opener: "npm:^1.5.1" - ws: "npm:^6.0.0" - bin: - webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: 8c0/442b2e0740ad12c0a1887dcd294cc89c776bfc01301194ea5dd73ab26a7045dd3efee4eca27e4ebdf887729e20f600fe56430e42104dce6abcc4d6ca8f5c3e00 - languageName: node - linkType: hard - -"webpack-cli@npm:5.1.4": - version: 5.1.4 - resolution: "webpack-cli@npm:5.1.4" - dependencies: - "@discoveryjs/json-ext": "npm:^0.5.0" - "@webpack-cli/configtest": "npm:^2.1.1" - "@webpack-cli/info": "npm:^2.0.2" - "@webpack-cli/serve": "npm:^2.0.5" - colorette: "npm:^2.0.14" - commander: "npm:^10.0.1" - cross-spawn: "npm:^7.0.3" - envinfo: "npm:^7.7.3" - fastest-levenshtein: "npm:^1.0.12" - import-local: "npm:^3.0.2" - interpret: "npm:^3.1.1" - rechoir: "npm:^0.8.0" - webpack-merge: "npm:^5.7.3" - peerDependencies: - webpack: 5.x.x - peerDependenciesMeta: - "@webpack-cli/generators": - optional: true - webpack-bundle-analyzer: - optional: true - webpack-dev-server: - optional: true - bin: - webpack-cli: bin/cli.js - checksum: 8c0/4266909ae5e2e662c8790ac286e965b2c7fd5a4a2f07f48e28576234c9a5f631847ccddc18e1b3281c7b4be04a7ff4717d2636033a322dde13ac995fd0d9de10 - languageName: node - linkType: hard - -"webpack-cli@npm:^3.3.11": - version: 3.3.12 - resolution: "webpack-cli@npm:3.3.12" - dependencies: - chalk: "npm:^2.4.2" - cross-spawn: "npm:^6.0.5" - enhanced-resolve: "npm:^4.1.1" - findup-sync: "npm:^3.0.0" - global-modules: "npm:^2.0.0" - import-local: "npm:^2.0.0" - interpret: "npm:^1.4.0" - loader-utils: "npm:^1.4.0" - supports-color: "npm:^6.1.0" - v8-compile-cache: "npm:^2.1.1" - yargs: "npm:^13.3.2" - peerDependencies: - webpack: 4.x.x - bin: - webpack-cli: bin/cli.js - checksum: 8c0/d0bb486651af5c438983d82904f6d4d187dfa83d480b493cd0b231d653d2a40aaf48c6bae3620f5d8ad520c08870b8553363e7579cfd7c8c2f7b3a279c454698 - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^3.7.2, webpack-dev-middleware@npm:^3.7.3": - version: 3.7.3 - resolution: "webpack-dev-middleware@npm:3.7.3" - dependencies: - memory-fs: "npm:^0.4.1" - mime: "npm:^2.4.4" - mkdirp: "npm:^0.5.1" - range-parser: "npm:^1.2.1" - webpack-log: "npm:^2.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/f9bd8318c6f356d006dc99e3e46ef8870d67640e43f26cfcd2bb36c9e7eaf64015513f43498e92b532896f7fbd8f32c0710d4489fc81d7a45ea328d7e4cf3085 - languageName: node - linkType: hard - -"webpack-dev-middleware@npm:^5.3.1": - version: 5.3.3 - resolution: "webpack-dev-middleware@npm:5.3.3" - dependencies: - colorette: "npm:^2.0.10" - memfs: "npm:^3.4.3" - mime-types: "npm:^2.1.31" - range-parser: "npm:^1.2.1" - schema-utils: "npm:^4.0.0" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - checksum: 8c0/378ceed430b61c0b0eccdbb55a97173aa36231bb88e20ad12bafb3d553e542708fa31f08474b9c68d4ac95174a047def9e426e193b7134be3736afa66a0d1708 - languageName: node - linkType: hard - -"webpack-dev-server@npm:4.15.1": - version: 4.15.1 - resolution: "webpack-dev-server@npm:4.15.1" - dependencies: - "@types/bonjour": "npm:^3.5.9" - "@types/connect-history-api-fallback": "npm:^1.3.5" - "@types/express": "npm:^4.17.13" - "@types/serve-index": "npm:^1.9.1" - "@types/serve-static": "npm:^1.13.10" - "@types/sockjs": "npm:^0.3.33" - "@types/ws": "npm:^8.5.5" - ansi-html-community: "npm:^0.0.8" - bonjour-service: "npm:^1.0.11" - chokidar: "npm:^3.5.3" - colorette: "npm:^2.0.10" - compression: "npm:^1.7.4" - connect-history-api-fallback: "npm:^2.0.0" - default-gateway: "npm:^6.0.3" - express: "npm:^4.17.3" - graceful-fs: "npm:^4.2.6" - html-entities: "npm:^2.3.2" - http-proxy-middleware: "npm:^2.0.3" - ipaddr.js: "npm:^2.0.1" - launch-editor: "npm:^2.6.0" - open: "npm:^8.0.9" - p-retry: "npm:^4.5.0" - rimraf: "npm:^3.0.2" - schema-utils: "npm:^4.0.0" - selfsigned: "npm:^2.1.1" - serve-index: "npm:^1.9.1" - sockjs: "npm:^0.3.24" - spdy: "npm:^4.0.2" - webpack-dev-middleware: "npm:^5.3.1" - ws: "npm:^8.13.0" - peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: 8c0/2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 - languageName: node - linkType: hard - -"webpack-dev-server@npm:^3.10.3": - version: 3.11.3 - resolution: "webpack-dev-server@npm:3.11.3" - dependencies: - ansi-html-community: "npm:0.0.8" - bonjour: "npm:^3.5.0" - chokidar: "npm:^2.1.8" - compression: "npm:^1.7.4" - connect-history-api-fallback: "npm:^1.6.0" - debug: "npm:^4.1.1" - del: "npm:^4.1.1" - express: "npm:^4.17.1" - html-entities: "npm:^1.3.1" - http-proxy-middleware: "npm:0.19.1" - import-local: "npm:^2.0.0" - internal-ip: "npm:^4.3.0" - ip: "npm:^1.1.5" - is-absolute-url: "npm:^3.0.3" - killable: "npm:^1.0.1" - loglevel: "npm:^1.6.8" - opn: "npm:^5.5.0" - p-retry: "npm:^3.0.1" - portfinder: "npm:^1.0.26" - schema-utils: "npm:^1.0.0" - selfsigned: "npm:^1.10.8" - semver: "npm:^6.3.0" - serve-index: "npm:^1.9.1" - sockjs: "npm:^0.3.21" - sockjs-client: "npm:^1.5.0" - spdy: "npm:^4.0.2" - strip-ansi: "npm:^3.0.1" - supports-color: "npm:^6.1.0" - url: "npm:^0.11.0" - webpack-dev-middleware: "npm:^3.7.2" - webpack-log: "npm:^2.0.0" - ws: "npm:^6.2.1" - yargs: "npm:^13.3.2" - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack-dev-server: bin/webpack-dev-server.js - checksum: 8c0/90fe960dc28cc75b501b1fa4ad3eba358a98dbb929658725e74db12326afaf165b6bd54f0cad0381b9771f6c47c92dba573d615b491ceeec4875ffe49143a38a - languageName: node - linkType: hard - -"webpack-filter-warnings-plugin@npm:^1.2.1": - version: 1.2.1 - resolution: "webpack-filter-warnings-plugin@npm:1.2.1" - peerDependencies: - webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 - checksum: 8c0/0a30b2b7725e4d4de96701d3a76b10d1e6a6e502a26e64177d8bcb1ba16a34dc87ab82f588b5b46620f105ac471c3b76e5f2810244b373efbdf6d3dc193553da - languageName: node - linkType: hard - -"webpack-hot-middleware@npm:^2.25.1": - version: 2.25.1 - resolution: "webpack-hot-middleware@npm:2.25.1" - dependencies: - ansi-html-community: "npm:0.0.8" - html-entities: "npm:^2.1.0" - querystring: "npm:^0.2.0" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/2b8cc2841d6168c5e9f0edd116289fb441039e8de784baf375b1156883a860ee0917a3498b8198f47ad056dd90cdd8eb053253127a0f923c76b18fa7987d0c05 - languageName: node - linkType: hard - -"webpack-log@npm:^2.0.0": - version: 2.0.0 - resolution: "webpack-log@npm:2.0.0" - dependencies: - ansi-colors: "npm:^3.0.0" - uuid: "npm:^3.3.2" - checksum: 8c0/515b800433da1c0b5722317baaeb05fc185da5a1fde5e39d25bed0b05c13ee3a544aa13844db8590696274a3c5dc04fd5abdd39f38f8c46a4084b74ff0dc9c60 - languageName: node - linkType: hard - -"webpack-manifest-plugin@npm:5.0.0": - version: 5.0.0 - resolution: "webpack-manifest-plugin@npm:5.0.0" - dependencies: - tapable: "npm:^2.0.0" - webpack-sources: "npm:^2.2.0" - peerDependencies: - webpack: ^5.47.0 - checksum: 8c0/c6baed67855c48363a7bd677bc05ac532e2d817370894ec5a785524c1df08859330198eda419efb17d0e4233dc74d194f423a4ac5d34ab5521ba2617d14ea572 - languageName: node - linkType: hard - -"webpack-manifest-plugin@npm:^3.0.0": - version: 3.2.0 - resolution: "webpack-manifest-plugin@npm:3.2.0" - dependencies: - tapable: "npm:^2.0.0" - webpack-sources: "npm:^2.2.0" - peerDependencies: - webpack: ^4.44.2 - checksum: 8c0/40fbb7ac547cf46b42b0ecbc2586d5ca5e3c0f75414d15f08835a03f245ab5d2febcb5416d4f95dca2a569fd28fa131dda72a16c02a12c8038a794439c5506ce - languageName: node - linkType: hard - -"webpack-merge@npm:5.10.0": - version: 5.10.0 - resolution: "webpack-merge@npm:5.10.0" - dependencies: - clone-deep: "npm:^4.0.1" - flat: "npm:^5.0.2" - wildcard: "npm:^2.0.0" - checksum: b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b - languageName: node - linkType: hard - -"webpack-merge@npm:^5.1.2, webpack-merge@npm:^5.7.3": - version: 5.8.0 - resolution: "webpack-merge@npm:5.8.0" - dependencies: - clone-deep: "npm:^4.0.1" - wildcard: "npm:^2.0.0" - checksum: 8c0/400eaaba69d2240d51dc7a4427dde37849a8f2fdf93731be6a8aad34d70d55bb38cb10c5001c7b339fc91f8c8547e782ecbd79eff24ad861e21e6a4c5dc959fb - languageName: node - linkType: hard - -"webpack-retry-chunk-load-plugin@npm:3.1.1": - version: 3.1.1 - resolution: "webpack-retry-chunk-load-plugin@npm:3.1.1" - dependencies: - prettier: "npm:^2.6.2" - peerDependencies: - webpack: ">=5.0.0" - checksum: 8c0/62a4eda6a8d4c3a1169d41fd7d69902f06b4c39c76019f897ac3cb6958ecba5591c37386e303e7495859602386a61ac597fa970937099bcfc4f4b9a1027cece8 - languageName: node - linkType: hard - -"webpack-retry-chunk-load-plugin@npm:^1.4.0": - version: 1.5.0 - resolution: "webpack-retry-chunk-load-plugin@npm:1.5.0" - dependencies: - prettier: "npm:^1.19.1" - peerDependencies: - webpack: ">=4.0.0" - checksum: 8c0/23af6c0cac28a134cf065e292ced75df718d80c6dfbf605d2757f175bfa37117af5a07d8390d59f5233f437956e61f03067fe17c2862e2d93597fe29b346a774 - languageName: node - linkType: hard - -"webpack-sources@npm:^1.1.0, webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1, webpack-sources@npm:^1.4.3": - version: 1.4.3 - resolution: "webpack-sources@npm:1.4.3" - dependencies: - source-list-map: "npm:^2.0.0" - source-map: "npm:~0.6.1" - checksum: 8c0/78dafb3e1e297d3f4eb6204311e8c64d28cd028f82887ba33aaf03fffc82482d8e1fdf6de25a60f4dde621d3565f4c3b1bfb350f09add8f4e54e00279ff3db5e - languageName: node - linkType: hard - -"webpack-sources@npm:^2.2.0": - version: 2.3.0 - resolution: "webpack-sources@npm:2.3.0" - dependencies: - source-list-map: "npm:^2.0.1" - source-map: "npm:^0.6.1" - checksum: 8c0/0137364da20afb5ac77014b2f068ff96c59c397535dcab5a6971f582bf17434fb55108deb8de682f6d2a1de63e7b92d902dc17890c5e5938b293a680120ec493 - languageName: node - linkType: hard - -"webpack-sources@npm:^3.2.3": - version: 3.2.3 - resolution: "webpack-sources@npm:3.2.3" - checksum: 8c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e - languageName: node - linkType: hard - -"webpack-virtual-modules@npm:^0.2.2": - version: 0.2.2 - resolution: "webpack-virtual-modules@npm:0.2.2" - dependencies: - debug: "npm:^3.0.0" - checksum: 8c0/1e4156cbc7d64fde1a4531c3a2f92ccbe5702f16c34e3379ea302f7917b8c6c52f91328b893b615a34531a69c1e5079ec3b2edb7479f9908bd8243006437daa3 - languageName: node - linkType: hard - -"webpack@npm:4, webpack@npm:^4.42.1, webpack@npm:^4.44.2": - version: 4.46.0 - resolution: "webpack@npm:4.46.0" - dependencies: - "@webassemblyjs/ast": "npm:1.9.0" - "@webassemblyjs/helper-module-context": "npm:1.9.0" - "@webassemblyjs/wasm-edit": "npm:1.9.0" - "@webassemblyjs/wasm-parser": "npm:1.9.0" - acorn: "npm:^6.4.1" - ajv: "npm:^6.10.2" - ajv-keywords: "npm:^3.4.1" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^4.5.0" - eslint-scope: "npm:^4.0.3" - json-parse-better-errors: "npm:^1.0.2" - loader-runner: "npm:^2.4.0" - loader-utils: "npm:^1.2.3" - memory-fs: "npm:^0.4.1" - micromatch: "npm:^3.1.10" - mkdirp: "npm:^0.5.3" - neo-async: "npm:^2.6.1" - node-libs-browser: "npm:^2.2.1" - schema-utils: "npm:^1.0.0" - tapable: "npm:^1.1.3" - terser-webpack-plugin: "npm:^1.4.3" - watchpack: "npm:^1.7.4" - webpack-sources: "npm:^1.4.1" - peerDependenciesMeta: - webpack-cli: - optional: true - webpack-command: - optional: true - bin: - webpack: bin/webpack.js - checksum: 8c0/3451b48b926d7c295a4eba65bb7ff9a7d2d49a848014ea0945f446ebf4c1ca5bdd15681b444f5dfd8bbc4856afda55211d30a173ae721b8108f229792e6fb509 - languageName: node - linkType: hard - -"webpack@npm:5.89.0": - version: 5.89.0 - resolution: "webpack@npm:5.89.0" - dependencies: - "@types/eslint-scope": "npm:^3.7.3" - "@types/estree": "npm:^1.0.0" - "@webassemblyjs/ast": "npm:^1.11.5" - "@webassemblyjs/wasm-edit": "npm:^1.11.5" - "@webassemblyjs/wasm-parser": "npm:^1.11.5" - acorn: "npm:^8.7.1" - acorn-import-assertions: "npm:^1.9.0" - browserslist: "npm:^4.14.5" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.15.0" - es-module-lexer: "npm:^1.2.1" - eslint-scope: "npm:5.1.1" - events: "npm:^3.2.0" - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.9" - json-parse-even-better-errors: "npm:^2.3.1" - loader-runner: "npm:^4.2.0" - mime-types: "npm:^2.1.27" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^3.2.0" - tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.3.7" - watchpack: "npm:^2.4.0" - webpack-sources: "npm:^3.2.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 2562bf48788d651634fb7db6a5378c2fe3fce7f66831af38468da3944bd98756d68efea94a6909593993fb57b2d14cf802cbef2c83c6ef0047f7f606d59bec50 - languageName: node - linkType: hard - -"webpack@npm:^5": - version: 5.75.0 - resolution: "webpack@npm:5.75.0" - dependencies: - "@types/eslint-scope": "npm:^3.7.3" - "@types/estree": "npm:^0.0.51" - "@webassemblyjs/ast": "npm:1.11.1" - "@webassemblyjs/wasm-edit": "npm:1.11.1" - "@webassemblyjs/wasm-parser": "npm:1.11.1" - acorn: "npm:^8.7.1" - acorn-import-assertions: "npm:^1.7.6" - browserslist: "npm:^4.14.5" - chrome-trace-event: "npm:^1.0.2" - enhanced-resolve: "npm:^5.10.0" - es-module-lexer: "npm:^0.9.0" - eslint-scope: "npm:5.1.1" - events: "npm:^3.2.0" - glob-to-regexp: "npm:^0.4.1" - graceful-fs: "npm:^4.2.9" - json-parse-even-better-errors: "npm:^2.3.1" - loader-runner: "npm:^4.2.0" - mime-types: "npm:^2.1.27" - neo-async: "npm:^2.6.2" - schema-utils: "npm:^3.1.0" - tapable: "npm:^2.1.1" - terser-webpack-plugin: "npm:^5.1.3" - watchpack: "npm:^2.4.0" - webpack-sources: "npm:^3.2.3" - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 8c0/0160331d6255bdb8027f2589458514709a4a6555e2868adb6356a309d3f7b2212cb129a00f343fe0f94f54a31b4677507a3adf9ae73badc1216105ac548681ea - languageName: node - linkType: hard - -"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": - version: 0.7.4 - resolution: "websocket-driver@npm:0.7.4" - dependencies: - http-parser-js: "npm:>=0.5.1" - safe-buffer: "npm:>=5.1.0" - websocket-extensions: "npm:>=0.1.1" - checksum: 8c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 - languageName: node - linkType: hard - -"websocket-extensions@npm:>=0.1.1": - version: 0.1.4 - resolution: "websocket-extensions@npm:0.1.4" - checksum: 8c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 - languageName: node - linkType: hard - -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" - dependencies: - iconv-lite: "npm:0.4.24" - checksum: 8c0/79d9f276234fd06bb27de4c1f9137a0471bfa578efaec0474ab46b6d64bf30bb14492e6f88eff0e6794bdd6fa48b44f4d7a2e9c41424a837a63bba9626e35c62 - languageName: node - linkType: hard - -"whatwg-encoding@npm:^2.0.0": - version: 2.0.0 - resolution: "whatwg-encoding@npm:2.0.0" - dependencies: - iconv-lite: "npm:0.6.3" - checksum: 8c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e - languageName: node - linkType: hard - -"whatwg-fetch@npm:3.6.19": - version: 3.6.19 - resolution: "whatwg-fetch@npm:3.6.19" - checksum: 01dd755492d594c8d71d47811bb3886cdb7d566684daff5ec658cf148fa2418de6b562a94ff8cceaf1cf277bfb99fa6b61258cc20de5053f5817a4d419b5d293 - languageName: node - linkType: hard - -"whatwg-fetch@npm:^3.4.1, whatwg-fetch@npm:^3.5.0": - version: 3.6.2 - resolution: "whatwg-fetch@npm:3.6.2" - checksum: 8c0/cc10f6893fe71839250b6e2fa9bc293bcf0ca5b93129712a7d1097fb7528b3ff617eb065098dc972e74d1455378e514aa34c0901ded41584be16508db63477c8 - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^2.3.0": - version: 2.3.0 - resolution: "whatwg-mimetype@npm:2.3.0" - checksum: 8c0/81c5eaf660b1d1c27575406bcfdf58557b599e302211e13e3c8209020bbac903e73c17f9990f887232b39ce570cc8638331b0c3ff0842ba224a5c2925e830b06 - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^3.0.0": - version: 3.0.0 - resolution: "whatwg-mimetype@npm:3.0.0" - checksum: 8c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f - languageName: node - linkType: hard - -"whatwg-url@npm:^11.0.0": - version: 11.0.0 - resolution: "whatwg-url@npm:11.0.0" - dependencies: - tr46: "npm:^3.0.0" - webidl-conversions: "npm:^7.0.0" - checksum: 8c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 - languageName: node - linkType: hard - -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: "npm:~0.0.3" - webidl-conversions: "npm:^3.0.0" - checksum: 8c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 - languageName: node - linkType: hard - -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": - version: 8.5.0 - resolution: "whatwg-url@npm:8.5.0" - dependencies: - lodash: "npm:^4.7.0" - tr46: "npm:^2.0.2" - webidl-conversions: "npm:^6.1.0" - checksum: 8c0/126ef76c08b595fbcf600ddf75bf3202f01f0ab98912249d0017b69a596d2891f0a94ee160b6c7795faacbfdcac222f32863ab4b7fd7f87ef04899dac271989d - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 8c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e - languageName: node - linkType: hard - -"which-builtin-type@npm:^1.1.3": - version: 1.1.3 - resolution: "which-builtin-type@npm:1.1.3" - dependencies: - function.prototype.name: "npm:^1.1.5" - has-tostringtag: "npm:^1.0.0" - is-async-function: "npm:^2.0.0" - is-date-object: "npm:^1.0.5" - is-finalizationregistry: "npm:^1.0.2" - is-generator-function: "npm:^1.0.10" - is-regex: "npm:^1.1.4" - is-weakref: "npm:^1.0.2" - isarray: "npm:^2.0.5" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: 2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 - languageName: node - linkType: hard - -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" - dependencies: - is-map: "npm:^2.0.1" - is-set: "npm:^2.0.1" - is-weakmap: "npm:^2.0.1" - is-weakset: "npm:^2.0.1" - checksum: 8c0/249f913e1758ed2f06f00706007d87dc22090a80591a56917376e70ecf8fc9ab6c41d98e1c87208bb9648676f65d4b09c0e4d23c56c7afb0f0a73a27d701df5d - languageName: node - linkType: hard - -"which-module@npm:^2.0.0": - version: 2.0.0 - resolution: "which-module@npm:2.0.0" - checksum: 8c0/946ffdbcd6f0cf517638f8f2319c6d51e528c3b41bc2c0f5dc3dc46047347abd7326aea5cdf5def0a8b32bdca313ac87a32ce5a76b943fe1ca876c4557e6b716 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.13": - version: 1.1.13 - resolution: "which-typed-array@npm:1.1.13" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.4" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - checksum: 9f5f1c42918df3d5b91c4315ed0051d5d874370998bf095c9ae0df374f0881f85094e3c384b8fb08ab7b4d4f54ba81c0aff75da6226e7c0589b83dfbec1cd4c9 - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: "npm:^1.0.5" - call-bind: "npm:^1.0.2" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.0" - is-typed-array: "npm:^1.1.10" - checksum: 8c0/7edb12cfd04bfe2e2d3ec3e6046417c59e6a8c72209e4fe41fe1a1a40a3b196626c2ca63dac2a0fa2491d5c37c065dfabd2fcf7c0c15f1d19f5640fef88f6368 - languageName: node - linkType: hard - -"which@npm:^1.2.14, which@npm:^1.2.9, which@npm:^1.3.1": - version: 1.3.1 - resolution: "which@npm:1.3.1" - dependencies: - isexe: "npm:^2.0.0" - bin: - which: ./bin/which - checksum: 8c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 - languageName: node - linkType: hard - -"which@npm:^2.0.1, which@npm:^2.0.2": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: "npm:^2.0.0" - bin: - node-which: ./bin/node-which - checksum: 8c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f - languageName: node - linkType: hard - -"wide-align@npm:^1.1.2, wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" - dependencies: - string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: 8c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 - languageName: node - linkType: hard - -"widest-line@npm:^3.1.0": - version: 3.1.0 - resolution: "widest-line@npm:3.1.0" - dependencies: - string-width: "npm:^4.0.0" - checksum: 8c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f - languageName: node - linkType: hard - -"wildcard@npm:^2.0.0": - version: 2.0.0 - resolution: "wildcard@npm:2.0.0" - checksum: 8c0/4e22a45f4fa7f0f0d3e11860ee9ce9225246d41af6ec507e6a7d64c2692afb40d695b92c8f801deda8d3536007c2ec07981079fd0c8bb38b8521de072b33ab7a - languageName: node - linkType: hard - -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 8c0/1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de - languageName: node - linkType: hard - -"wordwrap@npm:^1.0.0": - version: 1.0.0 - resolution: "wordwrap@npm:1.0.0" - checksum: 8c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 - languageName: node - linkType: hard - -"worker-farm@npm:^1.7.0": - version: 1.7.0 - resolution: "worker-farm@npm:1.7.0" - dependencies: - errno: "npm:~0.1.7" - checksum: 8c0/069a032f9198a07273a7608dc0c23d7288c1c25256b66008e1ae95838cda6fa2c7aefb3b7ba760f975c8d18120ca54eb193afb66d7237b2a05e5da12c1c961f7 - languageName: node - linkType: hard - -"worker-rpc@npm:^0.1.0": - version: 0.1.1 - resolution: "worker-rpc@npm:0.1.1" - dependencies: - microevent.ts: "npm:~0.1.1" - checksum: 8c0/986406dbed4a2fd25d21e05e5a16a2db5051735df4011848366bb9488ecf19f44b43a90072171e509580fafd0565a7759543966496b8c18322efa5440dea1e6c - languageName: node - linkType: hard - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da - languageName: node - linkType: hard - -"wrap-ansi@npm:^3.0.1": - version: 3.0.1 - resolution: "wrap-ansi@npm:3.0.1" - dependencies: - string-width: "npm:^2.1.1" - strip-ansi: "npm:^4.0.0" - checksum: 8c0/ad6fed8f242c26755badaf452da154122d0d862f8b7aab56e758466857f230efafdc5fbffca026650b947ac3fc0eb563df5c05b9e2190a52a4a68f4eef3d4555 - languageName: node - linkType: hard - -"wrap-ansi@npm:^5.1.0": - version: 5.1.0 - resolution: "wrap-ansi@npm:5.1.0" - dependencies: - ansi-styles: "npm:^3.2.0" - string-width: "npm:^3.0.0" - strip-ansi: "npm:^5.0.0" - checksum: 8c0/fcd0b39b7453df512f2fe8c714a1c1b147fe3e6a4b5a2e4de6cadc3af47212f335eceaffe588e98322d6345e72672137e2c0b834d8a662e73a32296c1c8216bb - languageName: node - linkType: hard - -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: "npm:^4.0.0" - string-width: "npm:^4.1.0" - strip-ansi: "npm:^6.0.0" - checksum: 8c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c - languageName: node - linkType: hard - -"wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0": - version: 8.1.0 - resolution: "wrap-ansi@npm:8.1.0" - dependencies: - ansi-styles: "npm:^6.1.0" - string-width: "npm:^5.0.1" - strip-ansi: "npm:^7.0.1" - checksum: 8c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 8c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 - languageName: node - linkType: hard - -"write-file-atomic@npm:^2.0.0, write-file-atomic@npm:^2.3.0": - version: 2.4.3 - resolution: "write-file-atomic@npm:2.4.3" - dependencies: - graceful-fs: "npm:^4.1.11" - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^3.0.2" - checksum: 8c0/8cb4bba0c1ab814a9b127844da0db4fb8c5e06ddbe6317b8b319377c73b283673036c8b9360120062898508b9428d81611cf7fa97584504a00bc179b2a580b92 - languageName: node - linkType: hard - -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" - dependencies: - imurmurhash: "npm:^0.1.4" - is-typedarray: "npm:^1.0.0" - signal-exit: "npm:^3.0.2" - typedarray-to-buffer: "npm:^3.1.5" - checksum: 8c0/7fb67affd811c7a1221bed0c905c26e28f0041e138fb19ccf02db57a0ef93ea69220959af3906b920f9b0411d1914474cdd90b93a96e5cd9e8368d9777caac0e - languageName: node - linkType: hard - -"write-file-atomic@npm:^4.0.2": - version: 4.0.2 - resolution: "write-file-atomic@npm:4.0.2" - dependencies: - imurmurhash: "npm:^0.1.4" - signal-exit: "npm:^3.0.7" - checksum: 8c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 - languageName: node - linkType: hard - -"ws@npm:8.12.0, ws@npm:^8.11.0, ws@npm:^8.4.2": - version: 8.12.0 - resolution: "ws@npm:8.12.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 8c0/2a84d769be015f3644a99a33c1b4c1c268b97315a8387067c242f26ab7ac1f655640220c23ddcbd2f7911649cd00478aaafbb4dff073f0b75f3531ebabd7cced - languageName: node - linkType: hard - -"ws@npm:^5.2.0 || ^6.0.0 || ^7.0.0": - version: 7.5.7 - resolution: "ws@npm:7.5.7" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 8c0/f856382d94dfa8d722337d79117fe4f16d48ef7d7f77a58e94af7d7f32e863fce8403c00992ddddbf1efd5a334c581c2a987aea66255f7ee368680e59f78ae15 - languageName: node - linkType: hard - -"ws@npm:^6.0.0, ws@npm:^6.2.1": - version: 6.2.1 - resolution: "ws@npm:6.2.1" - dependencies: - async-limiter: "npm:~1.0.0" - checksum: 8c0/13a6de384bc3bccff40bfd1a5077b07549d9085f2c69128bcf4c83c8ec38809a92ffd351900ede385e096fe3f25c57e079f6df78a7e3d83cce308e731b3233a4 - languageName: node - linkType: hard - -"ws@npm:^7.3.1": - version: 7.5.9 - resolution: "ws@npm:7.5.9" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 8c0/aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 - languageName: node - linkType: hard - -"ws@npm:^7.4.5": - version: 7.4.6 - resolution: "ws@npm:7.4.6" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 8c0/4b44b59bbc0549c852fb2f0cdb48e40e122a1b6078aeed3d65557cbeb7d37dda7a4f0027afba2e6a7a695de17701226d02b23bd15c97b0837808c16345c62f8e - languageName: node - linkType: hard - -"ws@npm:^8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 8c0/579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.5.0 - resolution: "ws@npm:8.5.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 8c0/0baeee03e97865accda8fad51e8e5fa17d19b8e264529efdf662bbba2acc1c7f1de8316287e6df5cb639231a96009e6d5234b57e6ff36ee2d04e49a0995fec2f - languageName: node - linkType: hard - -"xdg-basedir@npm:^3.0.0": - version: 3.0.0 - resolution: "xdg-basedir@npm:3.0.0" - checksum: 8c0/c3be36400d8a69c9154ce6ccff98832dae0d04f8bacda806f609d3955beb23dc7c9dde724438b81e6128bf253d440a2bfe0239dd37d70333ab625c4e170b77b2 - languageName: node - linkType: hard - -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: 8c0/da310f6a7a52f8eb0fce3d04ffa1f97387ca68f47e8620ae3a259909c4e832f7003313b918e53840a6bf57fb38d5ae3c5f79f31f911b2818a7439f7898f8fbf1 - languageName: node - linkType: hard - -"xml-name-validator@npm:^4.0.0": - version: 4.0.0 - resolution: "xml-name-validator@npm:4.0.0" - checksum: 8c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd - languageName: node - linkType: hard - -"xml2js@npm:0.4.17": - version: 0.4.17 - resolution: "xml2js@npm:0.4.17" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:^4.1.0" - checksum: 8c0/406905238e7d578da435ccb2add9de5d6e100bd4a9d510ecc23c038fe713c4f4d6a58b18848129c14ae2b4ad657d40a9a43c6eba8f8ce6c5beeb84599fbb6f61 - languageName: node - linkType: hard - -"xml2js@npm:0.4.19": - version: 0.4.19 - resolution: "xml2js@npm:0.4.19" - dependencies: - sax: "npm:>=0.6.0" - xmlbuilder: "npm:~9.0.1" - checksum: 8c0/a50178608fae952ddbdd30c9fde61a2a3b9a42edacacd8059e69b6177304e2f3362e214cd324b7555d3087ed64234e59bb70f75c4699231c6840c4c60a72c2d2 - languageName: node - linkType: hard - -"xmlbuilder@npm:^4.1.0": - version: 4.2.1 - resolution: "xmlbuilder@npm:4.2.1" - dependencies: - lodash: "npm:^4.0.0" - checksum: 8c0/7862fe90e285c33f37481f49a71346fd332dd7162c3bbcf8a3093e44fb549e87175bfb675c5bab90939d5bb2cd285b2c08ba3cecdbd5bf4122d57eeafaa38930 - languageName: node - linkType: hard - -"xmlbuilder@npm:~9.0.1": - version: 9.0.7 - resolution: "xmlbuilder@npm:9.0.7" - checksum: 8c0/aa3c644a13e561abd50e4971ab6963261de703cc0405994777db9129c40d76dba9c0a2c6fa04a7de474a8428f7b329e6f85fcf84990f9cb4ceb2c345a57a4eef - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 8c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 - languageName: node - linkType: hard - -"xregexp@npm:4.0.0": - version: 4.0.0 - resolution: "xregexp@npm:4.0.0" - checksum: 8c0/cc7f49f03b999013544ce9d58ffc356f71c95c21b5e0478386f2c639fb2a89adf02cf9dbe25e9262e1e336d7b812c220aa3a644a4ac39020747ddb6773b6284f - languageName: node - linkType: hard - -"xss@npm:^1.0.8": - version: 1.0.9 - resolution: "xss@npm:1.0.9" - dependencies: - commander: "npm:^2.20.3" - cssfilter: "npm:0.0.10" - bin: - xss: bin/xss - checksum: 8c0/236b738802622642b642c6e7e1561825b2aec1bf443a0c50fcfabaf3d3dd9aff13b8198d598b7ae6c81f96a0f6345bb11659266a04e19d54908144f1ee7e0d18 - languageName: node - linkType: hard - -"xtend@npm:^4.0.0, xtend@npm:^4.0.1, xtend@npm:~4.0.1": - version: 4.0.2 - resolution: "xtend@npm:4.0.2" - checksum: 8c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e - languageName: node - linkType: hard - -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 8c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 - languageName: node - linkType: hard - -"y18n@npm:^5.0.5": - version: 5.0.8 - resolution: "y18n@npm:5.0.8" - checksum: 8c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 - languageName: node - linkType: hard - -"yallist@npm:4.0.0, yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 8c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a - languageName: node - linkType: hard - -"yallist@npm:^2.0.0, yallist@npm:^2.1.2": - version: 2.1.2 - resolution: "yallist@npm:2.1.2" - checksum: 8c0/0b9e25aa00adf19e01d2bcd4b208aee2b0db643d9927131797b7af5ff69480fc80f1c3db738cbf3946f0bddf39d8f2d0a5709c644fd42d4aa3a4e6e786c087b5 - languageName: node - linkType: hard - -"yallist@npm:^3.0.2": - version: 3.1.1 - resolution: "yallist@npm:3.1.1" - checksum: 8c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 - languageName: node - linkType: hard - -"yaml-ast-parser@npm:^0.0.43": - version: 0.0.43 - resolution: "yaml-ast-parser@npm:0.0.43" - checksum: 8c0/4d2f1e761067b2c6abdd882279a406f879258787af470a6d4a659cb79cb2ab056b870b25f1f80f46ed556e8b499d611d247806376f53edf3412f72c0a8ea2e98 - languageName: node - linkType: hard - -"yaml@npm:^1.10.0, yaml@npm:^1.7.2": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: 8c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f - languageName: node - linkType: hard - -"yaml@npm:^2.3.4": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: cf03b68f8fef5e8516b0f0b54edaf2459f1648317fc6210391cf606d247e678b449382f4bd01f77392538429e306c7cba8ff46ff6b37cac4de9a76aff33bd9e1 - languageName: node - linkType: hard - -"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": - version: 21.1.1 - resolution: "yargs-parser@npm:21.1.1" - checksum: 8c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 - languageName: node - linkType: hard - -"yargs-parser@npm:^13.1.2": - version: 13.1.2 - resolution: "yargs-parser@npm:13.1.2" - dependencies: - camelcase: "npm:^5.0.0" - decamelize: "npm:^1.2.0" - checksum: 8c0/aeded49d2285c5e284e48b7c69eab4a6cf1c94decfdba073125cc4054ff49da7128a3c7c840edb6b497a075e455be304e89ba4b9228be35f1ed22f4a7bba62cc - languageName: node - linkType: hard - -"yargs-parser@npm:^18.1.2, yargs-parser@npm:^18.1.3": - version: 18.1.3 - resolution: "yargs-parser@npm:18.1.3" - dependencies: - camelcase: "npm:^5.0.0" - decamelize: "npm:^1.2.0" - checksum: 8c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 - languageName: node - linkType: hard - -"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.7": - version: 20.2.7 - resolution: "yargs-parser@npm:20.2.7" - checksum: 8c0/0c64f63502899661328b8bc95519d33355d03e56c42ba6ed28cbe36912564769eec3f2123f40529cd725acf8a3ed8ec96c4ecf45ff3b81a4cb3ad1be937afbc8 - languageName: node - linkType: hard - -"yargs@npm:17.7.2, yargs@npm:^17.7.2": - version: 17.7.2 - resolution: "yargs@npm:17.7.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 8c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 - languageName: node - linkType: hard - -"yargs@npm:^13.3.2": - version: 13.3.2 - resolution: "yargs@npm:13.3.2" - dependencies: - cliui: "npm:^5.0.0" - find-up: "npm:^3.0.0" - get-caller-file: "npm:^2.0.1" - require-directory: "npm:^2.1.1" - require-main-filename: "npm:^2.0.0" - set-blocking: "npm:^2.0.0" - string-width: "npm:^3.0.0" - which-module: "npm:^2.0.0" - y18n: "npm:^4.0.0" - yargs-parser: "npm:^13.1.2" - checksum: 8c0/6612f9f0ffeee07fff4c85f153d10eba4072bf5c11e1acba96153169f9d771409dfb63253dbb0841ace719264b663cd7b18c75c0eba91af7740e76094239d386 - languageName: node - linkType: hard - -"yargs@npm:^15.3.1, yargs@npm:^15.4.1": - version: 15.4.1 - resolution: "yargs@npm:15.4.1" - dependencies: - cliui: "npm:^6.0.0" - decamelize: "npm:^1.2.0" - find-up: "npm:^4.1.0" - get-caller-file: "npm:^2.0.1" - require-directory: "npm:^2.1.1" - require-main-filename: "npm:^2.0.0" - set-blocking: "npm:^2.0.0" - string-width: "npm:^4.2.0" - which-module: "npm:^2.0.0" - y18n: "npm:^4.0.0" - yargs-parser: "npm:^18.1.2" - checksum: 8c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d - languageName: node - linkType: hard - -"yargs@npm:^16.0.3, yargs@npm:^16.2.0": - version: 16.2.0 - resolution: "yargs@npm:16.2.0" - dependencies: - cliui: "npm:^7.0.2" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.0" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^20.2.2" - checksum: 8c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 - languageName: node - linkType: hard - -"yargs@npm:^17.0.0, yargs@npm:^17.3.1": - version: 17.6.2 - resolution: "yargs@npm:17.6.2" - dependencies: - cliui: "npm:^8.0.1" - escalade: "npm:^3.1.1" - get-caller-file: "npm:^2.0.5" - require-directory: "npm:^2.1.1" - string-width: "npm:^4.2.3" - y18n: "npm:^5.0.5" - yargs-parser: "npm:^21.1.1" - checksum: 8c0/dd5c89aa8186d2a18625b26b68beb635df648617089135e9661107a92561056427bbd41dbfa228db5a7d968ea1043d96c036c2eb978acf7b61a0ae48bf3be206 - languageName: node - linkType: hard - -"yn@npm:3.1.1": - version: 3.1.1 - resolution: "yn@npm:3.1.1" - checksum: 8c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 - languageName: node - linkType: hard - -"yocto-queue@npm:^0.1.0": - version: 0.1.0 - resolution: "yocto-queue@npm:0.1.0" - checksum: 8c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f - languageName: node - linkType: hard - -"yocto-queue@npm:^1.0.0": - version: 1.0.0 - resolution: "yocto-queue@npm:1.0.0" - checksum: 8c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 - languageName: node - linkType: hard - -"yoga-layout-prebuilt@npm:1.10.0": - version: 1.10.0 - resolution: "yoga-layout-prebuilt@npm:1.10.0" - dependencies: - "@types/yoga-layout": "npm:1.9.2" - checksum: 8c0/e83b6b7078faf4d0472461b53e92bf9cae655de3d896aee5f79b5ba5a960e507bbf8e671b261db13137bf18711686969f19fd1d9c4669beb1d70754b83c5879d - languageName: node - linkType: hard - -"youch-terminal@npm:^1.1.1": - version: 1.1.1 - resolution: "youch-terminal@npm:1.1.1" - dependencies: - kleur: "npm:^4.1.4" - checksum: 8c0/6ff8336704622c8c324d5eed197d06aa00e022b77f63203abdc08831d0de6d05dee0aad3f4d0c04562f990990cf7c17b7b93847700bf424d633d336858edd5f8 - languageName: node - linkType: hard - -"youch@npm:^2.2.2": - version: 2.2.2 - resolution: "youch@npm:2.2.2" - dependencies: - "@types/stack-trace": "npm:0.0.29" - cookie: "npm:^0.4.1" - mustache: "npm:^4.2.0" - stack-trace: "npm:0.0.10" - checksum: 8c0/6e21211e6177a464b993480a79dbcf29bbdc747605e1cff240f473d2f5ef7e43c58dc98aa202292063f96c175d317843dfd65ad3d0d810ca4650015822f9f6af - languageName: node - linkType: hard - -"zen-observable-ts@npm:^0.8.21": - version: 0.8.21 - resolution: "zen-observable-ts@npm:0.8.21" - dependencies: - tslib: "npm:^1.9.3" - zen-observable: "npm:^0.8.0" - checksum: 8c0/fe4a02f862b5f7e8ae0f86230c37b84c7d5611f5c206981afb4043e732d04cf7067a6cbe1ba82d20f18b735a3387937195a12542158a631d308ae3959a1d93c4 - languageName: node - linkType: hard - -"zen-observable-ts@npm:^1.2.0": - version: 1.2.3 - resolution: "zen-observable-ts@npm:1.2.3" - dependencies: - zen-observable: "npm:0.8.15" - checksum: 8c0/fa4c1ebbbbc3e7d41dca6d9dc74cb96440ee4767c50d8f9a3b3f84f823d9832d148f76187cd65c30d9ab4008f88c7248fe8774f7cedf98fbfc2e0a6429ce08f5 - languageName: node - linkType: hard - -"zen-observable-ts@npm:^1.2.5": - version: 1.2.5 - resolution: "zen-observable-ts@npm:1.2.5" - dependencies: - zen-observable: "npm:0.8.15" - checksum: 8c0/21d586f3d0543e1d6f05d9333a137b407dbf337907c1ee1c2fa7a7da044f7e1262e4baf4ef8902f230c6f5acb561047659eb7df73df33307233cc451efe46db1 - languageName: node - linkType: hard - -"zen-observable@npm:0.8.15, zen-observable@npm:^0.8.0": - version: 0.8.15 - resolution: "zen-observable@npm:0.8.15" - checksum: 8c0/71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8 - languageName: node - linkType: hard - -"zip-stream@npm:^3.0.1": - version: 3.0.1 - resolution: "zip-stream@npm:3.0.1" - dependencies: - archiver-utils: "npm:^2.1.0" - compress-commons: "npm:^3.0.0" - readable-stream: "npm:^3.6.0" - checksum: 8c0/0491e9b444cc39044b4d5d869f71a17b31db0941ef1e13bf0fe1f22e7ffd2dc1ed187037131257cf33512a211eba9fa95c7a11426d239445a4a967f7fe95db49 - languageName: node - linkType: hard - -"zip-stream@npm:^5.0.1": - version: 5.0.1 - resolution: "zip-stream@npm:5.0.1" - dependencies: - archiver-utils: "npm:^4.0.1" - compress-commons: "npm:^5.0.1" - readable-stream: "npm:^3.6.0" - checksum: 18b4ecf28824bd165709de5056d53cf611f07e0b7578508fa94c497f17164722dc19a0739ea8b2c1a296de7d3f70f7ad558e7a3a4929240fb2730afc5fd60679 - languageName: node - linkType: hard - -"zwitch@npm:^1.0.0": - version: 1.0.5 - resolution: "zwitch@npm:1.0.5" - checksum: 8c0/26dc7d32e5596824b565db1da9650d00d32659c1211195bef50c25c60820f9c942aa7abefe678fc1ed0b97c1755036ac1bde5f97881d7d0e73e04e02aca56957 - languageName: node - linkType: hard From 0a667742a2e421e578833901d55288c42fe92deb Mon Sep 17 00:00:00 2001 From: Josh GM Walker <56300765+Josh-Walker-GM@users.noreply.github.com> Date: Thu, 1 Feb 2024 22:29:07 +0000 Subject: [PATCH 064/119] chore(api-server): switch to vitest (#9929) This PR updates the `api-server` unit tests to use vitest. This was the first time we have had to convert over a test which used virtual modules. The vitest docs on their support for this can be found here: https://vitest.dev/guide/mocking.html#virtual-modules. I went with menu option 2 - having a vite plugin that resolves the virtual module and then mocking that module inline in the test file. Happy to discuss this and go with a different approach. I'm not overly attached to one way of doing things over another. If people have good reasons to suggest using a particular style then it would be great to hear. --- packages/api-server/dist.test.ts | 2 + packages/api-server/jest.config.js | 7 -- packages/api-server/package.json | 8 +-- packages/api-server/src/__tests__/api.test.ts | 10 +-- .../src/__tests__/createServer.test.ts | 34 +++++++--- .../api-server/src/__tests__/fastify.test.ts | 67 ++++++++++--------- .../src/__tests__/lambdaLoader.test.ts | 14 +++- .../lambdaLoaderNumberFunctions.test.ts | 4 +- .../src/__tests__/logFormatter.test.ts | 2 + .../requestHandlers/awsLambdaFastify.test.ts | 29 ++++---- .../__tests__/requestHandlers/utils.test.ts | 2 + .../api-server/src/apiCLIConfigHandler.ts | 2 +- .../api-server/src/bothCLIConfigHandler.ts | 4 +- packages/api-server/src/createServer.ts | 6 +- packages/api-server/src/fastify.ts | 11 +-- packages/api-server/src/plugins/api.ts | 2 +- packages/api-server/src/plugins/graphql.ts | 5 +- packages/api-server/vitest.config.mts | 10 +++ yarn.lock | 2 +- 19 files changed, 136 insertions(+), 85 deletions(-) delete mode 100644 packages/api-server/jest.config.js create mode 100644 packages/api-server/vitest.config.mts diff --git a/packages/api-server/dist.test.ts b/packages/api-server/dist.test.ts index c65362034211..47e5592afbe6 100644 --- a/packages/api-server/dist.test.ts +++ b/packages/api-server/dist.test.ts @@ -1,6 +1,8 @@ import fs from 'fs' import path from 'path' +import { describe, it, expect } from 'vitest' + const distPath = path.join(__dirname, 'dist') const packageConfig = JSON.parse(fs.readFileSync('./package.json', 'utf-8')) diff --git a/packages/api-server/jest.config.js b/packages/api-server/jest.config.js deleted file mode 100644 index 9ab0de8df09b..000000000000 --- a/packages/api-server/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('jest').Config} */ -const config = { - testPathIgnorePatterns: ['/node_modules/', '/fixtures/'], - coveragePathIgnorePatterns: ['/dist/', '/src/__tests__/'], -} - -module.exports = config diff --git a/packages/api-server/package.json b/packages/api-server/package.json index e2fcd4b15e4b..a394cdc4c59f 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -25,8 +25,8 @@ "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build && yarn fix:permissions\"", "fix:permissions": "chmod +x dist/index.js; chmod +x dist/watch.js", "prepublishOnly": "NODE_ENV=production yarn build", - "test": "jest", - "test:watch": "yarn test --watch" + "test": "vitest run", + "test:watch": "vitest watch" }, "dependencies": { "@fastify/url-data": "5.4.0", @@ -56,9 +56,9 @@ "@types/split2": "4.2.3", "@types/yargs": "17.0.32", "aws-lambda": "1.0.7", - "jest": "29.7.0", "pino-abstract-transport": "1.1.0", - "typescript": "5.3.3" + "typescript": "5.3.3", + "vitest": "1.2.2" }, "peerDependencies": { "@redwoodjs/graphql-server": "6.0.7" diff --git a/packages/api-server/src/__tests__/api.test.ts b/packages/api-server/src/__tests__/api.test.ts index bb5863a70361..5c08e8a74ab0 100644 --- a/packages/api-server/src/__tests__/api.test.ts +++ b/packages/api-server/src/__tests__/api.test.ts @@ -1,11 +1,13 @@ import path from 'path' +import { vi, beforeAll, afterAll, describe, it, expect } from 'vitest' + import createFastifyInstance from '../fastify' import { redwoodFastifyAPI } from '../plugins/api' // Suppress terminal logging. -console.log = jest.fn() -console.warn = jest.fn() +console.log = vi.fn() +console.warn = vi.fn() // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined @@ -20,10 +22,10 @@ afterAll(() => { }) // Set up and teardown the fastify instance for each test. -let fastifyInstance: ReturnType +let fastifyInstance: Awaited> beforeAll(async () => { - fastifyInstance = createFastifyInstance() + fastifyInstance = await createFastifyInstance() fastifyInstance.register(redwoodFastifyAPI, { redwood: { diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index 7b4e98013fe1..d7c7cfe97f09 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -2,6 +2,16 @@ import path from 'path' import pino from 'pino' import build from 'pino-abstract-transport' +import { + vi, + beforeAll, + afterAll, + describe, + afterEach, + it, + expect, +} from 'vitest' +import type { MockInstance } from 'vitest' import { getConfig } from '@redwoodjs/project-config' @@ -23,27 +33,33 @@ afterAll(() => { process.env.RWJS_CWD = original_RWJS_CWD }) -let consoleWarnSpy: jest.SpyInstance -let consoleLogSpy: jest.SpyInstance +let consoleWarnSpy: MockInstance< + Parameters, + ReturnType +> +let consoleLogSpy: MockInstance< + Parameters, + ReturnType +> describe('createServer', () => { // Create a server for most tests. Some that test initialization create their own let server: Awaited> beforeAll(async () => { - consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}) - consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(() => {}) + consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}) + consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {}) server = await createServer() }) afterEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() }) afterAll(async () => { await server?.close() - jest.mocked(console.log).mockRestore() - jest.mocked(console.warn).mockRestore() + vi.mocked(console.log).mockRestore() + vi.mocked(console.warn).mockRestore() }) it('serves functions', async () => { @@ -299,7 +315,9 @@ describe('resolveOptions', () => { it("throws if `--port` can't be converted to an integer", () => { expect(() => { resolveOptions({ parseArgs: true }, ['--port', 'eight-nine-ten']) - }).toThrowErrorMatchingInlineSnapshot(`"\`port\` must be an integer"`) + }).toThrowErrorMatchingInlineSnapshot( + `[Error: \`port\` must be an integer]` + ) }) it('parses `--apiRootPath`', () => { diff --git a/packages/api-server/src/__tests__/fastify.test.ts b/packages/api-server/src/__tests__/fastify.test.ts index add3b2751f50..cad36b0ef0ad 100644 --- a/packages/api-server/src/__tests__/fastify.test.ts +++ b/packages/api-server/src/__tests__/fastify.test.ts @@ -1,20 +1,32 @@ import fastify from 'fastify' import { vol } from 'memfs' +import { + vi, + describe, + afterEach, + afterAll, + beforeAll, + test, + expect, + it, +} from 'vitest' import { createFastifyInstance, DEFAULT_OPTIONS } from '../fastify' // We'll be testing how fastify is instantiated, so we'll mock it here. -jest.mock('fastify', () => { - return jest.fn(() => { - return { - register: () => {}, - addHook: () => {}, - } - }) +vi.mock('fastify', () => { + return { + default: vi.fn(() => { + return { + register: () => {}, + addHook: () => {}, + } + }), + } }) // Suppress terminal logging. -console.log = jest.fn() +console.log = vi.fn() // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined @@ -30,7 +42,7 @@ afterAll(() => { }) // Mock server.config.js to test instantiating fastify with user config. -jest.mock('fs', () => require('memfs').fs) +vi.mock('fs', async () => ({ default: (await import('memfs')).fs })) afterEach(() => { vol.reset() @@ -40,32 +52,23 @@ const userConfig = { requestTimeout: 25_000, } -jest.mock( - '/redwood-app/api/server.config.js', - () => { - return { +vi.mock('/redwood-app/api/server.config.js', () => { + return { + default: { config: userConfig, - } - }, - { - virtual: true, + }, } -) - -jest.mock( - '\\redwood-app\\api\\server.config.js', - () => { - return { +}) +vi.mock('\\redwood-app\\api\\server.config.js', () => { + return { + default: { config: userConfig, - } - }, - { - virtual: true, + }, } -) +}) describe('createFastifyInstance', () => { - it('instantiates a fastify instance with default config', () => { + it('instantiates a fastify instance with default config', async () => { vol.fromNestedJSON( { 'redwood.toml': '', @@ -73,11 +76,11 @@ describe('createFastifyInstance', () => { FIXTURE_PATH ) - createFastifyInstance() + await createFastifyInstance() expect(fastify).toHaveBeenCalledWith(DEFAULT_OPTIONS) }) - it("instantiates a fastify instance with the user's configuration if available", () => { + it("instantiates a fastify instance with the user's configuration if available", async () => { vol.fromNestedJSON( { 'redwood.toml': '', @@ -88,7 +91,7 @@ describe('createFastifyInstance', () => { FIXTURE_PATH ) - createFastifyInstance() + await createFastifyInstance() expect(fastify).toHaveBeenCalledWith(userConfig) }) }) diff --git a/packages/api-server/src/__tests__/lambdaLoader.test.ts b/packages/api-server/src/__tests__/lambdaLoader.test.ts index c7355be6c956..3a66e89f385e 100644 --- a/packages/api-server/src/__tests__/lambdaLoader.test.ts +++ b/packages/api-server/src/__tests__/lambdaLoader.test.ts @@ -1,13 +1,23 @@ import path from 'path' +import { + vi, + beforeAll, + afterAll, + afterEach, + describe, + it, + expect, +} from 'vitest' + import { LAMBDA_FUNCTIONS, loadFunctionsFromDist, } from '../plugins/lambdaLoader' // Suppress terminal logging. -console.log = jest.fn() -console.warn = jest.fn() +console.log = vi.fn() +console.warn = vi.fn() // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined diff --git a/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts b/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts index 4cb7165099a9..ad02f328d6e3 100644 --- a/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts +++ b/packages/api-server/src/__tests__/lambdaLoaderNumberFunctions.test.ts @@ -1,12 +1,14 @@ import path from 'path' +import { vi, beforeAll, afterAll, test, expect } from 'vitest' + import { LAMBDA_FUNCTIONS, loadFunctionsFromDist, } from '../plugins/lambdaLoader' // Suppress terminal logging. -console.log = jest.fn() +console.log = vi.fn() // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined diff --git a/packages/api-server/src/__tests__/logFormatter.test.ts b/packages/api-server/src/__tests__/logFormatter.test.ts index d258472da76d..6c7e2356129c 100644 --- a/packages/api-server/src/__tests__/logFormatter.test.ts +++ b/packages/api-server/src/__tests__/logFormatter.test.ts @@ -1,3 +1,5 @@ +import { describe, it, expect } from 'vitest' + import { LogFormatter } from '../logFormatter/index' const logFormatter = LogFormatter() diff --git a/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts b/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts index 7886d8a3823c..2c2b05667aef 100644 --- a/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts +++ b/packages/api-server/src/__tests__/requestHandlers/awsLambdaFastify.test.ts @@ -1,11 +1,12 @@ import type { Handler } from 'aws-lambda' import type { FastifyRequest, FastifyReply } from 'fastify' +import { vi, describe, beforeEach, test, expect, afterEach } from 'vitest' import { requestHandler } from '../../requestHandlers/awsLambdaFastify' describe('Tests AWS Lambda to Fastify request transformation and handling', () => { beforeEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() }) const request = { @@ -21,17 +22,17 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = const mockedReply = { status: (code: number) => { - return { code, send: jest.fn() } + return { code, send: vi.fn() } }, - headers: () => jest.fn(), - header: () => jest.fn(), - send: () => jest.fn(), + headers: () => vi.fn(), + header: () => vi.fn(), + send: () => vi.fn(), log: console as unknown, } as unknown as FastifyReply test('requestHandler replies with simple body', async () => { - jest.spyOn(mockedReply, 'send') - jest.spyOn(mockedReply, 'status') + vi.spyOn(mockedReply, 'send') + vi.spyOn(mockedReply, 'status') const handler: Handler = async () => { return { @@ -46,8 +47,8 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = }) test('requestHandler replies with a base64Encoded body', async () => { - jest.spyOn(mockedReply, 'send') - jest.spyOn(mockedReply, 'status') + vi.spyOn(mockedReply, 'send') + vi.spyOn(mockedReply, 'status') const handler: Handler = async () => { return { @@ -77,7 +78,7 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = }) test('requestHandler returns an error status if handler throws an error', async () => { - jest.spyOn(mockedReply, 'status') + vi.spyOn(mockedReply, 'status') const handler = async () => { throw new Error('error') @@ -101,8 +102,8 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = log: console as unknown, } as unknown as FastifyRequest - jest.spyOn(mockedReply, 'headers') - jest.spyOn(mockedReply, 'header') + vi.spyOn(mockedReply, 'headers') + vi.spyOn(mockedReply, 'header') const handler: Handler = async () => { return { @@ -139,8 +140,8 @@ describe('Tests AWS Lambda to Fastify request transformation and handling', () = log: console as unknown, } as unknown as FastifyRequest - jest.spyOn(mockedReply, 'headers') - jest.spyOn(mockedReply, 'header') + vi.spyOn(mockedReply, 'headers') + vi.spyOn(mockedReply, 'header') const handler: Handler = async () => { return { diff --git a/packages/api-server/src/__tests__/requestHandlers/utils.test.ts b/packages/api-server/src/__tests__/requestHandlers/utils.test.ts index c4b1396cae5f..18d3039f79d4 100644 --- a/packages/api-server/src/__tests__/requestHandlers/utils.test.ts +++ b/packages/api-server/src/__tests__/requestHandlers/utils.test.ts @@ -1,3 +1,5 @@ +import { describe, test, expect } from 'vitest' + import { parseBody, mergeMultiValueHeaders } from '../../requestHandlers/utils' describe('Tests AWS Lambda to Fastify utility functions', () => { diff --git a/packages/api-server/src/apiCLIConfigHandler.ts b/packages/api-server/src/apiCLIConfigHandler.ts index 8a7051a4b546..8b586ab97db3 100644 --- a/packages/api-server/src/apiCLIConfigHandler.ts +++ b/packages/api-server/src/apiCLIConfigHandler.ts @@ -9,7 +9,7 @@ export async function handler(options: APIParsedOptions) { const timeStart = Date.now() console.log(chalk.dim.italic('Starting API Server...')) - const fastify = createFastifyInstance() + const fastify = await createFastifyInstance() fastify.register(redwoodFastifyAPI, { redwood: { ...options, diff --git a/packages/api-server/src/bothCLIConfigHandler.ts b/packages/api-server/src/bothCLIConfigHandler.ts index e9b24f1d2ca5..25a6aea6b17c 100644 --- a/packages/api-server/src/bothCLIConfigHandler.ts +++ b/packages/api-server/src/bothCLIConfigHandler.ts @@ -26,14 +26,14 @@ export async function handler(options: BothParsedOptions) { options.apiRootPath, ].join('') - const webFastify = createFastifyInstance() + const webFastify = await createFastifyInstance() webFastify.register(redwoodFastifyWeb, { redwood: { apiProxyTarget, }, }) - const apiFastify = createFastifyInstance() + const apiFastify = await createFastifyInstance() apiFastify.register(redwoodFastifyAPI, { redwood: { apiRootPath: options.apiRootPath, diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 6f990686ed89..600474d3e7b7 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -124,9 +124,11 @@ export async function createServer(options: CreateServerOptions = {}) { }) if (graphqlFunctionPath) { - const { redwoodFastifyGraphQLServer } = require('./plugins/graphql') + const { redwoodFastifyGraphQLServer } = await import('./plugins/graphql') // This comes from a babel plugin that's applied to api/dist/functions/graphql.{ts,js} in user projects - const { __rw_graphqlOptions } = require(graphqlFunctionPath) + const { __rw_graphqlOptions } = await import( + `file://${graphqlFunctionPath}` + ) await server.register(redwoodFastifyGraphQLServer, { redwood: { diff --git a/packages/api-server/src/fastify.ts b/packages/api-server/src/fastify.ts index 0a474edf67cb..0f9ef1f25b55 100644 --- a/packages/api-server/src/fastify.ts +++ b/packages/api-server/src/fastify.ts @@ -32,7 +32,7 @@ let serverConfigFile: { }, } -export function loadFastifyConfig() { +export async function loadFastifyConfig() { // @TODO use require.resolve to find the config file // do we need to babel first? const serverConfigPath = path.join( @@ -48,17 +48,18 @@ export function loadFastifyConfig() { if (!isServerConfigLoaded) { console.log(`Loading server config from ${serverConfigPath}`) - serverConfigFile = { ...require(serverConfigPath) } + const config = await import(`file://${serverConfigPath}`) + serverConfigFile = { ...config.default } isServerConfigLoaded = true } return serverConfigFile } -export const createFastifyInstance = ( +export const createFastifyInstance = async ( options?: FastifyServerOptions -): FastifyInstance => { - const { config } = loadFastifyConfig() +): Promise => { + const { config } = await loadFastifyConfig() const fastify = Fastify(options || config || DEFAULT_OPTIONS) diff --git a/packages/api-server/src/plugins/api.ts b/packages/api-server/src/plugins/api.ts index cfe1ca0317c0..fe0bc1de24ac 100644 --- a/packages/api-server/src/plugins/api.ts +++ b/packages/api-server/src/plugins/api.ts @@ -45,7 +45,7 @@ export async function redwoodFastifyAPI( ) if (redwoodOptions.loadUserConfig) { - const { configureFastify } = loadFastifyConfig() + const { configureFastify } = await loadFastifyConfig() if (configureFastify) { await configureFastify(fastify, { side: 'api', diff --git a/packages/api-server/src/plugins/graphql.ts b/packages/api-server/src/plugins/graphql.ts index bfc0b37e0d09..c8b8fd6f1dec 100644 --- a/packages/api-server/src/plugins/graphql.ts +++ b/packages/api-server/src/plugins/graphql.ts @@ -51,7 +51,10 @@ export async function redwoodFastifyGraphQLServer( cwd: getPaths().api.base, absolute: true, }) - const { __rw_graphqlOptions } = await import(graphqlFunctionPath) + + const { __rw_graphqlOptions } = await import( + `file://${graphqlFunctionPath}` + ) redwoodOptions.graphql = __rw_graphqlOptions as GraphQLYogaOptions } diff --git a/packages/api-server/vitest.config.mts b/packages/api-server/vitest.config.mts new file mode 100644 index 000000000000..019dd836a327 --- /dev/null +++ b/packages/api-server/vitest.config.mts @@ -0,0 +1,10 @@ +import { defineConfig, configDefaults } from 'vitest/config' + +export default defineConfig({ + test: { + exclude: [ + ...configDefaults.exclude, + '**/fixtures', + ], + }, +}) diff --git a/yarn.lock b/yarn.lock index 775babbca0e3..1044a10b6760 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7416,7 +7416,6 @@ __metadata: fast-json-parse: "npm:1.0.3" fastify: "npm:4.25.2" fastify-raw-body: "npm:4.3.0" - jest: "npm:29.7.0" lodash: "npm:4.17.21" pino-abstract-transport: "npm:1.1.0" pretty-bytes: "npm:5.6.0" @@ -7424,6 +7423,7 @@ __metadata: qs: "npm:6.11.2" split2: "npm:4.2.0" typescript: "npm:5.3.3" + vitest: "npm:1.2.2" yargs: "npm:17.7.2" peerDependencies: "@redwoodjs/graphql-server": 6.0.7 From bf5a645e21e60a8acba0740b2bed89b5f4038c3b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 23:42:20 +0000 Subject: [PATCH 065/119] fix(deps): update dependency firebase-admin to v11.11.1 (#9953) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [firebase-admin](https://firebase.google.com/) ([source](https://togithub.com/firebase/firebase-admin-node)) | [`11.11.0` -> `11.11.1`](https://renovatebot.com/diffs/npm/firebase-admin/11.11.0/11.11.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/firebase-admin/11.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/firebase-admin/11.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/firebase-admin/11.11.0/11.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/firebase-admin/11.11.0/11.11.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
firebase/firebase-admin-node (firebase-admin) ### [`v11.11.1`](https://togithub.com/firebase/firebase-admin-node/releases/tag/v11.11.1): Firebase Admin Node.js SDK v11.11.1 [Compare Source](https://togithub.com/firebase/firebase-admin-node/compare/v11.11.0...v11.11.1) ##### Miscellaneous - \[chore] Release 11.11.1 ([#​2387](https://togithub.com/firebase/firebase-admin-node/issues/2387)) - build(deps): bump jwks-rsa from 3.0.1 to 3.1.0 ([#​2381](https://togithub.com/firebase/firebase-admin-node/issues/2381)) - chore(deps): bump google-cloud/firestore to 6.8.0 ([#​2385](https://togithub.com/firebase/firebase-admin-node/issues/2385)) - build(deps-dev): bump [@​microsoft/api-extractor](https://togithub.com/microsoft/api-extractor) from 7.36.3 to 7.38.3 ([#​2380](https://togithub.com/firebase/firebase-admin-node/issues/2380)) - build(deps-dev): bump [@​types/sinon-chai](https://togithub.com/types/sinon-chai) from 3.2.9 to 3.2.12 ([#​2366](https://togithub.com/firebase/firebase-admin-node/issues/2366)) - build(deps-dev): bump [@​babel/traverse](https://togithub.com/babel/traverse) from 7.21.4 to 7.23.2 ([#​2343](https://togithub.com/firebase/firebase-admin-node/issues/2343)) - build(deps-dev): bump eslint from 8.50.0 to 8.51.0 ([#​2330](https://togithub.com/firebase/firebase-admin-node/issues/2330)) - build(deps-dev): bump [@​types/firebase-token-generator](https://togithub.com/types/firebase-token-generator) ([#​2322](https://togithub.com/firebase/firebase-admin-node/issues/2322)) - Bug Fix for issue [#​2320](https://togithub.com/firebase/firebase-admin-node/issues/2320) ([#​2321](https://togithub.com/firebase/firebase-admin-node/issues/2321))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .../auth-providers/firebase/api/package.json | 2 +- yarn.lock | 30 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/packages/auth-providers/firebase/api/package.json b/packages/auth-providers/firebase/api/package.json index 4a8f4ea56575..276e643feb42 100644 --- a/packages/auth-providers/firebase/api/package.json +++ b/packages/auth-providers/firebase/api/package.json @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "core-js": "3.35.1", - "firebase-admin": "11.11.0" + "firebase-admin": "11.11.1" }, "devDependencies": { "@babel/cli": "7.23.9", diff --git a/yarn.lock b/yarn.lock index 1044a10b6760..9c53953bfdd6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3738,15 +3738,15 @@ __metadata: languageName: node linkType: hard -"@google-cloud/firestore@npm:^6.6.0": - version: 6.6.1 - resolution: "@google-cloud/firestore@npm:6.6.1" +"@google-cloud/firestore@npm:^6.8.0": + version: 6.8.0 + resolution: "@google-cloud/firestore@npm:6.8.0" dependencies: fast-deep-equal: "npm:^3.1.1" functional-red-black-tree: "npm:^1.0.1" google-gax: "npm:^3.5.7" - protobufjs: "npm:^7.0.0" - checksum: 079d562c2488d183f7dd86862b326d00049296985ea6365ab7fe3347de7e1ecb3fd923ab3f005fad272466aac62363310c15f50e3bb59e133534b68bce912816 + protobufjs: "npm:^7.2.5" + checksum: fafc2ad2cf739b9d9588865fbaea436504454707841e0a10e1d9890019d8efc0f43d0103f5edb06ac098cfe7735d93edaf952771518575b0a15cd82238cfe3ce languageName: node linkType: hard @@ -7715,7 +7715,7 @@ __metadata: "@redwoodjs/api": "npm:6.0.7" "@types/aws-lambda": "npm:8.10.126" core-js: "npm:3.35.1" - firebase-admin: "npm:11.11.0" + firebase-admin: "npm:11.11.1" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -18957,14 +18957,14 @@ __metadata: languageName: node linkType: hard -"firebase-admin@npm:11.11.0": - version: 11.11.0 - resolution: "firebase-admin@npm:11.11.0" +"firebase-admin@npm:11.11.1": + version: 11.11.1 + resolution: "firebase-admin@npm:11.11.1" dependencies: "@fastify/busboy": "npm:^1.2.1" "@firebase/database-compat": "npm:^0.3.4" "@firebase/database-types": "npm:^0.10.4" - "@google-cloud/firestore": "npm:^6.6.0" + "@google-cloud/firestore": "npm:^6.8.0" "@google-cloud/storage": "npm:^6.9.5" "@types/node": "npm:>=12.12.47" jsonwebtoken: "npm:^9.0.0" @@ -18976,7 +18976,7 @@ __metadata: optional: true "@google-cloud/storage": optional: true - checksum: 97bea381dfc9f4bac13e59d22812de8f20627ed30dbeb50a0493b920a0cf7cbc08d425077e88be88af59d16e8f39d7fe88dd5df826870fc75fa660deb126ad67 + checksum: a8dfd80b841ff989f20986b3447fba5a6a0d664447b5ef041c2f36b3d93d20539e0ecc5d4eb0faaa5cbfe819a1ee820a2560eaea1e3c36eea07b2936d3a642af languageName: node linkType: hard @@ -28033,9 +28033,9 @@ __metadata: languageName: node linkType: hard -"protobufjs@npm:^7.0.0, protobufjs@npm:^7.2.4": - version: 7.2.5 - resolution: "protobufjs@npm:7.2.5" +"protobufjs@npm:^7.0.0, protobufjs@npm:^7.2.4, protobufjs@npm:^7.2.5": + version: 7.2.6 + resolution: "protobufjs@npm:7.2.6" dependencies: "@protobufjs/aspromise": "npm:^1.1.2" "@protobufjs/base64": "npm:^1.1.2" @@ -28049,7 +28049,7 @@ __metadata: "@protobufjs/utf8": "npm:^1.1.0" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: 12bb88965a2291ec717daddb1b7153c0e567586076da7d138c8f04558d3d0a9cad6445a3558f16c1a61f5cd9dec1a107712590daccb71763429d9b1e10d164d3 + checksum: e164855536a43aa7941c7d95a2342e466f599d2e033ed89c5f5582fb0e3affeec702810091b850f3b700bfd646260b07bb4d8bb94c107cddcecd92de4d1d62fd languageName: node linkType: hard From 66b0add8a36a058edf0e13331157f76fb8f30532 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Fri, 2 Feb 2024 06:16:23 +0100 Subject: [PATCH 066/119] chore: update yarn.lock --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9c53953bfdd6..b2117d2cd2b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19950,8 +19950,8 @@ __metadata: linkType: hard "google-gax@npm:^3.5.7": - version: 3.6.0 - resolution: "google-gax@npm:3.6.0" + version: 3.6.1 + resolution: "google-gax@npm:3.6.1" dependencies: "@grpc/grpc-js": "npm:~1.8.0" "@grpc/proto-loader": "npm:^0.7.0" @@ -19965,13 +19965,13 @@ __metadata: node-fetch: "npm:^2.6.1" object-hash: "npm:^3.0.0" proto3-json-serializer: "npm:^1.0.0" - protobufjs: "npm:7.2.3" + protobufjs: "npm:7.2.4" protobufjs-cli: "npm:1.1.1" retry-request: "npm:^5.0.0" bin: compileProtos: build/tools/compileProtos.js minifyProtoJson: build/tools/minify.js - checksum: 438c0ab4c7ef858855d9c66a391f45f3cb2288c64ea320d091bbcc29b349b7f6301faa951728c2a076afe13d22ff773825028b8f7ad8739c21ddc2353a51fb7b + checksum: a935b7fac764fbf89b613d0a345ac9e531901fcd0223ec738c3e6ce29e9326603aca473326fe60216e04fc8adb7439dd5715f0f3b6b8200cd5f16c7fb4d7d3e7 languageName: node linkType: hard @@ -28013,9 +28013,9 @@ __metadata: languageName: node linkType: hard -"protobufjs@npm:7.2.3": - version: 7.2.3 - resolution: "protobufjs@npm:7.2.3" +"protobufjs@npm:7.2.4": + version: 7.2.4 + resolution: "protobufjs@npm:7.2.4" dependencies: "@protobufjs/aspromise": "npm:^1.1.2" "@protobufjs/base64": "npm:^1.1.2" @@ -28029,7 +28029,7 @@ __metadata: "@protobufjs/utf8": "npm:^1.1.0" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: 8092a67a31d961622322887a2374a63a3509f22d45ed7ada39be5987d590bf3ec46eb17aa64ba08f79b42be44adfce63c2fdedc389aea1423013417b6af2c61f + checksum: 7610b4e3b961e7637e8f61099931161af7f47f8b88b4a0d55124158f9b7fbe6e8fdfe551803b0c65fefad9d58d49332f0b5b4aa5826d8dcd8b062c351cbe2ebb languageName: node linkType: hard From fe62d0b823aadc9d0651c61c3fc6d88b7300bedf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 2 Feb 2024 08:32:21 +0000 Subject: [PATCH 067/119] chore(deps): update dependency firebase to v10.7.0 (#9605) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate logo banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [firebase](https://firebase.google.com/) ([source](https://togithub.com/firebase/firebase-js-sdk), [changelog](https://firebase.google.com/support/release-notes/js)) | [`10.6.0` -> `10.7.0`](https://renovatebot.com/diffs/npm/firebase/10.6.0/10.7.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/firebase/10.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/firebase/10.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/firebase/10.6.0/10.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/firebase/10.6.0/10.7.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
firebase/firebase-js-sdk (firebase) ### [`v10.7.0`](https://togithub.com/firebase/firebase-js-sdk/compare/firebase@10.6.0...firebase@10.7.0) [Compare Source](https://togithub.com/firebase/firebase-js-sdk/compare/firebase@10.6.0...firebase@10.7.0)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi Co-authored-by: Tobbe Lundberg --- .../firebase/web/jest.config.js | 1 + .../auth-providers/firebase/web/jest.setup.js | 7 + .../auth-providers/firebase/web/package.json | 4 +- yarn.lock | 175 +++++++++--------- 4 files changed, 102 insertions(+), 85 deletions(-) create mode 100644 packages/auth-providers/firebase/web/jest.setup.js diff --git a/packages/auth-providers/firebase/web/jest.config.js b/packages/auth-providers/firebase/web/jest.config.js index 4c937d832dc1..838f4d918573 100644 --- a/packages/auth-providers/firebase/web/jest.config.js +++ b/packages/auth-providers/firebase/web/jest.config.js @@ -5,4 +5,5 @@ module.exports = { testEnvironment: 'jest-environment-jsdom', testPathIgnorePatterns: ['fixtures', 'dist'], resolver: path.resolve(__dirname, './resolver.js'), + setupFilesAfterEnv: ['/jest.setup.js'], } diff --git a/packages/auth-providers/firebase/web/jest.setup.js b/packages/auth-providers/firebase/web/jest.setup.js new file mode 100644 index 000000000000..4f1e1f2e2294 --- /dev/null +++ b/packages/auth-providers/firebase/web/jest.setup.js @@ -0,0 +1,7 @@ +// Copied from packages/testing/config/jest/web/RedwoodWebJestEnv.js +// See that file for further information +if (typeof global.TextEncoder === 'undefined') { + const { TextEncoder, TextDecoder } = require('util') + global.TextEncoder = TextEncoder + global.TextDecoder = TextDecoder +} diff --git a/packages/auth-providers/firebase/web/package.json b/packages/auth-providers/firebase/web/package.json index 93d6393587c5..f882896c83b6 100644 --- a/packages/auth-providers/firebase/web/package.json +++ b/packages/auth-providers/firebase/web/package.json @@ -31,13 +31,13 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/react": "18.2.37", - "firebase": "10.6.0", + "firebase": "10.7.0", "jest": "29.7.0", "react": "18.2.0", "typescript": "5.3.3" }, "peerDependencies": { - "firebase": "10.6.0" + "firebase": "10.7.0" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/yarn.lock b/yarn.lock index b2117d2cd2b7..b0c2cb57cab4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3232,16 +3232,16 @@ __metadata: languageName: node linkType: hard -"@firebase/app-compat@npm:0.2.23": - version: 0.2.23 - resolution: "@firebase/app-compat@npm:0.2.23" +"@firebase/app-compat@npm:0.2.24": + version: 0.2.24 + resolution: "@firebase/app-compat@npm:0.2.24" dependencies: - "@firebase/app": "npm:0.9.23" + "@firebase/app": "npm:0.9.24" "@firebase/component": "npm:0.6.4" "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" - checksum: 23961e81fc6e0499052b2745446e5b4172fea54508b7231219ef2c14f15db69ab0bc6eceb64372c53fa6b4df9627edaa973b51a6b1083c4bae94a84716e0470f + checksum: cc0695c65108f0dd3904b832d84f8d57b0b841102a5c7199fe00f323fb17d1c628d40e10dca27d36f1b92c2b4af1999618c5fd2dd37d3fb0f0feab0c70338a68 languageName: node linkType: hard @@ -3252,32 +3252,32 @@ __metadata: languageName: node linkType: hard -"@firebase/app@npm:0.9.23": - version: 0.9.23 - resolution: "@firebase/app@npm:0.9.23" +"@firebase/app@npm:0.9.24": + version: 0.9.24 + resolution: "@firebase/app@npm:0.9.24" dependencies: "@firebase/component": "npm:0.6.4" "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" idb: "npm:7.1.1" tslib: "npm:^2.1.0" - checksum: 48f9a2d8b3667170b69cd12d49db67e2b04566b9367945e308fa565e1d69b99de0cbafe5c7403127ca69d8dadbe32f953ccf5969f4f7a21a6876074f41891b6c + checksum: f7dda134e69837aa6989d9d8b5e6f5a5b4b423b83b381b1748bad96c750b2175c13ffc66d2af4bcfb14de1dd28f31cf0e9b05c90222aa74e858776d1c2fa8fc3 languageName: node linkType: hard -"@firebase/auth-compat@npm:0.4.9": - version: 0.4.9 - resolution: "@firebase/auth-compat@npm:0.4.9" +"@firebase/auth-compat@npm:0.5.0": + version: 0.5.0 + resolution: "@firebase/auth-compat@npm:0.5.0" dependencies: - "@firebase/auth": "npm:1.4.0" + "@firebase/auth": "npm:1.5.0" "@firebase/auth-types": "npm:0.12.0" "@firebase/component": "npm:0.6.4" "@firebase/util": "npm:1.9.3" - node-fetch: "npm:2.6.7" tslib: "npm:^2.1.0" + undici: "npm:5.26.5" peerDependencies: "@firebase/app-compat": 0.x - checksum: d9516f6d61a4ca2a90c122eef592bb3d3bd9535ec954d6122b1ea3e10cdf3e2a0d2fc84972bf55ca221e8b2f808802f5b1c96ae7991a7a1a72ddcbc79eb81b6e + checksum: e29b8cf55e9cfb8eb7404f9e9cd9676cd22169529658114523972fc5860a7a5df94ef7aa48ec3230af104ec5e9a128862f42300230e7e3ca933613e9a6209db0 languageName: node linkType: hard @@ -3298,22 +3298,22 @@ __metadata: languageName: node linkType: hard -"@firebase/auth@npm:1.4.0": - version: 1.4.0 - resolution: "@firebase/auth@npm:1.4.0" +"@firebase/auth@npm:1.5.0": + version: 1.5.0 + resolution: "@firebase/auth@npm:1.5.0" dependencies: "@firebase/component": "npm:0.6.4" "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" - node-fetch: "npm:2.6.7" tslib: "npm:^2.1.0" + undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x "@react-native-async-storage/async-storage": ^1.18.1 peerDependenciesMeta: "@react-native-async-storage/async-storage": optional: true - checksum: dc55c0ecf6870145ffe431486d67c069f24748c2fe2d6fab41dfba446285e6fa173ae3b7850236dac2ce2bcfcca25d9c7c5772533adb4a60691f86328f89f6b1 + checksum: d2afa05b121ba00343804db9f36e149629d183b00b6fda22a545867200ef35cd393dc4537a2fc2ebda5bdb11500b5fcddb3e62b6ec18f0f80ad0a7d969ae522b languageName: node linkType: hard @@ -3403,18 +3403,18 @@ __metadata: languageName: node linkType: hard -"@firebase/firestore-compat@npm:0.3.22": - version: 0.3.22 - resolution: "@firebase/firestore-compat@npm:0.3.22" +"@firebase/firestore-compat@npm:0.3.23": + version: 0.3.23 + resolution: "@firebase/firestore-compat@npm:0.3.23" dependencies: "@firebase/component": "npm:0.6.4" - "@firebase/firestore": "npm:4.3.2" + "@firebase/firestore": "npm:4.4.0" "@firebase/firestore-types": "npm:3.0.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 7edd1b1bdb4f60703eaf901645efcb9c83bf843cd3c2472807b9101508ed7db6f4c8dd8591301879449429142908fcbb312791b2a01901e09ff73fae2b55af6e + checksum: 215af998b304d2d69aae167ad4a301b4cb911199126ff5facbf22f7412fbb3c5ae45ca9abb10c72f10a36bc3279673d9d8831c99bd4ce22ce79c0472f064d23b languageName: node linkType: hard @@ -3428,36 +3428,36 @@ __metadata: languageName: node linkType: hard -"@firebase/firestore@npm:4.3.2": - version: 4.3.2 - resolution: "@firebase/firestore@npm:4.3.2" +"@firebase/firestore@npm:4.4.0": + version: 4.4.0 + resolution: "@firebase/firestore@npm:4.4.0" dependencies: "@firebase/component": "npm:0.6.4" "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" - "@firebase/webchannel-wrapper": "npm:0.10.3" + "@firebase/webchannel-wrapper": "npm:0.10.5" "@grpc/grpc-js": "npm:~1.9.0" "@grpc/proto-loader": "npm:^0.7.8" - node-fetch: "npm:2.6.7" tslib: "npm:^2.1.0" + undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x - checksum: 7472041d27f4c83dbd1c9c979b058964d1fa87f495c730060d772e41f2266f8f7b71abfce4f94625ab1988dc5bf13072f9e78d49f1e08dd79ff314041379c7f4 + checksum: bb6609a3cf0e5804db6ad6ea18b799bd8199a7cb611f2a51d96350a191f316ffc10e36f0cf078f922d08091cc3df42b4194fca57a0033bb498542c4d8714c35f languageName: node linkType: hard -"@firebase/functions-compat@npm:0.3.5": - version: 0.3.5 - resolution: "@firebase/functions-compat@npm:0.3.5" +"@firebase/functions-compat@npm:0.3.6": + version: 0.3.6 + resolution: "@firebase/functions-compat@npm:0.3.6" dependencies: "@firebase/component": "npm:0.6.4" - "@firebase/functions": "npm:0.10.0" + "@firebase/functions": "npm:0.11.0" "@firebase/functions-types": "npm:0.6.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 04c03008d803cac08a1d4a70f0c5cfcfb3098834f31e3f29de8d346f94cc24ca6d01d1be91136b35bd3470b56052aaf8810619e611c60e2ab154719f4fe50a92 + checksum: ac56a3efbf6da841dd5efdaadbfceb9207a391e37b40bd12d78541059f7ab25b2a972e9a707a29d48612243139d753b565170adf3e269a7e4625bfb267d91668 languageName: node linkType: hard @@ -3468,20 +3468,20 @@ __metadata: languageName: node linkType: hard -"@firebase/functions@npm:0.10.0": - version: 0.10.0 - resolution: "@firebase/functions@npm:0.10.0" +"@firebase/functions@npm:0.11.0": + version: 0.11.0 + resolution: "@firebase/functions@npm:0.11.0" dependencies: "@firebase/app-check-interop-types": "npm:0.3.0" "@firebase/auth-interop-types": "npm:0.2.1" "@firebase/component": "npm:0.6.4" "@firebase/messaging-interop-types": "npm:0.2.0" "@firebase/util": "npm:1.9.3" - node-fetch: "npm:2.6.7" tslib: "npm:^2.1.0" + undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x - checksum: 0574d98bbda912551969f4d0ff908aea68bbeedcd18d9942acf749e9dab6829c10ed0a449b43b7db79569b17062548d7324ce9d573822a51a76bb48075d19456 + checksum: 133335fba1508c24ced8b1a5eafc508ae9202336c46b8b32220362e2b21385b48f6233931e63461e3fb707a9959ddb104d461428b94416e2596803e2ae66f1ca languageName: node linkType: hard @@ -3532,17 +3532,17 @@ __metadata: languageName: node linkType: hard -"@firebase/messaging-compat@npm:0.2.4": - version: 0.2.4 - resolution: "@firebase/messaging-compat@npm:0.2.4" +"@firebase/messaging-compat@npm:0.2.5": + version: 0.2.5 + resolution: "@firebase/messaging-compat@npm:0.2.5" dependencies: "@firebase/component": "npm:0.6.4" - "@firebase/messaging": "npm:0.12.4" + "@firebase/messaging": "npm:0.12.5" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: df8c0da5da5ddfdaa9699a6db315c8a2adb0f79d72e9844c88fe08fe54628b05a95e514acec54edb755405aeab3ce72cc4485af02dd610a76f0aa199367f1c06 + checksum: 8d2e19bd9f362d9edb527999d00c9ba6f6fc53b0c5c446bbdf2df2b882b06875b17703be14888a4a4f8d1b2eed025a9f8a422e0b9d31638b9b37046c360ee19b languageName: node linkType: hard @@ -3553,19 +3553,19 @@ __metadata: languageName: node linkType: hard -"@firebase/messaging@npm:0.12.4": - version: 0.12.4 - resolution: "@firebase/messaging@npm:0.12.4" +"@firebase/messaging@npm:0.12.5": + version: 0.12.5 + resolution: "@firebase/messaging@npm:0.12.5" dependencies: "@firebase/component": "npm:0.6.4" "@firebase/installations": "npm:0.6.4" "@firebase/messaging-interop-types": "npm:0.2.0" "@firebase/util": "npm:1.9.3" - idb: "npm:7.0.1" + idb: "npm:7.1.1" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 49256425926a4073ce731be26180d318d9c09641ebdf4b8eb3c46db89db5ce2e4dd4ca918940a78828ef6b35c710d798085787077966806fcb22ab0f0c0da104 + checksum: 4454394a0b405b0837df905fe2ff1bd6c48a276c65d546e639af9c32e1a3a8a1cab60333c286cea27c22c58db1150e158a60146adf5f0e52bfab18e9ea29125d languageName: node linkType: hard @@ -3645,18 +3645,18 @@ __metadata: languageName: node linkType: hard -"@firebase/storage-compat@npm:0.3.2": - version: 0.3.2 - resolution: "@firebase/storage-compat@npm:0.3.2" +"@firebase/storage-compat@npm:0.3.3": + version: 0.3.3 + resolution: "@firebase/storage-compat@npm:0.3.3" dependencies: "@firebase/component": "npm:0.6.4" - "@firebase/storage": "npm:0.11.2" + "@firebase/storage": "npm:0.12.0" "@firebase/storage-types": "npm:0.8.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 9b56b4eb914adbe65a4880a0000768703507357063f8268751fef0a6f58ecb58d31398cddd5cd83b0c1279397c7f0dcfda0dd07b4ace2f626fa3bbb679d839ac + checksum: 71924ef9685d2e84913607df9fdac971cfe299522cea07fb93afa06103cb573392c009ea38c41f09a88e8b6d7702c1ec3c6003b54dd61badbd69fe3d0a654c4c languageName: node linkType: hard @@ -3670,17 +3670,17 @@ __metadata: languageName: node linkType: hard -"@firebase/storage@npm:0.11.2": - version: 0.11.2 - resolution: "@firebase/storage@npm:0.11.2" +"@firebase/storage@npm:0.12.0": + version: 0.12.0 + resolution: "@firebase/storage@npm:0.12.0" dependencies: "@firebase/component": "npm:0.6.4" "@firebase/util": "npm:1.9.3" - node-fetch: "npm:2.6.7" tslib: "npm:^2.1.0" + undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x - checksum: 9eedefa16eede113f56dd0100d52714539aa7ead23895ac14979ffa961440619ccb2b28090541cde430f0f20d084398e518eaf18378c6e88873e7b86b9247c63 + checksum: c7c7284dd92ab11c5584b1e806e9fd0c8e76b8292fefcabe9a871a323e235a42c424d92416d6ec50b95436b6fc2552ee7b981816b7188ad266426f5dd89e9102 languageName: node linkType: hard @@ -3693,10 +3693,10 @@ __metadata: languageName: node linkType: hard -"@firebase/webchannel-wrapper@npm:0.10.3": - version: 0.10.3 - resolution: "@firebase/webchannel-wrapper@npm:0.10.3" - checksum: c4ff8be44b8760eb2d8b8842f39b970534706721e479a3ee69455613f0b1a6a7aaea77862512f275ed7219216229539c36d3276f9c2e79d5fcdb8b1a99f4f966 +"@firebase/webchannel-wrapper@npm:0.10.5": + version: 0.10.5 + resolution: "@firebase/webchannel-wrapper@npm:0.10.5" + checksum: efe7f9cec3fb23b023c42820de0afe81175d7465783d9916223405d8cf1ffccfc30fbd779ae57c217c648e3c4c19ecfaf189478b35e887a33355158b4f6c25d5 languageName: node linkType: hard @@ -7746,12 +7746,12 @@ __metadata: "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" core-js: "npm:3.35.1" - firebase: "npm:10.6.0" + firebase: "npm:10.7.0" jest: "npm:29.7.0" react: "npm:18.2.0" typescript: "npm:5.3.3" peerDependencies: - firebase: 10.6.0 + firebase: 10.7.0 languageName: unknown linkType: soft @@ -18980,37 +18980,37 @@ __metadata: languageName: node linkType: hard -"firebase@npm:10.6.0": - version: 10.6.0 - resolution: "firebase@npm:10.6.0" +"firebase@npm:10.7.0": + version: 10.7.0 + resolution: "firebase@npm:10.7.0" dependencies: "@firebase/analytics": "npm:0.10.0" "@firebase/analytics-compat": "npm:0.2.6" - "@firebase/app": "npm:0.9.23" + "@firebase/app": "npm:0.9.24" "@firebase/app-check": "npm:0.8.0" "@firebase/app-check-compat": "npm:0.3.7" - "@firebase/app-compat": "npm:0.2.23" + "@firebase/app-compat": "npm:0.2.24" "@firebase/app-types": "npm:0.9.0" - "@firebase/auth": "npm:1.4.0" - "@firebase/auth-compat": "npm:0.4.9" + "@firebase/auth": "npm:1.5.0" + "@firebase/auth-compat": "npm:0.5.0" "@firebase/database": "npm:1.0.1" "@firebase/database-compat": "npm:1.0.1" - "@firebase/firestore": "npm:4.3.2" - "@firebase/firestore-compat": "npm:0.3.22" - "@firebase/functions": "npm:0.10.0" - "@firebase/functions-compat": "npm:0.3.5" + "@firebase/firestore": "npm:4.4.0" + "@firebase/firestore-compat": "npm:0.3.23" + "@firebase/functions": "npm:0.11.0" + "@firebase/functions-compat": "npm:0.3.6" "@firebase/installations": "npm:0.6.4" "@firebase/installations-compat": "npm:0.2.4" - "@firebase/messaging": "npm:0.12.4" - "@firebase/messaging-compat": "npm:0.2.4" + "@firebase/messaging": "npm:0.12.5" + "@firebase/messaging-compat": "npm:0.2.5" "@firebase/performance": "npm:0.6.4" "@firebase/performance-compat": "npm:0.2.4" "@firebase/remote-config": "npm:0.4.4" "@firebase/remote-config-compat": "npm:0.2.4" - "@firebase/storage": "npm:0.11.2" - "@firebase/storage-compat": "npm:0.3.2" + "@firebase/storage": "npm:0.12.0" + "@firebase/storage-compat": "npm:0.3.3" "@firebase/util": "npm:1.9.3" - checksum: f87fd49a137e009786edd62c72ae8a6365f152846a8e092fa6d06f407bf56d19f3b158e4656d043a365b091cd296e74706b18245f53a490d858c211d2ec84ac6 + checksum: 7d114fb940579be91248afb0717e7cd74c8f460ab52ce386ae4dcea7e30cb25466cffdd507fd7b8c1c212be50a4eb694763f26482f419d3091c85a1728808756 languageName: node linkType: hard @@ -32341,6 +32341,15 @@ __metadata: languageName: node linkType: hard +"undici@npm:5.26.5": + version: 5.26.5 + resolution: "undici@npm:5.26.5" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: fb4147129abc097a8c7098bb7a29e1026c09c281967efb044041d403985423d09d2b8241e8635b7860f05d8c75565946d8dcc839a3b42804509a3ee56d958716 + languageName: node + linkType: hard + "undici@npm:^5.19.1, undici@npm:^5.25.4": version: 5.27.2 resolution: "undici@npm:5.27.2" From a3159c4c04a1b4b98a3cefe1cb3e3a1ec4a0422d Mon Sep 17 00:00:00 2001 From: Amy Haywood Dutton Date: Fri, 2 Feb 2024 02:59:55 -0600 Subject: [PATCH 068/119] docs(typo): Removed `rw` from `yarn install` command (#9954) --- packages/mailer/handlers/resend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mailer/handlers/resend/README.md b/packages/mailer/handlers/resend/README.md index 4a0db78bd3ef..8d0c6ba86028 100644 --- a/packages/mailer/handlers/resend/README.md +++ b/packages/mailer/handlers/resend/README.md @@ -9,7 +9,7 @@ We assume you have the basic boilerplate for the redwood mailer present. We also We should install this handler package as a production dependency of the API side. We can do this with the following command: ```bash -yarn rw workspace api add @redwoodjs/mailer-handler-resend +yarn workspace api add @redwoodjs/mailer-handler-resend ``` After this you should be able to import this handler into your `api/src/lib/mailer.ts` file and create an instance of this handler with your API key. From 3541d4ce6b3a7a16c0cbcee974eb80e8ef63145d Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Fri, 2 Feb 2024 10:04:25 +0100 Subject: [PATCH 069/119] fix(studio): Remove unused setting inMemory (#9956) --- packages/project-config/src/__tests__/config.test.ts | 5 ----- .../src/__tests__/fixtures/redwood.studio.dbauth.toml | 1 - .../src/__tests__/fixtures/redwood.studio.supabase.toml | 1 - .../src/__tests__/fixtures/redwood.studio.toml | 1 - packages/project-config/src/config.ts | 2 -- 5 files changed, 10 deletions(-) diff --git a/packages/project-config/src/__tests__/config.test.ts b/packages/project-config/src/__tests__/config.test.ts index 0388c4930211..ec71571882b3 100644 --- a/packages/project-config/src/__tests__/config.test.ts +++ b/packages/project-config/src/__tests__/config.test.ts @@ -88,7 +88,6 @@ describe('getConfig', () => { }, "endpoint": "graphql", }, - "inMemory": false, }, "web": { "a11y": true, @@ -110,7 +109,6 @@ describe('getConfig', () => { const config = getConfig(path.join(__dirname, './fixtures/redwood.toml')) expect(config.web.port).toEqual(8888) - expect(config.studio.inMemory).toEqual(false) expect(config.studio.graphiql?.endpoint).toEqual('graphql') }) @@ -120,7 +118,6 @@ describe('getConfig', () => { path.join(__dirname, './fixtures/redwood.studio.toml') ) - expect(config.studio.inMemory).toEqual(false) expect(config.studio.graphiql?.endpoint).toEqual('graphql-endpoint') }) @@ -128,7 +125,6 @@ describe('getConfig', () => { const config = getConfig( path.join(__dirname, './fixtures/redwood.studio.dbauth.toml') ) - expect(config.studio.inMemory).toEqual(false) expect(config.studio.graphiql?.endpoint).toEqual('graphql') expect(config.studio.graphiql?.authImpersonation?.authProvider).toEqual( 'dbAuth' @@ -144,7 +140,6 @@ describe('getConfig', () => { path.join(__dirname, './fixtures/redwood.studio.supabase.toml') ) - expect(config.studio.inMemory).toEqual(false) expect(config.studio.graphiql?.endpoint).toEqual('graphql') expect(config.studio.graphiql?.authImpersonation?.authProvider).toEqual( 'supabase' diff --git a/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml b/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml index 638b8f319dbb..b0da869fc75a 100644 --- a/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml +++ b/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml @@ -1,7 +1,6 @@ [web] port = 8888 [studio] - inMemory = false [studio.graphiql] endpoint = "graphql" [studio.graphiql.authImpersonation] diff --git a/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml b/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml index dc0792646587..b5b099b7307a 100644 --- a/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml +++ b/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml @@ -1,7 +1,6 @@ [web] port = 8888 [studio] - inMemory = false [studio.graphiql] endpoint = "graphql" [studio.graphiql.authImpersonation] diff --git a/packages/project-config/src/__tests__/fixtures/redwood.studio.toml b/packages/project-config/src/__tests__/fixtures/redwood.studio.toml index 65803423fb73..45d19da62115 100644 --- a/packages/project-config/src/__tests__/fixtures/redwood.studio.toml +++ b/packages/project-config/src/__tests__/fixtures/redwood.studio.toml @@ -1,6 +1,5 @@ [web] port = 8888 [studio] - inMemory = false [studio.graphiql] endpoint = "graphql-endpoint" diff --git a/packages/project-config/src/config.ts b/packages/project-config/src/config.ts index 5021dc29ad23..64bdb06247df 100644 --- a/packages/project-config/src/config.ts +++ b/packages/project-config/src/config.ts @@ -76,7 +76,6 @@ interface AuthImpersonationConfig { interface StudioConfig { basePort: number - inMemory: boolean graphiql?: GraphiQLStudioConfig } @@ -159,7 +158,6 @@ const DEFAULT_CONFIG: Config = { }, studio: { basePort: 4318, - inMemory: false, graphiql: { endpoint: 'graphql', authImpersonation: { From 584002347e3c5771691865d535b6eef83fd04958 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Fri, 2 Feb 2024 15:19:00 +0100 Subject: [PATCH 070/119] fix(gql): Better graphql.config.js template (#9957) * Explain what the graphql config file is used for * Make it use the `@redwoodjs/project-config` package instead of `@redwoodjs/internal` * Add jsdoc types --- __fixtures__/fragment-test-project/graphql.config.js | 9 +++++++-- __fixtures__/fragment-test-project/package.json | 3 ++- __fixtures__/test-project/graphql.config.js | 9 +++++++-- __fixtures__/test-project/package.json | 3 ++- .../create-redwood-app/templates/js/graphql.config.js | 9 +++++++-- packages/create-redwood-app/templates/js/package.json | 3 ++- .../create-redwood-app/templates/ts/graphql.config.js | 9 +++++++-- packages/create-redwood-app/templates/ts/package.json | 3 ++- 8 files changed, 36 insertions(+), 12 deletions(-) diff --git a/__fixtures__/fragment-test-project/graphql.config.js b/__fixtures__/fragment-test-project/graphql.config.js index e6c0ef53af71..c564451acb66 100644 --- a/__fixtures__/fragment-test-project/graphql.config.js +++ b/__fixtures__/fragment-test-project/graphql.config.js @@ -1,6 +1,11 @@ -const { getPaths } = require('@redwoodjs/internal') +// This file is used by the VSCode GraphQL extension -module.exports = { +const { getPaths } = require('@redwoodjs/project-config') + +/** @type {import('graphql-config').IGraphQLConfig} */ +const config = { schema: getPaths().generated.schema, documents: './web/src/**/!(*.d).{ts,tsx,js,jsx}', } + +module.exports = config diff --git a/__fixtures__/fragment-test-project/package.json b/__fixtures__/fragment-test-project/package.json index 1ab4a33bedab..3d2f18b5f1d5 100644 --- a/__fixtures__/fragment-test-project/package.json +++ b/__fixtures__/fragment-test-project/package.json @@ -7,7 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7" + "@redwoodjs/core": "6.0.7", + "@redwoodjs/project-config": "6.0.7" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/__fixtures__/test-project/graphql.config.js b/__fixtures__/test-project/graphql.config.js index e6c0ef53af71..c564451acb66 100644 --- a/__fixtures__/test-project/graphql.config.js +++ b/__fixtures__/test-project/graphql.config.js @@ -1,6 +1,11 @@ -const { getPaths } = require('@redwoodjs/internal') +// This file is used by the VSCode GraphQL extension -module.exports = { +const { getPaths } = require('@redwoodjs/project-config') + +/** @type {import('graphql-config').IGraphQLConfig} */ +const config = { schema: getPaths().generated.schema, documents: './web/src/**/!(*.d).{ts,tsx,js,jsx}', } + +module.exports = config diff --git a/__fixtures__/test-project/package.json b/__fixtures__/test-project/package.json index 1ab4a33bedab..3d2f18b5f1d5 100644 --- a/__fixtures__/test-project/package.json +++ b/__fixtures__/test-project/package.json @@ -7,7 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7" + "@redwoodjs/core": "6.0.7", + "@redwoodjs/project-config": "6.0.7" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/packages/create-redwood-app/templates/js/graphql.config.js b/packages/create-redwood-app/templates/js/graphql.config.js index e6c0ef53af71..c564451acb66 100644 --- a/packages/create-redwood-app/templates/js/graphql.config.js +++ b/packages/create-redwood-app/templates/js/graphql.config.js @@ -1,6 +1,11 @@ -const { getPaths } = require('@redwoodjs/internal') +// This file is used by the VSCode GraphQL extension -module.exports = { +const { getPaths } = require('@redwoodjs/project-config') + +/** @type {import('graphql-config').IGraphQLConfig} */ +const config = { schema: getPaths().generated.schema, documents: './web/src/**/!(*.d).{ts,tsx,js,jsx}', } + +module.exports = config diff --git a/packages/create-redwood-app/templates/js/package.json b/packages/create-redwood-app/templates/js/package.json index 1ab4a33bedab..3d2f18b5f1d5 100644 --- a/packages/create-redwood-app/templates/js/package.json +++ b/packages/create-redwood-app/templates/js/package.json @@ -7,7 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7" + "@redwoodjs/core": "6.0.7", + "@redwoodjs/project-config": "6.0.7" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/packages/create-redwood-app/templates/ts/graphql.config.js b/packages/create-redwood-app/templates/ts/graphql.config.js index e6c0ef53af71..c564451acb66 100644 --- a/packages/create-redwood-app/templates/ts/graphql.config.js +++ b/packages/create-redwood-app/templates/ts/graphql.config.js @@ -1,6 +1,11 @@ -const { getPaths } = require('@redwoodjs/internal') +// This file is used by the VSCode GraphQL extension -module.exports = { +const { getPaths } = require('@redwoodjs/project-config') + +/** @type {import('graphql-config').IGraphQLConfig} */ +const config = { schema: getPaths().generated.schema, documents: './web/src/**/!(*.d).{ts,tsx,js,jsx}', } + +module.exports = config diff --git a/packages/create-redwood-app/templates/ts/package.json b/packages/create-redwood-app/templates/ts/package.json index 1ab4a33bedab..3d2f18b5f1d5 100644 --- a/packages/create-redwood-app/templates/ts/package.json +++ b/packages/create-redwood-app/templates/ts/package.json @@ -7,7 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7" + "@redwoodjs/core": "6.0.7", + "@redwoodjs/project-config": "6.0.7" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", From 47f4dad8389528bf3d5bf37fd9cc4a77b969d128 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Fri, 2 Feb 2024 15:54:07 +0100 Subject: [PATCH 071/119] Update Studio docs (#9955) --- .vscode/settings.json | 3 +++ docs/docs/studio.md | 55 +++++++++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f26ebb65101c..e3fc6a2c092c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -22,8 +22,11 @@ "typescript.tsdk": "node_modules/typescript/lib", "peacock.color": "#b85833", "cSpell.words": [ + "autoplay", "execa", "Fastify", + "graphiql", + "opentelemetry", "pino", "redwoodjs", "RWJS" diff --git a/docs/docs/studio.md b/docs/docs/studio.md index c37d896fe072..09694100cc93 100644 --- a/docs/docs/studio.md +++ b/docs/docs/studio.md @@ -47,27 +47,20 @@ yarn rw studio The first time you run this command it will likely install the studio package which may take a small amount of time. #### OpenTelemetry -If you want studio to pick up telemetry from you app automatically please ensure you've setup opentelemetry. A guide on this can be found [here](https://community.redwoodjs.com/t/opentelemetry-support-experimental/4772?u=josh-walker-gm) +If you want studio to pick up telemetry from you app automatically please ensure you've setup opentelemetry. A guide on this can be found [here](https://community.redwoodjs.com/t/opentelemetry-support-experimental/4772) ### Features -#### TOML -The following TOML options are now available which can control the studio behaviour. -```toml -[studio.graphiql.authImpersonation] - # authProvider = undefined (default value) - jwtSecret = 'secret' - # userId = undefined (default value) - # email = undefined (default value) - # roles = undefined (default value) -``` #### GraphiQL Auth Impersonation +You need to configure Studio using settings inside `redwood.toml` for auth +impersonation to work. See the sections below for detailed information. + ##### DbAuth -Requires `SESSION_SECRET` envar for cookie encryption. +Requires a `SESSION_SECRET` environment variable for cookie encryption. -TOML example: +`redwood.toml` example: ```toml [studio.graphiql.authImpersonation] @@ -78,9 +71,11 @@ TOML example: ##### Netlify -Since Netlify does not expose the JWT secret used to sign the token in production, impersonation requires a `jwtSecret` to encode and decode the auth token. +Since Netlify does not expose the JWT secret used to sign the token in +production, impersonation requires a `jwtSecret` to encode and decode the auth +token. -TOML example: +`redwood.toml` example: ```toml [studio.graphiql.authImpersonation] @@ -92,9 +87,9 @@ TOML example: ##### Supabase -Requires `SUPABASE_JWT_SECRET` envar for JWT signing. +Requires a `SUPABASE_JWT_SECRET` environment variable for JWT signing. -TOML example: +`redwood.toml` example: ```toml [studio.graphiql.authImpersonation] @@ -103,8 +98,28 @@ TOML example: userId = "1" ``` -#### Database File -Studio stores the ingested telemetry to `studio/prisma.db` within the `.redwood` folder. You should not need to touch this file other than if you wish to delete it to erase any existing telemetry data. +### Settings + +All settings for Studio are located in `redwood.toml`, which you can find at +the root of your Redwood project. + +* `[studio.graphiql.authImpersonation].*` – Used to gain access to GraphQL + endpoints that require authentication. See section above on auth + impersonation for more details. +* `[studio].basePort` – Studio's web front-end will run on this port (default: + 4318). It is also used to calculate the port for the mailer integration and + other things. Please choose a port that is not already in use, and that has a + few more free ports available next to it. + +### Database File +Studio stores the ingested telemetry to `studio/prisma.db` within the +`.redwood` folder. You should not need to touch this file other than if you +wish to delete it to erase any existing telemetry data. ## Availability -The setup command is currently available from the `canary` version of Redwood. You can try this out in a new project by running `yarn rw upgrade --tag canary` and following any general upgrade steps recommend on the [forums](https://community.redwoodjs.com/c/announcements/releases-and-upgrade-guides/18). +Along the release of Redwood v7, Studio has been rewritten and is available as +a stable version. Just run `yarn rw studio` to start it! Prior to RW v7 Studio +was available as an experimental feature. If you're still not using the stable +version of RW v7, see this forum topic for information on the old experimental +version of Studio +https://community.redwoodjs.com/t/redwood-studio-experimental/4771 From 2df05e33c87388945b7dc068946f2cfe69009a83 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Fri, 2 Feb 2024 20:04:56 +0100 Subject: [PATCH 072/119] feat(gql): Codemod existing projects to get newest gql config (#9959) --- .../cli/src/testUtils/matchFolderTransform.ts | 4 ++-- .../v7.x.x/updateGraphQLConfig/README.md | 8 ++++++++ .../__testfixtures__/input/graphql.config.js | 5 +++++ .../__testfixtures__/output/graphql.config.js | 11 +++++++++++ .../__tests__/updateGraphqlConfig.test.ts | 7 +++++++ .../updateGraphQLConfig/updateGraphqlConfig.ts | 17 +++++++++++++++++ .../updateGraphqlConfig.yargs.ts | 13 +++++++++++++ .../src/testUtils/matchFolderTransform.ts | 4 ++-- 8 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/README.md create mode 100644 packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/input/graphql.config.js create mode 100644 packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/output/graphql.config.js create mode 100644 packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__tests__/updateGraphqlConfig.test.ts create mode 100644 packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.ts create mode 100644 packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.yargs.ts diff --git a/packages/cli/src/testUtils/matchFolderTransform.ts b/packages/cli/src/testUtils/matchFolderTransform.ts index c17b14822db6..03bdb766c7c3 100644 --- a/packages/cli/src/testUtils/matchFolderTransform.ts +++ b/packages/cli/src/testUtils/matchFolderTransform.ts @@ -21,7 +21,7 @@ type Options = { type MatchFolderTransformFunction = ( transformFunctionOrName: (() => any) | string, - fixtureName: string, + fixtureName?: string, options?: Options ) => Promise @@ -53,7 +53,7 @@ export const matchFolderTransform: MatchFolderTransformFunction = async ( const fixtureFolder = path.join( testPath, '../../__testfixtures__', - fixtureName + fixtureName || '' ) const fixtureInputDir = path.join(fixtureFolder, 'input') diff --git a/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/README.md b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/README.md new file mode 100644 index 000000000000..cb6ad5fb8147 --- /dev/null +++ b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/README.md @@ -0,0 +1,8 @@ +# Update graphql.config.js + +Replaces the root `graphql.config.js` file with one that includes types and gql +documents support. + +Fetches the file from the create-redwood-app template files on GitHub + +No jscodeshift is involved. diff --git a/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/input/graphql.config.js b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/input/graphql.config.js new file mode 100644 index 000000000000..2da7862f6b57 --- /dev/null +++ b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/input/graphql.config.js @@ -0,0 +1,5 @@ +const { getPaths } = require('@redwoodjs/internal') + +module.exports = { + schema: getPaths().generated.schema, +} diff --git a/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/output/graphql.config.js b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/output/graphql.config.js new file mode 100644 index 000000000000..c564451acb66 --- /dev/null +++ b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__testfixtures__/output/graphql.config.js @@ -0,0 +1,11 @@ +// This file is used by the VSCode GraphQL extension + +const { getPaths } = require('@redwoodjs/project-config') + +/** @type {import('graphql-config').IGraphQLConfig} */ +const config = { + schema: getPaths().generated.schema, + documents: './web/src/**/!(*.d).{ts,tsx,js,jsx}', +} + +module.exports = config diff --git a/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__tests__/updateGraphqlConfig.test.ts b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__tests__/updateGraphqlConfig.test.ts new file mode 100644 index 000000000000..b7a79df8ee9b --- /dev/null +++ b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/__tests__/updateGraphqlConfig.test.ts @@ -0,0 +1,7 @@ +import { updateGraphqlConfig } from '../updateGraphqlConfig' + +describe('updateGraphQLConfig', () => { + it('Replaces graphql.config.js with a new version downloaded from GH', async () => { + await matchFolderTransform(updateGraphqlConfig) + }) +}) diff --git a/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.ts b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.ts new file mode 100644 index 000000000000..e00172c980d7 --- /dev/null +++ b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.ts @@ -0,0 +1,17 @@ +import fs from 'fs' +import path from 'path' + +import { fetch } from '@whatwg-node/fetch' + +import { getPaths } from '@redwoodjs/project-config' + +export const updateGraphqlConfig = async () => { + const res = await fetch( + // TODO: Have to come back here to update the URL when we have a more + // stable location than main + // 'https://raw.githubusercontent.com/redwoodjs/redwood/release/major/v7.0.0/packages/create-redwood-app/templates/ts/graphql.config.js' + 'https://raw.githubusercontent.com/redwoodjs/redwood/main/packages/create-redwood-app/templates/ts/graphql.config.js' + ) + const text = await res.text() + fs.writeFileSync(path.join(getPaths().base, 'graphql.config.js'), text) +} diff --git a/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.yargs.ts b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.yargs.ts new file mode 100644 index 000000000000..7e8a7b286534 --- /dev/null +++ b/packages/codemods/src/codemods/v7.x.x/updateGraphQLConfig/updateGraphqlConfig.yargs.ts @@ -0,0 +1,13 @@ +import task from 'tasuku' + +import { updateGraphqlConfig } from './updateGraphqlConfig' + +export const command = 'update-graphql-config' +export const description = + '(v6.x->v7.x) Update graphql.config.js from the create-redwood-app template' + +export const handler = () => { + task('Update root graphql.config.js file', async () => { + await updateGraphqlConfig() + }) +} diff --git a/packages/codemods/src/testUtils/matchFolderTransform.ts b/packages/codemods/src/testUtils/matchFolderTransform.ts index a56298c6ae84..8c7a77cbf2ef 100644 --- a/packages/codemods/src/testUtils/matchFolderTransform.ts +++ b/packages/codemods/src/testUtils/matchFolderTransform.ts @@ -19,7 +19,7 @@ type Options = { type MatchFolderTransformFunction = ( transformFunctionOrName: (() => any) | string, - fixtureName: string, + fixtureName?: string, options?: Options ) => Promise @@ -47,7 +47,7 @@ export const matchFolderTransform: MatchFolderTransformFunction = async ( const fixtureFolder = path.join( testPath, '../../__testfixtures__', - fixtureName + fixtureName || '' ) const fixtureInputDir = path.join(fixtureFolder, 'input') From 6701dd41759aa21418c7a2106cb1e66503a41287 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 2 Feb 2024 19:34:50 +0000 Subject: [PATCH 073/119] chore(server): improve server tests (#9958) I left these server tests in a not-so-great state after https://github.com/redwoodjs/redwood/pull/9948. Got around to improving them today with @Josh-Walker-GM. Want to add more, but this covers the new features I added, mainly the configuration around the web and api ports and hosts. I've tried to add this to CI before but they were flakey. I feel like they're less flakey now and Josh helped me with retry logic. So I think we could try adding them to CI again and see how it goes. You can run these tests after building the framework. `cd` into `tasks/server-tests` and run `yarn vitest run`. The tests also log the bins they're using and you can run those verbatim. I split the tests up into separate files mainly because the terminal becomes unreadable if they're all in the same one. --------- Co-authored-by: Tobbe Lundberg --- .github/workflows/ci.yml | 41 +++ .../__snapshots__/bothServer.test.mts.snap | 139 -------- tasks/server-tests/bothServer.test.mts | 325 ++++++++---------- tasks/server-tests/bothServerAPI.test.mts | 100 ++++++ tasks/server-tests/bothServerWeb.test.mts | 83 +++++ tasks/server-tests/helpers.mts | 3 - tasks/server-tests/vitest.config.mts | 16 + tasks/server-tests/vitest.setup.mts | 136 ++++++++ 8 files changed, 528 insertions(+), 315 deletions(-) delete mode 100644 tasks/server-tests/__snapshots__/bothServer.test.mts.snap create mode 100644 tasks/server-tests/bothServerAPI.test.mts create mode 100644 tasks/server-tests/bothServerWeb.test.mts delete mode 100644 tasks/server-tests/helpers.mts create mode 100644 tasks/server-tests/vitest.config.mts create mode 100644 tasks/server-tests/vitest.setup.mts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d779a30040c5..078d94ee5ea4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -711,3 +711,44 @@ jobs: steps: - run: echo "Skipped" + + server-tests: + needs: check + + name: Server tests + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Enable Corepack + run: corepack enable + + - name: ⬢ Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: 🐈 Set up yarn cache + uses: ./.github/actions/set-up-yarn-cache + + - name: 🐈 Yarn install + run: yarn install --inline-builds + env: + GITHUB_TOKEN: ${{ github.token }} + + - name: 🔨 Build + run: yarn build + + - run: yarn vitest run + working-directory: ./tasks/server-tests + + server-tests-skip: + needs: detect-changes + if: needs.detect-changes.outputs.onlydocs == 'true' + + name: Server tests + runs-on: ubuntu-latest + + steps: + - run: echo "Skipped" diff --git a/tasks/server-tests/__snapshots__/bothServer.test.mts.snap b/tasks/server-tests/__snapshots__/bothServer.test.mts.snap deleted file mode 100644 index 1c432606f99f..000000000000 --- a/tasks/server-tests/__snapshots__/bothServer.test.mts.snap +++ /dev/null @@ -1,139 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`serve both (/Users/dom/projects/redwood/redwood/packages/api-server/dist/bin.js) > errors out on unknown args 1`] = ` -"rw-server - -Start a server for serving the api and web sides - -Commands: - rw-server Start a server for serving the api and web sides [default] - rw-server api Start a server for serving the api side - rw-server web Start a server for serving the web side - -Options: - --webPort, --web-port The port for the web server to - listen on [number] - --webHost, --web-host The host for the web server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiPort, --api-port The port for the api server to - listen on [number] - --apiHost, --api-host The host for the api server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - -h, --help Show help [boolean] - -v, --version Show version number [boolean] - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve both (/Users/dom/projects/redwood/redwood/packages/api-server/dist/bin.js) > has help configured 1`] = ` -"rw-server - -Start a server for serving the api and web sides - -Commands: - rw-server Start a server for serving the api and web sides [default] - rw-server api Start a server for serving the api side - rw-server web Start a server for serving the web side - -Options: - --webPort, --web-port The port for the web server to - listen on [number] - --webHost, --web-host The host for the web server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiPort, --api-port The port for the api server to - listen on [number] - --apiHost, --api-host The host for the api server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - -h, --help Show help [boolean] - -v, --version Show version number [boolean] -" -`; - -exports[`serve both ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve' ]) > errors out on unknown args 1`] = ` -"rw serve [side] - -Start a server for serving both the api and web sides - -Commands: - rw serve Start a server for serving the api and web sides [default] - rw serve api Start a server for serving the api side - rw serve web Start a server for serving the web side - -Options: - --version Show version number [boolean] - --cwd Working directory to use (where - \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage - telemetry to RedwoodJS [boolean] - --webPort, --web-port The port for the web server to - listen on [number] - --webHost, --web-host The host for the web server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiPort, --api-port The port for the api server to - listen on [number] - --apiHost, --api-host The host for the api server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - -h, --help Show help [boolean] - -Also see the Redwood CLI Reference -(​https://redwoodjs.com/docs/cli-commands#serve​) - -Unknown arguments: foo, bar, baz -" -`; - -exports[`serve both ([ '/Users/dom/projects/redwood/redwood/packages/cli/dist/index.js', 'serve' ]) > has help configured 1`] = ` -"rw serve [side] - -Start a server for serving both the api and web sides - -Commands: - rw serve Start a server for serving the api and web sides [default] - rw serve api Start a server for serving the api side - rw serve web Start a server for serving the web side - -Options: - --version Show version number [boolean] - --cwd Working directory to use (where - \`redwood.toml\` is located) - --telemetry Whether to send anonymous usage - telemetry to RedwoodJS [boolean] - --webPort, --web-port The port for the web server to - listen on [number] - --webHost, --web-host The host for the web server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiPort, --api-port The port for the api server to - listen on [number] - --apiHost, --api-host The host for the api server to - listen on. Note that you most likely - want this to be '0.0.0.0' in - production [string] - --apiRootPath, --api-root-path, Root path where your api functions - --rootPath, --root-path are served [string] [default: "/"] - -h, --help Show help [boolean] - -Also see the Redwood CLI Reference -(​https://redwoodjs.com/docs/cli-commands#serve​) -" -`; diff --git a/tasks/server-tests/bothServer.test.mts b/tasks/server-tests/bothServer.test.mts index e55aa0b60b07..4e6ec138c022 100644 --- a/tasks/server-tests/bothServer.test.mts +++ b/tasks/server-tests/bothServer.test.mts @@ -1,191 +1,170 @@ -import { fileURLToPath } from 'node:url' - -import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest' -import { fs, path, $ } from 'zx' - -import { getConfig } from '@redwoodjs/project-config' -import { sleep } from './helpers.mjs' - -////////// -// Setup -////////// - -$.verbose = !!process.env.VERBOSE - -const __dirname = fileURLToPath(new URL('./', import.meta.url)) -const FIXTURE_PATH = fileURLToPath( - new URL('./fixtures/redwood-app', import.meta.url) -) - -// @redwoodjs/cli (yarn rw) -const rw = path.resolve(__dirname, '../../packages/cli/dist/index.js') -// @redwoodjs/api-server (yarn rw-server) -const rwServer = path.resolve( - __dirname, - '../../packages/api-server/dist/bin.js' -) -// @redwoodjs/web-server (yarn rw-web-server) -const rwWebServer = path.resolve( - __dirname, - '../../packages/web-server/dist/bin.js' -) - -let original_RWJS_CWD -let projectConfig -beforeAll(() => { - original_RWJS_CWD = process.env.RWJS_CWD - process.env.RWJS_CWD = FIXTURE_PATH - projectConfig = getConfig() - console.log([ - 'These tests use the following command to run the server:', - `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rw} serve`, - `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rwServer}`, - `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rwWebServer}`, - ].join('\n')) -}) -afterAll(() => { - process.env.RWJS_CWD = original_RWJS_CWD -}) - -// Clean up the child process after each test -let p -afterEach(async () => { - if (!p) { - return - } - p.kill() - // Wait for child process to terminate - try { - await p - } catch { - // Ignore - } -}) +import { describe, expect, it } from 'vitest' +import { $ } from 'zx' -const TIMEOUT = 1_000 * 2 +import { rw, rwServer } from './vitest.setup.mjs' -////////// -// Tests -////////// - -describe.each([ - [[rw, 'serve']], - [rwServer], -])('serve both (%s)', (cmd) => { +describe('rw serve', () => { it("has help configured", async () => { - const { stdout } = await $`yarn node ${cmd} --help` - expect(stdout).toMatchSnapshot() + const { stdout } = await $`yarn node ${rw} serve --help` + expect(stdout).toMatchInlineSnapshot(` + "rw serve [side] + + Start a server for serving both the api and web sides + + Commands: + rw serve Start a server for serving the api and web sides [default] + rw serve api Start a server for serving the api side + rw serve web Start a server for serving the web side + + Options: + --version Show version number [boolean] + --cwd Working directory to use (where + \`redwood.toml\` is located) + --telemetry Whether to send anonymous usage + telemetry to RedwoodJS [boolean] + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + + Also see the Redwood CLI Reference + (​https://redwoodjs.com/docs/cli-commands#serve​) + " + `) }) it('errors out on unknown args', async () => { try { - await $`yarn node ${cmd} --foo --bar --baz` + await $`yarn node ${rw} serve --foo --bar --baz` expect(true).toEqual(false) } catch (p) { expect(p.exitCode).toEqual(1) expect(p.stdout).toEqual('') - expect(p.stderr).toMatchSnapshot() + expect(p.stderr).toMatchInlineSnapshot(` + "rw serve [side] + + Start a server for serving both the api and web sides + + Commands: + rw serve Start a server for serving the api and web sides [default] + rw serve api Start a server for serving the api side + rw serve web Start a server for serving the web side + + Options: + --version Show version number [boolean] + --cwd Working directory to use (where + \`redwood.toml\` is located) + --telemetry Whether to send anonymous usage + telemetry to RedwoodJS [boolean] + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + + Also see the Redwood CLI Reference + (​https://redwoodjs.com/docs/cli-commands#serve​) + + Unknown arguments: foo, bar, baz + " + `) } }) +}) - describe('webPort', () => { - it("`--webPort` changes the web server's port", async () => { - const webPort = 8920 - p = $`yarn node ${cmd} --webPort ${webPort}` - await sleep(TIMEOUT) - await test({ webPort }) - }) - - it("`REDWOOD_WEB_PORT` changes the web server's port", async () => { - process.env.REDWOOD_WEB_PORT = '8921' - const webPort = +process.env.REDWOOD_WEB_PORT - p = $`yarn node ${cmd}` - await sleep(TIMEOUT) - await test({ webPort }) - delete process.env.REDWOOD_WEB_PORT - }) - - it('`--webPort` takes precedence over `REDWOOD_WEB_PORT`', async () => { - const webPort = 8922 - process.env.REDWOOD_WEB_PORT = '8923' - p = $`yarn node ${cmd} --webPort ${webPort}` - await sleep(TIMEOUT) - await test({ webPort }) - delete process.env.REDWOOD_WEB_PORT - }) - - it('`[web].port` changes the port', async () => { - p = $`yarn node ${cmd}` - await sleep(TIMEOUT) - await test({ port: projectConfig.web.port }) - }) +describe('rwServer', () => { + it("has help configured", async () => { + const { stdout } = await $`yarn node ${rwServer} --help` + expect(stdout).toMatchInlineSnapshot(` + "rw-server + + Start a server for serving the api and web sides + + Commands: + rw-server Start a server for serving the api and web sides [default] + rw-server api Start a server for serving the api side + rw-server web Start a server for serving the web side + + Options: + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + -v, --version Show version number [boolean] + " + `) }) - describe('webHost', () => { - it("`--webHost` changes the web server's host", async () => { - const webHost = '127.0.0.1' - p = $`yarn node ${cmd} --webHost ${webHost}` - await sleep(TIMEOUT) - await test({ webHost }) - }) - - it("`REDWOOD_WEB_HOST` changes the web server's host", async () => { - process.env.REDWOOD_WEB_HOST = '::1' - const webHost = process.env.REDWOOD_WEB_HOST - p = $`yarn node ${cmd}` - await sleep(TIMEOUT) - await test({ webHost }) - delete process.env.REDWOOD_WEB_HOST - }) - - it('`--webHost` takes precedence over `REDWOOD_WEB_HOST`', async () => { - const webHost = '::' - process.env.REDWOOD_WEB_HOST = '0.0.0.0' - p = $`yarn node ${cmd} --webHost ${webHost}` - await sleep(TIMEOUT) - await test({ webHost }) - delete process.env.REDWOOD_WEB_HOST - }) - - it.todo('`[web].host` changes the host') - - it("defaults to '::' if `NODE_ENV` isn't production", async () => { - p = $`yarn node ${cmd}` - await sleep(TIMEOUT) - await test() - }) - - it.todo("defaults to '0.0.0.0' if `NODE_ENV` is production") + it('errors out on unknown args', async () => { + try { + await $`yarn node ${rwServer} --foo --bar --baz` + expect(true).toEqual(false) + } catch (p) { + expect(p.exitCode).toEqual(1) + expect(p.stdout).toEqual('') + expect(p.stderr).toMatchInlineSnapshot(` + "rw-server + + Start a server for serving the api and web sides + + Commands: + rw-server Start a server for serving the api and web sides [default] + rw-server api Start a server for serving the api side + rw-server web Start a server for serving the web side + + Options: + --webPort, --web-port The port for the web server to + listen on [number] + --webHost, --web-host The host for the web server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiPort, --api-port The port for the api server to + listen on [number] + --apiHost, --api-host The host for the api server to + listen on. Note that you most likely + want this to be '0.0.0.0' in + production [string] + --apiRootPath, --api-root-path, Root path where your api functions + --rootPath, --root-path are served [string] [default: "/"] + -h, --help Show help [boolean] + -v, --version Show version number [boolean] + + Unknown arguments: foo, bar, baz + " + `) + } }) }) - -async function test(options = {}) { - options.webHost ??= '::' - if (options.webHost.includes(':')) { - options.webHost = `[${options.webHost}]` - } - options.webPort ??= projectConfig.web.port - - const webRes = await fetch(`http://${options.webHost}:${options.webPort}/about`) - const webBody = await webRes.text() - - expect(webRes.status).toEqual(200) - expect(webBody).toEqual( - fs.readFileSync( - path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), - 'utf-8' - ) - ) - - options.apiHost ??= '::' - if (options.apiHost.includes(':')) { - options.apiHost = `[${options.apiHost}]` - } - options.apiPort ??= projectConfig.api.port - - const apiRes = await fetch(`http://${options.apiHost}:${options.apiPort}/hello`) - const apiBody = await apiRes.json() - - expect(apiRes.status).toEqual(200) - expect(apiBody).toEqual({ data: 'hello function' }) -} diff --git a/tasks/server-tests/bothServerAPI.test.mts b/tasks/server-tests/bothServerAPI.test.mts new file mode 100644 index 000000000000..2fbeed393449 --- /dev/null +++ b/tasks/server-tests/bothServerAPI.test.mts @@ -0,0 +1,100 @@ +import { describe, expect, it } from 'vitest' +import { $ } from 'zx' + +import { rw, rwServer, sleep, test, testContext } from './vitest.setup.mjs' + +describe.each([ + [[rw, 'serve']], + [rwServer], +])('serve both (%s)', (cmd) => { + describe('apiPort', () => { + it("`--apiPort` changes the api server's port", async () => { + const apiPort = 8920 + testContext.p = $`yarn node ${cmd} --apiPort ${apiPort}` + await test({ apiPort }) + }) + + it("`REDWOOD_API_PORT` changes the api server's port", async () => { + process.env.REDWOOD_API_PORT = '8921' + const apiPort = +process.env.REDWOOD_API_PORT + testContext.p = $`yarn node ${cmd}` + await test({ apiPort }) + delete process.env.REDWOOD_API_PORT + }) + + it('`--apiPort` takes precedence over `REDWOOD_API_PORT`', async () => { + const apiPort = 8922 + process.env.REDWOOD_API_PORT = '8923' + testContext.p = $`yarn node ${cmd} --apiPort ${apiPort}` + await test({ apiPort }) + delete process.env.REDWOOD_API_PORT + }) + + it('`[api].port` changes the port', async () => { + testContext.p = $`yarn node ${cmd}` + await test({ apiPort: testContext.projectConfig?.api.port }) + }) + }) + + describe('apiHost', () => { + it("`--apiHost` changes the api server's host", async () => { + const apiHost = '127.0.0.1' + testContext.p = $`yarn node ${cmd} --apiHost ${apiHost}` + await test({ apiHost }) + }) + + it("`REDWOOD_API_HOST` changes the api server's host", async () => { + process.env.REDWOOD_API_HOST = '::1' + const apiHost = process.env.REDWOOD_API_HOST + testContext.p = $`yarn node ${cmd}` + await test({ apiHost }) + delete process.env.REDWOOD_API_HOST + }) + + it('`--apiHost` takes precedence over `REDWOOD_API_HOST`', async () => { + const apiHost = '::' + process.env.REDWOOD_API_HOST = '0.0.0.0' + testContext.p = $`yarn node ${cmd} --apiHost ${apiHost}` + await test({ apiHost }) + delete process.env.REDWOOD_API_HOST + }) + + it("`[api].host` changes the api server's host", async () => { + const originalHost = testContext.projectConfig?.api.host + testContext.projectConfig.api.host = '127.0.0.1' + testContext.p = $`yarn node ${cmd}` + await test() + testContext.projectConfig.api.host = originalHost + }) + + it("defaults to '::' if `NODE_ENV` isn't production", async () => { + testContext.p = $`yarn node ${cmd}` + await test() + }) + + it("defaults to '0.0.0.0' if `NODE_ENV` is production", async () => { + const originalNodeEnv = process.env.NODE_ENV + process.env.NODE_ENV = 'production' + testContext.p = $`yarn node ${cmd}` + await test({ webHost: '0.0.0.0', apiHost: '0.0.0.0' }) + process.env.NODE_ENV = originalNodeEnv + }) + }) + + describe('apiRootPath', () => { + it('`--apiRootPath` changes the api root path', async () => { + const apiRootPath = '/api' + testContext.p = $`yarn node ${cmd} --apiRootPath ${apiRootPath}` + await test({ apiRootPath }) + }) + }) + + it('loads env vars', async () => { + testContext.p = $`yarn node ${cmd}` + await sleep(2000) + const res = await fetch('http://[::]:8911/env') + const body = await res.json() + expect(res.status).toEqual(200) + expect(body).toEqual({ data: '42' }) + }) +}) diff --git a/tasks/server-tests/bothServerWeb.test.mts b/tasks/server-tests/bothServerWeb.test.mts new file mode 100644 index 000000000000..b28e365e9324 --- /dev/null +++ b/tasks/server-tests/bothServerWeb.test.mts @@ -0,0 +1,83 @@ +import { describe, it } from 'vitest' +import { $ } from 'zx' + +import { rw, rwServer, test, testContext } from './vitest.setup.mjs' + +describe.each([ + [[rw, 'serve']], + [rwServer], +])('serve both (%s)', (cmd) => { + describe('webPort', () => { + it("`--webPort` changes the web server's port", async () => { + const webPort = 8920 + testContext.p = $`yarn node ${cmd} --webPort ${webPort}` + await test({ webPort }) + }) + + it("`REDWOOD_WEB_PORT` changes the web server's port", async () => { + process.env.REDWOOD_WEB_PORT = '8921' + const webPort = +process.env.REDWOOD_WEB_PORT + testContext.p = $`yarn node ${cmd}` + await test({ webPort }) + delete process.env.REDWOOD_WEB_PORT + }) + + it('`--webPort` takes precedence over `REDWOOD_WEB_PORT`', async () => { + const webPort = 8922 + process.env.REDWOOD_WEB_PORT = '8923' + testContext.p = $`yarn node ${cmd} --webPort ${webPort}` + await test({ webPort }) + delete process.env.REDWOOD_WEB_PORT + }) + + it('`[web].port` changes the port', async () => { + testContext.p = $`yarn node ${cmd}` + await test({ webPort: testContext.projectConfig?.web.port }) + }) + }) + + describe('webHost', () => { + it("`--webHost` changes the web server's host", async () => { + const webHost = '127.0.0.1' + testContext.p = $`yarn node ${cmd} --webHost ${webHost}` + await test({ webHost }) + }) + + it("`REDWOOD_WEB_HOST` changes the web server's host", async () => { + process.env.REDWOOD_WEB_HOST = '::1' + const webHost = process.env.REDWOOD_WEB_HOST + testContext.p = $`yarn node ${cmd}` + await test({ webHost }) + delete process.env.REDWOOD_WEB_HOST + }) + + it('`--webHost` takes precedence over `REDWOOD_WEB_HOST`', async () => { + const webHost = '::' + process.env.REDWOOD_WEB_HOST = '0.0.0.0' + testContext.p = $`yarn node ${cmd} --webHost ${webHost}` + await test({ webHost }) + delete process.env.REDWOOD_WEB_HOST + }) + + it("`[web].host` changes the web server's host", async () => { + const originalHost = testContext.projectConfig?.web.host + testContext.projectConfig.web.host = '127.0.0.1' + testContext.p = $`yarn node ${cmd}` + await test() + testContext.projectConfig.web.host = originalHost + }) + + it("defaults to '::' if `NODE_ENV` isn't production", async () => { + testContext.p = $`yarn node ${cmd}` + await test() + }) + + it("defaults to '0.0.0.0' if `NODE_ENV` is production", async () => { + const originalNodeEnv = process.env.NODE_ENV + process.env.NODE_ENV = 'production' + testContext.p = $`yarn node ${cmd}` + await test({ webHost: '0.0.0.0', apiHost: '0.0.0.0' }) + process.env.NODE_ENV = originalNodeEnv + }) + }) +}) diff --git a/tasks/server-tests/helpers.mts b/tasks/server-tests/helpers.mts deleted file mode 100644 index 79f302b950b4..000000000000 --- a/tasks/server-tests/helpers.mts +++ /dev/null @@ -1,3 +0,0 @@ -export function sleep(time = 1_000) { - return new Promise(resolve => setTimeout(resolve, time)); -} diff --git a/tasks/server-tests/vitest.config.mts b/tasks/server-tests/vitest.config.mts new file mode 100644 index 000000000000..fd0103b924fe --- /dev/null +++ b/tasks/server-tests/vitest.config.mts @@ -0,0 +1,16 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + logHeapUsage: true, + setupFiles: ['./vitest.setup.mts'], + // This makes the test suites run in series + // which is necessary because we are starting and stopping servers + // at the same host and port between test cases. + poolOptions: { + threads: { + singleThread: true + } + } + }, +}) diff --git a/tasks/server-tests/vitest.setup.mts b/tasks/server-tests/vitest.setup.mts new file mode 100644 index 000000000000..6ff030978221 --- /dev/null +++ b/tasks/server-tests/vitest.setup.mts @@ -0,0 +1,136 @@ +import { fileURLToPath } from 'node:url' + +import { afterAll, afterEach, beforeAll, expect } from 'vitest' +import { fs, path, $ } from 'zx' +import type { ProcessPromise } from 'zx' + +import { getConfig } from '@redwoodjs/project-config' + +$.verbose = !!process.env.VERBOSE + +type TestContext = { + p?: ProcessPromise + projectConfig: ReturnType +} +export const testContext: TestContext = { + // Casting here because `beforeAll` below sets this and this file runs before all tests. + // Working around it being possibly undefined muddies the code in the tests. + // Also can't just call `getConfig()` because RWJS_CWD hasn't been set yet + projectConfig: {} as ReturnType +} + +const __dirname = fileURLToPath(new URL('./', import.meta.url)) +// @redwoodjs/cli (yarn rw) +export const rw = path.resolve(__dirname, '../../packages/cli/dist/index.js') +// @redwoodjs/api-server (yarn rw-server) +export const rwServer = path.resolve(__dirname, '../../packages/api-server/dist/bin.js') +// @redwoodjs/web-server (yarn rw-web-server) +export const rwWebServer = path.resolve(__dirname, '../../packages/web-server/dist/bin.js') + +let original_RWJS_CWD +beforeAll(() => { + original_RWJS_CWD = process.env.RWJS_CWD + const FIXTURE_PATH = fileURLToPath(new URL('./fixtures/redwood-app', import.meta.url)) + process.env.RWJS_CWD = FIXTURE_PATH + testContext.projectConfig = getConfig() + + // When running `yarn vitest run` to run all the test suites, log the bin paths only once. + if (!globalThis.loggedBinPaths) { + console.log([ + 'These tests use the following commands to run the server:', + `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rw} serve`, + `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rwServer}`, + `• RWJS_CWD=${process.env.RWJS_CWD} yarn node ${rwWebServer}`, + ].join('\n')) + globalThis.loggedBinPaths = true + } +}) +afterAll(() => { + process.env.RWJS_CWD = original_RWJS_CWD +}) + +// Clean up the child process after each test +afterEach(async () => { + if (!testContext.p) { + return + } + testContext.p.kill() + // Wait for child process to terminate + try { + await testContext.p + } catch { + // Ignore + } +}) + +export function sleep(time = 1_000) { + return new Promise(resolve => setTimeout(resolve, time)); +} + +interface TestOptions { + webHost?: string + webPort?: number + apiHost?: string + apiPort?: number + apiRootPath?: string + projectConfig?: any +} + +export async function test({ + webHost, + webPort, + apiHost, + apiPort, + apiRootPath, +}: TestOptions = {}) { + webHost ??= '::' + if (webHost.includes(':')) { + webHost = `[${webHost}]` + } + webPort ??= testContext.projectConfig?.web.port + + const url = `http://${webHost}:${webPort}/about` + + for (let i = 0; i < 20; i++) { + try { + await fetch(url) + } catch { + await sleep(100) + } + } + + const webRes = await fetch(url) + const webBody = await webRes.text() + + expect(webRes.status).toEqual(200) + expect(webBody).toEqual( + fs.readFileSync( + path.join(__dirname, './fixtures/redwood-app/web/dist/about.html'), + 'utf-8' + ) + ) + + apiHost ??= '::' + if (apiHost.includes(':')) { + apiHost = `[${apiHost}]` + } + apiPort ??= testContext.projectConfig?.api.port + apiRootPath ??= '/' + apiRootPath = apiRootPath.charAt(0) === '/' ? apiRootPath : `/${apiRootPath}` + apiRootPath = + apiRootPath.charAt(apiRootPath.length - 1) === '/' + ? apiRootPath + : `${apiRootPath}/` + + const apiRes = await fetch(`http://${apiHost}:${apiPort}${apiRootPath}hello`) + const apiBody = await apiRes.json() + + expect(apiRes.status).toEqual(200) + expect(apiBody).toEqual({ data: 'hello function' }) + + const apiProxyRes = await fetch(`http://${webHost}:${webPort}${testContext.projectConfig.web.apiUrl}/hello`) + const apiProxyBody = await apiProxyRes.json() + + expect(apiProxyRes.status).toEqual(200) + expect(apiProxyBody).toEqual({ data: 'hello function' }) +} From ab55228ce2076ce09ba1c9681f3487cbaa479bdc Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Sat, 3 Feb 2024 13:58:07 +0000 Subject: [PATCH 074/119] Mention the you need corepack enabled to run this repo (#9960) https://github.com/redwoodjs/redwood/pull/9579 also applies here, took like an hour to get a `yarn build` to succeed because a build was very close to working but didn't --- CONTRIBUTING.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7f7937f37324..219378a65005 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -37,6 +37,7 @@ Use `git clone` to get a local copy of the Redwood Framework. If you've already ```terminal git clone https://github.com/redwoodjs/redwood.git cd redwood +corepack enable yarn install ``` From cfb62df9efeb7964aa6fd078f30d836abd2d0e20 Mon Sep 17 00:00:00 2001 From: Josh GM Walker <56300765+Josh-Walker-GM@users.noreply.github.com> Date: Tue, 6 Feb 2024 08:45:28 +0000 Subject: [PATCH 075/119] cli: Remove graphiql setup command (#9964) --- __fixtures__/test-project/web/package.json | 2 +- docs/docs/cli-commands.md | 22 --- .../src/commands/destroy/graphiql/graphiql.js | 61 -------- .../__tests__/graphiqlHandler.test.js | 90 ----------- .../src/commands/setup/graphiql/graphiql.js | 55 ------- .../setup/graphiql/graphiqlHandler.js | 142 ------------------ .../setup/graphiql/graphiqlHelpers.js | 26 ---- .../setup/graphiql/supportedProviders.js | 86 ----------- .../templates/graphiql-mock.ts.template | 21 --- .../templates/graphiql-token.ts.template | 7 - 10 files changed, 1 insertion(+), 511 deletions(-) delete mode 100644 packages/cli/src/commands/destroy/graphiql/graphiql.js delete mode 100644 packages/cli/src/commands/setup/graphiql/__tests__/graphiqlHandler.test.js delete mode 100644 packages/cli/src/commands/setup/graphiql/graphiql.js delete mode 100644 packages/cli/src/commands/setup/graphiql/graphiqlHandler.js delete mode 100644 packages/cli/src/commands/setup/graphiql/graphiqlHelpers.js delete mode 100644 packages/cli/src/commands/setup/graphiql/supportedProviders.js delete mode 100644 packages/cli/src/commands/setup/graphiql/templates/graphiql-mock.ts.template delete mode 100644 packages/cli/src/commands/setup/graphiql/templates/graphiql-token.ts.template diff --git a/__fixtures__/test-project/web/package.json b/__fixtures__/test-project/web/package.json index 35963e3dc276..8ad4d71b9bd1 100644 --- a/__fixtures__/test-project/web/package.json +++ b/__fixtures__/test-project/web/package.json @@ -24,7 +24,7 @@ "@types/react": "18.2.37", "@types/react-dom": "18.2.15", "autoprefixer": "^10.4.17", - "postcss": "^8.4.33", + "postcss": "^8.4.34", "postcss-loader": "^8.1.0", "prettier-plugin-tailwindcss": "0.4.1", "tailwindcss": "^3.4.1" diff --git a/docs/docs/cli-commands.md b/docs/docs/cli-commands.md index 61ccb5038f75..a15d643362e4 100644 --- a/docs/docs/cli-commands.md +++ b/docs/docs/cli-commands.md @@ -368,7 +368,6 @@ yarn redwood destroy | `sdl ` | Destroy a GraphQL schema and service component based on a given DB schema Model | | `service ` | Destroy a service component | | `directive ` | Destroy a directive | -| `graphiql` | Destroy a generated graphiql file | ## exec @@ -1794,27 +1793,6 @@ yarn redwood setup auth See [Authentication](authentication.md). -### setup graphiQL headers - -Redwood automatically sets up your authentication headers in your GraphiQL playground. Currently supported auth providers include Supabase, dbAuth, and Netlify. - -A `generateGraphiQLHeader` file will be created in your `api/lib` folder and included in your gitignore. You can edit this file to customize your header. The function in the file is passed into your `createGraphQLHandler` and only called in dev. - -``` -yarn redwood setup graphiql -``` - -If you're using `dbAuth`, make sure the `-i` id you provided is not logged in from the web app. - -| Arguments & Options | Description | -| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `provider` | Auth provider to configure. Choices are `dbAuth`, `netlify`, and `supabase` | -| `--id, -i` | Unique id to identify current user (required only for DBAuth) | -| `--token, -t` | Generated JWT token. If not provided, a mock JWT payload is returned in `api/lib/generateGraphiQLHeader` that can be modified and turned into a token | -| `--expiry, -e` | Token expiry in minutes. Default is 60 | -| `--view, -v` | Print out generated headers to console | - - ### setup cache This command creates a setup file in `api/src/lib/cache.{ts|js}` for connecting to a Memcached or Redis server and allows caching in services. See the [**Caching** section of the Services docs](/docs/services#caching) for usage. diff --git a/packages/cli/src/commands/destroy/graphiql/graphiql.js b/packages/cli/src/commands/destroy/graphiql/graphiql.js deleted file mode 100644 index 98314a02af4f..000000000000 --- a/packages/cli/src/commands/destroy/graphiql/graphiql.js +++ /dev/null @@ -1,61 +0,0 @@ -import { Listr } from 'listr2' - -import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' - -import { - existsAnyExtensionSync, - deleteFile, - readFile, - writeFile, - getGraphqlPath, -} from '../../../lib' -import c from '../../../lib/colors' -import { getOutputPath } from '../../setup/graphiql/graphiqlHelpers' - -const removeGraphiqlFromGraphqlHandler = () => { - const graphqlPath = getGraphqlPath() - let content = readFile(graphqlPath).toString() - const [_, hasHeaderImport] = - content.match(/(import .* from 'src\/lib\/generateGraphiQLHeader.*')/s) || - [] - if (hasHeaderImport) { - // remove header import statement - content = content.replace( - `\n\nimport generateGraphiQLHeader from 'src/lib/generateGraphiQLHeader'`, - '' - ) - // remove object from handler - content = content.replace(`generateGraphiQLHeader,\n`, '') - } - writeFile(graphqlPath, content, { - overwriteExisting: true, - }) -} -export const command = 'graphiql' -export const description = 'Destroy graphiql header' - -export const handler = () => { - recordTelemetryAttributes({ - command: 'destory graphiql', - }) - const path = getOutputPath() - const tasks = new Listr( - [ - { - title: 'Destroying graphiql files...', - skip: () => !existsAnyExtensionSync(path) && `File doesn't exist`, - task: () => deleteFile(path), - }, - { - title: 'Removing graphiql import from createGraphQLHandler', - task: removeGraphiqlFromGraphqlHandler, - }, - ], - { rendererOptions: { collapseSubtasks: false }, exitOnError: true } - ) - try { - tasks.run() - } catch (e) { - console.log(c.error(e.message)) - } -} diff --git a/packages/cli/src/commands/setup/graphiql/__tests__/graphiqlHandler.test.js b/packages/cli/src/commands/setup/graphiql/__tests__/graphiqlHandler.test.js deleted file mode 100644 index d04caf8d012b..000000000000 --- a/packages/cli/src/commands/setup/graphiql/__tests__/graphiqlHandler.test.js +++ /dev/null @@ -1,90 +0,0 @@ -globalThis.__dirname = __dirname - -import '../../../../lib/mockTelemetry' - -vi.mock('@redwoodjs/babel-config', () => { - return { - registerApiSideBabelHook: () => null, - } -}) -vi.mock('../../../../lib', () => ({ - getPaths: () => ({ - api: { lib: '', functions: '' }, - }), - existsAnyExtensionSync: () => false, -})) -vi.mock('../../../../lib/project', () => ({ - isTypeScriptProject: () => false, -})) - -vi.mock('listr2') -import chalk from 'chalk' -import { Listr } from 'listr2' -import { vi, describe, it, afterEach, expect } from 'vitest' - -import * as graphiqlHandler from '../graphiqlHandler' -import * as graphiqlHelpers from '../graphiqlHelpers' - -describe('Graphiql generator tests', () => { - const processExitSpy = vi.spyOn(process, 'exit').mockImplementation(() => {}) - const cSpy = vi.spyOn(console, 'error').mockImplementation(() => {}) - - const mockListrRun = vi.fn() - Listr.mockImplementation(() => { - return { - run: mockListrRun, - } - }) - - afterEach(() => { - processExitSpy.mockReset() - cSpy.mockReset() - }) - - it('throws an error if source path does not exist when viewing headers', async () => { - vi.spyOn(graphiqlHelpers, 'getOutputPath').mockImplementation(() => '') - await graphiqlHandler.handler({ view: true, provider: 'dbAuth' }) - expect(console.error).toHaveBeenCalledWith( - chalk.bold.red( - 'Must run yarn rw setup graphiql to generate headers before viewing' - ) - ) - expect(processExitSpy).toHaveBeenCalledWith(1) - }) - - it('throws an error if auth provider is dbAuth and no user id is provided', async () => { - try { - await graphiqlHelpers.generatePayload('dbAuth') - } catch (e) { - expect(e.message).toBe('Require a unique id to generate session cookie') - } - }) - - it('throws an error if auth provider is dbAuth and no supabase env is set', async () => { - delete process.env.SESSION_SECRET - try { - await graphiqlHelpers.generatePayload('dbAuth', 'user-id-123') - } catch (e) { - expect(e.message).toBe( - 'dbAuth requires a SESSION_SECRET environment variable that is used ' + - 'to encrypt session cookies. Use `yarn rw g secret` to create ' + - 'one, then add to your `.env` file. DO NOT check this variable in ' + - 'to your version control system!!' - ) - } - }) - - it('returns a payload if a token is provided', async () => { - const provider = 'supabase' - const token = 'mock-token' - const response = await graphiqlHelpers.generatePayload( - provider, - null, - token - ) - expect(response).toEqual({ - 'auth-provider': provider, - authorization: `Bearer ${token}`, - }) - }) -}) diff --git a/packages/cli/src/commands/setup/graphiql/graphiql.js b/packages/cli/src/commands/setup/graphiql/graphiql.js deleted file mode 100644 index 4a8d3db2c6bb..000000000000 --- a/packages/cli/src/commands/setup/graphiql/graphiql.js +++ /dev/null @@ -1,55 +0,0 @@ -import terminalLink from 'terminal-link' - -import { recordTelemetryAttributes } from '@redwoodjs/cli-helpers' - -import { supportedProviders } from './supportedProviders' - -export const command = 'graphiql ' -export const description = 'Generate GraphiQL headers' -export const builder = (yargs) => { - yargs - .positional('provider', { - choices: Object.keys(supportedProviders), - description: 'Auth provider used', - type: 'string', - }) - .option('id', { - alias: 'i', - description: 'Unique id to identify current user', - type: 'string', - }) - .option('token', { - alias: 't', - description: - 'Generated JWT token. If not provided, mock JWT payload is provided that can be modified and turned into a token', - type: 'string', - }) - .option('expiry', { - alias: 'e', - default: 60, - description: 'Token expiry in minutes. Default is 60', - type: 'number', - }) - .option('view', { - alias: 'v', - default: false, - description: 'Print out generated headers', - type: 'boolean', - }) - .epilogue( - `Also see the ${terminalLink( - 'Redwood CLI Reference', - 'https://redwoodjs.com/docs/cli-commands#setup-header' - )}` - ) -} - -export const handler = async (options) => { - recordTelemetryAttributes({ - command: 'setup graphiql', - provider: options.provider, - view: options.view, - }) - const { handler } = await import('./graphiqlHandler.js') - return handler(options) -} diff --git a/packages/cli/src/commands/setup/graphiql/graphiqlHandler.js b/packages/cli/src/commands/setup/graphiql/graphiqlHandler.js deleted file mode 100644 index 54a6f2c8af9b..000000000000 --- a/packages/cli/src/commands/setup/graphiql/graphiqlHandler.js +++ /dev/null @@ -1,142 +0,0 @@ -import path from 'path' - -import execa from 'execa' -import fs from 'fs-extra' -import { Listr } from 'listr2' - -import { registerApiSideBabelHook } from '@redwoodjs/babel-config' -import { errorTelemetry } from '@redwoodjs/telemetry' - -import { - generateTemplate, - writeFilesTask, - readFile, - transformTSToJS, - existsAnyExtensionSync, - getGraphqlPath, - graphFunctionDoesExist, -} from '../../../lib' -import c from '../../../lib/colors' -import { isTypeScriptProject } from '../../../lib/project' - -import { getOutputPath, generatePayload } from './graphiqlHelpers' -import { supportedProviders } from './supportedProviders' - -const addHeaderOption = () => { - const graphqlPath = getGraphqlPath() - let content = readFile(graphqlPath).toString() - - const [_, hasHeaderImport] = - content.match(/(import .* from 'src\/lib\/generateGraphiQLHeader.*')/s) || - [] - - if (!hasHeaderImport) { - // add header import statement - content = content.replace( - /^(.*services.*)$/m, - `$1\n\nimport generateGraphiQLHeader from 'src/lib/generateGraphiQLHeader'` - ) - // add object to handler - content = content.replace( - /^(\s*)(loggerConfig:)(.*)$/m, - `$1generateGraphiQLHeader,\n$1$2$3` - ) - - fs.writeFileSync(graphqlPath, content) - } -} - -const printHeaders = async () => { - // Import babel settings so we can write es6 scripts - registerApiSideBabelHook() - - const srcPath = getOutputPath() - if (!existsAnyExtensionSync(srcPath) && `File doesn't exist`) { - throw new Error( - 'Must run yarn rw setup graphiql to generate headers before viewing' - ) - } - - const script = require(srcPath) - await script.default() -} - -export const handler = async ({ provider, id, token, expiry, view }) => { - let payload - - const ext = isTypeScriptProject() ? 'ts' : 'js' - - const tasks = new Listr( - [ - { - title: 'Generating graphiql header...', - task: async () => { - payload = await generatePayload(provider, id, token, expiry) - }, - }, - { - title: `Generating file in src/lib/generateGraphiQLHeader.${ext}...`, - task: () => { - const fileName = - token || provider === 'dbAuth' - ? 'graphiql-token.ts.template' - : 'graphiql-mock.ts.template' - - const content = generateTemplate( - path.join(__dirname, 'templates', fileName), - { - name: 'graphiql', - payload: JSON.stringify(payload), - env: supportedProviders[provider].env, - provider, - expireTime: expiry - ? new Date(Date.now() + expiry * 60 * 1000) - : new Date(Date.now() + 3600 * 1000), - } - ) - - const outputPath = getOutputPath() - - return writeFilesTask( - { - [outputPath]: isTypeScriptProject() - ? content - : transformTSToJS(outputPath, content), - }, - { overwriteExisting: true } - ) - }, - }, - { - title: 'Importing generated headers into createGraphQLHandler', - task: (ctx, task) => { - if (graphFunctionDoesExist()) { - addHeaderOption() - } else { - task.skip('GraphQL function not found, skipping') - } - }, - }, - { - title: 'Installing packages...', - task: async () => { - if (!token && provider !== 'dbAuth') { - await execa('yarn', ['workspace', 'api', 'add', 'jsonwebtoken']) - } - }, - }, - ].filter(Boolean), - { rendererOptions: { collapseSubtasks: false } } - ) - - try { - if (view) { - return await printHeaders() - } - await tasks.run() - } catch (e) { - errorTelemetry(process.argv, e.message) - console.error(c.error(e.message)) - process.exit(e?.exitCode || 1) - } -} diff --git a/packages/cli/src/commands/setup/graphiql/graphiqlHelpers.js b/packages/cli/src/commands/setup/graphiql/graphiqlHelpers.js deleted file mode 100644 index 2acc16c6a334..000000000000 --- a/packages/cli/src/commands/setup/graphiql/graphiqlHelpers.js +++ /dev/null @@ -1,26 +0,0 @@ -import path from 'path' - -import { getPaths } from '../../../lib' -import { isTypeScriptProject } from '../../../lib/project' - -import { supportedProviders } from './supportedProviders' - -export const generatePayload = (provider, id, token, expiry) => { - if (token) { - return { - 'auth-provider': provider, - authorization: `Bearer ${token}`, - } - } - - return supportedProviders[provider].getPayload(id, expiry) -} - -export const getOutputPath = () => { - return path.join( - getPaths().api.lib, - isTypeScriptProject() - ? 'generateGraphiQLHeader.ts' - : 'generateGraphiQLHeader.js' - ) -} diff --git a/packages/cli/src/commands/setup/graphiql/supportedProviders.js b/packages/cli/src/commands/setup/graphiql/supportedProviders.js deleted file mode 100644 index 4f0293ebfe67..000000000000 --- a/packages/cli/src/commands/setup/graphiql/supportedProviders.js +++ /dev/null @@ -1,86 +0,0 @@ -import { v4 as uuidv4 } from 'uuid' - -// tests if id, which is always a string from cli, is actually a number or uuid -const isNumeric = (id) => { - return /^\d+$/.test(parseInt(id)) -} - -const getExpiryTime = (expiry) => { - return expiry ? Date.now() + expiry * 60 * 1000 : Date.now() + 3600 * 1000 -} - -const getDBAuthHeader = async (userId) => { - if (!userId) { - throw new Error('Require a unique id to generate session cookie') - } - - if (!process.env.SESSION_SECRET) { - throw new Error( - 'dbAuth requires a SESSION_SECRET environment variable that is used ' + - 'to encrypt session cookies. Use `yarn rw g secret` to create one, ' + - 'then add to your `.env` file. DO NOT check this variable in to ' + - 'your version control system!!' - ) - } - - const { - default: { encryptSession }, - } = await import('@redwoodjs/auth-dbauth-api') - - const id = isNumeric(userId) ? parseInt(userId) : userId - const cookie = encryptSession(JSON.stringify({ id }) + ';' + uuidv4()) - - return { - 'auth-provider': 'dbAuth', - cookie: `session=${cookie}`, - authorization: `Bearer ${id}`, - } -} - -const getSupabasePayload = (id, expiry) => { - if (!process.env.SUPABASE_JWT_SECRET) { - throw new Error('SUPABASE_JWT_SECRET env var is not set.') - } - - const payload = { - aud: 'authenticated', - exp: getExpiryTime(expiry), - sub: id ?? 'test-user-id', - email: 'user@example.com', - app_metadata: { - provider: 'email', - }, - user_metadata: {}, - role: 'authenticated', - roles: [], - } - - return payload -} - -const getNetlifyPayload = (id, expiry) => { - const payload = { - exp: getExpiryTime(expiry), - sub: id ?? 'test-user-id', - email: 'user@example.com', - app_metadata: { - provider: 'email', - authorization: { - roles: [], - }, - }, - user_metadata: {}, - } - - return payload -} - -export const supportedProviders = { - dbAuth: { getPayload: getDBAuthHeader, env: '' }, - supabase: { - getPayload: getSupabasePayload, - env: 'process.env.SUPABASE_JWT_SECRET', - }, - // no access to netlify JWT private key in dev. - netlify: { getPayload: getNetlifyPayload, env: '"secret-123"' }, -} diff --git a/packages/cli/src/commands/setup/graphiql/templates/graphiql-mock.ts.template b/packages/cli/src/commands/setup/graphiql/templates/graphiql-mock.ts.template deleted file mode 100644 index 8c33b08aaa90..000000000000 --- a/packages/cli/src/commands/setup/graphiql/templates/graphiql-mock.ts.template +++ /dev/null @@ -1,21 +0,0 @@ -import jwt from 'jsonwebtoken' - -const generateGraphiQLHeader = (): string => { - // token expires at ${expireTime} - const jwtPayload = ${payload} - - const token = jwt.sign( - jwtPayload as object, - ${env} as string - ) - - return JSON.stringify({ - 'auth-provider': "${provider}", - authorization: "Bearer " + token - }, null, 2) -} - -console.log(generateGraphiQLHeader()) - -export default generateGraphiQLHeader - diff --git a/packages/cli/src/commands/setup/graphiql/templates/graphiql-token.ts.template b/packages/cli/src/commands/setup/graphiql/templates/graphiql-token.ts.template deleted file mode 100644 index fc9839d8788d..000000000000 --- a/packages/cli/src/commands/setup/graphiql/templates/graphiql-token.ts.template +++ /dev/null @@ -1,7 +0,0 @@ -const generateGraphiQLHeader = () => { - return JSON.stringify(${payload}, null, 2) -} - -console.log(generateGraphiQLHeader()) - -export default generateGraphiQLHeader From edc4b4e6f5695943bd1b2b6dddb8df32ab1b38ae Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 6 Feb 2024 11:23:58 +0100 Subject: [PATCH 076/119] fix(studio): Remove unused settings 'endpoint' and 'roles' (#9966) --- .../project-config/src/__tests__/config.test.ts | 14 -------------- .../__tests__/fixtures/redwood.studio.dbauth.toml | 1 - .../fixtures/redwood.studio.supabase.toml | 1 - packages/project-config/src/config.ts | 2 -- 4 files changed, 18 deletions(-) diff --git a/packages/project-config/src/__tests__/config.test.ts b/packages/project-config/src/__tests__/config.test.ts index ec71571882b3..2b9dc2f237b5 100644 --- a/packages/project-config/src/__tests__/config.test.ts +++ b/packages/project-config/src/__tests__/config.test.ts @@ -83,10 +83,8 @@ describe('getConfig', () => { "authProvider": undefined, "email": undefined, "jwtSecret": "secret", - "roles": undefined, "userId": undefined, }, - "endpoint": "graphql", }, }, "web": { @@ -108,24 +106,13 @@ describe('getConfig', () => { it('merges configs', () => { const config = getConfig(path.join(__dirname, './fixtures/redwood.toml')) expect(config.web.port).toEqual(8888) - - expect(config.studio.graphiql?.endpoint).toEqual('graphql') }) describe('with studio configs', () => { - it('merges studio configs', () => { - const config = getConfig( - path.join(__dirname, './fixtures/redwood.studio.toml') - ) - - expect(config.studio.graphiql?.endpoint).toEqual('graphql-endpoint') - }) - it('merges studio configs with dbAuth impersonation', () => { const config = getConfig( path.join(__dirname, './fixtures/redwood.studio.dbauth.toml') ) - expect(config.studio.graphiql?.endpoint).toEqual('graphql') expect(config.studio.graphiql?.authImpersonation?.authProvider).toEqual( 'dbAuth' ) @@ -140,7 +127,6 @@ describe('getConfig', () => { path.join(__dirname, './fixtures/redwood.studio.supabase.toml') ) - expect(config.studio.graphiql?.endpoint).toEqual('graphql') expect(config.studio.graphiql?.authImpersonation?.authProvider).toEqual( 'supabase' ) diff --git a/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml b/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml index b0da869fc75a..04d38d1e553c 100644 --- a/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml +++ b/packages/project-config/src/__tests__/fixtures/redwood.studio.dbauth.toml @@ -2,7 +2,6 @@ port = 8888 [studio] [studio.graphiql] - endpoint = "graphql" [studio.graphiql.authImpersonation] authProvider = "dbAuth" email = "user@example.com" diff --git a/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml b/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml index b5b099b7307a..371334289e8a 100644 --- a/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml +++ b/packages/project-config/src/__tests__/fixtures/redwood.studio.supabase.toml @@ -2,7 +2,6 @@ port = 8888 [studio] [studio.graphiql] - endpoint = "graphql" [studio.graphiql.authImpersonation] authProvider = "supabase" email = "supauser@example.com" diff --git a/packages/project-config/src/config.ts b/packages/project-config/src/config.ts index 64bdb06247df..3385365a1848 100644 --- a/packages/project-config/src/config.ts +++ b/packages/project-config/src/config.ts @@ -159,12 +159,10 @@ const DEFAULT_CONFIG: Config = { studio: { basePort: 4318, graphiql: { - endpoint: 'graphql', authImpersonation: { authProvider: undefined, userId: undefined, email: undefined, - roles: undefined, jwtSecret: 'secret', }, }, From 47232b0413beee2de639c83b554417d379ae7c54 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 6 Feb 2024 15:40:37 +0100 Subject: [PATCH 077/119] chore(cleanup): Remove debug console.log call (#9967) --- packages/internal/src/generate/generate.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/internal/src/generate/generate.ts b/packages/internal/src/generate/generate.ts index 847e02dec82b..51d3020a4d8a 100644 --- a/packages/internal/src/generate/generate.ts +++ b/packages/internal/src/generate/generate.ts @@ -8,7 +8,6 @@ import { generatePossibleTypes } from './possibleTypes' import { generateTypeDefs } from './typeDefinitions' export const generate = async () => { - console.log('internal generate') const config = getConfig() const { schemaPath, errors: generateGraphQLSchemaErrors } = await generateGraphQLSchema() From 5a5215682aa4a93a1df3f75ede26e9efde2a2827 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Wed, 7 Feb 2024 17:57:16 -0800 Subject: [PATCH 078/119] chore(build): use `tsx` to run build scripts (#9941) @Tobbe refactored all the build scripts to use tsx --------- Co-authored-by: Dominic Saadi --- __fixtures__/test-project/web/package.json | 2 +- .../fastify/web/{build.mjs => build.mts} | 0 packages/adapters/fastify/web/package.json | 3 ++- packages/api-server/{build.mjs => build.mts} | 0 packages/api-server/package.json | 3 ++- .../babel-config/{build.mjs => build.mts} | 0 packages/babel-config/package.json | 5 ++-- packages/cli-helpers/build.js | 26 ------------------- .../build.js => cli-helpers/build.ts} | 21 +++++++-------- packages/cli-helpers/package.json | 3 ++- .../dataMigrate/{build.mjs => build.mts} | 4 +-- .../cli-packages/dataMigrate/package.json | 3 ++- .../storybook/{build.mjs => build.mts} | 0 packages/cli-packages/storybook/package.json | 3 ++- packages/context/{build.mjs => build.mts} | 0 packages/context/package.json | 3 ++- packages/create-redwood-app/package.json | 3 ++- .../scripts/{build.js => build.ts} | 0 .../eslint-plugin/{build.mjs => build.mts} | 0 packages/eslint-plugin/package.json | 2 +- packages/mailer/core/{build.mjs => build.mts} | 0 packages/mailer/core/package.json | 3 ++- .../in-memory/{build.mjs => build.mts} | 0 .../mailer/handlers/in-memory/package.json | 3 ++- .../nodemailer/{build.mjs => build.mts} | 0 .../mailer/handlers/nodemailer/package.json | 3 ++- .../handlers/resend/{build.mjs => build.mts} | 0 packages/mailer/handlers/resend/package.json | 3 ++- .../handlers/studio/{build.mjs => build.mts} | 0 packages/mailer/handlers/studio/package.json | 3 ++- .../mjml-react/{build.mjs => build.mts} | 0 .../mailer/renderers/mjml-react/package.json | 3 ++- .../react-email/{build.mjs => build.mts} | 0 .../mailer/renderers/react-email/package.json | 3 ++- packages/project-config/build.ts | 24 +++++++++++++++++ packages/project-config/package.json | 3 ++- packages/realtime/{build.mjs => build.mts} | 0 packages/realtime/package.json | 7 +++-- packages/tui/{build.mjs => build.mts} | 0 packages/tui/package.json | 3 ++- packages/web-server/{build.mjs => build.mts} | 0 packages/web-server/package.json | 3 ++- yarn.lock | 19 ++++++++++++++ 43 files changed, 97 insertions(+), 64 deletions(-) rename packages/adapters/fastify/web/{build.mjs => build.mts} (100%) rename packages/api-server/{build.mjs => build.mts} (100%) rename packages/babel-config/{build.mjs => build.mts} (100%) delete mode 100644 packages/cli-helpers/build.js rename packages/{project-config/build.js => cli-helpers/build.ts} (50%) rename packages/cli-packages/dataMigrate/{build.mjs => build.mts} (92%) rename packages/cli-packages/storybook/{build.mjs => build.mts} (100%) rename packages/context/{build.mjs => build.mts} (100%) rename packages/create-redwood-app/scripts/{build.js => build.ts} (100%) rename packages/eslint-plugin/{build.mjs => build.mts} (100%) rename packages/mailer/core/{build.mjs => build.mts} (100%) rename packages/mailer/handlers/in-memory/{build.mjs => build.mts} (100%) rename packages/mailer/handlers/nodemailer/{build.mjs => build.mts} (100%) rename packages/mailer/handlers/resend/{build.mjs => build.mts} (100%) rename packages/mailer/handlers/studio/{build.mjs => build.mts} (100%) rename packages/mailer/renderers/mjml-react/{build.mjs => build.mts} (100%) rename packages/mailer/renderers/react-email/{build.mjs => build.mts} (100%) create mode 100644 packages/project-config/build.ts rename packages/realtime/{build.mjs => build.mts} (100%) rename packages/tui/{build.mjs => build.mts} (100%) rename packages/web-server/{build.mjs => build.mts} (100%) diff --git a/__fixtures__/test-project/web/package.json b/__fixtures__/test-project/web/package.json index 8ad4d71b9bd1..ccde6e78da83 100644 --- a/__fixtures__/test-project/web/package.json +++ b/__fixtures__/test-project/web/package.json @@ -24,7 +24,7 @@ "@types/react": "18.2.37", "@types/react-dom": "18.2.15", "autoprefixer": "^10.4.17", - "postcss": "^8.4.34", + "postcss": "^8.4.35", "postcss-loader": "^8.1.0", "prettier-plugin-tailwindcss": "0.4.1", "tailwindcss": "^3.4.1" diff --git a/packages/adapters/fastify/web/build.mjs b/packages/adapters/fastify/web/build.mts similarity index 100% rename from packages/adapters/fastify/web/build.mjs rename to packages/adapters/fastify/web/build.mts diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index 2ee7d8ed6450..ee37284118ec 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-fastify-web.tgz", "build:types": "tsc --build --verbose", "prepublishOnly": "NODE_ENV=production yarn build", @@ -30,6 +30,7 @@ "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", "fastify": "4.25.2", + "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/api-server/build.mjs b/packages/api-server/build.mts similarity index 100% rename from packages/api-server/build.mjs rename to packages/api-server/build.mts diff --git a/packages/api-server/package.json b/packages/api-server/package.json index a394cdc4c59f..d2ec5fc63966 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -19,7 +19,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-api-server.tgz", "build:types": "tsc --build --verbose tsconfig.build.json", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build && yarn fix:permissions\"", @@ -57,6 +57,7 @@ "@types/yargs": "17.0.32", "aws-lambda": "1.0.7", "pino-abstract-transport": "1.1.0", + "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/babel-config/build.mjs b/packages/babel-config/build.mts similarity index 100% rename from packages/babel-config/build.mjs rename to packages/babel-config/build.mts diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index bfcdc449ebf1..f0626e41446a 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && run build:types", + "build": "tsx ./build.mts && run build:types", "build:pack": "yarn pack -o redwoodjs-babel-config.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -50,7 +50,8 @@ "@types/babel__core": "7.20.4", "@types/node": "20.11.10", "babel-plugin-tester": "11.0.4", - "jest": "29.7.0" + "jest": "29.7.0", + "tsx": "4.6.2" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" } diff --git a/packages/cli-helpers/build.js b/packages/cli-helpers/build.js deleted file mode 100644 index 3a01088401ee..000000000000 --- a/packages/cli-helpers/build.js +++ /dev/null @@ -1,26 +0,0 @@ -import * as esbuild from 'esbuild' - -const options = { - entryPoints: ['./src/index.ts'], - outdir: 'dist', - - platform: 'node', - target: ['node20'], - bundle: true, - packages: 'external', - - logLevel: 'info', - metafile: true, -} - -await esbuild.build({ - ...options, - format: 'esm', - outExtension: { '.js': '.mjs' }, -}) - -await esbuild.build({ - ...options, - format: 'cjs', - outExtension: { '.js': '.cjs' }, -}) diff --git a/packages/project-config/build.js b/packages/cli-helpers/build.ts similarity index 50% rename from packages/project-config/build.js rename to packages/cli-helpers/build.ts index e9a4c639db2d..869b35842e36 100644 --- a/packages/project-config/build.js +++ b/packages/cli-helpers/build.ts @@ -1,25 +1,24 @@ import { build, defaultBuildOptions } from '@redwoodjs/framework-tools' -const options = { - ...defaultBuildOptions, - bundle: true, - entryPoints: ['./src/index.ts'], - packages: 'external', -} - -// ESM build. +// ESM build await build({ buildOptions: { - ...options, + ...defaultBuildOptions, + bundle: true, + entryPoints: ['./src/index.ts'], format: 'esm', outExtension: { '.js': '.mjs' }, + packages: 'external', }, }) -// CJS build. +// CJS build await build({ buildOptions: { - ...options, + ...defaultBuildOptions, + bundle: true, + entryPoints: ['./src/index.ts'], outExtension: { '.js': '.cjs' }, + packages: 'external', }, }) diff --git a/packages/cli-helpers/package.json b/packages/cli-helpers/package.json index 0606eba890a7..3c4e6590b4d7 100644 --- a/packages/cli-helpers/package.json +++ b/packages/cli-helpers/package.json @@ -18,7 +18,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.js && yarn build:types", + "build": "tsx ./build.ts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-cli-helpers.tgz", "build:types": "tsc --build --verbose tsconfig.build.json", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -46,6 +46,7 @@ "@types/lodash": "4.14.201", "@types/pascalcase": "1.0.3", "@types/yargs": "17.0.32", + "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/cli-packages/dataMigrate/build.mjs b/packages/cli-packages/dataMigrate/build.mts similarity index 92% rename from packages/cli-packages/dataMigrate/build.mjs rename to packages/cli-packages/dataMigrate/build.mts index c9a710836d2e..9fdde1c092a7 100644 --- a/packages/cli-packages/dataMigrate/build.mjs +++ b/packages/cli-packages/dataMigrate/build.mts @@ -4,14 +4,14 @@ import { defaultIgnorePatterns, } from '@redwoodjs/framework-tools' -// Build the package. +// Build the package await build({ entryPointOptions: { ignore: [...defaultIgnorePatterns, './src/types.ts', './src/bin.ts'], }, }) -// Build the bin. +// Build the bin await build({ buildOptions: { ...defaultBuildOptions, diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index cfa186eb497c..fd5cb6bf60b2 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -16,7 +16,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-cli-data-migrate.tgz", "build:types": "tsc --build --verbose", "prepublishOnly": "NODE_ENV=production yarn build", @@ -42,6 +42,7 @@ "@types/yargs": "17.0.32", "jest": "29.7.0", "memfs": "4.6.0", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/cli-packages/storybook/build.mjs b/packages/cli-packages/storybook/build.mts similarity index 100% rename from packages/cli-packages/storybook/build.mjs rename to packages/cli-packages/storybook/build.mts diff --git a/packages/cli-packages/storybook/package.json b/packages/cli-packages/storybook/package.json index 0f8eb24eb56d..e3b7d86ca92c 100644 --- a/packages/cli-packages/storybook/package.json +++ b/packages/cli-packages/storybook/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-cli-storybook.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -36,6 +36,7 @@ "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", "@types/yargs": "17.0.32", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/context/build.mjs b/packages/context/build.mts similarity index 100% rename from packages/context/build.mjs rename to packages/context/build.mts diff --git a/packages/context/package.json b/packages/context/package.json index 7bf9f35931a0..a95c24247f40 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-context.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -21,6 +21,7 @@ }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/create-redwood-app/package.json b/packages/create-redwood-app/package.json index 2436281a6d6c..d5e25c5c5618 100644 --- a/packages/create-redwood-app/package.json +++ b/packages/create-redwood-app/package.json @@ -14,7 +14,7 @@ "templates" ], "scripts": { - "build": "node ./scripts/build.js", + "build": "tsx ./scripts/build.ts", "build:pack": "node ./scripts/buildPack.js", "build:watch": "nodemon --watch src --ignore dist,template --exec \"yarn build\"", "prepublishOnly": "NODE_ENV=production yarn build", @@ -45,6 +45,7 @@ "semver": "7.5.4", "systeminformation": "5.21.20", "terminal-link": "2.1.1", + "tsx": "4.6.2", "untildify": "4.0.0", "uuid": "9.0.1", "vitest": "1.2.2", diff --git a/packages/create-redwood-app/scripts/build.js b/packages/create-redwood-app/scripts/build.ts similarity index 100% rename from packages/create-redwood-app/scripts/build.js rename to packages/create-redwood-app/scripts/build.ts diff --git a/packages/eslint-plugin/build.mjs b/packages/eslint-plugin/build.mts similarity index 100% rename from packages/eslint-plugin/build.mjs rename to packages/eslint-plugin/build.mts diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 9275646475f1..5e535b62f50b 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-eslint-plugin.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", diff --git a/packages/mailer/core/build.mjs b/packages/mailer/core/build.mts similarity index 100% rename from packages/mailer/core/build.mjs rename to packages/mailer/core/build.mts diff --git a/packages/mailer/core/package.json b/packages/mailer/core/package.json index 40ddba42190b..70af12d23d92 100644 --- a/packages/mailer/core/package.json +++ b/packages/mailer/core/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-core.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -24,6 +24,7 @@ "devDependencies": { "@redwoodjs/api": "6.0.7", "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/mailer/handlers/in-memory/build.mjs b/packages/mailer/handlers/in-memory/build.mts similarity index 100% rename from packages/mailer/handlers/in-memory/build.mjs rename to packages/mailer/handlers/in-memory/build.mts diff --git a/packages/mailer/handlers/in-memory/package.json b/packages/mailer/handlers/in-memory/package.json index 0784b1ee5926..1d31fa7aa90a 100644 --- a/packages/mailer/handlers/in-memory/package.json +++ b/packages/mailer/handlers/in-memory/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-handler-in-memory.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -24,6 +24,7 @@ }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/nodemailer/build.mjs b/packages/mailer/handlers/nodemailer/build.mts similarity index 100% rename from packages/mailer/handlers/nodemailer/build.mjs rename to packages/mailer/handlers/nodemailer/build.mts diff --git a/packages/mailer/handlers/nodemailer/package.json b/packages/mailer/handlers/nodemailer/package.json index 1834b961f011..22ff7d15fd44 100644 --- a/packages/mailer/handlers/nodemailer/package.json +++ b/packages/mailer/handlers/nodemailer/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-handler-nodemailer.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -26,6 +26,7 @@ "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", "@types/nodemailer": "^6", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/resend/build.mjs b/packages/mailer/handlers/resend/build.mts similarity index 100% rename from packages/mailer/handlers/resend/build.mjs rename to packages/mailer/handlers/resend/build.mts diff --git a/packages/mailer/handlers/resend/package.json b/packages/mailer/handlers/resend/package.json index a1d9c040e93d..62d6086b69da 100644 --- a/packages/mailer/handlers/resend/package.json +++ b/packages/mailer/handlers/resend/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-handler-resend.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -25,6 +25,7 @@ }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/handlers/studio/build.mjs b/packages/mailer/handlers/studio/build.mts similarity index 100% rename from packages/mailer/handlers/studio/build.mjs rename to packages/mailer/handlers/studio/build.mts diff --git a/packages/mailer/handlers/studio/package.json b/packages/mailer/handlers/studio/package.json index 34d7abee2755..e296e3310b12 100644 --- a/packages/mailer/handlers/studio/package.json +++ b/packages/mailer/handlers/studio/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-handler-studio.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -26,6 +26,7 @@ "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", "@types/nodemailer": "^6", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/renderers/mjml-react/build.mjs b/packages/mailer/renderers/mjml-react/build.mts similarity index 100% rename from packages/mailer/renderers/mjml-react/build.mjs rename to packages/mailer/renderers/mjml-react/build.mts diff --git a/packages/mailer/renderers/mjml-react/package.json b/packages/mailer/renderers/mjml-react/package.json index b836a9a1745a..5941aee40f8b 100644 --- a/packages/mailer/renderers/mjml-react/package.json +++ b/packages/mailer/renderers/mjml-react/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-renderer-mjml-react.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -27,6 +27,7 @@ "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", "@types/mjml": "4", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/mailer/renderers/react-email/build.mjs b/packages/mailer/renderers/react-email/build.mts similarity index 100% rename from packages/mailer/renderers/react-email/build.mjs rename to packages/mailer/renderers/react-email/build.mts diff --git a/packages/mailer/renderers/react-email/package.json b/packages/mailer/renderers/react-email/package.json index 32e13b92e64d..788d29ec4cf8 100644 --- a/packages/mailer/renderers/react-email/package.json +++ b/packages/mailer/renderers/react-email/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-mailer-renderer-react-email.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -25,6 +25,7 @@ }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/project-config/build.ts b/packages/project-config/build.ts new file mode 100644 index 000000000000..869b35842e36 --- /dev/null +++ b/packages/project-config/build.ts @@ -0,0 +1,24 @@ +import { build, defaultBuildOptions } from '@redwoodjs/framework-tools' + +// ESM build +await build({ + buildOptions: { + ...defaultBuildOptions, + bundle: true, + entryPoints: ['./src/index.ts'], + format: 'esm', + outExtension: { '.js': '.mjs' }, + packages: 'external', + }, +}) + +// CJS build +await build({ + buildOptions: { + ...defaultBuildOptions, + bundle: true, + entryPoints: ['./src/index.ts'], + outExtension: { '.js': '.cjs' }, + packages: 'external', + }, +}) diff --git a/packages/project-config/package.json b/packages/project-config/package.json index e4973e2ae450..0dfa54e7ef6a 100644 --- a/packages/project-config/package.json +++ b/packages/project-config/package.json @@ -18,7 +18,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.js && run build:types", + "build": "tsx ./build.ts && run build:types", "build:pack": "yarn pack -o redwoodjs-project-config.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -35,6 +35,7 @@ "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", "rimraf": "5.0.5", + "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2" }, diff --git a/packages/realtime/build.mjs b/packages/realtime/build.mts similarity index 100% rename from packages/realtime/build.mjs rename to packages/realtime/build.mts diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 12a335416eaf..9db107e91943 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -7,15 +7,13 @@ "directory": "packages/realtime" }, "license": "MIT", - "exports": { - ".": "./dist/index.js" - }, + "exports": "./dist/index.js", "types": "./dist/index.d.ts", "files": [ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && run build:types", + "build": "tsx ./build.mts && run build:types", "build:pack": "yarn pack -o redwoodjs-realtime.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -43,6 +41,7 @@ "@redwoodjs/framework-tools": "6.0.7", "jest": "29.7.0", "nodemon": "3.0.2", + "tsx": "4.6.2", "typescript": "5.3.3" }, "peerDependencies": { diff --git a/packages/tui/build.mjs b/packages/tui/build.mts similarity index 100% rename from packages/tui/build.mjs rename to packages/tui/build.mts diff --git a/packages/tui/package.json b/packages/tui/package.json index 13e83b8e8c5d..5b7c494d3656 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -13,7 +13,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-tui.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build\"", @@ -27,6 +27,7 @@ }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/web-server/build.mjs b/packages/web-server/build.mts similarity index 100% rename from packages/web-server/build.mjs rename to packages/web-server/build.mts diff --git a/packages/web-server/package.json b/packages/web-server/package.json index 8838fe7a07c4..460c2147f395 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -17,7 +17,7 @@ "dist" ], "scripts": { - "build": "yarn node ./build.mjs && yarn build:types", + "build": "tsx ./build.mts && yarn build:types", "build:pack": "yarn pack -o redwoodjs-web-server.tgz", "build:types": "tsc --build --verbose", "build:watch": "nodemon --watch src --ext \"js,jsx,ts,tsx\" --ignore dist --exec \"yarn build && yarn fix:permissions\"", @@ -34,6 +34,7 @@ }, "devDependencies": { "@redwoodjs/framework-tools": "6.0.7", + "tsx": "4.6.2", "typescript": "5.3.3" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/yarn.lock b/yarn.lock index b0c2cb57cab4..52d36d3d1538 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7422,6 +7422,7 @@ __metadata: pretty-ms: "npm:7.0.1" qs: "npm:6.11.2" split2: "npm:4.2.0" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" yargs: "npm:17.7.2" @@ -7956,6 +7957,7 @@ __metadata: fast-glob: "npm:3.3.2" graphql: "npm:16.8.1" jest: "npm:29.7.0" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -7978,6 +7980,7 @@ __metadata: listr2: "npm:6.6.1" memfs: "npm:4.6.0" terminal-link: "npm:2.1.1" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" yargs: "npm:17.7.2" bin: @@ -8006,6 +8009,7 @@ __metadata: prettier: "npm:2.8.8" prompts: "npm:2.4.2" terminal-link: "npm:2.1.1" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -8028,6 +8032,7 @@ __metadata: execa: "npm:5.1.1" storybook: "npm:7.6.10" terminal-link: "npm:2.1.1" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" yargs: "npm:17.7.2" languageName: unknown @@ -8151,6 +8156,7 @@ __metadata: resolution: "@redwoodjs/context@workspace:packages/context" dependencies: "@redwoodjs/framework-tools": "npm:6.0.7" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8268,6 +8274,7 @@ __metadata: "@redwoodjs/project-config": "npm:6.0.7" fast-glob: "npm:3.3.2" fastify: "npm:4.25.2" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -8417,6 +8424,7 @@ __metadata: dependencies: "@redwoodjs/api": "npm:6.0.7" "@redwoodjs/framework-tools": "npm:6.0.7" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -8428,6 +8436,7 @@ __metadata: dependencies: "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8440,6 +8449,7 @@ __metadata: "@redwoodjs/mailer-core": "npm:6.0.7" "@types/nodemailer": "npm:^6" nodemailer: "npm:6.9.9" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8451,6 +8461,7 @@ __metadata: "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" resend: "npm:1.1.0" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8463,6 +8474,7 @@ __metadata: "@redwoodjs/mailer-core": "npm:6.0.7" "@redwoodjs/mailer-handler-nodemailer": "npm:6.0.7" "@types/nodemailer": "npm:^6" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8476,6 +8488,7 @@ __metadata: "@redwoodjs/mailer-core": "npm:6.0.7" "@types/mjml": "npm:4" mjml: "npm:4.14.1" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8487,6 +8500,7 @@ __metadata: "@react-email/render": "npm:0.0.10" "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/mailer-core": "npm:6.0.7" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8530,6 +8544,7 @@ __metadata: fast-glob: "npm:3.3.2" rimraf: "npm:5.0.5" string-env-interpolation: "npm:1.0.1" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" languageName: unknown @@ -8556,6 +8571,7 @@ __metadata: ioredis: "npm:^5.3.2" jest: "npm:29.7.0" nodemon: "npm:3.0.2" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" peerDependencies: ioredis: ^5.3.2 @@ -8713,6 +8729,7 @@ __metadata: chalk: "npm:4.1.2" enquirer: "npm:2.4.1" stdout-update: "npm:1.6.8" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft @@ -8752,6 +8769,7 @@ __metadata: chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" fastify: "npm:4.25.2" + tsx: "npm:4.6.2" typescript: "npm:5.3.3" yargs: "npm:17.7.2" bin: @@ -15734,6 +15752,7 @@ __metadata: semver: "npm:7.5.4" systeminformation: "npm:5.21.20" terminal-link: "npm:2.1.1" + tsx: "npm:4.6.2" untildify: "npm:4.0.0" uuid: "npm:9.0.1" vitest: "npm:1.2.2" From ed0772221def41e89cb12e75bc2a9490f2bef016 Mon Sep 17 00:00:00 2001 From: David Price Date: Wed, 7 Feb 2024 21:04:30 -0800 Subject: [PATCH 079/119] fix(deps) resolve yarn warnings regarding unmet peer dependencies for Redwood projects (#8874) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Running `yarn install` in a Redwood project results in a wall of information, most of which are warnings about peer dependencies and unmet dependency version requirements. We (framework authors) put up with it but that's not the case for developers — best case they find the output warnings annoying (and hopefully don't miss important errors); worst case it turns people away from using Redwood. Some, but not all, warnings are from Redwood packages. Many are upstream. At this time, there is no known negative impact from these dependency warnings — i.e. ideally they would all be resolved, but doing so has diminishing returns and is an ongoing maintenance consideration. This PR silences warnings that are considered acceptable and resolves those that are not. (Note: contributions are welcome for anyone who'd like to completely resolve these warnings!) Lastly, warnings != errors. This PR does not touch errors (if/when applicable). Here's what `yarn install` will look like with changes from this PR ![yarn-install](https://github.com/redwoodjs/redwood/assets/2951/278d2f36-a5e8-430d-8179-f6a8899d3227) Nice, right?!? 🤯 There are two cases of warnings handled by this PR. Case 1) [YN0002 - MISSING_PEER_DEPENDENCY](https://yarnpkg.com/advanced/error-codes#yn0002---missing_peer_dependency) This PR silences these warnings using yarnrc `logFilters`. Important: devs can still inspect these warnings via `yarn explain peer-requirements` or by managing their projects' `logFilters` config. Case 2) [YN0060 - INCOMPATIBLE_PEER_DEPENDENCY](https://yarnpkg.com/advanced/error-codes#yn0060---incompatible_peer_dependency) Because this can only be resolved via the parent package, this PR moves the necessary package code into the respective Redwood Package, thus properly fixing the incompatibility. This PR breaks a CSS import in the a11y Template `layout.tsx.a11yTemplate`, which is used when anyone generates a layout component with the `--skipLink` command option: `yarn redwood generate layout --skipLink` ```diff // web/src/layouts/MyLayout/MyLayout.{jsx|tsx} import { SkipNavLink, SkipNavContent } from '@redwoodjs/router' -import '@reach/skip-nav/styles.css' +import '@redwoodjs/router/skip-nav.css' ``` - [x] Update redwoodjs/docs/a11y - [ ] Codemode for layout component import change (might not be necessary as find+replace would work just fine) --------- Co-authored-by: Dominic Saadi --- docs/docs/a11y.md | 4 +- .../__snapshots__/layout.test.ts.snap | 4 +- .../layout/templates/layout.tsx.a11yTemplate | 2 +- packages/forms/package.json | 3 +- packages/router/package.json | 4 +- packages/router/skip-nav.css | 33 ++++ packages/router/src/index.ts | 4 +- packages/router/src/skipNav.tsx | 166 ++++++++++++++++++ yarn.lock | 23 --- 9 files changed, 209 insertions(+), 34 deletions(-) create mode 100644 packages/router/skip-nav.css create mode 100644 packages/router/src/skipNav.tsx diff --git a/docs/docs/a11y.md b/docs/docs/a11y.md index 8129c4c7bd73..7cc09b9b0df3 100644 --- a/docs/docs/a11y.md +++ b/docs/docs/a11y.md @@ -105,7 +105,7 @@ yarn rw g layout main --skipLink ```jsx title="web/src/layouts/MainLayout/MainLayout.js" import { SkipNavLink, SkipNavContent } from '@redwoodjs/router' -import '@reach/skip-nav/styles.css' +import '@redwoodjs/router/skip-nav.css' const MainLayout = ({ children }) => { return ( @@ -122,7 +122,7 @@ export default MainLayout ``` `SkipNavLink` renders a link that remains hidden till focused and `SkipNavContent` renders a div as the target for the link. -For more on these components, see [Reach UI's docs](https://reach.tech/skip-nav/#reach-skip-nav). +The code for these components comes from Reach UI. For more details, see [Reach UI's docs](https://reach.tech/skip-nav/#reach-skip-nav). One thing you'll probably want to do is change the URL the skip link sends the user to when activated. You can do that by changing the `contentId` and `id` props of `SkipNavLink` and `SkipNavContent` respectively: diff --git a/packages/cli/src/commands/generate/layout/__tests__/__snapshots__/layout.test.ts.snap b/packages/cli/src/commands/generate/layout/__tests__/__snapshots__/layout.test.ts.snap index 2fe095bbdd3d..12cfbf0e20e0 100644 --- a/packages/cli/src/commands/generate/layout/__tests__/__snapshots__/layout.test.ts.snap +++ b/packages/cli/src/commands/generate/layout/__tests__/__snapshots__/layout.test.ts.snap @@ -2,7 +2,7 @@ exports[`JavaScript: includes skip link when --skipLink is set to true 1`] = ` "import { SkipNavLink, SkipNavContent } from '@redwoodjs/router' -import '@reach/skip-nav/styles.css' +import '@redwoodjs/router/skip-nav.css' /** * since the main content isn't usually the first thing in the document, @@ -109,7 +109,7 @@ describe('AppLayout', () => { exports[`TypeScript: includes skip link when --skipLink is set to true 1`] = ` "import { SkipNavLink, SkipNavContent } from '@redwoodjs/router' -import '@reach/skip-nav/styles.css' +import '@redwoodjs/router/skip-nav.css' /** * since the main content isn't usually the first thing in the document, diff --git a/packages/cli/src/commands/generate/layout/templates/layout.tsx.a11yTemplate b/packages/cli/src/commands/generate/layout/templates/layout.tsx.a11yTemplate index 6d52879f8ec6..3294ae6e678d 100644 --- a/packages/cli/src/commands/generate/layout/templates/layout.tsx.a11yTemplate +++ b/packages/cli/src/commands/generate/layout/templates/layout.tsx.a11yTemplate @@ -1,5 +1,5 @@ import { SkipNavLink, SkipNavContent } from '@redwoodjs/router' -import '@reach/skip-nav/styles.css' +import '@redwoodjs/router/skip-nav.css' /** * since the main content isn't usually the first thing in the document, diff --git a/packages/forms/package.json b/packages/forms/package.json index d39eb80877bf..0e4e3b1071a8 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -25,6 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "core-js": "3.35.1", + "graphql": "16.8.1", "pascalcase": "1.0.0", "react-hook-form": "7.49.3" }, @@ -38,7 +39,6 @@ "@types/pascalcase": "1.0.3", "@types/react": "18.2.37", "@types/react-dom": "18.2.15", - "graphql": "16.8.1", "nodemon": "3.0.2", "react": "18.2.0", "react-dom": "18.2.0", @@ -46,7 +46,6 @@ "vitest": "1.2.2" }, "peerDependencies": { - "graphql": "16.8.1", "react": "18.2.0" }, "gitHead": "3905ed045508b861b495f8d5630d76c7a157d8f1" diff --git a/packages/router/package.json b/packages/router/package.json index 474025887fa3..0031ea7c3d60 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -10,7 +10,8 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "files": [ - "dist" + "dist", + "skip-nav.css" ], "scripts": { "build": "yarn build:js && yarn build:types", @@ -25,7 +26,6 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@reach/skip-nav": "0.18.0", "@redwoodjs/auth": "6.0.7", "core-js": "3.35.1" }, diff --git a/packages/router/skip-nav.css b/packages/router/skip-nav.css new file mode 100644 index 000000000000..def5fcc4f07d --- /dev/null +++ b/packages/router/skip-nav.css @@ -0,0 +1,33 @@ +/** + * Original code source https://github.com/reach/reach-ui + * https://github.com/reach/reach-ui/blob/dev/packages/skip-nav/styles.css + */ + +:root { + --reach-skip-nav: 1; +} + +[data-reach-skip-nav-link] { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + width: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + position: absolute; +} + +[data-reach-skip-nav-link]:focus { + padding: 1rem; + position: fixed; + top: 10px; + left: 10px; + background: white; + z-index: 1; + width: auto; + height: auto; + clip: auto; +} + + diff --git a/packages/router/src/index.ts b/packages/router/src/index.ts index 56c715a8bbec..3840c793a140 100644 --- a/packages/router/src/index.ts +++ b/packages/router/src/index.ts @@ -24,6 +24,8 @@ export * from './useMatch' export { parseSearch, getRouteRegexAndParams, matchPath } from './util' +export { SkipNavLink, SkipNavContent } from './skipNav' + /** * A more specific interface is created in `.redwood/types/includes/web-routerRoutes` * when the site is built, which will describe all known routes. @@ -37,7 +39,5 @@ export { parseSearch, getRouteRegexAndParams, matchPath } from './util' // Keep this in index.ts so it can be extended with declaration merging export interface AvailableRoutes {} -export { SkipNavLink, SkipNavContent } from '@reach/skip-nav' - // Used by packages/internal/src/generate/templates/web-routerRoutes.d.ts.template export * from './routeParamsTypes' diff --git a/packages/router/src/skipNav.tsx b/packages/router/src/skipNav.tsx new file mode 100644 index 000000000000..61f8f89d83ef --- /dev/null +++ b/packages/router/src/skipNav.tsx @@ -0,0 +1,166 @@ +// Original Code Source https://github.com/reach/reach-ui +// Moving here to resolve unmet peer dependency issues related to React 18 +// If resolved, should consider reverting to @reach/skip-nav +// See: https://github.com/reach/reach-ui/issues/916 + +import * as React from 'react' + +//////////////////////////////////////////////////////////////////////////////// + +// Original Code Source @reach/polymorphic +// https://github.com/reach/reach-ui/blob/dev/packages/polymorphic/src/reach-polymorphic.ts + +type Merge = Omit & P2 + +type ForwardRefExoticComponent = React.ForwardRefExoticComponent< + Merge< + E extends React.ElementType ? React.ComponentPropsWithRef : never, + OwnProps & { as?: E } + > +> + +interface ForwardRefComponent< + IntrinsicElementString, + OwnProps = {} + /* + * Extends original type to ensure built in React types play nice with + * polymorphic components still e.g. `React.ElementRef` etc. + */ +> extends ForwardRefExoticComponent { + /* + * When `as` prop is passed, use this overload. Merges original own props + * (without DOM props) and the inferred props from `as` element with the own + * props taking precendence. + * + * We explicitly avoid `React.ElementType` and manually narrow the prop types + * so that events are typed when using JSX.IntrinsicElements. + */ + ( + props: As extends '' + ? { as: keyof JSX.IntrinsicElements } + : As extends React.ComponentType + ? Merge + : As extends keyof JSX.IntrinsicElements + ? Merge + : never + ): React.ReactElement | null +} + +//////////////////////////////////////////////////////////////////////////////// + +// Original Code Source @reach/skip-nav +// https://github.com/reach/reach-ui/blob/dev/packages/skip-nav/src/reach-skip-nav.tsx + +// The user may want to provide their own ID (maybe there are multiple nav +// menus on a page a use might want to skip at various points in tabbing?). +const defaultId = 'reach-skip-nav' + +/** + * SkipNavLink + * + * Renders a link that remains hidden until focused to skip to the main content. + * + * @see Docs https://reach.tech/skip-nav#skipnavlink + */ +const SkipNavLink = React.forwardRef(function SkipNavLink( + { as: Comp = 'a', children = 'Skip to content', contentId, ...props }, + forwardedRef +) { + const id = contentId || defaultId + return ( + + {children} + + ) +}) as ForwardRefComponent<'a', SkipNavLinkProps> + +/** + * @see Docs https://reach.tech/skip-nav#skipnavlink-props + */ +interface SkipNavLinkProps { + /** + * Allows you to change the text for your preferred phrase or localization. + * + * @see Docs https://reach.tech/skip-nav#skipnavlink-children + */ + children?: React.ReactNode + /** + * An alternative ID for `SkipNavContent`. If used, the same value must be + * provided to the `id` prop in `SkipNavContent`. + * + * @see Docs https://reach.tech/skip-nav#skipnavlink-contentid + */ + contentId?: string +} + +SkipNavLink.displayName = 'SkipNavLink' + +//////////////////////////////////////////////////////////////////////////////// + +/** + * SkipNavContent + * + * Renders a div as the target for the link. + * + * @see Docs https://reach.tech/skip-nav#skipnavcontent + */ +const SkipNavContent = React.forwardRef(function SkipNavContent( + { as: Comp = 'div', id: idProp, ...props }, + forwardedRef +) { + const id = idProp || defaultId + return ( + + ) +}) as ForwardRefComponent<'div', SkipNavContentProps> + +/** + * @see Docs https://reach.tech/skip-nav#skipnavcontent-props + */ +interface SkipNavContentProps { + /** + * You can place the `SkipNavContent` element as a sibling to your main + * content or as a wrapper. + * + * Keep in mind it renders a `div`, so it may mess with your CSS depending on + * where it’s placed. + * + * @example + * + * + * // vs. + * + * + * + * + * @see Docs https://reach.tech/skip-nav#skipnavcontent-children + */ + children?: React.ReactNode + /** + * An alternative ID. If used, the same value must be provided to the + * `contentId` prop in `SkipNavLink`. + * + * @see Docs https://reach.tech/skip-nav#skipnavcontent-id + */ + id?: string +} + +SkipNavContent.displayName = 'SkipNavContent' + +//////////////////////////////////////////////////////////////////////////////// +// Exports + +export type { SkipNavContentProps, SkipNavLinkProps } +export { SkipNavLink, SkipNavContent } diff --git a/yarn.lock b/yarn.lock index 52d36d3d1538..1f787755907b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7292,27 +7292,6 @@ __metadata: languageName: node linkType: hard -"@reach/polymorphic@npm:0.18.0": - version: 0.18.0 - resolution: "@reach/polymorphic@npm:0.18.0" - peerDependencies: - react: ^16.8.0 || 17.x - checksum: dfde6dc901005f92e16f0e3601f0c659b70ee14d91e612cd68c9a918744fd94de30e8065d73663b72964225d3476f377c650daf2ac1e256de61df9ee386aabdc - languageName: node - linkType: hard - -"@reach/skip-nav@npm:0.18.0": - version: 0.18.0 - resolution: "@reach/skip-nav@npm:0.18.0" - dependencies: - "@reach/polymorphic": "npm:0.18.0" - peerDependencies: - react: ^16.8.0 || 17.x - react-dom: ^16.8.0 || 17.x - checksum: 30e3d4c568093e170b9e80ee42764a080c0a15ab3f9c7edf78dcc6ebd92f156799dba0f544757b84401806765f60fe527c869ef86d5323c0a7a3bdccf1a68f85 - languageName: node - linkType: hard - "@react-email/render@npm:0.0.10": version: 0.0.10 resolution: "@react-email/render@npm:0.0.10" @@ -8304,7 +8283,6 @@ __metadata: typescript: "npm:5.3.3" vitest: "npm:1.2.2" peerDependencies: - graphql: 16.8.1 react: 18.2.0 languageName: unknown linkType: soft @@ -8604,7 +8582,6 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@reach/skip-nav": "npm:0.18.0" "@redwoodjs/auth": "npm:6.0.7" "@types/react": "npm:18.2.37" "@types/react-dom": "npm:18.2.15" From 128bc60c6fb16730f53f13a9da623fa88f9d5836 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 8 Feb 2024 09:40:09 -0800 Subject: [PATCH 080/119] fix(docker): corepack permissions fix and style updates (#9976) PRing some fixes @Josh-Walker-GM tipped me off to: - We need to add the `RUN mkdir -p /home/node/.cache` instruction after `RUN mkdir -p /home/node/.yarn/berry/index`. I still can't reliably reproduce this one, but have seen it fail reliably before too for sure and this seems to fix it - I forgot to remove `--load-env-files` when I did the api-server work. It's a no-op now - I forgot to change `API_HOST` to `API_PROXY_TARGET` Adding a few style tweaks while I'm here: - I guess I used `yarn redwood`? This isn't the tutorial - Fixed a typo in the docs --- docs/docs/docker.md | 21 ++++++++------ .../experimental/templates/docker/Dockerfile | 29 ++++++++++--------- .../templates/docker/docker-compose.prod.yml | 2 +- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/docs/docs/docker.md b/docs/docs/docker.md index 4eefbea98839..664d0d72087b 100644 --- a/docs/docs/docker.md +++ b/docs/docs/docker.md @@ -7,7 +7,7 @@ description: Redwood's Dockerfile :::note The Dockerfile is experimental Redwood's Dockerfile is the collective effort of several hard-working community members. -We've worked hard to optimize the it, but expect changes as we collaborate with users and deploy providers. +We've worked hard to optimize it, but expect changes as we collaborate with users and deploy providers. ::: @@ -136,6 +136,7 @@ The important thing is that they're all here, before the `yarn install` step: ```Dockerfile RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ --mount=type=cache,target=/home/node/.cache,uid=1000 \ @@ -146,7 +147,7 @@ This step installs all your project's dependencies—production and dev. Since we use multi-stage builds, your production images won't pay for the dev dependencies installed in this step. The build stages need the dev dependencies. -The `mkdir` step is a workaround for a permission error. We're working on removing it, but for now if you remove it the install step will probably fail. +The `mkdir` steps are a workaround for a permission error. We're working on removing them, but for now if you remove them the install step will probably fail. This step is a bit more involved than the others. It uses a [cache mount](https://docs.docker.com/build/cache/#use-your-package-manager-wisely). @@ -190,10 +191,10 @@ FROM base as api_build # ARG MY_BUILD_TIME_ENV_VAR COPY --chown=node:node api api -RUN yarn redwood build api +RUN yarn rw build api ``` -After the work we did in the base stage, building the api side amounts to copying in the api directory and running `yarn redwood build api`. +After the work we did in the base stage, building the api side amounts to copying in the api directory and running `yarn rw build api`. ### The `api_serve` stage @@ -228,6 +229,7 @@ Like other `COPY` instructions, ordering these files with care enables layering ```Dockerfile RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ --mount=type=cache,target=/home/node/.cache,uid=1000 \ @@ -277,10 +279,10 @@ This `web_build` builds the web side: FROM base as web_build COPY --chown=node:node web web -RUN yarn redwood build web --no-prerender +RUN yarn rw build web --no-prerender ``` -After the work we did in the base stage, building the web side amounts to copying in the web directory and running `yarn redwood build web`. +After the work we did in the base stage, building the web side amounts to copying in the web directory and running `yarn rw build web`. This stage is a bit of a simplification. It foregoes Redwood's prerendering (SSG) capability. @@ -297,7 +299,7 @@ The `web_prerender_build` stage builds the web side with prerender. FROM api_build as web_build_with_prerender COPY --chown=node:node web web -RUN yarn redwood build web +RUN yarn rw build web ``` Building the web side with prerendering poses a challenge. @@ -320,6 +322,7 @@ COPY --chown=node:node web/package.json web/ COPY --chown=node:node yarn.lock . RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ --mount=type=cache,target=/home/node/.cache,uid=1000 \ @@ -332,9 +335,9 @@ COPY --chown=node:node .env.defaults .env.defaults COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist ENV NODE_ENV=production \ - API_HOST=http://api:8911 + API_PROXY_TARGET=http://api:8911 -CMD "node_modules/.bin/rw-web-server" "--apiHost" "$API_HOST" +CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET" ``` Most of this stage is similar to the `api_serve` stage, except that we're copying from the `web_build` stage instead of the `api_build`. diff --git a/packages/cli/src/commands/experimental/templates/docker/Dockerfile b/packages/cli/src/commands/experimental/templates/docker/Dockerfile index 3463996866e3..46263f0c9284 100644 --- a/packages/cli/src/commands/experimental/templates/docker/Dockerfile +++ b/packages/cli/src/commands/experimental/templates/docker/Dockerfile @@ -1,5 +1,5 @@ # base -# ------------------------------------------------ +# ---- FROM node:20-bookworm-slim as base RUN corepack enable @@ -22,6 +22,7 @@ COPY --chown=node:node web/package.json web/ COPY --chown=node:node yarn.lock . RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ --mount=type=cache,target=/home/node/.cache,uid=1000 \ @@ -32,7 +33,7 @@ COPY --chown=node:node graphql.config.js . COPY --chown=node:node .env.defaults .env.defaults # api build -# ------------------------------------------------ +# --------- FROM base as api_build # If your api side build relies on build-time environment variables, @@ -41,24 +42,24 @@ FROM base as api_build # ARG MY_BUILD_TIME_ENV_VAR COPY --chown=node:node api api -RUN yarn redwood build api +RUN yarn rw build api # web prerender build -# ------------------------------------------------ +# ------------------- FROM api_build as web_build_with_prerender COPY --chown=node:node web web -RUN yarn redwood build web +RUN yarn rw build web # web build -# ------------------------------------------------ +# --------- FROM base as web_build COPY --chown=node:node web web -RUN yarn redwood build web --no-prerender +RUN yarn rw build web --no-prerender -# serve api -# ------------------------------------------------ +# api serve +# --------- FROM node:20-bookworm-slim as api_serve RUN corepack enable @@ -77,6 +78,7 @@ COPY --chown=node:node api/package.json api/ COPY --chown=node:node yarn.lock . RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ --mount=type=cache,target=/home/node/.cache,uid=1000 \ @@ -92,10 +94,10 @@ COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /hom ENV NODE_ENV=production -CMD [ "node_modules/.bin/rw-server", "api", "--load-env-files" ] +CMD [ "node_modules/.bin/rw-server", "api" ] -# serve web -# ------------------------------------------------ +# web serve +# --------- FROM node:20-bookworm-slim as web_serve RUN corepack enable @@ -109,6 +111,7 @@ COPY --chown=node:node web/package.json web/ COPY --chown=node:node yarn.lock . RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ --mount=type=cache,target=/home/node/.cache,uid=1000 \ @@ -127,7 +130,7 @@ ENV NODE_ENV=production \ CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET" # console -# ------------------------------------------------ +# ------- FROM base as console # To add more packages: diff --git a/packages/cli/src/commands/experimental/templates/docker/docker-compose.prod.yml b/packages/cli/src/commands/experimental/templates/docker/docker-compose.prod.yml index a921f7603051..5a01e3651b5c 100644 --- a/packages/cli/src/commands/experimental/templates/docker/docker-compose.prod.yml +++ b/packages/cli/src/commands/experimental/templates/docker/docker-compose.prod.yml @@ -25,7 +25,7 @@ services: depends_on: - api environment: - - API_HOST=http://api:8911 + - API_PROXY_TARGET=http://api:8911 db: image: postgres:16-bookworm From 15653f6005cfb0c01ae81de9a81cdc193f028239 Mon Sep 17 00:00:00 2001 From: Daniel Choudhury Date: Fri, 9 Feb 2024 00:49:43 +0700 Subject: [PATCH 081/119] fix(test): Update createServer test to use a different port to normal (#9977) Just helps when you have another RW server running in the background :) I tried mocking with vitest, but it gets complicated because some of the test cases check against `getConfig` - this is good enough --- packages/api-server/src/__tests__/createServer.test.ts | 2 +- .../src/__tests__/fixtures/redwood-app/redwood.toml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index d7c7cfe97f09..4b13650af801 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -236,7 +236,7 @@ describe('resolveOptions', () => { DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout, logger: DEFAULT_CREATE_SERVER_OPTIONS.logger, }, - port: 8911, + port: 65501, host: '::', }) }) diff --git a/packages/api-server/src/__tests__/fixtures/redwood-app/redwood.toml b/packages/api-server/src/__tests__/fixtures/redwood-app/redwood.toml index 147631de6159..ac486b6bc5ee 100644 --- a/packages/api-server/src/__tests__/fixtures/redwood-app/redwood.toml +++ b/packages/api-server/src/__tests__/fixtures/redwood-app/redwood.toml @@ -7,14 +7,14 @@ [web] title = "Redwood App" - port = 8910 + port = 65500 apiUrl = "/.redwood/functions" # You can customize graphql and dbauth urls individually too: see https://redwoodjs.com/docs/app-configuration-redwood-toml#api-paths includeEnvironmentVariables = [ # Add any ENV vars that should be available to the web side to this array # See https://redwoodjs.com/docs/environment-variables#web ] [api] - port = 8911 + port = 65501 [browser] open = true [notifications] From 83fad3bec4f6a5659e683452304c426f5a596bfc Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 8 Feb 2024 10:50:19 -0800 Subject: [PATCH 082/119] fix(cli): use fetch instead of `yarn npm info` (#9975) Some time ago I think I made the call to use `yarn npm info` to get information from NPM about a package's version because I didn't want to install yet another dependency. This was the wrong move in hindsight since it meant 1) spawning a child process and 2) while it seemed safe to assume that Redwood projects would have a version of yarn with the `npm` subcommand, this wasn't true in practice. Now that fetch is in Node.js, we can just use that like @Josh-Walker-GM has elsewhere: https://github.com/redwoodjs/redwood/blob/019361550736f5ed733c37d7f5241583f26d405b/packages/cli/src/commands/experimental/setupDockerHandler.js#L330-L339 I think this might fix the bug you saw when deploying yesterday. --------- Co-authored-by: Dominic Saadi Co-authored-by: Tobbe Lundberg --- packages/cli/src/commands/setup/auth/auth.js | 24 ++++++++++++++++---- packages/cli/src/lib/packages.js | 24 ++++++++++++++++---- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/packages/cli/src/commands/setup/auth/auth.js b/packages/cli/src/commands/setup/auth/auth.js index 76c81f24960b..287037d2b5a7 100644 --- a/packages/cli/src/commands/setup/auth/auth.js +++ b/packages/cli/src/commands/setup/auth/auth.js @@ -219,17 +219,31 @@ async function getAuthHandler(module) { let { version } = fs.readJSONSync(packageJsonPath) if (!isInstalled(module)) { - const { stdout } = await execa.command( - `yarn npm info ${module} --fields versions --json` - ) - // If the version includes a plus, like '4.0.0-rc.428+dd79f1726' // (all @canary, @next, and @rc packages do), get rid of everything after the plus. if (version.includes('+')) { version = version.split('+')[0] } - const versionIsPublished = JSON.parse(stdout).versions.includes(version) + let packument + + try { + const packumentResponse = await fetch( + `https://registry.npmjs.org/${module}` + ) + + packument = await packumentResponse.json() + + if (packument.error) { + throw new Error(packument.error) + } + } catch (error) { + throw new Error( + `Couldn't fetch packument for ${module}: ${error.message}` + ) + } + + const versionIsPublished = Object.keys(packument.versions).includes(version) if (!versionIsPublished) { // Fallback to canary. This is most likely because it's a new package diff --git a/packages/cli/src/lib/packages.js b/packages/cli/src/lib/packages.js index c65c7dc9d49c..73811a981e2b 100644 --- a/packages/cli/src/lib/packages.js +++ b/packages/cli/src/lib/packages.js @@ -49,17 +49,31 @@ export async function installRedwoodModule(module) { let { version } = fs.readJSONSync(packageJsonPath) if (!isModuleInstalled(module)) { - const { stdout } = await execa.command( - `yarn npm info ${module} --fields versions --json` - ) - // If the version includes a plus, like '4.0.0-rc.428+dd79f1726' // (all @canary, @next, and @rc packages do), get rid of everything after the plus. if (version.includes('+')) { version = version.split('+')[0] } - const versionIsPublished = JSON.parse(stdout).versions.includes(version) + let packument + + try { + const packumentResponse = await fetch( + `https://registry.npmjs.org/${module}` + ) + + packument = await packumentResponse.json() + + if (packument.error) { + throw new Error(packument.error) + } + } catch (error) { + throw new Error( + `Couldn't fetch packument for ${module}: ${error.message}` + ) + } + + const versionIsPublished = Object.keys(packument.versions).includes(version) if (!versionIsPublished) { // Fallback to canary. This is most likely because it's a new package From 35ece3e3bf05616507e3db733eef979c73894cf6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 20:09:43 +0000 Subject: [PATCH 083/119] fix(deps): update prisma monorepo to v5.9.1 (#9980) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@prisma/client](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/client)) | [`5.9.0` -> `5.9.1`](https://renovatebot.com/diffs/npm/@prisma%2fclient/5.9.0/5.9.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2fclient/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2fclient/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2fclient/5.9.0/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2fclient/5.9.0/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@prisma/internals](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/internals)) | [`5.9.0` -> `5.9.1`](https://renovatebot.com/diffs/npm/@prisma%2finternals/5.9.0/5.9.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@prisma%2finternals/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@prisma%2finternals/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@prisma%2finternals/5.9.0/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@prisma%2finternals/5.9.0/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [prisma](https://www.prisma.io) ([source](https://togithub.com/prisma/prisma/tree/HEAD/packages/cli)) | [`5.9.0` -> `5.9.1`](https://renovatebot.com/diffs/npm/prisma/5.9.0/5.9.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/prisma/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/prisma/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/prisma/5.9.0/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/prisma/5.9.0/5.9.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ---
prisma/prisma (@​prisma/client) [Compare Source](https://togithub.com/prisma/prisma/compare/5.9.0...5.9.1) Today, we are issuing the `5.9.1` patch release. In `5.9.0` we have changed our conditional exports in `@prisma/client`. This resulted in broken types for TypesScript users using certain combinations of `module`/`moduleResolution` settings. Additionally, it also caused a regression for Next.js users which have encountered invalid error messages from our side. You can now try out `5.9.1` and let us know if you find a bug at https://pris.ly/prisma-prisma-bug-report - [\[5.9.0\] Getting strange types after generating - [v5.9.0 / Don't generate type. And the error from the previous version is still there - [\[5.9.0\] Error: Prisma Client is unable to run in an edge runtime. As an alternative, try Accelerate: https://pris.ly/d/accelerate. - [`Error: Prisma Client is unable to run in an edge runtime. As an alternative, try Accelerate: https://pris.ly/d/accelerate.` - [\[5.9.0\] All queries result in any type - [Prisma edge runtime error - [please how i cant fix this message issues - [\[v5.9.0\] $extends always return any - [\[5.9.0\] @​prisma/client in Next.js middleware - [Error after Upgrading from 5.8.1 to 5.9.0 - [\[5.9.0 Bug\] Prisma.TransactionClient appears to be missing types Note: many issues are duplicates.
--- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/api/package.json | 2 +- .../cli-packages/dataMigrate/package.json | 2 +- packages/cli/package.json | 4 +- packages/record/package.json | 4 +- packages/structure/package.json | 2 +- yarn.lock | 104 +++++++++--------- 6 files changed, 59 insertions(+), 59 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index ed33f1946b20..319852206189 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -33,7 +33,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@prisma/client": "5.9.0", + "@prisma/client": "5.9.1", "@whatwg-node/fetch": "0.9.14", "core-js": "3.35.1", "humanize-string": "2.1.0", diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index fd5cb6bf60b2..08162fd5e552 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -36,7 +36,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@prisma/client": "5.9.0", + "@prisma/client": "5.9.1", "@redwoodjs/framework-tools": "6.0.7", "@types/fs-extra": "11.0.4", "@types/yargs": "17.0.32", diff --git a/packages/cli/package.json b/packages/cli/package.json index 383b1c3f9043..1bcdec46ac46 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -37,7 +37,7 @@ "@opentelemetry/resources": "1.18.1", "@opentelemetry/sdk-trace-node": "1.18.1", "@opentelemetry/semantic-conventions": "1.18.1", - "@prisma/internals": "5.9.0", + "@prisma/internals": "5.9.1", "@redwoodjs/api-server": "6.0.7", "@redwoodjs/cli-helpers": "6.0.7", "@redwoodjs/fastify-web": "6.0.7", @@ -73,7 +73,7 @@ "pluralize": "8.0.0", "portfinder": "1.0.32", "prettier": "2.8.8", - "prisma": "5.9.0", + "prisma": "5.9.1", "prompts": "2.4.2", "rimraf": "5.0.5", "semver": "7.5.4", diff --git a/packages/record/package.json b/packages/record/package.json index b59b6b64d9a9..62136baeab90 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -24,14 +24,14 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@prisma/client": "5.9.0", + "@prisma/client": "5.9.1", "@redwoodjs/project-config": "6.0.7", "core-js": "3.35.1" }, "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@prisma/internals": "5.9.0", + "@prisma/internals": "5.9.1", "esbuild": "0.20.0", "vitest": "1.2.2" }, diff --git a/packages/structure/package.json b/packages/structure/package.json index e4b16cbf1a53..6ace9b2f456e 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -27,7 +27,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@iarna/toml": "2.2.5", - "@prisma/internals": "5.9.0", + "@prisma/internals": "5.9.1", "@redwoodjs/project-config": "6.0.7", "@types/line-column": "1.0.0", "camelcase": "6.3.0", diff --git a/yarn.lock b/yarn.lock index 1f787755907b..29ab8f2014a8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6561,22 +6561,22 @@ __metadata: languageName: node linkType: hard -"@prisma/client@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/client@npm:5.9.0" +"@prisma/client@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/client@npm:5.9.1" peerDependencies: prisma: "*" peerDependenciesMeta: prisma: optional: true - checksum: 3619163048e018765e5bc045738bcd1be1e464235348e5b083cf7e36b1e884946148206f5a64ec6187ef84ab42ffdc5e34ddbe78cba68dfd27febeeb156ba9df + checksum: 5447007e42d507e45960210d804736000b53556b076dd15797dfaed0c58e462dc24eb27e9c6636b8a145dd1a103fc7f6cd876f1906217e8fd8b74c6533169287 languageName: node linkType: hard -"@prisma/debug@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/debug@npm:5.9.0" - checksum: dfd1fe301a74217ce5896d0b6e4b40085664f5af4104490709502745b154109c7419613c7df7bf083e6c92cf35119ecea6f1d82bdb892bc1c6d6edd914c18149 +"@prisma/debug@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/debug@npm:5.9.1" + checksum: 0e116019f5e8df7ec30503bcfd033e54c94a20e2a6d6abeed525eac3e0be8f40f8cd3b0cf43abad91d1ec80c3dbca8d827f753b2ccbf9eea20a05ff1cd1d12f5 languageName: node linkType: hard @@ -6587,60 +6587,60 @@ __metadata: languageName: node linkType: hard -"@prisma/engines@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/engines@npm:5.9.0" +"@prisma/engines@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/engines@npm:5.9.1" dependencies: - "@prisma/debug": "npm:5.9.0" + "@prisma/debug": "npm:5.9.1" "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" - "@prisma/fetch-engine": "npm:5.9.0" - "@prisma/get-platform": "npm:5.9.0" - checksum: d4e321f7b6b78992032a41d116765aee9258508d5e58bdf402823fed8b5585dc4ad39a149fce529dadbf1f2ae220a2daf4422ed0afecb81023713783b08c9349 + "@prisma/fetch-engine": "npm:5.9.1" + "@prisma/get-platform": "npm:5.9.1" + checksum: 2148c14ec3d46709477319b23dae0e837c91a8119ee01e0a06daf73e6f008bfda5439603d29d722e17b297f2ebe2e73eedb50a4e914a2103931d3de2b4409436 languageName: node linkType: hard -"@prisma/fetch-engine@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/fetch-engine@npm:5.9.0" +"@prisma/fetch-engine@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/fetch-engine@npm:5.9.1" dependencies: - "@prisma/debug": "npm:5.9.0" + "@prisma/debug": "npm:5.9.1" "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" - "@prisma/get-platform": "npm:5.9.0" - checksum: f16452a57feedf9dcb5b1524b4d6c7693256ce49f7651ded2fca39b97e44e27fc72c8b68ea7020f90ba8474fdd8cca66ca29d88674bfdc33bbefc18bdd2e9c0b + "@prisma/get-platform": "npm:5.9.1" + checksum: 3abe9ce5dcdea042a6047ba6497730f6d7ce05103de7cf1634e7543742369abc4a62179a8de1cb219e132f5e45729c95c04fc039cebee5b93c23400722ba0583 languageName: node linkType: hard -"@prisma/generator-helper@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/generator-helper@npm:5.9.0" +"@prisma/generator-helper@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/generator-helper@npm:5.9.1" dependencies: - "@prisma/debug": "npm:5.9.0" - checksum: 3586d83d1a665c2811425790e8985087c5d9d6ce623451f9ef09b92094c72b099cf5c63868715c5d2dd15494dd650c70efb0cc524f98d382817d7580ed1290ac + "@prisma/debug": "npm:5.9.1" + checksum: 34179bc1aded0fec379393f9849046cf3ec3792ca9c052a5486720127af0a234aa0ce3f2b31b04246ac481549a028ddbd9c08259ddcbdce81e8f88db77d5d1f4 languageName: node linkType: hard -"@prisma/get-platform@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/get-platform@npm:5.9.0" +"@prisma/get-platform@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/get-platform@npm:5.9.1" dependencies: - "@prisma/debug": "npm:5.9.0" - checksum: ed0161fe56974ac1461f44d13a46f06895f9a59f365a8b4ee9cbcb0bf1aa9bd4b6b51389394a52d538a8ebd795f4f4ecb787427fdd0bf29e123c3270c35e8273 + "@prisma/debug": "npm:5.9.1" + checksum: ac7aa5fca0d5c2a6f04b04bc30eef8df4524ec34e9b2761b47c9fa58ab9b718c5525cb20a944d10e66d7978a4f8ec1ba6cb44a41139d26f885dbfd69c17d385b languageName: node linkType: hard -"@prisma/internals@npm:5.9.0": - version: 5.9.0 - resolution: "@prisma/internals@npm:5.9.0" +"@prisma/internals@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/internals@npm:5.9.1" dependencies: - "@prisma/debug": "npm:5.9.0" - "@prisma/engines": "npm:5.9.0" - "@prisma/fetch-engine": "npm:5.9.0" - "@prisma/generator-helper": "npm:5.9.0" - "@prisma/get-platform": "npm:5.9.0" + "@prisma/debug": "npm:5.9.1" + "@prisma/engines": "npm:5.9.1" + "@prisma/fetch-engine": "npm:5.9.1" + "@prisma/generator-helper": "npm:5.9.1" + "@prisma/get-platform": "npm:5.9.1" "@prisma/prisma-schema-wasm": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" arg: "npm:5.0.2" prompts: "npm:2.4.2" - checksum: 165c87f7891671bf25492f3d049b54b8b8a4a3cf166c19fef1feed8cb8df579afd3a09ab42fea60648d1322ec891030443eea71c893c6cf3730ad908db108fcd + checksum: 1afc0e9cbdef678260524b32111d5d2d8aaa684c5800f407055f20c68d39e6afa3e5c0378ce9223a58c6021023c19b08b7ed4a2ee0418552e9213d39b8eeec17 languageName: node linkType: hard @@ -7424,7 +7424,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@prisma/client": "npm:5.9.0" + "@prisma/client": "npm:5.9.1" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" "@types/memjs": "npm:1" @@ -7945,7 +7945,7 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/cli-data-migrate@workspace:packages/cli-packages/dataMigrate" dependencies: - "@prisma/client": "npm:5.9.0" + "@prisma/client": "npm:5.9.1" "@redwoodjs/babel-config": "npm:6.0.7" "@redwoodjs/framework-tools": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" @@ -8031,7 +8031,7 @@ __metadata: "@opentelemetry/resources": "npm:1.18.1" "@opentelemetry/sdk-trace-node": "npm:1.18.1" "@opentelemetry/semantic-conventions": "npm:1.18.1" - "@prisma/internals": "npm:5.9.0" + "@prisma/internals": "npm:5.9.1" "@redwoodjs/api-server": "npm:6.0.7" "@redwoodjs/cli-helpers": "npm:6.0.7" "@redwoodjs/fastify-web": "npm:6.0.7" @@ -8069,7 +8069,7 @@ __metadata: pluralize: "npm:8.0.0" portfinder: "npm:1.0.32" prettier: "npm:2.8.8" - prisma: "npm:5.9.0" + prisma: "npm:5.9.1" prompts: "npm:2.4.2" rimraf: "npm:5.0.5" semver: "npm:7.5.4" @@ -8566,8 +8566,8 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@prisma/client": "npm:5.9.0" - "@prisma/internals": "npm:5.9.0" + "@prisma/client": "npm:5.9.1" + "@prisma/internals": "npm:5.9.1" "@redwoodjs/project-config": "npm:6.0.7" core-js: "npm:3.35.1" esbuild: "npm:0.20.0" @@ -8605,7 +8605,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@iarna/toml": "npm:2.2.5" - "@prisma/internals": "npm:5.9.0" + "@prisma/internals": "npm:5.9.1" "@redwoodjs/project-config": "npm:6.0.7" "@types/fs-extra": "npm:11.0.4" "@types/line-column": "npm:1.0.0" @@ -27847,14 +27847,14 @@ __metadata: languageName: node linkType: hard -"prisma@npm:5.9.0": - version: 5.9.0 - resolution: "prisma@npm:5.9.0" +"prisma@npm:5.9.1": + version: 5.9.1 + resolution: "prisma@npm:5.9.1" dependencies: - "@prisma/engines": "npm:5.9.0" + "@prisma/engines": "npm:5.9.1" bin: prisma: build/index.js - checksum: b57f384a29ec94baeecec8b5af9557420edb92079556bcecb065d262b6272f5cfbf0958676d47c70113b45a2760b9e4ba7efdaabb8e0dcb8bc41d3a4b5c24be2 + checksum: f934bd94bea6863902d8abe2711fd7655ed25da267f92f33eef763a20c325e98e63111613b645ba6ae241e8add652aa598dd61ada560a40dcc47572229bb9960 languageName: node linkType: hard From 33d55c157ebba723294248a0260217ec415ae389 Mon Sep 17 00:00:00 2001 From: Josh GM Walker <56300765+Josh-Walker-GM@users.noreply.github.com> Date: Thu, 8 Feb 2024 20:52:08 +0000 Subject: [PATCH 084/119] fix(docker): compose dev and prod (#9982) **Problem** By default when once you have run the experimental setup command for docker, the compose setup for dev and prod doesn't quite work. **Changes** 1. We add missing `fs-extra` dependency for the `@redwoodjs/web-server`, it is a runtime dependency. 2. We add a `REDWOOD_API_HOST=0.0.0.0` env var for the dev setup. This is required for the vite dev server to proxy requests correctly. **Notes** @jtoar I'm not overly sure how to test the compose with the updated dependency of the web-server package. Adding the dependency to the web side itself did work so I would imagine this works fine too. --- .../experimental/templates/docker/docker-compose.dev.yml | 1 + packages/web-server/package.json | 1 + yarn.lock | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/cli/src/commands/experimental/templates/docker/docker-compose.dev.yml b/packages/cli/src/commands/experimental/templates/docker/docker-compose.dev.yml index d5ae4c4f07cd..af3a04e975d0 100644 --- a/packages/cli/src/commands/experimental/templates/docker/docker-compose.dev.yml +++ b/packages/cli/src/commands/experimental/templates/docker/docker-compose.dev.yml @@ -20,6 +20,7 @@ services: - SESSION_SECRET=super_secret_session_key_change_me_in_production_please - CI= - NODE_ENV=development + - REDWOOD_API_HOST=0.0.0.0 db: image: postgres:16-bookworm diff --git a/packages/web-server/package.json b/packages/web-server/package.json index 460c2147f395..c919a2fd64d8 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -30,6 +30,7 @@ "chalk": "4.1.2", "dotenv-defaults": "5.0.2", "fastify": "4.25.2", + "fs-extra": "11.2.0", "yargs": "17.7.2" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 29ab8f2014a8..698dae1c4c84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8746,6 +8746,7 @@ __metadata: chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" fastify: "npm:4.25.2" + fs-extra: "npm:11.2.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" yargs: "npm:17.7.2" From 5d31fed39507d1f0aa4a999cc9736448ab01044c Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 8 Feb 2024 15:36:28 -0800 Subject: [PATCH 085/119] fix: unpin react types (#9727) Fixes https://community.redwoodjs.com/t/you-must-register-a-usemutation-hook-via-the-graphglhooksprovider/5604. This problem is very similar to the Babel issues we were seeing a few months ago or so. Dependencies that are used across the ecosystem are a poor choice for pinning because it results in node modules being hoisted in unpredictable ways. The current problem in the forum post is: - we pin dependencies that our framework packages also use like `@types/react` in a CRWA - we upgrade `@types/react` in the framework packages, but CRWA apps don't get upgraded and still request an older version - node module nesting ensues because yarn tries to make everyone happy, but has to do so via the node modules linker - the wrong node module gets required somehow because there's now two ways to find it (what the user in the forum was experiencing) Here's the difference in nesting before/after aligning the versions of `@types/react`: ``` % ls ./node_modules/@redwoodjs/testing/node_modules/ @apollo @redwoodjs @types pretty-format react-hot-toast @reach @testing-library ansi-styles react-helmet-async react-is % ls ./node_modules/@redwoodjs/testing/node_modules/ @types ``` What I did with Babel was use carets for packages that I found were prone to colliding with our other dependencies like Storybook. In this case we're kind of colliding with our own packages. Originally I wanted to remove the `@types/react-` packages from `@redwoodjs/testing`'s dependencies all together because CRWA projects ship with them in the web workspace now. But @Tobbe pointed out that the mailer on the api side uses React now, so removing them from `@redwoodjs/testing` without also adding them to the api workspace may be a bad idea. Then I realized many mailer packages have a peer dependency on React which isn't explicit provided by the api workspace. Then we started thinking about moving the react dependencies up to the root workspace to satisfy both sides, but I knew that the Docker api image focuses on the api workspace to keep the number of dependencies installed down. TL;DR this opened a can of worms I'm not ready to commit to so I settled on just carets all around for now. --------- Co-authored-by: Dominic Saadi --- __fixtures__/test-project/web/package.json | 4 +- .../auth-providers/auth0/web/package.json | 2 +- .../azureActiveDirectory/web/package.json | 2 +- .../auth-providers/clerk/web/package.json | 2 +- .../auth-providers/dbAuth/web/package.json | 2 +- .../auth-providers/firebase/web/package.json | 2 +- .../auth-providers/netlify/web/package.json | 2 +- .../auth-providers/supabase/web/package.json | 2 +- .../supertokens/web/package.json | 2 +- .../templates/js/web/package.json | 4 +- .../templates/ts/web/package.json | 4 +- packages/forms/package.json | 4 +- packages/router/package.json | 4 +- packages/testing/package.json | 4 +- packages/vite/package.json | 2 +- packages/web/package.json | 4 +- yarn.lock | 50 +++++++++---------- 17 files changed, 48 insertions(+), 48 deletions(-) diff --git a/__fixtures__/test-project/web/package.json b/__fixtures__/test-project/web/package.json index ccde6e78da83..437769d8feeb 100644 --- a/__fixtures__/test-project/web/package.json +++ b/__fixtures__/test-project/web/package.json @@ -21,8 +21,8 @@ }, "devDependencies": { "@redwoodjs/vite": "6.0.7", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "autoprefixer": "^10.4.17", "postcss": "^8.4.35", "postcss-loader": "^8.1.0", diff --git a/packages/auth-providers/auth0/web/package.json b/packages/auth-providers/auth0/web/package.json index 77c775a08e1b..1e5db6c7bf48 100644 --- a/packages/auth-providers/auth0/web/package.json +++ b/packages/auth-providers/auth0/web/package.json @@ -31,7 +31,7 @@ "@auth0/auth0-spa-js": "2.1.2", "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "react": "18.2.0", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/azureActiveDirectory/web/package.json b/packages/auth-providers/azureActiveDirectory/web/package.json index dcea401521b1..f70e71266ed4 100644 --- a/packages/auth-providers/azureActiveDirectory/web/package.json +++ b/packages/auth-providers/azureActiveDirectory/web/package.json @@ -32,7 +32,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/netlify-identity-widget": "1.9.6", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "react": "18.2.0", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/clerk/web/package.json b/packages/auth-providers/clerk/web/package.json index c4efdbb0f775..be25b5de15c2 100644 --- a/packages/auth-providers/clerk/web/package.json +++ b/packages/auth-providers/clerk/web/package.json @@ -32,7 +32,7 @@ "@babel/core": "^7.22.20", "@clerk/clerk-react": "4.30.3", "@clerk/types": "3.60.0", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "react": "18.2.0", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/dbAuth/web/package.json b/packages/auth-providers/dbAuth/web/package.json index 984f6f7a8a73..37be976c8753 100644 --- a/packages/auth-providers/dbAuth/web/package.json +++ b/packages/auth-providers/dbAuth/web/package.json @@ -33,7 +33,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@simplewebauthn/typescript-types": "7.4.0", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "jest": "29.7.0", "react": "18.2.0", "typescript": "5.3.3" diff --git a/packages/auth-providers/firebase/web/package.json b/packages/auth-providers/firebase/web/package.json index f882896c83b6..17fd3a1c807a 100644 --- a/packages/auth-providers/firebase/web/package.json +++ b/packages/auth-providers/firebase/web/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "firebase": "10.7.0", "jest": "29.7.0", "react": "18.2.0", diff --git a/packages/auth-providers/netlify/web/package.json b/packages/auth-providers/netlify/web/package.json index b6a4b6cf1b37..87b1d565adb7 100644 --- a/packages/auth-providers/netlify/web/package.json +++ b/packages/auth-providers/netlify/web/package.json @@ -31,7 +31,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@types/netlify-identity-widget": "1.9.6", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "react": "18.2.0", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/supabase/web/package.json b/packages/auth-providers/supabase/web/package.json index a536288079b5..87c21b77a526 100644 --- a/packages/auth-providers/supabase/web/package.json +++ b/packages/auth-providers/supabase/web/package.json @@ -30,7 +30,7 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", "@supabase/supabase-js": "2.39.0", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "react": "18.2.0", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/supertokens/web/package.json b/packages/auth-providers/supertokens/web/package.json index 5ae5ee1044d3..d24f36ebaec0 100644 --- a/packages/auth-providers/supertokens/web/package.json +++ b/packages/auth-providers/supertokens/web/package.json @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "react": "18.2.0", "supertokens-auth-react": "0.34.0", "typescript": "5.3.3", diff --git a/packages/create-redwood-app/templates/js/web/package.json b/packages/create-redwood-app/templates/js/web/package.json index 9ec11041db51..bd94315e00cb 100644 --- a/packages/create-redwood-app/templates/js/web/package.json +++ b/packages/create-redwood-app/templates/js/web/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@redwoodjs/vite": "6.0.7", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15" + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19" } } diff --git a/packages/create-redwood-app/templates/ts/web/package.json b/packages/create-redwood-app/templates/ts/web/package.json index 9ec11041db51..bd94315e00cb 100644 --- a/packages/create-redwood-app/templates/ts/web/package.json +++ b/packages/create-redwood-app/templates/ts/web/package.json @@ -19,7 +19,7 @@ }, "devDependencies": { "@redwoodjs/vite": "6.0.7", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15" + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19" } } diff --git a/packages/forms/package.json b/packages/forms/package.json index 0e4e3b1071a8..254333a4d90b 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -37,8 +37,8 @@ "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", "@types/pascalcase": "1.0.3", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "nodemon": "3.0.2", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/packages/router/package.json b/packages/router/package.json index 0031ea7c3d60..60fab50fd3cc 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -32,8 +32,8 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "jest": "29.7.0", "react": "18.2.0", "react-dom": "18.2.0", diff --git a/packages/testing/package.json b/packages/testing/package.json index ed80885886f0..12f8bb0c4ed7 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -43,8 +43,8 @@ "@types/babel-core": "6.25.10", "@types/jest": "29.5.8", "@types/node": "20.11.10", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "@types/webpack": "5.28.5", "@types/webpack-env": "1.18.4", "babel-jest": "^29.7.0", diff --git a/packages/vite/package.json b/packages/vite/package.json index 23dc6fa000fb..11ef718b092b 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -37,7 +37,7 @@ }, "devDependencies": { "@babel/cli": "7.23.9", - "@types/react": "18.2.37", + "@types/react": "^18.2.55", "@types/yargs-parser": "21.0.3", "glob": "10.3.10", "typescript": "5.3.3", diff --git a/packages/web/package.json b/packages/web/package.json index 05df5194a87c..bf7472781f51 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -54,8 +54,8 @@ "@babel/core": "^7.22.20", "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", - "@types/react": "18.2.37", - "@types/react-dom": "18.2.15", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "jest": "29.7.0", "nodemon": "3.0.2", "react": "18.2.0", diff --git a/yarn.lock b/yarn.lock index 698dae1c4c84..92e97f9ef98d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7500,7 +7500,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" @@ -7553,7 +7553,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/netlify-identity-widget": "npm:1.9.6" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" @@ -7603,7 +7603,7 @@ __metadata: "@clerk/clerk-react": "npm:4.30.3" "@clerk/types": "npm:3.60.0" "@redwoodjs/auth": "npm:6.0.7" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" @@ -7677,7 +7677,7 @@ __metadata: "@redwoodjs/auth": "npm:6.0.7" "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" jest: "npm:29.7.0" react: "npm:18.2.0" @@ -7724,7 +7724,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" firebase: "npm:10.7.0" jest: "npm:29.7.0" @@ -7776,7 +7776,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" "@types/netlify-identity-widget": "npm:1.9.6" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" @@ -7825,7 +7825,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@supabase/supabase-js": "npm:2.39.0" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" typescript: "npm:5.3.3" @@ -7878,7 +7878,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" supertokens-auth-react: "npm:0.34.0" @@ -8271,8 +8271,8 @@ __metadata: "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.2" "@types/pascalcase": "npm:1.0.3" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" + "@types/react": "npm:^18.2.55" + "@types/react-dom": "npm:^18.2.19" core-js: "npm:3.35.1" graphql: "npm:16.8.1" nodemon: "npm:3.0.2" @@ -8583,8 +8583,8 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/auth": "npm:6.0.7" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" + "@types/react": "npm:^18.2.55" + "@types/react-dom": "npm:^18.2.19" core-js: "npm:3.35.1" jest: "npm:29.7.0" react: "npm:18.2.0" @@ -8680,8 +8680,8 @@ __metadata: "@types/babel-core": "npm:6.25.10" "@types/jest": "npm:29.5.8" "@types/node": "npm:20.11.10" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" + "@types/react": "npm:^18.2.55" + "@types/react-dom": "npm:^18.2.19" "@types/webpack": "npm:5.28.5" "@types/webpack-env": "npm:1.18.4" babel-jest: "npm:^29.7.0" @@ -8719,7 +8719,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@redwoodjs/internal": "npm:6.0.7" "@redwoodjs/project-config": "npm:6.0.7" - "@types/react": "npm:18.2.37" + "@types/react": "npm:^18.2.55" "@types/yargs-parser": "npm:21.0.3" "@vitejs/plugin-react": "npm:4.2.1" buffer: "npm:6.0.3" @@ -8766,8 +8766,8 @@ __metadata: "@redwoodjs/auth": "npm:6.0.7" "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" - "@types/react": "npm:18.2.37" - "@types/react-dom": "npm:18.2.15" + "@types/react": "npm:^18.2.55" + "@types/react-dom": "npm:^18.2.19" core-js: "npm:3.35.1" graphql: "npm:16.8.1" graphql-sse: "npm:2.5.2" @@ -11230,23 +11230,23 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:18.2.15, @types/react-dom@npm:^18.0.0": - version: 18.2.15 - resolution: "@types/react-dom@npm:18.2.15" +"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.19": + version: 18.2.19 + resolution: "@types/react-dom@npm:18.2.19" dependencies: "@types/react": "npm:*" - checksum: 70e86f15f69f89b8f179139ab2e8a8aa9765e742789f5dd5a46fec40d4300ada8fe3349cceda42b9964a018982d7ccb7d791b47f781966c992bfd37da909fbd3 + checksum: 88d7c6daa4659f661d0c97985d9fca492f24b421a34bb614dcd94c343aed7bea121463149e97fb01ecaa693be17b7d1542cf71ddb1705f3889a81eb2639a88aa languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:18.2.37, @types/react@npm:>=16": - version: 18.2.37 - resolution: "@types/react@npm:18.2.37" +"@types/react@npm:*, @types/react@npm:>=16, @types/react@npm:^18.2.55": + version: 18.2.55 + resolution: "@types/react@npm:18.2.55" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 79dd5d23da05bec54e7423ca17096e345eb8fd80a3bf8dd916bb5cdd60677d27c298523aa5b245d090fcc4ec100cfd58c1af4631fbac709d0a9d8be75f9d78a9 + checksum: 6b1c73beafbbc582dc54ffd92b3779f6d850e8f6b5ce5d04b31e9498a3d77bfc416bb08f0d8d63ab4f4649ccd6639996472416871c01c74a528b16a55faeaf38 languageName: node linkType: hard From 3148e6d8877f6b362dd8ae40c29a9730e7dcccbb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 00:49:43 +0000 Subject: [PATCH 086/119] chore(deps): update babel monorepo (#9983) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@babel/core](https://babel.dev/docs/en/next/babel-core) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-core)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fcore/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fcore/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fcore/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fcore/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fcore/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/eslint-parser](https://babel.dev/) ([source](https://togithub.com/babel/babel/tree/HEAD/eslint/babel-eslint-parser)) | [`7.23.9` -> `7.23.10`](https://renovatebot.com/diffs/npm/@babel%2feslint-parser/7.23.9/7.23.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2feslint-parser/7.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2feslint-parser/7.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2feslint-parser/7.23.9/7.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2feslint-parser/7.23.9/7.23.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/parser](https://babel.dev/docs/en/next/babel-parser) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-parser)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fparser/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fparser/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fparser/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fparser/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fparser/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/plugin-transform-react-jsx](https://babel.dev/docs/en/next/babel-plugin-transform-react-jsx) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-react-jsx)) | [`7.22.15` -> `7.23.4`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-react-jsx/7.22.15/7.23.4) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-react-jsx/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-react-jsx/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-react-jsx/7.22.15/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-react-jsx/7.22.15/7.23.4?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/plugin-transform-typescript](https://babel.dev/docs/en/next/babel-plugin-transform-typescript) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript)) | [`7.23.3` -> `7.23.6`](https://renovatebot.com/diffs/npm/@babel%2fplugin-transform-typescript/7.23.3/7.23.6) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fplugin-transform-typescript/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fplugin-transform-typescript/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fplugin-transform-typescript/7.23.3/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fplugin-transform-typescript/7.23.3/7.23.6?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/preset-env](https://babel.dev/docs/en/next/babel-preset-env) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-preset-env)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2fpreset-env/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2fpreset-env/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2fpreset-env/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2fpreset-env/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2fpreset-env/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | | [@babel/traverse](https://babel.dev/docs/en/next/babel-traverse) ([source](https://togithub.com/babel/babel/tree/HEAD/packages/babel-traverse)) | [`7.23.6` -> `7.23.9`](https://renovatebot.com/diffs/npm/@babel%2ftraverse/7.23.6/7.23.9) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@babel%2ftraverse/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@babel%2ftraverse/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@babel%2ftraverse/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@babel%2ftraverse/7.23.6/7.23.9?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ---
babel/babel (@​babel/core) [`v7.23.9`](https://togithub.com/babel/babel/blob/HEAD/CHANGELOG.md#v7239-2024-01-25) [Compare Source](https://togithub.com/babel/babel/compare/v7.23.7...v7.23.9) - `babel-helper-transform-fixture-test-runner`, `babel-plugin-transform-function-name`, `babel-plugin-transform-modules-systemjs`, `babel-preset-env` - [#​16225](https://togithub.com/babel/babel/pull/16225) fix: `systemjs` re-traverses helpers ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators` - [#​16226](https://togithub.com/babel/babel/pull/16226) Improve decorated private method check ([@​JLHwung](https://togithub.com/JLHwung)) - `babel-plugin-proposal-decorators`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-runtime`, `babel-preset-env` - [#​16224](https://togithub.com/babel/babel/pull/16224) Properly sort `core-js@3` imports ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-traverse` - [#​15383](https://togithub.com/babel/babel/pull/15383) fix: Don't throw in `getTypeAnnotation` when using TS+inference ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - Other - [#​16210](https://togithub.com/babel/babel/pull/16210) \[eslint] Fix `no-use-before-define` for class ref in fields ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-core`, `babel-parser`, `babel-template` - [#​16222](https://togithub.com/babel/babel/pull/16222) Migrate `eslint-parser` to cts ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-types` - [#​16213](https://togithub.com/babel/babel/pull/16213) Remove `@babel/types` props that are not produced by the parser ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-parser` - [#​16072](https://togithub.com/babel/babel/pull/16072) perf: Improve parser performance for typescript ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators`, `babel-plugin-proposal-destructuring-private`, `babel-plugin-proposal-pipeline-operator`, `babel-plugin-transform-class-properties`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-new-target`, `babel-plugin-transform-parameters`, `babel-plugin-transform-private-methods`, `babel-preset-env` - [#​16218](https://togithub.com/babel/babel/pull/16218) Improve temporary variables for decorators ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-explicit-resource-management`, `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime` - [#​15959](https://togithub.com/babel/babel/pull/15959) Improve output of `using` ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) [`v7.23.7`](https://togithub.com/babel/babel/blob/HEAD/CHANGELOG.md#v7237-2023-12-29) [Compare Source](https://togithub.com/babel/babel/compare/v7.23.6...v7.23.7) - `babel-traverse` - [#​16191](https://togithub.com/babel/babel/pull/16191) fix: Crash when removing without `Program` ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-decorators` - [#​16180](https://togithub.com/babel/babel/pull/16180) fix: Class decorator `ctx.kind` is wrong ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-plugin-proposal-decorators` - [#​16170](https://togithub.com/babel/babel/pull/16170) Fix decorator initProto usage in derived classes ([@​JLHwung](https://togithub.com/JLHwung)) - `babel-core` - [#​16167](https://togithub.com/babel/babel/pull/16167) Avoid unpreventable `unhandledRejection` events ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-helper-create-class-features-plugin` - [#​16186](https://togithub.com/babel/babel/pull/16186) chore: Update deps ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators` - [#​16177](https://togithub.com/babel/babel/pull/16177) Merge decorators into class features ([@​JLHwung](https://togithub.com/JLHwung))
babel/babel (@​babel/parser) [Compare Source](https://togithub.com/babel/babel/compare/v7.23.6...v7.23.9) - `babel-helper-transform-fixture-test-runner`, `babel-plugin-transform-function-name`, `babel-plugin-transform-modules-systemjs`, `babel-preset-env` - [#​16225](https://togithub.com/babel/babel/pull/16225) fix: `systemjs` re-traverses helpers ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators` - [#​16226](https://togithub.com/babel/babel/pull/16226) Improve decorated private method check ([@​JLHwung](https://togithub.com/JLHwung)) - `babel-plugin-proposal-decorators`, `babel-plugin-transform-async-generator-functions`, `babel-plugin-transform-runtime`, `babel-preset-env` - [#​16224](https://togithub.com/babel/babel/pull/16224) Properly sort `core-js@3` imports ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-traverse` - [#​15383](https://togithub.com/babel/babel/pull/15383) fix: Don't throw in `getTypeAnnotation` when using TS+inference ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - Other - [#​16210](https://togithub.com/babel/babel/pull/16210) \[eslint] Fix `no-use-before-define` for class ref in fields ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - `babel-core`, `babel-parser`, `babel-template` - [#​16222](https://togithub.com/babel/babel/pull/16222) Migrate `eslint-parser` to cts ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-types` - [#​16213](https://togithub.com/babel/babel/pull/16213) Remove `@babel/types` props that are not produced by the parser ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-parser` - [#​16072](https://togithub.com/babel/babel/pull/16072) perf: Improve parser performance for typescript ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helper-create-class-features-plugin`, `babel-plugin-proposal-decorators`, `babel-plugin-proposal-destructuring-private`, `babel-plugin-proposal-pipeline-operator`, `babel-plugin-transform-class-properties`, `babel-plugin-transform-class-static-block`, `babel-plugin-transform-new-target`, `babel-plugin-transform-parameters`, `babel-plugin-transform-private-methods`, `babel-preset-env` - [#​16218](https://togithub.com/babel/babel/pull/16218) Improve temporary variables for decorators ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - `babel-helpers`, `babel-plugin-proposal-explicit-resource-management`, `babel-runtime-corejs2`, `babel-runtime-corejs3`, `babel-runtime` - [#​15959](https://togithub.com/babel/babel/pull/15959) Improve output of `using` ([@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)) - Babel Bot ([@​babel-bot](https://togithub.com/babel-bot)) - Huáng Jùnliàng ([@​JLHwung](https://togithub.com/JLHwung)) - Nicolò Ribaudo ([@​nicolo-ribaudo](https://togithub.com/nicolo-ribaudo)) - [@​liuxingbaoyu](https://togithub.com/liuxingbaoyu)
--- 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/eslint-config/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 841f310c4f41..2b78e8c3d40c 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@babel/core": "^7.22.20", - "@babel/eslint-parser": "7.23.9", + "@babel/eslint-parser": "7.23.10", "@babel/eslint-plugin": "7.23.5", "@redwoodjs/eslint-plugin": "6.0.7", "@redwoodjs/internal": "6.0.7", diff --git a/yarn.lock b/yarn.lock index 92e97f9ef98d..5ee7ecf7c973 100644 --- a/yarn.lock +++ b/yarn.lock @@ -400,9 +400,9 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:7.23.9": - version: 7.23.9 - resolution: "@babel/eslint-parser@npm:7.23.9" +"@babel/eslint-parser@npm:7.23.10": + version: 7.23.10 + resolution: "@babel/eslint-parser@npm:7.23.10" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -410,7 +410,7 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 - checksum: 8a025e6c2d9ad47e86bfea9011422c8a053382692901607236cd0fba1ee52504d7d2b2c6186c14f15de7553ec0e2786b9a3c3d92542153f2d41c5241fb166745 + checksum: dfc091d44c86c72658d53abe66c778f7aa436672d66ae99a0b72857c968defed4749c18d2d3a35b1f61c77a193761ae7a71997dbe43c4c7cffcf945bd106bd67 languageName: node linkType: hard @@ -8203,7 +8203,7 @@ __metadata: dependencies: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" - "@babel/eslint-parser": "npm:7.23.9" + "@babel/eslint-parser": "npm:7.23.10" "@babel/eslint-plugin": "npm:7.23.5" "@redwoodjs/eslint-plugin": "npm:6.0.7" "@redwoodjs/internal": "npm:6.0.7" From 2b404570e3356fcd9b1e1b3c4e23908e22924ff9 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 8 Feb 2024 17:25:55 -0800 Subject: [PATCH 087/119] fix(server): use file extension in import, fix graphql route registering (#9984) This PR fixes two things related to the server file and the GraphQL function. - we have to specify file extensions with `await import` for relative paths; there was one missing for importing the graphql plugin - out of the box the graphql function was registered with double slashes since `graphiQLEndpoint` defaults to `'/graphql'` and `apiRootPath` defaults to `'/'`, resulting in `'//graphql'` --- packages/api-server/src/createServer.ts | 2 +- packages/api-server/src/plugins/graphql.ts | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 600474d3e7b7..5eabb4322a88 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -124,7 +124,7 @@ export async function createServer(options: CreateServerOptions = {}) { }) if (graphqlFunctionPath) { - const { redwoodFastifyGraphQLServer } = await import('./plugins/graphql') + const { redwoodFastifyGraphQLServer } = await import('./plugins/graphql.js') // This comes from a babel plugin that's applied to api/dist/functions/graphql.{ts,js} in user projects const { __rw_graphqlOptions } = await import( `file://${graphqlFunctionPath}` diff --git a/packages/api-server/src/plugins/graphql.ts b/packages/api-server/src/plugins/graphql.ts index c8b8fd6f1dec..779bd44385a8 100644 --- a/packages/api-server/src/plugins/graphql.ts +++ b/packages/api-server/src/plugins/graphql.ts @@ -102,22 +102,24 @@ export async function redwoodFastifyGraphQLServer( return reply } + const graphqlEndpoint = trimSlashes(yoga.graphqlEndpoint) + const routePaths = ['', '/health', '/readiness', '/stream'] for (const routePath of routePaths) { fastify.route({ - url: `${redwoodOptions.apiRootPath}${yoga.graphqlEndpoint}${routePath}`, + url: `${redwoodOptions.apiRootPath}${graphqlEndpoint}${routePath}`, method, handler: (req, reply) => graphQLYogaHandler(req, reply), }) } fastify.addHook('onReady', (done) => { - console.info(`GraphQL Yoga Server endpoint at ${yoga.graphqlEndpoint}`) + console.info(`GraphQL Yoga Server endpoint at ${graphqlEndpoint}`) console.info( - `GraphQL Yoga Server Health Check endpoint at ${yoga.graphqlEndpoint}/health` + `GraphQL Yoga Server Health Check endpoint at ${graphqlEndpoint}/health` ) console.info( - `GraphQL Yoga Server Readiness endpoint at ${yoga.graphqlEndpoint}/readiness` + `GraphQL Yoga Server Readiness endpoint at ${graphqlEndpoint}/readiness` ) done() @@ -126,3 +128,7 @@ export async function redwoodFastifyGraphQLServer( console.log(e) } } + +function trimSlashes(path: string) { + return path.replace(/^\/|\/$/g, '') +} From 517e99f083db781446480217e1a896f87fd7f96d Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 9 Feb 2024 00:37:13 -0800 Subject: [PATCH 088/119] chore(project-config): make chore changes to trigger ci (#9985) --- packages/project-config/README.md | 16 -- .../project-config/dependencyGraph.dist.svg | 230 ---------------- .../project-config/dependencyGraph.src.svg | 256 ------------------ 3 files changed, 502 deletions(-) delete mode 100644 packages/project-config/dependencyGraph.dist.svg delete mode 100644 packages/project-config/dependencyGraph.src.svg diff --git a/packages/project-config/README.md b/packages/project-config/README.md index 0cc63a91eef3..18af1f901def 100644 --- a/packages/project-config/README.md +++ b/packages/project-config/README.md @@ -6,19 +6,3 @@ > **Don't depend on this directly in a Redwood project**. This package offers functionality to parse Redwood's configuration file, redwood.toml, and a convenient way of getting a Redwood project's paths. - -## Package size - -| Version | Publish | Install | -| :--------------------------------------------------------------------------------- | :------ | :------ | -| [v5.2.1](https://packagephobia.com/result?p=%40redwoodjs%2Fproject-config%405.2.1) | 96.6 kB | 809 kB | - -## Dependency graphs - -### src - -![src](./dependencyGraph.src.svg) - -### dist - -![dist](./dependencyGraph.dist.svg) diff --git a/packages/project-config/dependencyGraph.dist.svg b/packages/project-config/dependencyGraph.dist.svg deleted file mode 100644 index 3d00ea7da602..000000000000 --- a/packages/project-config/dependencyGraph.dist.svg +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - -dependency-cruiser output - - -cluster_node_modules - -node_modules - - -cluster_node_modules/@iarna - -@iarna - - -cluster_packages - -packages - - -cluster_packages/project-config - -project-config - - -cluster_packages/project-config/dist - -dist - - - -fs - - -fs - - - - - -node_modules/@iarna/toml - - - - - -toml - - - - - -node_modules/deepmerge - - - - - -deepmerge - - - - - -node_modules/fast-glob - - - - - -fast-glob - - - - - -node_modules/string-env-interpolation - - - - - -string-env-interpolation - - - - - -packages/project-config/dist/config.d.ts - - -config.d.ts -50% - - - - - -packages/project-config/dist/config.d.ts->node_modules/@iarna/toml - - - - - -packages/project-config/dist/configPath.d.ts - - -configPath.d.ts -0% - - - - - -packages/project-config/dist/findUp.d.ts - - -findUp.d.ts -0% - - - - - -packages/project-config/dist/index.d.ts - - -index.d.ts -100% - - - - - -packages/project-config/dist/index.d.ts->packages/project-config/dist/config.d.ts - - - - - -packages/project-config/dist/index.d.ts->packages/project-config/dist/configPath.d.ts - - - - - -packages/project-config/dist/index.d.ts->packages/project-config/dist/findUp.d.ts - - - - - -packages/project-config/dist/paths.d.ts - - -paths.d.ts -0% - - - - - -packages/project-config/dist/index.d.ts->packages/project-config/dist/paths.d.ts - - - - - -packages/project-config/dist/index.js - - -index.js -100% - - - - - -packages/project-config/dist/index.js->fs - - - - - -packages/project-config/dist/index.js->node_modules/@iarna/toml - - - - - -packages/project-config/dist/index.js->node_modules/deepmerge - - - - - -packages/project-config/dist/index.js->node_modules/fast-glob - - - - - -packages/project-config/dist/index.js->node_modules/string-env-interpolation - - - - - -path - - -path - - - - - -packages/project-config/dist/index.js->path - - - - - diff --git a/packages/project-config/dependencyGraph.src.svg b/packages/project-config/dependencyGraph.src.svg deleted file mode 100644 index 658edf4a460b..000000000000 --- a/packages/project-config/dependencyGraph.src.svg +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - -dependency-cruiser output - - -cluster_node_modules - -node_modules - - -cluster_node_modules/@iarna - -@iarna - - -cluster_packages - -packages - - -cluster_packages/project-config - -project-config - - -cluster_packages/project-config/src - -src - - - -fs - - -fs - - - - - -node_modules/@iarna/toml - - - - - -toml - - - - - -node_modules/deepmerge - - - - - -deepmerge - - - - - -node_modules/fast-glob - - - - - -fast-glob - - - - - -node_modules/string-env-interpolation - - - - - -string-env-interpolation - - - - - -packages/project-config/src/config.ts - - -config.ts -71% - - - - - -packages/project-config/src/config.ts->fs - - - - - -packages/project-config/src/config.ts->node_modules/@iarna/toml - - - - - -packages/project-config/src/config.ts->node_modules/deepmerge - - - - - -packages/project-config/src/config.ts->node_modules/string-env-interpolation - - - - - -packages/project-config/src/configPath.ts - - -configPath.ts -25% - - - - - -packages/project-config/src/config.ts->packages/project-config/src/configPath.ts - - - - - -packages/project-config/src/findUp.ts - - -findUp.ts -50% - - - - - -packages/project-config/src/configPath.ts->packages/project-config/src/findUp.ts - - - - - -packages/project-config/src/findUp.ts->fs - - - - - -path - - -path - - - - - -packages/project-config/src/findUp.ts->path - - - - - -packages/project-config/src/index.ts - - -index.ts -100% - - - - - -packages/project-config/src/index.ts->packages/project-config/src/config.ts - - - - - -packages/project-config/src/index.ts->packages/project-config/src/configPath.ts - - - - - -packages/project-config/src/index.ts->packages/project-config/src/findUp.ts - - - - - -packages/project-config/src/paths.ts - - -paths.ts -83% - - - - - -packages/project-config/src/index.ts->packages/project-config/src/paths.ts - - - - - -packages/project-config/src/paths.ts->fs - - - - - -packages/project-config/src/paths.ts->node_modules/fast-glob - - - - - -packages/project-config/src/paths.ts->packages/project-config/src/config.ts - - - - - -packages/project-config/src/paths.ts->packages/project-config/src/configPath.ts - - - - - -packages/project-config/src/paths.ts->path - - - - - From ac48c83f45525b24a667683717220951acaac26b Mon Sep 17 00:00:00 2001 From: Rui Lima Date: Mon, 12 Feb 2024 23:22:54 +0000 Subject: [PATCH 089/119] bug: Update setupHandler.ts firebase version (#9997) To match the same version on redwood's api, otherwise it will fail to work after auth setup. --- packages/auth-providers/firebase/setup/src/setupHandler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/auth-providers/firebase/setup/src/setupHandler.ts b/packages/auth-providers/firebase/setup/src/setupHandler.ts index e63cb42c1743..83ab3d7a31ac 100644 --- a/packages/auth-providers/firebase/setup/src/setupHandler.ts +++ b/packages/auth-providers/firebase/setup/src/setupHandler.ts @@ -19,7 +19,7 @@ export async function handler({ force: forceArg }: Args) { webPackages: ['firebase@^10', `@redwoodjs/auth-firebase-web@${version}`], apiPackages: [ // Note that the version of this package should be exactly the same as the version in `@redwoodjs/auth-firebase-api` . - 'firebase-admin@11.10.1', + 'firebase-admin@11.11.1', `@redwoodjs/auth-firebase-api@${version}`, ], notes: [ From 4620f6b5201f55e873d9393536805c19f0de7151 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 13 Feb 2024 01:23:28 +0100 Subject: [PATCH 090/119] chore(jsdocs): Fix jsdoc formatting for hover help (#9999) --- packages/cli/src/lib/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/cli/src/lib/index.js b/packages/cli/src/lib/index.js index 6f626bb17876..835b6ea8d7a7 100644 --- a/packages/cli/src/lib/index.js +++ b/packages/cli/src/lib/index.js @@ -578,9 +578,7 @@ export const runCommandTask = async (commands, { verbose }) => { } } -/* - * Extract default CLI args from an exported builder - */ +/** Extract default CLI args from an exported builder */ export const getDefaultArgs = (builder) => { return Object.entries(builder).reduce( (options, [optionName, optionConfig]) => { From 4e7467172da1f3a05be6c2b1785444c1b29cd41d Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 13 Feb 2024 01:26:51 +0100 Subject: [PATCH 091/119] fix(telemetry): Fix 'destroy' spelling (#10000) --- packages/cli/src/commands/destroy/helpers.js | 2 +- packages/cli/src/commands/destroy/page/page.js | 2 +- packages/cli/src/commands/destroy/sdl/sdl.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/destroy/helpers.js b/packages/cli/src/commands/destroy/helpers.js index b92b49602368..792b4f4f632e 100644 --- a/packages/cli/src/commands/destroy/helpers.js +++ b/packages/cli/src/commands/destroy/helpers.js @@ -34,7 +34,7 @@ export const createYargsForComponentDestroy = ({ }, handler: async (options) => { recordTelemetryAttributes({ - command: `destory ${componentName}`, + command: `destroy ${componentName}`, }) options = await preTasksFn({ ...options, isDestroyer: true }) await tasks({ componentName, filesFn, name: options.name }).run() diff --git a/packages/cli/src/commands/destroy/page/page.js b/packages/cli/src/commands/destroy/page/page.js index d4de305c849e..4613e783f048 100644 --- a/packages/cli/src/commands/destroy/page/page.js +++ b/packages/cli/src/commands/destroy/page/page.js @@ -51,7 +51,7 @@ export const tasks = ({ name, path }) => export const handler = async ({ name, path }) => { recordTelemetryAttributes({ - command: 'destory page', + command: 'destroy page', }) const t = tasks({ name, path }) try { diff --git a/packages/cli/src/commands/destroy/sdl/sdl.js b/packages/cli/src/commands/destroy/sdl/sdl.js index e6b2c26d96ad..e52320fb3bd6 100644 --- a/packages/cli/src/commands/destroy/sdl/sdl.js +++ b/packages/cli/src/commands/destroy/sdl/sdl.js @@ -34,7 +34,7 @@ export const tasks = ({ model }) => export const handler = async ({ model }) => { recordTelemetryAttributes({ - command: 'destory sdl', + command: 'destroy sdl', }) try { const { name } = await verifyModelName({ name: model, isDestroyer: true }) From b4ccacda24b9d4bdbc46c82c38f97ae4231ab83b Mon Sep 17 00:00:00 2001 From: Tobias Date: Tue, 13 Feb 2024 17:43:41 +0100 Subject: [PATCH 092/119] docs: add aliases fo `type-check` command (#10004) see https://github.com/redwoodjs/redwood/blob/0ef0289221781e9d2751507f1a17607694b43255/packages/cli/src/commands/type-check.js#L6 --- docs/docs/cli-commands.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/cli-commands.md b/docs/docs/cli-commands.md index a15d643362e4..ae9254457aa6 100644 --- a/docs/docs/cli-commands.md +++ b/docs/docs/cli-commands.md @@ -2156,7 +2156,7 @@ yarn redwood test [side..] > **Note** all other flags are passed onto the jest cli. So for example if you wanted to update your snapshots you can pass the `-u` flag -## type-check +## type-check (alias tsc or tc) Runs a TypeScript compiler check on both the api and the web sides. From 83e9a748c5a0116d9ee147838b82de1aa2d32478 Mon Sep 17 00:00:00 2001 From: Tobias Date: Tue, 13 Feb 2024 17:44:35 +0100 Subject: [PATCH 093/119] fix(docs): Spelling of `data-migrate` command (#10003) --- docs/docs/cli-commands.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/docs/cli-commands.md b/docs/docs/cli-commands.md index ae9254457aa6..ca8e967aadbd 100644 --- a/docs/docs/cli-commands.md +++ b/docs/docs/cli-commands.md @@ -149,12 +149,12 @@ yarn run v1.22.4 > [ { id: 1, email: 'tom@redwoodjs.com', name: 'Tom' } ] ``` -## dataMigrate +## data-migrate Data migration tools. -``` -yarn redwood dataMigrate +```bash +yarn redwood data-migrate ``` | Command | Description | @@ -162,24 +162,24 @@ yarn redwood dataMigrate | `install` | Appends `DataMigration` model to `schema.prisma`, creates `api/db/dataMigrations` directory | | `up` | Executes outstanding data migrations | -### dataMigrate install +### data-migrate install - Appends a `DataMigration` model to `schema.prisma` for tracking which data migrations have already run. - Creates a DB migration using `yarn redwood prisma migrate dev --create-only create_data_migrations`. - Creates `api/db/dataMigrations` directory to contain data migration scripts ```bash -yarn redwood dataMigrate install +yarn redwood data-migrate install ``` -### dataMigrate up +### data-migrate up Executes outstanding data migrations against the database. Compares the list of files in `api/db/dataMigrations` to the records in the `DataMigration` table in the database and executes any files not present. If an error occurs during script execution, any remaining scripts are skipped and console output will let you know the error and how many subsequent scripts were skipped. ```bash -yarn redwood dataMigrate up +yarn redwood data-migrate up ``` ## dev From 723853e27d79959f4adcdbbaf34f1015ec3a27ef Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Tue, 13 Feb 2024 21:45:08 +0100 Subject: [PATCH 094/119] chore(deps): Upgrade to yarn v4.1.0 (#10002) --- .../check_create_redwood_app/package.json | 2 +- .../check_create_redwood_app/yarn.lock | 12 +- .github/actions/detect-changes/package.json | 2 +- .github/actions/detect-changes/yarn.lock | 12 +- __fixtures__/test-project/package.json | 2 +- docs/package.json | 3 +- docs/yarn.lock | 2278 +++---- package.json | 2 +- .../templates/js/package.json | 2 +- .../templates/ts/package.json | 2 +- tasks/check/package.json | 3 +- tasks/check/yarn.lock | 72 +- yarn.lock | 5976 ++++++++--------- 13 files changed, 4185 insertions(+), 4183 deletions(-) diff --git a/.github/actions/check_create_redwood_app/package.json b/.github/actions/check_create_redwood_app/package.json index 03bc407905ca..59de5a44a1d2 100644 --- a/.github/actions/check_create_redwood_app/package.json +++ b/.github/actions/check_create_redwood_app/package.json @@ -5,5 +5,5 @@ "@actions/core": "1.10.1", "@actions/exec": "1.1.1" }, - "packageManager": "yarn@4.0.2" + "packageManager": "yarn@4.1.0" } diff --git a/.github/actions/check_create_redwood_app/yarn.lock b/.github/actions/check_create_redwood_app/yarn.lock index 67423743c42c..1dc8c15feb05 100644 --- a/.github/actions/check_create_redwood_app/yarn.lock +++ b/.github/actions/check_create_redwood_app/yarn.lock @@ -11,7 +11,7 @@ __metadata: dependencies: "@actions/http-client": "npm:^2.0.1" uuid: "npm:^8.3.2" - checksum: 8c0/7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 + checksum: 10c0/7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 languageName: node linkType: hard @@ -20,7 +20,7 @@ __metadata: resolution: "@actions/exec@npm:1.1.1" dependencies: "@actions/io": "npm:^1.0.1" - checksum: 8c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a + checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a languageName: node linkType: hard @@ -29,14 +29,14 @@ __metadata: resolution: "@actions/http-client@npm:2.0.1" dependencies: tunnel: "npm:^0.0.6" - checksum: 8c0/b58987ba2f53d7988f612ede7ff834573a3360c21f8fdea9fea92f26ada0fd0efafb22aa7d83f49c18965a5b765775d5253e2edb8d9476d924c4b304ef726b67 + checksum: 10c0/b58987ba2f53d7988f612ede7ff834573a3360c21f8fdea9fea92f26ada0fd0efafb22aa7d83f49c18965a5b765775d5253e2edb8d9476d924c4b304ef726b67 languageName: node linkType: hard "@actions/io@npm:^1.0.1": version: 1.1.2 resolution: "@actions/io@npm:1.1.2" - checksum: 8c0/61c871bbee1cf58f57917d9bb2cf6bb7ea4dc40de3f65c7fb4ec619ceff57fc98f56be9cca2d476b09e7a96e1cba0d88cd125c4f690d384b9483935186f256c1 + checksum: 10c0/61c871bbee1cf58f57917d9bb2cf6bb7ea4dc40de3f65c7fb4ec619ceff57fc98f56be9cca2d476b09e7a96e1cba0d88cd125c4f690d384b9483935186f256c1 languageName: node linkType: hard @@ -52,7 +52,7 @@ __metadata: "tunnel@npm:^0.0.6": version: 0.0.6 resolution: "tunnel@npm:0.0.6" - checksum: 8c0/e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + checksum: 10c0/e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 languageName: node linkType: hard @@ -61,6 +61,6 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: 8c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard diff --git a/.github/actions/detect-changes/package.json b/.github/actions/detect-changes/package.json index e3eddcdb1965..5a35d439d00e 100644 --- a/.github/actions/detect-changes/package.json +++ b/.github/actions/detect-changes/package.json @@ -5,5 +5,5 @@ "@actions/core": "1.10.1", "@actions/exec": "1.1.1" }, - "packageManager": "yarn@4.0.2" + "packageManager": "yarn@4.1.0" } diff --git a/.github/actions/detect-changes/yarn.lock b/.github/actions/detect-changes/yarn.lock index d92f30d6019d..12f7d4df7433 100644 --- a/.github/actions/detect-changes/yarn.lock +++ b/.github/actions/detect-changes/yarn.lock @@ -11,7 +11,7 @@ __metadata: dependencies: "@actions/http-client": "npm:^2.0.1" uuid: "npm:^8.3.2" - checksum: 7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 + checksum: 10c0/7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 languageName: node linkType: hard @@ -20,7 +20,7 @@ __metadata: resolution: "@actions/exec@npm:1.1.1" dependencies: "@actions/io": "npm:^1.0.1" - checksum: 4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a + checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a languageName: node linkType: hard @@ -29,14 +29,14 @@ __metadata: resolution: "@actions/http-client@npm:2.0.1" dependencies: tunnel: "npm:^0.0.6" - checksum: b58987ba2f53d7988f612ede7ff834573a3360c21f8fdea9fea92f26ada0fd0efafb22aa7d83f49c18965a5b765775d5253e2edb8d9476d924c4b304ef726b67 + checksum: 10c0/b58987ba2f53d7988f612ede7ff834573a3360c21f8fdea9fea92f26ada0fd0efafb22aa7d83f49c18965a5b765775d5253e2edb8d9476d924c4b304ef726b67 languageName: node linkType: hard "@actions/io@npm:^1.0.1": version: 1.1.2 resolution: "@actions/io@npm:1.1.2" - checksum: 61c871bbee1cf58f57917d9bb2cf6bb7ea4dc40de3f65c7fb4ec619ceff57fc98f56be9cca2d476b09e7a96e1cba0d88cd125c4f690d384b9483935186f256c1 + checksum: 10c0/61c871bbee1cf58f57917d9bb2cf6bb7ea4dc40de3f65c7fb4ec619ceff57fc98f56be9cca2d476b09e7a96e1cba0d88cd125c4f690d384b9483935186f256c1 languageName: node linkType: hard @@ -52,7 +52,7 @@ __metadata: "tunnel@npm:^0.0.6": version: 0.0.6 resolution: "tunnel@npm:0.0.6" - checksum: e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + checksum: 10c0/e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 languageName: node linkType: hard @@ -61,6 +61,6 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard diff --git a/__fixtures__/test-project/package.json b/__fixtures__/test-project/package.json index 3d2f18b5f1d5..e74028e8ed71 100644 --- a/__fixtures__/test-project/package.json +++ b/__fixtures__/test-project/package.json @@ -20,5 +20,5 @@ "prisma": { "seed": "yarn rw exec seed" }, - "packageManager": "yarn@4.0.2" + "packageManager": "yarn@4.1.0" } diff --git a/docs/package.json b/docs/package.json index 6a6f7a91a7f4..e06884c5a743 100644 --- a/docs/package.json +++ b/docs/package.json @@ -39,5 +39,6 @@ "@docusaurus/module-type-aliases": "3.0.1", "@docusaurus/tsconfig": "3.0.1", "typescript": "5.3.3" - } + }, + "packageManager": "yarn@4.1.0" } diff --git a/docs/yarn.lock b/docs/yarn.lock index 59aadbcf575d..f112f2454672 100644 --- a/docs/yarn.lock +++ b/docs/yarn.lock @@ -11,7 +11,7 @@ __metadata: dependencies: "@algolia/autocomplete-plugin-algolia-insights": "npm:1.9.3" "@algolia/autocomplete-shared": "npm:1.9.3" - checksum: a751b20f15c9a30b8b2d5a4f1f62fb4dbd012fb7ffec1b12308d6e7388b5a4dc83af52176634f17facb57a7727204843c5aa2f6e80efafaaf244275f44af11d9 + checksum: 10c0/a751b20f15c9a30b8b2d5a4f1f62fb4dbd012fb7ffec1b12308d6e7388b5a4dc83af52176634f17facb57a7727204843c5aa2f6e80efafaaf244275f44af11d9 languageName: node linkType: hard @@ -22,7 +22,7 @@ __metadata: "@algolia/autocomplete-shared": "npm:1.9.3" peerDependencies: search-insights: ">= 1 < 3" - checksum: 574196f66fe828be1029439032376685020524d6c729dea99caef336cc7be244d2539fa91b3fe80db80efe3420c2c05063cab3534514be6c637bf1914b17a6f6 + checksum: 10c0/574196f66fe828be1029439032376685020524d6c729dea99caef336cc7be244d2539fa91b3fe80db80efe3420c2c05063cab3534514be6c637bf1914b17a6f6 languageName: node linkType: hard @@ -34,7 +34,7 @@ __metadata: peerDependencies: "@algolia/client-search": ">= 4.9.1 < 6" algoliasearch: ">= 4.9.1 < 6" - checksum: 38c1872db4dae69b4eec622db940c7a992d8530e33fbac7df593473ef404312076d9933b4a7ea25c2d401ea5b62ebd64b56aa25b5cdd8e8ba3fd309a39d9d816 + checksum: 10c0/38c1872db4dae69b4eec622db940c7a992d8530e33fbac7df593473ef404312076d9933b4a7ea25c2d401ea5b62ebd64b56aa25b5cdd8e8ba3fd309a39d9d816 languageName: node linkType: hard @@ -44,7 +44,7 @@ __metadata: peerDependencies: "@algolia/client-search": ">= 4.9.1 < 6" algoliasearch: ">= 4.9.1 < 6" - checksum: 1aa926532c32be6bb5384c8c0ae51a312c9d79ed7486371218dfcb61c8ea1ed46171bdc9f9b596a266aece104a0ef76d6aac2f9a378a5a6eb4460e638d59f6ae + checksum: 10c0/1aa926532c32be6bb5384c8c0ae51a312c9d79ed7486371218dfcb61c8ea1ed46171bdc9f9b596a266aece104a0ef76d6aac2f9a378a5a6eb4460e638d59f6ae languageName: node linkType: hard @@ -53,14 +53,14 @@ __metadata: resolution: "@algolia/cache-browser-local-storage@npm:4.20.0" dependencies: "@algolia/cache-common": "npm:4.20.0" - checksum: efab9b8535d9cf2fc9d1e382541e87797946da0953dc02809aab181161b40ce419b4fa71bc35883e02eb34176185200e0ce1e887109a24233c0e9e6ef5f2a340 + checksum: 10c0/efab9b8535d9cf2fc9d1e382541e87797946da0953dc02809aab181161b40ce419b4fa71bc35883e02eb34176185200e0ce1e887109a24233c0e9e6ef5f2a340 languageName: node linkType: hard "@algolia/cache-common@npm:4.20.0": version: 4.20.0 resolution: "@algolia/cache-common@npm:4.20.0" - checksum: e2e55945dc9d3cafaace828afe28cb944a14efa645d588968e8bf88360efd7dc35f95f2b2392fc84dc697d115ada2a253b34f384ec5d82a191df77eb2125e43e + checksum: 10c0/e2e55945dc9d3cafaace828afe28cb944a14efa645d588968e8bf88360efd7dc35f95f2b2392fc84dc697d115ada2a253b34f384ec5d82a191df77eb2125e43e languageName: node linkType: hard @@ -69,7 +69,7 @@ __metadata: resolution: "@algolia/cache-in-memory@npm:4.20.0" dependencies: "@algolia/cache-common": "npm:4.20.0" - checksum: 9dd67c93fb97d0055ec6d487bae922a5ccbf2adcdf2692c737b85d50b5aa2b57f3fb21ead0202a570e7feb1096fb48ea56a2309259998c17d7c82bc8ae170818 + checksum: 10c0/9dd67c93fb97d0055ec6d487bae922a5ccbf2adcdf2692c737b85d50b5aa2b57f3fb21ead0202a570e7feb1096fb48ea56a2309259998c17d7c82bc8ae170818 languageName: node linkType: hard @@ -80,7 +80,7 @@ __metadata: "@algolia/client-common": "npm:4.20.0" "@algolia/client-search": "npm:4.20.0" "@algolia/transporter": "npm:4.20.0" - checksum: 6ff0cd7834d48988ec748ed504a28e4de8842526881c7d0f875f9702e037f51c9ec70195489e5d189995d0901212f844b0555d6df0b423d0b846b300a321b6a2 + checksum: 10c0/6ff0cd7834d48988ec748ed504a28e4de8842526881c7d0f875f9702e037f51c9ec70195489e5d189995d0901212f844b0555d6df0b423d0b846b300a321b6a2 languageName: node linkType: hard @@ -92,7 +92,7 @@ __metadata: "@algolia/client-search": "npm:4.20.0" "@algolia/requester-common": "npm:4.20.0" "@algolia/transporter": "npm:4.20.0" - checksum: ebc20c90461a05c1bfbdf152953904afde749d70fe7008857c4f5a96510f0bb1895420a400decfcb3dce3137be880b4360e8ac09a8249b4fe8426dd0a3042a09 + checksum: 10c0/ebc20c90461a05c1bfbdf152953904afde749d70fe7008857c4f5a96510f0bb1895420a400decfcb3dce3137be880b4360e8ac09a8249b4fe8426dd0a3042a09 languageName: node linkType: hard @@ -102,7 +102,7 @@ __metadata: dependencies: "@algolia/requester-common": "npm:4.20.0" "@algolia/transporter": "npm:4.20.0" - checksum: b0cf4d127dd5712867e3e7dbb10465d960d5ad2ca491321c0d1908c3b4d2f485bc54926c1b3de2b9d5b5f3438a1e91d50f02318fc164770d4e78bd7828a3e2f6 + checksum: 10c0/b0cf4d127dd5712867e3e7dbb10465d960d5ad2ca491321c0d1908c3b4d2f485bc54926c1b3de2b9d5b5f3438a1e91d50f02318fc164770d4e78bd7828a3e2f6 languageName: node linkType: hard @@ -113,7 +113,7 @@ __metadata: "@algolia/client-common": "npm:4.20.0" "@algolia/requester-common": "npm:4.20.0" "@algolia/transporter": "npm:4.20.0" - checksum: a4ffff168daee0495192c7aa1b155827d10ba408d352d01e112552e048a18244a2a446df47706639dc67a6b4061bdc084f35e47b5a75b0f1a722427abe131fe8 + checksum: 10c0/a4ffff168daee0495192c7aa1b155827d10ba408d352d01e112552e048a18244a2a446df47706639dc67a6b4061bdc084f35e47b5a75b0f1a722427abe131fe8 languageName: node linkType: hard @@ -124,21 +124,21 @@ __metadata: "@algolia/client-common": "npm:4.20.0" "@algolia/requester-common": "npm:4.20.0" "@algolia/transporter": "npm:4.20.0" - checksum: 79b75fbfddf41bd65d1d028236b249e81672a5a5aea9e84fa5586ee5d1f0d78966dacdc464109e14a46f6c78c8d68d5a8a50ad7b571247ac64fc2d1399072332 + checksum: 10c0/79b75fbfddf41bd65d1d028236b249e81672a5a5aea9e84fa5586ee5d1f0d78966dacdc464109e14a46f6c78c8d68d5a8a50ad7b571247ac64fc2d1399072332 languageName: node linkType: hard "@algolia/events@npm:^4.0.1": version: 4.0.1 resolution: "@algolia/events@npm:4.0.1" - checksum: f398d815c6ed21ac08f6caadf1e9155add74ac05d99430191c3b1f1335fd91deaf468c6b304e6225c9885d3d44c06037c53def101e33d9c22daff175b2a65ca9 + checksum: 10c0/f398d815c6ed21ac08f6caadf1e9155add74ac05d99430191c3b1f1335fd91deaf468c6b304e6225c9885d3d44c06037c53def101e33d9c22daff175b2a65ca9 languageName: node linkType: hard "@algolia/logger-common@npm:4.20.0": version: 4.20.0 resolution: "@algolia/logger-common@npm:4.20.0" - checksum: 03fffc0e021097836d4588f130fc22b3fd6ca55e286e8fc59f0525330754bc49edcf7c5d2f0016fd1c4aa3ad3432005ba3a17b5c41880c16258e98bcf4746b4d + checksum: 10c0/03fffc0e021097836d4588f130fc22b3fd6ca55e286e8fc59f0525330754bc49edcf7c5d2f0016fd1c4aa3ad3432005ba3a17b5c41880c16258e98bcf4746b4d languageName: node linkType: hard @@ -147,7 +147,7 @@ __metadata: resolution: "@algolia/logger-console@npm:4.20.0" dependencies: "@algolia/logger-common": "npm:4.20.0" - checksum: 2b1f32f3344613de3ae949df57ef5b794ec247572dfbdd04b2c5d1b250b224fef2ce7292c9ce56f45ef491afe90a7505ec21ad3b00f645ef07516c8cbe200fae + checksum: 10c0/2b1f32f3344613de3ae949df57ef5b794ec247572dfbdd04b2c5d1b250b224fef2ce7292c9ce56f45ef491afe90a7505ec21ad3b00f645ef07516c8cbe200fae languageName: node linkType: hard @@ -156,14 +156,14 @@ __metadata: resolution: "@algolia/requester-browser-xhr@npm:4.20.0" dependencies: "@algolia/requester-common": "npm:4.20.0" - checksum: 0e3fba53b05805bb9801b3b0e8cc4c95b8f55c6e23f43f4c5f1cd01ce277aa71fb08d935be97f921af0d60d83d23b83e2bbdd35f79bd2657c9aaa8604a838d62 + checksum: 10c0/0e3fba53b05805bb9801b3b0e8cc4c95b8f55c6e23f43f4c5f1cd01ce277aa71fb08d935be97f921af0d60d83d23b83e2bbdd35f79bd2657c9aaa8604a838d62 languageName: node linkType: hard "@algolia/requester-common@npm:4.20.0": version: 4.20.0 resolution: "@algolia/requester-common@npm:4.20.0" - checksum: 3d69d781549a58784fdf34d79c46e15a9010185757112953e58f987a814e9645b47a2d7202148fb644edfacc73df783041b274eac58de06936dfc9c6f1ac88e5 + checksum: 10c0/3d69d781549a58784fdf34d79c46e15a9010185757112953e58f987a814e9645b47a2d7202148fb644edfacc73df783041b274eac58de06936dfc9c6f1ac88e5 languageName: node linkType: hard @@ -172,7 +172,7 @@ __metadata: resolution: "@algolia/requester-node-http@npm:4.20.0" dependencies: "@algolia/requester-common": "npm:4.20.0" - checksum: b774593ad9a4f04215481ed3e18a4870275c0586a9106280137e53fd6278a6e4eea9fed15fb086e5989c436097552b4884c35a2f2ec49999105ab697b20831a2 + checksum: 10c0/b774593ad9a4f04215481ed3e18a4870275c0586a9106280137e53fd6278a6e4eea9fed15fb086e5989c436097552b4884c35a2f2ec49999105ab697b20831a2 languageName: node linkType: hard @@ -183,7 +183,7 @@ __metadata: "@algolia/cache-common": "npm:4.20.0" "@algolia/logger-common": "npm:4.20.0" "@algolia/requester-common": "npm:4.20.0" - checksum: 769c5d61a280283e2dc4c4a49fcd92e6489bc0267a290438f56311dacc213c0ff4979d063fb8dd5b7bcc888d819ec00eef5d24eb2768946696f4297b757ff527 + checksum: 10c0/769c5d61a280283e2dc4c4a49fcd92e6489bc0267a290438f56311dacc213c0ff4979d063fb8dd5b7bcc888d819ec00eef5d24eb2768946696f4297b757ff527 languageName: node linkType: hard @@ -193,7 +193,7 @@ __metadata: dependencies: "@jridgewell/gen-mapping": "npm:^0.3.0" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 + checksum: 10c0/92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 languageName: node linkType: hard @@ -203,14 +203,14 @@ __metadata: dependencies: "@babel/highlight": "npm:^7.23.4" chalk: "npm:^2.4.2" - checksum: a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 + checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 languageName: node linkType: hard "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9, @babel/compat-data@npm:^7.23.2": version: 7.23.2 resolution: "@babel/compat-data@npm:7.23.2" - checksum: 0397a08c3e491696cc1b12cf0879bf95fc550bfc6ef524d5a9452981aa0e192a958b2246debfb230fa22718fac473cc5a36616f89b1ad6e7e52055732cd374a1 + checksum: 10c0/0397a08c3e491696cc1b12cf0879bf95fc550bfc6ef524d5a9452981aa0e192a958b2246debfb230fa22718fac473cc5a36616f89b1ad6e7e52055732cd374a1 languageName: node linkType: hard @@ -233,7 +233,7 @@ __metadata: gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 311a512a870ee330a3f9a7ea89e5df790b2b5af0b1bd98b10b4edc0de2ac440f0df4d69ea2c0ee38a4b89041b9a495802741d93603be7d4fd834ec8bb6970bd2 + checksum: 10c0/311a512a870ee330a3f9a7ea89e5df790b2b5af0b1bd98b10b4edc0de2ac440f0df4d69ea2c0ee38a4b89041b9a495802741d93603be7d4fd834ec8bb6970bd2 languageName: node linkType: hard @@ -245,7 +245,7 @@ __metadata: "@jridgewell/gen-mapping": "npm:^0.3.2" "@jridgewell/trace-mapping": "npm:^0.3.17" jsesc: "npm:^2.5.1" - checksum: 14c6e874f796c4368e919bed6003bb0adc3ce837760b08f9e646d20aeb5ae7d309723ce6e4f06bcb4a2b5753145446c8e4425851380f695e40e71e1760f49e7b + checksum: 10c0/14c6e874f796c4368e919bed6003bb0adc3ce837760b08f9e646d20aeb5ae7d309723ce6e4f06bcb4a2b5753145446c8e4425851380f695e40e71e1760f49e7b languageName: node linkType: hard @@ -254,7 +254,7 @@ __metadata: resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: 5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 languageName: node linkType: hard @@ -263,7 +263,7 @@ __metadata: resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" dependencies: "@babel/types": "npm:^7.22.15" - checksum: 2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c + checksum: 10c0/2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c languageName: node linkType: hard @@ -276,7 +276,7 @@ __metadata: browserslist: "npm:^4.21.9" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: 45b9286861296e890f674a3abb199efea14a962a27d9b8adeb44970a9fd5c54e73a9e342e8414d2851cf4f98d5994537352fbce7b05ade32e9849bbd327f9ff1 + checksum: 10c0/45b9286861296e890f674a3abb199efea14a962a27d9b8adeb44970a9fd5c54e73a9e342e8414d2851cf4f98d5994537352fbce7b05ade32e9849bbd327f9ff1 languageName: node linkType: hard @@ -295,7 +295,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 2ae5759fe8845fda99b34f2ba6cd0794fc860213d14c93a87aa9180960252bce621157a79c373b7fbb423b25a55fb0e20eae0d5f8e4ad5ef22dc70e7c2af3805 + checksum: 10c0/2ae5759fe8845fda99b34f2ba6cd0794fc860213d14c93a87aa9180960252bce621157a79c373b7fbb423b25a55fb0e20eae0d5f8e4ad5ef22dc70e7c2af3805 languageName: node linkType: hard @@ -308,7 +308,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 + checksum: 10c0/8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 languageName: node linkType: hard @@ -323,14 +323,14 @@ __metadata: resolve: "npm:^1.14.2" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 0007035157e0d32ee9cb4ca319b89d6f3705523383efe52a59eb3d4dfa2ed08c5147e49c10a6e6d69c15221d89c76c8e5875475d6710fb44a5c37b8e69388e40 + checksum: 10c0/0007035157e0d32ee9cb4ca319b89d6f3705523383efe52a59eb3d4dfa2ed08c5147e49c10a6e6d69c15221d89c76c8e5875475d6710fb44a5c37b8e69388e40 languageName: node linkType: hard "@babel/helper-environment-visitor@npm:^7.22.20, @babel/helper-environment-visitor@npm:^7.22.5": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 languageName: node linkType: hard @@ -340,7 +340,7 @@ __metadata: dependencies: "@babel/template": "npm:^7.22.15" "@babel/types": "npm:^7.23.0" - checksum: d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 languageName: node linkType: hard @@ -349,7 +349,7 @@ __metadata: resolution: "@babel/helper-hoist-variables@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: 60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 languageName: node linkType: hard @@ -358,7 +358,7 @@ __metadata: resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" dependencies: "@babel/types": "npm:^7.23.0" - checksum: b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 + checksum: 10c0/b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 languageName: node linkType: hard @@ -367,7 +367,7 @@ __metadata: resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: "@babel/types": "npm:^7.22.15" - checksum: 4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 + checksum: 10c0/4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 languageName: node linkType: hard @@ -382,7 +382,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: 211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 languageName: node linkType: hard @@ -391,14 +391,14 @@ __metadata: resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: 31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 + checksum: 10c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 languageName: node linkType: hard "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" - checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d + checksum: 10c0/d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d languageName: node linkType: hard @@ -411,7 +411,7 @@ __metadata: "@babel/helper-wrap-function": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e + checksum: 10c0/aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e languageName: node linkType: hard @@ -424,7 +424,7 @@ __metadata: "@babel/helper-optimise-call-expression": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 + checksum: 10c0/6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 languageName: node linkType: hard @@ -433,7 +433,7 @@ __metadata: resolution: "@babel/helper-simple-access@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 languageName: node linkType: hard @@ -442,7 +442,7 @@ __metadata: resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 + checksum: 10c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 languageName: node linkType: hard @@ -451,28 +451,28 @@ __metadata: resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: "@babel/types": "npm:^7.22.5" - checksum: d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard "@babel/helper-string-parser@npm:^7.23.4": version: 7.23.4 resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac + checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e + checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e languageName: node linkType: hard "@babel/helper-validator-option@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-validator-option@npm:7.22.15" - checksum: e9661bf80ba18e2dd978217b350fb07298e57ac417f4f1ab9fa011505e20e4857f2c3b4b538473516a9dc03af5ce3a831e5ed973311c28326f4c330b6be981c2 + checksum: 10c0/e9661bf80ba18e2dd978217b350fb07298e57ac417f4f1ab9fa011505e20e4857f2c3b4b538473516a9dc03af5ce3a831e5ed973311c28326f4c330b6be981c2 languageName: node linkType: hard @@ -483,7 +483,7 @@ __metadata: "@babel/helper-function-name": "npm:^7.22.5" "@babel/template": "npm:^7.22.15" "@babel/types": "npm:^7.22.19" - checksum: 97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb + checksum: 10c0/97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb languageName: node linkType: hard @@ -494,7 +494,7 @@ __metadata: "@babel/template": "npm:^7.22.15" "@babel/traverse": "npm:^7.23.5" "@babel/types": "npm:^7.23.5" - checksum: a37e2728eb4378a4888e5d614e28de7dd79b55ac8acbecd0e5c761273e2a02a8f33b34b1932d9069db55417ace2937cbf8ec37c42f1030ce6d228857d7ccaa4f + checksum: 10c0/a37e2728eb4378a4888e5d614e28de7dd79b55ac8acbecd0e5c761273e2a02a8f33b34b1932d9069db55417ace2937cbf8ec37c42f1030ce6d228857d7ccaa4f languageName: node linkType: hard @@ -505,7 +505,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" - checksum: fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 + checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 languageName: node linkType: hard @@ -514,7 +514,7 @@ __metadata: resolution: "@babel/parser@npm:7.23.5" bin: parser: ./bin/babel-parser.js - checksum: 3356aa90d7bafb4e2c7310e7c2c3d443c4be4db74913f088d3d577a1eb914ea4188e05fd50a47ce907a27b755c4400c4e3cbeee73dbeb37761f6ca85954f5a20 + checksum: 10c0/3356aa90d7bafb4e2c7310e7c2c3d443c4be4db74913f088d3d577a1eb914ea4188e05fd50a47ce907a27b755c4400c4e3cbeee73dbeb37761f6ca85954f5a20 languageName: node linkType: hard @@ -525,7 +525,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: fb2288ac168e6670a77f73b92e835f7a579468435e81c9261729e9ba9c601ff22622bacd3e71eb190b135016a6fbab5d824501c7b91733dd379022a75163806c + checksum: 10c0/fb2288ac168e6670a77f73b92e835f7a579468435e81c9261729e9ba9c601ff22622bacd3e71eb190b135016a6fbab5d824501c7b91733dd379022a75163806c languageName: node linkType: hard @@ -538,7 +538,7 @@ __metadata: "@babel/plugin-transform-optional-chaining": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.13.0 - checksum: 46fb46af40446918d64530f544ea0104e274ccd8a16b8a8f6fa2e51a198af6ac2b620aaf8875f3427671f09717949a584c79fe20f521245214f50b8de56cd116 + checksum: 10c0/46fb46af40446918d64530f544ea0104e274ccd8a16b8a8f6fa2e51a198af6ac2b620aaf8875f3427671f09717949a584c79fe20f521245214f50b8de56cd116 languageName: node linkType: hard @@ -547,7 +547,7 @@ __metadata: resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 languageName: node linkType: hard @@ -558,7 +558,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 languageName: node linkType: hard @@ -569,7 +569,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.12.13" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 languageName: node linkType: hard @@ -580,7 +580,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 languageName: node linkType: hard @@ -591,7 +591,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 languageName: node linkType: hard @@ -602,7 +602,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 languageName: node linkType: hard @@ -613,7 +613,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b297d7c757c746ed0ef3496ad749ae2ce648ec73dae5184120b191c280e62da7dc104ee126bc0053dfece3ce198a5ee7dc1cbf4768860f666afef5dee84a7146 + checksum: 10c0/b297d7c757c746ed0ef3496ad749ae2ce648ec73dae5184120b191c280e62da7dc104ee126bc0053dfece3ce198a5ee7dc1cbf4768860f666afef5dee84a7146 languageName: node linkType: hard @@ -624,7 +624,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: de0b104a82cb8ffdc29472177210936609b973665a2ad8ef26c078251d7c728fbd521119de4c417285408a8bae345b5da09cd4a4a3311619f71b9b2c64cce3fa + checksum: 10c0/de0b104a82cb8ffdc29472177210936609b973665a2ad8ef26c078251d7c728fbd521119de4c417285408a8bae345b5da09cd4a4a3311619f71b9b2c64cce3fa languageName: node linkType: hard @@ -635,7 +635,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee languageName: node linkType: hard @@ -646,7 +646,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e languageName: node linkType: hard @@ -657,7 +657,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 + checksum: 10c0/b56ceaa9c6adc17fadfb48e1c801d07797195df2a581489e33c8034950e12e7778de6e1e70d6bcf7c5c7ada6222fe6bad5746187ab280df435f5a2799c8dd0d8 languageName: node linkType: hard @@ -668,7 +668,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b languageName: node linkType: hard @@ -679,7 +679,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce languageName: node linkType: hard @@ -690,7 +690,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 languageName: node linkType: hard @@ -701,7 +701,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 languageName: node linkType: hard @@ -712,7 +712,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af languageName: node linkType: hard @@ -723,7 +723,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 languageName: node linkType: hard @@ -734,7 +734,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 languageName: node linkType: hard @@ -745,7 +745,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f languageName: node linkType: hard @@ -756,7 +756,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 523a76627f17e67dc1999f4d7c7a71ed79e9f77f55a61cf05051101967ac23ec378ff0c93787b2cbd5d53720ad799658d796a649fa351682b2bf636f63b665a1 + checksum: 10c0/523a76627f17e67dc1999f4d7c7a71ed79e9f77f55a61cf05051101967ac23ec378ff0c93787b2cbd5d53720ad799658d796a649fa351682b2bf636f63b665a1 languageName: node linkType: hard @@ -768,7 +768,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 languageName: node linkType: hard @@ -779,7 +779,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1b24d47ddac6ae2fe8c7fab9a020fdb6a556d17d8c5f189bb470ff2958a5437fe6441521fd3d850f4283a1131d7a0acf3e8ebe789f9077f54bab4e2e8c6df176 + checksum: 10c0/1b24d47ddac6ae2fe8c7fab9a020fdb6a556d17d8c5f189bb470ff2958a5437fe6441521fd3d850f4283a1131d7a0acf3e8ebe789f9077f54bab4e2e8c6df176 languageName: node linkType: hard @@ -793,7 +793,7 @@ __metadata: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 16d7bd5dbd67991ab320a46ada19a9a0c8364725603c731f152afc98ee8764dc738c93f081a7560906d265b78c376bccabf3e31b9f99071c8982a6f9c8e2ac45 + checksum: 10c0/16d7bd5dbd67991ab320a46ada19a9a0c8364725603c731f152afc98ee8764dc738c93f081a7560906d265b78c376bccabf3e31b9f99071c8982a6f9c8e2ac45 languageName: node linkType: hard @@ -806,7 +806,7 @@ __metadata: "@babel/helper-remap-async-to-generator": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2972f22c3a5a56a8b225f4fa1bbdbcf6e989e0da460d5f4e2280652b1433d7c68b6ddc0cc2affc4b59905835133a253a31c24c7ca1bebe1a2f28377d27b4ca1c + checksum: 10c0/2972f22c3a5a56a8b225f4fa1bbdbcf6e989e0da460d5f4e2280652b1433d7c68b6ddc0cc2affc4b59905835133a253a31c24c7ca1bebe1a2f28377d27b4ca1c languageName: node linkType: hard @@ -817,7 +817,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 21878d4f0040f5001c4a14e17759e80bf699cb883a497552fa882dbc05230b100e8572345654b091021d5c4227555ed2bf40c8d6ba16a54d81145abfe0022cf8 + checksum: 10c0/21878d4f0040f5001c4a14e17759e80bf699cb883a497552fa882dbc05230b100e8572345654b091021d5c4227555ed2bf40c8d6ba16a54d81145abfe0022cf8 languageName: node linkType: hard @@ -828,7 +828,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f5d0822a4e2bb3a0b5172f01f8c107999b880f0e538a9c1bae3c7720e85d8d117a67167f5e8eba909e0ec3db67be3b30e7f5c83211dd4be5c7096222071571be + checksum: 10c0/f5d0822a4e2bb3a0b5172f01f8c107999b880f0e538a9c1bae3c7720e85d8d117a67167f5e8eba909e0ec3db67be3b30e7f5c83211dd4be5c7096222071571be languageName: node linkType: hard @@ -840,7 +840,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 707f976d3aea2b52dad36a5695a71af8956f9b1d5dec02c2b8cce7ff3b5e60df4cbe059c71ae0b7983034dc639de654a2c928b97e4e01ebf436d58ea43639e7d + checksum: 10c0/707f976d3aea2b52dad36a5695a71af8956f9b1d5dec02c2b8cce7ff3b5e60df4cbe059c71ae0b7983034dc639de654a2c928b97e4e01ebf436d58ea43639e7d languageName: node linkType: hard @@ -853,7 +853,7 @@ __metadata: "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.12.0 - checksum: 74c06f315dbeb101784682f89d6e40a46b243132b63f430ac9ee5781d3fedff57fc6bf7390aa2b19d44a9d7e49a1e70e572bdde1907480881204ef33163b9630 + checksum: 10c0/74c06f315dbeb101784682f89d6e40a46b243132b63f430ac9ee5781d3fedff57fc6bf7390aa2b19d44a9d7e49a1e70e572bdde1907480881204ef33163b9630 languageName: node linkType: hard @@ -872,7 +872,7 @@ __metadata: globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c9342bcf41e0253d83d9f73c4f9d2c9f885c0412f58ebfe462d57579c8247b949cbb023f15383d18c89fe5d12b537633e2ca4ba906ce47238615bc679beafb55 + checksum: 10c0/c9342bcf41e0253d83d9f73c4f9d2c9f885c0412f58ebfe462d57579c8247b949cbb023f15383d18c89fe5d12b537633e2ca4ba906ce47238615bc679beafb55 languageName: node linkType: hard @@ -884,7 +884,7 @@ __metadata: "@babel/template": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22ecea23c1635083f5473092c5fbca62cbf7a85764bcf3e704c850446d68fe946097f6001c4cbfc92b4aee27ed30b375773ee479f749293e41fdb8f1fb8fcb67 + checksum: 10c0/22ecea23c1635083f5473092c5fbca62cbf7a85764bcf3e704c850446d68fe946097f6001c4cbfc92b4aee27ed30b375773ee479f749293e41fdb8f1fb8fcb67 languageName: node linkType: hard @@ -895,7 +895,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 038505eabdde2e1bb3bb904e50292b263d61d35e18660f751e7753b5723e2a5a5903a493290d772c8598da98c2c904b7cf45552ad1c11636fcb78f60754abd53 + checksum: 10c0/038505eabdde2e1bb3bb904e50292b263d61d35e18660f751e7753b5723e2a5a5903a493290d772c8598da98c2c904b7cf45552ad1c11636fcb78f60754abd53 languageName: node linkType: hard @@ -907,7 +907,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e0d7b95380483ef563c13f7c0a2122f575c58708cfb56494d6265ebb31753cf46ee0b3f5126fa6bbea5af392b3a2da05bf1e028d0b2b4d1dc279edd67cf3c3d9 + checksum: 10c0/e0d7b95380483ef563c13f7c0a2122f575c58708cfb56494d6265ebb31753cf46ee0b3f5126fa6bbea5af392b3a2da05bf1e028d0b2b4d1dc279edd67cf3c3d9 languageName: node linkType: hard @@ -918,7 +918,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 82772fdcc1301358bc722c1316bea071ad0cd5893ca95b08e183748e044277a93ee90f9c641ac7873a00e4b31a8df7cf8c0981ca98d01becb4864a11b22c09d1 + checksum: 10c0/82772fdcc1301358bc722c1316bea071ad0cd5893ca95b08e183748e044277a93ee90f9c641ac7873a00e4b31a8df7cf8c0981ca98d01becb4864a11b22c09d1 languageName: node linkType: hard @@ -930,7 +930,7 @@ __metadata: "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cf0dd2d3da42ae18ccfa54bef7c80bf26b3bcc48751fc38dd41ad47bc14cc76ca8ec692f39f8b1ef54b3f48eff8db79e6397e4653033bb3a64e433f3c3a43edf + checksum: 10c0/cf0dd2d3da42ae18ccfa54bef7c80bf26b3bcc48751fc38dd41ad47bc14cc76ca8ec692f39f8b1ef54b3f48eff8db79e6397e4653033bb3a64e433f3c3a43edf languageName: node linkType: hard @@ -942,7 +942,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e8832460cfc9e087561fa42a796bb4eb181e6983d6db85c6dcec15f98af4ae3d13fcab18a262252a43b075d79ac93aaa38d33022bc5a870d2760c6888ba5d211 + checksum: 10c0/e8832460cfc9e087561fa42a796bb4eb181e6983d6db85c6dcec15f98af4ae3d13fcab18a262252a43b075d79ac93aaa38d33022bc5a870d2760c6888ba5d211 languageName: node linkType: hard @@ -954,7 +954,7 @@ __metadata: "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2b65ddf9ab4cfa8ffc72983c689b99d9ce0fe74846c2e518a1955f703e1fe073d0865810959164800613c3235a29cf9cae3567a46bf9cb53a2384469d3913e85 + checksum: 10c0/2b65ddf9ab4cfa8ffc72983c689b99d9ce0fe74846c2e518a1955f703e1fe073d0865810959164800613c3235a29cf9cae3567a46bf9cb53a2384469d3913e85 languageName: node linkType: hard @@ -965,7 +965,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 64182292f4be8cdf1fff06fe62ba110bf5e5dbb5d966d5e8871ef40a673cd934217da51b9f4a4ba303ca936be787f30e3d13a91fe410339de79e0fe9f0807e15 + checksum: 10c0/64182292f4be8cdf1fff06fe62ba110bf5e5dbb5d966d5e8871ef40a673cd934217da51b9f4a4ba303ca936be787f30e3d13a91fe410339de79e0fe9f0807e15 languageName: node linkType: hard @@ -978,7 +978,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 206bdef2ff91c29a7d94c77778ad79f18bdb2cd6a30179449f2b95af04637cb68d96625dc673d9a0961b6b7088bd325bbed7540caf9aa8f69e5b003d6ba20456 + checksum: 10c0/206bdef2ff91c29a7d94c77778ad79f18bdb2cd6a30179449f2b95af04637cb68d96625dc673d9a0961b6b7088bd325bbed7540caf9aa8f69e5b003d6ba20456 languageName: node linkType: hard @@ -990,7 +990,7 @@ __metadata: "@babel/plugin-syntax-json-strings": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 90f46a99c4136187d16f30f1f5f51e479c919edb6f6b4ce43fe81fdae2c89a556a0a6f6f2ec7ea3de7014a504f6df2220e3bc19dd7011f76bd275c195842f886 + checksum: 10c0/90f46a99c4136187d16f30f1f5f51e479c919edb6f6b4ce43fe81fdae2c89a556a0a6f6f2ec7ea3de7014a504f6df2220e3bc19dd7011f76bd275c195842f886 languageName: node linkType: hard @@ -1001,7 +1001,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1003d0cf98e9ae432889bcf5f3d5f7d463f777fc2c74b0d4a1a93b51e83606c263a16146e34f0a06b291300aa5f2001d6e8bf65ed1bf478ab071b714bf158aa5 + checksum: 10c0/1003d0cf98e9ae432889bcf5f3d5f7d463f777fc2c74b0d4a1a93b51e83606c263a16146e34f0a06b291300aa5f2001d6e8bf65ed1bf478ab071b714bf158aa5 languageName: node linkType: hard @@ -1013,7 +1013,7 @@ __metadata: "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9810f7918514bd59579ccc0950b4f352569abb40959569d38931e57f11e6b9aa920bdef403ffd8cd5d4e0243e0bbf7a1ebb445f3428c8b7a2421568ff2f681be + checksum: 10c0/9810f7918514bd59579ccc0950b4f352569abb40959569d38931e57f11e6b9aa920bdef403ffd8cd5d4e0243e0bbf7a1ebb445f3428c8b7a2421568ff2f681be languageName: node linkType: hard @@ -1024,7 +1024,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 731a341b17511809ae435b64822d4d093e86fd928b572028e6742bdfba271c57070860b0f3da080a76c5574d58c4f369fac3f7bf0f450b37920c0fc6fe27bb4e + checksum: 10c0/731a341b17511809ae435b64822d4d093e86fd928b572028e6742bdfba271c57070860b0f3da080a76c5574d58c4f369fac3f7bf0f450b37920c0fc6fe27bb4e languageName: node linkType: hard @@ -1036,7 +1036,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dda02864029ff66955e21d19c3d245aad69792b75e748de1391403bc86c8e9720b4f320b0db8413a29c11ba63b168146cf849180b5677bc6a74bfd085d20376d + checksum: 10c0/dda02864029ff66955e21d19c3d245aad69792b75e748de1391403bc86c8e9720b4f320b0db8413a29c11ba63b168146cf849180b5677bc6a74bfd085d20376d languageName: node linkType: hard @@ -1049,7 +1049,7 @@ __metadata: "@babel/helper-simple-access": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1f015764c2e63445d46660e7a2eb9002c20def04daf98fa93c9dadb5bd55adbefefd1ccdc11bcafa5e2f04275939d2414482703bc35bc60d6ca2bf1f67b720e3 + checksum: 10c0/1f015764c2e63445d46660e7a2eb9002c20def04daf98fa93c9dadb5bd55adbefefd1ccdc11bcafa5e2f04275939d2414482703bc35bc60d6ca2bf1f67b720e3 languageName: node linkType: hard @@ -1063,7 +1063,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 04c5cef7d6921bb9c9073cea389289099124e78cd1e3b7e020e3c085d486b48efadd9a42c0c0d963a9b1c3d5465c3151229092ea719997e53427f36935c84178 + checksum: 10c0/04c5cef7d6921bb9c9073cea389289099124e78cd1e3b7e020e3c085d486b48efadd9a42c0c0d963a9b1c3d5465c3151229092ea719997e53427f36935c84178 languageName: node linkType: hard @@ -1075,7 +1075,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f4a40e18986182a2b1be6af949aaff67a7d112af3d26bbd4319d05b50f323a62a10b32b5584148e4630bdffbd4d85b31c0d571fe4f601354898b837b87afca4c + checksum: 10c0/f4a40e18986182a2b1be6af949aaff67a7d112af3d26bbd4319d05b50f323a62a10b32b5584148e4630bdffbd4d85b31c0d571fe4f601354898b837b87afca4c languageName: node linkType: hard @@ -1087,7 +1087,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 + checksum: 10c0/b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 languageName: node linkType: hard @@ -1098,7 +1098,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 22ead0668bfd8db9166a4a47579d9f44726b59f21104561a6dd851156336741abdc5c576558e042c58c4b4fd577d3e29e4bd836021007f3381c33fe3c88dca19 + checksum: 10c0/22ead0668bfd8db9166a4a47579d9f44726b59f21104561a6dd851156336741abdc5c576558e042c58c4b4fd577d3e29e4bd836021007f3381c33fe3c88dca19 languageName: node linkType: hard @@ -1110,7 +1110,7 @@ __metadata: "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 328c0ebfbbc82256af00252fb795996b093f57b528a57afcb30843ca52d24a6d824029ad6d22f042f3af336bb4dc1963b4841c2ad774424b02d14ae7cfff2701 + checksum: 10c0/328c0ebfbbc82256af00252fb795996b093f57b528a57afcb30843ca52d24a6d824029ad6d22f042f3af336bb4dc1963b4841c2ad774424b02d14ae7cfff2701 languageName: node linkType: hard @@ -1122,7 +1122,7 @@ __metadata: "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: fcde065002948c9c39f853be99c38b02aa1a1eb453e70ab1a164feb250c1fcbf1edd38071e28ed8bde6840b8a394af8b291b2ab2d793f283872ba43f89cf6dd2 + checksum: 10c0/fcde065002948c9c39f853be99c38b02aa1a1eb453e70ab1a164feb250c1fcbf1edd38071e28ed8bde6840b8a394af8b291b2ab2d793f283872ba43f89cf6dd2 languageName: node linkType: hard @@ -1137,7 +1137,7 @@ __metadata: "@babel/plugin-transform-parameters": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c485084360607a4392227d8af461e0f313953a6088221826668f90e92df6e16da04e2b3424e283c2980586095430d1068ae6e549b828dfa3891e2d1a397bd034 + checksum: 10c0/c485084360607a4392227d8af461e0f313953a6088221826668f90e92df6e16da04e2b3424e283c2980586095430d1068ae6e549b828dfa3891e2d1a397bd034 languageName: node linkType: hard @@ -1149,7 +1149,7 @@ __metadata: "@babel/helper-replace-supers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 062a78ff897c095a71f0db577bd4e4654659d542cb9ef79ec0fda7873ee6fefe31a0cb8a6c2e307e16dacaae1f50d48572184a59e1235b8d9d9cb2f38c4259ce + checksum: 10c0/062a78ff897c095a71f0db577bd4e4654659d542cb9ef79ec0fda7873ee6fefe31a0cb8a6c2e307e16dacaae1f50d48572184a59e1235b8d9d9cb2f38c4259ce languageName: node linkType: hard @@ -1161,7 +1161,7 @@ __metadata: "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6a731f4fee93397634b088ef7de990c150ea1c29e2cf681b2520d9196888d79a4252cbcc497d9b0db0453160ea2267043036fee4ccea8964864ef1b55a40d76f + checksum: 10c0/6a731f4fee93397634b088ef7de990c150ea1c29e2cf681b2520d9196888d79a4252cbcc497d9b0db0453160ea2267043036fee4ccea8964864ef1b55a40d76f languageName: node linkType: hard @@ -1174,7 +1174,7 @@ __metadata: "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2bf605b908c75f8d7616e8be52e4656983f2b027032260fbf5279f28297a67a1a28ec3ed60cd5760537dbd08a021246b8092ce06fb2418884390230b807142b3 + checksum: 10c0/2bf605b908c75f8d7616e8be52e4656983f2b027032260fbf5279f28297a67a1a28ec3ed60cd5760537dbd08a021246b8092ce06fb2418884390230b807142b3 languageName: node linkType: hard @@ -1185,7 +1185,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9b9faf55b20aea4755a66db75e1195f7a203b4cfeef0ed5ceb25d6364bbb7a5bd0b5c587489c37ab339c4e4e7275406d0db0c05c25aa731a3cf6b4cc51e97c8d + checksum: 10c0/9b9faf55b20aea4755a66db75e1195f7a203b4cfeef0ed5ceb25d6364bbb7a5bd0b5c587489c37ab339c4e4e7275406d0db0c05c25aa731a3cf6b4cc51e97c8d languageName: node linkType: hard @@ -1197,7 +1197,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a62f2e47ca30f6b8043201483c5a505e3d54416e6ddfbe7cb696a1db853a4281b1fffee9f883fe26ac72ba02bba0db5832d69e02f2eb4746e9811b8779287cc1 + checksum: 10c0/a62f2e47ca30f6b8043201483c5a505e3d54416e6ddfbe7cb696a1db853a4281b1fffee9f883fe26ac72ba02bba0db5832d69e02f2eb4746e9811b8779287cc1 languageName: node linkType: hard @@ -1211,7 +1211,7 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ec1ed8cc5483b8661e2cf7c020ffefe2a85e793a353d580c4174686923e465cdfaf13fc344ebb2eead4a1dbecd49baba93e342a9de400a29abedb79dcc6745a2 + checksum: 10c0/ec1ed8cc5483b8661e2cf7c020ffefe2a85e793a353d580c4174686923e465cdfaf13fc344ebb2eead4a1dbecd49baba93e342a9de400a29abedb79dcc6745a2 languageName: node linkType: hard @@ -1222,7 +1222,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8d25b7b01b5f487cfc1a296555273c1ddad45276f01039130f57eb9ab0fafa0560d10d972323071042e73ac3b8bab596543c9d1a877229624a52e6535084ea51 + checksum: 10c0/8d25b7b01b5f487cfc1a296555273c1ddad45276f01039130f57eb9ab0fafa0560d10d972323071042e73ac3b8bab596543c9d1a877229624a52e6535084ea51 languageName: node linkType: hard @@ -1233,7 +1233,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3a54802058ed3eef9c98efcc9ec4888763dce552f117db9a62fc2cdca30d9de0218cf7722a748d4b715a8bd833b9725d7ee018d01a18209b44434d15f719b173 + checksum: 10c0/3a54802058ed3eef9c98efcc9ec4888763dce552f117db9a62fc2cdca30d9de0218cf7722a748d4b715a8bd833b9725d7ee018d01a18209b44434d15f719b173 languageName: node linkType: hard @@ -1244,7 +1244,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e + checksum: 10c0/41e0167ecd8e5281e427556146b1d3bee8652bcd0664be013f16ffeeb4d61b7ab0b1e59bcc2c923774f0d265f78012628d5277880f758f3675893226f9be012e languageName: node linkType: hard @@ -1255,7 +1255,7 @@ __metadata: "@babel/plugin-transform-react-jsx": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 + checksum: 10c0/4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 languageName: node linkType: hard @@ -1270,7 +1270,7 @@ __metadata: "@babel/types": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: db37491e3eea5530521e177380312f308f01f806866fa0ce08d48fc5a8c9eaf9a954f778fa1ff477248afb72e916eb66ab3d35254bb6a8979f8b8e74a0fd8873 + checksum: 10c0/db37491e3eea5530521e177380312f308f01f806866fa0ce08d48fc5a8c9eaf9a954f778fa1ff477248afb72e916eb66ab3d35254bb6a8979f8b8e74a0fd8873 languageName: node linkType: hard @@ -1282,7 +1282,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 18db2e2346d79ebe4a3f85f51fa7757a63a09bc6da7f339e6ce9e7534de68b5165fe7d49ac363dee6ba3f81eb904d44bf9c13653331805f9b236a1d9fec7e018 + checksum: 10c0/18db2e2346d79ebe4a3f85f51fa7757a63a09bc6da7f339e6ce9e7534de68b5165fe7d49ac363dee6ba3f81eb904d44bf9c13653331805f9b236a1d9fec7e018 languageName: node linkType: hard @@ -1294,7 +1294,7 @@ __metadata: regenerator-transform: "npm:^0.15.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b903bfc1e849ca956a981a199b4913c0998877b6ba759f6d64530c5106610f89a818d61471a9c1bdabb6d94ba4ba150febeb4d196f6a8e67fcdc44207bb8fef6 + checksum: 10c0/b903bfc1e849ca956a981a199b4913c0998877b6ba759f6d64530c5106610f89a818d61471a9c1bdabb6d94ba4ba150febeb4d196f6a8e67fcdc44207bb8fef6 languageName: node linkType: hard @@ -1305,7 +1305,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3ee861941b1d3f9e50f1bb97a2067f33c868b8cd5fd3419a610b2ad5f3afef5f9e4b3740d26a617dc1a9e169a33477821d96b6917c774ea87cac6790d341abbd + checksum: 10c0/3ee861941b1d3f9e50f1bb97a2067f33c868b8cd5fd3419a610b2ad5f3afef5f9e4b3740d26a617dc1a9e169a33477821d96b6917c774ea87cac6790d341abbd languageName: node linkType: hard @@ -1321,7 +1321,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 440291cd42e51c3f8789a0bd45cebbf597cf5d4ee4185050f1151f579465db016902054c50684e288342a03c9f1af8cec365fc02d85d14dc2b2a30ad5eb07c42 + checksum: 10c0/440291cd42e51c3f8789a0bd45cebbf597cf5d4ee4185050f1151f579465db016902054c50684e288342a03c9f1af8cec365fc02d85d14dc2b2a30ad5eb07c42 languageName: node linkType: hard @@ -1332,7 +1332,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d2dd6b7033f536dd74569d7343bf3ca88c4bc12575e572a2c5446f42a1ebc8e69cec5e38fc0e63ac7c4a48b944a3225e4317d5db94287b9a5b381a5045c0cdb2 + checksum: 10c0/d2dd6b7033f536dd74569d7343bf3ca88c4bc12575e572a2c5446f42a1ebc8e69cec5e38fc0e63ac7c4a48b944a3225e4317d5db94287b9a5b381a5045c0cdb2 languageName: node linkType: hard @@ -1344,7 +1344,7 @@ __metadata: "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f8896b00d69557a4aafb3f48b7db6fbaa8462588e733afc4eabfdf79b12a6aed7d20341d160d704205591f0a43d04971d391fa80328f61240d1edc918079a1b0 + checksum: 10c0/f8896b00d69557a4aafb3f48b7db6fbaa8462588e733afc4eabfdf79b12a6aed7d20341d160d704205591f0a43d04971d391fa80328f61240d1edc918079a1b0 languageName: node linkType: hard @@ -1355,7 +1355,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 42d9295d357415b55c04967ff1cd124cdcbabf2635614f9ad4f8b372d9ae35f6c02bf7473a5418b91e75235960cb1e61493e2c0581cb55bf9719b0986bcd22a5 + checksum: 10c0/42d9295d357415b55c04967ff1cd124cdcbabf2635614f9ad4f8b372d9ae35f6c02bf7473a5418b91e75235960cb1e61493e2c0581cb55bf9719b0986bcd22a5 languageName: node linkType: hard @@ -1366,7 +1366,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1fc597716edf9f5c7bc74e2fead4d7751467500486dd17092af90ccbd65c5fc4a1db2e9c86e9ed1a9f206f6a3403bbc07eab50b0c2b8e50f819b4118f2cf71ef + checksum: 10c0/1fc597716edf9f5c7bc74e2fead4d7751467500486dd17092af90ccbd65c5fc4a1db2e9c86e9ed1a9f206f6a3403bbc07eab50b0c2b8e50f819b4118f2cf71ef languageName: node linkType: hard @@ -1377,7 +1377,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 277084dd3e873d62541f683173c7cf33b8317f7714335b7e861cc5b4b76f09acbf532a4c9dfbcf7756d29bc07b94b48bd9356af478f424865a86c7d5798be7c0 + checksum: 10c0/277084dd3e873d62541f683173c7cf33b8317f7714335b7e861cc5b4b76f09acbf532a4c9dfbcf7756d29bc07b94b48bd9356af478f424865a86c7d5798be7c0 languageName: node linkType: hard @@ -1391,7 +1391,7 @@ __metadata: "@babel/plugin-syntax-typescript": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e6a110f5b70334c6a503c90855dde5660f479e48262c8338261aeb30c70eedcfe885265b788c89f5bef757d99ab6704ee22bb0d23579597bc9415cfa86607458 + checksum: 10c0/e6a110f5b70334c6a503c90855dde5660f479e48262c8338261aeb30c70eedcfe885265b788c89f5bef757d99ab6704ee22bb0d23579597bc9415cfa86607458 languageName: node linkType: hard @@ -1402,7 +1402,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 68425d56698650087faa33fe40adf8bde32efc1d05ce564f02b62526e7f5b2f4633278b0a10ee2e7e36fb89c79c3330c730d96b8a872acea4702c5645cee98f8 + checksum: 10c0/68425d56698650087faa33fe40adf8bde32efc1d05ce564f02b62526e7f5b2f4633278b0a10ee2e7e36fb89c79c3330c730d96b8a872acea4702c5645cee98f8 languageName: node linkType: hard @@ -1414,7 +1414,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: da424c1e99af0e920d21f7f121fb9503d0771597a4bd14130fb5f116407be29e9340c049d04733b3d8a132effe4f4585fe3cc9630ae3294a2df9199c8dfd7075 + checksum: 10c0/da424c1e99af0e920d21f7f121fb9503d0771597a4bd14130fb5f116407be29e9340c049d04733b3d8a132effe4f4585fe3cc9630ae3294a2df9199c8dfd7075 languageName: node linkType: hard @@ -1426,7 +1426,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4cfaf4bb724a5c55a6fb5b0ee6ebbeba78dc700b9bc0043715d4b37409d90b43c888735c613690a1ec0d8d8e41a500b9d3f0395aa9f55b174449c8407663684b + checksum: 10c0/4cfaf4bb724a5c55a6fb5b0ee6ebbeba78dc700b9bc0043715d4b37409d90b43c888735c613690a1ec0d8d8e41a500b9d3f0395aa9f55b174449c8407663684b languageName: node linkType: hard @@ -1438,7 +1438,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: af37b468332db051f0aaa144adbfab39574e570f613e121b58a551e3cbb7083c9f8c32a83ba2641172a4065128052643468438c19ad098cd62b2d97140dc483e + checksum: 10c0/af37b468332db051f0aaa144adbfab39574e570f613e121b58a551e3cbb7083c9f8c32a83ba2641172a4065128052643468438c19ad098cd62b2d97140dc483e languageName: node linkType: hard @@ -1528,7 +1528,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b5912f09dc92a8f6b93420f3274499e30255af6dbe5673075a30a5bfead1a651e5eb362c6b95e3ba48c6e6bd4e38b7a5aceebba99997ec7c83833e2e6af9abde + checksum: 10c0/b5912f09dc92a8f6b93420f3274499e30255af6dbe5673075a30a5bfead1a651e5eb362c6b95e3ba48c6e6bd4e38b7a5aceebba99997ec7c83833e2e6af9abde languageName: node linkType: hard @@ -1541,7 +1541,7 @@ __metadata: esutils: "npm:^2.0.2" peerDependencies: "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 languageName: node linkType: hard @@ -1557,7 +1557,7 @@ __metadata: "@babel/plugin-transform-react-pure-annotations": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 80940aa494292b7f689d902b76828cb3ab4eaf4e6421107f23388b6ea7316ab25ccd817b766fde5c40787fd92f1cba1f660190bfd71965c902e49b42c9e290c2 + checksum: 10c0/80940aa494292b7f689d902b76828cb3ab4eaf4e6421107f23388b6ea7316ab25ccd817b766fde5c40787fd92f1cba1f660190bfd71965c902e49b42c9e290c2 languageName: node linkType: hard @@ -1572,14 +1572,14 @@ __metadata: "@babel/plugin-transform-typescript": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 40eb71e9959d97a0c2e89fe5cf4c9db7edea5b103618d4c4b5cc7a41dd8c66ab1b1922c443607427000d7bb63e135e8c5f268f35426b2ba00ce53f75bf3b0f8b + checksum: 10c0/40eb71e9959d97a0c2e89fe5cf4c9db7edea5b103618d4c4b5cc7a41dd8c66ab1b1922c443607427000d7bb63e135e8c5f268f35426b2ba00ce53f75bf3b0f8b languageName: node linkType: hard "@babel/regjsgen@npm:^0.8.0": version: 0.8.0 resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + checksum: 10c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a languageName: node linkType: hard @@ -1589,7 +1589,7 @@ __metadata: dependencies: core-js-pure: "npm:^3.30.2" regenerator-runtime: "npm:^0.14.0" - checksum: 1362f04cae16d99175961e4113618e5ae210e17053605d4cd2c7b93b3a0334fcfe6a689601d20c12f8946cd8a472430e25f0bf09b7dcd851f63fd82749fd7503 + checksum: 10c0/1362f04cae16d99175961e4113618e5ae210e17053605d4cd2c7b93b3a0334fcfe6a689601d20c12f8946cd8a472430e25f0bf09b7dcd851f63fd82749fd7503 languageName: node linkType: hard @@ -1598,7 +1598,7 @@ __metadata: resolution: "@babel/runtime@npm:7.23.2" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 271fcfad8574269d9967b8a1c03f2e1eab108a52ad7c96ed136eee0b11f46156f1186637bd5e79a4207163db9a00413cd70a6428e137b982d0ee8ab85eb9f438 + checksum: 10c0/271fcfad8574269d9967b8a1c03f2e1eab108a52ad7c96ed136eee0b11f46156f1186637bd5e79a4207163db9a00413cd70a6428e137b982d0ee8ab85eb9f438 languageName: node linkType: hard @@ -1609,7 +1609,7 @@ __metadata: "@babel/code-frame": "npm:^7.22.13" "@babel/parser": "npm:^7.22.15" "@babel/types": "npm:^7.22.15" - checksum: 9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 + checksum: 10c0/9312edd37cf1311d738907003f2aa321a88a42ba223c69209abe4d7111db019d321805504f606c7fd75f21c6cf9d24d0a8223104cd21ebd207e241b6c551f454 languageName: node linkType: hard @@ -1627,7 +1627,7 @@ __metadata: "@babel/types": "npm:^7.23.5" debug: "npm:^4.1.0" globals: "npm:^11.1.0" - checksum: c5ea793080ca6719b0a1612198fd25e361cee1f3c14142d7a518d2a1eeb5c1d21f7eec1b26c20ea6e1ddd8ed12ab50b960ff95ffd25be353b6b46e1b54d6f825 + checksum: 10c0/c5ea793080ca6719b0a1612198fd25e361cee1f3c14142d7a518d2a1eeb5c1d21f7eec1b26c20ea6e1ddd8ed12ab50b960ff95ffd25be353b6b46e1b54d6f825 languageName: node linkType: hard @@ -1638,28 +1638,28 @@ __metadata: "@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: 7dd5e2f59828ed046ad0b06b039df2524a8b728d204affb4fc08da2502b9dd3140b1356b5166515d229dc811539a8b70dcd4bc507e06d62a89f4091a38d0b0fb + checksum: 10c0/7dd5e2f59828ed046ad0b06b039df2524a8b728d204affb4fc08da2502b9dd3140b1356b5166515d229dc811539a8b70dcd4bc507e06d62a89f4091a38d0b0fb languageName: node linkType: hard "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" - checksum: eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 languageName: node linkType: hard "@discoveryjs/json-ext@npm:0.5.7": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c + checksum: 10c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c languageName: node linkType: hard "@docsearch/css@npm:3.5.2": version: 3.5.2 resolution: "@docsearch/css@npm:3.5.2" - checksum: 736e029b65dba3b2fafb98b4bc4e6f7f411863fed4ef2798c82be8dcdcbdcb9dea6a75376b19d013e9d2f8607b2e3f8d8353938343b08b382894d8b16883ccb3 + checksum: 10c0/736e029b65dba3b2fafb98b4bc4e6f7f411863fed4ef2798c82be8dcdcbdcb9dea6a75376b19d013e9d2f8607b2e3f8d8353938343b08b382894d8b16883ccb3 languageName: node linkType: hard @@ -1685,7 +1685,7 @@ __metadata: optional: true search-insights: optional: true - checksum: 1dc22a4364be89bc4139bbcc4c90ea240a701961eb698101f53067fd6e0ca014fc12bb6577b67dc108e0ef5e8484866df8e08eb681f9bcafc898a822ce2f42d8 + checksum: 10c0/1dc22a4364be89bc4139bbcc4c90ea240a701961eb698101f53067fd6e0ca014fc12bb6577b67dc108e0ef5e8484866df8e08eb681f9bcafc898a822ce2f42d8 languageName: node linkType: hard @@ -1767,7 +1767,7 @@ __metadata: react-dom: ^18.0.0 bin: docusaurus: bin/docusaurus.mjs - checksum: 3897f4cf1f71bd1dea58525548a9547a699e0514d29ed7637aba5eb36f584361dc81ec8f916eafe450402b4850bee0bea1e6dd25c9dc3d7244ac519029818296 + checksum: 10c0/3897f4cf1f71bd1dea58525548a9547a699e0514d29ed7637aba5eb36f584361dc81ec8f916eafe450402b4850bee0bea1e6dd25c9dc3d7244ac519029818296 languageName: node linkType: hard @@ -1779,7 +1779,7 @@ __metadata: postcss: "npm:^8.4.26" postcss-sort-media-queries: "npm:^4.4.1" tslib: "npm:^2.6.0" - checksum: 21f1d87a6f42450e70c379c3795a4e2951ccbdae480bf4c1f7de53e83747cdf11f1031511eaa7cd0fecc52bb425dc66f4fe6c624f33c13d1f0d84235663ab360 + checksum: 10c0/21f1d87a6f42450e70c379c3795a4e2951ccbdae480bf4c1f7de53e83747cdf11f1031511eaa7cd0fecc52bb425dc66f4fe6c624f33c13d1f0d84235663ab360 languageName: node linkType: hard @@ -1789,7 +1789,7 @@ __metadata: dependencies: chalk: "npm:^4.1.2" tslib: "npm:^2.6.0" - checksum: 803c6db9646c111ac8e45d38a9b79b96503042838447e6fa250165fabff88ed94f5964d5be08d7c448ad2b8035255fd34c26a4ccf2082548b33a753e2f0a23fb + checksum: 10c0/803c6db9646c111ac8e45d38a9b79b96503042838447e6fa250165fabff88ed94f5964d5be08d7c448ad2b8035255fd34c26a4ccf2082548b33a753e2f0a23fb languageName: node linkType: hard @@ -1826,7 +1826,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 2892440de8a0606e893236eaf4f9c873091199481815139fe5f120ba2e5bd7fef062b63db7431027a73ee4d240bc785095374cddfd55313de35b8a5c62c53e9f + checksum: 10c0/2892440de8a0606e893236eaf4f9c873091199481815139fe5f120ba2e5bd7fef062b63db7431027a73ee4d240bc785095374cddfd55313de35b8a5c62c53e9f languageName: node linkType: hard @@ -1845,7 +1845,7 @@ __metadata: peerDependencies: react: "*" react-dom: "*" - checksum: 6a01235908bd17d94188f6ff749c3358eaf0e1edd4224d0e2f43c234fa68f17cd098fd26389c40457ab69b420869381ee46706c355b704d4a8f80892c23d8a74 + checksum: 10c0/6a01235908bd17d94188f6ff749c3358eaf0e1edd4224d0e2f43c234fa68f17cd098fd26389c40457ab69b420869381ee46706c355b704d4a8f80892c23d8a74 languageName: node linkType: hard @@ -1873,7 +1873,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 39e44ce1af5cf411e0b7d9ac4069df75a79f4ee1faaa980c22667896bb6925c87aaec0e7e0198575ba329df4652b8fd674bba9162bbd71247599358cb5ea5495 + checksum: 10c0/39e44ce1af5cf411e0b7d9ac4069df75a79f4ee1faaa980c22667896bb6925c87aaec0e7e0198575ba329df4652b8fd674bba9162bbd71247599358cb5ea5495 languageName: node linkType: hard @@ -1899,7 +1899,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 97ab50410e38beb7db7e2e110d35dab63e51621a116587ea7d8e334135e7df0b7173590daca9f97bcc8238ba51b495cab6eb88e90be5390560e7d9172a011238 + checksum: 10c0/97ab50410e38beb7db7e2e110d35dab63e51621a116587ea7d8e334135e7df0b7173590daca9f97bcc8238ba51b495cab6eb88e90be5390560e7d9172a011238 languageName: node linkType: hard @@ -1918,7 +1918,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 3752f6acd85b1799cfa0f4306dfc2eb198101dfbc5f2d238702839b02197f1623ac60e231f5b8c80e0bac92ce5ac02461a9a4fa2161551c40606451a5986f0d6 + checksum: 10c0/3752f6acd85b1799cfa0f4306dfc2eb198101dfbc5f2d238702839b02197f1623ac60e231f5b8c80e0bac92ce5ac02461a9a4fa2161551c40606451a5986f0d6 languageName: node linkType: hard @@ -1935,7 +1935,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 09e99640390b87b155befa7be5cdd3f0c638acbe8d2a44d947410be3b61e7d74adb923eff88cb4cd8abf00ad4212a651641ebf240155cf3714ecf40d09fd0e1c + checksum: 10c0/09e99640390b87b155befa7be5cdd3f0c638acbe8d2a44d947410be3b61e7d74adb923eff88cb4cd8abf00ad4212a651641ebf240155cf3714ecf40d09fd0e1c languageName: node linkType: hard @@ -1950,7 +1950,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 6afdbec2e8b3a6fe991dc54f2eb957200a5db1acd04f35ffd15fe2f72125786ad4e2961687f4182cab486aab2d6845db040634545455089496f1cfd630313d03 + checksum: 10c0/6afdbec2e8b3a6fe991dc54f2eb957200a5db1acd04f35ffd15fe2f72125786ad4e2961687f4182cab486aab2d6845db040634545455089496f1cfd630313d03 languageName: node linkType: hard @@ -1966,7 +1966,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 21e9a775c05ebc1654718a1e5e2e095201bb70946fa6e3419b4f668ec9f37fa56d1675de7011ecd91cfc5204dd48c6764e4419fd92c67aa0e55448014594af9d + checksum: 10c0/21e9a775c05ebc1654718a1e5e2e095201bb70946fa6e3419b4f668ec9f37fa56d1675de7011ecd91cfc5204dd48c6764e4419fd92c67aa0e55448014594af9d languageName: node linkType: hard @@ -1981,7 +1981,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 8ec2c46adbf8b67b5cc7736741486320608ae89c7e6f706e3df54afb6d8097b28f9dc0eb43edd92d9aab7e5fd823ceebe8aa4debd80c95ad98517a3a43015693 + checksum: 10c0/8ec2c46adbf8b67b5cc7736741486320608ae89c7e6f706e3df54afb6d8097b28f9dc0eb43edd92d9aab7e5fd823ceebe8aa4debd80c95ad98517a3a43015693 languageName: node linkType: hard @@ -2001,7 +2001,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: e6f63826f22139f9bf87fe9aec1229dffef115f4f5880ad77653f5ca826dc7bb01bd1f8a90741105a0524465dff8afde95f2c8b443de5cc50d3bbd1f0a16247a + checksum: 10c0/e6f63826f22139f9bf87fe9aec1229dffef115f4f5880ad77653f5ca826dc7bb01bd1f8a90741105a0524465dff8afde95f2c8b443de5cc50d3bbd1f0a16247a languageName: node linkType: hard @@ -2025,7 +2025,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 31ebcdb4f319c556d51b54618137da82789ae0bcea9ada80c0e13bc515fb0d0ee118ffdb0740fe615199d1cc2f80399004c320477aa8dcdf7ec8b56382dd29f8 + checksum: 10c0/31ebcdb4f319c556d51b54618137da82789ae0bcea9ada80c0e13bc515fb0d0ee118ffdb0740fe615199d1cc2f80399004c320477aa8dcdf7ec8b56382dd29f8 languageName: node linkType: hard @@ -2037,7 +2037,7 @@ __metadata: prop-types: "npm:^15.6.2" peerDependencies: react: "*" - checksum: 3f6a335d55c811c4fd40300ff0d87ae88f44f96e9c43a4c3f54f1c19b7a55bae601e43d66f797074e204699fd6abb69affa65fc4c5a819e8f1c2adb8a912da46 + checksum: 10c0/3f6a335d55c811c4fd40300ff0d87ae88f44f96e9c43a4c3f54f1c19b7a55bae601e43d66f797074e204699fd6abb69affa65fc4c5a819e8f1c2adb8a912da46 languageName: node linkType: hard @@ -2073,7 +2073,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 24292dea657579523f458b4b61d5e52391e2ec9539b291b97aff62c4529cba1672e4a01d8328aac7362841e4299444e631c8feb452556ef76802a1810cc81e43 + checksum: 10c0/24292dea657579523f458b4b61d5e52391e2ec9539b291b97aff62c4529cba1672e4a01d8328aac7362841e4299444e631c8feb452556ef76802a1810cc81e43 languageName: node linkType: hard @@ -2099,7 +2099,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 9d67dfc9ba4241414a94762a4f5ad62fa57db2be335ade0d44f9a27843b863c9be576052e70ba599b3d7439b98d19dac43c9788d0962d15d7517a739bd39eaaa + checksum: 10c0/9d67dfc9ba4241414a94762a4f5ad62fa57db2be335ade0d44f9a27843b863c9be576052e70ba599b3d7439b98d19dac43c9788d0962d15d7517a739bd39eaaa languageName: node linkType: hard @@ -2126,7 +2126,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: c5b5dc54a010cef66a6a6e616a5f0c65b443c0f87156c1fea4ee58bc834e1eb2eacc0a00e1e3c15ca030567055071a9d4ee882681093c8c37d478cfc13fc26df + checksum: 10c0/c5b5dc54a010cef66a6a6e616a5f0c65b443c0f87156c1fea4ee58bc834e1eb2eacc0a00e1e3c15ca030567055071a9d4ee882681093c8c37d478cfc13fc26df languageName: node linkType: hard @@ -2136,14 +2136,14 @@ __metadata: dependencies: fs-extra: "npm:^11.1.1" tslib: "npm:^2.6.0" - checksum: 1f75dbff7c7835870d857f4f0a9c159d84678f13f31ed76cdade451aa08ab2db53bed983ee1e441e3c308387c63d56fb65ae32ef328cdae04f790e0166d72c2c + checksum: 10c0/1f75dbff7c7835870d857f4f0a9c159d84678f13f31ed76cdade451aa08ab2db53bed983ee1e441e3c308387c63d56fb65ae32ef328cdae04f790e0166d72c2c languageName: node linkType: hard "@docusaurus/tsconfig@npm:3.0.1": version: 3.0.1 resolution: "@docusaurus/tsconfig@npm:3.0.1" - checksum: d28f253f8d678c7650934ed3ee0390995a22ffb1b10fd8e15e4482517352b097a9a29bcd4a617d8722490ef299fe37d3162e542822bbbe53d5f1e1d5f8a921ce + checksum: 10c0/d28f253f8d678c7650934ed3ee0390995a22ffb1b10fd8e15e4482517352b097a9a29bcd4a617d8722490ef299fe37d3162e542822bbbe53d5f1e1d5f8a921ce languageName: node linkType: hard @@ -2162,7 +2162,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: 6ec48cb08f9b40a675816ceafc3a53c6dfdb61b8eea2cc289963c9dc5a5b57fa2e5b9e34e7c7d40c8c198260fe2c175c97ccd7bf1addd4adecea83a8becd303e + checksum: 10c0/6ec48cb08f9b40a675816ceafc3a53c6dfdb61b8eea2cc289963c9dc5a5b57fa2e5b9e34e7c7d40c8c198260fe2c175c97ccd7bf1addd4adecea83a8becd303e languageName: node linkType: hard @@ -2176,7 +2176,7 @@ __metadata: peerDependenciesMeta: "@docusaurus/types": optional: true - checksum: 3c446655ddbda2052c08c46e6c06e68dab9d4203704aa5c81f29b38a57a636852a8e794dc4cbe4d11bf176e99d50a4db91ec8b650fc8ff55673d63066d246d97 + checksum: 10c0/3c446655ddbda2052c08c46e6c06e68dab9d4203704aa5c81f29b38a57a636852a8e794dc4cbe4d11bf176e99d50a4db91ec8b650fc8ff55673d63066d246d97 languageName: node linkType: hard @@ -2189,7 +2189,7 @@ __metadata: joi: "npm:^17.9.2" js-yaml: "npm:^4.1.0" tslib: "npm:^2.6.0" - checksum: 874b761f4f59cbcc64f3b33a9e0cecdf0221686263237add53ac6cbf73db03b28252af86154f5546b3a2db1718a4287f2ed5eb9b4390da0a410778cadbf445ae + checksum: 10c0/874b761f4f59cbcc64f3b33a9e0cecdf0221686263237add53ac6cbf73db03b28252af86154f5546b3a2db1718a4287f2ed5eb9b4390da0a410778cadbf445ae languageName: node linkType: hard @@ -2219,21 +2219,21 @@ __metadata: peerDependenciesMeta: "@docusaurus/types": optional: true - checksum: b15ff773b41a27dadd68a8d10476e77270de1133da0d102b536aa4a8ba758379aa77686002f283d7126365a39487bedafdc11f2c5cbfa088bb9061f4b0c05d99 + checksum: 10c0/b15ff773b41a27dadd68a8d10476e77270de1133da0d102b536aa4a8ba758379aa77686002f283d7126365a39487bedafdc11f2c5cbfa088bb9061f4b0c05d99 languageName: node linkType: hard "@gar/promisify@npm:^1.0.1": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" - checksum: 0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff + checksum: 10c0/0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff languageName: node linkType: hard "@hapi/hoek@npm:^9.0.0": version: 9.2.1 resolution: "@hapi/hoek@npm:9.2.1" - checksum: 76d6635207af99908712d9a1425364d872dc8ca284174f2091998ceb24a94900e5fe76f8013d2c096b43dd1dda2c4dde1b56027fc082c697f4c40d7c6f333a03 + checksum: 10c0/76d6635207af99908712d9a1425364d872dc8ca284174f2091998ceb24a94900e5fe76f8013d2c096b43dd1dda2c4dde1b56027fc082c697f4c40d7c6f333a03 languageName: node linkType: hard @@ -2242,7 +2242,7 @@ __metadata: resolution: "@hapi/topo@npm:5.1.0" dependencies: "@hapi/hoek": "npm:^9.0.0" - checksum: b16b06d9357947149e032bdf10151eb71aea8057c79c4046bf32393cb89d0d0f7ca501c40c0f7534a5ceca078de0700d2257ac855c15e59fe4e00bba2f25c86f + checksum: 10c0/b16b06d9357947149e032bdf10151eb71aea8057c79c4046bf32393cb89d0d0f7ca501c40c0f7534a5ceca078de0700d2257ac855c15e59fe4e00bba2f25c86f languageName: node linkType: hard @@ -2251,7 +2251,7 @@ __metadata: resolution: "@jest/schemas@npm:29.6.3" dependencies: "@sinclair/typebox": "npm:^0.27.8" - checksum: b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be languageName: node linkType: hard @@ -2265,7 +2265,7 @@ __metadata: "@types/node": "npm:*" "@types/yargs": "npm:^17.0.8" chalk: "npm:^4.0.0" - checksum: ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 languageName: node linkType: hard @@ -2276,21 +2276,21 @@ __metadata: "@jridgewell/set-array": "npm:^1.0.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 82685c8735c63fe388badee45e2970a6bc83eed1c84d46d8652863bafeca22a6c6cc15812f5999a4535366f4668ccc9ba6d5c67dfb72e846fa8a063806f10afd + checksum: 10c0/82685c8735c63fe388badee45e2970a6bc83eed1c84d46d8652863bafeca22a6c6cc15812f5999a4535366f4668ccc9ba6d5c67dfb72e846fa8a063806f10afd languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf + checksum: 10c0/0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf languageName: node linkType: hard "@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab + checksum: 10c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab languageName: node linkType: hard @@ -2300,14 +2300,14 @@ __metadata: dependencies: "@jridgewell/gen-mapping": "npm:^0.3.0" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 + checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 languageName: node linkType: hard @@ -2317,14 +2317,14 @@ __metadata: dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 0ea0b2675cf513ec44dc25605616a3c9b808b9832e74b5b63c44260d66b58558bba65764f81928fc1033ead911f8718dca1134049c3e7a93937faf436671df31 + checksum: 10c0/0ea0b2675cf513ec44dc25605616a3c9b808b9832e74b5b63c44260d66b58558bba65764f81928fc1033ead911f8718dca1134049c3e7a93937faf436671df31 languageName: node linkType: hard "@leichtgewicht/ip-codec@npm:^2.0.1": version: 2.0.3 resolution: "@leichtgewicht/ip-codec@npm:2.0.3" - checksum: 7aea47ffd414bd61d8c56b58dd34790917eae856c695d5a07bacdd9ddf444c895389c878716497dd688b7c87374979d47422ada8ff9ce1edd00107ba88a261d7 + checksum: 10c0/7aea47ffd414bd61d8c56b58dd34790917eae856c695d5a07bacdd9ddf444c895389c878716497dd688b7c87374979d47422ada8ff9ce1edd00107ba88a261d7 languageName: node linkType: hard @@ -2355,7 +2355,7 @@ __metadata: unist-util-stringify-position: "npm:^4.0.0" unist-util-visit: "npm:^5.0.0" vfile: "npm:^6.0.0" - checksum: 42e631bc12f5dda528f00833f9592d05f4728fc673209f4cb08948c45751c479724f890379810baf60dfa32857793644c8ceb868f162f3798d81caa775b89aac + checksum: 10c0/42e631bc12f5dda528f00833f9592d05f4728fc673209f4cb08948c45751c479724f890379810baf60dfa32857793644c8ceb868f162f3798d81caa775b89aac languageName: node linkType: hard @@ -2367,7 +2367,7 @@ __metadata: peerDependencies: "@types/react": ">=16" react: ">=16" - checksum: 865f6ebc7ae83c6cb9f7e92db4eddd3f85cd1664391643b4736887ddc32b0ddb5aec012db6fbc9b486b552e08e6d5ad800450fcd9d51c20665667ff0f174d966 + checksum: 10c0/865f6ebc7ae83c6cb9f7e92db4eddd3f85cd1664391643b4736887ddc32b0ddb5aec012db6fbc9b486b552e08e6d5ad800450fcd9d51c20665667ff0f174d966 languageName: node linkType: hard @@ -2377,14 +2377,14 @@ __metadata: dependencies: "@nodelib/fs.stat": "npm:2.0.5" run-parallel: "npm:^1.1.9" - checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb languageName: node linkType: hard "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d languageName: node linkType: hard @@ -2394,7 +2394,7 @@ __metadata: dependencies: "@nodelib/fs.scandir": "npm:2.1.5" fastq: "npm:^1.6.0" - checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 languageName: node linkType: hard @@ -2404,7 +2404,7 @@ __metadata: dependencies: "@gar/promisify": "npm:^1.0.1" semver: "npm:^7.3.5" - checksum: 4143c317a7542af9054018b71601e3c3392e6704e884561229695f099a71336cbd580df9a9ffb965d0024bf0ed593189ab58900fd1714baef1c9ee59c738c3e2 + checksum: 10c0/4143c317a7542af9054018b71601e3c3392e6704e884561229695f099a71336cbd580df9a9ffb965d0024bf0ed593189ab58900fd1714baef1c9ee59c738c3e2 languageName: node linkType: hard @@ -2414,14 +2414,14 @@ __metadata: dependencies: mkdirp: "npm:^1.0.4" rimraf: "npm:^3.0.2" - checksum: 02e946f3dafcc6743132fe2e0e2b585a96ca7265653a38df5a3e53fcf26c7c7a57fc0f861d7c689a23fdb6d6836c7eea5050c8086abf3c994feb2208d1514ff0 + checksum: 10c0/02e946f3dafcc6743132fe2e0e2b585a96ca7265653a38df5a3e53fcf26c7c7a57fc0f861d7c689a23fdb6d6836c7eea5050c8086abf3c994feb2208d1514ff0 languageName: node linkType: hard "@pnpm/config.env-replace@npm:^1.1.0": version: 1.1.0 resolution: "@pnpm/config.env-replace@npm:1.1.0" - checksum: 4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f + checksum: 10c0/4cfc4a5c49ab3d0c6a1f196cfd4146374768b0243d441c7de8fa7bd28eaab6290f514b98490472cc65dbd080d34369447b3e9302585e1d5c099befd7c8b5e55f languageName: node linkType: hard @@ -2430,7 +2430,7 @@ __metadata: resolution: "@pnpm/network.ca-file@npm:1.0.2" dependencies: graceful-fs: "npm:4.2.10" - checksum: 95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 + checksum: 10c0/95f6e0e38d047aca3283550719155ce7304ac00d98911e4ab026daedaf640a63bd83e3d13e17c623fa41ac72f3801382ba21260bcce431c14fbbc06430ecb776 languageName: node linkType: hard @@ -2441,14 +2441,14 @@ __metadata: "@pnpm/config.env-replace": "npm:^1.1.0" "@pnpm/network.ca-file": "npm:^1.0.1" config-chain: "npm:^1.1.11" - checksum: 71393dcfce85603fddd8484b486767163000afab03918303253ae97992615b91d25942f83751366cb40ad2ee32b0ae0a033561de9d878199a024286ff98b0296 + checksum: 10c0/71393dcfce85603fddd8484b486767163000afab03918303253ae97992615b91d25942f83751366cb40ad2ee32b0ae0a033561de9d878199a024286ff98b0296 languageName: node linkType: hard "@polka/url@npm:^1.0.0-next.20": version: 1.0.0-next.21 resolution: "@polka/url@npm:1.0.0-next.21" - checksum: 53c1f28683a075aac41f8ce2a54eb952b6bc67a03494b2dca1cb63d833a6da898cea6a92df8e1e6b680db985fb7f9c16e11c20afa6584bcdda68a16fb4c18737 + checksum: 10c0/53c1f28683a075aac41f8ce2a54eb952b6bc67a03494b2dca1cb63d833a6da898cea6a92df8e1e6b680db985fb7f9c16e11c20afa6584bcdda68a16fb4c18737 languageName: node linkType: hard @@ -2457,42 +2457,42 @@ __metadata: resolution: "@sideway/address@npm:4.1.3" dependencies: "@hapi/hoek": "npm:^9.0.0" - checksum: d5f1cb09a66577eecd2f3b0b664fc9343218e7d8f2dc6abcc1045911bcc65b474e40825fe278cf05f649dde552e5f37d900691f38e9fc0b48486f3ee5d343b9c + checksum: 10c0/d5f1cb09a66577eecd2f3b0b664fc9343218e7d8f2dc6abcc1045911bcc65b474e40825fe278cf05f649dde552e5f37d900691f38e9fc0b48486f3ee5d343b9c languageName: node linkType: hard "@sideway/formula@npm:^3.0.1": version: 3.0.1 resolution: "@sideway/formula@npm:3.0.1" - checksum: 3fe81fa9662efc076bf41612b060eb9b02e846ea4bea5bd114f1662b7f1541e9dedcf98aff0d24400bcb92f113964a50e0290b86e284edbdf6346fa9b7e2bf2c + checksum: 10c0/3fe81fa9662efc076bf41612b060eb9b02e846ea4bea5bd114f1662b7f1541e9dedcf98aff0d24400bcb92f113964a50e0290b86e284edbdf6346fa9b7e2bf2c languageName: node linkType: hard "@sideway/pinpoint@npm:^2.0.0": version: 2.0.0 resolution: "@sideway/pinpoint@npm:2.0.0" - checksum: d2ca75dacaf69b8fc0bb8916a204e01def3105ee44d8be16c355e5f58189eb94039e15ce831f3d544f229889ccfa35562a0ce2516179f3a7ee1bbe0b71e55b36 + checksum: 10c0/d2ca75dacaf69b8fc0bb8916a204e01def3105ee44d8be16c355e5f58189eb94039e15ce831f3d544f229889ccfa35562a0ce2516179f3a7ee1bbe0b71e55b36 languageName: node linkType: hard "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" - checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard "@sindresorhus/is@npm:^3.1.2": version: 3.1.2 resolution: "@sindresorhus/is@npm:3.1.2" - checksum: d83b11a6f2bd41aaf87255bf1c5e83ee59bd13b46f5632cb94c80d077194c68de1060efaa9e624179bef96f51a016c9e3942deaf162f5c939fa396e0be630754 + checksum: 10c0/d83b11a6f2bd41aaf87255bf1c5e83ee59bd13b46f5632cb94c80d077194c68de1060efaa9e624179bef96f51a016c9e3942deaf162f5c939fa396e0be630754 languageName: node linkType: hard "@sindresorhus/is@npm:^5.2.0": version: 5.6.0 resolution: "@sindresorhus/is@npm:5.6.0" - checksum: 66727344d0c92edde5760b5fd1f8092b717f2298a162a5f7f29e4953e001479927402d9d387e245fb9dc7d3b37c72e335e93ed5875edfc5203c53be8ecba1b52 + checksum: 10c0/66727344d0c92edde5760b5fd1f8092b717f2298a162a5f7f29e4953e001479927402d9d387e245fb9dc7d3b37c72e335e93ed5875edfc5203c53be8ecba1b52 languageName: node linkType: hard @@ -2503,7 +2503,7 @@ __metadata: micromark-factory-space: "npm:^1.0.0" micromark-util-character: "npm:^1.1.0" micromark-util-symbol: "npm:^1.0.1" - checksum: b8da9d8f560740959c421d3ce5be43952eace1c95cb65402d9473a15e66463346a37fb5f121a6b22a83af51e8845b0b4ff3c321f14ce31bd58fb126acf6c8ed9 + checksum: 10c0/b8da9d8f560740959c421d3ce5be43952eace1c95cb65402d9473a15e66463346a37fb5f121a6b22a83af51e8845b0b4ff3c321f14ce31bd58fb126acf6c8ed9 languageName: node linkType: hard @@ -2514,7 +2514,7 @@ __metadata: eval: "npm:^0.1.8" p-map: "npm:^4.0.0" webpack-sources: "npm:^3.2.2" - checksum: 6ba8abc2d99e8c513bb955502f9cd219c78b2c7b9b76668bf05067cf369cfa838089b52ee51c957e1e6e8442f9dd4f2bbd8df706a3c3388e9a0d41b09a895f97 + checksum: 10c0/6ba8abc2d99e8c513bb955502f9cd219c78b2c7b9b76668bf05067cf369cfa838089b52ee51c957e1e6e8442f9dd4f2bbd8df706a3c3388e9a0d41b09a895f97 languageName: node linkType: hard @@ -2523,7 +2523,7 @@ __metadata: resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a13ed0797189d5497890530449029bec388310e260a96459e304e2729e7a2cf4d20d34f882d9a77ccce73dd3d36065afbb6987258fdff618d7d57955065a8ad4 + checksum: 10c0/a13ed0797189d5497890530449029bec388310e260a96459e304e2729e7a2cf4d20d34f882d9a77ccce73dd3d36065afbb6987258fdff618d7d57955065a8ad4 languageName: node linkType: hard @@ -2532,7 +2532,7 @@ __metadata: resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8a98e59bd9971e066815b4129409932f7a4db4866834fe75677ea6d517972fb40b380a69a4413189f20e7947411f9ab1b0f029dd5e8068686a5a0188d3ccd4c7 + checksum: 10c0/8a98e59bd9971e066815b4129409932f7a4db4866834fe75677ea6d517972fb40b380a69a4413189f20e7947411f9ab1b0f029dd5e8068686a5a0188d3ccd4c7 languageName: node linkType: hard @@ -2541,7 +2541,7 @@ __metadata: resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 517dcca75223bd05d3f056a8514dbba3031278bea4eadf0842c576d84f4651e7a4e0e7082d3ee4ef42456de0f9c4531d8a1917c04876ca64b014b859ca8f1bde + checksum: 10c0/517dcca75223bd05d3f056a8514dbba3031278bea4eadf0842c576d84f4651e7a4e0e7082d3ee4ef42456de0f9c4531d8a1917c04876ca64b014b859ca8f1bde languageName: node linkType: hard @@ -2550,7 +2550,7 @@ __metadata: resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 318786787c9a217c33a7340c8856436858e1fffa5a6df635fedc6b9a371f3afea080ea074b9e3cfbbd9dd962ead924fde8bc9855a394c38dd60e391883a58c81 + checksum: 10c0/318786787c9a217c33a7340c8856436858e1fffa5a6df635fedc6b9a371f3afea080ea074b9e3cfbbd9dd962ead924fde8bc9855a394c38dd60e391883a58c81 languageName: node linkType: hard @@ -2559,7 +2559,7 @@ __metadata: resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 16ef228c793b909fec47dd7dc05c1c3c2d77a824f42055df37e141e0534081b1bc4aec6dcc51be50c221df9f262f59270fc1c379923bfd4f5db302abafabfd8d + checksum: 10c0/16ef228c793b909fec47dd7dc05c1c3c2d77a824f42055df37e141e0534081b1bc4aec6dcc51be50c221df9f262f59270fc1c379923bfd4f5db302abafabfd8d languageName: node linkType: hard @@ -2568,7 +2568,7 @@ __metadata: resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dfdd5cbe6ae543505eaa0da69df0735b7407294c4b0504b3e74c0e7e371f1acb914eb99fd21ff39ef5bd626b3474f064a4cccc50f41b7c556ee834f9a6d6610a + checksum: 10c0/dfdd5cbe6ae543505eaa0da69df0735b7407294c4b0504b3e74c0e7e371f1acb914eb99fd21ff39ef5bd626b3474f064a4cccc50f41b7c556ee834f9a6d6610a languageName: node linkType: hard @@ -2577,7 +2577,7 @@ __metadata: resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 332fbf3bbc19d938b744440dbab9c8acd8f7a2ed6bf9c4e23f40e3f2c25615a60b3bf00902a4f1f6c20b5f382a1547b3acc6f2b2d70d80e532b5d45945f1b979 + checksum: 10c0/332fbf3bbc19d938b744440dbab9c8acd8f7a2ed6bf9c4e23f40e3f2c25615a60b3bf00902a4f1f6c20b5f382a1547b3acc6f2b2d70d80e532b5d45945f1b979 languageName: node linkType: hard @@ -2586,7 +2586,7 @@ __metadata: resolution: "@svgr/babel-plugin-transform-svg-component@npm:6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8d9e1c7c62abce23837e53cdacc6d09bc1f1f2b0ad7322105001c097995e9aa8dca4fa41acf39148af69f342e40081c438106949fb083e997ca497cb0448f27d + checksum: 10c0/8d9e1c7c62abce23837e53cdacc6d09bc1f1f2b0ad7322105001c097995e9aa8dca4fa41acf39148af69f342e40081c438106949fb083e997ca497cb0448f27d languageName: node linkType: hard @@ -2604,7 +2604,7 @@ __metadata: "@svgr/babel-plugin-transform-svg-component": "npm:^6.5.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8e8d7a0049279152f9ac308fbfd4ce74063d8a376154718cba6309bae4316318804a32201c75c5839c629f8e1e5d641a87822764000998161d0fc1de24b0374a + checksum: 10c0/8e8d7a0049279152f9ac308fbfd4ce74063d8a376154718cba6309bae4316318804a32201c75c5839c629f8e1e5d641a87822764000998161d0fc1de24b0374a languageName: node linkType: hard @@ -2617,7 +2617,7 @@ __metadata: "@svgr/plugin-jsx": "npm:^6.5.1" camelcase: "npm:^6.2.0" cosmiconfig: "npm:^7.0.1" - checksum: 60cce11e13391171132115dcc8da592d23e51f155ebadf9b819bd1836b8c13d40aa5c30a03a7d429f65e70a71c50669b2e10c94e4922de4e58bc898275f46c05 + checksum: 10c0/60cce11e13391171132115dcc8da592d23e51f155ebadf9b819bd1836b8c13d40aa5c30a03a7d429f65e70a71c50669b2e10c94e4922de4e58bc898275f46c05 languageName: node linkType: hard @@ -2627,7 +2627,7 @@ __metadata: dependencies: "@babel/types": "npm:^7.20.0" entities: "npm:^4.4.0" - checksum: 18fa37b36581ba1678f5cc5a05ce0411e08df4db267f3cd900af7ffdf5bd90522f3a46465f315cd5d7345264949479133930aafdd27ce05c474e63756196256f + checksum: 10c0/18fa37b36581ba1678f5cc5a05ce0411e08df4db267f3cd900af7ffdf5bd90522f3a46465f315cd5d7345264949479133930aafdd27ce05c474e63756196256f languageName: node linkType: hard @@ -2641,7 +2641,7 @@ __metadata: svg-parser: "npm:^2.0.4" peerDependencies: "@svgr/core": ^6.0.0 - checksum: 365da6e43ceeff6b49258fa2fbb3c880210300e4a85ba74831e92d2dc9c53e6ab8dda422dc33fb6a339803227cf8d9a0024ce769401c46fd87209abe36d5ae43 + checksum: 10c0/365da6e43ceeff6b49258fa2fbb3c880210300e4a85ba74831e92d2dc9c53e6ab8dda422dc33fb6a339803227cf8d9a0024ce769401c46fd87209abe36d5ae43 languageName: node linkType: hard @@ -2654,7 +2654,7 @@ __metadata: svgo: "npm:^2.8.0" peerDependencies: "@svgr/core": "*" - checksum: da40e461145af1a92fd2ec50ea64626681fa73786f218497a4b4fb85393a58812999ca2744ee33bb7ab771aa5ce9ab1dbd08a189cb3d7a89fb58fd96913ddf91 + checksum: 10c0/da40e461145af1a92fd2ec50ea64626681fa73786f218497a4b4fb85393a58812999ca2744ee33bb7ab771aa5ce9ab1dbd08a189cb3d7a89fb58fd96913ddf91 languageName: node linkType: hard @@ -2670,7 +2670,7 @@ __metadata: "@svgr/core": "npm:^6.5.1" "@svgr/plugin-jsx": "npm:^6.5.1" "@svgr/plugin-svgo": "npm:^6.5.1" - checksum: 3e9edfbc2ef3dc07b5f50c9c5ff5c951048511dff9dffb0407e6d15343849dfb36099fc7e1e3911429382cab81f7735a86ba1d6f77d21bb8f9ca33a5dec4824a + checksum: 10c0/3e9edfbc2ef3dc07b5f50c9c5ff5c951048511dff9dffb0407e6d15343849dfb36099fc7e1e3911429382cab81f7735a86ba1d6f77d21bb8f9ca33a5dec4824a languageName: node linkType: hard @@ -2679,21 +2679,21 @@ __metadata: resolution: "@szmarczak/http-timer@npm:5.0.1" dependencies: defer-to-connect: "npm:^2.0.1" - checksum: 4629d2fbb2ea67c2e9dc03af235c0991c79ebdddcbc19aed5d5732fb29ce01c13331e9b1a491584b9069bd6ecde6581dcbf871f11b7eefdebbab34de6cf2197e + checksum: 10c0/4629d2fbb2ea67c2e9dc03af235c0991c79ebdddcbc19aed5d5732fb29ce01c13331e9b1a491584b9069bd6ecde6581dcbf871f11b7eefdebbab34de6cf2197e languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" - checksum: 073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 languageName: node linkType: hard "@trysound/sax@npm:0.2.0": version: 0.2.0 resolution: "@trysound/sax@npm:0.2.0" - checksum: 44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 languageName: node linkType: hard @@ -2702,7 +2702,7 @@ __metadata: resolution: "@types/acorn@npm:4.0.6" dependencies: "@types/estree": "npm:*" - checksum: 5a65a1d7e91fc95703f0a717897be60fa7ccd34b17f5462056274a246e6690259fe0a1baabc86fd3260354f87245cb3dc483346d7faad2b78fc199763978ede9 + checksum: 10c0/5a65a1d7e91fc95703f0a717897be60fa7ccd34b17f5462056274a246e6690259fe0a1baabc86fd3260354f87245cb3dc483346d7faad2b78fc199763978ede9 languageName: node linkType: hard @@ -2712,7 +2712,7 @@ __metadata: dependencies: "@types/connect": "npm:*" "@types/node": "npm:*" - checksum: c2dd533e1d4af958d656bdba7f376df68437d8dfb7e4522c88b6f3e6f827549e4be5bf0be68a5f1878accf5752ea37fba7e8a4b6dda53d0d122d77e27b69c750 + checksum: 10c0/c2dd533e1d4af958d656bdba7f376df68437d8dfb7e4522c88b6f3e6f827549e4be5bf0be68a5f1878accf5752ea37fba7e8a4b6dda53d0d122d77e27b69c750 languageName: node linkType: hard @@ -2721,7 +2721,7 @@ __metadata: resolution: "@types/bonjour@npm:3.5.10" dependencies: "@types/node": "npm:*" - checksum: 5a3d70695a8dfe79c020579fcbf18d7dbb89b8f061dd388c76b68c4797c0fccd71f3e8a9e2bea00afffdb9b37a49dd0ac0a192829d5b655a5b49c66f313a7be8 + checksum: 10c0/5a3d70695a8dfe79c020579fcbf18d7dbb89b8f061dd388c76b68c4797c0fccd71f3e8a9e2bea00afffdb9b37a49dd0ac0a192829d5b655a5b49c66f313a7be8 languageName: node linkType: hard @@ -2731,7 +2731,7 @@ __metadata: dependencies: "@types/express-serve-static-core": "npm:*" "@types/node": "npm:*" - checksum: 06217360db2665fe31351f98d95c1efdbf3919403e748d3a6b4377a79704ef524765ba2ccf499daa9b30fcbe5ef9d08988aee773e89a4998cf47e3800c95b635 + checksum: 10c0/06217360db2665fe31351f98d95c1efdbf3919403e748d3a6b4377a79704ef524765ba2ccf499daa9b30fcbe5ef9d08988aee773e89a4998cf47e3800c95b635 languageName: node linkType: hard @@ -2740,7 +2740,7 @@ __metadata: resolution: "@types/connect@npm:3.4.35" dependencies: "@types/node": "npm:*" - checksum: f11a1ccfed540723dddd7cb496543ad40a2f663f22ff825e9b220f0bae86db8b1ced2184ee41d3fb358b019ad6519e39481b06386db91ebb859003ad1d54fe6a + checksum: 10c0/f11a1ccfed540723dddd7cb496543ad40a2f663f22ff825e9b220f0bae86db8b1ced2184ee41d3fb358b019ad6519e39481b06386db91ebb859003ad1d54fe6a languageName: node linkType: hard @@ -2749,7 +2749,7 @@ __metadata: resolution: "@types/debug@npm:4.1.10" dependencies: "@types/ms": "npm:*" - checksum: b3479ffdfd141809b165944d3b3bf3b6a70f95064228a4fa0ff470a25c8ab3f3db7b9f5be0a7460dc9d6fe3595bdb4cbc088c9102bd7afa596dba754f0585ead + checksum: 10c0/b3479ffdfd141809b165944d3b3bf3b6a70f95064228a4fa0ff470a25c8ab3f3db7b9f5be0a7460dc9d6fe3595bdb4cbc088c9102bd7afa596dba754f0585ead languageName: node linkType: hard @@ -2759,7 +2759,7 @@ __metadata: dependencies: "@types/eslint": "npm:*" "@types/estree": "npm:*" - checksum: 3084e2619be57ca318dfddc2557fef855d63ea378d42b6b355216ea3e3aed82ce6adbfa6b620bff1d67aefa95245c5b41e998338bc307c948f8cbf08840b9bb2 + checksum: 10c0/3084e2619be57ca318dfddc2557fef855d63ea378d42b6b355216ea3e3aed82ce6adbfa6b620bff1d67aefa95245c5b41e998338bc307c948f8cbf08840b9bb2 languageName: node linkType: hard @@ -2769,7 +2769,7 @@ __metadata: dependencies: "@types/estree": "npm:*" "@types/json-schema": "npm:*" - checksum: 3ba1ddb8d2362316bafe65f90aa41ce23f923f8ae6a131e382540a7c0d8ad5f04117e6aba788392717a616bd6e2589a1d954630c49edb364d28dc8eeb5214890 + checksum: 10c0/3ba1ddb8d2362316bafe65f90aa41ce23f923f8ae6a131e382540a7c0d8ad5f04117e6aba788392717a616bd6e2589a1d954630c49edb364d28dc8eeb5214890 languageName: node linkType: hard @@ -2778,14 +2778,14 @@ __metadata: resolution: "@types/estree-jsx@npm:1.0.2" dependencies: "@types/estree": "npm:*" - checksum: 12ae4b0c2de8bd3b4fc303a2888af1e497db279b8a08c4170d25cc91394d61bb39b5476d5afd792099f6f1bebc8a5f59c3cf5a2716acf8ae7d3889e71cdb262e + checksum: 10c0/12ae4b0c2de8bd3b4fc303a2888af1e497db279b8a08c4170d25cc91394d61bb39b5476d5afd792099f6f1bebc8a5f59c3cf5a2716acf8ae7d3889e71cdb262e languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": version: 1.0.4 resolution: "@types/estree@npm:1.0.4" - checksum: de2abd990fb9b36583ab25d6a5898938eac076cf3e47f11ffc8cf9e3fdca1245807e0f166b6bf0924c7dab0676cc314ca8f749679ee5ea8a45771466ded25dd1 + checksum: 10c0/de2abd990fb9b36583ab25d6a5898938eac076cf3e47f11ffc8cf9e3fdca1245807e0f166b6bf0924c7dab0676cc314ca8f749679ee5ea8a45771466ded25dd1 languageName: node linkType: hard @@ -2796,7 +2796,7 @@ __metadata: "@types/node": "npm:*" "@types/qs": "npm:*" "@types/range-parser": "npm:*" - checksum: 4485e5c0c87b868d04c92160a4b5d488641a3dfd518254a96657bcedb284a54ab39ca7d0ed86b41626afd529ebe11900a25c27536e7b5307bd0fd0f604423c08 + checksum: 10c0/4485e5c0c87b868d04c92160a4b5d488641a3dfd518254a96657bcedb284a54ab39ca7d0ed86b41626afd529ebe11900a25c27536e7b5307bd0fd0f604423c08 languageName: node linkType: hard @@ -2808,14 +2808,14 @@ __metadata: "@types/express-serve-static-core": "npm:^4.17.18" "@types/qs": "npm:*" "@types/serve-static": "npm:*" - checksum: 2387977093ac8b8e5f837b3ff27e8e28bb389058e6a2d8f66ce6818a0c486a07491aae5def3926d730c30b623d10d758b5bb3909816442e9a5bd1b058cfc3bd5 + checksum: 10c0/2387977093ac8b8e5f837b3ff27e8e28bb389058e6a2d8f66ce6818a0c486a07491aae5def3926d730c30b623d10d758b5bb3909816442e9a5bd1b058cfc3bd5 languageName: node linkType: hard "@types/gtag.js@npm:^0.0.12": version: 0.0.12 resolution: "@types/gtag.js@npm:0.0.12" - checksum: fee8f4c6e627301b89ab616c9e219bd53fa6ea1ffd1d0a8021e21363f0bdb2cf7eb1a5bcda0c6f1502186379bc7784ec29c932e21634f4e07f9e7a8c56887400 + checksum: 10c0/fee8f4c6e627301b89ab616c9e219bd53fa6ea1ffd1d0a8021e21363f0bdb2cf7eb1a5bcda0c6f1502186379bc7784ec29c932e21634f4e07f9e7a8c56887400 languageName: node linkType: hard @@ -2824,28 +2824,28 @@ __metadata: resolution: "@types/hast@npm:3.0.2" dependencies: "@types/unist": "npm:*" - checksum: d1801cb01b5c8004f1825c2ea7c5e63d48eacdbf176b3d5b69b4af931fc07d2f525f4321662b5e25c1a5ab637a98f56b3fdb65b2f35fb890fc3145ab9bdedf0e + checksum: 10c0/d1801cb01b5c8004f1825c2ea7c5e63d48eacdbf176b3d5b69b4af931fc07d2f525f4321662b5e25c1a5ab637a98f56b3fdb65b2f35fb890fc3145ab9bdedf0e languageName: node linkType: hard "@types/history@npm:^4.7.11": version: 4.7.11 resolution: "@types/history@npm:4.7.11" - checksum: 3facf37c2493d1f92b2e93a22cac7ea70b06351c2ab9aaceaa3c56aa6099fb63516f6c4ec1616deb5c56b4093c026a043ea2d3373e6c0644d55710364d02c934 + checksum: 10c0/3facf37c2493d1f92b2e93a22cac7ea70b06351c2ab9aaceaa3c56aa6099fb63516f6c4ec1616deb5c56b4093c026a043ea2d3373e6c0644d55710364d02c934 languageName: node linkType: hard "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab + checksum: 10c0/a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab languageName: node linkType: hard "@types/http-cache-semantics@npm:^4.0.2": version: 4.0.3 resolution: "@types/http-cache-semantics@npm:4.0.3" - checksum: 46e8e4d9ff8d032f0a12d08fb7250fc67ede0d566f9a5b3d92384098fb46a3892d3ec377600a1d73ea8a67a979b882f7b9ff5e29524fb76b8e1c44a0dbe04ecf + checksum: 10c0/46e8e4d9ff8d032f0a12d08fb7250fc67ede0d566f9a5b3d92384098fb46a3892d3ec377600a1d73ea8a67a979b882f7b9ff5e29524fb76b8e1c44a0dbe04ecf languageName: node linkType: hard @@ -2854,14 +2854,14 @@ __metadata: resolution: "@types/http-proxy@npm:1.17.8" dependencies: "@types/node": "npm:*" - checksum: 3a423534960443e98f7e6f7a1b2ad56f2f93d6e9e927298e683a58ac3e1add4066288dfc3afa80724aee58133ab5272ed58321c11bf0925b7237c010c05f2ced + checksum: 10c0/3a423534960443e98f7e6f7a1b2ad56f2f93d6e9e927298e683a58ac3e1add4066288dfc3afa80724aee58133ab5272ed58321c11bf0925b7237c010c05f2ced languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": version: 2.0.5 resolution: "@types/istanbul-lib-coverage@npm:2.0.5" - checksum: e15cfc01a7ac60062f771314c959011bae7de7ceaef8e294f13427a11f21741cbfac98ad8cd9ecbf0e3d72ab7ddc327bacb3fab32c6b26ab19dbbbc1a69a9d3b + checksum: 10c0/e15cfc01a7ac60062f771314c959011bae7de7ceaef8e294f13427a11f21741cbfac98ad8cd9ecbf0e3d72ab7ddc327bacb3fab32c6b26ab19dbbbc1a69a9d3b languageName: node linkType: hard @@ -2870,7 +2870,7 @@ __metadata: resolution: "@types/istanbul-lib-report@npm:3.0.2" dependencies: "@types/istanbul-lib-coverage": "npm:*" - checksum: c168e425c95c167d83c7cbd65ff6b620cc53c5ef199a58428758586bbc28faf5c51291667e4455777b47ada12381e53fce7b92e32f431f85d8ac8025074d1908 + checksum: 10c0/c168e425c95c167d83c7cbd65ff6b620cc53c5ef199a58428758586bbc28faf5c51291667e4455777b47ada12381e53fce7b92e32f431f85d8ac8025074d1908 languageName: node linkType: hard @@ -2879,14 +2879,14 @@ __metadata: resolution: "@types/istanbul-reports@npm:3.0.3" dependencies: "@types/istanbul-lib-report": "npm:*" - checksum: dcd8291370d9192aa980bf849309a7ca27e1d030ccc5e7edeef47d6612c2d57d611855543b9ffeb982d162a5ab2a44d8b40baa4dc93c1d7aa6fbcaeb16e69e78 + checksum: 10c0/dcd8291370d9192aa980bf849309a7ca27e1d030ccc5e7edeef47d6612c2d57d611855543b9ffeb982d162a5ab2a44d8b40baa4dc93c1d7aa6fbcaeb16e69e78 languageName: node linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.9 resolution: "@types/json-schema@npm:7.0.9" - checksum: 46a9e92b7922495a50f55632d802f7e7ab2dffd76b3f894baf7b28012e73983df832977bedd748aa9a2bc8400c6e8659ca39faf6ccd93d71d41d5b0293338a0e + checksum: 10c0/46a9e92b7922495a50f55632d802f7e7ab2dffd76b3f894baf7b28012e73983df832977bedd748aa9a2bc8400c6e8659ca39faf6ccd93d71d41d5b0293338a0e languageName: node linkType: hard @@ -2895,28 +2895,28 @@ __metadata: resolution: "@types/mdast@npm:4.0.2" dependencies: "@types/unist": "npm:*" - checksum: f0191b0bec0908fbbfb21b268bffa652f79b2d32195e05328eed62a69e6b8c3e8f726b1ef7835d80dc348f8058103c74cf0a1de2eb0ce11842c6686088d02bb4 + checksum: 10c0/f0191b0bec0908fbbfb21b268bffa652f79b2d32195e05328eed62a69e6b8c3e8f726b1ef7835d80dc348f8058103c74cf0a1de2eb0ce11842c6686088d02bb4 languageName: node linkType: hard "@types/mdx@npm:^2.0.0": version: 2.0.9 resolution: "@types/mdx@npm:2.0.9" - checksum: b6afd7adf039d64aaacd49f445dee4e5eba70a6199cc29df5d798c6704347bcd7c87868e59ec2614dd64127f74fad572c01d4e72ea08e7d23aa8f909fefafb87 + checksum: 10c0/b6afd7adf039d64aaacd49f445dee4e5eba70a6199cc29df5d798c6704347bcd7c87868e59ec2614dd64127f74fad572c01d4e72ea08e7d23aa8f909fefafb87 languageName: node linkType: hard "@types/mime@npm:^1": version: 1.3.2 resolution: "@types/mime@npm:1.3.2" - checksum: 61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 + checksum: 10c0/61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 languageName: node linkType: hard "@types/ms@npm:*": version: 0.7.33 resolution: "@types/ms@npm:0.7.33" - checksum: ef610d94ebee838243af37800cb5d1a52b2ae0fb6880675fbb9276c0c4afcefda755f16889fa597ee4e5b377998a7e67b453614aae68d3225e5f7219984284df + checksum: 10c0/ef610d94ebee838243af37800cb5d1a52b2ae0fb6880675fbb9276c0c4afcefda755f16889fa597ee4e5b377998a7e67b453614aae68d3225e5f7219984284df languageName: node linkType: hard @@ -2925,49 +2925,49 @@ __metadata: resolution: "@types/node-forge@npm:1.3.8" dependencies: "@types/node": "npm:*" - checksum: e02ba73e0a40b157ad31f798a3f0c8560524c75e8613a9761cb1ee640f7b7ea51ebebf6fce0224ef3713d6838643e81fa037ef1a1b2061cdeb2d142fb69d1955 + checksum: 10c0/e02ba73e0a40b157ad31f798a3f0c8560524c75e8613a9761cb1ee640f7b7ea51ebebf6fce0224ef3713d6838643e81fa037ef1a1b2061cdeb2d142fb69d1955 languageName: node linkType: hard "@types/node@npm:*, @types/node@npm:^17.0.5": version: 17.0.21 resolution: "@types/node@npm:17.0.21" - checksum: 57a9ce212da7878fddd4e9ef3f83c0f395e1e71c032b3112f4163f357a87b949c392dd9280ae806bca7edfbea335da1cd248fd316c615632b746c87ba1b2ab6e + checksum: 10c0/57a9ce212da7878fddd4e9ef3f83c0f395e1e71c032b3112f4163f357a87b949c392dd9280ae806bca7edfbea335da1cd248fd316c615632b746c87ba1b2ab6e languageName: node linkType: hard "@types/parse-json@npm:^4.0.0": version: 4.0.0 resolution: "@types/parse-json@npm:4.0.0" - checksum: 1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 + checksum: 10c0/1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 languageName: node linkType: hard "@types/prismjs@npm:^1.26.0": version: 1.26.2 resolution: "@types/prismjs@npm:1.26.2" - checksum: b3f8b09d965ea5f580603ca9f5ffef22461374366fcc03a709ce777e4f214b085f74486252d917193e7c7559933cd042156a50e7d11fe1d032bcdf286d04bb0d + checksum: 10c0/b3f8b09d965ea5f580603ca9f5ffef22461374366fcc03a709ce777e4f214b085f74486252d917193e7c7559933cd042156a50e7d11fe1d032bcdf286d04bb0d languageName: node linkType: hard "@types/prop-types@npm:*": version: 15.7.4 resolution: "@types/prop-types@npm:15.7.4" - checksum: 014bb826592fab01499931259969aafc21d5a8ff4ece3e3fb8e2b5186bed17656f7dcdccf9a98c27fee74d7d0697aa3f53ea971a72679597f0ca0c3d5ca585d3 + checksum: 10c0/014bb826592fab01499931259969aafc21d5a8ff4ece3e3fb8e2b5186bed17656f7dcdccf9a98c27fee74d7d0697aa3f53ea971a72679597f0ca0c3d5ca585d3 languageName: node linkType: hard "@types/qs@npm:*": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" - checksum: 157eb05f4c75790b0ebdcf7b0547ff117feabc8cda03c3cac3d3ea82bb19a1912e76a411df3eb0bdd01026a9770f07bc0e7e3fbe39ebb31c1be4564c16be35f1 + checksum: 10c0/157eb05f4c75790b0ebdcf7b0547ff117feabc8cda03c3cac3d3ea82bb19a1912e76a411df3eb0bdd01026a9770f07bc0e7e3fbe39ebb31c1be4564c16be35f1 languageName: node linkType: hard "@types/range-parser@npm:*": version: 1.2.4 resolution: "@types/range-parser@npm:1.2.4" - checksum: 8e3c3cda88675efd9145241bcb454449715b7d015a7fb80d018dcb3d441fa1938b302242cc0dfa6b02c5d014dd8bc082ae90091e62b1e816cae3ec36c2a7dbcb + checksum: 10c0/8e3c3cda88675efd9145241bcb454449715b7d015a7fb80d018dcb3d441fa1938b302242cc0dfa6b02c5d014dd8bc082ae90091e62b1e816cae3ec36c2a7dbcb languageName: node linkType: hard @@ -2978,7 +2978,7 @@ __metadata: "@types/history": "npm:^4.7.11" "@types/react": "npm:*" "@types/react-router": "npm:^5.1.0" - checksum: 6de88d94eb324d68a126d453438086bffc5f000acbbc60103a105ea12badbb177ded44d5359f86768f340ebdb1a46e26afa7c32db2c323ffb64b83c42086e5ad + checksum: 10c0/6de88d94eb324d68a126d453438086bffc5f000acbbc60103a105ea12badbb177ded44d5359f86768f340ebdb1a46e26afa7c32db2c323ffb64b83c42086e5ad languageName: node linkType: hard @@ -2989,7 +2989,7 @@ __metadata: "@types/history": "npm:^4.7.11" "@types/react": "npm:*" "@types/react-router": "npm:*" - checksum: a9231a16afb9ed5142678147eafec9d48582809295754fb60946e29fcd3757a4c7a3180fa94b45763e4c7f6e3f02379e2fcb8dd986db479dcab40eff5fc62a91 + checksum: 10c0/a9231a16afb9ed5142678147eafec9d48582809295754fb60946e29fcd3757a4c7a3180fa94b45763e4c7f6e3f02379e2fcb8dd986db479dcab40eff5fc62a91 languageName: node linkType: hard @@ -2999,7 +2999,7 @@ __metadata: dependencies: "@types/history": "npm:^4.7.11" "@types/react": "npm:*" - checksum: 1f7eee61981d2f807fa01a34a0ef98ebc0774023832b6611a69c7f28fdff01de5a38cabf399f32e376bf8099dcb7afaf724775bea9d38870224492bea4cb5737 + checksum: 10c0/1f7eee61981d2f807fa01a34a0ef98ebc0774023832b6611a69c7f28fdff01de5a38cabf399f32e376bf8099dcb7afaf724775bea9d38870224492bea4cb5737 languageName: node linkType: hard @@ -3010,14 +3010,14 @@ __metadata: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 1b0c280596bf2a46da7f5fa42eca35a8a53000b18dddcc6ed32a6732577b909b81e680863a1482373fb934c0426e42932738cc849c7b6739006f1b1d8bdde2aa + checksum: 10c0/1b0c280596bf2a46da7f5fa42eca35a8a53000b18dddcc6ed32a6732577b909b81e680863a1482373fb934c0426e42932738cc849c7b6739006f1b1d8bdde2aa languageName: node linkType: hard "@types/retry@npm:^0.12.0": version: 0.12.1 resolution: "@types/retry@npm:0.12.1" - checksum: d2d08393973693826fc947fb09596c34bd65863201e2f6d7e9d7a02d504199d6a2bab13eba56f6366ee0fd45434c699a9fdcfff3311e63bf2fad7a4cf34bacfd + checksum: 10c0/d2d08393973693826fc947fb09596c34bd65863201e2f6d7e9d7a02d504199d6a2bab13eba56f6366ee0fd45434c699a9fdcfff3311e63bf2fad7a4cf34bacfd languageName: node linkType: hard @@ -3026,14 +3026,14 @@ __metadata: resolution: "@types/sax@npm:1.2.4" dependencies: "@types/node": "npm:*" - checksum: 68beed153fce3bbae0f36b2c083d5a9dc82ae3460592c7f7d087ac07003be181fe03856821169ce6d3f83790448625b74c7ac4422303d003c76b95a50170de2f + checksum: 10c0/68beed153fce3bbae0f36b2c083d5a9dc82ae3460592c7f7d087ac07003be181fe03856821169ce6d3f83790448625b74c7ac4422303d003c76b95a50170de2f languageName: node linkType: hard "@types/scheduler@npm:*": version: 0.16.2 resolution: "@types/scheduler@npm:0.16.2" - checksum: 89a3a922f03609b61c270d534226791edeedcb1b06f0225d5543ac17830254624ef9d8a97ad05418e4ce549dd545bddf1ff28cb90658ff10721ad14556ca68a5 + checksum: 10c0/89a3a922f03609b61c270d534226791edeedcb1b06f0225d5543ac17830254624ef9d8a97ad05418e4ce549dd545bddf1ff28cb90658ff10721ad14556ca68a5 languageName: node linkType: hard @@ -3042,7 +3042,7 @@ __metadata: resolution: "@types/serve-index@npm:1.9.1" dependencies: "@types/express": "npm:*" - checksum: ed1ac8407101a787ebf09164a81bc24248ccf9d9789cd4eaa360a9a06163e5d2168c46ab0ddf2007e47b455182ecaa7632a886639919d9d409a27f7aef4e847a + checksum: 10c0/ed1ac8407101a787ebf09164a81bc24248ccf9d9789cd4eaa360a9a06163e5d2168c46ab0ddf2007e47b455182ecaa7632a886639919d9d409a27f7aef4e847a languageName: node linkType: hard @@ -3052,7 +3052,7 @@ __metadata: dependencies: "@types/mime": "npm:^1" "@types/node": "npm:*" - checksum: 7f3de245cbb11f3a9d7977b6e763585c6022ebfc079fa746f8d824411bb6b343521c1cff5407edc0d5196f4b7d6fea431fb36455843f4a6717d295c235065cf2 + checksum: 10c0/7f3de245cbb11f3a9d7977b6e763585c6022ebfc079fa746f8d824411bb6b343521c1cff5407edc0d5196f4b7d6fea431fb36455843f4a6717d295c235065cf2 languageName: node linkType: hard @@ -3061,21 +3061,21 @@ __metadata: resolution: "@types/sockjs@npm:0.3.33" dependencies: "@types/node": "npm:*" - checksum: 75b9b2839970ebab3e557955b9e2b1091d87cefabee1023e566bccc093411acc4a1402f3da4fde18aca44f5b9c42fe0626afd073a2140002b9b53eb71a084e4d + checksum: 10c0/75b9b2839970ebab3e557955b9e2b1091d87cefabee1023e566bccc093411acc4a1402f3da4fde18aca44f5b9c42fe0626afd073a2140002b9b53eb71a084e4d languageName: node linkType: hard "@types/unist@npm:*, @types/unist@npm:^3.0.0": version: 3.0.1 resolution: "@types/unist@npm:3.0.1" - checksum: d57bfc86d8aa437451987b5ff7704cb37a7513ba1e58c080bbda0fbd6bd352ae3018fa229ad07ed3fabb969e9b9911984621f02479fe805e7d918682d24e9b45 + checksum: 10c0/d57bfc86d8aa437451987b5ff7704cb37a7513ba1e58c080bbda0fbd6bd352ae3018fa229ad07ed3fabb969e9b9911984621f02479fe805e7d918682d24e9b45 languageName: node linkType: hard "@types/unist@npm:^2.0.0": version: 2.0.6 resolution: "@types/unist@npm:2.0.6" - checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb + checksum: 10c0/8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb languageName: node linkType: hard @@ -3084,14 +3084,14 @@ __metadata: resolution: "@types/ws@npm:8.5.8" dependencies: "@types/node": "npm:*" - checksum: a5b4a2b95acf1f3790add5fe1b72388628bf0e7643f29f265483b3dec506ab7d9decae74174fbaa0d43984f32c697ca8797959a1a560e8c9d54204295b1f7ff5 + checksum: 10c0/a5b4a2b95acf1f3790add5fe1b72388628bf0e7643f29f265483b3dec506ab7d9decae74174fbaa0d43984f32c697ca8797959a1a560e8c9d54204295b1f7ff5 languageName: node linkType: hard "@types/yargs-parser@npm:*": version: 21.0.2 resolution: "@types/yargs-parser@npm:21.0.2" - checksum: 422b8c59e21d9594e5a94afa45a3692d96c14f8fc7554bb1c1c390276815f09996ce0f8ed11893b6f8b2efc4ced686231dca5be6d76a4c4ceb56534474e95aca + checksum: 10c0/422b8c59e21d9594e5a94afa45a3692d96c14f8fc7554bb1c1c390276815f09996ce0f8ed11893b6f8b2efc4ced686231dca5be6d76a4c4ceb56534474e95aca languageName: node linkType: hard @@ -3100,14 +3100,14 @@ __metadata: resolution: "@types/yargs@npm:17.0.30" dependencies: "@types/yargs-parser": "npm:*" - checksum: 7e3b4de5aa406a408d93e8a282314c7b28160185322044eea6373c5a7625a47743dc17044fff1a6cde7d0c022ecfd8e78a4f9df9c01afc07b1df6b0e0e6275af + checksum: 10c0/7e3b4de5aa406a408d93e8a282314c7b28160185322044eea6373c5a7625a47743dc17044fff1a6cde7d0c022ecfd8e78a4f9df9c01afc07b1df6b0e0e6275af languageName: node linkType: hard "@ungap/structured-clone@npm:^1.0.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d languageName: node linkType: hard @@ -3117,28 +3117,28 @@ __metadata: dependencies: "@webassemblyjs/helper-numbers": "npm:1.11.6" "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb + checksum: 10c0/e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb languageName: node linkType: hard "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a languageName: node linkType: hard "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a languageName: node linkType: hard "@webassemblyjs/helper-buffer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" - checksum: 55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a + checksum: 10c0/55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a languageName: node linkType: hard @@ -3149,14 +3149,14 @@ __metadata: "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" "@webassemblyjs/helper-api-error": "npm:1.11.6" "@xtuc/long": "npm:4.2.2" - checksum: c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 languageName: node linkType: hard "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 languageName: node linkType: hard @@ -3168,7 +3168,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.11.6" "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" "@webassemblyjs/wasm-gen": "npm:1.11.6" - checksum: b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce + checksum: 10c0/b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce languageName: node linkType: hard @@ -3177,7 +3177,7 @@ __metadata: resolution: "@webassemblyjs/ieee754@npm:1.11.6" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f languageName: node linkType: hard @@ -3186,14 +3186,14 @@ __metadata: resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e languageName: node linkType: hard "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee languageName: node linkType: hard @@ -3209,7 +3209,7 @@ __metadata: "@webassemblyjs/wasm-opt": "npm:1.11.6" "@webassemblyjs/wasm-parser": "npm:1.11.6" "@webassemblyjs/wast-printer": "npm:1.11.6" - checksum: 9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 + checksum: 10c0/9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 languageName: node linkType: hard @@ -3222,7 +3222,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.11.6" "@webassemblyjs/leb128": "npm:1.11.6" "@webassemblyjs/utf8": "npm:1.11.6" - checksum: ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad + checksum: 10c0/ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad languageName: node linkType: hard @@ -3234,7 +3234,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.11.6" "@webassemblyjs/wasm-gen": "npm:1.11.6" "@webassemblyjs/wasm-parser": "npm:1.11.6" - checksum: 82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 + checksum: 10c0/82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 languageName: node linkType: hard @@ -3248,7 +3248,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.11.6" "@webassemblyjs/leb128": "npm:1.11.6" "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f + checksum: 10c0/7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f languageName: node linkType: hard @@ -3258,28 +3258,28 @@ __metadata: dependencies: "@webassemblyjs/ast": "npm:1.11.6" "@xtuc/long": "npm:4.2.2" - checksum: 916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c + checksum: 10c0/916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c languageName: node linkType: hard "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f languageName: node linkType: hard "@xtuc/long@npm:4.2.2": version: 4.2.2 resolution: "@xtuc/long@npm:4.2.2" - checksum: 8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 languageName: node linkType: hard "abbrev@npm:1": version: 1.1.1 resolution: "abbrev@npm:1.1.1" - checksum: 3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 languageName: node linkType: hard @@ -3289,7 +3289,7 @@ __metadata: dependencies: mime-types: "npm:~2.1.34" negotiator: "npm:0.6.3" - checksum: 3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 languageName: node linkType: hard @@ -3298,7 +3298,7 @@ __metadata: resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: acorn: ^8 - checksum: 3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe + checksum: 10c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe languageName: node linkType: hard @@ -3307,14 +3307,14 @@ __metadata: resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 languageName: node linkType: hard "acorn-walk@npm:^8.0.0": version: 8.2.0 resolution: "acorn-walk@npm:8.2.0" - checksum: dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 + checksum: 10c0/dbe92f5b2452c93e960c5594e666dd1fae141b965ff2cb4a1e1d0381e3e4db4274c5ce4ffa3d681a86ca2a8d4e29d5efc0670a08e23fd2800051ea387df56ca2 languageName: node linkType: hard @@ -3323,14 +3323,14 @@ __metadata: resolution: "acorn@npm:8.11.2" bin: acorn: bin/acorn - checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 + checksum: 10c0/a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 languageName: node linkType: hard "address@npm:^1.0.1, address@npm:^1.1.2": version: 1.1.2 resolution: "address@npm:1.1.2" - checksum: 3ac908133d1d8cc52110473833718e82775428e73b4eb51b42cd7c7f571c7459c28c3c54592231efdcb96f6ed376eb490194e97c533df9e8efb910fa29a34e55 + checksum: 10c0/3ac908133d1d8cc52110473833718e82775428e73b4eb51b42cd7c7f571c7459c28c3c54592231efdcb96f6ed376eb490194e97c533df9e8efb910fa29a34e55 languageName: node linkType: hard @@ -3339,7 +3339,7 @@ __metadata: resolution: "agent-base@npm:6.0.2" dependencies: debug: "npm:4" - checksum: dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 languageName: node linkType: hard @@ -3350,7 +3350,7 @@ __metadata: debug: "npm:^4.1.0" depd: "npm:^1.1.2" humanize-ms: "npm:^1.2.1" - checksum: 259dafa84a9e1f9e277ac8b31995a7a4f4db36a1df1710e9d413d98c6c013ab81370ad585d92038045cc8657662e578b07fd60b312b212f59ad426b10e1d6dce + checksum: 10c0/259dafa84a9e1f9e277ac8b31995a7a4f4db36a1df1710e9d413d98c6c013ab81370ad585d92038045cc8657662e578b07fd60b312b212f59ad426b10e1d6dce languageName: node linkType: hard @@ -3360,7 +3360,7 @@ __metadata: dependencies: clean-stack: "npm:^2.0.0" indent-string: "npm:^4.0.0" - checksum: a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 languageName: node linkType: hard @@ -3374,7 +3374,7 @@ __metadata: peerDependenciesMeta: ajv: optional: true - checksum: e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 languageName: node linkType: hard @@ -3383,7 +3383,7 @@ __metadata: resolution: "ajv-keywords@npm:3.5.2" peerDependencies: ajv: ^6.9.1 - checksum: 0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 languageName: node linkType: hard @@ -3394,7 +3394,7 @@ __metadata: fast-deep-equal: "npm:^3.1.3" peerDependencies: ajv: ^8.8.2 - checksum: 18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 languageName: node linkType: hard @@ -3406,7 +3406,7 @@ __metadata: fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 languageName: node linkType: hard @@ -3418,7 +3418,7 @@ __metadata: json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" uri-js: "npm:^4.2.2" - checksum: cc2c02a89289420ea96720f728d39d4d19dbcb2c1d0363481d0a9973282b69d94c8c1a02f4c424a89a1bd888e6049f87d0f82d21b5d056546cdbb364dd043f23 + checksum: 10c0/cc2c02a89289420ea96720f728d39d4d19dbcb2c1d0363481d0a9973282b69d94c8c1a02f4c424a89a1bd888e6049f87d0f82d21b5d056546cdbb364dd043f23 languageName: node linkType: hard @@ -3429,7 +3429,7 @@ __metadata: "@algolia/events": "npm:^4.0.1" peerDependencies: algoliasearch: ">= 3.1 < 6" - checksum: a277f6d9d98184ea94c166995990f0b12e25d5af69fad50f1014658382408985afd31bd3d6d1ae1b68afe0af7c0e6b7e397172c08d1cd5f82af5b312cd515f15 + checksum: 10c0/a277f6d9d98184ea94c166995990f0b12e25d5af69fad50f1014658382408985afd31bd3d6d1ae1b68afe0af7c0e6b7e397172c08d1cd5f82af5b312cd515f15 languageName: node linkType: hard @@ -3451,7 +3451,7 @@ __metadata: "@algolia/requester-common": "npm:4.20.0" "@algolia/requester-node-http": "npm:4.20.0" "@algolia/transporter": "npm:4.20.0" - checksum: 39c1e5391560ba019a845440c00f770e41b3462860214f45b678f976e3de61108eb7abafab610f26adde7d3057df1f8f65d465bcd114612546b935880e43f1dd + checksum: 10c0/39c1e5391560ba019a845440c00f770e41b3462860214f45b678f976e3de61108eb7abafab610f26adde7d3057df1f8f65d465bcd114612546b935880e43f1dd languageName: node linkType: hard @@ -3460,7 +3460,7 @@ __metadata: resolution: "ansi-align@npm:3.0.1" dependencies: string-width: "npm:^4.1.0" - checksum: ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 languageName: node linkType: hard @@ -3469,21 +3469,21 @@ __metadata: resolution: "ansi-html-community@npm:0.0.8" bin: ansi-html: bin/ansi-html - checksum: 45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 + checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" - checksum: 9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 languageName: node linkType: hard "ansi-regex@npm:^6.0.1": version: 6.0.1 resolution: "ansi-regex@npm:6.0.1" - checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 languageName: node linkType: hard @@ -3492,7 +3492,7 @@ __metadata: resolution: "ansi-styles@npm:3.2.1" dependencies: color-convert: "npm:^1.9.0" - checksum: ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b languageName: node linkType: hard @@ -3501,14 +3501,14 @@ __metadata: resolution: "ansi-styles@npm:4.3.0" dependencies: color-convert: "npm:^2.0.1" - checksum: 895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 languageName: node linkType: hard "ansi-styles@npm:^6.1.0": version: 6.1.0 resolution: "ansi-styles@npm:6.1.0" - checksum: 39d4ffae6559b24716db7c84b5e750aef6b0b433651f7b4a789f40b41be24ee7ea532afe540cea9cedb518baf334f9d9029af47d851ae5dcbdb2ca5a4862b8b8 + checksum: 10c0/39d4ffae6559b24716db7c84b5e750aef6b0b433651f7b4a789f40b41be24ee7ea532afe540cea9cedb518baf334f9d9029af47d851ae5dcbdb2ca5a4862b8b8 languageName: node linkType: hard @@ -3518,14 +3518,14 @@ __metadata: dependencies: normalize-path: "npm:^3.0.0" picomatch: "npm:^2.0.4" - checksum: 900645535aee46ed7958f4f5b5e38abcbf474b5230406e913de15fc9a1310f0d5322775deb609688efe31010fa57831e55d36040b19826c22ce61d537e9b9759 + checksum: 10c0/900645535aee46ed7958f4f5b5e38abcbf474b5230406e913de15fc9a1310f0d5322775deb609688efe31010fa57831e55d36040b19826c22ce61d537e9b9759 languageName: node linkType: hard "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" - checksum: d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 + checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 languageName: node linkType: hard @@ -3535,14 +3535,14 @@ __metadata: dependencies: delegates: "npm:^1.0.0" readable-stream: "npm:^3.6.0" - checksum: 91cd4ad8a914437720bd726a36304ae279209fb13ce0f7e183ae752ae6d0070b56717a06a96b186728f9e74cb90837e5ee167a717119367b0ff3c4d2cef389ff + checksum: 10c0/91cd4ad8a914437720bd726a36304ae279209fb13ce0f7e183ae752ae6d0070b56717a06a96b186728f9e74cb90837e5ee167a717119367b0ff3c4d2cef389ff languageName: node linkType: hard "arg@npm:^5.0.0": version: 5.0.1 resolution: "arg@npm:5.0.1" - checksum: b7087004468507db9bb5dbd00de408e0b589b63620e09ca8c45bef0731fce337ce43f66fb1dd88551648f31e8ae081a60a8ed27a60213d3968b6f65b7b1f5930 + checksum: 10c0/b7087004468507db9bb5dbd00de408e0b589b63620e09ca8c45bef0731fce337ce43f66fb1dd88551648f31e8ae081a60a8ed27a60213d3968b6f65b7b1f5930 languageName: node linkType: hard @@ -3551,35 +3551,35 @@ __metadata: resolution: "argparse@npm:1.0.10" dependencies: sprintf-js: "npm:~1.0.2" - checksum: b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" - checksum: c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e languageName: node linkType: hard "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" - checksum: 806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 languageName: node linkType: hard "array-flatten@npm:^2.1.2": version: 2.1.2 resolution: "array-flatten@npm:2.1.2" - checksum: bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f + checksum: 10c0/bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f languageName: node linkType: hard "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" - checksum: 429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 languageName: node linkType: hard @@ -3588,14 +3588,14 @@ __metadata: resolution: "astring@npm:1.8.6" bin: astring: bin/astring - checksum: 31f09144597048c11072417959a412f208f8f95ba8dce408dfbc3367acb929f31fbcc00ed5eb61ccbf7c2f1173b9ac8bfcaaa37134a9455050c669b2b036ed88 + checksum: 10c0/31f09144597048c11072417959a412f208f8f95ba8dce408dfbc3367acb929f31fbcc00ed5eb61ccbf7c2f1173b9ac8bfcaaa37134a9455050c669b2b036ed88 languageName: node linkType: hard "at-least-node@npm:^1.0.0": version: 1.0.0 resolution: "at-least-node@npm:1.0.0" - checksum: 4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef languageName: node linkType: hard @@ -3613,7 +3613,7 @@ __metadata: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: e00256e754d481a026d928bca729b25954074dd142dbec022f0a7db0d3bbc0dc2e2dc7542e94fec22eff81e21fe140e6856448e2d9a002660cb1e2ad434daee0 + checksum: 10c0/e00256e754d481a026d928bca729b25954074dd142dbec022f0a7db0d3bbc0dc2e2dc7542e94fec22eff81e21fe140e6856448e2d9a002660cb1e2ad434daee0 languageName: node linkType: hard @@ -3626,7 +3626,7 @@ __metadata: peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb languageName: node linkType: hard @@ -3635,7 +3635,7 @@ __metadata: resolution: "babel-plugin-dynamic-import-node@npm:2.3.3" dependencies: object.assign: "npm:^4.1.0" - checksum: 1bd80df981e1fc1aff0cd4e390cf27aaa34f95f7620cd14dff07ba3bad56d168c098233a7d2deb2c9b1dc13643e596a6b94fc608a3412ee3c56e74a25cd2167e + checksum: 10c0/1bd80df981e1fc1aff0cd4e390cf27aaa34f95f7620cd14dff07ba3bad56d168c098233a7d2deb2c9b1dc13643e596a6b94fc608a3412ee3c56e74a25cd2167e languageName: node linkType: hard @@ -3648,7 +3648,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 64a98811f343492aa6970ab253760194e389c0417e5b830522f944009c1f0c78e1251975fd1b9869cd48cc4623111b20a3389cf6732a1d10ba0d19de6fa5114f + checksum: 10c0/64a98811f343492aa6970ab253760194e389c0417e5b830522f944009c1f0c78e1251975fd1b9869cd48cc4623111b20a3389cf6732a1d10ba0d19de6fa5114f languageName: node linkType: hard @@ -3660,7 +3660,7 @@ __metadata: core-js-compat: "npm:^3.33.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 97d974c1dfbefdf27866e21a1ac757f6ab1626379b544d6f8ddb05f7bfa02173f8347b6140295b0f770394549f9321775d3048e466a9a02b99b88ad5f0346858 + checksum: 10c0/97d974c1dfbefdf27866e21a1ac757f6ab1626379b544d6f8ddb05f7bfa02173f8347b6140295b0f770394549f9321775d3048e466a9a02b99b88ad5f0346858 languageName: node linkType: hard @@ -3671,42 +3671,42 @@ __metadata: "@babel/helper-define-polyfill-provider": "npm:^0.4.3" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: cc32313b9ebbf1d7bedc33524a861136b9e5d3b6e9be317ac360a1c2a59ae5ed1b465a6c68b2715cdefb089780ddfb0c11f4a148e49827a947beee76e43da598 + checksum: 10c0/cc32313b9ebbf1d7bedc33524a861136b9e5d3b6e9be317ac360a1c2a59ae5ed1b465a6c68b2715cdefb089780ddfb0c11f4a148e49827a947beee76e43da598 languageName: node linkType: hard "bail@npm:^2.0.0": version: 2.0.2 resolution: "bail@npm:2.0.2" - checksum: 25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b + checksum: 10c0/25cbea309ef6a1f56214187004e8f34014eb015713ea01fa5b9b7e9e776ca88d0fdffd64143ac42dc91966c915a4b7b683411b56e14929fad16153fc026ffb8b languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" - checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee languageName: node linkType: hard "batch@npm:0.6.1": version: 0.6.1 resolution: "batch@npm:0.6.1" - checksum: 925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 + checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 languageName: node linkType: hard "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" - checksum: 230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f languageName: node linkType: hard "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" - checksum: d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d + checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d languageName: node linkType: hard @@ -3726,7 +3726,7 @@ __metadata: raw-body: "npm:2.5.1" type-is: "npm:~1.6.18" unpipe: "npm:1.0.0" - checksum: 36aa63aa7862ccbb32ea92fc3e6e1dea25b8c2fda03762bc26d0f82f61272635c532b2d77ef43d312de779fac83f24061a375d047be7f2bbf3ece66dc6b2c460 + checksum: 10c0/36aa63aa7862ccbb32ea92fc3e6e1dea25b8c2fda03762bc26d0f82f61272635c532b2d77ef43d312de779fac83f24061a375d047be7f2bbf3ece66dc6b2c460 languageName: node linkType: hard @@ -3738,14 +3738,14 @@ __metadata: dns-equal: "npm:^1.0.0" fast-deep-equal: "npm:^3.1.3" multicast-dns: "npm:^7.2.4" - checksum: 4a1ca37c7013074170ce852bd4bb66b37b29419b44619518c3cd8baa9e1c8b1e2bb4347d704102797692845aef4000b070da329048291a6aefa1797053ad32a3 + checksum: 10c0/4a1ca37c7013074170ce852bd4bb66b37b29419b44619518c3cd8baa9e1c8b1e2bb4347d704102797692845aef4000b070da329048291a6aefa1797053ad32a3 languageName: node linkType: hard "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" - checksum: e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf + checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf languageName: node linkType: hard @@ -3761,7 +3761,7 @@ __metadata: type-fest: "npm:^2.5.0" widest-line: "npm:^4.0.1" wrap-ansi: "npm:^8.0.1" - checksum: 2a50d059c950a50d9f3c873093702747740814ce8819225c4f8cbe92024c9f5a9219d2b7128f5cfa17c022644d929bbbc88b9591de67249c6ebe07f7486bdcfd + checksum: 10c0/2a50d059c950a50d9f3c873093702747740814ce8819225c4f8cbe92024c9f5a9219d2b7128f5cfa17c022644d929bbbc88b9591de67249c6ebe07f7486bdcfd languageName: node linkType: hard @@ -3777,7 +3777,7 @@ __metadata: type-fest: "npm:^2.13.0" widest-line: "npm:^4.0.1" wrap-ansi: "npm:^8.1.0" - checksum: 3a9891dc98ac40d582c9879e8165628258e2c70420c919e70fff0a53ccc7b42825e73cda6298199b2fbc1f41f5d5b93b492490ad2ae27623bed3897ddb4267f8 + checksum: 10c0/3a9891dc98ac40d582c9879e8165628258e2c70420c919e70fff0a53ccc7b42825e73cda6298199b2fbc1f41f5d5b93b492490ad2ae27623bed3897ddb4267f8 languageName: node linkType: hard @@ -3787,7 +3787,7 @@ __metadata: dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 languageName: node linkType: hard @@ -3796,7 +3796,7 @@ __metadata: resolution: "braces@npm:3.0.2" dependencies: fill-range: "npm:^7.0.1" - checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 languageName: node linkType: hard @@ -3810,28 +3810,28 @@ __metadata: update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: 6810f2d63f171d0b7b8d38cf091708e00cb31525501810a507839607839320d66e657293b0aa3d7f051ecbc025cb07390a90c037682c1d05d12604991e41050b + checksum: 10c0/6810f2d63f171d0b7b8d38cf091708e00cb31525501810a507839607839320d66e657293b0aa3d7f051ecbc025cb07390a90c037682c1d05d12604991e41050b languageName: node linkType: hard "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" - checksum: 124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 languageName: node linkType: hard "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" - checksum: 91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 languageName: node linkType: hard "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" - checksum: 76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e languageName: node linkType: hard @@ -3857,14 +3857,14 @@ __metadata: ssri: "npm:^8.0.1" tar: "npm:^6.0.2" unique-filename: "npm:^1.1.1" - checksum: 886fcc0acc4f6fd5cd142d373d8276267bc6d655d7c4ce60726fbbec10854de3395ee19bbf9e7e73308cdca9fdad0ad55060ff3bd16c6d4165c5b8d21515e1d8 + checksum: 10c0/886fcc0acc4f6fd5cd142d373d8276267bc6d655d7c4ce60726fbbec10854de3395ee19bbf9e7e73308cdca9fdad0ad55060ff3bd16c6d4165c5b8d21515e1d8 languageName: node linkType: hard "cacheable-lookup@npm:^7.0.0": version: 7.0.0 resolution: "cacheable-lookup@npm:7.0.0" - checksum: 63a9c144c5b45cb5549251e3ea774c04d63063b29e469f7584171d059d3a88f650f47869a974e2d07de62116463d742c287a81a625e791539d987115cb081635 + checksum: 10c0/63a9c144c5b45cb5549251e3ea774c04d63063b29e469f7584171d059d3a88f650f47869a974e2d07de62116463d742c287a81a625e791539d987115cb081635 languageName: node linkType: hard @@ -3879,7 +3879,7 @@ __metadata: mimic-response: "npm:^4.0.0" normalize-url: "npm:^8.0.0" responselike: "npm:^3.0.0" - checksum: 41b6658db369f20c03128227ecd219ca7ac52a9d24fc0f499cc9aa5d40c097b48b73553504cebd137024d957c0ddb5b67cf3ac1439b136667f3586257763f88d + checksum: 10c0/41b6658db369f20c03128227ecd219ca7ac52a9d24fc0f499cc9aa5d40c097b48b73553504cebd137024d957c0ddb5b67cf3ac1439b136667f3586257763f88d languageName: node linkType: hard @@ -3889,14 +3889,14 @@ __metadata: dependencies: function-bind: "npm:^1.1.1" get-intrinsic: "npm:^1.0.2" - checksum: 74ba3f31e715456e22e451d8d098779b861eba3c7cac0d9b510049aced70d75c231ba05071f97e1812c98e34e2bee734c0c6126653e0088c2d9819ca047f4073 + checksum: 10c0/74ba3f31e715456e22e451d8d098779b861eba3c7cac0d9b510049aced70d75c231ba05071f97e1812c98e34e2bee734c0c6126653e0088c2d9819ca047f4073 languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" - checksum: fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 languageName: node linkType: hard @@ -3906,21 +3906,21 @@ __metadata: dependencies: pascal-case: "npm:^3.1.2" tslib: "npm:^2.0.3" - checksum: bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a + checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a languageName: node linkType: hard "camelcase@npm:^6.2.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" - checksum: 0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 languageName: node linkType: hard "camelcase@npm:^7.0.1": version: 7.0.1 resolution: "camelcase@npm:7.0.1" - checksum: 3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd + checksum: 10c0/3adfc9a0e96d51b3a2f4efe90a84dad3e206aaa81dfc664f1bd568270e1bf3b010aad31f01db16345b4ffe1910e16ab411c7273a19a859addd1b98ef7cf4cfbd languageName: node linkType: hard @@ -3932,21 +3932,21 @@ __metadata: caniuse-lite: "npm:^1.0.0" lodash.memoize: "npm:^4.1.2" lodash.uniq: "npm:^4.5.0" - checksum: 60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c + checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c languageName: node linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001538, caniuse-lite@npm:^1.0.30001541": version: 1.0.30001561 resolution: "caniuse-lite@npm:1.0.30001561" - checksum: 6e84c84026fee53edbdbb5aded7a04a036aae4c2e367cf6bdc90c6783a591e2fdcfcdebcc4e774aca61092e542a61200c8c16b06659396492426033c4dbcc618 + checksum: 10c0/6e84c84026fee53edbdbb5aded7a04a036aae4c2e367cf6bdc90c6783a591e2fdcfcdebcc4e774aca61092e542a61200c8c16b06659396492426033c4dbcc618 languageName: node linkType: hard "ccount@npm:^2.0.0": version: 2.0.1 resolution: "ccount@npm:2.0.1" - checksum: 3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350 + checksum: 10c0/3939b1664390174484322bc3f45b798462e6c07ee6384cb3d645e0aa2f318502d174845198c1561930e1d431087f74cf1fe291ae9a4722821a9f4ba67e574350 languageName: node linkType: hard @@ -3957,7 +3957,7 @@ __metadata: ansi-styles: "npm:^3.2.1" escape-string-regexp: "npm:^1.0.5" supports-color: "npm:^5.3.0" - checksum: e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 languageName: node linkType: hard @@ -3967,49 +3967,49 @@ __metadata: dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" - checksum: 4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 languageName: node linkType: hard "chalk@npm:^5.0.1, chalk@npm:^5.2.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" - checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 languageName: node linkType: hard "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" - checksum: 57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e languageName: node linkType: hard "character-entities-html4@npm:^2.0.0": version: 2.1.0 resolution: "character-entities-html4@npm:2.1.0" - checksum: fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40 + checksum: 10c0/fe61b553f083400c20c0b0fd65095df30a0b445d960f3bbf271536ae6c3ba676f39cb7af0b4bf2755812f08ab9b88f2feed68f9aebb73bb153f7a115fe5c6e40 languageName: node linkType: hard "character-entities-legacy@npm:^3.0.0": version: 3.0.0 resolution: "character-entities-legacy@npm:3.0.0" - checksum: ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1 + checksum: 10c0/ec4b430af873661aa754a896a2b55af089b4e938d3d010fad5219299a6b6d32ab175142699ee250640678cd64bdecd6db3c9af0b8759ab7b155d970d84c4c7d1 languageName: node linkType: hard "character-entities@npm:^2.0.0": version: 2.0.2 resolution: "character-entities@npm:2.0.2" - checksum: b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 + checksum: 10c0/b0c645a45bcc90ff24f0e0140f4875a8436b8ef13b6bcd31ec02cfb2ca502b680362aa95386f7815bdc04b6464d48cf191210b3840d7c04241a149ede591a308 languageName: node linkType: hard "character-reference-invalid@npm:^2.0.0": version: 2.0.1 resolution: "character-reference-invalid@npm:2.0.1" - checksum: 2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1 + checksum: 10c0/2ae0dec770cd8659d7e8b0ce24392d83b4c2f0eb4a3395c955dce5528edd4cc030a794cfa06600fcdd700b3f2de2f9b8e40e309c0011c4180e3be64a0b42e6a1 languageName: node linkType: hard @@ -4023,7 +4023,7 @@ __metadata: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" domutils: "npm:^3.0.1" - checksum: 2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 + checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 languageName: node linkType: hard @@ -4038,7 +4038,7 @@ __metadata: htmlparser2: "npm:^8.0.1" parse5: "npm:^7.0.0" parse5-htmlparser2-tree-adapter: "npm:^7.0.0" - checksum: c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc + checksum: 10c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc languageName: node linkType: hard @@ -4057,28 +4057,28 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: 1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 + checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" - checksum: 594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" - checksum: 080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c + checksum: 10c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c languageName: node linkType: hard "ci-info@npm:^3.2.0": version: 3.9.0 resolution: "ci-info@npm:3.9.0" - checksum: 6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a languageName: node linkType: hard @@ -4087,21 +4087,21 @@ __metadata: resolution: "clean-css@npm:5.3.2" dependencies: source-map: "npm:~0.6.0" - checksum: 315e0e81306524bd2c1905fa6823bf7658be40799b78f446e5e6922808718d2b80266fb3e96842a06176fa683bc2c1a0d2827b08d154e2f9cf136d7bda909d33 + checksum: 10c0/315e0e81306524bd2c1905fa6823bf7658be40799b78f446e5e6922808718d2b80266fb3e96842a06176fa683bc2c1a0d2827b08d154e2f9cf136d7bda909d33 languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" - checksum: 1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 languageName: node linkType: hard "cli-boxes@npm:^3.0.0": version: 3.0.0 resolution: "cli-boxes@npm:3.0.0" - checksum: 4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9 + checksum: 10c0/4db3e8fbfaf1aac4fb3a6cbe5a2d3fa048bee741a45371b906439b9ffc821c6e626b0f108bdcd3ddf126a4a319409aedcf39a0730573ff050fdd7b6731e99fb9 languageName: node linkType: hard @@ -4114,7 +4114,7 @@ __metadata: dependenciesMeta: "@colors/colors": optional: true - checksum: 39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c + checksum: 10c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c languageName: node linkType: hard @@ -4125,28 +4125,28 @@ __metadata: is-plain-object: "npm:^2.0.4" kind-of: "npm:^6.0.2" shallow-clone: "npm:^3.0.0" - checksum: 637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 languageName: node linkType: hard "clsx@npm:2.0.0, clsx@npm:^2.0.0": version: 2.0.0 resolution: "clsx@npm:2.0.0" - checksum: c09f43b3144a0b7826b6b11b6a111b2c7440831004eecc02d333533c5e58ef0aa5f2dce071d3b25fbb8c8ea97b45df96c74bcc1d51c8c2027eb981931107b0cd + checksum: 10c0/c09f43b3144a0b7826b6b11b6a111b2c7440831004eecc02d333533c5e58ef0aa5f2dce071d3b25fbb8c8ea97b45df96c74bcc1d51c8c2027eb981931107b0cd languageName: node linkType: hard "clsx@npm:^1.2.1": version: 1.2.1 resolution: "clsx@npm:1.2.1" - checksum: 34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 + checksum: 10c0/34dead8bee24f5e96f6e7937d711978380647e936a22e76380290e35486afd8634966ce300fc4b74a32f3762c7d4c0303f442c3e259f4ce02374eb0c82834f27 languageName: node linkType: hard "collapse-white-space@npm:^2.0.0": version: 2.1.0 resolution: "collapse-white-space@npm:2.1.0" - checksum: b2e2800f4ab261e62eb27a1fbe853378296e3a726d6695117ed033e82d61fb6abeae4ffc1465d5454499e237005de9cfc52c9562dc7ca4ac759b9a222ef14453 + checksum: 10c0/b2e2800f4ab261e62eb27a1fbe853378296e3a726d6695117ed033e82d61fb6abeae4ffc1465d5454499e237005de9cfc52c9562dc7ca4ac759b9a222ef14453 languageName: node linkType: hard @@ -4155,7 +4155,7 @@ __metadata: resolution: "color-convert@npm:1.9.3" dependencies: color-name: "npm:1.1.3" - checksum: 5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c languageName: node linkType: hard @@ -4164,21 +4164,21 @@ __metadata: resolution: "color-convert@npm:2.0.1" dependencies: color-name: "npm:~1.1.4" - checksum: 37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" - checksum: 566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 languageName: node linkType: hard "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" - checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard @@ -4187,77 +4187,77 @@ __metadata: resolution: "color-support@npm:1.1.3" bin: color-support: bin.js - checksum: 8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 + checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 languageName: node linkType: hard "colord@npm:^2.9.1": version: 2.9.2 resolution: "colord@npm:2.9.2" - checksum: ff2de0fa956526abfc6d08ddb5696b09659fac26dc40917e7eed006689cc5181447fad819ccef3b8e73cbe1be056074b1422a2a84831515678022cbc49cc699c + checksum: 10c0/ff2de0fa956526abfc6d08ddb5696b09659fac26dc40917e7eed006689cc5181447fad819ccef3b8e73cbe1be056074b1422a2a84831515678022cbc49cc699c languageName: node linkType: hard "colorette@npm:^2.0.10": version: 2.0.16 resolution: "colorette@npm:2.0.16" - checksum: 7430bd996545347f262ae9716bfc8ca3776606e9db854279082004f3141b15a64ad2ee0e4f10cacba5a07cc92ca3edc2d01cbe73fd2843ccd80e98d0e3a8e79b + checksum: 10c0/7430bd996545347f262ae9716bfc8ca3776606e9db854279082004f3141b15a64ad2ee0e4f10cacba5a07cc92ca3edc2d01cbe73fd2843ccd80e98d0e3a8e79b languageName: node linkType: hard "combine-promises@npm:^1.1.0": version: 1.1.0 resolution: "combine-promises@npm:1.1.0" - checksum: 67f2a0383d5836d59ad12bab1a08462e4b8de1127e3a16c58612978eb0265d39ffd4ec6dce520566b4535f523a8af458117bee3556ab6f645d130cfd1a7e30e2 + checksum: 10c0/67f2a0383d5836d59ad12bab1a08462e4b8de1127e3a16c58612978eb0265d39ffd4ec6dce520566b4535f523a8af458117bee3556ab6f645d130cfd1a7e30e2 languageName: node linkType: hard "comma-separated-tokens@npm:^2.0.0": version: 2.0.3 resolution: "comma-separated-tokens@npm:2.0.3" - checksum: 91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 + checksum: 10c0/91f90f1aae320f1755d6957ef0b864fe4f54737f3313bd95e0802686ee2ca38bff1dd381964d00ae5db42912dd1f4ae5c2709644e82706ffc6f6842a813cdd67 languageName: node linkType: hard "commander@npm:^10.0.0": version: 10.0.1 resolution: "commander@npm:10.0.1" - checksum: 53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 languageName: node linkType: hard "commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" - checksum: 74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 languageName: node linkType: hard "commander@npm:^5.1.0": version: 5.1.0 resolution: "commander@npm:5.1.0" - checksum: da9d71dbe4ce039faf1fe9eac3771dca8c11d66963341f62602f7b66e36d2a3f8883407af4f9a37b1db1a55c59c0c1325f186425764c2e963dc1d67aec2a4b6d + checksum: 10c0/da9d71dbe4ce039faf1fe9eac3771dca8c11d66963341f62602f7b66e36d2a3f8883407af4f9a37b1db1a55c59c0c1325f186425764c2e963dc1d67aec2a4b6d languageName: node linkType: hard "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" - checksum: 8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a languageName: node linkType: hard "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" - checksum: 8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 + checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 languageName: node linkType: hard "common-path-prefix@npm:^3.0.0": version: 3.0.0 resolution: "common-path-prefix@npm:3.0.0" - checksum: c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb + checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb languageName: node linkType: hard @@ -4266,7 +4266,7 @@ __metadata: resolution: "compressible@npm:2.0.18" dependencies: mime-db: "npm:>= 1.43.0 < 2" - checksum: 8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 + checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 languageName: node linkType: hard @@ -4281,14 +4281,14 @@ __metadata: on-headers: "npm:~1.0.2" safe-buffer: "npm:5.1.2" vary: "npm:~1.1.2" - checksum: 138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" - checksum: c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f languageName: node linkType: hard @@ -4298,7 +4298,7 @@ __metadata: dependencies: ini: "npm:^1.3.4" proto-list: "npm:~1.2.1" - checksum: 39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e + checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e languageName: node linkType: hard @@ -4311,35 +4311,35 @@ __metadata: unique-string: "npm:^3.0.0" write-file-atomic: "npm:^3.0.3" xdg-basedir: "npm:^5.0.1" - checksum: 6681a96038ab3e0397cbdf55e6e1624ac3dfa3afe955e219f683df060188a418bda043c9114a59a337e7aec9562b0a0c838ed7db24289e6d0c266bc8313b9580 + checksum: 10c0/6681a96038ab3e0397cbdf55e6e1624ac3dfa3afe955e219f683df060188a418bda043c9114a59a337e7aec9562b0a0c838ed7db24289e6d0c266bc8313b9580 languageName: node linkType: hard "connect-history-api-fallback@npm:^2.0.0": version: 2.0.0 resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: 90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 languageName: node linkType: hard "consola@npm:^2.15.3": version: 2.15.3 resolution: "consola@npm:2.15.3" - checksum: 34a337e6b4a1349ee4d7b4c568484344418da8fdb829d7d71bfefcd724f608f273987633b6eef465e8de510929907a092e13cb7a28a5d3acb3be446fcc79fd5e + checksum: 10c0/34a337e6b4a1349ee4d7b4c568484344418da8fdb829d7d71bfefcd724f608f273987633b6eef465e8de510929907a092e13cb7a28a5d3acb3be446fcc79fd5e languageName: node linkType: hard "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" - checksum: 7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 + checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 languageName: node linkType: hard "content-disposition@npm:0.5.2": version: 0.5.2 resolution: "content-disposition@npm:0.5.2" - checksum: 49eebaa0da1f9609b192e99d7fec31d1178cb57baa9d01f5b63b29787ac31e9d18b5a1033e854c68c9b6cce790e700a6f7fa60e43f95e2e416404e114a8f2f49 + checksum: 10c0/49eebaa0da1f9609b192e99d7fec31d1178cb57baa9d01f5b63b29787ac31e9d18b5a1033e854c68c9b6cce790e700a6f7fa60e43f95e2e416404e114a8f2f49 languageName: node linkType: hard @@ -4348,42 +4348,42 @@ __metadata: resolution: "content-disposition@npm:0.5.4" dependencies: safe-buffer: "npm:5.2.1" - checksum: bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb languageName: node linkType: hard "content-type@npm:~1.0.4": version: 1.0.4 resolution: "content-type@npm:1.0.4" - checksum: 19e08f406f9ae3f80fb4607c75fbde1f22546647877e8047c9fa0b1c61e38f3ede853f51e915c95fd499c2e1c7478cb23c35cfb804d0e8e0495e8db88cfaed75 + checksum: 10c0/19e08f406f9ae3f80fb4607c75fbde1f22546647877e8047c9fa0b1c61e38f3ede853f51e915c95fd499c2e1c7478cb23c35cfb804d0e8e0495e8db88cfaed75 languageName: node linkType: hard "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" - checksum: 8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b languageName: node linkType: hard "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" - checksum: b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 languageName: node linkType: hard "cookie@npm:0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" - checksum: c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d + checksum: 10c0/c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d languageName: node linkType: hard "copy-text-to-clipboard@npm:^3.2.0": version: 3.2.0 resolution: "copy-text-to-clipboard@npm:3.2.0" - checksum: d60fdadc59d526e19d56ad23cec2b292d33c771a5091621bd322d138804edd3c10eb2367d46ec71b39f5f7f7116a2910b332281aeb36a5b679199d746a8a5381 + checksum: 10c0/d60fdadc59d526e19d56ad23cec2b292d33c771a5091621bd322d138804edd3c10eb2367d46ec71b39f5f7f7116a2910b332281aeb36a5b679199d746a8a5381 languageName: node linkType: hard @@ -4399,7 +4399,7 @@ __metadata: serialize-javascript: "npm:^6.0.0" peerDependencies: webpack: ^5.1.0 - checksum: a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 + checksum: 10c0/a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 languageName: node linkType: hard @@ -4408,28 +4408,28 @@ __metadata: resolution: "core-js-compat@npm:3.33.2" dependencies: browserslist: "npm:^4.22.1" - checksum: bcf6f0badffbbf4a127449f64720c33e9c960f204f072d9644954b30d7742e18de733e9f446c7093f1ccf5d9e101205a7c64747a5aeec7d3925f336322f85a03 + checksum: 10c0/bcf6f0badffbbf4a127449f64720c33e9c960f204f072d9644954b30d7742e18de733e9f446c7093f1ccf5d9e101205a7c64747a5aeec7d3925f336322f85a03 languageName: node linkType: hard "core-js-pure@npm:^3.30.2": version: 3.33.2 resolution: "core-js-pure@npm:3.33.2" - checksum: 9de1cc6e64371c1b48d547a75840472a2c39277dbe3dd74adc4c172f05f078218ce69e42e30f663d26a94a181e761325141028c2c0a1d452c8e4a383befa2e25 + checksum: 10c0/9de1cc6e64371c1b48d547a75840472a2c39277dbe3dd74adc4c172f05f078218ce69e42e30f663d26a94a181e761325141028c2c0a1d452c8e4a383befa2e25 languageName: node linkType: hard "core-js@npm:^3.31.1": version: 3.33.2 resolution: "core-js@npm:3.33.2" - checksum: d6a56ad3e134846c805ce936788dd58cb51e861f173ed1f830979735d7865ea6f6a5a437076c36c8d8b842ba0384d052998f160774a8da7712f0f51df60167fe + checksum: 10c0/d6a56ad3e134846c805ce936788dd58cb51e861f173ed1f830979735d7865ea6f6a5a437076c36c8d8b842ba0384d052998f160774a8da7712f0f51df60167fe languageName: node linkType: hard "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" - checksum: 90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 languageName: node linkType: hard @@ -4442,7 +4442,7 @@ __metadata: parse-json: "npm:^5.0.0" path-type: "npm:^4.0.0" yaml: "npm:^1.7.2" - checksum: 666ed8732d0bf7d7fe6f8516c8ee6041e0622032e8fa26201577b883d2767ad105d03f38b34b93d1f02f26b22a89e7bab4443b9d2e7f931f48d0e944ffa038b5 + checksum: 10c0/666ed8732d0bf7d7fe6f8516c8ee6041e0622032e8fa26201577b883d2767ad105d03f38b34b93d1f02f26b22a89e7bab4443b9d2e7f931f48d0e944ffa038b5 languageName: node linkType: hard @@ -4455,7 +4455,7 @@ __metadata: parse-json: "npm:^5.0.0" path-type: "npm:^4.0.0" yaml: "npm:^1.10.0" - checksum: 3cd38525ba22e13da0ef9f4be131df226c94f5b96fb50f6297eb17baeedefe15cf5819f8c73cde69f71cc5034e712c86bd20c7756883dd8094087680ecc25932 + checksum: 10c0/3cd38525ba22e13da0ef9f4be131df226c94f5b96fb50f6297eb17baeedefe15cf5819f8c73cde69f71cc5034e712c86bd20c7756883dd8094087680ecc25932 languageName: node linkType: hard @@ -4472,7 +4472,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a + checksum: 10c0/0382a9ed13208f8bfc22ca2f62b364855207dffdb73dc26e150ade78c3093f1cf56172df2dd460c8caf2afa91c0ed4ec8a88c62f8f9cd1cf423d26506aa8797a languageName: node linkType: hard @@ -4483,7 +4483,7 @@ __metadata: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 languageName: node linkType: hard @@ -4492,7 +4492,7 @@ __metadata: resolution: "crypto-random-string@npm:4.0.0" dependencies: type-fest: "npm:^1.0.1" - checksum: 16e11a3c8140398f5408b7fded35a961b9423c5dac39a60cbbd08bd3f0e07d7de130e87262adea7db03ec1a7a4b7551054e0db07ee5408b012bac5400cfc07a5 + checksum: 10c0/16e11a3c8140398f5408b7fded35a961b9423c5dac39a60cbbd08bd3f0e07d7de130e87262adea7db03ec1a7a4b7551054e0db07ee5408b012bac5400cfc07a5 languageName: node linkType: hard @@ -4501,7 +4501,7 @@ __metadata: resolution: "css-declaration-sorter@npm:6.4.1" peerDependencies: postcss: ^8.0.9 - checksum: b8b664338dac528266a1ed9b27927ac51a907fb16bc1954fa9038b5286c442603bd494cc920c6a3616111309d18ee6b5a85b6d9927938efc942af452a5145160 + checksum: 10c0/b8b664338dac528266a1ed9b27927ac51a907fb16bc1954fa9038b5286c442603bd494cc920c6a3616111309d18ee6b5a85b6d9927938efc942af452a5145160 languageName: node linkType: hard @@ -4519,7 +4519,7 @@ __metadata: semver: "npm:^7.3.8" peerDependencies: webpack: ^5.0.0 - checksum: a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 + checksum: 10c0/a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 languageName: node linkType: hard @@ -4548,7 +4548,7 @@ __metadata: optional: true lightningcss: optional: true - checksum: 05cd1460b83d9a5f8878fd63d3a80fd100cbb10f48e295a6ad52519761f3390e1e1bc0e269ff28d15b062a1b11379e04608d50ee30424e177c281bd845fef9fb + checksum: 10c0/05cd1460b83d9a5f8878fd63d3a80fd100cbb10f48e295a6ad52519761f3390e1e1bc0e269ff28d15b062a1b11379e04608d50ee30424e177c281bd845fef9fb languageName: node linkType: hard @@ -4561,7 +4561,7 @@ __metadata: domhandler: "npm:^4.3.0" domutils: "npm:^2.8.0" nth-check: "npm:^2.0.1" - checksum: 4d9b1f3b3df9785daaac0a87ebd196b8c0a046252fdc2f6f879bf25c648c5cf2b13f4b039326f7f74362314f53ec499f555a418dbf4917a9e2311b27a8ae37f5 + checksum: 10c0/4d9b1f3b3df9785daaac0a87ebd196b8c0a046252fdc2f6f879bf25c648c5cf2b13f4b039326f7f74362314f53ec499f555a418dbf4917a9e2311b27a8ae37f5 languageName: node linkType: hard @@ -4574,7 +4574,7 @@ __metadata: domhandler: "npm:^5.0.2" domutils: "npm:^3.0.1" nth-check: "npm:^2.0.1" - checksum: 551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 + checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 languageName: node linkType: hard @@ -4584,21 +4584,21 @@ __metadata: dependencies: mdn-data: "npm:2.0.14" source-map: "npm:^0.6.1" - checksum: 499a507bfa39b8b2128f49736882c0dd636b0cd3370f2c69f4558ec86d269113286b7df469afc955de6a68b0dba00bc533e40022a73698081d600072d5d83c1c + checksum: 10c0/499a507bfa39b8b2128f49736882c0dd636b0cd3370f2c69f4558ec86d269113286b7df469afc955de6a68b0dba00bc533e40022a73698081d600072d5d83c1c languageName: node linkType: hard "css-what@npm:^5.1.0": version: 5.1.0 resolution: "css-what@npm:5.1.0" - checksum: e6e4eacc9aa8773b4150af23b13c84e349adb697ef7e222e71bd03d3792b3562ea8d0ad579cc56c6cea37a7541e80547d292ea150ccaa8719b969f63d459fb34 + checksum: 10c0/e6e4eacc9aa8773b4150af23b13c84e349adb697ef7e222e71bd03d3792b3562ea8d0ad579cc56c6cea37a7541e80547d292ea150ccaa8719b969f63d459fb34 languageName: node linkType: hard "css-what@npm:^6.1.0": version: 6.1.0 resolution: "css-what@npm:6.1.0" - checksum: a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 languageName: node linkType: hard @@ -4607,7 +4607,7 @@ __metadata: resolution: "cssesc@npm:3.0.0" bin: cssesc: bin/cssesc - checksum: 6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 languageName: node linkType: hard @@ -4623,7 +4623,7 @@ __metadata: postcss-zindex: "npm:^5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: abfa870a6e3ab52cddfea7cac83f49b510efb941c7f2960ca9d41ae11fabbe03e9453cad7f81fd1b35cf6080c94094cd7bb1b58c07fad4cf0453f6e4bb9a07ae + checksum: 10c0/abfa870a6e3ab52cddfea7cac83f49b510efb941c7f2960ca9d41ae11fabbe03e9453cad7f81fd1b35cf6080c94094cd7bb1b58c07fad4cf0453f6e4bb9a07ae languageName: node linkType: hard @@ -4662,7 +4662,7 @@ __metadata: postcss-unique-selectors: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: d125bdb9ac007f97f920e30be953c550a8e7de0cb9298f67e0bc9744f4b920039046b5a6b817e345872836b08689af747f82fbf2189c8bd48da3e6f0c1087b89 + checksum: 10c0/d125bdb9ac007f97f920e30be953c550a8e7de0cb9298f67e0bc9744f4b920039046b5a6b817e345872836b08689af747f82fbf2189c8bd48da3e6f0c1087b89 languageName: node linkType: hard @@ -4671,7 +4671,7 @@ __metadata: resolution: "cssnano-utils@npm:3.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 057508645a3e7584decede1045daa5b362dbfa2f5df96c3527c7d52e41e787a3442a56a8ea0c0af6a757f518e79a459ee580a35c323ad0d0eec912afd67d7630 + checksum: 10c0/057508645a3e7584decede1045daa5b362dbfa2f5df96c3527c7d52e41e787a3442a56a8ea0c0af6a757f518e79a459ee580a35c323ad0d0eec912afd67d7630 languageName: node linkType: hard @@ -4684,7 +4684,7 @@ __metadata: yaml: "npm:^1.10.2" peerDependencies: postcss: ^8.2.15 - checksum: 4252e4f4edd7a0fbdd4017825c0f8632b7a12ecbfdd432d2ff7ec268d48eb956a0a10bbf209602181f9f84ceeecea4a864719ecde03aa2cc48f5d9636fcf5f9a + checksum: 10c0/4252e4f4edd7a0fbdd4017825c0f8632b7a12ecbfdd432d2ff7ec268d48eb956a0a10bbf209602181f9f84ceeecea4a864719ecde03aa2cc48f5d9636fcf5f9a languageName: node linkType: hard @@ -4693,14 +4693,14 @@ __metadata: resolution: "csso@npm:4.2.0" dependencies: css-tree: "npm:^1.1.2" - checksum: f8c6b1300efaa0f8855a7905ae3794a29c6496e7f16a71dec31eb6ca7cfb1f058a4b03fd39b66c4deac6cb06bf6b4ba86da7b67d7320389cb9994d52b924b903 + checksum: 10c0/f8c6b1300efaa0f8855a7905ae3794a29c6496e7f16a71dec31eb6ca7cfb1f058a4b03fd39b66c4deac6cb06bf6b4ba86da7b67d7320389cb9994d52b924b903 languageName: node linkType: hard "csstype@npm:^3.0.2": version: 3.0.11 resolution: "csstype@npm:3.0.11" - checksum: 20a89e20978ce0a9e0e400582fcd4e6ca95fe11a07b2941695218704e51b428558c3016df8c9e4a9e2d7626ec8e0f7cc10126d67b32fc770d4daf7fae9c81b62 + checksum: 10c0/20a89e20978ce0a9e0e400582fcd4e6ca95fe11a07b2941695218704e51b428558c3016df8c9e4a9e2d7626ec8e0f7cc10126d67b32fc770d4daf7fae9c81b62 languageName: node linkType: hard @@ -4709,7 +4709,7 @@ __metadata: resolution: "debug@npm:2.6.9" dependencies: ms: "npm:2.0.0" - checksum: 121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 languageName: node linkType: hard @@ -4721,7 +4721,7 @@ __metadata: peerDependenciesMeta: supports-color: optional: true - checksum: cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 languageName: node linkType: hard @@ -4730,7 +4730,7 @@ __metadata: resolution: "decode-named-character-reference@npm:1.0.2" dependencies: character-entities: "npm:^2.0.0" - checksum: 66a9fc5d9b5385a2b3675c69ba0d8e893393d64057f7dbbb585265bb4fc05ec513d76943b8e5aac7d8016d20eea4499322cbf4cd6d54b466976b78f3a7587a4c + checksum: 10c0/66a9fc5d9b5385a2b3675c69ba0d8e893393d64057f7dbbb585265bb4fc05ec513d76943b8e5aac7d8016d20eea4499322cbf4cd6d54b466976b78f3a7587a4c languageName: node linkType: hard @@ -4739,21 +4739,21 @@ __metadata: resolution: "decompress-response@npm:6.0.0" dependencies: mimic-response: "npm:^3.1.0" - checksum: bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e + checksum: 10c0/bd89d23141b96d80577e70c54fb226b2f40e74a6817652b80a116d7befb8758261ad073a8895648a29cc0a5947021ab66705cb542fa9c143c82022b27c5b175e languageName: node linkType: hard "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" - checksum: 1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 languageName: node linkType: hard "deepmerge@npm:^4.0.0, deepmerge@npm:^4.2.2": version: 4.2.2 resolution: "deepmerge@npm:4.2.2" - checksum: d6136eee869057fea7a829aa2d10073ed49db5216e42a77cc737dd385334aab9b68dae22020a00c24c073d5f79cbbdd3f11b8d4fc87700d112ddaa0e1f968ef2 + checksum: 10c0/d6136eee869057fea7a829aa2d10073ed49db5216e42a77cc737dd385334aab9b68dae22020a00c24c073d5f79cbbdd3f11b8d4fc87700d112ddaa0e1f968ef2 languageName: node linkType: hard @@ -4762,21 +4762,21 @@ __metadata: resolution: "default-gateway@npm:6.0.3" dependencies: execa: "npm:^5.0.0" - checksum: 5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba + checksum: 10c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba languageName: node linkType: hard "defer-to-connect@npm:^2.0.1": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" - checksum: 625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 + checksum: 10c0/625ce28e1b5ad10cf77057b9a6a727bf84780c17660f6644dab61dd34c23de3001f03cedc401f7d30a4ed9965c2e8a7336e220a329146f2cf85d4eddea429782 languageName: node linkType: hard "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" - checksum: db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 languageName: node linkType: hard @@ -4785,7 +4785,7 @@ __metadata: resolution: "define-properties@npm:1.1.3" dependencies: object-keys: "npm:^1.0.12" - checksum: a2fa03d97ee44bb7c679bac7c3b3e63431a2efd83c12c0d61c7f5adf4fa1cf0a669c77afd274babbc5400926bdc2befb25679e4bf687140b078c0fe14f782e4f + checksum: 10c0/a2fa03d97ee44bb7c679bac7c3b3e63431a2efd83c12c0d61c7f5adf4fa1cf0a669c77afd274babbc5400926bdc2befb25679e4bf687140b078c0fe14f782e4f languageName: node linkType: hard @@ -4801,49 +4801,49 @@ __metadata: p-map: "npm:^4.0.0" rimraf: "npm:^3.0.2" slash: "npm:^3.0.0" - checksum: 8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f + checksum: 10c0/8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f languageName: node linkType: hard "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" - checksum: ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 languageName: node linkType: hard "depd@npm:2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" - checksum: 58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c languageName: node linkType: hard "depd@npm:^1.1.2, depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" - checksum: acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 languageName: node linkType: hard "dequal@npm:^2.0.0": version: 2.0.3 resolution: "dequal@npm:2.0.3" - checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 languageName: node linkType: hard "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" - checksum: bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 languageName: node linkType: hard "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" - checksum: f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 languageName: node linkType: hard @@ -4856,7 +4856,7 @@ __metadata: bin: detect: ./bin/detect-port detect-port: ./bin/detect-port - checksum: 7269e6aef7b782d98c77505c07a7a0f5e2ee98a9607dc791035fc0192fc58aa03cc833fae605e10eaf239a2a5a55cd938e0bb141dea764ac6180ca082fd62b23 + checksum: 10c0/7269e6aef7b782d98c77505c07a7a0f5e2ee98a9607dc791035fc0192fc58aa03cc833fae605e10eaf239a2a5a55cd938e0bb141dea764ac6180ca082fd62b23 languageName: node linkType: hard @@ -4869,7 +4869,7 @@ __metadata: bin: detect: bin/detect-port.js detect-port: bin/detect-port.js - checksum: f2b204ad3a9f8e8b53fea35fcc97469f31a8e3e786a2f59fbc886397e33b5f130c5f964bf001b9a64d990047c3824f6a439308461ff19801df04ab48a754639e + checksum: 10c0/f2b204ad3a9f8e8b53fea35fcc97469f31a8e3e786a2f59fbc886397e33b5f130c5f964bf001b9a64d990047c3824f6a439308461ff19801df04ab48a754639e languageName: node linkType: hard @@ -4878,7 +4878,7 @@ __metadata: resolution: "devlop@npm:1.1.0" dependencies: dequal: "npm:^2.0.0" - checksum: e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e + checksum: 10c0/e0928ab8f94c59417a2b8389c45c55ce0a02d9ac7fd74ef62d01ba48060129e1d594501b77de01f3eeafc7cb00773819b0df74d96251cf20b31c5b3071f45c0e languageName: node linkType: hard @@ -4887,14 +4887,14 @@ __metadata: resolution: "dir-glob@npm:3.0.1" dependencies: path-type: "npm:^4.0.0" - checksum: dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c languageName: node linkType: hard "dns-equal@npm:^1.0.0": version: 1.0.0 resolution: "dns-equal@npm:1.0.0" - checksum: da966e5275ac50546e108af6bc29aaae2164d2ae96d60601b333c4a3aff91f50b6ca14929cf91f20a9cad1587b356323e300cea3ff6588a6a816988485f445f1 + checksum: 10c0/da966e5275ac50546e108af6bc29aaae2164d2ae96d60601b333c4a3aff91f50b6ca14929cf91f20a9cad1587b356323e300cea3ff6588a6a816988485f445f1 languageName: node linkType: hard @@ -4903,7 +4903,7 @@ __metadata: resolution: "dns-packet@npm:5.4.0" dependencies: "@leichtgewicht/ip-codec": "npm:^2.0.1" - checksum: bd5ecfd7d8b9cacd4d0029819699051c4e231d8fa6ed96e1573f7fee4b9147c3406207a260adbd7fb5c6d08a7db7641836467f450fa88e2ec5075f482e39ed77 + checksum: 10c0/bd5ecfd7d8b9cacd4d0029819699051c4e231d8fa6ed96e1573f7fee4b9147c3406207a260adbd7fb5c6d08a7db7641836467f450fa88e2ec5075f482e39ed77 languageName: node linkType: hard @@ -4932,7 +4932,7 @@ __metadata: resolution: "dom-converter@npm:0.2.0" dependencies: utila: "npm:~0.4" - checksum: e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 + checksum: 10c0/e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 languageName: node linkType: hard @@ -4943,7 +4943,7 @@ __metadata: domelementtype: "npm:^2.0.1" domhandler: "npm:^4.2.0" entities: "npm:^2.0.0" - checksum: 0a39ff0634da807b0e7b4e28d20305658e366d920050296ea6a306c29eb4094a1bf942a72ec2e51145f01efcff93e98eaa1eef4c299ca398e326a2e1c4641220 + checksum: 10c0/0a39ff0634da807b0e7b4e28d20305658e366d920050296ea6a306c29eb4094a1bf942a72ec2e51145f01efcff93e98eaa1eef4c299ca398e326a2e1c4641220 languageName: node linkType: hard @@ -4954,14 +4954,14 @@ __metadata: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.2" entities: "npm:^4.2.0" - checksum: d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 + checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 languageName: node linkType: hard "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" - checksum: 686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 languageName: node linkType: hard @@ -4970,7 +4970,7 @@ __metadata: resolution: "domhandler@npm:4.3.0" dependencies: domelementtype: "npm:^2.2.0" - checksum: c3de81c50d8e017dcfc404914ca29d30b4c646536ab52f133134ddc64b9e9987d9f11602c5beb08b435ec95cf5543f2d300daa56e9841e4c73c3f4f69f269c19 + checksum: 10c0/c3de81c50d8e017dcfc404914ca29d30b4c646536ab52f133134ddc64b9e9987d9f11602c5beb08b435ec95cf5543f2d300daa56e9841e4c73c3f4f69f269c19 languageName: node linkType: hard @@ -4979,7 +4979,7 @@ __metadata: resolution: "domhandler@npm:5.0.3" dependencies: domelementtype: "npm:^2.3.0" - checksum: bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a + checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a languageName: node linkType: hard @@ -4990,7 +4990,7 @@ __metadata: dom-serializer: "npm:^1.0.1" domelementtype: "npm:^2.2.0" domhandler: "npm:^4.2.0" - checksum: d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db + checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db languageName: node linkType: hard @@ -5001,7 +5001,7 @@ __metadata: dom-serializer: "npm:^2.0.0" domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.1" - checksum: 8ec14e7e54f58cae0062fa9aaf97c05a094733ff6df8ede588c57d96799ceb45d1ea46479e8dd285f43af43b3e7618a501b2b41d2c2080078d5947b5fee2b5f9 + checksum: 10c0/8ec14e7e54f58cae0062fa9aaf97c05a094733ff6df8ede588c57d96799ceb45d1ea46479e8dd285f43af43b3e7618a501b2b41d2c2080078d5947b5fee2b5f9 languageName: node linkType: hard @@ -5011,7 +5011,7 @@ __metadata: dependencies: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 languageName: node linkType: hard @@ -5020,77 +5020,77 @@ __metadata: resolution: "dot-prop@npm:6.0.1" dependencies: is-obj: "npm:^2.0.0" - checksum: 30e51ec6408978a6951b21e7bc4938aad01a86f2fdf779efe52330205c6bb8a8ea12f35925c2029d6dc9d1df22f916f32f828ce1e9b259b1371c580541c22b5a + checksum: 10c0/30e51ec6408978a6951b21e7bc4938aad01a86f2fdf779efe52330205c6bb8a8ea12f35925c2029d6dc9d1df22f916f32f828ce1e9b259b1371c580541c22b5a languageName: node linkType: hard "duplexer@npm:^0.1.2": version: 0.1.2 resolution: "duplexer@npm:0.1.2" - checksum: c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 languageName: node linkType: hard "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" - checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 languageName: node linkType: hard "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" - checksum: b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 languageName: node linkType: hard "electron-to-chromium@npm:^1.4.535": version: 1.4.576 resolution: "electron-to-chromium@npm:1.4.576" - checksum: b0b9e7ba803bf93ffac9cb830ed2b0e0eb07f20066127065f9ab9e08e4e6a5812040e03d76f6ee9bc59e03fb938fd414e83d4883b29111303e9e88633cf2dce4 + checksum: 10c0/b0b9e7ba803bf93ffac9cb830ed2b0e0eb07f20066127065f9ab9e08e4e6a5812040e03d76f6ee9bc59e03fb938fd414e83d4883b29111303e9e88633cf2dce4 languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" - checksum: b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 resolution: "emoji-regex@npm:9.2.2" - checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 languageName: node linkType: hard "emojilib@npm:^2.4.0": version: 2.4.0 resolution: "emojilib@npm:2.4.0" - checksum: 6e66ba8921175842193f974e18af448bb6adb0cf7aeea75e08b9d4ea8e9baba0e4a5347b46ed901491dcaba277485891c33a8d70b0560ca5cc9672a94c21ab8f + checksum: 10c0/6e66ba8921175842193f974e18af448bb6adb0cf7aeea75e08b9d4ea8e9baba0e4a5347b46ed901491dcaba277485891c33a8d70b0560ca5cc9672a94c21ab8f languageName: node linkType: hard "emojis-list@npm:^3.0.0": version: 3.0.0 resolution: "emojis-list@npm:3.0.0" - checksum: 7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b languageName: node linkType: hard "emoticon@npm:^4.0.1": version: 4.0.1 resolution: "emoticon@npm:4.0.1" - checksum: 2f13c01e1f9892a6826e017d172a95b8e93c9f3dbf9e140e76163d981cb91ae4a848e49c0d4b6904121873541af07575793d222a6ecbdc491ebb3f9d123a4c73 + checksum: 10c0/2f13c01e1f9892a6826e017d172a95b8e93c9f3dbf9e140e76163d981cb91ae4a848e49c0d4b6904121873541af07575793d222a6ecbdc491ebb3f9d123a4c73 languageName: node linkType: hard "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" - checksum: f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec languageName: node linkType: hard @@ -5099,7 +5099,7 @@ __metadata: resolution: "encoding@npm:0.1.13" dependencies: iconv-lite: "npm:^0.6.2" - checksum: 36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 languageName: node linkType: hard @@ -5109,35 +5109,35 @@ __metadata: dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a + checksum: 10c0/69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a languageName: node linkType: hard "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" - checksum: 7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 languageName: node linkType: hard "entities@npm:^4.2.0, entities@npm:^4.3.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" - checksum: 5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" - checksum: 285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" - checksum: b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 languageName: node linkType: hard @@ -5146,56 +5146,56 @@ __metadata: resolution: "error-ex@npm:1.3.2" dependencies: is-arrayish: "npm:^0.2.1" - checksum: ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce languageName: node linkType: hard "es-module-lexer@npm:^1.2.1": version: 1.3.1 resolution: "es-module-lexer@npm:1.3.1" - checksum: 4c40e30a07c62bb6b265d4db27fb5157aec33edc9f75be06449da65e92870264fa087b6d00066a6823ad2e9d135d0f663c16b87c96b5bd30caf2878afc39f7bf + checksum: 10c0/4c40e30a07c62bb6b265d4db27fb5157aec33edc9f75be06449da65e92870264fa087b6d00066a6823ad2e9d135d0f663c16b87c96b5bd30caf2878afc39f7bf languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" - checksum: afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d + checksum: 10c0/afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d languageName: node linkType: hard "escape-goat@npm:^4.0.0": version: 4.0.0 resolution: "escape-goat@npm:4.0.0" - checksum: 9d2a8314e2370f2dd9436d177f6b3b1773525df8f895c8f3e1acb716f5fd6b10b336cb1cd9862d4709b36eb207dbe33664838deca9c6d55b8371be4eebb972f6 + checksum: 10c0/9d2a8314e2370f2dd9436d177f6b3b1773525df8f895c8f3e1acb716f5fd6b10b336cb1cd9862d4709b36eb207dbe33664838deca9c6d55b8371be4eebb972f6 languageName: node linkType: hard "escape-html@npm:^1.0.3, escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" - checksum: 524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 languageName: node linkType: hard "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" - checksum: a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" - checksum: 9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 languageName: node linkType: hard "escape-string-regexp@npm:^5.0.0": version: 5.0.0 resolution: "escape-string-regexp@npm:5.0.0" - checksum: 6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95 + checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95 languageName: node linkType: hard @@ -5205,7 +5205,7 @@ __metadata: dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^4.1.1" - checksum: d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a languageName: node linkType: hard @@ -5215,7 +5215,7 @@ __metadata: bin: esparse: ./bin/esparse.js esvalidate: ./bin/esvalidate.js - checksum: ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 languageName: node linkType: hard @@ -5224,21 +5224,21 @@ __metadata: resolution: "esrecurse@npm:4.3.0" dependencies: estraverse: "npm:^5.2.0" - checksum: 81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 languageName: node linkType: hard "estraverse@npm:^4.1.1": version: 4.3.0 resolution: "estraverse@npm:4.3.0" - checksum: 9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d languageName: node linkType: hard "estraverse@npm:^5.2.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" - checksum: 1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 languageName: node linkType: hard @@ -5247,7 +5247,7 @@ __metadata: resolution: "estree-util-attach-comments@npm:3.0.0" dependencies: "@types/estree": "npm:^1.0.0" - checksum: ee69bb5c45e2ad074725b90ed181c1c934b29d81bce4b0c7761431e83c4c6ab1b223a6a3d6a4fbeb92128bc5d5ee201d5dd36cf1770aa5e16a40b0cf36e8a1f1 + checksum: 10c0/ee69bb5c45e2ad074725b90ed181c1c934b29d81bce4b0c7761431e83c4c6ab1b223a6a3d6a4fbeb92128bc5d5ee201d5dd36cf1770aa5e16a40b0cf36e8a1f1 languageName: node linkType: hard @@ -5259,14 +5259,14 @@ __metadata: devlop: "npm:^1.0.0" estree-util-is-identifier-name: "npm:^3.0.0" estree-walker: "npm:^3.0.0" - checksum: 274c119817b8e7caa14a9778f1e497fea56cdd2b01df1a1ed037f843178992d3afe85e0d364d485e1e2e239255763553d1b647b15e4a7ba50851bcb43dc6bf80 + checksum: 10c0/274c119817b8e7caa14a9778f1e497fea56cdd2b01df1a1ed037f843178992d3afe85e0d364d485e1e2e239255763553d1b647b15e4a7ba50851bcb43dc6bf80 languageName: node linkType: hard "estree-util-is-identifier-name@npm:^3.0.0": version: 3.0.0 resolution: "estree-util-is-identifier-name@npm:3.0.0" - checksum: d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b + checksum: 10c0/d1881c6ed14bd588ebd508fc90bf2a541811dbb9ca04dec2f39d27dcaa635f85b5ed9bbbe7fc6fb1ddfca68744a5f7c70456b4b7108b6c4c52780631cc787c5b languageName: node linkType: hard @@ -5277,7 +5277,7 @@ __metadata: "@types/estree-jsx": "npm:^1.0.0" astring: "npm:^1.8.0" source-map: "npm:^0.7.0" - checksum: ac88cb831401ef99e365f92f4af903755d56ae1ce0e0f0fb8ff66e678141f3d529194f0fb15f6c78cd7554c16fda36854df851d58f9e05cfab15bddf7a97cea0 + checksum: 10c0/ac88cb831401ef99e365f92f4af903755d56ae1ce0e0f0fb8ff66e678141f3d529194f0fb15f6c78cd7554c16fda36854df851d58f9e05cfab15bddf7a97cea0 languageName: node linkType: hard @@ -5287,7 +5287,7 @@ __metadata: dependencies: "@types/estree": "npm:^1.0.0" is-plain-obj: "npm:^4.0.0" - checksum: 3b32154b783fb18582d41147793f4f8262cc00846c2264cddec8b5e2a2653218dd863fe55d1832daed2fb1d1b33ba2cfeeb880a2f50b59f8b86b45692038ff09 + checksum: 10c0/3b32154b783fb18582d41147793f4f8262cc00846c2264cddec8b5e2a2653218dd863fe55d1832daed2fb1d1b33ba2cfeeb880a2f50b59f8b86b45692038ff09 languageName: node linkType: hard @@ -5297,7 +5297,7 @@ __metadata: dependencies: "@types/estree-jsx": "npm:^1.0.0" "@types/unist": "npm:^3.0.0" - checksum: acda8b03cc8f890d79c7c7361f6c95331ba84b7ccc0c32b49f447fc30206b20002b37ffdfc97b6ad16e6fe065c63ecbae1622492e2b6b4775c15966606217f39 + checksum: 10c0/acda8b03cc8f890d79c7c7361f6c95331ba84b7ccc0c32b49f447fc30206b20002b37ffdfc97b6ad16e6fe065c63ecbae1622492e2b6b4775c15966606217f39 languageName: node linkType: hard @@ -5306,28 +5306,28 @@ __metadata: resolution: "estree-walker@npm:3.0.3" dependencies: "@types/estree": "npm:^1.0.0" - checksum: c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d languageName: node linkType: hard "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" - checksum: 9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 languageName: node linkType: hard "eta@npm:^2.2.0": version: 2.2.0 resolution: "eta@npm:2.2.0" - checksum: 643b54d9539d2761bf6c5f4f48df1a5ea2d46c7f5a5fdc47a7d4802a8aa2b6262d4d61f724452e226c18cf82db02d48e65293fcc548f26a3f9d75a5ba7c3b859 + checksum: 10c0/643b54d9539d2761bf6c5f4f48df1a5ea2d46c7f5a5fdc47a7d4802a8aa2b6262d4d61f724452e226c18cf82db02d48e65293fcc548f26a3f9d75a5ba7c3b859 languageName: node linkType: hard "etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" - checksum: 12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 languageName: node linkType: hard @@ -5337,21 +5337,21 @@ __metadata: dependencies: "@types/node": "npm:*" require-like: "npm:>= 0.1.1" - checksum: 258e700bff09e3ce3344273d5b6691b8ec5b043538d84f738f14d8b0aded33d64c00c15b380de725b1401b15f428ab35a9e7ca19a7d25f162c4f877c71586be9 + checksum: 10c0/258e700bff09e3ce3344273d5b6691b8ec5b043538d84f738f14d8b0aded33d64c00c15b380de725b1401b15f428ab35a9e7ca19a7d25f162c4f877c71586be9 languageName: node linkType: hard "eventemitter3@npm:^4.0.0": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" - checksum: 5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b languageName: node linkType: hard "events@npm:^3.2.0": version: 3.3.0 resolution: "events@npm:3.3.0" - checksum: d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 languageName: node linkType: hard @@ -5368,7 +5368,7 @@ __metadata: onetime: "npm:^5.1.2" signal-exit: "npm:^3.0.3" strip-final-newline: "npm:^2.0.0" - checksum: c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f languageName: node linkType: hard @@ -5407,7 +5407,7 @@ __metadata: type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: eeca44d91a73a8aa9101b36d1fb2dc7942d994a3ea471664daf35a42f2d498c3d43bb4e8541667d9b46d1773756d256bc5eed59632a1205773e40e468e60b6d3 + checksum: 10c0/eeca44d91a73a8aa9101b36d1fb2dc7942d994a3ea471664daf35a42f2d498c3d43bb4e8541667d9b46d1773756d256bc5eed59632a1205773e40e468e60b6d3 languageName: node linkType: hard @@ -5416,21 +5416,21 @@ __metadata: resolution: "extend-shallow@npm:2.0.1" dependencies: is-extendable: "npm:^0.1.0" - checksum: ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 + checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 languageName: node linkType: hard "extend@npm:^3.0.0": version: 3.0.2 resolution: "extend@npm:3.0.2" - checksum: 73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" - checksum: 40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 languageName: node linkType: hard @@ -5443,14 +5443,14 @@ __metadata: glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: f726d4d6545ae9ade242eba78ae418cd8beac6c9291cdc36fc6b3b4e54f04fa0ecde5767256f2a600d6e14dc49a841adb3aa4b5f3f0c06b35dd4f3954965443d + checksum: 10c0/f726d4d6545ae9ade242eba78ae418cd8beac6c9291cdc36fc6b3b4e54f04fa0ecde5767256f2a600d6e14dc49a841adb3aa4b5f3f0c06b35dd4f3954965443d languageName: node linkType: hard "fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b languageName: node linkType: hard @@ -5459,7 +5459,7 @@ __metadata: resolution: "fast-url-parser@npm:1.1.3" dependencies: punycode: "npm:^1.3.2" - checksum: d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 + checksum: 10c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 languageName: node linkType: hard @@ -5468,7 +5468,7 @@ __metadata: resolution: "fastq@npm:1.13.0" dependencies: reusify: "npm:^1.0.4" - checksum: 76c7b5dafb93c7e74359a3e6de834ce7a7c2e3a3184050ed4cb652661de55cf8d4895178d8d3ccd23069395056c7bb15450660d38fb382ca88c142b22694d7c9 + checksum: 10c0/76c7b5dafb93c7e74359a3e6de834ce7a7c2e3a3184050ed4cb652661de55cf8d4895178d8d3ccd23069395056c7bb15450660d38fb382ca88c142b22694d7c9 languageName: node linkType: hard @@ -5477,7 +5477,7 @@ __metadata: resolution: "fault@npm:2.0.1" dependencies: format: "npm:^0.2.0" - checksum: b80fbf1019b9ce8b08ee09ce86e02b028563e13a32ac3be34e42bfac00a97b96d8dee6d31e26578ffc16224eb6729e01ff1f97ddfeee00494f4f56c0aeed4bdd + checksum: 10c0/b80fbf1019b9ce8b08ee09ce86e02b028563e13a32ac3be34e42bfac00a97b96d8dee6d31e26578ffc16224eb6729e01ff1f97ddfeee00494f4f56c0aeed4bdd languageName: node linkType: hard @@ -5486,7 +5486,7 @@ __metadata: resolution: "faye-websocket@npm:0.11.4" dependencies: websocket-driver: "npm:>=0.5.1" - checksum: c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 languageName: node linkType: hard @@ -5495,7 +5495,7 @@ __metadata: resolution: "feed@npm:4.2.2" dependencies: xml-js: "npm:^1.6.11" - checksum: c0849bde569da94493224525db00614fd1855a5d7c2e990f6e8637bd0298e85c3d329efe476cba77e711e438c3fb48af60cd5ef0c409da5bcd1f479790b0a372 + checksum: 10c0/c0849bde569da94493224525db00614fd1855a5d7c2e990f6e8637bd0298e85c3d329efe476cba77e711e438c3fb48af60cd5ef0c409da5bcd1f479790b0a372 languageName: node linkType: hard @@ -5507,14 +5507,14 @@ __metadata: schema-utils: "npm:^3.0.0" peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: e176a57c2037ab0f78e5755dbf293a6b7f0f8392350a120bd03cc2ce2525bea017458ba28fea14ca535ff1848055e86d1a3a216bdb2561ef33395b27260a1dd3 + checksum: 10c0/e176a57c2037ab0f78e5755dbf293a6b7f0f8392350a120bd03cc2ce2525bea017458ba28fea14ca535ff1848055e86d1a3a216bdb2561ef33395b27260a1dd3 languageName: node linkType: hard "filesize@npm:^8.0.6": version: 8.0.7 resolution: "filesize@npm:8.0.7" - checksum: 82072d94816484df5365d4d5acbb2327a65dc49704c64e403e8c40d8acb7364de1cf1e65cb512c77a15d353870f73e4fed46dad5c6153d0618d9ce7a64d09cfc + checksum: 10c0/82072d94816484df5365d4d5acbb2327a65dc49704c64e403e8c40d8acb7364de1cf1e65cb512c77a15d353870f73e4fed46dad5c6153d0618d9ce7a64d09cfc languageName: node linkType: hard @@ -5523,7 +5523,7 @@ __metadata: resolution: "fill-range@npm:7.0.1" dependencies: to-regex-range: "npm:^5.0.1" - checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f languageName: node linkType: hard @@ -5538,7 +5538,7 @@ __metadata: parseurl: "npm:~1.3.3" statuses: "npm:2.0.1" unpipe: "npm:~1.0.0" - checksum: 64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 + checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 languageName: node linkType: hard @@ -5548,7 +5548,7 @@ __metadata: dependencies: common-path-prefix: "npm:^3.0.0" pkg-dir: "npm:^7.0.0" - checksum: 0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + checksum: 10c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff languageName: node linkType: hard @@ -5557,7 +5557,7 @@ __metadata: resolution: "find-up@npm:3.0.0" dependencies: locate-path: "npm:^3.0.0" - checksum: 2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 languageName: node linkType: hard @@ -5567,7 +5567,7 @@ __metadata: dependencies: locate-path: "npm:^6.0.0" path-exists: "npm:^4.0.0" - checksum: 062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a languageName: node linkType: hard @@ -5577,7 +5577,7 @@ __metadata: dependencies: locate-path: "npm:^7.1.0" path-exists: "npm:^5.0.0" - checksum: 07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 languageName: node linkType: hard @@ -5586,7 +5586,7 @@ __metadata: resolution: "flat@npm:5.0.2" bin: flat: cli.js - checksum: f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe languageName: node linkType: hard @@ -5596,7 +5596,7 @@ __metadata: peerDependenciesMeta: debug: optional: true - checksum: 5f37ed9170c9eb19448c5418fdb0f2b73f644b5364834e70791a76ecc7db215246f9773bbef4852cfae4067764ffc852e047f744b661b0211532155b73556a6a + checksum: 10c0/5f37ed9170c9eb19448c5418fdb0f2b73f644b5364834e70791a76ecc7db215246f9773bbef4852cfae4067764ffc852e047f744b661b0211532155b73556a6a languageName: node linkType: hard @@ -5627,42 +5627,42 @@ __metadata: optional: true vue-template-compiler: optional: true - checksum: 875e9f09ef519ffcd15905c2b8d1f0f42b0012e87692417e60f4acd840f1f1c9dac6e663ca7bc9b12563d14f5b81ec86470d69a4212403cfad2949d22c2a53e1 + checksum: 10c0/875e9f09ef519ffcd15905c2b8d1f0f42b0012e87692417e60f4acd840f1f1c9dac6e663ca7bc9b12563d14f5b81ec86470d69a4212403cfad2949d22c2a53e1 languageName: node linkType: hard "form-data-encoder@npm:^2.1.2": version: 2.1.4 resolution: "form-data-encoder@npm:2.1.4" - checksum: 4c06ae2b79ad693a59938dc49ebd020ecb58e4584860a90a230f80a68b026483b022ba5e4143cff06ae5ac8fd446a0b500fabc87bbac3d1f62f2757f8dabcaf7 + checksum: 10c0/4c06ae2b79ad693a59938dc49ebd020ecb58e4584860a90a230f80a68b026483b022ba5e4143cff06ae5ac8fd446a0b500fabc87bbac3d1f62f2757f8dabcaf7 languageName: node linkType: hard "format@npm:^0.2.0": version: 0.2.2 resolution: "format@npm:0.2.2" - checksum: 6032ba747541a43abf3e37b402b2f72ee08ebcb58bf84d816443dd228959837f1cddf1e8775b29fa27ff133f4bd146d041bfca5f9cf27f048edf3d493cf8fee6 + checksum: 10c0/6032ba747541a43abf3e37b402b2f72ee08ebcb58bf84d816443dd228959837f1cddf1e8775b29fa27ff133f4bd146d041bfca5f9cf27f048edf3d493cf8fee6 languageName: node linkType: hard "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" - checksum: 9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 languageName: node linkType: hard "fraction.js@npm:^4.3.6": version: 4.3.7 resolution: "fraction.js@npm:4.3.7" - checksum: df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711 + checksum: 10c0/df291391beea9ab4c263487ffd9d17fed162dbb736982dee1379b2a8cc94e4e24e46ed508c6d278aded9080ba51872f1bc5f3a5fd8d7c74e5f105b508ac28711 languageName: node linkType: hard "fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" - checksum: c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a languageName: node linkType: hard @@ -5673,7 +5673,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 + checksum: 10c0/a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 languageName: node linkType: hard @@ -5685,7 +5685,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 languageName: node linkType: hard @@ -5694,21 +5694,21 @@ __metadata: resolution: "fs-minipass@npm:2.1.0" dependencies: minipass: "npm:^3.0.0" - checksum: 703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 languageName: node linkType: hard "fs-monkey@npm:1.0.3": version: 1.0.3 resolution: "fs-monkey@npm:1.0.3" - checksum: 197fd276d224d54a27c6267c69887ec29ccd4bedd83d72b5050abf3b6c6ef83d7b86a85a87f615c24a4e6f9a4888fd151c9f16a37ffb23e37c4c2d14c1da6275 + checksum: 10c0/197fd276d224d54a27c6267c69887ec29ccd4bedd83d72b5050abf3b6c6ef83d7b86a85a87f615c24a4e6f9a4888fd151c9f16a37ffb23e37c4c2d14c1da6275 languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" - checksum: 444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 languageName: node linkType: hard @@ -5717,7 +5717,7 @@ __metadata: resolution: "fsevents@npm:2.3.2" dependencies: node-gyp: "npm:latest" - checksum: be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b + checksum: 10c0/be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b conditions: os=darwin languageName: node linkType: hard @@ -5734,7 +5734,7 @@ __metadata: "function-bind@npm:^1.1.1": version: 1.1.1 resolution: "function-bind@npm:1.1.1" - checksum: 60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e + checksum: 10c0/60b74b2407e1942e1ed7f8c284f8ef714d0689dcfce5319985a5b7da3fc727f40b4a59ec72dc55aa83365ad7b8fa4fac3a30d93c850a2b452f29ae03dbc10a1e languageName: node linkType: hard @@ -5751,14 +5751,14 @@ __metadata: string-width: "npm:^4.2.3" strip-ansi: "npm:^6.0.1" wide-align: "npm:^1.1.5" - checksum: 1552a6ed04ca88d82f1207fb06866635f29ea852d7da49b5c54b16dd162818a890ca527c5b887c8f06f0f8fa754c5e44c5c6adf0ff44e34b91dda6d3fb471ea3 + checksum: 10c0/1552a6ed04ca88d82f1207fb06866635f29ea852d7da49b5c54b16dd162818a890ca527c5b887c8f06f0f8fa754c5e44c5c6adf0ff44e34b91dda6d3fb471ea3 languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" - checksum: 782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 languageName: node linkType: hard @@ -5769,28 +5769,28 @@ __metadata: function-bind: "npm:^1.1.1" has: "npm:^1.0.3" has-symbols: "npm:^1.0.1" - checksum: c01055578e9b8da37a7779b18b732436c55d93e5ffa56b0fc4d3da8468ad89a25ce2343ba1945f20c0e78119bc7bb296fb59a0da521b6e43fd632de73376e040 + checksum: 10c0/c01055578e9b8da37a7779b18b732436c55d93e5ffa56b0fc4d3da8468ad89a25ce2343ba1945f20c0e78119bc7bb296fb59a0da521b6e43fd632de73376e040 languageName: node linkType: hard "get-own-enumerable-property-symbols@npm:^3.0.0": version: 3.0.2 resolution: "get-own-enumerable-property-symbols@npm:3.0.2" - checksum: 103999855f3d1718c631472437161d76962cbddcd95cc642a34c07bfb661ed41b6c09a9c669ccdff89ee965beb7126b80eec7b2101e20e31e9cc6c4725305e10 + checksum: 10c0/103999855f3d1718c631472437161d76962cbddcd95cc642a34c07bfb661ed41b6c09a9c669ccdff89ee965beb7126b80eec7b2101e20e31e9cc6c4725305e10 languageName: node linkType: hard "get-stream@npm:^6.0.0, get-stream@npm:^6.0.1": version: 6.0.1 resolution: "get-stream@npm:6.0.1" - checksum: 49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 languageName: node linkType: hard "github-slugger@npm:^1.5.0": version: 1.5.0 resolution: "github-slugger@npm:1.5.0" - checksum: 116f99732925f939cbfd6f2e57db1aa7e111a460db0d103e3b3f2fce6909d44311663d4542350706cad806345b9892358cc3b153674f88eeae77f43380b3bfca + checksum: 10c0/116f99732925f939cbfd6f2e57db1aa7e111a460db0d103e3b3f2fce6909d44311663d4542350706cad806345b9892358cc3b153674f88eeae77f43380b3bfca languageName: node linkType: hard @@ -5799,7 +5799,7 @@ __metadata: resolution: "glob-parent@npm:5.1.2" dependencies: is-glob: "npm:^4.0.1" - checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee languageName: node linkType: hard @@ -5808,14 +5808,14 @@ __metadata: resolution: "glob-parent@npm:6.0.2" dependencies: is-glob: "npm:^4.0.3" - checksum: 317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 languageName: node linkType: hard "glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" - checksum: 0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 languageName: node linkType: hard @@ -5829,7 +5829,7 @@ __metadata: minimatch: "npm:^3.0.4" once: "npm:^1.3.0" path-is-absolute: "npm:^1.0.0" - checksum: 478b40e38be5a3d514e64950e1e07e0ac120585add6a37c98d0ed24d72d9127d734d2a125786073c8deb687096e84ae82b641c441a869ada3a9cc91b68978632 + checksum: 10c0/478b40e38be5a3d514e64950e1e07e0ac120585add6a37c98d0ed24d72d9127d734d2a125786073c8deb687096e84ae82b641c441a869ada3a9cc91b68978632 languageName: node linkType: hard @@ -5838,7 +5838,7 @@ __metadata: resolution: "global-dirs@npm:3.0.0" dependencies: ini: "npm:2.0.0" - checksum: 2b3c05967873662204dfe7159cfef20019e898b5ebe2ac70fc155e4cbe2207732f4b72d4ea1e72f10e91cee139d237ab4d39f1e282751093e7fe83c53abba46f + checksum: 10c0/2b3c05967873662204dfe7159cfef20019e898b5ebe2ac70fc155e4cbe2207732f4b72d4ea1e72f10e91cee139d237ab4d39f1e282751093e7fe83c53abba46f languageName: node linkType: hard @@ -5847,7 +5847,7 @@ __metadata: resolution: "global-modules@npm:2.0.0" dependencies: global-prefix: "npm:^3.0.0" - checksum: 43b770fe24aa6028f4b9770ea583a47f39750be15cf6e2578f851e4ccc9e4fa674b8541928c0b09c21461ca0763f0d36e4068cec86c914b07fd6e388e66ba5b9 + checksum: 10c0/43b770fe24aa6028f4b9770ea583a47f39750be15cf6e2578f851e4ccc9e4fa674b8541928c0b09c21461ca0763f0d36e4068cec86c914b07fd6e388e66ba5b9 languageName: node linkType: hard @@ -5858,14 +5858,14 @@ __metadata: ini: "npm:^1.3.5" kind-of: "npm:^6.0.2" which: "npm:^1.3.1" - checksum: 510f489fb68d1cc7060f276541709a0ee6d41356ef852de48f7906c648ac223082a1cc8fce86725ca6c0e032bcdc1189ae77b4744a624b29c34a9d0ece498269 + checksum: 10c0/510f489fb68d1cc7060f276541709a0ee6d41356ef852de48f7906c648ac223082a1cc8fce86725ca6c0e032bcdc1189ae77b4744a624b29c34a9d0ece498269 languageName: node linkType: hard "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" - checksum: 758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 languageName: node linkType: hard @@ -5879,7 +5879,7 @@ __metadata: ignore: "npm:^5.2.0" merge2: "npm:^1.4.1" slash: "npm:^3.0.0" - checksum: b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 languageName: node linkType: hard @@ -5892,7 +5892,7 @@ __metadata: ignore: "npm:^5.2.0" merge2: "npm:^1.4.1" slash: "npm:^4.0.0" - checksum: 773f3391c9579995252f692f107521f11c6b376993e7aa00accc36da145113d68481e80a7a2f9eb09835e0f9b0bb4658adae5424acb2ce02644e2dab08ea35bf + checksum: 10c0/773f3391c9579995252f692f107521f11c6b376993e7aa00accc36da145113d68481e80a7a2f9eb09835e0f9b0bb4658adae5424acb2ce02644e2dab08ea35bf languageName: node linkType: hard @@ -5911,14 +5911,14 @@ __metadata: lowercase-keys: "npm:^3.0.0" p-cancelable: "npm:^3.0.0" responselike: "npm:^3.0.0" - checksum: 2fe97fcbd7a9ffc7c2d0ecf59aca0a0562e73a7749cadada9770eeb18efbdca3086262625fb65590594edc220a1eca58fab0d26b0c93c2f9a008234da71ca66b + checksum: 10c0/2fe97fcbd7a9ffc7c2d0ecf59aca0a0562e73a7749cadada9770eeb18efbdca3086262625fb65590594edc220a1eca58fab0d26b0c93c2f9a008234da71ca66b languageName: node linkType: hard "graceful-fs@npm:4.2.10, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" - checksum: 4223a833e38e1d0d2aea630c2433cfb94ddc07dfc11d511dbd6be1d16688c5be848acc31f9a5d0d0ddbfb56d2ee5a6ae0278aceeb0ca6a13f27e06b9956fb952 + checksum: 10c0/4223a833e38e1d0d2aea630c2433cfb94ddc07dfc11d511dbd6be1d16688c5be848acc31f9a5d0d0ddbfb56d2ee5a6ae0278aceeb0ca6a13f27e06b9956fb952 languageName: node linkType: hard @@ -5930,7 +5930,7 @@ __metadata: kind-of: "npm:^6.0.2" section-matter: "npm:^1.0.0" strip-bom-string: "npm:^1.0.0" - checksum: e38489906dad4f162ca01e0dcbdbed96d1a53740cef446b9bf76d80bec66fa799af07776a18077aee642346c5e1365ed95e4c91854a12bf40ba0d4fb43a625a6 + checksum: 10c0/e38489906dad4f162ca01e0dcbdbed96d1a53740cef446b9bf76d80bec66fa799af07776a18077aee642346c5e1365ed95e4c91854a12bf40ba0d4fb43a625a6 languageName: node linkType: hard @@ -5939,49 +5939,49 @@ __metadata: resolution: "gzip-size@npm:6.0.0" dependencies: duplexer: "npm:^0.1.2" - checksum: 4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f + checksum: 10c0/4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f languageName: node linkType: hard "handle-thing@npm:^2.0.0": version: 2.0.1 resolution: "handle-thing@npm:2.0.1" - checksum: 7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 + checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" - checksum: 1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" - checksum: 2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 languageName: node linkType: hard "has-symbols@npm:^1.0.1": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" - checksum: e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 languageName: node linkType: hard "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" - checksum: ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c + checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c languageName: node linkType: hard "has-yarn@npm:^3.0.0": version: 3.0.0 resolution: "has-yarn@npm:3.0.0" - checksum: 38c76618cb764e4a98ea114a3938e0bed6ceafb6bacab2ffb32e7c7d1e18b5e09cd03387d507ee87072388e1f20b1f80947fee62c41fc450edfbbdc02a665787 + checksum: 10c0/38c76618cb764e4a98ea114a3938e0bed6ceafb6bacab2ffb32e7c7d1e18b5e09cd03387d507ee87072388e1f20b1f80947fee62c41fc450edfbbdc02a665787 languageName: node linkType: hard @@ -5990,7 +5990,7 @@ __metadata: resolution: "has@npm:1.0.3" dependencies: function-bind: "npm:^1.1.1" - checksum: e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b + checksum: 10c0/e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b languageName: node linkType: hard @@ -6006,7 +6006,7 @@ __metadata: vfile: "npm:^6.0.0" vfile-location: "npm:^5.0.0" web-namespaces: "npm:^2.0.0" - checksum: 4a30bb885cff1f0e023c429ae3ece73fe4b03386f07234bf23f5555ca087c2573ff4e551035b417ed7615bde559f394cdaf1db2b91c3b7f0575f3563cd238969 + checksum: 10c0/4a30bb885cff1f0e023c429ae3ece73fe4b03386f07234bf23f5555ca087c2573ff4e551035b417ed7615bde559f394cdaf1db2b91c3b7f0575f3563cd238969 languageName: node linkType: hard @@ -6015,7 +6015,7 @@ __metadata: resolution: "hast-util-parse-selector@npm:4.0.0" dependencies: "@types/hast": "npm:^3.0.0" - checksum: 5e98168cb44470dc274aabf1a28317e4feb09b1eaf7a48bbaa8c1de1b43a89cd195cb1284e535698e658e3ec26ad91bc5e52c9563c36feb75abbc68aaf68fb9f + checksum: 10c0/5e98168cb44470dc274aabf1a28317e4feb09b1eaf7a48bbaa8c1de1b43a89cd195cb1284e535698e658e3ec26ad91bc5e52c9563c36feb75abbc68aaf68fb9f languageName: node linkType: hard @@ -6036,7 +6036,7 @@ __metadata: vfile: "npm:^6.0.0" web-namespaces: "npm:^2.0.0" zwitch: "npm:^2.0.0" - checksum: 60ee6495681f020930380649af58b2a6ca081bec1abd1089f58b0ee892eac2c87dc2077fb30370e51848734b58d2d539e3cde5148c18aa70a89f2c7285e57c91 + checksum: 10c0/60ee6495681f020930380649af58b2a6ca081bec1abd1089f58b0ee892eac2c87dc2077fb30370e51848734b58d2d539e3cde5148c18aa70a89f2c7285e57c91 languageName: node linkType: hard @@ -6060,7 +6060,7 @@ __metadata: style-to-object: "npm:^0.4.0" unist-util-position: "npm:^5.0.0" zwitch: "npm:^2.0.0" - checksum: 9003a8bac26a4580d5fc9f2a271d17330dd653266425e9f5539feecd2f7538868d6630a18f70698b8b804bf14c306418a3f4ab3119bb4692aca78b0c08b1291e + checksum: 10c0/9003a8bac26a4580d5fc9f2a271d17330dd653266425e9f5539feecd2f7538868d6630a18f70698b8b804bf14c306418a3f4ab3119bb4692aca78b0c08b1291e languageName: node linkType: hard @@ -6077,7 +6077,7 @@ __metadata: style-to-object: "npm:^0.4.0" unist-util-position: "npm:^5.0.0" vfile-message: "npm:^4.0.0" - checksum: 30c6cf594e83bfef9748d8b15b56bb861281bb2c1e74cb7c30c0c7ca1679e88a2db0accf990a65e5262d4a98cef6f41ea8404042f9a40f97df7b0d915fb4776a + checksum: 10c0/30c6cf594e83bfef9748d8b15b56bb861281bb2c1e74cb7c30c0c7ca1679e88a2db0accf990a65e5262d4a98cef6f41ea8404042f9a40f97df7b0d915fb4776a languageName: node linkType: hard @@ -6092,7 +6092,7 @@ __metadata: space-separated-tokens: "npm:^2.0.0" web-namespaces: "npm:^2.0.0" zwitch: "npm:^2.0.0" - checksum: 3c0c7fba026e0c4be4675daf7277f9ff22ae6da801435f1b7104f7740de5422576f1c025023c7b3df1d0a161e13a04c6ab8f98ada96eb50adb287b537849a2bd + checksum: 10c0/3c0c7fba026e0c4be4675daf7277f9ff22ae6da801435f1b7104f7740de5422576f1c025023c7b3df1d0a161e13a04c6ab8f98ada96eb50adb287b537849a2bd languageName: node linkType: hard @@ -6101,7 +6101,7 @@ __metadata: resolution: "hast-util-whitespace@npm:3.0.0" dependencies: "@types/hast": "npm:^3.0.0" - checksum: b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8 + checksum: 10c0/b898bc9fe27884b272580d15260b6bbdabe239973a147e97fa98c45fa0ffec967a481aaa42291ec34fb56530dc2d484d473d7e2bae79f39c83f3762307edfea8 languageName: node linkType: hard @@ -6114,7 +6114,7 @@ __metadata: hast-util-parse-selector: "npm:^4.0.0" property-information: "npm:^6.0.0" space-separated-tokens: "npm:^2.0.0" - checksum: f0b54bbdd710854b71c0f044612db0fe1b5e4d74fa2001633dc8c535c26033269f04f536f9fd5b03f234de1111808f9e230e9d19493bf919432bb24d541719e0 + checksum: 10c0/f0b54bbdd710854b71c0f044612db0fe1b5e4d74fa2001633dc8c535c26033269f04f536f9fd5b03f234de1111808f9e230e9d19493bf919432bb24d541719e0 languageName: node linkType: hard @@ -6123,7 +6123,7 @@ __metadata: resolution: "he@npm:1.2.0" bin: he: bin/he - checksum: a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 languageName: node linkType: hard @@ -6137,7 +6137,7 @@ __metadata: tiny-invariant: "npm:^1.0.2" tiny-warning: "npm:^1.0.0" value-equal: "npm:^1.0.1" - checksum: 35377694e4f10f2cf056a9cb1a8ee083e04e4b4717a63baeee4afd565658a62c7e73700bf9e82aa53dbe1ec94e0a25a83c080d63bad8ee6b274a98d2fbc5ed4c + checksum: 10c0/35377694e4f10f2cf056a9cb1a8ee083e04e4b4717a63baeee4afd565658a62c7e73700bf9e82aa53dbe1ec94e0a25a83c080d63bad8ee6b274a98d2fbc5ed4c languageName: node linkType: hard @@ -6146,7 +6146,7 @@ __metadata: resolution: "hoist-non-react-statics@npm:3.3.2" dependencies: react-is: "npm:^16.7.0" - checksum: fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 languageName: node linkType: hard @@ -6158,14 +6158,14 @@ __metadata: obuf: "npm:^1.0.0" readable-stream: "npm:^2.0.1" wbuf: "npm:^1.1.0" - checksum: 55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 + checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 languageName: node linkType: hard "html-entities@npm:^2.3.2": version: 2.3.2 resolution: "html-entities@npm:2.3.2" - checksum: 69b50d032435e02765175d40ac3d94ceeb19b3ee32b869f79804f24f8efadf7928a1c3c4eddb85273809f95f7cffa416d05ca43e88d219575e8c5f6dd75bfc8d + checksum: 10c0/69b50d032435e02765175d40ac3d94ceeb19b3ee32b869f79804f24f8efadf7928a1c3c4eddb85273809f95f7cffa416d05ca43e88d219575e8c5f6dd75bfc8d languageName: node linkType: hard @@ -6182,7 +6182,7 @@ __metadata: terser: "npm:^5.10.0" bin: html-minifier-terser: cli.js - checksum: 1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a + checksum: 10c0/1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a languageName: node linkType: hard @@ -6199,21 +6199,21 @@ __metadata: terser: "npm:^5.15.1" bin: html-minifier-terser: cli.js - checksum: ffc97c17299d9ec30e17269781b816ea2fc411a9206fc9e768be8f2decb1ea1470892809babb23bb4e3ab1f64d606d97e1803bf526ae3af71edc0fd3070b94b9 + checksum: 10c0/ffc97c17299d9ec30e17269781b816ea2fc411a9206fc9e768be8f2decb1ea1470892809babb23bb4e3ab1f64d606d97e1803bf526ae3af71edc0fd3070b94b9 languageName: node linkType: hard "html-tags@npm:^3.3.1": version: 3.3.1 resolution: "html-tags@npm:3.3.1" - checksum: 680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 + checksum: 10c0/680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 languageName: node linkType: hard "html-void-elements@npm:^3.0.0": version: 3.0.0 resolution: "html-void-elements@npm:3.0.0" - checksum: a8b9ec5db23b7c8053876dad73a0336183e6162bf6d2677376d8b38d654fdc59ba74fdd12f8812688f7db6fad451210c91b300e472afc0909224e0a44c8610d2 + checksum: 10c0/a8b9ec5db23b7c8053876dad73a0336183e6162bf6d2677376d8b38d654fdc59ba74fdd12f8812688f7db6fad451210c91b300e472afc0909224e0a44c8610d2 languageName: node linkType: hard @@ -6228,7 +6228,7 @@ __metadata: tapable: "npm:^2.0.0" peerDependencies: webpack: ^5.20.0 - checksum: 7ba0d0f87d08f5c4c51f821842d736ec1762940bc39798932528adaec1e9cca8f52944987b88789007f5706d15110edbdfa30df445d61c6628b02ebe163c4f42 + checksum: 10c0/7ba0d0f87d08f5c4c51f821842d736ec1762940bc39798932528adaec1e9cca8f52944987b88789007f5706d15110edbdfa30df445d61c6628b02ebe163c4f42 languageName: node linkType: hard @@ -6240,7 +6240,7 @@ __metadata: domhandler: "npm:^4.0.0" domutils: "npm:^2.5.2" entities: "npm:^2.0.0" - checksum: 3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 + checksum: 10c0/3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 languageName: node linkType: hard @@ -6252,21 +6252,21 @@ __metadata: domhandler: "npm:^5.0.2" domutils: "npm:^3.0.1" entities: "npm:^4.3.0" - checksum: 33942dc6d882f37132fe8e39d5fd860d5abcf52ca769b3742c1b35caae1225db9cfa4486f27ed983db5b6d478944008a515e6ee3a09cfe8fa84af412960e4ca1 + checksum: 10c0/33942dc6d882f37132fe8e39d5fd860d5abcf52ca769b3742c1b35caae1225db9cfa4486f27ed983db5b6d478944008a515e6ee3a09cfe8fa84af412960e4ca1 languageName: node linkType: hard "http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" - checksum: ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc languageName: node linkType: hard "http-deceiver@npm:^1.2.7": version: 1.2.7 resolution: "http-deceiver@npm:1.2.7" - checksum: 8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 + checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 languageName: node linkType: hard @@ -6279,7 +6279,7 @@ __metadata: setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" toidentifier: "npm:1.0.1" - checksum: fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 languageName: node linkType: hard @@ -6291,14 +6291,14 @@ __metadata: inherits: "npm:2.0.3" setprototypeof: "npm:1.1.0" statuses: "npm:>= 1.4.0 < 2" - checksum: 17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 languageName: node linkType: hard "http-parser-js@npm:>=0.5.1": version: 0.5.6 resolution: "http-parser-js@npm:0.5.6" - checksum: 2b449a5e7a4f6b28f6abdf8130d97b8fb3a50768fcdf3356c243878f2545685c6cdfb0c19be92b0348e4afca5a4d99c8482a50e0332e084291196bb221924f8a + checksum: 10c0/2b449a5e7a4f6b28f6abdf8130d97b8fb3a50768fcdf3356c243878f2545685c6cdfb0c19be92b0348e4afca5a4d99c8482a50e0332e084291196bb221924f8a languageName: node linkType: hard @@ -6309,7 +6309,7 @@ __metadata: "@tootallnate/once": "npm:2" agent-base: "npm:6" debug: "npm:4" - checksum: 32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 languageName: node linkType: hard @@ -6327,7 +6327,7 @@ __metadata: peerDependenciesMeta: "@types/express": optional: true - checksum: 25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 + checksum: 10c0/25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 languageName: node linkType: hard @@ -6338,7 +6338,7 @@ __metadata: eventemitter3: "npm:^4.0.0" follow-redirects: "npm:^1.0.0" requires-port: "npm:^1.0.0" - checksum: 148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 + checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 languageName: node linkType: hard @@ -6348,7 +6348,7 @@ __metadata: dependencies: quick-lru: "npm:^5.1.1" resolve-alpn: "npm:^1.2.0" - checksum: cb4a41a9b4948a607bb27b4e745af5396e01a5e074da4c7ea0d3ce41acd9cef69de373a67d321728bb651fd9701a23c80e8991c9ad5128dab10e9da28a8b6c72 + checksum: 10c0/cb4a41a9b4948a607bb27b4e745af5396e01a5e074da4c7ea0d3ce41acd9cef69de373a67d321728bb651fd9701a23c80e8991c9ad5128dab10e9da28a8b6c72 languageName: node linkType: hard @@ -6358,14 +6358,14 @@ __metadata: dependencies: agent-base: "npm:6" debug: "npm:4" - checksum: 670c04f7f0effb5a449c094ea037cbcfb28a5ab93ed22e8c343095202cc7288027869a5a21caf4ee3b8ea06f9624ef1e1fc9044669c0fd92617654ff39f30806 + checksum: 10c0/670c04f7f0effb5a449c094ea037cbcfb28a5ab93ed22e8c343095202cc7288027869a5a21caf4ee3b8ea06f9624ef1e1fc9044669c0fd92617654ff39f30806 languageName: node linkType: hard "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" - checksum: 695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a languageName: node linkType: hard @@ -6374,7 +6374,7 @@ __metadata: resolution: "humanize-ms@npm:1.2.1" dependencies: ms: "npm:^2.0.0" - checksum: f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a languageName: node linkType: hard @@ -6383,7 +6383,7 @@ __metadata: resolution: "iconv-lite@npm:0.4.24" dependencies: safer-buffer: "npm:>= 2.1.2 < 3" - checksum: c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 languageName: node linkType: hard @@ -6392,7 +6392,7 @@ __metadata: resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 languageName: node linkType: hard @@ -6401,14 +6401,14 @@ __metadata: resolution: "icss-utils@npm:5.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d + checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d languageName: node linkType: hard "ignore@npm:^5.2.0": version: 5.2.0 resolution: "ignore@npm:5.2.0" - checksum: 7fb7b4c4c52c2555113ff968f8a83b8ac21b076282bfcb3f468c3fb429be69bd56222306c31de95dd452c647fc6ae24339b8047ebe3ef34c02591abfec58da01 + checksum: 10c0/7fb7b4c4c52c2555113ff968f8a83b8ac21b076282bfcb3f468c3fb429be69bd56222306c31de95dd452c647fc6ae24339b8047ebe3ef34c02591abfec58da01 languageName: node linkType: hard @@ -6419,14 +6419,14 @@ __metadata: queue: "npm:6.0.2" bin: image-size: bin/image-size.js - checksum: df518606c75d0ee12a6d7e822a64ef50d9eabbb303dcee8c9df06bad94e49b4d4680b9003968203f239ff39a9cc51d4ff1781cd331cc0a4b3b858d9fc9836c68 + checksum: 10c0/df518606c75d0ee12a6d7e822a64ef50d9eabbb303dcee8c9df06bad94e49b4d4680b9003968203f239ff39a9cc51d4ff1781cd331cc0a4b3b858d9fc9836c68 languageName: node linkType: hard "immer@npm:^9.0.7": version: 9.0.12 resolution: "immer@npm:9.0.12" - checksum: 85bf3a4c0d98d81ff9aa1c1e226516240a9ee0e906916958b7f5cf30b33b9a0219af58986783d0ae442b4ed6da443da684f7e9738d4fbe2243361534ad6db3d2 + checksum: 10c0/85bf3a4c0d98d81ff9aa1c1e226516240a9ee0e906916958b7f5cf30b33b9a0219af58986783d0ae442b4ed6da443da684f7e9738d4fbe2243361534ad6db3d2 languageName: node linkType: hard @@ -6436,42 +6436,42 @@ __metadata: dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" - checksum: 7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 languageName: node linkType: hard "import-lazy@npm:^4.0.0": version: 4.0.0 resolution: "import-lazy@npm:4.0.0" - checksum: a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca + checksum: 10c0/a3520313e2c31f25c0b06aa66d167f329832b68a4f957d7c9daf6e0fa41822b6e84948191648b9b9d8ca82f94740cdf15eecf2401a5b42cd1c33fd84f2225cca languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" - checksum: 8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" - checksum: 1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f languageName: node linkType: hard "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" - checksum: a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 languageName: node linkType: hard "infima@npm:0.2.0-alpha.43": version: 0.2.0-alpha.43 resolution: "infima@npm:0.2.0-alpha.43" - checksum: d248958713a97e1c9f73ace27ceff726ba86a9b534efb0ebdec3e72b785d8edb36db922e38ce09bbeb98a17b657e61357f22edc3a58f02ad51b7ae2ebd96e4e4 + checksum: 10c0/d248958713a97e1c9f73ace27ceff726ba86a9b534efb0ebdec3e72b785d8edb36db922e38ce09bbeb98a17b657e61357f22edc3a58f02ad51b7ae2ebd96e4e4 languageName: node linkType: hard @@ -6481,49 +6481,49 @@ __metadata: dependencies: once: "npm:^1.3.0" wrappy: "npm:1" - checksum: 7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 languageName: node linkType: hard "inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" - checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 languageName: node linkType: hard "inherits@npm:2.0.3": version: 2.0.3 resolution: "inherits@npm:2.0.3" - checksum: 6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 languageName: node linkType: hard "ini@npm:2.0.0": version: 2.0.0 resolution: "ini@npm:2.0.0" - checksum: 2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 + checksum: 10c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 languageName: node linkType: hard "ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" - checksum: ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a languageName: node linkType: hard "inline-style-parser@npm:0.1.1": version: 0.1.1 resolution: "inline-style-parser@npm:0.1.1" - checksum: 08832a533f51a1e17619f2eabf2f5ec5e956d6dcba1896351285c65df022c9420de61d73256e1dca8015a52abf96cc84ddc3b73b898b22de6589d3962b5e501b + checksum: 10c0/08832a533f51a1e17619f2eabf2f5ec5e956d6dcba1896351285c65df022c9420de61d73256e1dca8015a52abf96cc84ddc3b73b898b22de6589d3962b5e501b languageName: node linkType: hard "interpret@npm:^1.0.0": version: 1.4.0 resolution: "interpret@npm:1.4.0" - checksum: 08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 + checksum: 10c0/08c5ad30032edeec638485bc3f6db7d0094d9b3e85e0f950866600af3c52e9fd69715416d29564731c479d9f4d43ff3e4d302a178196bdc0e6837ec147640450 languageName: node linkType: hard @@ -6532,35 +6532,35 @@ __metadata: resolution: "invariant@npm:2.2.4" dependencies: loose-envify: "npm:^1.0.0" - checksum: 5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc languageName: node linkType: hard "ip@npm:^1.1.5": version: 1.1.5 resolution: "ip@npm:1.1.5" - checksum: 877e98d676cd8d0ca01fee8282d11b91fb97be7dd9d0b2d6d98e161db2d4277954f5b55db7cfc8556fe6841cb100d13526a74f50ab0d83d6b130fe8445040175 + checksum: 10c0/877e98d676cd8d0ca01fee8282d11b91fb97be7dd9d0b2d6d98e161db2d4277954f5b55db7cfc8556fe6841cb100d13526a74f50ab0d83d6b130fe8445040175 languageName: node linkType: hard "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" - checksum: 0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a languageName: node linkType: hard "ipaddr.js@npm:^2.0.1": version: 2.0.1 resolution: "ipaddr.js@npm:2.0.1" - checksum: 0034dfd7a83e82bec6a569549f42c56eb47d051842e10ff0400d97b18f517131834d7c054893a31900cf9d54cf4d974eed97923e5e5965c298d004849f5f0ac9 + checksum: 10c0/0034dfd7a83e82bec6a569549f42c56eb47d051842e10ff0400d97b18f517131834d7c054893a31900cf9d54cf4d974eed97923e5e5965c298d004849f5f0ac9 languageName: node linkType: hard "is-alphabetical@npm:^2.0.0": version: 2.0.1 resolution: "is-alphabetical@npm:2.0.1" - checksum: 932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7 + checksum: 10c0/932367456f17237533fd1fc9fe179df77957271020b83ea31da50e5cc472d35ef6b5fb8147453274ffd251134472ce24eb6f8d8398d96dee98237cdb81a6c9a7 languageName: node linkType: hard @@ -6570,14 +6570,14 @@ __metadata: dependencies: is-alphabetical: "npm:^2.0.0" is-decimal: "npm:^2.0.0" - checksum: 4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2 + checksum: 10c0/4b35c42b18e40d41378293f82a3ecd9de77049b476f748db5697c297f686e1e05b072a6aaae2d16f54d2a57f85b00cbbe755c75f6d583d1c77d6657bd0feb5a2 languageName: node linkType: hard "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" - checksum: e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 languageName: node linkType: hard @@ -6586,7 +6586,7 @@ __metadata: resolution: "is-binary-path@npm:2.1.0" dependencies: binary-extensions: "npm:^2.0.0" - checksum: a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 languageName: node linkType: hard @@ -6597,7 +6597,7 @@ __metadata: ci-info: "npm:^3.2.0" bin: is-ci: bin.js - checksum: 0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 + checksum: 10c0/0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 languageName: node linkType: hard @@ -6606,14 +6606,14 @@ __metadata: resolution: "is-core-module@npm:2.8.1" dependencies: has: "npm:^1.0.3" - checksum: f1139970deb2ec159c54be154d35cd17d71b9b56c60221ff7c8c328ca7efe20b6d676cef43d08c21966e162bfd5068dcd0ce23e64c77b76a19824563ecd82e0e + checksum: 10c0/f1139970deb2ec159c54be154d35cd17d71b9b56c60221ff7c8c328ca7efe20b6d676cef43d08c21966e162bfd5068dcd0ce23e64c77b76a19824563ecd82e0e languageName: node linkType: hard "is-decimal@npm:^2.0.0": version: 2.0.1 resolution: "is-decimal@npm:2.0.1" - checksum: 8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334 + checksum: 10c0/8085dd66f7d82f9de818fba48b9e9c0429cb4291824e6c5f2622e96b9680b54a07a624cfc663b24148b8e853c62a1c987cfe8b0b5a13f5156991afaf6736e334 languageName: node linkType: hard @@ -6622,28 +6622,28 @@ __metadata: resolution: "is-docker@npm:2.2.1" bin: is-docker: cli.js - checksum: e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc languageName: node linkType: hard "is-extendable@npm:^0.1.0": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" - checksum: dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 + checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" - checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc languageName: node linkType: hard @@ -6652,14 +6652,14 @@ __metadata: resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: "npm:^2.1.1" - checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a languageName: node linkType: hard "is-hexadecimal@npm:^2.0.0": version: 2.0.1 resolution: "is-hexadecimal@npm:2.0.1" - checksum: 3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626 + checksum: 10c0/3eb60fe2f1e2bbc760b927dcad4d51eaa0c60138cf7fc671803f66353ad90c301605b502c7ea4c6bb0548e1c7e79dfd37b73b632652e3b76030bba603a7e9626 languageName: node linkType: hard @@ -6669,70 +6669,70 @@ __metadata: dependencies: global-dirs: "npm:^3.0.0" is-path-inside: "npm:^3.0.2" - checksum: f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d + checksum: 10c0/f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" - checksum: 85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d languageName: node linkType: hard "is-npm@npm:^6.0.0": version: 6.0.0 resolution: "is-npm@npm:6.0.0" - checksum: 1f064c66325cba6e494783bee4e635caa2655aad7f853a0e045d086e0bb7d83d2d6cdf1745dc9a7c7c93dacbf816fbee1f8d9179b02d5d01674d4f92541dc0d9 + checksum: 10c0/1f064c66325cba6e494783bee4e635caa2655aad7f853a0e045d086e0bb7d83d2d6cdf1745dc9a7c7c93dacbf816fbee1f8d9179b02d5d01674d4f92541dc0d9 languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" - checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 languageName: node linkType: hard "is-obj@npm:^1.0.1": version: 1.0.1 resolution: "is-obj@npm:1.0.1" - checksum: 5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 + checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 languageName: node linkType: hard "is-obj@npm:^2.0.0": version: 2.0.0 resolution: "is-obj@npm:2.0.0" - checksum: 85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e + checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e languageName: node linkType: hard "is-path-cwd@npm:^2.2.0": version: 2.2.0 resolution: "is-path-cwd@npm:2.2.0" - checksum: afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a + checksum: 10c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a languageName: node linkType: hard "is-path-inside@npm:^3.0.2": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" - checksum: cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 languageName: node linkType: hard "is-plain-obj@npm:^3.0.0": version: 3.0.0 resolution: "is-plain-obj@npm:3.0.0" - checksum: 8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc + checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc languageName: node linkType: hard "is-plain-obj@npm:^4.0.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" - checksum: 32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e languageName: node linkType: hard @@ -6741,14 +6741,14 @@ __metadata: resolution: "is-plain-object@npm:2.0.4" dependencies: isobject: "npm:^3.0.1" - checksum: f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 languageName: node linkType: hard "is-plain-object@npm:^5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" - checksum: 893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c languageName: node linkType: hard @@ -6757,35 +6757,35 @@ __metadata: resolution: "is-reference@npm:3.0.2" dependencies: "@types/estree": "npm:*" - checksum: 652d31b405e8e8269071cee78fe874b072745012eba202c6dc86880fd603a65ae043e3160990ab4a0a4b33567cbf662eecf3bc6b3c2c1550e6c2b6cf885ce5aa + checksum: 10c0/652d31b405e8e8269071cee78fe874b072745012eba202c6dc86880fd603a65ae043e3160990ab4a0a4b33567cbf662eecf3bc6b3c2c1550e6c2b6cf885ce5aa languageName: node linkType: hard "is-regexp@npm:^1.0.0": version: 1.0.0 resolution: "is-regexp@npm:1.0.0" - checksum: 34cacda1901e00f6e44879378f1d2fa96320ea956c1bec27713130aaf1d44f6e7bd963eed28945bfe37e600cb27df1cf5207302680dad8bdd27b9baff8ecf611 + checksum: 10c0/34cacda1901e00f6e44879378f1d2fa96320ea956c1bec27713130aaf1d44f6e7bd963eed28945bfe37e600cb27df1cf5207302680dad8bdd27b9baff8ecf611 languageName: node linkType: hard "is-root@npm:^2.1.0": version: 2.1.0 resolution: "is-root@npm:2.1.0" - checksum: 83d3f5b052c3f28fbdbdf0d564bdd34fa14933f5694c78704f85cd1871255bc017fbe3fe2bc2fff2d227c6be5927ad2149b135c0a7c0060e7ac4e610d81a4f01 + checksum: 10c0/83d3f5b052c3f28fbdbdf0d564bdd34fa14933f5694c78704f85cd1871255bc017fbe3fe2bc2fff2d227c6be5927ad2149b135c0a7c0060e7ac4e610d81a4f01 languageName: node linkType: hard "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" - checksum: 7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 languageName: node linkType: hard "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" - checksum: 4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec + checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec languageName: node linkType: hard @@ -6794,42 +6794,42 @@ __metadata: resolution: "is-wsl@npm:2.2.0" dependencies: is-docker: "npm:^2.0.0" - checksum: a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e languageName: node linkType: hard "is-yarn-global@npm:^0.4.0": version: 0.4.1 resolution: "is-yarn-global@npm:0.4.1" - checksum: 8ff66f33454614f8e913ad91cc4de0d88d519a46c1ed41b3f589da79504ed0fcfa304064fe3096dda9360c5f35aa210cb8e978fd36798f3118cb66a4de64d365 + checksum: 10c0/8ff66f33454614f8e913ad91cc4de0d88d519a46c1ed41b3f589da79504ed0fcfa304064fe3096dda9360c5f35aa210cb8e978fd36798f3118cb66a4de64d365 languageName: node linkType: hard "isarray@npm:0.0.1": version: 0.0.1 resolution: "isarray@npm:0.0.1" - checksum: ed1e62da617f71fe348907c71743b5ed550448b455f8d269f89a7c7ddb8ae6e962de3dab6a74a237b06f5eb7f6ece7a45ada8ce96d87fe972926530f91ae3311 + checksum: 10c0/ed1e62da617f71fe348907c71743b5ed550448b455f8d269f89a7c7ddb8ae6e962de3dab6a74a237b06f5eb7f6ece7a45ada8ce96d87fe972926530f91ae3311 languageName: node linkType: hard "isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" - checksum: 18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" - checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d languageName: node linkType: hard "isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" - checksum: 03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db languageName: node linkType: hard @@ -6843,7 +6843,7 @@ __metadata: ci-info: "npm:^3.2.0" graceful-fs: "npm:^4.2.9" picomatch: "npm:^2.2.3" - checksum: bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 languageName: node linkType: hard @@ -6854,7 +6854,7 @@ __metadata: "@types/node": "npm:*" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b languageName: node linkType: hard @@ -6866,7 +6866,7 @@ __metadata: jest-util: "npm:^29.7.0" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 languageName: node linkType: hard @@ -6875,7 +6875,7 @@ __metadata: resolution: "jiti@npm:1.21.0" bin: jiti: bin/jiti.js - checksum: 7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f + checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f languageName: node linkType: hard @@ -6888,14 +6888,14 @@ __metadata: "@sideway/address": "npm:^4.1.3" "@sideway/formula": "npm:^3.0.1" "@sideway/pinpoint": "npm:^2.0.0" - checksum: c41c86fe772828b88fbdbcaef2e41235ccbb107c22523a377f9a2fd39829f203213f37a352589f49d9a9b38bf1c645846defede8b81d8c1f3123117c1a600010 + checksum: 10c0/c41c86fe772828b88fbdbcaef2e41235ccbb107c22523a377f9a2fd39829f203213f37a352589f49d9a9b38bf1c645846defede8b81d8c1f3123117c1a600010 languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" - checksum: e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed languageName: node linkType: hard @@ -6907,7 +6907,7 @@ __metadata: esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b languageName: node linkType: hard @@ -6918,7 +6918,7 @@ __metadata: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f languageName: node linkType: hard @@ -6927,7 +6927,7 @@ __metadata: resolution: "jsesc@npm:2.5.2" bin: jsesc: bin/jsesc - checksum: dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 languageName: node linkType: hard @@ -6936,35 +6936,35 @@ __metadata: resolution: "jsesc@npm:0.5.0" bin: jsesc: bin/jsesc - checksum: f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 languageName: node linkType: hard "json-buffer@npm:3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" - checksum: 0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 languageName: node linkType: hard "json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" - checksum: 108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce languageName: node linkType: hard "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" - checksum: 71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 languageName: node linkType: hard @@ -6973,7 +6973,7 @@ __metadata: resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c languageName: node linkType: hard @@ -6986,7 +6986,7 @@ __metadata: dependenciesMeta: graceful-fs: optional: true - checksum: 4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 languageName: node linkType: hard @@ -6995,21 +6995,21 @@ __metadata: resolution: "keyv@npm:4.5.4" dependencies: json-buffer: "npm:3.0.1" - checksum: aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e languageName: node linkType: hard "kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": version: 6.0.3 resolution: "kind-of@npm:6.0.3" - checksum: 61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 languageName: node linkType: hard "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" - checksum: cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b languageName: node linkType: hard @@ -7018,7 +7018,7 @@ __metadata: resolution: "latest-version@npm:7.0.0" dependencies: package-json: "npm:^8.1.0" - checksum: 68045f5e419e005c12e595ae19687dd88317dd0108b83a8773197876622c7e9d164fe43aacca4f434b2cba105c92848b89277f658eabc5d50e81fb743bbcddb1 + checksum: 10c0/68045f5e419e005c12e595ae19687dd88317dd0108b83a8773197876622c7e9d164fe43aacca4f434b2cba105c92848b89277f658eabc5d50e81fb743bbcddb1 languageName: node linkType: hard @@ -7028,42 +7028,42 @@ __metadata: dependencies: picocolors: "npm:^1.0.0" shell-quote: "npm:^1.8.1" - checksum: 82d0bd9a44e7a972157719e63dac1b8196db6ec7066c1ec57a495f6c3d6e734f3c4da89549e7b33eb3b0356668ad02a9e7782b6733f5ebd7a61b7c5f635a3ee9 + checksum: 10c0/82d0bd9a44e7a972157719e63dac1b8196db6ec7066c1ec57a495f6c3d6e734f3c4da89549e7b33eb3b0356668ad02a9e7782b6733f5ebd7a61b7c5f635a3ee9 languageName: node linkType: hard "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" - checksum: cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df languageName: node linkType: hard "lilconfig@npm:^2.0.3": version: 2.0.4 resolution: "lilconfig@npm:2.0.4" - checksum: bdd3d4bd82c6381a3e600962cfc285610564888f126e2cec3cd0fdc41a1892266fa17f32f372a4a6c9c57c265d377ab58a36e2b68a91eedd377389b41334f112 + checksum: 10c0/bdd3d4bd82c6381a3e600962cfc285610564888f126e2cec3cd0fdc41a1892266fa17f32f372a4a6c9c57c265d377ab58a36e2b68a91eedd377389b41334f112 languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" - checksum: 3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d languageName: node linkType: hard "load-script@npm:^1.0.0": version: 1.0.0 resolution: "load-script@npm:1.0.0" - checksum: 9919c777fe83f8a3a917f65c9c3ab186ad8b194248c57f413ef6e610194abc8484d123a6838d77ab33e5fa1a05a676b5dfe779c38cfe602bdd27c239423d0acd + checksum: 10c0/9919c777fe83f8a3a917f65c9c3ab186ad8b194248c57f413ef6e610194abc8484d123a6838d77ab33e5fa1a05a676b5dfe779c38cfe602bdd27c239423d0acd languageName: node linkType: hard "loader-runner@npm:^4.2.0": version: 4.2.0 resolution: "loader-runner@npm:4.2.0" - checksum: 907dee8c4d5841962005e22bf2fa10f7ea5849356243b43e443227641fa202f5edf1c996e5b36697e027533013d35554a46e75d3db8183731f11b5f38db565ea + checksum: 10c0/907dee8c4d5841962005e22bf2fa10f7ea5849356243b43e443227641fa202f5edf1c996e5b36697e027533013d35554a46e75d3db8183731f11b5f38db565ea languageName: node linkType: hard @@ -7074,14 +7074,14 @@ __metadata: big.js: "npm:^5.2.2" emojis-list: "npm:^3.0.0" json5: "npm:^2.1.2" - checksum: d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 languageName: node linkType: hard "loader-utils@npm:^3.2.0": version: 3.2.0 resolution: "loader-utils@npm:3.2.0" - checksum: 573f7059f283b24b2b68cd230d9f0ba87315da8ecc7885734ea5f108fc83c7882e4eb8f8feab65f7db1661ab540f5aea778f48d18b7aadc24c37be77b2ff70a0 + checksum: 10c0/573f7059f283b24b2b68cd230d9f0ba87315da8ecc7885734ea5f108fc83c7882e4eb8f8feab65f7db1661ab540f5aea778f48d18b7aadc24c37be77b2ff70a0 languageName: node linkType: hard @@ -7091,7 +7091,7 @@ __metadata: dependencies: p-locate: "npm:^3.0.0" path-exists: "npm:^3.0.0" - checksum: 3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b languageName: node linkType: hard @@ -7100,7 +7100,7 @@ __metadata: resolution: "locate-path@npm:6.0.0" dependencies: p-locate: "npm:^5.0.0" - checksum: d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 languageName: node linkType: hard @@ -7109,77 +7109,77 @@ __metadata: resolution: "locate-path@npm:7.2.0" dependencies: p-locate: "npm:^6.0.0" - checksum: 139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 languageName: node linkType: hard "lodash.debounce@npm:^4.0.8": version: 4.0.8 resolution: "lodash.debounce@npm:4.0.8" - checksum: 762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 languageName: node linkType: hard "lodash.escape@npm:^4.0.1": version: 4.0.1 resolution: "lodash.escape@npm:4.0.1" - checksum: 90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b + checksum: 10c0/90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b languageName: node linkType: hard "lodash.flatten@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flatten@npm:4.4.0" - checksum: 97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a + checksum: 10c0/97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a languageName: node linkType: hard "lodash.invokemap@npm:^4.6.0": version: 4.6.0 resolution: "lodash.invokemap@npm:4.6.0" - checksum: 2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 + checksum: 10c0/2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 languageName: node linkType: hard "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" - checksum: c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 languageName: node linkType: hard "lodash.pullall@npm:^4.2.0": version: 4.2.0 resolution: "lodash.pullall@npm:4.2.0" - checksum: b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c + checksum: 10c0/b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c languageName: node linkType: hard "lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" - checksum: 262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e + checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e languageName: node linkType: hard "lodash.uniqby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.uniqby@npm:4.7.0" - checksum: c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 + checksum: 10c0/c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 languageName: node linkType: hard "lodash@npm:^4.17.20, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" - checksum: d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c languageName: node linkType: hard "longest-streak@npm:^3.0.0": version: 3.1.0 resolution: "longest-streak@npm:3.1.0" - checksum: 7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa + checksum: 10c0/7c2f02d0454b52834d1bcedef79c557bd295ee71fdabb02d041ff3aa9da48a90b5df7c0409156dedbc4df9b65da18742652aaea4759d6ece01f08971af6a7eaa languageName: node linkType: hard @@ -7190,7 +7190,7 @@ __metadata: js-tokens: "npm:^3.0.0 || ^4.0.0" bin: loose-envify: cli.js - checksum: 655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e languageName: node linkType: hard @@ -7199,14 +7199,14 @@ __metadata: resolution: "lower-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b languageName: node linkType: hard "lowercase-keys@npm:^3.0.0": version: 3.0.0 resolution: "lowercase-keys@npm:3.0.0" - checksum: ef62b9fa5690ab0a6e4ef40c94efce68e3ed124f583cc3be38b26ff871da0178a28b9a84ce0c209653bb25ca135520ab87fea7cd411a54ac4899cb2f30501430 + checksum: 10c0/ef62b9fa5690ab0a6e4ef40c94efce68e3ed124f583cc3be38b26ff871da0178a28b9a84ce0c209653bb25ca135520ab87fea7cd411a54ac4899cb2f30501430 languageName: node linkType: hard @@ -7215,7 +7215,7 @@ __metadata: resolution: "lru-cache@npm:5.1.1" dependencies: yallist: "npm:^3.0.2" - checksum: 89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 languageName: node linkType: hard @@ -7224,14 +7224,14 @@ __metadata: resolution: "lru-cache@npm:6.0.0" dependencies: yallist: "npm:^4.0.0" - checksum: cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 languageName: node linkType: hard "lru-cache@npm:^7.4.0": version: 7.4.1 resolution: "lru-cache@npm:7.4.1" - checksum: 673b4ec8820406dd3f4aa2cadbb9f1b4601e626d0e7d0387af9f29b2eb7c24864971c678bd904bd896fe9ddf451af6aad588d80ee960d5ac7ceac4ca519ede4d + checksum: 10c0/673b4ec8820406dd3f4aa2cadbb9f1b4601e626d0e7d0387af9f29b2eb7c24864971c678bd904bd896fe9ddf451af6aad588d80ee960d5ac7ceac4ca519ede4d languageName: node linkType: hard @@ -7255,21 +7255,21 @@ __metadata: promise-retry: "npm:^2.0.1" socks-proxy-agent: "npm:^6.1.1" ssri: "npm:^8.0.1" - checksum: 7cda9a21858cc3a26641c0102c078ee41d96945fb7000d50f5682dd90679cdc46bad98ca7dfc81759a8eb55ea4a5901704adcc51e72698efc63d6bd5692a574a + checksum: 10c0/7cda9a21858cc3a26641c0102c078ee41d96945fb7000d50f5682dd90679cdc46bad98ca7dfc81759a8eb55ea4a5901704adcc51e72698efc63d6bd5692a574a languageName: node linkType: hard "markdown-extensions@npm:^2.0.0": version: 2.0.0 resolution: "markdown-extensions@npm:2.0.0" - checksum: 406139da2aa0d5ebad86195c8e8c02412f873c452b4c087ae7bc767af37956141be449998223bb379eea179b5fd38dfa610602b6f29c22ddab5d51e627a7e41d + checksum: 10c0/406139da2aa0d5ebad86195c8e8c02412f873c452b4c087ae7bc767af37956141be449998223bb379eea179b5fd38dfa610602b6f29c22ddab5d51e627a7e41d languageName: node linkType: hard "markdown-table@npm:^3.0.0": version: 3.0.3 resolution: "markdown-table@npm:3.0.3" - checksum: 47433a3f31e4637a184e38e873ab1d2fadfb0106a683d466fec329e99a2d8dfa09f091fa42202c6f13ec94aef0199f449a684b28042c636f2edbc1b7e1811dcd + checksum: 10c0/47433a3f31e4637a184e38e873ab1d2fadfb0106a683d466fec329e99a2d8dfa09f091fa42202c6f13ec94aef0199f449a684b28042c636f2edbc1b7e1811dcd languageName: node linkType: hard @@ -7285,7 +7285,7 @@ __metadata: parse-entities: "npm:^4.0.0" stringify-entities: "npm:^4.0.0" unist-util-visit-parents: "npm:^6.0.0" - checksum: 4a71b27f5f0c4ead5293a12d4118d4d832951ac0efdeba4af2dd78f5679f9cabee80feb3619f219a33674c12df3780def1bd3150d7298aaf0ef734f0dfbab999 + checksum: 10c0/4a71b27f5f0c4ead5293a12d4118d4d832951ac0efdeba4af2dd78f5679f9cabee80feb3619f219a33674c12df3780def1bd3150d7298aaf0ef734f0dfbab999 languageName: node linkType: hard @@ -7297,7 +7297,7 @@ __metadata: escape-string-regexp: "npm:^5.0.0" unist-util-is: "npm:^6.0.0" unist-util-visit-parents: "npm:^6.0.0" - checksum: 1faca98c4ee10a919f23b8cc6d818e5bb6953216a71dfd35f51066ed5d51ef86e5063b43dcfdc6061cd946e016a9f0d44a1dccadd58452cf4ed14e39377f00cb + checksum: 10c0/1faca98c4ee10a919f23b8cc6d818e5bb6953216a71dfd35f51066ed5d51ef86e5063b43dcfdc6061cd946e016a9f0d44a1dccadd58452cf4ed14e39377f00cb languageName: node linkType: hard @@ -7317,7 +7317,7 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" unist-util-stringify-position: "npm:^4.0.0" - checksum: fb66e917f66e33fc60d6964264c4abd519fd8829a4a58ff9c61b2ba5c337554fb954b9ec31ca1c34e83c1163a73f310c39072d656f9a2d3184fe39c87cbba65a + checksum: 10c0/fb66e917f66e33fc60d6964264c4abd519fd8829a4a58ff9c61b2ba5c337554fb954b9ec31ca1c34e83c1163a73f310c39072d656f9a2d3184fe39c87cbba65a languageName: node linkType: hard @@ -7331,7 +7331,7 @@ __metadata: mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" micromark-extension-frontmatter: "npm:^2.0.0" - checksum: d9b0b70dd9c574cc0220d4e05dd8e9d86ac972a6a5af9e0c49c839b31cb750d4313445cfbbdf9264a7fbe3f8c8d920b45358b8500f4286e6b9dc830095b25b9a + checksum: 10c0/d9b0b70dd9c574cc0220d4e05dd8e9d86ac972a6a5af9e0c49c839b31cb750d4313445cfbbdf9264a7fbe3f8c8d920b45358b8500f4286e6b9dc830095b25b9a languageName: node linkType: hard @@ -7344,7 +7344,7 @@ __metadata: devlop: "npm:^1.0.0" mdast-util-find-and-replace: "npm:^3.0.0" micromark-util-character: "npm:^2.0.0" - checksum: 821ef91db108f05b321c54fdf4436df9d6badb33e18f714d8d52c0e70f988f5b6b118cdd4d607b4cb3bef1718304ce7e9fb25fa580622c3d20d68c1489c64875 + checksum: 10c0/821ef91db108f05b321c54fdf4436df9d6badb33e18f714d8d52c0e70f988f5b6b118cdd4d607b4cb3bef1718304ce7e9fb25fa580622c3d20d68c1489c64875 languageName: node linkType: hard @@ -7357,7 +7357,7 @@ __metadata: mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" micromark-util-normalize-identifier: "npm:^2.0.0" - checksum: c673b22bea24740235e74cfd66765b41a2fa540334f7043fa934b94938b06b7d3c93f2d3b33671910c5492b922c0cc98be833be3b04cfed540e0679650a6d2de + checksum: 10c0/c673b22bea24740235e74cfd66765b41a2fa540334f7043fa934b94938b06b7d3c93f2d3b33671910c5492b922c0cc98be833be3b04cfed540e0679650a6d2de languageName: node linkType: hard @@ -7368,7 +7368,7 @@ __metadata: "@types/mdast": "npm:^4.0.0" mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056 + checksum: 10c0/b053e93d62c7545019bd914271ea9e5667ad3b3b57d16dbf68e56fea39a7e19b4a345e781312714eb3d43fdd069ff7ee22a3ca7f6149dfa774554f19ce3ac056 languageName: node linkType: hard @@ -7381,7 +7381,7 @@ __metadata: markdown-table: "npm:^3.0.0" mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: 128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e + checksum: 10c0/128af47c503a53bd1c79f20642561e54a510ad5e2db1e418d28fefaf1294ab839e6c838e341aef5d7e404f9170b9ca3d1d89605f234efafde93ee51174a6e31e languageName: node linkType: hard @@ -7393,7 +7393,7 @@ __metadata: devlop: "npm:^1.0.0" mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: 258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834 + checksum: 10c0/258d725288482b636c0a376c296431390c14b4f29588675297cb6580a8598ed311fc73ebc312acfca12cc8546f07a3a285a53a3b082712e2cbf5c190d677d834 languageName: node linkType: hard @@ -7408,7 +7408,7 @@ __metadata: mdast-util-gfm-table: "npm:^2.0.0" mdast-util-gfm-task-list-item: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: 91596fe9bf3e4a0c546d0c57f88106c17956d9afbe88ceb08308e4da2388aff64489d649ddad599caecfdf755fc3ae4c9b82c219b85281bc0586b67599881fca + checksum: 10c0/91596fe9bf3e4a0c546d0c57f88106c17956d9afbe88ceb08308e4da2388aff64489d649ddad599caecfdf755fc3ae4c9b82c219b85281bc0586b67599881fca languageName: node linkType: hard @@ -7422,7 +7422,7 @@ __metadata: devlop: "npm:^1.0.0" mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: 512848cbc44b9dc7cffc1bb3f95f7e67f0d6562870e56a67d25647f475d411e136b915ba417c8069fb36eac1839d0209fb05fb323d377f35626a82fcb0879363 + checksum: 10c0/512848cbc44b9dc7cffc1bb3f95f7e67f0d6562870e56a67d25647f475d411e136b915ba417c8069fb36eac1839d0209fb05fb323d377f35626a82fcb0879363 languageName: node linkType: hard @@ -7443,7 +7443,7 @@ __metadata: unist-util-remove-position: "npm:^5.0.0" unist-util-stringify-position: "npm:^4.0.0" vfile-message: "npm:^4.0.0" - checksum: c14fc72587acd482086be56bb809a142b4d732833593c9a14c1ebb863e549aafbc9391507b177eac8788b2a9de624b8665a2092c75243bbe80f808728ffa421a + checksum: 10c0/c14fc72587acd482086be56bb809a142b4d732833593c9a14c1ebb863e549aafbc9391507b177eac8788b2a9de624b8665a2092c75243bbe80f808728ffa421a languageName: node linkType: hard @@ -7456,7 +7456,7 @@ __metadata: mdast-util-mdx-jsx: "npm:^3.0.0" mdast-util-mdxjs-esm: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: 4faea13f77d6bc9aa64ee41a5e4779110b73444a17fda363df6ebe880ecfa58b321155b71f8801c3faa6d70d6222a32a00cbd6dbf5fad8db417f4688bc9c74e1 + checksum: 10c0/4faea13f77d6bc9aa64ee41a5e4779110b73444a17fda363df6ebe880ecfa58b321155b71f8801c3faa6d70d6222a32a00cbd6dbf5fad8db417f4688bc9c74e1 languageName: node linkType: hard @@ -7470,7 +7470,7 @@ __metadata: devlop: "npm:^1.0.0" mdast-util-from-markdown: "npm:^2.0.0" mdast-util-to-markdown: "npm:^2.0.0" - checksum: 5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc + checksum: 10c0/5bda92fc154141705af2b804a534d891f28dac6273186edf1a4c5e3f045d5b01dbcac7400d27aaf91b7e76e8dce007c7b2fdf136c11ea78206ad00bdf9db46bc languageName: node linkType: hard @@ -7480,7 +7480,7 @@ __metadata: dependencies: "@types/mdast": "npm:^4.0.0" unist-util-is: "npm:^6.0.0" - checksum: bf281d159d1a9a9705ed8fdbadb70c9633d1c25716ff2c282b6c2ecbc1f05cff10f73e5280d754ed833b09d42b00260c4b8d0a5fed4ce3236d4cffb5230b50cf + checksum: 10c0/bf281d159d1a9a9705ed8fdbadb70c9633d1c25716ff2c282b6c2ecbc1f05cff10f73e5280d754ed833b09d42b00260c4b8d0a5fed4ce3236d4cffb5230b50cf languageName: node linkType: hard @@ -7496,7 +7496,7 @@ __metadata: trim-lines: "npm:^3.0.0" unist-util-position: "npm:^5.0.0" unist-util-visit: "npm:^5.0.0" - checksum: f6e9a5b1ab94483ce1cf2ef229578fde4fe7d085f8b9d88a048823da5f93f9469adc98839e8db73f7475e8128a6df30eccad9cd0f9ee0a1d410e74db19b82d8c + checksum: 10c0/f6e9a5b1ab94483ce1cf2ef229578fde4fe7d085f8b9d88a048823da5f93f9469adc98839e8db73f7475e8128a6df30eccad9cd0f9ee0a1d410e74db19b82d8c languageName: node linkType: hard @@ -7512,7 +7512,7 @@ __metadata: micromark-util-decode-string: "npm:^2.0.0" unist-util-visit: "npm:^5.0.0" zwitch: "npm:^2.0.0" - checksum: 8bd37a9627a438ef6418d6642661904d0cc03c5c732b8b018a8e238ef5cc82fe8aef1940b19c6f563245e58b9659f35e527209bd3fe145f3c723ba14d18fc3e6 + checksum: 10c0/8bd37a9627a438ef6418d6642661904d0cc03c5c732b8b018a8e238ef5cc82fe8aef1940b19c6f563245e58b9659f35e527209bd3fe145f3c723ba14d18fc3e6 languageName: node linkType: hard @@ -7521,21 +7521,21 @@ __metadata: resolution: "mdast-util-to-string@npm:4.0.0" dependencies: "@types/mdast": "npm:^4.0.0" - checksum: 2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7 + checksum: 10c0/2d3c1af29bf3fe9c20f552ee9685af308002488f3b04b12fa66652c9718f66f41a32f8362aa2d770c3ff464c034860b41715902ada2306bb0a055146cef064d7 languageName: node linkType: hard "mdn-data@npm:2.0.14": version: 2.0.14 resolution: "mdn-data@npm:2.0.14" - checksum: 67241f8708c1e665a061d2b042d2d243366e93e5bf1f917693007f6d55111588b952dcbfd3ea9c2d0969fb754aad81b30fdcfdcc24546495fc3b24336b28d4bd + checksum: 10c0/67241f8708c1e665a061d2b042d2d243366e93e5bf1f917693007f6d55111588b952dcbfd3ea9c2d0969fb754aad81b30fdcfdcc24546495fc3b24336b28d4bd languageName: node linkType: hard "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" - checksum: d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 languageName: node linkType: hard @@ -7544,42 +7544,42 @@ __metadata: resolution: "memfs@npm:3.4.1" dependencies: fs-monkey: "npm:1.0.3" - checksum: d8f73f0903c7802027fea07b5cc39fc984f0fdff528214a0ef2937001fec88e11d755675a725e83a2b14a7c96c054c903bf7d1774d5133116597f201c37f6a5e + checksum: 10c0/d8f73f0903c7802027fea07b5cc39fc984f0fdff528214a0ef2937001fec88e11d755675a725e83a2b14a7c96c054c903bf7d1774d5133116597f201c37f6a5e languageName: node linkType: hard "memoize-one@npm:^5.1.1": version: 5.2.1 resolution: "memoize-one@npm:5.2.1" - checksum: fd22dbe9a978a2b4f30d6a491fc02fb90792432ad0dab840dc96c1734d2bd7c9cdeb6a26130ec60507eb43230559523615873168bcbe8fafab221c30b11d54c1 + checksum: 10c0/fd22dbe9a978a2b4f30d6a491fc02fb90792432ad0dab840dc96c1734d2bd7c9cdeb6a26130ec60507eb43230559523615873168bcbe8fafab221c30b11d54c1 languageName: node linkType: hard "merge-descriptors@npm:1.0.1": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" - checksum: b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec + checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec languageName: node linkType: hard "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" - checksum: 867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 languageName: node linkType: hard "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" - checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb languageName: node linkType: hard "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" - checksum: bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 languageName: node linkType: hard @@ -7603,7 +7603,7 @@ __metadata: micromark-util-subtokenize: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: e087824b98d1f1d0db34791ac53945b0d68fb5e541c6c9da6700cc3db54d6b697d8110d3120d5d30e2fb39443aabddccd3e2bbf684795359f38b5a696fdc5913 + checksum: 10c0/e087824b98d1f1d0db34791ac53945b0d68fb5e541c6c9da6700cc3db54d6b697d8110d3120d5d30e2fb39443aabddccd3e2bbf684795359f38b5a696fdc5913 languageName: node linkType: hard @@ -7618,7 +7618,7 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" parse-entities: "npm:^4.0.0" - checksum: ee84ecb445fb9f94bf36bf8f0dfd2c81b3fb5f46c275b9ac4445b9a0030a1ccbc3174707321b5512116f482e3a1fc8f0541ccaf57f924999f48141818f05595e + checksum: 10c0/ee84ecb445fb9f94bf36bf8f0dfd2c81b3fb5f46c275b9ac4445b9a0030a1ccbc3174707321b5512116f482e3a1fc8f0541ccaf57f924999f48141818f05595e languageName: node linkType: hard @@ -7630,7 +7630,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 7d0d876e598917a67146d29f536d6fbbf9d1b2401a77e2f64a3f80f934a63ff26fa94b01759c9185c24b2a91e4e6abf908fa7aa246f00a7778a6b37a17464300 + checksum: 10c0/7d0d876e598917a67146d29f536d6fbbf9d1b2401a77e2f64a3f80f934a63ff26fa94b01759c9185c24b2a91e4e6abf908fa7aa246f00a7778a6b37a17464300 languageName: node linkType: hard @@ -7642,7 +7642,7 @@ __metadata: micromark-util-sanitize-uri: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 9349b8a4c45ad6375d85f196ef6ffc7472311bf0e7493dc387cb6e37498c2fa56f0b670f54ae54f0c6bbbed3b22997643f05057ffcc58457ca56368f7a636319 + checksum: 10c0/9349b8a4c45ad6375d85f196ef6ffc7472311bf0e7493dc387cb6e37498c2fa56f0b670f54ae54f0c6bbbed3b22997643f05057ffcc58457ca56368f7a636319 languageName: node linkType: hard @@ -7658,7 +7658,7 @@ __metadata: micromark-util-sanitize-uri: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 59958d8a6e28a16470937de69a01476cd9766f310a892655cb6bcd32b0833ffaa8accddb77e031b1c710c856fc943174e1b0f8f2c60dfa542743f4ba7cff6f15 + checksum: 10c0/59958d8a6e28a16470937de69a01476cd9766f310a892655cb6bcd32b0833ffaa8accddb77e031b1c710c856fc943174e1b0f8f2c60dfa542743f4ba7cff6f15 languageName: node linkType: hard @@ -7672,7 +7672,7 @@ __metadata: micromark-util-resolve-all: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: b1c4f0e12935e1ffa3981a256de38c5c347f91a015cc1002c0bcdbab476fa97a5992f0d5a9788b2437a96bc94fe4c32d5f539d84b2d699a36dafe31b81b41eb1 + checksum: 10c0/b1c4f0e12935e1ffa3981a256de38c5c347f91a015cc1002c0bcdbab476fa97a5992f0d5a9788b2437a96bc94fe4c32d5f539d84b2d699a36dafe31b81b41eb1 languageName: node linkType: hard @@ -7685,7 +7685,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 3777b5074054d97888ffdcb8e383399adc9066a755ad7197423fda16e09769a18d7e713d969c204228d9abf1e18fef19c7b04790698afc973418ea5f75015f72 + checksum: 10c0/3777b5074054d97888ffdcb8e383399adc9066a755ad7197423fda16e09769a18d7e713d969c204228d9abf1e18fef19c7b04790698afc973418ea5f75015f72 languageName: node linkType: hard @@ -7694,7 +7694,7 @@ __metadata: resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0" dependencies: micromark-util-types: "npm:^2.0.0" - checksum: 995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d + checksum: 10c0/995558843fff137ae4e46aecb878d8a4691cdf23527dcf1e2f0157d66786be9f7bea0109c52a8ef70e68e3f930af811828ba912239438e31a9cfb9981f44d34d languageName: node linkType: hard @@ -7707,7 +7707,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 16a55040a1697339eeeeebaabbbe28dc9e8281979cdeec343a58dc97f7b447365d3e37329f394455c5d17902639b786c7669dbbc4ea558cf8680eb7808330598 + checksum: 10c0/16a55040a1697339eeeeebaabbbe28dc9e8281979cdeec343a58dc97f7b447365d3e37329f394455c5d17902639b786c7669dbbc4ea558cf8680eb7808330598 languageName: node linkType: hard @@ -7723,7 +7723,7 @@ __metadata: micromark-extension-gfm-task-list-item: "npm:^2.0.0" micromark-util-combine-extensions: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9 + checksum: 10c0/970e28df6ebdd7c7249f52a0dda56e0566fbfa9ae56c8eeeb2445d77b6b89d44096880cd57a1c01e7821b1f4e31009109fbaca4e89731bff7b83b8519690e5d9 languageName: node linkType: hard @@ -7739,7 +7739,7 @@ __metadata: micromark-util-events-to-acorn: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: fa799c594d8ff9ecbbd28e226959c4928590cfcddb60a926d9d859d00fc7acd25684b6f78dbe6a7f0830879a402b4a3628efd40bb9df1f5846e6d2b7332715f7 + checksum: 10c0/fa799c594d8ff9ecbbd28e226959c4928590cfcddb60a926d9d859d00fc7acd25684b6f78dbe6a7f0830879a402b4a3628efd40bb9df1f5846e6d2b7332715f7 languageName: node linkType: hard @@ -7757,7 +7757,7 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" vfile-message: "npm:^4.0.0" - checksum: 18a81c8def7f3a2088dc435bba19e649c19f679464b1a01e2c680f9518820e70fb0974b8403c790aee8f44205833a280b56ba157fe5a5b2903b476c5de5ba353 + checksum: 10c0/18a81c8def7f3a2088dc435bba19e649c19f679464b1a01e2c680f9518820e70fb0974b8403c790aee8f44205833a280b56ba157fe5a5b2903b476c5de5ba353 languageName: node linkType: hard @@ -7766,7 +7766,7 @@ __metadata: resolution: "micromark-extension-mdx-md@npm:2.0.0" dependencies: micromark-util-types: "npm:^2.0.0" - checksum: bae91c61273de0e5ba80a980c03470e6cd9d7924aa936f46fbda15d780704d9386e945b99eda200e087b96254fbb4271a9545d5ce02676cd6ae67886a8bf82df + checksum: 10c0/bae91c61273de0e5ba80a980c03470e6cd9d7924aa936f46fbda15d780704d9386e945b99eda200e087b96254fbb4271a9545d5ce02676cd6ae67886a8bf82df languageName: node linkType: hard @@ -7783,7 +7783,7 @@ __metadata: micromark-util-types: "npm:^2.0.0" unist-util-position-from-estree: "npm:^2.0.0" vfile-message: "npm:^4.0.0" - checksum: 13e3f726495a960650cdedcba39198ace5bdc953ccb12c14d71fc9ed9bb88e40cc3ba9231e973f6984da3b3573e7ddb23ce409f7c16f52a8d57b608bf46c748d + checksum: 10c0/13e3f726495a960650cdedcba39198ace5bdc953ccb12c14d71fc9ed9bb88e40cc3ba9231e973f6984da3b3573e7ddb23ce409f7c16f52a8d57b608bf46c748d languageName: node linkType: hard @@ -7799,7 +7799,7 @@ __metadata: micromark-extension-mdxjs-esm: "npm:^3.0.0" micromark-util-combine-extensions: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: fd84f036ddad0aabbc12e7f1b3e9dcfe31573bbc413c5ae903779ef0366d7a4c08193547e7ba75718c9f45654e45f52e575cfc2f23a5f89205a8a70d9a506aea + checksum: 10c0/fd84f036ddad0aabbc12e7f1b3e9dcfe31573bbc413c5ae903779ef0366d7a4c08193547e7ba75718c9f45654e45f52e575cfc2f23a5f89205a8a70d9a506aea languageName: node linkType: hard @@ -7810,7 +7810,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: b73492f687d41a6a379159c2f3acbf813042346bcea523d9041d0cc6124e6715f0779dbb2a0b3422719e9764c3b09f9707880aa159557e3cb4aeb03b9d274915 + checksum: 10c0/b73492f687d41a6a379159c2f3acbf813042346bcea523d9041d0cc6124e6715f0779dbb2a0b3422719e9764c3b09f9707880aa159557e3cb4aeb03b9d274915 languageName: node linkType: hard @@ -7822,7 +7822,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 8ffad00487a7891941b1d1f51d53a33c7a659dcf48617edb7a4008dad7aff67ec316baa16d55ca98ae3d75ce1d81628dbf72fedc7c6f108f740dec0d5d21c8ee + checksum: 10c0/8ffad00487a7891941b1d1f51d53a33c7a659dcf48617edb7a4008dad7aff67ec316baa16d55ca98ae3d75ce1d81628dbf72fedc7c6f108f740dec0d5d21c8ee languageName: node linkType: hard @@ -7838,7 +7838,7 @@ __metadata: micromark-util-types: "npm:^2.0.0" unist-util-position-from-estree: "npm:^2.0.0" vfile-message: "npm:^4.0.0" - checksum: d9cf475a73a7fbfa09aba0d057e033d57e45b7adff78692be9efb4405c4a1717ece4594a632f92a4302e4f8f2ae96355785b616e3f5b2fe8599ec24cfdeee12d + checksum: 10c0/d9cf475a73a7fbfa09aba0d057e033d57e45b7adff78692be9efb4405c4a1717ece4594a632f92a4302e4f8f2ae96355785b616e3f5b2fe8599ec24cfdeee12d languageName: node linkType: hard @@ -7848,7 +7848,7 @@ __metadata: dependencies: micromark-util-character: "npm:^1.0.0" micromark-util-types: "npm:^1.0.0" - checksum: 3da81187ce003dd4178c7adc4674052fb8befc8f1a700ae4c8227755f38581a4ae963866dc4857488d62d1dc9837606c9f2f435fa1332f62a0f1c49b83c6a822 + checksum: 10c0/3da81187ce003dd4178c7adc4674052fb8befc8f1a700ae4c8227755f38581a4ae963866dc4857488d62d1dc9837606c9f2f435fa1332f62a0f1c49b83c6a822 languageName: node linkType: hard @@ -7858,7 +7858,7 @@ __metadata: dependencies: micromark-util-character: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 103ca954dade963d4ff1d2f27d397833fe855ddc72590205022832ef68b775acdea67949000cee221708e376530b1de78c745267b0bf8366740840783eb37122 + checksum: 10c0/103ca954dade963d4ff1d2f27d397833fe855ddc72590205022832ef68b775acdea67949000cee221708e376530b1de78c745267b0bf8366740840783eb37122 languageName: node linkType: hard @@ -7870,7 +7870,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 2b2188e7a011b1b001faf8c860286d246d5c3485ef8819270c60a5808f4c7613e49d4e481dbdff62600ef7acdba0f5100be2d125cbd2a15e236c26b3668a8ebd + checksum: 10c0/2b2188e7a011b1b001faf8c860286d246d5c3485ef8819270c60a5808f4c7613e49d4e481dbdff62600ef7acdba0f5100be2d125cbd2a15e236c26b3668a8ebd languageName: node linkType: hard @@ -7882,7 +7882,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 4e91baab0cc71873095134bd0e225d01d9786cde352701402d71b72d317973954754e8f9f1849901f165530e6421202209f4d97c460a27bb0808ec5a3fc3148c + checksum: 10c0/4e91baab0cc71873095134bd0e225d01d9786cde352701402d71b72d317973954754e8f9f1849901f165530e6421202209f4d97c460a27bb0808ec5a3fc3148c languageName: node linkType: hard @@ -7892,7 +7892,7 @@ __metadata: dependencies: micromark-util-symbol: "npm:^1.0.0" micromark-util-types: "npm:^1.0.0" - checksum: 3390a675a50731b58a8e5493cd802e190427f10fa782079b455b00f6b54e406e36882df7d4a3bd32b709f7a2c3735b4912597ebc1c0a99566a8d8d0b816e2cd4 + checksum: 10c0/3390a675a50731b58a8e5493cd802e190427f10fa782079b455b00f6b54e406e36882df7d4a3bd32b709f7a2c3735b4912597ebc1c0a99566a8d8d0b816e2cd4 languageName: node linkType: hard @@ -7902,7 +7902,7 @@ __metadata: dependencies: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 5b91c90f29c8873a9f2f2385bbeb70f481b0e56c26092451d1796cd323257927a69eccca19b079d83d5751ec6fc92964214a3c868114555f87631426631df6b9 + checksum: 10c0/5b91c90f29c8873a9f2f2385bbeb70f481b0e56c26092451d1796cd323257927a69eccca19b079d83d5751ec6fc92964214a3c868114555f87631426631df6b9 languageName: node linkType: hard @@ -7911,7 +7911,7 @@ __metadata: resolution: "micromark-util-chunked@npm:2.0.0" dependencies: micromark-util-symbol: "npm:^2.0.0" - checksum: 043b5f2abc8c13a1e2e4c378ead191d1a47ed9e0cd6d0fa5a0a430b2df9e17ada9d5de5a20688a000bbc5932507e746144acec60a9589d9a79fa60918e029203 + checksum: 10c0/043b5f2abc8c13a1e2e4c378ead191d1a47ed9e0cd6d0fa5a0a430b2df9e17ada9d5de5a20688a000bbc5932507e746144acec60a9589d9a79fa60918e029203 languageName: node linkType: hard @@ -7922,7 +7922,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 2bf5fa5050faa9b69f6c7e51dbaaf02329ab70fabad8229984381b356afbbf69db90f4617bec36d814a7d285fb7cad8e3c4e38d1daf4387dc9e240aa7f9a292a + checksum: 10c0/2bf5fa5050faa9b69f6c7e51dbaaf02329ab70fabad8229984381b356afbbf69db90f4617bec36d814a7d285fb7cad8e3c4e38d1daf4387dc9e240aa7f9a292a languageName: node linkType: hard @@ -7932,7 +7932,7 @@ __metadata: dependencies: micromark-util-chunked: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: cd4c8d1a85255527facb419ff3b3cc3d7b7f27005c5ef5fa7ef2c4d0e57a9129534fc292a188ec2d467c2c458642d369c5f894bc8a9e142aed6696cc7989d3ea + checksum: 10c0/cd4c8d1a85255527facb419ff3b3cc3d7b7f27005c5ef5fa7ef2c4d0e57a9129534fc292a188ec2d467c2c458642d369c5f894bc8a9e142aed6696cc7989d3ea languageName: node linkType: hard @@ -7941,7 +7941,7 @@ __metadata: resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" dependencies: micromark-util-symbol: "npm:^2.0.0" - checksum: 3f6d684ee8f317c67806e19b3e761956256cb936a2e0533aad6d49ac5604c6536b2041769c6febdd387ab7175b7b7e551851bf2c1f78da943e7a3671ca7635ac + checksum: 10c0/3f6d684ee8f317c67806e19b3e761956256cb936a2e0533aad6d49ac5604c6536b2041769c6febdd387ab7175b7b7e551851bf2c1f78da943e7a3671ca7635ac languageName: node linkType: hard @@ -7953,14 +7953,14 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-decode-numeric-character-reference: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" - checksum: f5413bebb21bdb686cfa1bcfa7e9c93093a523d1b42443ead303b062d2d680a94e5e8424549f57b8ba9d786a758e5a26a97f56068991bbdbca5d1885b3aa7227 + checksum: 10c0/f5413bebb21bdb686cfa1bcfa7e9c93093a523d1b42443ead303b062d2d680a94e5e8424549f57b8ba9d786a758e5a26a97f56068991bbdbca5d1885b3aa7227 languageName: node linkType: hard "micromark-util-encode@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-encode@npm:2.0.0" - checksum: ebdaafff23100bbf4c74e63b4b1612a9ddf94cd7211d6a076bc6fb0bc32c1b48d6fb615aa0953e607c62c97d849f97f1042260d3eb135259d63d372f401bbbb2 + checksum: 10c0/ebdaafff23100bbf4c74e63b4b1612a9ddf94cd7211d6a076bc6fb0bc32c1b48d6fb615aa0953e607c62c97d849f97f1042260d3eb135259d63d372f401bbbb2 languageName: node linkType: hard @@ -7976,14 +7976,14 @@ __metadata: micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" vfile-message: "npm:^4.0.0" - checksum: 2bd2660a49efddb625e6adcabdc3384ae4c50c7a04270737270f4aab53d09e8253e6d2607cd947c4c77f8a9900278915babb240e61fd143dc5bab51d9fd50709 + checksum: 10c0/2bd2660a49efddb625e6adcabdc3384ae4c50c7a04270737270f4aab53d09e8253e6d2607cd947c4c77f8a9900278915babb240e61fd143dc5bab51d9fd50709 languageName: node linkType: hard "micromark-util-html-tag-name@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-html-tag-name@npm:2.0.0" - checksum: 988aa26367449bd345b627ae32cf605076daabe2dc1db71b578a8a511a47123e14af466bcd6dcbdacec60142f07bc2723ec5f7a0eed0f5319ce83b5e04825429 + checksum: 10c0/988aa26367449bd345b627ae32cf605076daabe2dc1db71b578a8a511a47123e14af466bcd6dcbdacec60142f07bc2723ec5f7a0eed0f5319ce83b5e04825429 languageName: node linkType: hard @@ -7992,7 +7992,7 @@ __metadata: resolution: "micromark-util-normalize-identifier@npm:2.0.0" dependencies: micromark-util-symbol: "npm:^2.0.0" - checksum: 93bf8789b8449538f22cf82ac9b196363a5f3b2f26efd98aef87c4c1b1f8c05be3ef6391ff38316ff9b03c1a6fd077342567598019ddd12b9bd923dacc556333 + checksum: 10c0/93bf8789b8449538f22cf82ac9b196363a5f3b2f26efd98aef87c4c1b1f8c05be3ef6391ff38316ff9b03c1a6fd077342567598019ddd12b9bd923dacc556333 languageName: node linkType: hard @@ -8001,7 +8001,7 @@ __metadata: resolution: "micromark-util-resolve-all@npm:2.0.0" dependencies: micromark-util-types: "npm:^2.0.0" - checksum: 3b912e88453dcefe728a9080c8934a75ac4732056d6576ceecbcaf97f42c5d6fa2df66db8abdc8427eb167c5ffddefe26713728cfe500bc0e314ed260d6e2746 + checksum: 10c0/3b912e88453dcefe728a9080c8934a75ac4732056d6576ceecbcaf97f42c5d6fa2df66db8abdc8427eb167c5ffddefe26713728cfe500bc0e314ed260d6e2746 languageName: node linkType: hard @@ -8012,7 +8012,7 @@ __metadata: micromark-util-character: "npm:^2.0.0" micromark-util-encode: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" - checksum: 74763ca1c927dd520d3ab8fd9856a19740acf76fc091f0a1f5d4e99c8cd5f1b81c5a0be3efb564941a071fb6d85fd951103f2760eb6cff77b5ab3abe08341309 + checksum: 10c0/74763ca1c927dd520d3ab8fd9856a19740acf76fc091f0a1f5d4e99c8cd5f1b81c5a0be3efb564941a071fb6d85fd951103f2760eb6cff77b5ab3abe08341309 languageName: node linkType: hard @@ -8024,35 +8024,35 @@ __metadata: micromark-util-chunked: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 1907c56c4974d430b984c50b3eb0930241112d931e611f178dee17d58f2976614950631b70f4e9c7e49dbccf21f91654ee61f250e028bf2f2b0f3d3aeb168da8 + checksum: 10c0/1907c56c4974d430b984c50b3eb0930241112d931e611f178dee17d58f2976614950631b70f4e9c7e49dbccf21f91654ee61f250e028bf2f2b0f3d3aeb168da8 languageName: node linkType: hard "micromark-util-symbol@npm:^1.0.0, micromark-util-symbol@npm:^1.0.1": version: 1.1.0 resolution: "micromark-util-symbol@npm:1.1.0" - checksum: 10ceaed33a90e6bfd3a5d57053dbb53f437d4809cc11430b5a09479c0ba601577059be9286df4a7eae6e350a60a2575dc9fa9d9872b5b8d058c875e075c33803 + checksum: 10c0/10ceaed33a90e6bfd3a5d57053dbb53f437d4809cc11430b5a09479c0ba601577059be9286df4a7eae6e350a60a2575dc9fa9d9872b5b8d058c875e075c33803 languageName: node linkType: hard "micromark-util-symbol@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-symbol@npm:2.0.0" - checksum: 4e76186c185ce4cefb9cea8584213d9ffacd77099d1da30c0beb09fa21f46f66f6de4c84c781d7e34ff763fe3a06b530e132fa9004882afab9e825238d0aa8b3 + checksum: 10c0/4e76186c185ce4cefb9cea8584213d9ffacd77099d1da30c0beb09fa21f46f66f6de4c84c781d7e34ff763fe3a06b530e132fa9004882afab9e825238d0aa8b3 languageName: node linkType: hard "micromark-util-types@npm:^1.0.0": version: 1.1.0 resolution: "micromark-util-types@npm:1.1.0" - checksum: a9749cb0a12a252ff536baabcb7012421b6fad4d91a5fdd80d7b33dc7b4c22e2d0c4637dfe5b902d00247fe6c9b01f4a24fce6b572b16ccaa4da90e6ce2a11e4 + checksum: 10c0/a9749cb0a12a252ff536baabcb7012421b6fad4d91a5fdd80d7b33dc7b4c22e2d0c4637dfe5b902d00247fe6c9b01f4a24fce6b572b16ccaa4da90e6ce2a11e4 languageName: node linkType: hard "micromark-util-types@npm:^2.0.0": version: 2.0.0 resolution: "micromark-util-types@npm:2.0.0" - checksum: d74e913b9b61268e0d6939f4209e3abe9dada640d1ee782419b04fd153711112cfaaa3c4d5f37225c9aee1e23c3bb91a1f5223e1e33ba92d33e83956a53e61de + checksum: 10c0/d74e913b9b61268e0d6939f4209e3abe9dada640d1ee782419b04fd153711112cfaaa3c4d5f37225c9aee1e23c3bb91a1f5223e1e33ba92d33e83956a53e61de languageName: node linkType: hard @@ -8077,7 +8077,7 @@ __metadata: micromark-util-subtokenize: "npm:^2.0.0" micromark-util-symbol: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" - checksum: 7e91c8d19ff27bc52964100853f1b3b32bb5b2ece57470a34ba1b2f09f4e2a183d90106c4ae585c9f2046969ee088576fed79b2f7061cba60d16652ccc2c64fd + checksum: 10c0/7e91c8d19ff27bc52964100853f1b3b32bb5b2ece57470a34ba1b2f09f4e2a183d90106c4ae585c9f2046969ee088576fed79b2f7061cba60d16652ccc2c64fd languageName: node linkType: hard @@ -8087,21 +8087,21 @@ __metadata: dependencies: braces: "npm:^3.0.2" picomatch: "npm:^2.3.1" - checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff languageName: node linkType: hard "mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" - checksum: 0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa languageName: node linkType: hard "mime-db@npm:~1.33.0": version: 1.33.0 resolution: "mime-db@npm:1.33.0" - checksum: 79172ce5468c8503b49dddfdddc18d3f5fe2599f9b5fe1bc321a8cbee14c96730fc6db22f907b23701b05b2936f865795f62ec3a78a7f3c8cb2450bb68c6763e + checksum: 10c0/79172ce5468c8503b49dddfdddc18d3f5fe2599f9b5fe1bc321a8cbee14c96730fc6db22f907b23701b05b2936f865795f62ec3a78a7f3c8cb2450bb68c6763e languageName: node linkType: hard @@ -8110,7 +8110,7 @@ __metadata: resolution: "mime-types@npm:2.1.18" dependencies: mime-db: "npm:~1.33.0" - checksum: a96a8d12f4bb98bc7bfac6a8ccbd045f40368fc1030d9366050c3613825d3715d1c1f393e10a75a885d2cdc1a26cd6d5e11f3a2a0d5c4d361f00242139430a0f + checksum: 10c0/a96a8d12f4bb98bc7bfac6a8ccbd045f40368fc1030d9366050c3613825d3715d1c1f393e10a75a885d2cdc1a26cd6d5e11f3a2a0d5c4d361f00242139430a0f languageName: node linkType: hard @@ -8119,7 +8119,7 @@ __metadata: resolution: "mime-types@npm:2.1.35" dependencies: mime-db: "npm:1.52.0" - checksum: 82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 languageName: node linkType: hard @@ -8128,28 +8128,28 @@ __metadata: resolution: "mime@npm:1.6.0" bin: mime: cli.js - checksum: b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 languageName: node linkType: hard "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" - checksum: b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 languageName: node linkType: hard "mimic-response@npm:^3.1.0": version: 3.1.0 resolution: "mimic-response@npm:3.1.0" - checksum: 0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 + checksum: 10c0/0d6f07ce6e03e9e4445bee655202153bdb8a98d67ee8dc965ac140900d7a2688343e6b4c9a72cfc9ef2f7944dfd76eef4ab2482eb7b293a68b84916bac735362 languageName: node linkType: hard "mimic-response@npm:^4.0.0": version: 4.0.0 resolution: "mimic-response@npm:4.0.0" - checksum: 761d788d2668ae9292c489605ffd4fad220f442fbae6832adce5ebad086d691e906a6d5240c290293c7a11e99fbdbbef04abbbed498bf8699a4ee0f31315e3fb + checksum: 10c0/761d788d2668ae9292c489605ffd4fad220f442fbae6832adce5ebad086d691e906a6d5240c290293c7a11e99fbdbbef04abbbed498bf8699a4ee0f31315e3fb languageName: node linkType: hard @@ -8160,14 +8160,14 @@ __metadata: schema-utils: "npm:^4.0.0" peerDependencies: webpack: ^5.0.0 - checksum: 4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 + checksum: 10c0/4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 languageName: node linkType: hard "minimalistic-assert@npm:^1.0.0": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" - checksum: 96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd languageName: node linkType: hard @@ -8176,7 +8176,7 @@ __metadata: resolution: "minimatch@npm:3.0.4" dependencies: brace-expansion: "npm:^1.1.7" - checksum: d0a2bcd93ebec08a9eef3ca83ba33c9fb6feb93932e0b4dc6aa46c5f37a9404bea7ad9ff7cafe23ce6634f1fe3b206f5315ecbb05812da6e692c21d8ecfd3dae + checksum: 10c0/d0a2bcd93ebec08a9eef3ca83ba33c9fb6feb93932e0b4dc6aa46c5f37a9404bea7ad9ff7cafe23ce6634f1fe3b206f5315ecbb05812da6e692c21d8ecfd3dae languageName: node linkType: hard @@ -8185,14 +8185,14 @@ __metadata: resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 languageName: node linkType: hard "minimist@npm:^1.2.0": version: 1.2.8 resolution: "minimist@npm:1.2.8" - checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 languageName: node linkType: hard @@ -8201,7 +8201,7 @@ __metadata: resolution: "minipass-collect@npm:1.0.2" dependencies: minipass: "npm:^3.0.0" - checksum: 8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 + checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 languageName: node linkType: hard @@ -8216,7 +8216,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: a77815f36fc1c242fdb333040a9cd97fed940db5a851665a63ecb3499d47739f4da924e1b351355020b4644bc515af9de4a166c693d71c45907568bfcfada70e + checksum: 10c0/a77815f36fc1c242fdb333040a9cd97fed940db5a851665a63ecb3499d47739f4da924e1b351355020b4644bc515af9de4a166c693d71c45907568bfcfada70e languageName: node linkType: hard @@ -8225,7 +8225,7 @@ __metadata: resolution: "minipass-flush@npm:1.0.5" dependencies: minipass: "npm:^3.0.0" - checksum: 2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd languageName: node linkType: hard @@ -8234,7 +8234,7 @@ __metadata: resolution: "minipass-pipeline@npm:1.2.4" dependencies: minipass: "npm:^3.0.0" - checksum: cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 languageName: node linkType: hard @@ -8243,7 +8243,7 @@ __metadata: resolution: "minipass-sized@npm:1.0.3" dependencies: minipass: "npm:^3.0.0" - checksum: 298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb languageName: node linkType: hard @@ -8252,7 +8252,7 @@ __metadata: resolution: "minipass@npm:3.1.6" dependencies: yallist: "npm:^4.0.0" - checksum: 65c3007875602b0ed0e1ab11a284b8aea80cd7c3757a8db75ca3850bd1cd728bec1c87bb03fe35355aecd61e08de4875d7a81c654372ec0b50c29e13f2c3b924 + checksum: 10c0/65c3007875602b0ed0e1ab11a284b8aea80cd7c3757a8db75ca3850bd1cd728bec1c87bb03fe35355aecd61e08de4875d7a81c654372ec0b50c29e13f2c3b924 languageName: node linkType: hard @@ -8262,7 +8262,7 @@ __metadata: dependencies: minipass: "npm:^3.0.0" yallist: "npm:^4.0.0" - checksum: 64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 languageName: node linkType: hard @@ -8271,35 +8271,35 @@ __metadata: resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js - checksum: 46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf languageName: node linkType: hard "mrmime@npm:^1.0.0": version: 1.0.0 resolution: "mrmime@npm:1.0.0" - checksum: 23a5b92a70a404a25840bf3e50299cd92d4b5b644e96a30c075c4840c0c77879791913316c69f2edd324dfd9b222dd8f74b9cf9c33b041451cbd0765706e0e5c + checksum: 10c0/23a5b92a70a404a25840bf3e50299cd92d4b5b644e96a30c075c4840c0c77879791913316c69f2edd324dfd9b222dd8f74b9cf9c33b041451cbd0765706e0e5c languageName: node linkType: hard "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" - checksum: f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" - checksum: a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc languageName: node linkType: hard "ms@npm:2.1.3, ms@npm:^2.0.0": version: 2.1.3 resolution: "ms@npm:2.1.3" - checksum: d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 languageName: node linkType: hard @@ -8311,7 +8311,7 @@ __metadata: thunky: "npm:^1.0.2" bin: multicast-dns: cli.js - checksum: b1c48d4b195a06a697691b791bf95b0aefd117479d9dd424ec848d1ecb7a8f4b3750d3b7974dde8c182b2110bfede36b46546caa47aa3c3ac421da945a4688e9 + checksum: 10c0/b1c48d4b195a06a697691b791bf95b0aefd117479d9dd424ec848d1ecb7a8f4b3750d3b7974dde8c182b2110bfede36b46546caa47aa3c3ac421da945a4688e9 languageName: node linkType: hard @@ -8320,21 +8320,21 @@ __metadata: resolution: "nanoid@npm:3.3.6" bin: nanoid: bin/nanoid.cjs - checksum: 606b355960d0fcbe3d27924c4c52ef7d47d3b57208808ece73279420d91469b01ec1dce10fae512b6d4a8c5a5432b352b228336a8b2202a6ea68e67fa348e2ee + checksum: 10c0/606b355960d0fcbe3d27924c4c52ef7d47d3b57208808ece73279420d91469b01ec1dce10fae512b6d4a8c5a5432b352b228336a8b2202a6ea68e67fa348e2ee languageName: node linkType: hard "negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" - checksum: 3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 languageName: node linkType: hard "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" - checksum: c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d languageName: node linkType: hard @@ -8344,7 +8344,7 @@ __metadata: dependencies: lower-case: "npm:^2.0.2" tslib: "npm:^2.0.3" - checksum: 8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 languageName: node linkType: hard @@ -8356,14 +8356,14 @@ __metadata: char-regex: "npm:^1.0.2" emojilib: "npm:^2.4.0" skin-tone: "npm:^2.0.0" - checksum: 98b030c82a2e282aa48cc13741d79ec48efd0ae856a4d1b41e551053bc322573166f9233c742857a7e20ed902b647de9c02a4a92b774f3e6257332ff44de3636 + checksum: 10c0/98b030c82a2e282aa48cc13741d79ec48efd0ae856a4d1b41e551053bc322573166f9233c742857a7e20ed902b647de9c02a4a92b774f3e6257332ff44de3636 languageName: node linkType: hard "node-forge@npm:^1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" - checksum: e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 languageName: node linkType: hard @@ -8383,14 +8383,14 @@ __metadata: which: "npm:^2.0.2" bin: node-gyp: bin/node-gyp.js - checksum: 1aa0f3a6e137ef957f1f371b6d6c9e332eef6a8791e5453bee089a056984691d5f402b168a8b054176f143e36eef290653a35b79203ba1bc40cd694bb0575590 + checksum: 10c0/1aa0f3a6e137ef957f1f371b6d6c9e332eef6a8791e5453bee089a056984691d5f402b168a8b054176f143e36eef290653a35b79203ba1bc40cd694bb0575590 languageName: node linkType: hard "node-releases@npm:^2.0.13": version: 2.0.13 resolution: "node-releases@npm:2.0.13" - checksum: 2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 + checksum: 10c0/2fb44bf70fc949d27f3a48a7fd1a9d1d603ddad4ccd091f26b3fb8b1da976605d919330d7388ccd55ca2ade0dc8b2e12841ba19ef249c8bb29bf82532d401af7 languageName: node linkType: hard @@ -8401,35 +8401,35 @@ __metadata: abbrev: "npm:1" bin: nopt: bin/nopt.js - checksum: fc5c4f07155cb455bf5fc3dd149fac421c1a40fd83c6bfe83aa82b52f02c17c5e88301321318adaa27611c8a6811423d51d29deaceab5fa158b585a61a551061 + checksum: 10c0/fc5c4f07155cb455bf5fc3dd149fac421c1a40fd83c6bfe83aa82b52f02c17c5e88301321318adaa27611c8a6811423d51d29deaceab5fa158b585a61a551061 languageName: node linkType: hard "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" - checksum: e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 languageName: node linkType: hard "normalize-range@npm:^0.1.2": version: 0.1.2 resolution: "normalize-range@npm:0.1.2" - checksum: bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 + checksum: 10c0/bf39b73a63e0a42ad1a48c2bd1bda5a07ede64a7e2567307a407674e595bcff0fa0d57e8e5f1e7fa5e91000797c7615e13613227aaaa4d6d6e87f5bd5cc95de6 languageName: node linkType: hard "normalize-url@npm:^6.0.1": version: 6.1.0 resolution: "normalize-url@npm:6.1.0" - checksum: 95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 + checksum: 10c0/95d948f9bdd2cfde91aa786d1816ae40f8262946e13700bf6628105994fe0ff361662c20af3961161c38a119dc977adeb41fc0b41b1745eb77edaaf9cb22db23 languageName: node linkType: hard "normalize-url@npm:^8.0.0": version: 8.0.0 resolution: "normalize-url@npm:8.0.0" - checksum: 09582d56acd562d89849d9239852c2aff225c72be726556d6883ff36de50006803d32a023c10e917bcc1c55f73f3bb16434f67992fe9b61906a3db882192753c + checksum: 10c0/09582d56acd562d89849d9239852c2aff225c72be726556d6883ff36de50006803d32a023c10e917bcc1c55f73f3bb16434f67992fe9b61906a3db882192753c languageName: node linkType: hard @@ -8438,7 +8438,7 @@ __metadata: resolution: "npm-run-path@npm:4.0.1" dependencies: path-key: "npm:^3.0.0" - checksum: 6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac languageName: node linkType: hard @@ -8450,14 +8450,14 @@ __metadata: console-control-strings: "npm:^1.1.0" gauge: "npm:^4.0.0" set-blocking: "npm:^2.0.0" - checksum: 794996b9a9def47026418ed961bbb5c3c5c6e62b9d54e1024f8f68e35052fc80c3af6a9e65c4817a6d43262c5e83fdbc965f49af9666bdccc5e34d7513f67e3a + checksum: 10c0/794996b9a9def47026418ed961bbb5c3c5c6e62b9d54e1024f8f68e35052fc80c3af6a9e65c4817a6d43262c5e83fdbc965f49af9666bdccc5e34d7513f67e3a languageName: node linkType: hard "nprogress@npm:^0.2.0": version: 0.2.0 resolution: "nprogress@npm:0.2.0" - checksum: eab9a923a1ad1eed71a455ecfbc358442dd9bcd71b9fa3fa1c67eddf5159360b182c218f76fca320c97541a1b45e19ced04e6dcb044a662244c5419f8ae9e821 + checksum: 10c0/eab9a923a1ad1eed71a455ecfbc358442dd9bcd71b9fa3fa1c67eddf5159360b182c218f76fca320c97541a1b45e19ced04e6dcb044a662244c5419f8ae9e821 languageName: node linkType: hard @@ -8466,28 +8466,28 @@ __metadata: resolution: "nth-check@npm:2.0.1" dependencies: boolbase: "npm:^1.0.0" - checksum: ff003b22f1119b2f3a67820b4f11c7e512a612ae4a1cf2591461904e6c443c391477b14910b4778db844ab19b95567b6d01d3337f691156c0f40649c43ca2229 + checksum: 10c0/ff003b22f1119b2f3a67820b4f11c7e512a612ae4a1cf2591461904e6c443c391477b14910b4778db844ab19b95567b6d01d3337f691156c0f40649c43ca2229 languageName: node linkType: hard "object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" - checksum: 1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 languageName: node linkType: hard "object-inspect@npm:^1.9.0": version: 1.12.0 resolution: "object-inspect@npm:1.12.0" - checksum: 5ea7837f39f8da87b7cf25e81d14d21c45aae87ecbf0a5997a4d1950eacff363b85d39eab9ef6677ea36e862c708a4fe880ca2ffae1492acacdcbc963f2ee239 + checksum: 10c0/5ea7837f39f8da87b7cf25e81d14d21c45aae87ecbf0a5997a4d1950eacff363b85d39eab9ef6677ea36e862c708a4fe880ca2ffae1492acacdcbc963f2ee239 languageName: node linkType: hard "object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" - checksum: b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d languageName: node linkType: hard @@ -8499,14 +8499,14 @@ __metadata: define-properties: "npm:^1.1.3" has-symbols: "npm:^1.0.1" object-keys: "npm:^1.1.1" - checksum: ee0e796fad8952f05644d11632f046dc4b424f9a41d3816e11a612163b12a873c800456be9acdaec6221b72590ab5267e5fe4bf4cf1c67f88b05f82f133ac829 + checksum: 10c0/ee0e796fad8952f05644d11632f046dc4b424f9a41d3816e11a612163b12a873c800456be9acdaec6221b72590ab5267e5fe4bf4cf1c67f88b05f82f133ac829 languageName: node linkType: hard "obuf@npm:^1.0.0, obuf@npm:^1.1.2": version: 1.1.2 resolution: "obuf@npm:1.1.2" - checksum: 520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 languageName: node linkType: hard @@ -8515,14 +8515,14 @@ __metadata: resolution: "on-finished@npm:2.4.1" dependencies: ee-first: "npm:1.1.1" - checksum: 46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 languageName: node linkType: hard "on-headers@npm:~1.0.2": version: 1.0.2 resolution: "on-headers@npm:1.0.2" - checksum: f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f + checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f languageName: node linkType: hard @@ -8531,7 +8531,7 @@ __metadata: resolution: "once@npm:1.4.0" dependencies: wrappy: "npm:1" - checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 languageName: node linkType: hard @@ -8540,7 +8540,7 @@ __metadata: resolution: "onetime@npm:5.1.2" dependencies: mimic-fn: "npm:^2.1.0" - checksum: ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f languageName: node linkType: hard @@ -8551,7 +8551,7 @@ __metadata: define-lazy-prop: "npm:^2.0.0" is-docker: "npm:^2.1.1" is-wsl: "npm:^2.2.0" - checksum: 585596580226cbeb7262f36b5acc7eed05211dc26980020a2527f829336b8b07fd79cdc4240f4d995b5615f635e0a59ebb0261c4419fef91edd5d4604c463f18 + checksum: 10c0/585596580226cbeb7262f36b5acc7eed05211dc26980020a2527f829336b8b07fd79cdc4240f4d995b5615f635e0a59ebb0261c4419fef91edd5d4604c463f18 languageName: node linkType: hard @@ -8560,14 +8560,14 @@ __metadata: resolution: "opener@npm:1.5.2" bin: opener: bin/opener-bin.js - checksum: dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 languageName: node linkType: hard "p-cancelable@npm:^3.0.0": version: 3.0.0 resolution: "p-cancelable@npm:3.0.0" - checksum: 948fd4f8e87b956d9afc2c6c7392de9113dac817cb1cecf4143f7a3d4c57ab5673614a80be3aba91ceec5e4b69fd8c869852d7e8048bc3d9273c4c36ce14b9aa + checksum: 10c0/948fd4f8e87b956d9afc2c6c7392de9113dac817cb1cecf4143f7a3d4c57ab5673614a80be3aba91ceec5e4b69fd8c869852d7e8048bc3d9273c4c36ce14b9aa languageName: node linkType: hard @@ -8576,7 +8576,7 @@ __metadata: resolution: "p-limit@npm:2.3.0" dependencies: p-try: "npm:^2.0.0" - checksum: 8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 languageName: node linkType: hard @@ -8585,7 +8585,7 @@ __metadata: resolution: "p-limit@npm:3.1.0" dependencies: yocto-queue: "npm:^0.1.0" - checksum: 9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a languageName: node linkType: hard @@ -8594,7 +8594,7 @@ __metadata: resolution: "p-limit@npm:4.0.0" dependencies: yocto-queue: "npm:^1.0.0" - checksum: a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad languageName: node linkType: hard @@ -8603,7 +8603,7 @@ __metadata: resolution: "p-locate@npm:3.0.0" dependencies: p-limit: "npm:^2.0.0" - checksum: 7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 languageName: node linkType: hard @@ -8612,7 +8612,7 @@ __metadata: resolution: "p-locate@npm:5.0.0" dependencies: p-limit: "npm:^3.0.2" - checksum: 2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a languageName: node linkType: hard @@ -8621,7 +8621,7 @@ __metadata: resolution: "p-locate@npm:6.0.0" dependencies: p-limit: "npm:^4.0.0" - checksum: d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 languageName: node linkType: hard @@ -8630,7 +8630,7 @@ __metadata: resolution: "p-map@npm:4.0.0" dependencies: aggregate-error: "npm:^3.0.0" - checksum: 592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 languageName: node linkType: hard @@ -8640,14 +8640,14 @@ __metadata: dependencies: "@types/retry": "npm:^0.12.0" retry: "npm:^0.13.1" - checksum: 0d2d7c29409181001d39a8088070009dc97fbe86d6a2a5d8dcb13be8a20e8f5bb056d06592050d6f45ebd088acb98abf4375b681040de2e11561cb0df886f94f + checksum: 10c0/0d2d7c29409181001d39a8088070009dc97fbe86d6a2a5d8dcb13be8a20e8f5bb056d06592050d6f45ebd088acb98abf4375b681040de2e11561cb0df886f94f languageName: node linkType: hard "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" - checksum: c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f languageName: node linkType: hard @@ -8659,7 +8659,7 @@ __metadata: registry-auth-token: "npm:^5.0.1" registry-url: "npm:^6.0.0" semver: "npm:^7.3.7" - checksum: 83b057878bca229033aefad4ef51569b484e63a65831ddf164dc31f0486817e17ffcb58c819c7af3ef3396042297096b3ffc04e107fd66f8f48756f6d2071c8f + checksum: 10c0/83b057878bca229033aefad4ef51569b484e63a65831ddf164dc31f0486817e17ffcb58c819c7af3ef3396042297096b3ffc04e107fd66f8f48756f6d2071c8f languageName: node linkType: hard @@ -8669,7 +8669,7 @@ __metadata: dependencies: dot-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 + checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 languageName: node linkType: hard @@ -8678,7 +8678,7 @@ __metadata: resolution: "parent-module@npm:1.0.1" dependencies: callsites: "npm:^3.0.0" - checksum: c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 languageName: node linkType: hard @@ -8694,7 +8694,7 @@ __metadata: is-alphanumerical: "npm:^2.0.0" is-decimal: "npm:^2.0.0" is-hexadecimal: "npm:^2.0.0" - checksum: 9dfa3b0dc43a913c2558c4bd625b1abcc2d6c6b38aa5724b141ed988471977248f7ad234eed57e1bc70b694dd15b0d710a04f66c2f7c096e35abd91962b7d926 + checksum: 10c0/9dfa3b0dc43a913c2558c4bd625b1abcc2d6c6b38aa5724b141ed988471977248f7ad234eed57e1bc70b694dd15b0d710a04f66c2f7c096e35abd91962b7d926 languageName: node linkType: hard @@ -8706,14 +8706,14 @@ __metadata: error-ex: "npm:^1.3.1" json-parse-even-better-errors: "npm:^2.3.0" lines-and-columns: "npm:^1.1.6" - checksum: 77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 languageName: node linkType: hard "parse-numeric-range@npm:^1.3.0": version: 1.3.0 resolution: "parse-numeric-range@npm:1.3.0" - checksum: 53465afaa92111e86697281b684aa4574427360889cc23a1c215488c06b72441febdbf09f47ab0bef9a0c701e059629f3eebd2fe6fb241a254ad7a7a642aebe8 + checksum: 10c0/53465afaa92111e86697281b684aa4574427360889cc23a1c215488c06b72441febdbf09f47ab0bef9a0c701e059629f3eebd2fe6fb241a254ad7a7a642aebe8 languageName: node linkType: hard @@ -8723,7 +8723,7 @@ __metadata: dependencies: domhandler: "npm:^5.0.2" parse5: "npm:^7.0.0" - checksum: e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 + checksum: 10c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 languageName: node linkType: hard @@ -8732,14 +8732,14 @@ __metadata: resolution: "parse5@npm:7.0.0" dependencies: entities: "npm:^4.3.0" - checksum: 10fc17755a7b81279da53988f56d2d0d8b1b832dd1c4df14e2f25d4f15cd363e9ee781428785da3780b32114c8e9eec11a2b68e00e0cea16e9ee839756118c41 + checksum: 10c0/10fc17755a7b81279da53988f56d2d0d8b1b832dd1c4df14e2f25d4f15cd363e9ee781428785da3780b32114c8e9eec11a2b68e00e0cea16e9ee839756118c41 languageName: node linkType: hard "parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" - checksum: 90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 languageName: node linkType: hard @@ -8749,70 +8749,70 @@ __metadata: dependencies: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 + checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 languageName: node linkType: hard "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" - checksum: 17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" - checksum: 8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b languageName: node linkType: hard "path-exists@npm:^5.0.0": version: 5.0.0 resolution: "path-exists@npm:5.0.0" - checksum: b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a languageName: node linkType: hard "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" - checksum: 127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 languageName: node linkType: hard "path-is-inside@npm:1.0.2": version: 1.0.2 resolution: "path-is-inside@npm:1.0.2" - checksum: 7fdd4b41672c70461cce734fc222b33e7b447fa489c7c4377c95e7e6852d83d69741f307d88ec0cc3b385b41cb4accc6efac3c7c511cd18512e95424f5fa980c + checksum: 10c0/7fdd4b41672c70461cce734fc222b33e7b447fa489c7c4377c95e7e6852d83d69741f307d88ec0cc3b385b41cb4accc6efac3c7c511cd18512e95424f5fa980c languageName: node linkType: hard "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" - checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" - checksum: 11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 languageName: node linkType: hard "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" - checksum: 50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 + checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 languageName: node linkType: hard "path-to-regexp@npm:2.2.1": version: 2.2.1 resolution: "path-to-regexp@npm:2.2.1" - checksum: f4b51090a73dad5ce0720f13ce8528ac77914bc927d72cc4ba05ab32770ad3a8d2e431962734b688b9ed863d4098d858da6ff4746037e4e24259cbd3b2c32b79 + checksum: 10c0/f4b51090a73dad5ce0720f13ce8528ac77914bc927d72cc4ba05ab32770ad3a8d2e431962734b688b9ed863d4098d858da6ff4746037e4e24259cbd3b2c32b79 languageName: node linkType: hard @@ -8821,14 +8821,14 @@ __metadata: resolution: "path-to-regexp@npm:1.8.0" dependencies: isarray: "npm:0.0.1" - checksum: 7b25d6f27a8de03f49406d16195450f5ced694398adea1510b0f949d9660600d1769c5c6c83668583b7e6b503f3caf1ede8ffc08135dbe3e982f034f356fbb5c + checksum: 10c0/7b25d6f27a8de03f49406d16195450f5ced694398adea1510b0f949d9660600d1769c5c6c83668583b7e6b503f3caf1ede8ffc08135dbe3e982f034f356fbb5c languageName: node linkType: hard "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" - checksum: 666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c languageName: node linkType: hard @@ -8839,21 +8839,21 @@ __metadata: "@types/estree": "npm:^1.0.0" estree-walker: "npm:^3.0.0" is-reference: "npm:^3.0.0" - checksum: fb5ce7cd810c49254cdf1cd3892811e6dd1a1dfbdf5f10a0a33fb7141baac36443c4cad4f0e2b30abd4eac613f6ab845c2bc1b7ce66ae9694c7321e6ada5bd96 + checksum: 10c0/fb5ce7cd810c49254cdf1cd3892811e6dd1a1dfbdf5f10a0a33fb7141baac36443c4cad4f0e2b30abd4eac613f6ab845c2bc1b7ce66ae9694c7321e6ada5bd96 languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" - checksum: 20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 languageName: node linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" - checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be languageName: node linkType: hard @@ -8862,7 +8862,7 @@ __metadata: resolution: "pkg-dir@npm:7.0.0" dependencies: find-up: "npm:^6.3.0" - checksum: 1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 languageName: node linkType: hard @@ -8871,7 +8871,7 @@ __metadata: resolution: "pkg-up@npm:3.1.0" dependencies: find-up: "npm:^3.0.0" - checksum: ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab + checksum: 10c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab languageName: node linkType: hard @@ -8883,7 +8883,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.2 - checksum: 8518a429488c3283ff1560c83a511f6f772329bc61d88875eb7c83e13a8683b7ccbdccaa9946024cf1553da3eacd2f40fcbcebf1095f7fdeb432bf86bc6ba6ba + checksum: 10c0/8518a429488c3283ff1560c83a511f6f772329bc61d88875eb7c83e13a8683b7ccbdccaa9946024cf1553da3eacd2f40fcbcebf1095f7fdeb432bf86bc6ba6ba languageName: node linkType: hard @@ -8897,7 +8897,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: c4ca6f335dd992dc8e3df24bffc3495c4e504eba8489c81cb6836fdce3203f423cf4c0b640c4b63c586f588c59d82adb5313c3c5d1a68113896d18ed71caa462 + checksum: 10c0/c4ca6f335dd992dc8e3df24bffc3495c4e504eba8489c81cb6836fdce3203f423cf4c0b640c4b63c586f588c59d82adb5313c3c5d1a68113896d18ed71caa462 languageName: node linkType: hard @@ -8909,7 +8909,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: cd10a81781a12487b2921ff84a1a068e948a1956b9539a284c202abecf4cacdd3e106eb026026b22dbf70933f4315c824c111f6b71f56c355e47b842ca9b1dec + checksum: 10c0/cd10a81781a12487b2921ff84a1a068e948a1956b9539a284c202abecf4cacdd3e106eb026026b22dbf70933f4315c824c111f6b71f56c355e47b842ca9b1dec languageName: node linkType: hard @@ -8918,7 +8918,7 @@ __metadata: resolution: "postcss-discard-comments@npm:5.1.2" peerDependencies: postcss: ^8.2.15 - checksum: cb5ba81623c498e18d406138e7d27d69fc668802a1139a8de69d28e80b3fe222cda7b634940512cae78d04f0c78afcd15d92bcf80e537c6c85fa8ff9cd61d00f + checksum: 10c0/cb5ba81623c498e18d406138e7d27d69fc668802a1139a8de69d28e80b3fe222cda7b634940512cae78d04f0c78afcd15d92bcf80e537c6c85fa8ff9cd61d00f languageName: node linkType: hard @@ -8927,7 +8927,7 @@ __metadata: resolution: "postcss-discard-duplicates@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 3d3a49536c56097c06b4f085412e0cda0854fac1c559563ccb922d9fab6305ff13058cd6fee422aa66c1d7e466add4e7672d7ae2ff551a4af6f1a8d2142d471f + checksum: 10c0/3d3a49536c56097c06b4f085412e0cda0854fac1c559563ccb922d9fab6305ff13058cd6fee422aa66c1d7e466add4e7672d7ae2ff551a4af6f1a8d2142d471f languageName: node linkType: hard @@ -8936,7 +8936,7 @@ __metadata: resolution: "postcss-discard-empty@npm:5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 36c8b2197af836dbd93168c72cde4edc1f10fe00e564824119da076d3764909745bb60e4ada04052322e26872d1bce6a37c56815f1c48c813a21adca1a41fbdc + checksum: 10c0/36c8b2197af836dbd93168c72cde4edc1f10fe00e564824119da076d3764909745bb60e4ada04052322e26872d1bce6a37c56815f1c48c813a21adca1a41fbdc languageName: node linkType: hard @@ -8945,7 +8945,7 @@ __metadata: resolution: "postcss-discard-overridden@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: 7d3fc0b0d90599606fc083327a7c24390f90270a94a0119af4b74815d518948581579281f63b9bfa62e2644edf59bc9e725dc04ea5ba213f697804f3fb4dd8dc + checksum: 10c0/7d3fc0b0d90599606fc083327a7c24390f90270a94a0119af4b74815d518948581579281f63b9bfa62e2644edf59bc9e725dc04ea5ba213f697804f3fb4dd8dc languageName: node linkType: hard @@ -8956,7 +8956,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: eb7649eae1ef9987c397f4f533eb83f4245686317a5a0b468affd875d4d22778b62134e638198750efbaa41b7b7767995a91e5eb58d5fbbfe097506a3311102b + checksum: 10c0/eb7649eae1ef9987c397f4f533eb83f4245686317a5a0b468affd875d4d22778b62134e638198750efbaa41b7b7767995a91e5eb58d5fbbfe097506a3311102b languageName: node linkType: hard @@ -8970,7 +8970,7 @@ __metadata: peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 - checksum: d039654273f858be1f75dfdf8b550869d88905b73a7684b3e48a2937a6087619e84fd1a3551cdef78685a965a2573e985b29a532c3878d834071ecd2da0eb304 + checksum: 10c0/d039654273f858be1f75dfdf8b550869d88905b73a7684b3e48a2937a6087619e84fd1a3551cdef78685a965a2573e985b29a532c3878d834071ecd2da0eb304 languageName: node linkType: hard @@ -8982,7 +8982,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 97552b831330a8055641d3aea7b9840c60922d22d7fefdaf109daa7dee543e48a93ea6189a5549798b3f29e66657bc5c520e76493a04f8f999b94a2c8fee6060 + checksum: 10c0/97552b831330a8055641d3aea7b9840c60922d22d7fefdaf109daa7dee543e48a93ea6189a5549798b3f29e66657bc5c520e76493a04f8f999b94a2c8fee6060 languageName: node linkType: hard @@ -8994,7 +8994,7 @@ __metadata: stylehacks: "npm:^5.1.1" peerDependencies: postcss: ^8.2.15 - checksum: 4d9f44b03f19522cc81ae4f5b1f2a9ef2db918dbd8b3042d4f1b2461b2230b8ec1269334db6a67a863ba68f64cabd712e6e45340ddb22a3fc03cd34df69d2bf0 + checksum: 10c0/4d9f44b03f19522cc81ae4f5b1f2a9ef2db918dbd8b3042d4f1b2461b2230b8ec1269334db6a67a863ba68f64cabd712e6e45340ddb22a3fc03cd34df69d2bf0 languageName: node linkType: hard @@ -9008,7 +9008,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: e7686cdda052071bf98810ad381e26145c43a2286f9540f04f97ef93101604b78d478dd555db91e5f73751bb353c283ba75c2fcb16a3751ac7d93dc6a0130c41 + checksum: 10c0/e7686cdda052071bf98810ad381e26145c43a2286f9540f04f97ef93101604b78d478dd555db91e5f73751bb353c283ba75c2fcb16a3751ac7d93dc6a0130c41 languageName: node linkType: hard @@ -9019,7 +9019,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 7aa4f93a853b657f79a8b28d0e924cafce3720086d9da02ce04b8b2f8de42e18ce32c8f7f1078390fb5ec82468e2d8e771614387cea3563f05fd9fa1798e1c59 + checksum: 10c0/7aa4f93a853b657f79a8b28d0e924cafce3720086d9da02ce04b8b2f8de42e18ce32c8f7f1078390fb5ec82468e2d8e771614387cea3563f05fd9fa1798e1c59 languageName: node linkType: hard @@ -9032,7 +9032,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: bcb2802d7c8f0f76c7cff089884844f26c24b95f35c3ec951d7dec8c212495d1873d6ba62d6225ce264570e8e0668e271f9bc79bb6f5d2429c1f8933f4e3021d + checksum: 10c0/bcb2802d7c8f0f76c7cff089884844f26c24b95f35c3ec951d7dec8c212495d1873d6ba62d6225ce264570e8e0668e271f9bc79bb6f5d2429c1f8933f4e3021d languageName: node linkType: hard @@ -9045,7 +9045,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: debce6f0f7dd9af69b4bb9e467ea1ccccff2d849b6020461a2b9741c0c137340e6076c245dc2e83880180eb2e82936280fa31dfe8608e5a2e3618f3d864314c5 + checksum: 10c0/debce6f0f7dd9af69b4bb9e467ea1ccccff2d849b6020461a2b9741c0c137340e6076c245dc2e83880180eb2e82936280fa31dfe8608e5a2e3618f3d864314c5 languageName: node linkType: hard @@ -9056,7 +9056,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: f3f4ec110f5f697cfc9dde3e491ff10aa07509bf33cc940aa539e4b5b643d1b9f8bb97f8bb83d05fc96f5eeb220500ebdeffbde513bd176c0671e21c2c96fab9 + checksum: 10c0/f3f4ec110f5f697cfc9dde3e491ff10aa07509bf33cc940aa539e4b5b643d1b9f8bb97f8bb83d05fc96f5eeb220500ebdeffbde513bd176c0671e21c2c96fab9 languageName: node linkType: hard @@ -9065,7 +9065,7 @@ __metadata: resolution: "postcss-modules-extract-imports@npm:3.0.0" peerDependencies: postcss: ^8.1.0 - checksum: f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 + checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 languageName: node linkType: hard @@ -9078,7 +9078,7 @@ __metadata: postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 + checksum: 10c0/be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 languageName: node linkType: hard @@ -9089,7 +9089,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.1.0 - checksum: 60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a + checksum: 10c0/60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a languageName: node linkType: hard @@ -9100,7 +9100,7 @@ __metadata: icss-utils: "npm:^5.0.0" peerDependencies: postcss: ^8.1.0 - checksum: dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc + checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc languageName: node linkType: hard @@ -9109,7 +9109,7 @@ __metadata: resolution: "postcss-normalize-charset@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: aa481584d4db48e0dbf820f992fa235e6c41ff3d4701a62d349f33c1ad4c5c7dcdea3096db9ff2a5c9497e9bed2186d594ccdb1b42d57b30f58affba5829ad9c + checksum: 10c0/aa481584d4db48e0dbf820f992fa235e6c41ff3d4701a62d349f33c1ad4c5c7dcdea3096db9ff2a5c9497e9bed2186d594ccdb1b42d57b30f58affba5829ad9c languageName: node linkType: hard @@ -9120,7 +9120,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 70b164fda885c097c02c98914fba4cd19b2382ff5f85f77e5315d88a1d477b4803f0f271d95a38e044e2a6c3b781c5c9bfb83222fc577199f2aeb0b8f4254e2f + checksum: 10c0/70b164fda885c097c02c98914fba4cd19b2382ff5f85f77e5315d88a1d477b4803f0f271d95a38e044e2a6c3b781c5c9bfb83222fc577199f2aeb0b8f4254e2f languageName: node linkType: hard @@ -9131,7 +9131,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 910d58991fd38a7cf6ed6471e6fa4a96349690ad1a99a02e8cac46d76ba5045f2fca453088b68b05ff665afd96dc617c4674c68acaeabbe83f502e4963fb78b1 + checksum: 10c0/910d58991fd38a7cf6ed6471e6fa4a96349690ad1a99a02e8cac46d76ba5045f2fca453088b68b05ff665afd96dc617c4674c68acaeabbe83f502e4963fb78b1 languageName: node linkType: hard @@ -9142,7 +9142,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 57c3817a2107ebb17e4ceee3831d230c72a3ccc7650f4d5f12aa54f6ea766777401f4f63b2615b721350b2e8c7ae0b0bbc3f1c5ad4e7fa737c9efb92cfa0cbb0 + checksum: 10c0/57c3817a2107ebb17e4ceee3831d230c72a3ccc7650f4d5f12aa54f6ea766777401f4f63b2615b721350b2e8c7ae0b0bbc3f1c5ad4e7fa737c9efb92cfa0cbb0 languageName: node linkType: hard @@ -9153,7 +9153,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: a5e9979998f478d385ddff865bdd8a4870af69fa8c91c9398572a299ff39b39a6bda922a48fab0d2cddc639f30159c39baaed880ed7d13cd27cc64eaa9400b3b + checksum: 10c0/a5e9979998f478d385ddff865bdd8a4870af69fa8c91c9398572a299ff39b39a6bda922a48fab0d2cddc639f30159c39baaed880ed7d13cd27cc64eaa9400b3b languageName: node linkType: hard @@ -9164,7 +9164,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: afb34d8e313004ae8cd92910bf1a6eb9885f29ae803cd9032b6dfe7b67a9ad93f800976f10e55170b2b08fe9484825e9272629971186812c2764c73843268237 + checksum: 10c0/afb34d8e313004ae8cd92910bf1a6eb9885f29ae803cd9032b6dfe7b67a9ad93f800976f10e55170b2b08fe9484825e9272629971186812c2764c73843268237 languageName: node linkType: hard @@ -9176,7 +9176,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: c102888d488d05c53ab10ffcd4e0efb892ef0cc2f9b0abe9c9b175a2d7a9c226981ca6806ed9e5c1b82a8190f2b3a8342a6de800f019b417130661b0787ff6d7 + checksum: 10c0/c102888d488d05c53ab10ffcd4e0efb892ef0cc2f9b0abe9c9b175a2d7a9c226981ca6806ed9e5c1b82a8190f2b3a8342a6de800f019b417130661b0787ff6d7 languageName: node linkType: hard @@ -9188,7 +9188,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: a016cefd1ef80f74ef9dbed50593d3b533101e93aaadfc292896fddd8d6c3eb732a9fc5cb2e0d27f79c1f60f0fdfc40b045a494b514451e9610c6acf9392eb98 + checksum: 10c0/a016cefd1ef80f74ef9dbed50593d3b533101e93aaadfc292896fddd8d6c3eb732a9fc5cb2e0d27f79c1f60f0fdfc40b045a494b514451e9610c6acf9392eb98 languageName: node linkType: hard @@ -9199,7 +9199,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 + checksum: 10c0/d7b53dd90fe369bfb9838a40096db904a41f50dadfd04247ec07d7ab5588c3d4e70d1c7f930523bd061cb74e6683cef45c6e6c4eb57ea174ee3fc99f3de222d1 languageName: node linkType: hard @@ -9211,7 +9211,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 55abfbd2c7267eefed62a881ed0b5c0c98409c50a589526a3ebb9f8d879979203e523b8888fa84732bdd1ac887f721287a037002fa70c27c8d33f1bcbae9d9c6 + checksum: 10c0/55abfbd2c7267eefed62a881ed0b5c0c98409c50a589526a3ebb9f8d879979203e523b8888fa84732bdd1ac887f721287a037002fa70c27c8d33f1bcbae9d9c6 languageName: node linkType: hard @@ -9222,7 +9222,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: f7a6bc0caa531e7983c98a79d796e078ff8d02df1bb38357a5d7f11ddb5842d6777ab090fd811e889ab1a5e92ba2644c9a9e5e353f7c9f7ce85dbf1e07001c29 + checksum: 10c0/f7a6bc0caa531e7983c98a79d796e078ff8d02df1bb38357a5d7f11ddb5842d6777ab090fd811e889ab1a5e92ba2644c9a9e5e353f7c9f7ce85dbf1e07001c29 languageName: node linkType: hard @@ -9234,7 +9234,7 @@ __metadata: caniuse-api: "npm:^3.0.0" peerDependencies: postcss: ^8.2.15 - checksum: ddb2ce61c8d0997184f08200eafdf32b3c67e88228fee960f5e2010c32da0c1d8ea07712585bf2b3aaa15f583066401d45db2c1131527c5116ca6794ebebd865 + checksum: 10c0/ddb2ce61c8d0997184f08200eafdf32b3c67e88228fee960f5e2010c32da0c1d8ea07712585bf2b3aaa15f583066401d45db2c1131527c5116ca6794ebebd865 languageName: node linkType: hard @@ -9245,7 +9245,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: caefaeb78652ad8701b94e91500e38551255e4899fa298a7357519a36cbeebae088eab4535e00f17675a1230f448c4a7077045639d496da4614a46bc41df4add + checksum: 10c0/caefaeb78652ad8701b94e91500e38551255e4899fa298a7357519a36cbeebae088eab4535e00f17675a1230f448c4a7077045639d496da4614a46bc41df4add languageName: node linkType: hard @@ -9255,7 +9255,7 @@ __metadata: dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 07acc7b6565561b5ed65ed35fa27565e09c92b80278d933bf89c8cdcf59473d128d75320c720b184e80a617b122bb64957e7c60f99691dceabd587e2591f784e + checksum: 10c0/07acc7b6565561b5ed65ed35fa27565e09c92b80278d933bf89c8cdcf59473d128d75320c720b184e80a617b122bb64957e7c60f99691dceabd587e2591f784e languageName: node linkType: hard @@ -9266,7 +9266,7 @@ __metadata: sort-css-media-queries: "npm:2.1.0" peerDependencies: postcss: ^8.4.16 - checksum: 8bbc604daee29dc3e1f5090df972599c3c0eb08b37650e16c134a040cc1357484a48bbe03dac2977d616be1d490cde2934226fa1e6f7e52f4f5e7bf8f57e98d6 + checksum: 10c0/8bbc604daee29dc3e1f5090df972599c3c0eb08b37650e16c134a040cc1357484a48bbe03dac2977d616be1d490cde2934226fa1e6f7e52f4f5e7bf8f57e98d6 languageName: node linkType: hard @@ -9278,7 +9278,7 @@ __metadata: svgo: "npm:^2.7.0" peerDependencies: postcss: ^8.2.15 - checksum: 309634a587e38fef244648bc9cd1817e12144868d24f1173d87b1edc14a4a7fca614962b2cb9d93f4801e11bd8d676083986ad40ebab4438cb84731ce1571994 + checksum: 10c0/309634a587e38fef244648bc9cd1817e12144868d24f1173d87b1edc14a4a7fca614962b2cb9d93f4801e11bd8d676083986ad40ebab4438cb84731ce1571994 languageName: node linkType: hard @@ -9289,14 +9289,14 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 484f6409346d6244c134c5cdcd62f4f2751b269742f95222f13d8bac5fb224471ffe04e28a354670cbe0bdc2707778ead034fc1b801b473ffcbea5436807de30 + checksum: 10c0/484f6409346d6244c134c5cdcd62f4f2751b269742f95222f13d8bac5fb224471ffe04e28a354670cbe0bdc2707778ead034fc1b801b473ffcbea5436807de30 languageName: node linkType: hard "postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" - checksum: f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 languageName: node linkType: hard @@ -9305,7 +9305,7 @@ __metadata: resolution: "postcss-zindex@npm:5.1.0" peerDependencies: postcss: ^8.2.15 - checksum: f739d3c0dec3875c770d6a101bc6ac1ccf545b0121e75b7fade911ad6ce454a2af87e6c3587c80a76a00f217e1761778f2083c2807eb78c17bfc53624b625ded + checksum: 10c0/f739d3c0dec3875c770d6a101bc6ac1ccf545b0121e75b7fade911ad6ce454a2af87e6c3587c80a76a00f217e1761778f2083c2807eb78c17bfc53624b625ded languageName: node linkType: hard @@ -9316,7 +9316,7 @@ __metadata: nanoid: "npm:^3.3.6" picocolors: "npm:^1.0.0" source-map-js: "npm:^1.0.2" - checksum: 748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf + checksum: 10c0/748b82e6e5fc34034dcf2ae88ea3d11fd09f69b6c50ecdd3b4a875cfc7cdca435c958b211e2cb52355422ab6fccb7d8f2f2923161d7a1b281029e4a913d59acf languageName: node linkType: hard @@ -9326,14 +9326,14 @@ __metadata: dependencies: lodash: "npm:^4.17.20" renderkid: "npm:^3.0.0" - checksum: dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 + checksum: 10c0/dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 languageName: node linkType: hard "pretty-time@npm:^1.1.0": version: 1.1.0 resolution: "pretty-time@npm:1.1.0" - checksum: ba9d7af19cd43838fb2b147654990949575e400dc2cc24bf71ec4a6c4033a38ba8172b1014b597680c6d4d3c075e94648b2c13a7206c5f0c90b711c7388726f3 + checksum: 10c0/ba9d7af19cd43838fb2b147654990949575e400dc2cc24bf71ec4a6c4033a38ba8172b1014b597680c6d4d3c075e94648b2c13a7206c5f0c90b711c7388726f3 languageName: node linkType: hard @@ -9345,7 +9345,7 @@ __metadata: clsx: "npm:^1.2.1" peerDependencies: react: ">=16.0.0" - checksum: 3ba1dbde06a146471ebe5880fc1136e375ef29d4ff3691263b4141bc064e481bb1a603f08d6af676231cc5570bb78e4b67d38ec7f8ad0e6b2a6ba2e1d28ac851 + checksum: 10c0/3ba1dbde06a146471ebe5880fc1136e375ef29d4ff3691263b4141bc064e481bb1a603f08d6af676231cc5570bb78e4b67d38ec7f8ad0e6b2a6ba2e1d28ac851 languageName: node linkType: hard @@ -9357,28 +9357,28 @@ __metadata: clsx: "npm:^2.0.0" peerDependencies: react: ">=16.0.0" - checksum: aa8fb176e156ebb1f8ca46d82966d37176f46545e03669ddab7d56479f915b41e95b02accc16af9e2e95c7fcd57ce6222d8eac08977c757d9c49c32c7b0e03ff + checksum: 10c0/aa8fb176e156ebb1f8ca46d82966d37176f46545e03669ddab7d56479f915b41e95b02accc16af9e2e95c7fcd57ce6222d8eac08977c757d9c49c32c7b0e03ff languageName: node linkType: hard "prismjs@npm:^1.29.0": version: 1.29.0 resolution: "prismjs@npm:1.29.0" - checksum: d906c4c4d01b446db549b4f57f72d5d7e6ccaca04ecc670fb85cea4d4b1acc1283e945a9cbc3d81819084a699b382f970e02f9d1378e14af9808d366d9ed7ec6 + checksum: 10c0/d906c4c4d01b446db549b4f57f72d5d7e6ccaca04ecc670fb85cea4d4b1acc1283e945a9cbc3d81819084a699b382f970e02f9d1378e14af9808d366d9ed7ec6 languageName: node linkType: hard "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" - checksum: bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 languageName: node linkType: hard "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" - checksum: d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc languageName: node linkType: hard @@ -9388,7 +9388,7 @@ __metadata: dependencies: err-code: "npm:^2.0.2" retry: "npm:^0.12.0" - checksum: 9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 languageName: node linkType: hard @@ -9398,7 +9398,7 @@ __metadata: dependencies: kleur: "npm:^3.0.3" sisteransi: "npm:^1.0.5" - checksum: 16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 languageName: node linkType: hard @@ -9409,21 +9409,21 @@ __metadata: loose-envify: "npm:^1.4.0" object-assign: "npm:^4.1.1" react-is: "npm:^16.13.1" - checksum: 59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 languageName: node linkType: hard "property-information@npm:^6.0.0": version: 6.4.0 resolution: "property-information@npm:6.4.0" - checksum: 48ba202f12c6abc82d37135452377dd528fae90a151bcffb28582d58d9db6e42ce835c91e2fcb12e875200b32bcaed90de4807dfb37c687f7cccf2597ccb55e1 + checksum: 10c0/48ba202f12c6abc82d37135452377dd528fae90a151bcffb28582d58d9db6e42ce835c91e2fcb12e875200b32bcaed90de4807dfb37c687f7cccf2597ccb55e1 languageName: node linkType: hard "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" - checksum: b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 + checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 languageName: node linkType: hard @@ -9433,21 +9433,21 @@ __metadata: dependencies: forwarded: "npm:0.2.0" ipaddr.js: "npm:1.9.1" - checksum: c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 languageName: node linkType: hard "punycode@npm:^1.3.2": version: 1.4.1 resolution: "punycode@npm:1.4.1" - checksum: 354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 languageName: node linkType: hard "punycode@npm:^2.1.0": version: 2.1.1 resolution: "punycode@npm:2.1.1" - checksum: 83815ca9b9177f055771f31980cbec7ffaef10257d50a95ab99b4a30f0404846e85fa6887ee1bbc0aaddb7bad6d96e2fa150a016051ff0f6b92be4ad613ddca8 + checksum: 10c0/83815ca9b9177f055771f31980cbec7ffaef10257d50a95ab99b4a30f0404846e85fa6887ee1bbc0aaddb7bad6d96e2fa150a016051ff0f6b92be4ad613ddca8 languageName: node linkType: hard @@ -9456,7 +9456,7 @@ __metadata: resolution: "pupa@npm:3.1.0" dependencies: escape-goat: "npm:^4.0.0" - checksum: 02afa6e4547a733484206aaa8f8eb3fbfb12d3dd17d7ca4fa1ea390a7da2cb8f381e38868bbf68009c4d372f8f6059f553171b6a712d8f2802c7cd43d513f06c + checksum: 10c0/02afa6e4547a733484206aaa8f8eb3fbfb12d3dd17d7ca4fa1ea390a7da2cb8f381e38868bbf68009c4d372f8f6059f553171b6a712d8f2802c7cd43d513f06c languageName: node linkType: hard @@ -9465,14 +9465,14 @@ __metadata: resolution: "qs@npm:6.10.3" dependencies: side-channel: "npm:^1.0.4" - checksum: c6684df925fd2c6f0940b8fbfe5d8b5a8634dc96c0908309655cbe61a3fbf94cedc6b11e669fca1971b53459b6f732cccd4eeb6484b5b77b405ad0cfb936e6fe + checksum: 10c0/c6684df925fd2c6f0940b8fbfe5d8b5a8634dc96c0908309655cbe61a3fbf94cedc6b11e669fca1971b53459b6f732cccd4eeb6484b5b77b405ad0cfb936e6fe languageName: node linkType: hard "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" - checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 languageName: node linkType: hard @@ -9481,14 +9481,14 @@ __metadata: resolution: "queue@npm:6.0.2" dependencies: inherits: "npm:~2.0.3" - checksum: cf987476cc72e7d3aaabe23ccefaab1cd757a2b5e0c8d80b67c9575a6b5e1198807ffd4f0948a3f118b149d1111d810ee773473530b77a5c606673cac2c9c996 + checksum: 10c0/cf987476cc72e7d3aaabe23ccefaab1cd757a2b5e0c8d80b67c9575a6b5e1198807ffd4f0948a3f118b149d1111d810ee773473530b77a5c606673cac2c9c996 languageName: node linkType: hard "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" - checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da + checksum: 10c0/a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da languageName: node linkType: hard @@ -9497,21 +9497,21 @@ __metadata: resolution: "randombytes@npm:2.1.0" dependencies: safe-buffer: "npm:^5.1.0" - checksum: 50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 languageName: node linkType: hard "range-parser@npm:1.2.0": version: 1.2.0 resolution: "range-parser@npm:1.2.0" - checksum: c7aef4f6588eb974c475649c157f197d07437d8c6c8ff7e36280a141463fb5ab7a45918417334ebd7b665c6b8321cf31c763f7631dd5f5db9372249261b8b02a + checksum: 10c0/c7aef4f6588eb974c475649c157f197d07437d8c6c8ff7e36280a141463fb5ab7a45918417334ebd7b665c6b8321cf31c763f7631dd5f5db9372249261b8b02a languageName: node linkType: hard "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" - checksum: 96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 languageName: node linkType: hard @@ -9523,7 +9523,7 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" unpipe: "npm:1.0.0" - checksum: 5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 + checksum: 10c0/5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 languageName: node linkType: hard @@ -9537,7 +9537,7 @@ __metadata: strip-json-comments: "npm:~2.0.1" bin: rc: ./cli.js - checksum: 24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 languageName: node linkType: hard @@ -9569,7 +9569,7 @@ __metadata: shell-quote: "npm:^1.7.3" strip-ansi: "npm:^6.0.1" text-table: "npm:^0.2.0" - checksum: 94bc4ee5014290ca47a025e53ab2205c5dc0299670724d46a0b1bacbdd48904827b5ae410842d0a3a92481509097ae032e4a9dc7ca70db437c726eaba6411e82 + checksum: 10c0/94bc4ee5014290ca47a025e53ab2205c5dc0299670724d46a0b1bacbdd48904827b5ae410842d0a3a92481509097ae032e4a9dc7ca70db437c726eaba6411e82 languageName: node linkType: hard @@ -9581,21 +9581,21 @@ __metadata: scheduler: "npm:^0.23.0" peerDependencies: react: ^18.2.0 - checksum: 66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a languageName: node linkType: hard "react-error-overlay@npm:^6.0.11": version: 6.0.11 resolution: "react-error-overlay@npm:6.0.11" - checksum: 8fc93942976e0c704274aec87dbc8e21f62a2cc78d1c93f9bcfff9f7494b00c60f7a2f0bd48d832bcd3190627c0255a1df907373f61f820371373a65ec4b2d64 + checksum: 10c0/8fc93942976e0c704274aec87dbc8e21f62a2cc78d1c93f9bcfff9f7494b00c60f7a2f0bd48d832bcd3190627c0255a1df907373f61f820371373a65ec4b2d64 languageName: node linkType: hard "react-fast-compare@npm:^3.0.1, react-fast-compare@npm:^3.2.0": version: 3.2.0 resolution: "react-fast-compare@npm:3.2.0" - checksum: 2a7d75ce9fb5da1e3c01f74a5cd592f3369a8cc8d44e93654bf147ab221f430238e8be70677e896f2bfcb96a1cb7a47a8d05d84633de764a9d57d27005a4bb9e + checksum: 10c0/2a7d75ce9fb5da1e3c01f74a5cd592f3369a8cc8d44e93654bf147ab221f430238e8be70677e896f2bfcb96a1cb7a47a8d05d84633de764a9d57d27005a4bb9e languageName: node linkType: hard @@ -9611,14 +9611,14 @@ __metadata: peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - checksum: 8f3e6d26beff61d2ed18f7b41561df3e4d83a7582914c7196aa65158c7f3cce939276547d7a0b8987952d9d44131406df74efba02d1f8fa8a3940b49e6ced70b + checksum: 10c0/8f3e6d26beff61d2ed18f7b41561df3e4d83a7582914c7196aa65158c7f3cce939276547d7a0b8987952d9d44131406df74efba02d1f8fa8a3940b49e6ced70b languageName: node linkType: hard "react-is@npm:^16.13.1, react-is@npm:^16.6.0, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" - checksum: 33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 languageName: node linkType: hard @@ -9627,7 +9627,7 @@ __metadata: resolution: "react-json-view-lite@npm:1.2.1" peerDependencies: react: ^16.13.1 || ^17.0.0 || ^18.0.0 - checksum: 09029d541689931bdb1b5808f7e102bceef14b3d708076c78090f0155c3031b4630fbf201b2c438e560484989ca7779e1a373cb66462e822ec367d0ef7fe62cb + checksum: 10c0/09029d541689931bdb1b5808f7e102bceef14b3d708076c78090f0155c3031b4630fbf201b2c438e560484989ca7779e1a373cb66462e822ec367d0ef7fe62cb languageName: node linkType: hard @@ -9639,7 +9639,7 @@ __metadata: peerDependencies: react-loadable: "*" webpack: ">=4.41.1 || 5.x" - checksum: 7b0645f66adec56646f985ba8094c66a1c0a4627d96ad80eea32431d773ef1f79aa47d3247a8f21db3b064a0c6091653c5b5d3483b7046722eb64e55bffe635c + checksum: 10c0/7b0645f66adec56646f985ba8094c66a1c0a4627d96ad80eea32431d773ef1f79aa47d3247a8f21db3b064a0c6091653c5b5d3483b7046722eb64e55bffe635c languageName: node linkType: hard @@ -9654,7 +9654,7 @@ __metadata: react-fast-compare: "npm:^3.0.1" peerDependencies: react: ">=16.6.0" - checksum: 3dc15908ffdab7c48788714ff806559b53bb80753024118ed2e31f8d0c857d83c04f9630bf1d195d4b0f621e3ce757f4dab9a51883fcc8c285250724edb0d9d9 + checksum: 10c0/3dc15908ffdab7c48788714ff806559b53bb80753024118ed2e31f8d0c857d83c04f9630bf1d195d4b0f621e3ce757f4dab9a51883fcc8c285250724edb0d9d9 languageName: node linkType: hard @@ -9666,7 +9666,7 @@ __metadata: peerDependencies: react: ">=15" react-router: ">=5" - checksum: 1f8f4e55ca68b7b012293e663eb0ee4d670a3df929b78928f713ef98cd9d62c7f5c30a098d6668e64bbb11c7d6bb24e9e6b9c985a8b82465a1858dc7ba663f2b + checksum: 10c0/1f8f4e55ca68b7b012293e663eb0ee4d670a3df929b78928f713ef98cd9d62c7f5c30a098d6668e64bbb11c7d6bb24e9e6b9c985a8b82465a1858dc7ba663f2b languageName: node linkType: hard @@ -9683,7 +9683,7 @@ __metadata: tiny-warning: "npm:^1.0.0" peerDependencies: react: ">=15" - checksum: f04f727e2ed2e9d1d3830af02cc61690ff67b1524c0d18690582bfba0f4d14142ccc88fb6da6befad644fddf086f5ae4c2eb7048c67da8a0b0929c19426421b0 + checksum: 10c0/f04f727e2ed2e9d1d3830af02cc61690ff67b1524c0d18690582bfba0f4d14142ccc88fb6da6befad644fddf086f5ae4c2eb7048c67da8a0b0929c19426421b0 languageName: node linkType: hard @@ -9702,7 +9702,7 @@ __metadata: tiny-warning: "npm:^1.0.0" peerDependencies: react: ">=15" - checksum: e15c00dfef199249b4c6e6d98e5e76cc352ce66f3270f13df37cc069ddf7c05e43281e8c308fc407e4435d72924373baef1d2890e0f6b0b1eb423cf47315a053 + checksum: 10c0/e15c00dfef199249b4c6e6d98e5e76cc352ce66f3270f13df37cc069ddf7c05e43281e8c308fc407e4435d72924373baef1d2890e0f6b0b1eb423cf47315a053 languageName: node linkType: hard @@ -9711,7 +9711,7 @@ __metadata: resolution: "react@npm:18.2.0" dependencies: loose-envify: "npm:^1.1.0" - checksum: b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 languageName: node linkType: hard @@ -9726,7 +9726,7 @@ __metadata: safe-buffer: "npm:~5.1.1" string_decoder: "npm:~1.1.1" util-deprecate: "npm:~1.0.1" - checksum: 1708755e6cf9daff6ff60fa5b4575636472289c5b95d38058a91f94732b8d024a940a0d4d955639195ce42c22cab16973ee8fea8deedd24b5fec3dd596465f86 + checksum: 10c0/1708755e6cf9daff6ff60fa5b4575636472289c5b95d38058a91f94732b8d024a940a0d4d955639195ce42c22cab16973ee8fea8deedd24b5fec3dd596465f86 languageName: node linkType: hard @@ -9737,7 +9737,7 @@ __metadata: inherits: "npm:^2.0.3" string_decoder: "npm:^1.1.1" util-deprecate: "npm:^1.0.1" - checksum: 937bedd29ac8a68331666291922bea892fa2be1a33269e582de9f844a2002f146cf831e39cd49fe6a378d3f0c27358f259ed0e20d20f0bdc6a3f8fc21fce42dc + checksum: 10c0/937bedd29ac8a68331666291922bea892fa2be1a33269e582de9f844a2002f146cf831e39cd49fe6a378d3f0c27358f259ed0e20d20f0bdc6a3f8fc21fce42dc languageName: node linkType: hard @@ -9746,14 +9746,14 @@ __metadata: resolution: "readdirp@npm:3.6.0" dependencies: picomatch: "npm:^2.2.1" - checksum: 6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b languageName: node linkType: hard "reading-time@npm:^1.5.0": version: 1.5.0 resolution: "reading-time@npm:1.5.0" - checksum: 0f730852fd4fb99e5f78c5b0cf36ab8c3fa15db96f87d9563843f6fd07a47864273ade539ebb184b785b728cde81a70283aa2d9b80cba5ca03b81868be03cabc + checksum: 10c0/0f730852fd4fb99e5f78c5b0cf36ab8c3fa15db96f87d9563843f6fd07a47864273ade539ebb184b785b728cde81a70283aa2d9b80cba5ca03b81868be03cabc languageName: node linkType: hard @@ -9762,7 +9762,7 @@ __metadata: resolution: "rechoir@npm:0.6.2" dependencies: resolve: "npm:^1.1.6" - checksum: 22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 + checksum: 10c0/22c4bb32f4934a9468468b608417194f7e3ceba9a508512125b16082c64f161915a28467562368eeb15dc16058eb5b7c13a20b9eb29ff9927d1ebb3b5aa83e84 languageName: node linkType: hard @@ -9771,7 +9771,7 @@ __metadata: resolution: "recursive-readdir@npm:2.2.2" dependencies: minimatch: "npm:3.0.4" - checksum: 0137fab9e9f2a2784465a613a214f60cf76d62ce22c4237ac818c4e6d6ebb4c890d12b4547619dab843673dfa12ca4096baa32d64fdaed84793a544a02c2e1e1 + checksum: 10c0/0137fab9e9f2a2784465a613a214f60cf76d62ce22c4237ac818c4e6d6ebb4c890d12b4547619dab843673dfa12ca4096baa32d64fdaed84793a544a02c2e1e1 languageName: node linkType: hard @@ -9780,21 +9780,21 @@ __metadata: resolution: "regenerate-unicode-properties@npm:10.1.1" dependencies: regenerate: "npm:^1.4.2" - checksum: 89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d + checksum: 10c0/89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d languageName: node linkType: hard "regenerate@npm:^1.4.2": version: 1.4.2 resolution: "regenerate@npm:1.4.2" - checksum: f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 languageName: node linkType: hard "regenerator-runtime@npm:^0.14.0": version: 0.14.0 resolution: "regenerator-runtime@npm:0.14.0" - checksum: e25f062c1a183f81c99681691a342760e65c55e8d3a4d4fe347ebe72433b123754b942b70b622959894e11f8a9131dc549bd3c9a5234677db06a4af42add8d12 + checksum: 10c0/e25f062c1a183f81c99681691a342760e65c55e8d3a4d4fe347ebe72433b123754b942b70b622959894e11f8a9131dc549bd3c9a5234677db06a4af42add8d12 languageName: node linkType: hard @@ -9803,7 +9803,7 @@ __metadata: resolution: "regenerator-transform@npm:0.15.2" dependencies: "@babel/runtime": "npm:^7.8.4" - checksum: 7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 languageName: node linkType: hard @@ -9817,7 +9817,7 @@ __metadata: regjsparser: "npm:^0.9.1" unicode-match-property-ecmascript: "npm:^2.0.0" unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 + checksum: 10c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 languageName: node linkType: hard @@ -9826,7 +9826,7 @@ __metadata: resolution: "registry-auth-token@npm:5.0.2" dependencies: "@pnpm/npm-conf": "npm:^2.1.0" - checksum: 20fc2225681cc54ae7304b31ebad5a708063b1949593f02dfe5fb402bc1fc28890cecec6497ea396ba86d6cca8a8480715926dfef8cf1f2f11e6f6cc0a1b4bde + checksum: 10c0/20fc2225681cc54ae7304b31ebad5a708063b1949593f02dfe5fb402bc1fc28890cecec6497ea396ba86d6cca8a8480715926dfef8cf1f2f11e6f6cc0a1b4bde languageName: node linkType: hard @@ -9835,7 +9835,7 @@ __metadata: resolution: "registry-url@npm:6.0.1" dependencies: rc: "npm:1.2.8" - checksum: 66e2221c8113fc35ee9d23fe58cb516fc8d556a189fb8d6f1011a02efccc846c4c9b5075b4027b99a5d5c9ad1345ac37f297bea3c0ca30d607ec8084bf561b90 + checksum: 10c0/66e2221c8113fc35ee9d23fe58cb516fc8d556a189fb8d6f1011a02efccc846c4c9b5075b4027b99a5d5c9ad1345ac37f297bea3c0ca30d607ec8084bf561b90 languageName: node linkType: hard @@ -9846,7 +9846,7 @@ __metadata: jsesc: "npm:~0.5.0" bin: regjsparser: bin/parser - checksum: fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 + checksum: 10c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 languageName: node linkType: hard @@ -9857,14 +9857,14 @@ __metadata: "@types/hast": "npm:^3.0.0" hast-util-raw: "npm:^9.0.0" vfile: "npm:^6.0.0" - checksum: 1435b4b6640a5bc3abe3b2133885c4dbff5ef2190ef9cfe09d6a63f74dd7d7ffd0cede70603278560ccf1acbfb9da9faae4b68065a28bc5aa88ad18e40f32d52 + checksum: 10c0/1435b4b6640a5bc3abe3b2133885c4dbff5ef2190ef9cfe09d6a63f74dd7d7ffd0cede70603278560ccf1acbfb9da9faae4b68065a28bc5aa88ad18e40f32d52 languageName: node linkType: hard "relateurl@npm:^0.2.7": version: 0.2.7 resolution: "relateurl@npm:0.2.7" - checksum: c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a + checksum: 10c0/c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a languageName: node linkType: hard @@ -9876,7 +9876,7 @@ __metadata: mdast-util-directive: "npm:^3.0.0" micromark-extension-directive: "npm:^3.0.0" unified: "npm:^11.0.0" - checksum: eeec4d70501c5bce55b2528fa0c8f1e2a5c713c9f72a7d4678dd3868c425620ec409a719bb2656663296bc476c63f5d7bcacd5a9059146bfc89d40e4ce13a7f6 + checksum: 10c0/eeec4d70501c5bce55b2528fa0c8f1e2a5c713c9f72a7d4678dd3868c425620ec409a719bb2656663296bc476c63f5d7bcacd5a9059146bfc89d40e4ce13a7f6 languageName: node linkType: hard @@ -9889,7 +9889,7 @@ __metadata: mdast-util-find-and-replace: "npm:^3.0.1" node-emoji: "npm:^2.1.0" unified: "npm:^11.0.4" - checksum: 27f88892215f3efe8f25c43f226a82d70144a1ae5906d36f6e09390b893b2d5524d5949bd8ca6a02be0e3cb5cba908b35c4221f4e07f34e93d13d6ff9347dbb8 + checksum: 10c0/27f88892215f3efe8f25c43f226a82d70144a1ae5906d36f6e09390b893b2d5524d5949bd8ca6a02be0e3cb5cba908b35c4221f4e07f34e93d13d6ff9347dbb8 languageName: node linkType: hard @@ -9901,7 +9901,7 @@ __metadata: mdast-util-frontmatter: "npm:^2.0.0" micromark-extension-frontmatter: "npm:^2.0.0" unified: "npm:^11.0.0" - checksum: 102325d5edbcf30eaf74de8a0a6e03096cc2370dfef19080fd2dd208f368fbb2323388751ac9931a1aa38a4f2828fa4bad6c52dc5249dcadcd34861693b52bf9 + checksum: 10c0/102325d5edbcf30eaf74de8a0a6e03096cc2370dfef19080fd2dd208f368fbb2323388751ac9931a1aa38a4f2828fa4bad6c52dc5249dcadcd34861693b52bf9 languageName: node linkType: hard @@ -9915,7 +9915,7 @@ __metadata: remark-parse: "npm:^11.0.0" remark-stringify: "npm:^11.0.0" unified: "npm:^11.0.0" - checksum: db0aa85ab718d475c2596e27c95be9255d3b0fc730a4eda9af076b919f7dd812f7be3ac020611a8dbe5253fd29671d7b12750b56e529fdc32dfebad6dbf77403 + checksum: 10c0/db0aa85ab718d475c2596e27c95be9255d3b0fc730a4eda9af076b919f7dd812f7be3ac020611a8dbe5253fd29671d7b12750b56e529fdc32dfebad6dbf77403 languageName: node linkType: hard @@ -9925,7 +9925,7 @@ __metadata: dependencies: mdast-util-mdx: "npm:^3.0.0" micromark-extension-mdxjs: "npm:^3.0.0" - checksum: e7a59428c55753f89f1bd299bc92cfd96fb3289285384b631f8af253d8df6473ebdba085e6d1a846b55b46700aafc76f35810a3268733e6a7c676bc2a8648f17 + checksum: 10c0/e7a59428c55753f89f1bd299bc92cfd96fb3289285384b631f8af253d8df6473ebdba085e6d1a846b55b46700aafc76f35810a3268733e6a7c676bc2a8648f17 languageName: node linkType: hard @@ -9937,7 +9937,7 @@ __metadata: mdast-util-from-markdown: "npm:^2.0.0" micromark-util-types: "npm:^2.0.0" unified: "npm:^11.0.0" - checksum: 6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38 + checksum: 10c0/6eed15ddb8680eca93e04fcb2d1b8db65a743dcc0023f5007265dda558b09db595a087f622062ccad2630953cd5cddc1055ce491d25a81f3317c858348a8dd38 languageName: node linkType: hard @@ -9950,7 +9950,7 @@ __metadata: mdast-util-to-hast: "npm:^13.0.0" unified: "npm:^11.0.0" vfile: "npm:^6.0.0" - checksum: d88180819f6695bc4f257cffcbe201973fc946144cc0101da589f25f3238932e384e98a8897b6060948ad2b5679eb2de5a720866b8b6f36b74e9f20e3e0b1d5d + checksum: 10c0/d88180819f6695bc4f257cffcbe201973fc946144cc0101da589f25f3238932e384e98a8897b6060948ad2b5679eb2de5a720866b8b6f36b74e9f20e3e0b1d5d languageName: node linkType: hard @@ -9961,7 +9961,7 @@ __metadata: "@types/mdast": "npm:^4.0.0" mdast-util-to-markdown: "npm:^2.0.0" unified: "npm:^11.0.0" - checksum: 0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f + checksum: 10c0/0cdb37ce1217578f6f847c7ec9f50cbab35df5b9e3903d543e74b405404e67c07defcb23cd260a567b41b769400f6de03c2c3d9cd6ae7a6707d5c8d89ead489f languageName: node linkType: hard @@ -9974,49 +9974,49 @@ __metadata: htmlparser2: "npm:^6.1.0" lodash: "npm:^4.17.21" strip-ansi: "npm:^6.0.1" - checksum: 24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 + checksum: 10c0/24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 languageName: node linkType: hard "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" - checksum: aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 languageName: node linkType: hard "require-like@npm:>= 0.1.1": version: 0.1.2 resolution: "require-like@npm:0.1.2" - checksum: 9035ff6c4000a56ede6fc51dd5c56541fafa5a7dddc9b1c3a5f9148d95ee21c603c9bf5c6e37b19fc7de13d9294260842d8590b2ffd6c7c773e78603d1af8050 + checksum: 10c0/9035ff6c4000a56ede6fc51dd5c56541fafa5a7dddc9b1c3a5f9148d95ee21c603c9bf5c6e37b19fc7de13d9294260842d8590b2ffd6c7c773e78603d1af8050 languageName: node linkType: hard "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" - checksum: b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 languageName: node linkType: hard "resolve-alpn@npm:^1.2.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" - checksum: b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 + checksum: 10c0/b70b29c1843bc39781ef946c8cd4482e6d425976599c0f9c138cec8209e4e0736161bf39319b01676a847000085dfdaf63583c6fb4427bf751a10635bd2aa0c4 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" - checksum: 8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 languageName: node linkType: hard "resolve-pathname@npm:^3.0.0": version: 3.0.0 resolution: "resolve-pathname@npm:3.0.0" - checksum: c6ec49b670dc35b9a303c47fa83ba9348a71e92d64a4c4bb85e1b659a29b407aa1ac1cb14a9b5b502982132ca77482bd80534bca147439d66880d35a137fe723 + checksum: 10c0/c6ec49b670dc35b9a303c47fa83ba9348a71e92d64a4c4bb85e1b659a29b407aa1ac1cb14a9b5b502982132ca77482bd80534bca147439d66880d35a137fe723 languageName: node linkType: hard @@ -10029,7 +10029,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: efe07a7cd69015a95a5f4e6cc3d372354b93d67a70410ec686413b2054dfa0d5ef16ff52c057a83634debb17f278b99db6dbc60367a4475ae01dda29c6eaa6e4 + checksum: 10c0/efe07a7cd69015a95a5f4e6cc3d372354b93d67a70410ec686413b2054dfa0d5ef16ff52c057a83634debb17f278b99db6dbc60367a4475ae01dda29c6eaa6e4 languageName: node linkType: hard @@ -10042,7 +10042,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: ef8061e81f40c39070748e8e263c8767d8fcc7c34e9ee85211b29fbc2aedb1ae7cda7d735c2cdbe9367060e9f85ec11c2694e370c121c6bcbb472a7bd0b19555 + checksum: 10c0/ef8061e81f40c39070748e8e263c8767d8fcc7c34e9ee85211b29fbc2aedb1ae7cda7d735c2cdbe9367060e9f85ec11c2694e370c121c6bcbb472a7bd0b19555 languageName: node linkType: hard @@ -10051,28 +10051,28 @@ __metadata: resolution: "responselike@npm:3.0.0" dependencies: lowercase-keys: "npm:^3.0.0" - checksum: 8af27153f7e47aa2c07a5f2d538cb1e5872995f0e9ff77def858ecce5c3fe677d42b824a62cde502e56d275ab832b0a8bd350d5cd6b467ac0425214ac12ae658 + checksum: 10c0/8af27153f7e47aa2c07a5f2d538cb1e5872995f0e9ff77def858ecce5c3fe677d42b824a62cde502e56d275ab832b0a8bd350d5cd6b467ac0425214ac12ae658 languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" - checksum: 59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe languageName: node linkType: hard "retry@npm:^0.13.1": version: 0.13.1 resolution: "retry@npm:0.13.1" - checksum: 9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 languageName: node linkType: hard "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" - checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 languageName: node linkType: hard @@ -10083,14 +10083,14 @@ __metadata: glob: "npm:^7.1.3" bin: rimraf: bin.js - checksum: 9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 languageName: node linkType: hard "rtl-detect@npm:^1.0.4": version: 1.0.4 resolution: "rtl-detect@npm:1.0.4" - checksum: 5004b328a52fcd75869a9bf4e75db38ae9f9cd8878ed0dfed9f027e0e6558d38ac971c4bb2c2542bb360bbe9a7dffef97450fedc21abbd6c5655c172233ce7ab + checksum: 10c0/5004b328a52fcd75869a9bf4e75db38ae9f9cd8878ed0dfed9f027e0e6558d38ac971c4bb2c2542bb360bbe9a7dffef97450fedc21abbd6c5655c172233ce7ab languageName: node linkType: hard @@ -10104,7 +10104,7 @@ __metadata: strip-json-comments: "npm:^3.1.1" bin: rtlcss: bin/rtlcss.js - checksum: 8667f09f683139abf1d5a58e284fa57c903f1f502a86cd1a7fa867777378f7f93a3c156ba27852b826299156451fbf8c6413710ab1cce8e6da87dd31a266c669 + checksum: 10c0/8667f09f683139abf1d5a58e284fa57c903f1f502a86cd1a7fa867777378f7f93a3c156ba27852b826299156451fbf8c6413710ab1cce8e6da87dd31a266c669 languageName: node linkType: hard @@ -10113,35 +10113,35 @@ __metadata: resolution: "run-parallel@npm:1.2.0" dependencies: queue-microtask: "npm:^1.2.2" - checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 languageName: node linkType: hard "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" - checksum: 780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 languageName: node linkType: hard "safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" - checksum: 6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" - checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 languageName: node linkType: hard "sax@npm:^1.2.4": version: 1.2.4 resolution: "sax@npm:1.2.4" - checksum: 6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 + checksum: 10c0/6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 languageName: node linkType: hard @@ -10150,7 +10150,7 @@ __metadata: resolution: "scheduler@npm:0.23.0" dependencies: loose-envify: "npm:^1.1.0" - checksum: b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd languageName: node linkType: hard @@ -10161,7 +10161,7 @@ __metadata: "@types/json-schema": "npm:^7.0.4" ajv: "npm:^6.12.2" ajv-keywords: "npm:^3.4.1" - checksum: 723c3c856a0313a89aa81c5fb2c93d4b11225f5cdd442665fddd55d3c285ae72e079f5286a3a9a1a973affe888f6c33554a2cf47b79b24cd8de2f1f756a6fb1b + checksum: 10c0/723c3c856a0313a89aa81c5fb2c93d4b11225f5cdd442665fddd55d3c285ae72e079f5286a3a9a1a973affe888f6c33554a2cf47b79b24cd8de2f1f756a6fb1b languageName: node linkType: hard @@ -10172,7 +10172,7 @@ __metadata: "@types/json-schema": "npm:^7.0.8" ajv: "npm:^6.12.5" ajv-keywords: "npm:^3.5.2" - checksum: fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 languageName: node linkType: hard @@ -10184,7 +10184,7 @@ __metadata: ajv: "npm:^8.8.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.0.0" - checksum: d76f1b0724fb74fa9da19d4f98ebe89c2703d8d28df9dc44d66ab9a9cbca869b434181a36a2bc00ec53980f27e8fabe143759bdc8754692bbf7ef614fc6e9da4 + checksum: 10c0/d76f1b0724fb74fa9da19d4f98ebe89c2703d8d28df9dc44d66ab9a9cbca869b434181a36a2bc00ec53980f27e8fabe143759bdc8754692bbf7ef614fc6e9da4 languageName: node linkType: hard @@ -10194,14 +10194,14 @@ __metadata: dependencies: extend-shallow: "npm:^2.0.1" kind-of: "npm:^6.0.0" - checksum: 8007f91780adc5aaa781a848eaae50b0f680bbf4043b90cf8a96778195b8fab690c87fe7a989e02394ce69890e330811ec8dab22397d384673ce59f7d750641d + checksum: 10c0/8007f91780adc5aaa781a848eaae50b0f680bbf4043b90cf8a96778195b8fab690c87fe7a989e02394ce69890e330811ec8dab22397d384673ce59f7d750641d languageName: node linkType: hard "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" - checksum: 01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 + checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 languageName: node linkType: hard @@ -10211,7 +10211,7 @@ __metadata: dependencies: "@types/node-forge": "npm:^1.3.0" node-forge: "npm:^1" - checksum: 521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 + checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 languageName: node linkType: hard @@ -10220,7 +10220,7 @@ __metadata: resolution: "semver-diff@npm:4.0.0" dependencies: semver: "npm:^7.3.5" - checksum: 3ed1bb22f39b4b6e98785bb066e821eabb9445d3b23e092866c50e7df8b9bd3eda617b242f81db4159586e0e39b0deb908dd160a24f783bd6f52095b22cd68ea + checksum: 10c0/3ed1bb22f39b4b6e98785bb066e821eabb9445d3b23e092866c50e7df8b9bd3eda617b242f81db4159586e0e39b0deb908dd160a24f783bd6f52095b22cd68ea languageName: node linkType: hard @@ -10229,7 +10229,7 @@ __metadata: resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard @@ -10240,7 +10240,7 @@ __metadata: lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e languageName: node linkType: hard @@ -10261,7 +10261,7 @@ __metadata: on-finished: "npm:2.4.1" range-parser: "npm:~1.2.1" statuses: "npm:2.0.1" - checksum: 0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a + checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a languageName: node linkType: hard @@ -10270,7 +10270,7 @@ __metadata: resolution: "serialize-javascript@npm:6.0.1" dependencies: randombytes: "npm:^2.1.0" - checksum: 1af427f4fee3fee051f54ffe15f77068cff78a3c96d20f5c1178d20630d3ab122d8350e639d5e13cde8111ef9db9439b871305ffb185e24be0a2149cec230988 + checksum: 10c0/1af427f4fee3fee051f54ffe15f77068cff78a3c96d20f5c1178d20630d3ab122d8350e639d5e13cde8111ef9db9439b871305ffb185e24be0a2149cec230988 languageName: node linkType: hard @@ -10286,7 +10286,7 @@ __metadata: path-is-inside: "npm:1.0.2" path-to-regexp: "npm:2.2.1" range-parser: "npm:1.2.0" - checksum: 6fd393ae37a0305107e634ca545322b00605322189fe70d8f1a4a90a101c4e354768c610efe5a7ef1af3820cec5c33d97467c88151f35a3cb41d8ff2075ef802 + checksum: 10c0/6fd393ae37a0305107e634ca545322b00605322189fe70d8f1a4a90a101c4e354768c610efe5a7ef1af3820cec5c33d97467c88151f35a3cb41d8ff2075ef802 languageName: node linkType: hard @@ -10301,7 +10301,7 @@ __metadata: http-errors: "npm:~1.6.2" mime-types: "npm:~2.1.17" parseurl: "npm:~1.3.2" - checksum: a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c + checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c languageName: node linkType: hard @@ -10313,28 +10313,28 @@ __metadata: escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" send: "npm:0.18.0" - checksum: fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba + checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba languageName: node linkType: hard "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" - checksum: 9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 languageName: node linkType: hard "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" - checksum: a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 languageName: node linkType: hard "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" - checksum: 68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc languageName: node linkType: hard @@ -10343,14 +10343,14 @@ __metadata: resolution: "shallow-clone@npm:3.0.1" dependencies: kind-of: "npm:^6.0.2" - checksum: 7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e languageName: node linkType: hard "shallowequal@npm:^1.1.0": version: 1.1.0 resolution: "shallowequal@npm:1.1.0" - checksum: b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c + checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c languageName: node linkType: hard @@ -10359,21 +10359,21 @@ __metadata: resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: "npm:^3.0.0" - checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" - checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 languageName: node linkType: hard "shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" - checksum: 8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a languageName: node linkType: hard @@ -10386,7 +10386,7 @@ __metadata: rechoir: "npm:^0.6.2" bin: shjs: bin/shjs - checksum: feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 + checksum: 10c0/feb25289a12e4bcd04c40ddfab51aff98a3729f5c2602d5b1a1b95f6819ec7804ac8147ebd8d9a85dfab69d501bcf92d7acef03247320f51c1552cec8d8e2382 languageName: node linkType: hard @@ -10397,14 +10397,14 @@ __metadata: call-bind: "npm:^1.0.0" get-intrinsic: "npm:^1.0.2" object-inspect: "npm:^1.9.0" - checksum: 054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 + checksum: 10c0/054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 languageName: node linkType: hard "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" - checksum: 25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 languageName: node linkType: hard @@ -10415,14 +10415,14 @@ __metadata: "@polka/url": "npm:^1.0.0-next.20" mrmime: "npm:^1.0.0" totalist: "npm:^3.0.0" - checksum: 333bd665ee5ac3805047ea47757e04e2b18ca562749b9a07f5bbbee6dabd99ff00011604689b1ada3d22e46a4198c61e05e2d1abd5454d94da483ce3a3813205 + checksum: 10c0/333bd665ee5ac3805047ea47757e04e2b18ca562749b9a07f5bbbee6dabd99ff00011604689b1ada3d22e46a4198c61e05e2d1abd5454d94da483ce3a3813205 languageName: node linkType: hard "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" - checksum: 230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 languageName: node linkType: hard @@ -10436,7 +10436,7 @@ __metadata: sax: "npm:^1.2.4" bin: sitemap: dist/cli.js - checksum: d25abe5c78f08e6014792e0f4d59353042a5a795788decdd87cb03bda736d248426a618e5028e18325f04b3e9d0ecb02d126ed6177365aa2703fa77df8f4f4e0 + checksum: 10c0/d25abe5c78f08e6014792e0f4d59353042a5a795788decdd87cb03bda736d248426a618e5028e18325f04b3e9d0ecb02d126ed6177365aa2703fa77df8f4f4e0 languageName: node linkType: hard @@ -10445,28 +10445,28 @@ __metadata: resolution: "skin-tone@npm:2.0.0" dependencies: unicode-emoji-modifier-base: "npm:^1.0.0" - checksum: 82d4c2527864f9cbd6cb7f3c4abb31e2224752234d5013b881d3e34e9ab543545b05206df5a17d14b515459fcb265ce409f9cfe443903176b0360cd20e4e4ba5 + checksum: 10c0/82d4c2527864f9cbd6cb7f3c4abb31e2224752234d5013b881d3e34e9ab543545b05206df5a17d14b515459fcb265ce409f9cfe443903176b0360cd20e4e4ba5 languageName: node linkType: hard "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" - checksum: e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b languageName: node linkType: hard "slash@npm:^4.0.0": version: 4.0.0 resolution: "slash@npm:4.0.0" - checksum: b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 languageName: node linkType: hard "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" - checksum: a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 languageName: node linkType: hard @@ -10477,7 +10477,7 @@ __metadata: faye-websocket: "npm:^0.11.3" uuid: "npm:^8.3.2" websocket-driver: "npm:^0.7.4" - checksum: aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 languageName: node linkType: hard @@ -10488,7 +10488,7 @@ __metadata: agent-base: "npm:^6.0.2" debug: "npm:^4.3.1" socks: "npm:^2.6.1" - checksum: 4d2ff6af0a4c49aa0f5aa3847468a75667795bc72c8271f85ee4c0a121f13f610674da43a6cbe77275e51596022f59da744d58f57d722dafbd1f54208cfa427d + checksum: 10c0/4d2ff6af0a4c49aa0f5aa3847468a75667795bc72c8271f85ee4c0a121f13f610674da43a6cbe77275e51596022f59da744d58f57d722dafbd1f54208cfa427d languageName: node linkType: hard @@ -10498,21 +10498,21 @@ __metadata: dependencies: ip: "npm:^1.1.5" smart-buffer: "npm:^4.2.0" - checksum: 3a97a3fa751d43294c1861bc3519bf3e3ebccc9136e690df96ee7b496b280a42fae3ae39480928ba7d940c1644737eab126502d433af026b209c57f1ca6cb7b3 + checksum: 10c0/3a97a3fa751d43294c1861bc3519bf3e3ebccc9136e690df96ee7b496b280a42fae3ae39480928ba7d940c1644737eab126502d433af026b209c57f1ca6cb7b3 languageName: node linkType: hard "sort-css-media-queries@npm:2.1.0": version: 2.1.0 resolution: "sort-css-media-queries@npm:2.1.0" - checksum: 6b39dd2503d8279688fee837c63bdf3b49eea14d10d5ae09d9e99e4a0b3da1b702c3931e8f793b702b9ea8929a9389ba8d6345b58b5d1f0ec3e84920685a724a + checksum: 10c0/6b39dd2503d8279688fee837c63bdf3b49eea14d10d5ae09d9e99e4a0b3da1b702c3931e8f793b702b9ea8929a9389ba8d6345b58b5d1f0ec3e84920685a724a languageName: node linkType: hard "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" - checksum: 32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 + checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 languageName: node linkType: hard @@ -10522,28 +10522,28 @@ __metadata: dependencies: buffer-from: "npm:^1.0.0" source-map: "npm:^0.6.0" - checksum: 9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d languageName: node linkType: hard "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0": version: 0.6.1 resolution: "source-map@npm:0.6.1" - checksum: ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 languageName: node linkType: hard "source-map@npm:^0.7.0": version: 0.7.4 resolution: "source-map@npm:0.7.4" - checksum: dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc languageName: node linkType: hard "space-separated-tokens@npm:^2.0.0": version: 2.0.2 resolution: "space-separated-tokens@npm:2.0.2" - checksum: 6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8 + checksum: 10c0/6173e1d903dca41dcab6a2deed8b4caf61bd13b6d7af8374713500570aa929ff9414ae09a0519f4f8772df993300305a395d4871f35bc4ca72b6db57e1f30af8 languageName: node linkType: hard @@ -10557,7 +10557,7 @@ __metadata: obuf: "npm:^1.1.2" readable-stream: "npm:^3.0.6" wbuf: "npm:^1.7.3" - checksum: eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb + checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb languageName: node linkType: hard @@ -10570,21 +10570,21 @@ __metadata: http-deceiver: "npm:^1.2.7" select-hose: "npm:^2.0.0" spdy-transport: "npm:^3.0.0" - checksum: 983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf + checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf languageName: node linkType: hard "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" - checksum: ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb languageName: node linkType: hard "srcset@npm:^4.0.0": version: 4.0.0 resolution: "srcset@npm:4.0.0" - checksum: 0685c3bd2423b33831734fb71560cd8784f024895e70ee2ac2c392e30047c27ffd9481e001950fb0503f4906bc3fe963145935604edad77944d09c9800990660 + checksum: 10c0/0685c3bd2423b33831734fb71560cd8784f024895e70ee2ac2c392e30047c27ffd9481e001950fb0503f4906bc3fe963145935604edad77944d09c9800990660 languageName: node linkType: hard @@ -10593,35 +10593,35 @@ __metadata: resolution: "ssri@npm:8.0.1" dependencies: minipass: "npm:^3.1.1" - checksum: 5cfae216ae02dcd154d1bbed2d0a60038a4b3a2fcaac3c7e47401ff4e058e551ee74cfdba618871bf168cd583db7b8324f94af6747d4303b73cd4c3f6dc5c9c2 + checksum: 10c0/5cfae216ae02dcd154d1bbed2d0a60038a4b3a2fcaac3c7e47401ff4e058e551ee74cfdba618871bf168cd583db7b8324f94af6747d4303b73cd4c3f6dc5c9c2 languageName: node linkType: hard "stable@npm:^0.1.8": version: 0.1.8 resolution: "stable@npm:0.1.8" - checksum: df74b5883075076e78f8e365e4068ecd977af6c09da510cfc3148a303d4b87bc9aa8f7c48feb67ed4ef970b6140bd9eabba2129e28024aa88df5ea0114cba39d + checksum: 10c0/df74b5883075076e78f8e365e4068ecd977af6c09da510cfc3148a303d4b87bc9aa8f7c48feb67ed4ef970b6140bd9eabba2129e28024aa88df5ea0114cba39d languageName: node linkType: hard "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" - checksum: 34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 languageName: node linkType: hard "statuses@npm:>= 1.4.0 < 2": version: 1.5.0 resolution: "statuses@npm:1.5.0" - checksum: e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 languageName: node linkType: hard "std-env@npm:^3.0.1": version: 3.0.1 resolution: "std-env@npm:3.0.1" - checksum: fd105f9154c005c354c10348bff217bebfab24262b92bde7e88383868d090d8db202c1c02d604ce3b25811cbf469db3955906ed3fde0070f2a01516f7fc11ac2 + checksum: 10c0/fd105f9154c005c354c10348bff217bebfab24262b92bde7e88383868d090d8db202c1c02d604ce3b25811cbf469db3955906ed3fde0070f2a01516f7fc11ac2 languageName: node linkType: hard @@ -10632,7 +10632,7 @@ __metadata: emoji-regex: "npm:^8.0.0" is-fullwidth-code-point: "npm:^3.0.0" strip-ansi: "npm:^6.0.1" - checksum: 1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b languageName: node linkType: hard @@ -10643,7 +10643,7 @@ __metadata: eastasianwidth: "npm:^0.2.0" emoji-regex: "npm:^9.2.2" strip-ansi: "npm:^7.0.1" - checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca languageName: node linkType: hard @@ -10652,7 +10652,7 @@ __metadata: resolution: "string_decoder@npm:1.3.0" dependencies: safe-buffer: "npm:~5.2.0" - checksum: 810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d languageName: node linkType: hard @@ -10661,7 +10661,7 @@ __metadata: resolution: "string_decoder@npm:1.1.1" dependencies: safe-buffer: "npm:~5.1.0" - checksum: b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e languageName: node linkType: hard @@ -10671,7 +10671,7 @@ __metadata: dependencies: character-entities-html4: "npm:^2.0.0" character-entities-legacy: "npm:^3.0.0" - checksum: e4582cd40b082e95bc2075bed656dcbc24e83538830f15cb5a025f1ba8d341adbdb3c66efb6a5bfd6860a3ea426322135aa666cf128bf03c961553e2f9f2d4ed + checksum: 10c0/e4582cd40b082e95bc2075bed656dcbc24e83538830f15cb5a025f1ba8d341adbdb3c66efb6a5bfd6860a3ea426322135aa666cf128bf03c961553e2f9f2d4ed languageName: node linkType: hard @@ -10682,7 +10682,7 @@ __metadata: get-own-enumerable-property-symbols: "npm:^3.0.0" is-obj: "npm:^1.0.1" is-regexp: "npm:^1.0.0" - checksum: ba8078f84128979ee24b3de9a083489cbd3c62cb8572a061b47d4d82601a8ae4b4d86fa8c54dd955593da56bb7c16a6de51c27221fdc6b7139bb4f29d815f35b + checksum: 10c0/ba8078f84128979ee24b3de9a083489cbd3c62cb8572a061b47d4d82601a8ae4b4d86fa8c54dd955593da56bb7c16a6de51c27221fdc6b7139bb4f29d815f35b languageName: node linkType: hard @@ -10691,7 +10691,7 @@ __metadata: resolution: "strip-ansi@npm:6.0.1" dependencies: ansi-regex: "npm:^5.0.1" - checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 languageName: node linkType: hard @@ -10700,35 +10700,35 @@ __metadata: resolution: "strip-ansi@npm:7.0.1" dependencies: ansi-regex: "npm:^6.0.1" - checksum: a94805f54caefae6cf4870ee6acfe50cff69d90a37994bf02c096042d9939ee211e1568f34b9fa5efa03c7d7fea79cb3ac8a4e517ceb848284ae300da06ca7e9 + checksum: 10c0/a94805f54caefae6cf4870ee6acfe50cff69d90a37994bf02c096042d9939ee211e1568f34b9fa5efa03c7d7fea79cb3ac8a4e517ceb848284ae300da06ca7e9 languageName: node linkType: hard "strip-bom-string@npm:^1.0.0": version: 1.0.0 resolution: "strip-bom-string@npm:1.0.0" - checksum: 5c5717e2643225aa6a6d659d34176ab2657037f1fe2423ac6fcdb488f135e14fef1022030e426d8b4d0989e09adbd5c3288d5d3b9c632abeefd2358dfc512bca + checksum: 10c0/5c5717e2643225aa6a6d659d34176ab2657037f1fe2423ac6fcdb488f135e14fef1022030e426d8b4d0989e09adbd5c3288d5d3b9c632abeefd2358dfc512bca languageName: node linkType: hard "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" - checksum: bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f languageName: node linkType: hard "strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" - checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd languageName: node linkType: hard "strip-json-comments@npm:~2.0.1": version: 2.0.1 resolution: "strip-json-comments@npm:2.0.1" - checksum: b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 languageName: node linkType: hard @@ -10737,7 +10737,7 @@ __metadata: resolution: "style-to-object@npm:0.4.4" dependencies: inline-style-parser: "npm:0.1.1" - checksum: 3a733080da66952881175b17d65f92985cf94c1ca358a92cf21b114b1260d49b94a404ed79476047fb95698d64c7e366ca7443f0225939e2fb34c38bbc9c7639 + checksum: 10c0/3a733080da66952881175b17d65f92985cf94c1ca358a92cf21b114b1260d49b94a404ed79476047fb95698d64c7e366ca7443f0225939e2fb34c38bbc9c7639 languageName: node linkType: hard @@ -10749,7 +10749,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.2.15 - checksum: 402c2b545eeda0e972f125779adddc88df11bcf3a89de60c92026bd98cd49c1abffcd5bfe41766398835e0a1c7e5e72bdb6905809ecbb60716cd8d3a32ea7cd3 + checksum: 10c0/402c2b545eeda0e972f125779adddc88df11bcf3a89de60c92026bd98cd49c1abffcd5bfe41766398835e0a1c7e5e72bdb6905809ecbb60716cd8d3a32ea7cd3 languageName: node linkType: hard @@ -10758,7 +10758,7 @@ __metadata: resolution: "supports-color@npm:5.5.0" dependencies: has-flag: "npm:^3.0.0" - checksum: 6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 languageName: node linkType: hard @@ -10767,7 +10767,7 @@ __metadata: resolution: "supports-color@npm:7.2.0" dependencies: has-flag: "npm:^4.0.0" - checksum: afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 languageName: node linkType: hard @@ -10776,21 +10776,21 @@ __metadata: resolution: "supports-color@npm:8.1.1" dependencies: has-flag: "npm:^4.0.0" - checksum: ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 languageName: node linkType: hard "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 languageName: node linkType: hard "svg-parser@npm:^2.0.4": version: 2.0.4 resolution: "svg-parser@npm:2.0.4" - checksum: 02f6cb155dd7b63ebc2f44f36365bc294543bebb81b614b7628f1af3c54ab64f7e1cec20f06e252bf95bdde78441ae295a412c68ad1678f16a6907d924512b7a + checksum: 10c0/02f6cb155dd7b63ebc2f44f36365bc294543bebb81b614b7628f1af3c54ab64f7e1cec20f06e252bf95bdde78441ae295a412c68ad1678f16a6907d924512b7a languageName: node linkType: hard @@ -10807,21 +10807,21 @@ __metadata: stable: "npm:^0.1.8" bin: svgo: bin/svgo - checksum: 0741f5d5cad63111a90a0ce7a1a5a9013f6d293e871b75efe39addb57f29a263e45294e485a4d2ff9cc260a5d142c8b5937b2234b4ef05efdd2706fb2d360ecc + checksum: 10c0/0741f5d5cad63111a90a0ce7a1a5a9013f6d293e871b75efe39addb57f29a263e45294e485a4d2ff9cc260a5d142c8b5937b2234b4ef05efdd2706fb2d360ecc languageName: node linkType: hard "tapable@npm:^1.0.0": version: 1.1.3 resolution: "tapable@npm:1.1.3" - checksum: c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 + checksum: 10c0/c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 languageName: node linkType: hard "tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0": version: 2.2.1 resolution: "tapable@npm:2.2.1" - checksum: bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 languageName: node linkType: hard @@ -10835,7 +10835,7 @@ __metadata: minizlib: "npm:^2.1.1" mkdirp: "npm:^1.0.3" yallist: "npm:^4.0.0" - checksum: 5a016f5330f43815420797b87ade578e2ea60affd47439c988a3fc8f7bb6b36450d627c31ba6a839346fae248b4c8c12bb06bb0716211f37476838c7eff91f05 + checksum: 10c0/5a016f5330f43815420797b87ade578e2ea60affd47439c988a3fc8f7bb6b36450d627c31ba6a839346fae248b4c8c12bb06bb0716211f37476838c7eff91f05 languageName: node linkType: hard @@ -10857,7 +10857,7 @@ __metadata: optional: true uglify-js: optional: true - checksum: 8a757106101ea1504e5dc549c722506506e7d3f0d38e72d6c8108ad814c994ca0d67ac5d0825ba59704a4b2b04548201b2137f198bfce897b09fe9e36727a1e9 + checksum: 10c0/8a757106101ea1504e5dc549c722506506e7d3f0d38e72d6c8108ad814c994ca0d67ac5d0825ba59704a4b2b04548201b2137f198bfce897b09fe9e36727a1e9 languageName: node linkType: hard @@ -10871,42 +10871,42 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 9a73ae528210242593d8bbc46af8a235fb0a7607707910a7c5cb85a7d2692d0780019dcbf34734b3cb2591111cc41628f1dce1608dccd3201b6843458ebe9e00 + checksum: 10c0/9a73ae528210242593d8bbc46af8a235fb0a7607707910a7c5cb85a7d2692d0780019dcbf34734b3cb2591111cc41628f1dce1608dccd3201b6843458ebe9e00 languageName: node linkType: hard "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" - checksum: 02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c languageName: node linkType: hard "thunky@npm:^1.0.2": version: 1.1.0 resolution: "thunky@npm:1.1.0" - checksum: 369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 + checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 languageName: node linkType: hard "tiny-invariant@npm:^1.0.2": version: 1.2.0 resolution: "tiny-invariant@npm:1.2.0" - checksum: a7dd29c5256fdc4901e3adadaa203da62bd23c6a79830f7aa99ea2df5e2e82f84051550dcafb82af18b2d61d75dcc17993f01f938e9ad8f20cf4c514fff88d47 + checksum: 10c0/a7dd29c5256fdc4901e3adadaa203da62bd23c6a79830f7aa99ea2df5e2e82f84051550dcafb82af18b2d61d75dcc17993f01f938e9ad8f20cf4c514fff88d47 languageName: node linkType: hard "tiny-warning@npm:^1.0.0": version: 1.0.3 resolution: "tiny-warning@npm:1.0.3" - checksum: ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa + checksum: 10c0/ef8531f581b30342f29670cb41ca248001c6fd7975ce22122bd59b8d62b4fc84ad4207ee7faa95cde982fa3357cd8f4be650142abc22805538c3b1392d7084fa languageName: node linkType: hard "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" - checksum: b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 languageName: node linkType: hard @@ -10915,56 +10915,56 @@ __metadata: resolution: "to-regex-range@npm:5.0.1" dependencies: is-number: "npm:^7.0.0" - checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 languageName: node linkType: hard "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" - checksum: 93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 languageName: node linkType: hard "totalist@npm:^3.0.0": version: 3.0.1 resolution: "totalist@npm:3.0.1" - checksum: 4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 languageName: node linkType: hard "trim-lines@npm:^3.0.0": version: 3.0.1 resolution: "trim-lines@npm:3.0.1" - checksum: 3a1611fa9e52aa56a94c69951a9ea15b8aaad760eaa26c56a65330dc8adf99cb282fc07cc9d94968b7d4d88003beba220a7278bbe2063328eb23fb56f9509e94 + checksum: 10c0/3a1611fa9e52aa56a94c69951a9ea15b8aaad760eaa26c56a65330dc8adf99cb282fc07cc9d94968b7d4d88003beba220a7278bbe2063328eb23fb56f9509e94 languageName: node linkType: hard "trough@npm:^2.0.0": version: 2.1.0 resolution: "trough@npm:2.1.0" - checksum: 9a973f0745fa69b9d34f29fe8123599abb6915350a5f4e9e9c9026156219f8774af062d916f4ec327b796149188719170ad87f0d120f1e94271a1843366efcc3 + checksum: 10c0/9a973f0745fa69b9d34f29fe8123599abb6915350a5f4e9e9c9026156219f8774af062d916f4ec327b796149188719170ad87f0d120f1e94271a1843366efcc3 languageName: node linkType: hard "tslib@npm:^2.0.3, tslib@npm:^2.6.0": version: 2.6.2 resolution: "tslib@npm:2.6.2" - checksum: e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb languageName: node linkType: hard "type-fest@npm:^1.0.1": version: 1.4.0 resolution: "type-fest@npm:1.4.0" - checksum: a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 + checksum: 10c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 languageName: node linkType: hard "type-fest@npm:^2.13.0, type-fest@npm:^2.5.0": version: 2.19.0 resolution: "type-fest@npm:2.19.0" - checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb languageName: node linkType: hard @@ -10974,7 +10974,7 @@ __metadata: dependencies: media-typer: "npm:0.3.0" mime-types: "npm:~2.1.24" - checksum: a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d languageName: node linkType: hard @@ -10983,7 +10983,7 @@ __metadata: resolution: "typedarray-to-buffer@npm:3.1.5" dependencies: is-typedarray: "npm:^1.0.0" - checksum: 4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 + checksum: 10c0/4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 languageName: node linkType: hard @@ -10993,7 +10993,7 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f languageName: node linkType: hard @@ -11003,21 +11003,21 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 languageName: node linkType: hard "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de + checksum: 10c0/0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de languageName: node linkType: hard "unicode-emoji-modifier-base@npm:^1.0.0": version: 1.0.0 resolution: "unicode-emoji-modifier-base@npm:1.0.0" - checksum: b37623fcf0162186debd20f116483e035a2d5b905b932a2c472459d9143d446ebcbefb2a494e2fe4fa7434355396e2a95ec3fc1f0c29a3bc8f2c827220e79c66 + checksum: 10c0/b37623fcf0162186debd20f116483e035a2d5b905b932a2c472459d9143d446ebcbefb2a494e2fe4fa7434355396e2a95ec3fc1f0c29a3bc8f2c827220e79c66 languageName: node linkType: hard @@ -11027,21 +11027,21 @@ __metadata: dependencies: unicode-canonical-property-names-ecmascript: "npm:^2.0.0" unicode-property-aliases-ecmascript: "npm:^2.0.0" - checksum: 4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec languageName: node linkType: hard "unicode-match-property-value-ecmascript@npm:^2.1.0": version: 2.1.0 resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" - checksum: f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 + checksum: 10c0/f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 languageName: node linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-property-aliases-ecmascript@npm:2.0.0" - checksum: db7f7ae188ce1a59b133a2c97021aebe30acc18a55f41074d126dcce5ac9d789dbd3ce7947e391b23db27f969251037b6ae05871d036aaa6cc0a6510c429aa1c + checksum: 10c0/db7f7ae188ce1a59b133a2c97021aebe30acc18a55f41074d126dcce5ac9d789dbd3ce7947e391b23db27f969251037b6ae05871d036aaa6cc0a6510c429aa1c languageName: node linkType: hard @@ -11056,7 +11056,7 @@ __metadata: is-plain-obj: "npm:^4.0.0" trough: "npm:^2.0.0" vfile: "npm:^6.0.0" - checksum: b550cdc994d54c84e2e098eb02cfa53535cbc140c148aa3296f235cb43082b499d239110f342fa65eb37ad919472a93cc62f062a83541485a69498084cc87ba1 + checksum: 10c0/b550cdc994d54c84e2e098eb02cfa53535cbc140c148aa3296f235cb43082b499d239110f342fa65eb37ad919472a93cc62f062a83541485a69498084cc87ba1 languageName: node linkType: hard @@ -11065,7 +11065,7 @@ __metadata: resolution: "unique-filename@npm:1.1.1" dependencies: unique-slug: "npm:^2.0.0" - checksum: d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 + checksum: 10c0/d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 languageName: node linkType: hard @@ -11074,7 +11074,7 @@ __metadata: resolution: "unique-slug@npm:2.0.2" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 + checksum: 10c0/9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 languageName: node linkType: hard @@ -11083,7 +11083,7 @@ __metadata: resolution: "unique-string@npm:3.0.0" dependencies: crypto-random-string: "npm:^4.0.0" - checksum: b35ea034b161b2a573666ec16c93076b4b6106b8b16c2415808d747ab3a0566b5db0c4be231d4b11cfbc16d7fd915c9d8a45884bff0e2db11b799775b2e1e017 + checksum: 10c0/b35ea034b161b2a573666ec16c93076b4b6106b8b16c2415808d747ab3a0566b5db0c4be231d4b11cfbc16d7fd915c9d8a45884bff0e2db11b799775b2e1e017 languageName: node linkType: hard @@ -11092,7 +11092,7 @@ __metadata: resolution: "unist-util-is@npm:6.0.0" dependencies: "@types/unist": "npm:^3.0.0" - checksum: 9419352181eaa1da35eca9490634a6df70d2217815bb5938a04af3a662c12c5607a2f1014197ec9c426fbef18834f6371bfdb6f033040fa8aa3e965300d70e7e + checksum: 10c0/9419352181eaa1da35eca9490634a6df70d2217815bb5938a04af3a662c12c5607a2f1014197ec9c426fbef18834f6371bfdb6f033040fa8aa3e965300d70e7e languageName: node linkType: hard @@ -11101,7 +11101,7 @@ __metadata: resolution: "unist-util-position-from-estree@npm:2.0.0" dependencies: "@types/unist": "npm:^3.0.0" - checksum: 39127bf5f0594e0a76d9241dec4f7aa26323517120ce1edd5ed91c8c1b9df7d6fb18af556e4b6250f1c7368825720ed892e2b6923be5cdc08a9bb16536dc37b3 + checksum: 10c0/39127bf5f0594e0a76d9241dec4f7aa26323517120ce1edd5ed91c8c1b9df7d6fb18af556e4b6250f1c7368825720ed892e2b6923be5cdc08a9bb16536dc37b3 languageName: node linkType: hard @@ -11110,7 +11110,7 @@ __metadata: resolution: "unist-util-position@npm:5.0.0" dependencies: "@types/unist": "npm:^3.0.0" - checksum: dde3b31e314c98f12b4dc6402f9722b2bf35e96a4f2d463233dd90d7cde2d4928074a7a11eff0a5eb1f4e200f27fc1557e0a64a7e8e4da6558542f251b1b7400 + checksum: 10c0/dde3b31e314c98f12b4dc6402f9722b2bf35e96a4f2d463233dd90d7cde2d4928074a7a11eff0a5eb1f4e200f27fc1557e0a64a7e8e4da6558542f251b1b7400 languageName: node linkType: hard @@ -11120,7 +11120,7 @@ __metadata: dependencies: "@types/unist": "npm:^3.0.0" unist-util-visit: "npm:^5.0.0" - checksum: e8c76da4399446b3da2d1c84a97c607b37d03d1d92561e14838cbe4fdcb485bfc06c06cfadbb808ccb72105a80643976d0660d1fe222ca372203075be9d71105 + checksum: 10c0/e8c76da4399446b3da2d1c84a97c607b37d03d1d92561e14838cbe4fdcb485bfc06c06cfadbb808ccb72105a80643976d0660d1fe222ca372203075be9d71105 languageName: node linkType: hard @@ -11129,7 +11129,7 @@ __metadata: resolution: "unist-util-stringify-position@npm:4.0.0" dependencies: "@types/unist": "npm:^3.0.0" - checksum: dfe1dbe79ba31f589108cb35e523f14029b6675d741a79dea7e5f3d098785045d556d5650ec6a8338af11e9e78d2a30df12b1ee86529cded1098da3f17ee999e + checksum: 10c0/dfe1dbe79ba31f589108cb35e523f14029b6675d741a79dea7e5f3d098785045d556d5650ec6a8338af11e9e78d2a30df12b1ee86529cded1098da3f17ee999e languageName: node linkType: hard @@ -11139,7 +11139,7 @@ __metadata: dependencies: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" - checksum: 51b1a5b0aa23c97d3e03e7288f0cdf136974df2217d0999d3de573c05001ef04cccd246f51d2ebdfb9e8b0ed2704451ad90ba85ae3f3177cf9772cef67f56206 + checksum: 10c0/51b1a5b0aa23c97d3e03e7288f0cdf136974df2217d0999d3de573c05001ef04cccd246f51d2ebdfb9e8b0ed2704451ad90ba85ae3f3177cf9772cef67f56206 languageName: node linkType: hard @@ -11150,21 +11150,21 @@ __metadata: "@types/unist": "npm:^3.0.0" unist-util-is: "npm:^6.0.0" unist-util-visit-parents: "npm:^6.0.0" - checksum: 51434a1d80252c1540cce6271a90fd1a106dbe624997c09ed8879279667fb0b2d3a685e02e92bf66598dcbe6cdffa7a5f5fb363af8fdf90dda6c855449ae39a5 + checksum: 10c0/51434a1d80252c1540cce6271a90fd1a106dbe624997c09ed8879279667fb0b2d3a685e02e92bf66598dcbe6cdffa7a5f5fb363af8fdf90dda6c855449ae39a5 languageName: node linkType: hard "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" - checksum: 07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 + checksum: 10c0/07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 languageName: node linkType: hard "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" - checksum: 193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c languageName: node linkType: hard @@ -11178,7 +11178,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 + checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 languageName: node linkType: hard @@ -11200,7 +11200,7 @@ __metadata: semver: "npm:^7.3.7" semver-diff: "npm:^4.0.0" xdg-basedir: "npm:^5.1.0" - checksum: ad3980073312df904133a6e6c554a7f9d0832ed6275e55f5a546313fe77a0f20f23a7b1b4aeb409e20a78afb06f4d3b2b28b332d9cfb55745b5d1ea155810bcc + checksum: 10c0/ad3980073312df904133a6e6c554a7f9d0832ed6275e55f5a546313fe77a0f20f23a7b1b4aeb409e20a78afb06f4d3b2b28b332d9cfb55745b5d1ea155810bcc languageName: node linkType: hard @@ -11209,7 +11209,7 @@ __metadata: resolution: "uri-js@npm:4.4.1" dependencies: punycode: "npm:^2.1.0" - checksum: 4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c languageName: node linkType: hard @@ -11226,35 +11226,35 @@ __metadata: peerDependenciesMeta: file-loader: optional: true - checksum: 71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 + checksum: 10c0/71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 languageName: node linkType: hard "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" - checksum: 41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard "utila@npm:~0.4": version: 0.4.0 resolution: "utila@npm:0.4.0" - checksum: 2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e + checksum: 10c0/2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e languageName: node linkType: hard "utility-types@npm:^3.10.0": version: 3.10.0 resolution: "utility-types@npm:3.10.0" - checksum: 79a6f7ea0cdd4fcafcec8c6e68e1e0cfa657e414b6f1696552d89ae70a3634b12ac6c16b7a0a3bfdb0a222ebc3d9a7649f2de434a78f2d65d318b50f314a85e4 + checksum: 10c0/79a6f7ea0cdd4fcafcec8c6e68e1e0cfa657e414b6f1696552d89ae70a3634b12ac6c16b7a0a3bfdb0a222ebc3d9a7649f2de434a78f2d65d318b50f314a85e4 languageName: node linkType: hard "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" - checksum: 02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 languageName: node linkType: hard @@ -11263,21 +11263,21 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard "value-equal@npm:^1.0.1": version: 1.0.1 resolution: "value-equal@npm:1.0.1" - checksum: 79068098355483ef29f4d3753999ad880875b87625d7e9055cad9346ea4b7662aad3a66f87976801b0dd7a6f828ba973d28b1669ebcd37eaf88cc5f687c1a691 + checksum: 10c0/79068098355483ef29f4d3753999ad880875b87625d7e9055cad9346ea4b7662aad3a66f87976801b0dd7a6f828ba973d28b1669ebcd37eaf88cc5f687c1a691 languageName: node linkType: hard "vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" - checksum: f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f languageName: node linkType: hard @@ -11287,7 +11287,7 @@ __metadata: dependencies: "@types/unist": "npm:^3.0.0" vfile: "npm:^6.0.0" - checksum: cfc7e49de93ac5be6f3c9a9fe77676756e00d33a6c69d9c1ce279b06eedafa67fe5d0da2334b40e97963c43b014501bca2f829dfd6622a3290fb6f7dd2b9339e + checksum: 10c0/cfc7e49de93ac5be6f3c9a9fe77676756e00d33a6c69d9c1ce279b06eedafa67fe5d0da2334b40e97963c43b014501bca2f829dfd6622a3290fb6f7dd2b9339e languageName: node linkType: hard @@ -11297,7 +11297,7 @@ __metadata: dependencies: "@types/unist": "npm:^3.0.0" unist-util-stringify-position: "npm:^4.0.0" - checksum: 07671d239a075f888b78f318bc1d54de02799db4e9dce322474e67c35d75ac4a5ac0aaf37b18801d91c9f8152974ea39678aa72d7198758b07f3ba04fb7d7514 + checksum: 10c0/07671d239a075f888b78f318bc1d54de02799db4e9dce322474e67c35d75ac4a5ac0aaf37b18801d91c9f8152974ea39678aa72d7198758b07f3ba04fb7d7514 languageName: node linkType: hard @@ -11308,7 +11308,7 @@ __metadata: "@types/unist": "npm:^3.0.0" unist-util-stringify-position: "npm:^4.0.0" vfile-message: "npm:^4.0.0" - checksum: 443bda43e5ad3b73c5976e987dba2b2d761439867ba7d5d7c5f4b01d3c1cb1b976f5f0e6b2399a00dc9b4eaec611bd9984ce9ce8a75a72e60aed518b10a902d2 + checksum: 10c0/443bda43e5ad3b73c5976e987dba2b2d761439867ba7d5d7c5f4b01d3c1cb1b976f5f0e6b2399a00dc9b4eaec611bd9984ce9ce8a75a72e60aed518b10a902d2 languageName: node linkType: hard @@ -11318,7 +11318,7 @@ __metadata: dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 + checksum: 10c0/c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 languageName: node linkType: hard @@ -11327,14 +11327,14 @@ __metadata: resolution: "wbuf@npm:1.7.3" dependencies: minimalistic-assert: "npm:^1.0.0" - checksum: 56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 + checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 languageName: node linkType: hard "web-namespaces@npm:^2.0.0": version: 2.0.1 resolution: "web-namespaces@npm:2.0.1" - checksum: df245f466ad83bd5cd80bfffc1674c7f64b7b84d1de0e4d2c0934fb0782e0a599164e7197a4bce310ee3342fd61817b8047ff04f076a1ce12dd470584142a4bd + checksum: 10c0/df245f466ad83bd5cd80bfffc1674c7f64b7b84d1de0e4d2c0934fb0782e0a599164e7197a4bce310ee3342fd61817b8047ff04f076a1ce12dd470584142a4bd languageName: node linkType: hard @@ -11361,7 +11361,7 @@ __metadata: ws: "npm:^7.3.1" bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 + checksum: 10c0/dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 languageName: node linkType: hard @@ -11376,7 +11376,7 @@ __metadata: schema-utils: "npm:^4.0.0" peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: 705553c7af45eae6d8f93c5d8e6a6254085d7e1a7a789c58b1aec1c6c6c8f4bb65d5663a7c34c793920351d3c580cf566690d4fd5776a198d39a3b2c708e6ca5 + checksum: 10c0/705553c7af45eae6d8f93c5d8e6a6254085d7e1a7a789c58b1aec1c6c6c8f4bb65d5663a7c34c793920351d3c580cf566690d4fd5776a198d39a3b2c708e6ca5 languageName: node linkType: hard @@ -11423,7 +11423,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 + checksum: 10c0/2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 languageName: node linkType: hard @@ -11434,14 +11434,14 @@ __metadata: clone-deep: "npm:^4.0.1" flat: "npm:^5.0.2" wildcard: "npm:^2.0.0" - checksum: b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b + checksum: 10c0/b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b languageName: node linkType: hard "webpack-sources@npm:^3.2.2, webpack-sources@npm:^3.2.3": version: 3.2.3 resolution: "webpack-sources@npm:3.2.3" - checksum: 2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e languageName: node linkType: hard @@ -11478,7 +11478,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 2562bf48788d651634fb7db6a5378c2fe3fce7f66831af38468da3944bd98756d68efea94a6909593993fb57b2d14cf802cbef2c83c6ef0047f7f606d59bec50 + checksum: 10c0/2562bf48788d651634fb7db6a5378c2fe3fce7f66831af38468da3944bd98756d68efea94a6909593993fb57b2d14cf802cbef2c83c6ef0047f7f606d59bec50 languageName: node linkType: hard @@ -11492,7 +11492,7 @@ __metadata: std-env: "npm:^3.0.1" peerDependencies: webpack: 3 || 4 || 5 - checksum: 336568a6ed1c1ad743c8d20a5cab5875a7ebe1e96181f49ae0a1a897f1a59d1661d837574a25d8ba9dfa4f2f705bd46ca0cd037ff60286ff70fb8d9db2b0c123 + checksum: 10c0/336568a6ed1c1ad743c8d20a5cab5875a7ebe1e96181f49ae0a1a897f1a59d1661d837574a25d8ba9dfa4f2f705bd46ca0cd037ff60286ff70fb8d9db2b0c123 languageName: node linkType: hard @@ -11503,14 +11503,14 @@ __metadata: http-parser-js: "npm:>=0.5.1" safe-buffer: "npm:>=5.1.0" websocket-extensions: "npm:>=0.1.1" - checksum: 5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 + checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 languageName: node linkType: hard "websocket-extensions@npm:>=0.1.1": version: 0.1.4 resolution: "websocket-extensions@npm:0.1.4" - checksum: bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 + checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 languageName: node linkType: hard @@ -11521,7 +11521,7 @@ __metadata: isexe: "npm:^2.0.0" bin: which: ./bin/which - checksum: e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 + checksum: 10c0/e945a8b6bbf6821aaaef7f6e0c309d4b615ef35699576d5489b4261da9539f70393c6b2ce700ee4321c18f914ebe5644bc4631b15466ffbaad37d83151f6af59 languageName: node linkType: hard @@ -11532,7 +11532,7 @@ __metadata: isexe: "npm:^2.0.0" bin: node-which: ./bin/node-which - checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f languageName: node linkType: hard @@ -11541,7 +11541,7 @@ __metadata: resolution: "wide-align@npm:1.1.5" dependencies: string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: 1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 + checksum: 10c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 languageName: node linkType: hard @@ -11550,14 +11550,14 @@ __metadata: resolution: "widest-line@npm:4.0.1" dependencies: string-width: "npm:^5.0.1" - checksum: 7da9525ba45eaf3e4ed1a20f3dcb9b85bd9443962450694dae950f4bdd752839747bbc14713522b0b93080007de8e8af677a61a8c2114aa553ad52bde72d0f9c + checksum: 10c0/7da9525ba45eaf3e4ed1a20f3dcb9b85bd9443962450694dae950f4bdd752839747bbc14713522b0b93080007de8e8af677a61a8c2114aa553ad52bde72d0f9c languageName: node linkType: hard "wildcard@npm:^2.0.0": version: 2.0.0 resolution: "wildcard@npm:2.0.0" - checksum: 4e22a45f4fa7f0f0d3e11860ee9ce9225246d41af6ec507e6a7d64c2692afb40d695b92c8f801deda8d3536007c2ec07981079fd0c8bb38b8521de072b33ab7a + checksum: 10c0/4e22a45f4fa7f0f0d3e11860ee9ce9225246d41af6ec507e6a7d64c2692afb40d695b92c8f801deda8d3536007c2ec07981079fd0c8bb38b8521de072b33ab7a languageName: node linkType: hard @@ -11568,14 +11568,14 @@ __metadata: ansi-styles: "npm:^6.1.0" string-width: "npm:^5.0.1" strip-ansi: "npm:^7.0.1" - checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" - checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 languageName: node linkType: hard @@ -11587,7 +11587,7 @@ __metadata: is-typedarray: "npm:^1.0.0" signal-exit: "npm:^3.0.2" typedarray-to-buffer: "npm:^3.1.5" - checksum: 7fb67affd811c7a1221bed0c905c26e28f0041e138fb19ccf02db57a0ef93ea69220959af3906b920f9b0411d1914474cdd90b93a96e5cd9e8368d9777caac0e + checksum: 10c0/7fb67affd811c7a1221bed0c905c26e28f0041e138fb19ccf02db57a0ef93ea69220959af3906b920f9b0411d1914474cdd90b93a96e5cd9e8368d9777caac0e languageName: node linkType: hard @@ -11602,7 +11602,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: f856382d94dfa8d722337d79117fe4f16d48ef7d7f77a58e94af7d7f32e863fce8403c00992ddddbf1efd5a334c581c2a987aea66255f7ee368680e59f78ae15 + checksum: 10c0/f856382d94dfa8d722337d79117fe4f16d48ef7d7f77a58e94af7d7f32e863fce8403c00992ddddbf1efd5a334c581c2a987aea66255f7ee368680e59f78ae15 languageName: node linkType: hard @@ -11617,14 +11617,14 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 35b4c2da048b8015c797fd14bcb5a5766216ce65c8a5965616a5440ca7b6c3681ee3cbd0ea0c184a59975556e9d58f2002abf8485a14d11d3371770811050a16 + checksum: 10c0/35b4c2da048b8015c797fd14bcb5a5766216ce65c8a5965616a5440ca7b6c3681ee3cbd0ea0c184a59975556e9d58f2002abf8485a14d11d3371770811050a16 languageName: node linkType: hard "xdg-basedir@npm:^5.0.1, xdg-basedir@npm:^5.1.0": version: 5.1.0 resolution: "xdg-basedir@npm:5.1.0" - checksum: c88efabc71ffd996ba9ad8923a8cc1c7c020a03e2c59f0ffa72e06be9e724ad2a0fccef488757bc6ed3d8849d753dd25082d1035d95cb179e79eae4d034d0b80 + checksum: 10c0/c88efabc71ffd996ba9ad8923a8cc1c7c020a03e2c59f0ffa72e06be9e724ad2a0fccef488757bc6ed3d8849d753dd25082d1035d95cb179e79eae4d034d0b80 languageName: node linkType: hard @@ -11635,48 +11635,48 @@ __metadata: sax: "npm:^1.2.4" bin: xml-js: ./bin/cli.js - checksum: c83631057f10bf90ea785cee434a8a1a0030c7314fe737ad9bf568a281083b565b28b14c9e9ba82f11fc9dc582a3a907904956af60beb725be1c9ad4b030bc5a + checksum: 10c0/c83631057f10bf90ea785cee434a8a1a0030c7314fe737ad9bf568a281083b565b28b14c9e9ba82f11fc9dc582a3a907904956af60beb725be1c9ad4b030bc5a languageName: node linkType: hard "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" - checksum: c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 languageName: node linkType: hard "yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" - checksum: 2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard "yaml@npm:^1.10.0, yaml@npm:^1.10.2, yaml@npm:^1.7.2": version: 1.10.2 resolution: "yaml@npm:1.10.2" - checksum: 5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" - checksum: dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f languageName: node linkType: hard "yocto-queue@npm:^1.0.0": version: 1.0.0 resolution: "yocto-queue@npm:1.0.0" - checksum: 856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + checksum: 10c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 languageName: node linkType: hard "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4" - checksum: 3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e + checksum: 10c0/3c7830cdd3378667e058ffdb4cf2bb78ac5711214e2725900873accb23f3dfe5f9e7e5a06dcdc5f29605da976fc45c26d9a13ca334d6eea2245a15e77b8fc06e languageName: node linkType: hard diff --git a/package.json b/package.json index 1232053c9c4a..64b5638c701e 100644 --- a/package.json +++ b/package.json @@ -114,6 +114,6 @@ "yargs": "17.7.2", "zx": "7.2.3" }, - "packageManager": "yarn@4.0.2", + "packageManager": "yarn@4.1.0", "npmClient": "yarn" } diff --git a/packages/create-redwood-app/templates/js/package.json b/packages/create-redwood-app/templates/js/package.json index 3d2f18b5f1d5..e74028e8ed71 100644 --- a/packages/create-redwood-app/templates/js/package.json +++ b/packages/create-redwood-app/templates/js/package.json @@ -20,5 +20,5 @@ "prisma": { "seed": "yarn rw exec seed" }, - "packageManager": "yarn@4.0.2" + "packageManager": "yarn@4.1.0" } diff --git a/packages/create-redwood-app/templates/ts/package.json b/packages/create-redwood-app/templates/ts/package.json index 3d2f18b5f1d5..e74028e8ed71 100644 --- a/packages/create-redwood-app/templates/ts/package.json +++ b/packages/create-redwood-app/templates/ts/package.json @@ -20,5 +20,5 @@ "prisma": { "seed": "yarn rw exec seed" }, - "packageManager": "yarn@4.0.2" + "packageManager": "yarn@4.1.0" } diff --git a/tasks/check/package.json b/tasks/check/package.json index 395193168cce..1fb733313c96 100644 --- a/tasks/check/package.json +++ b/tasks/check/package.json @@ -5,5 +5,6 @@ "@actions/core": "1.10.1", "@actions/exec": "1.1.1", "sort-package-json": "2.6.0" - } + }, + "packageManager": "yarn@4.1.0" } diff --git a/tasks/check/yarn.lock b/tasks/check/yarn.lock index dc3f7f3e564a..502d10e1e84d 100644 --- a/tasks/check/yarn.lock +++ b/tasks/check/yarn.lock @@ -11,7 +11,7 @@ __metadata: dependencies: "@actions/http-client": "npm:^2.0.1" uuid: "npm:^8.3.2" - checksum: 7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 + checksum: 10c0/7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 languageName: node linkType: hard @@ -20,7 +20,7 @@ __metadata: resolution: "@actions/exec@npm:1.1.1" dependencies: "@actions/io": "npm:^1.0.1" - checksum: 4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a + checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a languageName: node linkType: hard @@ -29,14 +29,14 @@ __metadata: resolution: "@actions/http-client@npm:2.0.1" dependencies: tunnel: "npm:^0.0.6" - checksum: b58987ba2f53d7988f612ede7ff834573a3360c21f8fdea9fea92f26ada0fd0efafb22aa7d83f49c18965a5b765775d5253e2edb8d9476d924c4b304ef726b67 + checksum: 10c0/b58987ba2f53d7988f612ede7ff834573a3360c21f8fdea9fea92f26ada0fd0efafb22aa7d83f49c18965a5b765775d5253e2edb8d9476d924c4b304ef726b67 languageName: node linkType: hard "@actions/io@npm:^1.0.1": version: 1.1.2 resolution: "@actions/io@npm:1.1.2" - checksum: 61c871bbee1cf58f57917d9bb2cf6bb7ea4dc40de3f65c7fb4ec619ceff57fc98f56be9cca2d476b09e7a96e1cba0d88cd125c4f690d384b9483935186f256c1 + checksum: 10c0/61c871bbee1cf58f57917d9bb2cf6bb7ea4dc40de3f65c7fb4ec619ceff57fc98f56be9cca2d476b09e7a96e1cba0d88cd125c4f690d384b9483935186f256c1 languageName: node linkType: hard @@ -46,14 +46,14 @@ __metadata: dependencies: "@nodelib/fs.stat": "npm:2.0.5" run-parallel: "npm:^1.1.9" - checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb languageName: node linkType: hard "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d languageName: node linkType: hard @@ -63,7 +63,7 @@ __metadata: dependencies: "@nodelib/fs.scandir": "npm:2.1.5" fastq: "npm:^1.6.0" - checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 languageName: node linkType: hard @@ -72,7 +72,7 @@ __metadata: resolution: "braces@npm:3.0.2" dependencies: fill-range: "npm:^7.0.1" - checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 languageName: node linkType: hard @@ -89,14 +89,14 @@ __metadata: "detect-indent@npm:^7.0.1": version: 7.0.1 resolution: "detect-indent@npm:7.0.1" - checksum: 47b6e3e3dda603c386e73b129f3e84844ae59bc2615f5072becf3cc02eab400bed5a4e6379c49d0b18cf630e80c2b07e87e0038b777addbc6ef793ad77dd05bc + checksum: 10c0/47b6e3e3dda603c386e73b129f3e84844ae59bc2615f5072becf3cc02eab400bed5a4e6379c49d0b18cf630e80c2b07e87e0038b777addbc6ef793ad77dd05bc languageName: node linkType: hard "detect-newline@npm:^4.0.0": version: 4.0.0 resolution: "detect-newline@npm:4.0.0" - checksum: 87dcff7a9ec25d1f4b356c068c3f05eb68bf6c2cbc4461da013df317ec184bbc96a2383bfaab9f963882ab988336bdadd5ce71b9cec55dde02d8ef84cef99250 + checksum: 10c0/87dcff7a9ec25d1f4b356c068c3f05eb68bf6c2cbc4461da013df317ec184bbc96a2383bfaab9f963882ab988336bdadd5ce71b9cec55dde02d8ef84cef99250 languageName: node linkType: hard @@ -105,7 +105,7 @@ __metadata: resolution: "dir-glob@npm:3.0.1" dependencies: path-type: "npm:^4.0.0" - checksum: dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c languageName: node linkType: hard @@ -118,7 +118,7 @@ __metadata: glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: 4700063a2d7c9aae178f575648580bee1fc3f02ab3f358236d77811f52332bc10a398e75c6d5ecde61216996f3308247b37d70e2ee605a0748abe147f01b8f64 + checksum: 10c0/4700063a2d7c9aae178f575648580bee1fc3f02ab3f358236d77811f52332bc10a398e75c6d5ecde61216996f3308247b37d70e2ee605a0748abe147f01b8f64 languageName: node linkType: hard @@ -127,7 +127,7 @@ __metadata: resolution: "fastq@npm:1.13.0" dependencies: reusify: "npm:^1.0.4" - checksum: 76c7b5dafb93c7e74359a3e6de834ce7a7c2e3a3184050ed4cb652661de55cf8d4895178d8d3ccd23069395056c7bb15450660d38fb382ca88c142b22694d7c9 + checksum: 10c0/76c7b5dafb93c7e74359a3e6de834ce7a7c2e3a3184050ed4cb652661de55cf8d4895178d8d3ccd23069395056c7bb15450660d38fb382ca88c142b22694d7c9 languageName: node linkType: hard @@ -136,21 +136,21 @@ __metadata: resolution: "fill-range@npm:7.0.1" dependencies: to-regex-range: "npm:^5.0.1" - checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f languageName: node linkType: hard "get-stdin@npm:^9.0.0": version: 9.0.0 resolution: "get-stdin@npm:9.0.0" - checksum: 7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b + checksum: 10c0/7ef2edc0c81a0644ca9f051aad8a96ae9373d901485abafaabe59fd347a1c378689d8a3d8825fb3067415d1d09dfcaa43cb9b9516ecac6b74b3138b65a8ccc6b languageName: node linkType: hard "git-hooks-list@npm:^3.0.0": version: 3.1.0 resolution: "git-hooks-list@npm:3.1.0" - checksum: f1b93dd11b80b2a687b99a8bb553c0d07f344532d475b3ac2a5ff044d40fa71567ddcfa5cb39fae0b4e43a670a33f02f71ec3b24b7263233f3a3df89deddfb5a + checksum: 10c0/f1b93dd11b80b2a687b99a8bb553c0d07f344532d475b3ac2a5ff044d40fa71567ddcfa5cb39fae0b4e43a670a33f02f71ec3b24b7263233f3a3df89deddfb5a languageName: node linkType: hard @@ -159,7 +159,7 @@ __metadata: resolution: "glob-parent@npm:5.1.2" dependencies: is-glob: "npm:^4.0.1" - checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee languageName: node linkType: hard @@ -172,21 +172,21 @@ __metadata: ignore: "npm:^5.2.4" merge2: "npm:^1.4.1" slash: "npm:^4.0.0" - checksum: a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 + checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 languageName: node linkType: hard "ignore@npm:^5.2.4": version: 5.2.4 resolution: "ignore@npm:5.2.4" - checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 + checksum: 10c0/7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096 languageName: node linkType: hard "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" - checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 languageName: node linkType: hard @@ -195,28 +195,28 @@ __metadata: resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: "npm:^2.1.1" - checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" - checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 languageName: node linkType: hard "is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" - checksum: 32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e + checksum: 10c0/32130d651d71d9564dc88ba7e6fda0e91a1010a3694648e9f4f47bb6080438140696d3e3e15c741411d712e47ac9edc1a8a9de1fe76f3487b0d90be06ac9975e languageName: node linkType: hard "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" - checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb languageName: node linkType: hard @@ -226,35 +226,35 @@ __metadata: dependencies: braces: "npm:^3.0.2" picomatch: "npm:^2.3.1" - checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff languageName: node linkType: hard "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" - checksum: 666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c languageName: node linkType: hard "picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" - checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be languageName: node linkType: hard "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" - checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 languageName: node linkType: hard "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" - checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 languageName: node linkType: hard @@ -263,21 +263,21 @@ __metadata: resolution: "run-parallel@npm:1.2.0" dependencies: queue-microtask: "npm:^1.2.2" - checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 languageName: node linkType: hard "slash@npm:^4.0.0": version: 4.0.0 resolution: "slash@npm:4.0.0" - checksum: b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 languageName: node linkType: hard "sort-object-keys@npm:^1.1.3": version: 1.1.3 resolution: "sort-object-keys@npm:1.1.3" - checksum: 3bf62398658d3ff4bbca0db4ed8f42f98abc41433859f63d02fb0ab953fbe5526be240ec7e5d85aa50fcab6c937f3fa7015abf1ecdeb3045a2281c53953886bf + checksum: 10c0/3bf62398658d3ff4bbca0db4ed8f42f98abc41433859f63d02fb0ab953fbe5526be240ec7e5d85aa50fcab6c937f3fa7015abf1ecdeb3045a2281c53953886bf languageName: node linkType: hard @@ -294,7 +294,7 @@ __metadata: sort-object-keys: "npm:^1.1.3" bin: sort-package-json: cli.js - checksum: c2beffd46bc8db49164458175b1f1bc7e0081711e854cbe211653748707211184d745bfee377241f3ceeb2d0d63d5e8dd0dfe7f41be99a044e0a2095bcf2c053 + checksum: 10c0/c2beffd46bc8db49164458175b1f1bc7e0081711e854cbe211653748707211184d745bfee377241f3ceeb2d0d63d5e8dd0dfe7f41be99a044e0a2095bcf2c053 languageName: node linkType: hard @@ -303,14 +303,14 @@ __metadata: resolution: "to-regex-range@npm:5.0.1" dependencies: is-number: "npm:^7.0.0" - checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 languageName: node linkType: hard "tunnel@npm:^0.0.6": version: 0.0.6 resolution: "tunnel@npm:0.0.6" - checksum: e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + checksum: 10c0/e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 languageName: node linkType: hard @@ -319,6 +319,6 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 5ee7ecf7c973..b404cbb67bf5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,7 +8,7 @@ __metadata: "@aashutoshrathi/word-wrap@npm:^1.2.3": version: 1.2.6 resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f languageName: node linkType: hard @@ -26,7 +26,7 @@ __metadata: "@azure/storage-blob": "npm:^12.13.0" semver: "npm:^6.1.0" uuid: "npm:^3.3.3" - checksum: 60ce5ef0ae902ffcf4c20b4940b764df8790decd0846c642f46b44c1497a8d0b47830c78c660b2eab1eb7ddf7008bd9a93f1f2c6ff15341deb58d9ef5c497bdd + checksum: 10c0/60ce5ef0ae902ffcf4c20b4940b764df8790decd0846c642f46b44c1497a8d0b47830c78c660b2eab1eb7ddf7008bd9a93f1f2c6ff15341deb58d9ef5c497bdd languageName: node linkType: hard @@ -36,7 +36,7 @@ __metadata: dependencies: "@actions/http-client": "npm:^2.0.1" uuid: "npm:^8.3.2" - checksum: 7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 + checksum: 10c0/7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 languageName: node linkType: hard @@ -45,7 +45,7 @@ __metadata: resolution: "@actions/exec@npm:1.1.1" dependencies: "@actions/io": "npm:^1.0.1" - checksum: 4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a + checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a languageName: node linkType: hard @@ -55,7 +55,7 @@ __metadata: dependencies: "@actions/core": "npm:^1.9.1" minimatch: "npm:^3.0.4" - checksum: f50f029244b216676184ec00034508594cc750ed7efc2ebff490eb407352526424e1280cbf7fef95a75247f54a1732277ef6c007ce193aeca8430e7f4d356d33 + checksum: 10c0/f50f029244b216676184ec00034508594cc750ed7efc2ebff490eb407352526424e1280cbf7fef95a75247f54a1732277ef6c007ce193aeca8430e7f4d356d33 languageName: node linkType: hard @@ -65,7 +65,7 @@ __metadata: dependencies: "@actions/core": "npm:^1.2.6" minimatch: "npm:^3.0.4" - checksum: 7431cb85da7df2bab8dac54885410cbd695ae70b516a70b642d59df3e444030e4bbc8b103226e8c98130ee81f024739aefbec3bf20dff8a280724c4fae8be492 + checksum: 10c0/7431cb85da7df2bab8dac54885410cbd695ae70b516a70b642d59df3e444030e4bbc8b103226e8c98130ee81f024739aefbec3bf20dff8a280724c4fae8be492 languageName: node linkType: hard @@ -75,21 +75,21 @@ __metadata: dependencies: tunnel: "npm:^0.0.6" undici: "npm:^5.25.4" - checksum: 868fe8529d78beb72f84ea2486e232fa6f66abe00d6ec4591b98c37e762c3d812868a3548638d75b49917961fd10ba1556916b47b1e9e4b55c266e2013c3ae8e + checksum: 10c0/868fe8529d78beb72f84ea2486e232fa6f66abe00d6ec4591b98c37e762c3d812868a3548638d75b49917961fd10ba1556916b47b1e9e4b55c266e2013c3ae8e languageName: node linkType: hard "@actions/io@npm:^1.0.1": version: 1.1.3 resolution: "@actions/io@npm:1.1.3" - checksum: 5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e + checksum: 10c0/5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e languageName: node linkType: hard "@adobe/css-tools@npm:^4.3.2": version: 4.3.3 resolution: "@adobe/css-tools@npm:4.3.3" - checksum: e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 + checksum: 10c0/e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 languageName: node linkType: hard @@ -99,7 +99,7 @@ __metadata: dependencies: "@jridgewell/gen-mapping": "npm:^0.3.0" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 + checksum: 10c0/92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 languageName: node linkType: hard @@ -134,7 +134,7 @@ __metadata: optional: true subscriptions-transport-ws: optional: true - checksum: 983306f61de042aca2f02e414533fbdac0c9c905648a98b42bb79bccb19012306eebb3c55c6d665523addbc1948625d1aae70bdc2dd511775b7a962a40dfc5b1 + checksum: 10c0/983306f61de042aca2f02e414533fbdac0c9c905648a98b42bb79bccb19012306eebb3c55c6d665523addbc1948625d1aae70bdc2dd511775b7a962a40dfc5b1 languageName: node linkType: hard @@ -163,7 +163,7 @@ __metadata: graphql: "*" bin: relay-compiler: bin/relay-compiler - checksum: 7207d65dd39d3a6202fcee81b03338409642a0ff4e7f799b4a074025429ce2b17b6c71c9579a6328b0f4548763ba4efbff0436cddbcad934af00cc4dbc7ac4e1 + checksum: 10c0/7207d65dd39d3a6202fcee81b03338409642a0ff4e7f799b4a074025429ce2b17b6c71c9579a6328b0f4548763ba4efbff0436cddbcad934af00cc4dbc7ac4e1 languageName: node linkType: hard @@ -172,14 +172,14 @@ __metadata: resolution: "@ardatan/sync-fetch@npm:0.0.1" dependencies: node-fetch: "npm:^2.6.1" - checksum: cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f + checksum: 10c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f languageName: node linkType: hard "@auth0/auth0-spa-js@npm:2.1.2": version: 2.1.2 resolution: "@auth0/auth0-spa-js@npm:2.1.2" - checksum: fb3a6b2ca2782a2f4aa03afe539a042076d0683c3f08e87a3bf93c6db6ad89f79441cb525f768b8bd3bb0c6b240833390bb2e06055ae30e9edf02575233ed4c7 + checksum: 10c0/fb3a6b2ca2782a2f4aa03afe539a042076d0683c3f08e87a3bf93c6db6ad89f79441cb525f768b8bd3bb0c6b240833390bb2e06055ae30e9edf02575233ed4c7 languageName: node linkType: hard @@ -190,7 +190,7 @@ __metadata: default-browser-id: "npm:3.0.0" bin: x-default-browser: bin/x-default-browser.js - checksum: 634c7fad7a5f4df86e3fcd3a11e50034fcb6f6302281569727574cbda7532850063cb34ec328384a686ab0812f297bf301a5e2450bc7b93b5f80a006b1f2dfd7 + checksum: 10c0/634c7fad7a5f4df86e3fcd3a11e50034fcb6f6302281569727574cbda7532850063cb34ec328384a686ab0812f297bf301a5e2450bc7b93b5f80a006b1f2dfd7 languageName: node linkType: hard @@ -199,7 +199,7 @@ __metadata: resolution: "@azure/abort-controller@npm:1.1.0" dependencies: tslib: "npm:^2.2.0" - checksum: bb79f0faaa9e9c1ae3c4ec2523ea23ee0879cc491abb4b3ac2dd56c2cc2dfe4b7e8522ffa866d39c7145c0dd61387711368afe0d4eb6534daba7b67ed0a2a730 + checksum: 10c0/bb79f0faaa9e9c1ae3c4ec2523ea23ee0879cc491abb4b3ac2dd56c2cc2dfe4b7e8522ffa866d39c7145c0dd61387711368afe0d4eb6534daba7b67ed0a2a730 languageName: node linkType: hard @@ -209,7 +209,7 @@ __metadata: dependencies: "@azure/abort-controller": "npm:^1.0.0" tslib: "npm:^2.2.0" - checksum: c139da4a439703bc3d456dbdc8e84f430d9e5245442e9991830613825de10e218cf92d6bfbf1431ebef789565c33e440cc9cf8dd0134025b841937c512621588 + checksum: 10c0/c139da4a439703bc3d456dbdc8e84f430d9e5245442e9991830613825de10e218cf92d6bfbf1431ebef789565c33e440cc9cf8dd0134025b841937c512621588 languageName: node linkType: hard @@ -231,7 +231,7 @@ __metadata: tunnel: "npm:^0.0.6" uuid: "npm:^8.3.0" xml2js: "npm:^0.5.0" - checksum: 2dacb199bb77b07bc3cf8d3e9426e0ddec0de4a105f1f38a85d13c3e438bf34c29c1bd9a7e54d36483162ec9ddb6d0081caeb924445c0689868f432f5ccdc6cc + checksum: 10c0/2dacb199bb77b07bc3cf8d3e9426e0ddec0de4a105f1f38a85d13c3e438bf34c29c1bd9a7e54d36483162ec9ddb6d0081caeb924445c0689868f432f5ccdc6cc languageName: node linkType: hard @@ -243,7 +243,7 @@ __metadata: "@azure/core-util": "npm:^1.2.0" "@azure/logger": "npm:^1.0.0" tslib: "npm:^2.2.0" - checksum: 3f0acd7bf9f601661b0d226a13edf4048f08b9217d91ae6e2d35764ff80b05d5530e6dfd87a6e4b99937df22bb720363f9edb5be61c62d4eaffd3020c6618c8b + checksum: 10c0/3f0acd7bf9f601661b0d226a13edf4048f08b9217d91ae6e2d35764ff80b05d5530e6dfd87a6e4b99937df22bb720363f9edb5be61c62d4eaffd3020c6618c8b languageName: node linkType: hard @@ -252,7 +252,7 @@ __metadata: resolution: "@azure/core-paging@npm:1.5.0" dependencies: tslib: "npm:^2.2.0" - checksum: 634a1c6540d16cf047035f19d8866b561e8036059aec2ce0304d77999404e95458f47c33a3f523d20cefa329bad33ccc6bf7450efa8f7d77ceb3419d519b1c48 + checksum: 10c0/634a1c6540d16cf047035f19d8866b561e8036059aec2ce0304d77999404e95458f47c33a3f523d20cefa329bad33ccc6bf7450efa8f7d77ceb3419d519b1c48 languageName: node linkType: hard @@ -262,7 +262,7 @@ __metadata: dependencies: "@opentelemetry/api": "npm:^1.0.1" tslib: "npm:^2.2.0" - checksum: 0977479165deefe1dcabbd68d18e44742ad18fa4bd0200b9d8b6647510c200800e8b47f8039a249086de9ff7eda37ea3f2beb85fa4878a08dd0251a71ea0cbe3 + checksum: 10c0/0977479165deefe1dcabbd68d18e44742ad18fa4bd0200b9d8b6647510c200800e8b47f8039a249086de9ff7eda37ea3f2beb85fa4878a08dd0251a71ea0cbe3 languageName: node linkType: hard @@ -272,7 +272,7 @@ __metadata: dependencies: "@azure/abort-controller": "npm:^1.0.0" tslib: "npm:^2.2.0" - checksum: bfe97fc99cb4fac5633f0fbd5a459233672f050083883bbd4b260aa3b82c7143efef0e05846d787c5864ca59825be0fb14699daa8a32b318efc1373345c0e5ee + checksum: 10c0/bfe97fc99cb4fac5633f0fbd5a459233672f050083883bbd4b260aa3b82c7143efef0e05846d787c5864ca59825be0fb14699daa8a32b318efc1373345c0e5ee languageName: node linkType: hard @@ -281,7 +281,7 @@ __metadata: resolution: "@azure/logger@npm:1.0.4" dependencies: tslib: "npm:^2.2.0" - checksum: 15af549d8dbf027e7520fc65432577d52c73b5a30bce2c218f97ab7104b037ae6c31d9a5bfa6bc9c7873c05693261ab8d7f5b95c65db6b1a7c8624c7b655afc6 + checksum: 10c0/15af549d8dbf027e7520fc65432577d52c73b5a30bce2c218f97ab7104b037ae6c31d9a5bfa6bc9c7873c05693261ab8d7f5b95c65db6b1a7c8624c7b655afc6 languageName: node linkType: hard @@ -297,7 +297,7 @@ __metadata: tunnel: "npm:0.0.6" uuid: "npm:^8.3.2" xml2js: "npm:^0.5.0" - checksum: c2fec3ca38b66da148015ffb47e45a331c9b85a298fdfa94d1a497a3e7d584b4b643baee7b40563747027642ab1ef20e4d8e1dcd1bf8e23b2ff6accf03807c3c + checksum: 10c0/c2fec3ca38b66da148015ffb47e45a331c9b85a298fdfa94d1a497a3e7d584b4b643baee7b40563747027642ab1ef20e4d8e1dcd1bf8e23b2ff6accf03807c3c languageName: node linkType: hard @@ -306,14 +306,14 @@ __metadata: resolution: "@azure/msal-browser@npm:2.38.3" dependencies: "@azure/msal-common": "npm:13.3.1" - checksum: 0b8606c4149c38200d817cf2f0c9001c76a8b3c00c622b1bc370781ffbfd999ba720e063eea570f06c4c7e97b0ca74c8699eec5d01acd383d157dac0efe24a5c + checksum: 10c0/0b8606c4149c38200d817cf2f0c9001c76a8b3c00c622b1bc370781ffbfd999ba720e063eea570f06c4c7e97b0ca74c8699eec5d01acd383d157dac0efe24a5c languageName: node linkType: hard "@azure/msal-common@npm:13.3.1": version: 13.3.1 resolution: "@azure/msal-common@npm:13.3.1" - checksum: a5827105e42483ae66736cc541e33a9df7e860b9100d2bb395ef4e0bd082a9d1c574d81147b8bfa7c68a004f0c92d2da6988c6f71033e729178721acf6cbf3c8 + checksum: 10c0/a5827105e42483ae66736cc541e33a9df7e860b9100d2bb395ef4e0bd082a9d1c574d81147b8bfa7c68a004f0c92d2da6988c6f71033e729178721acf6cbf3c8 languageName: node linkType: hard @@ -329,7 +329,7 @@ __metadata: "@azure/logger": "npm:^1.0.0" events: "npm:^3.0.0" tslib: "npm:^2.2.0" - checksum: 5a97148cc20fa906d335a960a9cf71e13d4fda3e128db74738e957965dd977db0dab4ca4401bfc57b9c5f3db5d3b8c736e6a0f83950d4da437a61c3403217d89 + checksum: 10c0/5a97148cc20fa906d335a960a9cf71e13d4fda3e128db74738e957965dd977db0dab4ca4401bfc57b9c5f3db5d3b8c736e6a0f83950d4da437a61c3403217d89 languageName: node linkType: hard @@ -356,7 +356,7 @@ __metadata: bin: babel: ./bin/babel.js babel-external-helpers: ./bin/babel-external-helpers.js - checksum: 0a5e9399e95ff0efea10db217e48682e025bd09d51aa96886e5c4d8c7b9d2115bc17d00704dc05e9ae7ab858c26467fec15e87a100cf995567c395f2941df4a0 + checksum: 10c0/0a5e9399e95ff0efea10db217e48682e025bd09d51aa96886e5c4d8c7b9d2115bc17d00704dc05e9ae7ab858c26467fec15e87a100cf995567c395f2941df4a0 languageName: node linkType: hard @@ -366,14 +366,14 @@ __metadata: dependencies: "@babel/highlight": "npm:^7.23.4" chalk: "npm:^2.4.2" - checksum: a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 + checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 languageName: node linkType: hard "@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": version: 7.23.5 resolution: "@babel/compat-data@npm:7.23.5" - checksum: 081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c + checksum: 10c0/081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c languageName: node linkType: hard @@ -396,7 +396,7 @@ __metadata: gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 03883300bf1252ab4c9ba5b52f161232dd52873dbe5cde9289bb2bb26e935c42682493acbac9194a59a3b6cbd17f4c4c84030db8d6d482588afe64531532ff9b + checksum: 10c0/03883300bf1252ab4c9ba5b52f161232dd52873dbe5cde9289bb2bb26e935c42682493acbac9194a59a3b6cbd17f4c4c84030db8d6d482588afe64531532ff9b languageName: node linkType: hard @@ -410,7 +410,7 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 - checksum: dfc091d44c86c72658d53abe66c778f7aa436672d66ae99a0b72857c968defed4749c18d2d3a35b1f61c77a193761ae7a71997dbe43c4c7cffcf945bd106bd67 + checksum: 10c0/dfc091d44c86c72658d53abe66c778f7aa436672d66ae99a0b72857c968defed4749c18d2d3a35b1f61c77a193761ae7a71997dbe43c4c7cffcf945bd106bd67 languageName: node linkType: hard @@ -422,7 +422,7 @@ __metadata: peerDependencies: "@babel/eslint-parser": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 - checksum: adaf0975bab774c9a7ddd7aac6f2f7e4e0b087fea24759d8538ebe988b72eaca5928d9afc6b9c13927bf3e3c6ac66795d1060f6a8bfa9748de27f5d93d3fef64 + checksum: 10c0/adaf0975bab774c9a7ddd7aac6f2f7e4e0b087fea24759d8538ebe988b72eaca5928d9afc6b9c13927bf3e3c6ac66795d1060f6a8bfa9748de27f5d93d3fef64 languageName: node linkType: hard @@ -434,7 +434,7 @@ __metadata: "@jridgewell/gen-mapping": "npm:^0.3.2" "@jridgewell/trace-mapping": "npm:^0.3.17" jsesc: "npm:^2.5.1" - checksum: 53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda + checksum: 10c0/53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda languageName: node linkType: hard @@ -443,7 +443,7 @@ __metadata: resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: 5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 languageName: node linkType: hard @@ -452,7 +452,7 @@ __metadata: resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" dependencies: "@babel/types": "npm:^7.22.15" - checksum: 2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c + checksum: 10c0/2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c languageName: node linkType: hard @@ -465,7 +465,7 @@ __metadata: browserslist: "npm:^4.22.2" lru-cache: "npm:^5.1.1" semver: "npm:^6.3.1" - checksum: ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa + checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa languageName: node linkType: hard @@ -484,7 +484,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 3bcbd699c34805e3dcc627e14b603da11e0c0535084d092cef38f78473e2a3db294690463b05e0ab78d375527894bffffb93a41534ba3ae9850757ef72d71c91 + checksum: 10c0/3bcbd699c34805e3dcc627e14b603da11e0c0535084d092cef38f78473e2a3db294690463b05e0ab78d375527894bffffb93a41534ba3ae9850757ef72d71c91 languageName: node linkType: hard @@ -497,7 +497,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 + checksum: 10c0/8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 languageName: node linkType: hard @@ -512,14 +512,14 @@ __metadata: resolve: "npm:^1.14.2" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 2b053b96a0c604a7e0f5c7d13a8a55f4451d938f7af42bd40f62a87df15e6c87a0b1dbd893a0f0bb51077b54dc3ba00a58b166531a5940ad286ab685dd8979ec + checksum: 10c0/2b053b96a0c604a7e0f5c7d13a8a55f4451d938f7af42bd40f62a87df15e6c87a0b1dbd893a0f0bb51077b54dc3ba00a58b166531a5940ad286ab685dd8979ec languageName: node linkType: hard "@babel/helper-environment-visitor@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 languageName: node linkType: hard @@ -529,7 +529,7 @@ __metadata: dependencies: "@babel/template": "npm:^7.22.15" "@babel/types": "npm:^7.23.0" - checksum: d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 languageName: node linkType: hard @@ -538,7 +538,7 @@ __metadata: resolution: "@babel/helper-hoist-variables@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: 60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 languageName: node linkType: hard @@ -547,7 +547,7 @@ __metadata: resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" dependencies: "@babel/types": "npm:^7.23.0" - checksum: b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 + checksum: 10c0/b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 languageName: node linkType: hard @@ -556,7 +556,7 @@ __metadata: resolution: "@babel/helper-module-imports@npm:7.22.15" dependencies: "@babel/types": "npm:^7.22.15" - checksum: 4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 + checksum: 10c0/4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 languageName: node linkType: hard @@ -571,7 +571,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: 211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 languageName: node linkType: hard @@ -580,14 +580,14 @@ __metadata: resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: 31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 + checksum: 10c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 languageName: node linkType: hard "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": version: 7.22.5 resolution: "@babel/helper-plugin-utils@npm:7.22.5" - checksum: d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d + checksum: 10c0/d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d languageName: node linkType: hard @@ -600,7 +600,7 @@ __metadata: "@babel/helper-wrap-function": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0 - checksum: aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e + checksum: 10c0/aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e languageName: node linkType: hard @@ -613,7 +613,7 @@ __metadata: "@babel/helper-optimise-call-expression": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 + checksum: 10c0/6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 languageName: node linkType: hard @@ -622,7 +622,7 @@ __metadata: resolution: "@babel/helper-simple-access@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 languageName: node linkType: hard @@ -631,7 +631,7 @@ __metadata: resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" dependencies: "@babel/types": "npm:^7.22.5" - checksum: ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 + checksum: 10c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 languageName: node linkType: hard @@ -640,28 +640,28 @@ __metadata: resolution: "@babel/helper-split-export-declaration@npm:7.22.6" dependencies: "@babel/types": "npm:^7.22.5" - checksum: d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 languageName: node linkType: hard "@babel/helper-string-parser@npm:^7.23.4": version: 7.23.4 resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac + checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac languageName: node linkType: hard "@babel/helper-validator-identifier@npm:^7.22.20": version: 7.22.20 resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e + checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e languageName: node linkType: hard "@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": version: 7.23.5 resolution: "@babel/helper-validator-option@npm:7.23.5" - checksum: af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 + checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 languageName: node linkType: hard @@ -672,7 +672,7 @@ __metadata: "@babel/helper-function-name": "npm:^7.22.5" "@babel/template": "npm:^7.22.15" "@babel/types": "npm:^7.22.19" - checksum: 97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb + checksum: 10c0/97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb languageName: node linkType: hard @@ -683,7 +683,7 @@ __metadata: "@babel/template": "npm:^7.23.9" "@babel/traverse": "npm:^7.23.9" "@babel/types": "npm:^7.23.9" - checksum: f69fd0aca96a6fb8bd6dd044cd8a5c0f1851072d4ce23355345b9493c4032e76d1217f86b70df795e127553cf7f3fcd1587ede9d1b03b95e8b62681ca2165b87 + checksum: 10c0/f69fd0aca96a6fb8bd6dd044cd8a5c0f1851072d4ce23355345b9493c4032e76d1217f86b70df795e127553cf7f3fcd1587ede9d1b03b95e8b62681ca2165b87 languageName: node linkType: hard @@ -694,7 +694,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" chalk: "npm:^2.4.2" js-tokens: "npm:^4.0.0" - checksum: fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 + checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 languageName: node linkType: hard @@ -712,7 +712,7 @@ __metadata: "@babel/core": ^7.0.0-0 bin: babel-node: ./bin/babel-node.js - checksum: 6de13cbfde3dd3edd55384c14327b8ffb6d0ae6e65fabe3ffa699752319087249660fead7b7254a1e6d4a6d6316c6ab411845c495909fdef074f94ed2c47eb08 + checksum: 10c0/6de13cbfde3dd3edd55384c14327b8ffb6d0ae6e65fabe3ffa699752319087249660fead7b7254a1e6d4a6d6316c6ab411845c495909fdef074f94ed2c47eb08 languageName: node linkType: hard @@ -721,7 +721,7 @@ __metadata: resolution: "@babel/parser@npm:7.23.9" bin: parser: ./bin/babel-parser.js - checksum: 7df97386431366d4810538db4b9ec538f4377096f720c0591c7587a16f6810e62747e9fbbfa1ff99257fd4330035e4fb1b5b77c7bd3b97ce0d2e3780a6618975 + checksum: 10c0/7df97386431366d4810538db4b9ec538f4377096f720c0591c7587a16f6810e62747e9fbbfa1ff99257fd4330035e4fb1b5b77c7bd3b97ce0d2e3780a6618975 languageName: node linkType: hard @@ -732,7 +732,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415 + checksum: 10c0/356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415 languageName: node linkType: hard @@ -745,7 +745,7 @@ __metadata: "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.13.0 - checksum: a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23 + checksum: 10c0/a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23 languageName: node linkType: hard @@ -757,7 +757,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 355746e21ad7f43e4f4daef54cfe2ef461ecd19446b2afedd53c39df1bf9aa2eeeeaabee2279b1321de89a97c9360e4f76e9ba950fee50ff1676c25f6929d625 + checksum: 10c0/355746e21ad7f43e4f4daef54cfe2ef461ecd19446b2afedd53c39df1bf9aa2eeeeaabee2279b1321de89a97c9360e4f76e9ba950fee50ff1676c25f6929d625 languageName: node linkType: hard @@ -769,7 +769,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 languageName: node linkType: hard @@ -782,7 +782,7 @@ __metadata: "@babel/plugin-syntax-decorators": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3e5d7f077bc8a98c72b2de275095bf2556b39fcc1c2b0f77ea73b171ff872548288ac228d13af24e3c6f657807f93ada21fbb35cb5201a63ce858caae6afbde1 + checksum: 10c0/3e5d7f077bc8a98c72b2de275095bf2556b39fcc1c2b0f77ea73b171ff872548288ac228d13af24e3c6f657807f93ada21fbb35cb5201a63ce858caae6afbde1 languageName: node linkType: hard @@ -794,7 +794,7 @@ __metadata: "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf + checksum: 10c0/f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf languageName: node linkType: hard @@ -809,7 +809,7 @@ __metadata: "@babel/plugin-transform-parameters": "npm:^7.20.7" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 + checksum: 10c0/b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 languageName: node linkType: hard @@ -822,7 +822,7 @@ __metadata: "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f + checksum: 10c0/b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f languageName: node linkType: hard @@ -831,7 +831,7 @@ __metadata: resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 languageName: node linkType: hard @@ -842,7 +842,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 languageName: node linkType: hard @@ -853,7 +853,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde languageName: node linkType: hard @@ -864,7 +864,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.12.13" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 languageName: node linkType: hard @@ -875,7 +875,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 languageName: node linkType: hard @@ -886,7 +886,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 86299c050b0a5b6565d6b9e3529f2d6dca4780215ab88050bdd0ae9a576868a17f9cd1e140857089cc5d06bdfeb89f0711285f99481b82316896a552a62e449f + checksum: 10c0/86299c050b0a5b6565d6b9e3529f2d6dca4780215ab88050bdd0ae9a576868a17f9cd1e140857089cc5d06bdfeb89f0711285f99481b82316896a552a62e449f languageName: node linkType: hard @@ -897,7 +897,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 languageName: node linkType: hard @@ -908,7 +908,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 languageName: node linkType: hard @@ -919,7 +919,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8a5e1e8b6a3728a2c8fe6d70c09a43642e737d9c0485e1b041cd3a6021ef05376ec3c9137be3b118c622ba09b5770d26fdc525473f8d06d4ab9e46de2783dd0a + checksum: 10c0/8a5e1e8b6a3728a2c8fe6d70c09a43642e737d9c0485e1b041cd3a6021ef05376ec3c9137be3b118c622ba09b5770d26fdc525473f8d06d4ab9e46de2783dd0a languageName: node linkType: hard @@ -930,7 +930,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab + checksum: 10c0/7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab languageName: node linkType: hard @@ -941,7 +941,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606 + checksum: 10c0/99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606 languageName: node linkType: hard @@ -952,7 +952,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee languageName: node linkType: hard @@ -963,7 +963,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e languageName: node linkType: hard @@ -974,7 +974,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e + checksum: 10c0/563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e languageName: node linkType: hard @@ -985,7 +985,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b languageName: node linkType: hard @@ -996,7 +996,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce languageName: node linkType: hard @@ -1007,7 +1007,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 languageName: node linkType: hard @@ -1018,7 +1018,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 languageName: node linkType: hard @@ -1029,7 +1029,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af languageName: node linkType: hard @@ -1040,7 +1040,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.8.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 languageName: node linkType: hard @@ -1051,7 +1051,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 languageName: node linkType: hard @@ -1062,7 +1062,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f languageName: node linkType: hard @@ -1073,7 +1073,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948 + checksum: 10c0/4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948 languageName: node linkType: hard @@ -1085,7 +1085,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.18.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 languageName: node linkType: hard @@ -1096,7 +1096,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca + checksum: 10c0/b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca languageName: node linkType: hard @@ -1110,7 +1110,7 @@ __metadata: "@babel/plugin-syntax-async-generators": "npm:^7.8.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4ff75f9ce500e1de8c0236fa5122e6475a477d19cb9a4c2ae8651e78e717ebb2e2cecfeca69d420def779deaec78b945843b9ffd15f02ecd7de5072030b4469b + checksum: 10c0/4ff75f9ce500e1de8c0236fa5122e6475a477d19cb9a4c2ae8651e78e717ebb2e2cecfeca69d420def779deaec78b945843b9ffd15f02ecd7de5072030b4469b languageName: node linkType: hard @@ -1123,7 +1123,7 @@ __metadata: "@babel/helper-remap-async-to-generator": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9 + checksum: 10c0/da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9 languageName: node linkType: hard @@ -1134,7 +1134,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59 + checksum: 10c0/82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59 languageName: node linkType: hard @@ -1145,7 +1145,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 83006804dddf980ab1bcd6d67bc381e24b58c776507c34f990468f820d0da71dba3697355ca4856532fa2eeb2a1e3e73c780f03760b5507a511cbedb0308e276 + checksum: 10c0/83006804dddf980ab1bcd6d67bc381e24b58c776507c34f990468f820d0da71dba3697355ca4856532fa2eeb2a1e3e73c780f03760b5507a511cbedb0308e276 languageName: node linkType: hard @@ -1157,7 +1157,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd + checksum: 10c0/bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd languageName: node linkType: hard @@ -1170,7 +1170,7 @@ __metadata: "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.12.0 - checksum: fdca96640ef29d8641a7f8de106f65f18871b38cc01c0f7b696d2b49c76b77816b30a812c08e759d06dd10b4d9b3af6b5e4ac22a2017a88c4077972224b77ab0 + checksum: 10c0/fdca96640ef29d8641a7f8de106f65f18871b38cc01c0f7b696d2b49c76b77816b30a812c08e759d06dd10b4d9b3af6b5e4ac22a2017a88c4077972224b77ab0 languageName: node linkType: hard @@ -1188,7 +1188,7 @@ __metadata: globals: "npm:^11.1.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 227ac5166501e04d9e7fbd5eda6869b084ffa4af6830ac12544ac6ea14953ca00eb1762b0df9349c0f6c8d2a799385910f558066cd0fb85b9ca437b1131a6043 + checksum: 10c0/227ac5166501e04d9e7fbd5eda6869b084ffa4af6830ac12544ac6ea14953ca00eb1762b0df9349c0f6c8d2a799385910f558066cd0fb85b9ca437b1131a6043 languageName: node linkType: hard @@ -1200,7 +1200,7 @@ __metadata: "@babel/template": "npm:^7.22.15" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a + checksum: 10c0/3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a languageName: node linkType: hard @@ -1211,7 +1211,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71 + checksum: 10c0/717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71 languageName: node linkType: hard @@ -1223,7 +1223,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b + checksum: 10c0/6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b languageName: node linkType: hard @@ -1234,7 +1234,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5 + checksum: 10c0/7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5 languageName: node linkType: hard @@ -1246,7 +1246,7 @@ __metadata: "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 19ae4a4a2ca86d35224734c41c48b2aa6a13139f3cfa1cbd18c0e65e461de8b65687dec7e52b7a72bb49db04465394c776aa1b13a2af5dc975b2a0cde3dcab67 + checksum: 10c0/19ae4a4a2ca86d35224734c41c48b2aa6a13139f3cfa1cbd18c0e65e461de8b65687dec7e52b7a72bb49db04465394c776aa1b13a2af5dc975b2a0cde3dcab67 languageName: node linkType: hard @@ -1258,7 +1258,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516 + checksum: 10c0/5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516 languageName: node linkType: hard @@ -1270,7 +1270,7 @@ __metadata: "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 38bf04f851e36240bbe83ace4169da626524f4107bfb91f05b4ad93a5fb6a36d5b3d30b8883c1ba575ccfc1bac7938e90ca2e3cb227f7b3f4a9424beec6fd4a7 + checksum: 10c0/38bf04f851e36240bbe83ace4169da626524f4107bfb91f05b4ad93a5fb6a36d5b3d30b8883c1ba575ccfc1bac7938e90ca2e3cb227f7b3f4a9424beec6fd4a7 languageName: node linkType: hard @@ -1282,7 +1282,7 @@ __metadata: "@babel/plugin-syntax-flow": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9ab627f9668fc1f95564b26bffd6706f86205960d9ccc168236752fbef65dbe10aa0ce74faae12f48bb3b72ec7f38ef2a78b4874c222c1e85754e981639f3b33 + checksum: 10c0/9ab627f9668fc1f95564b26bffd6706f86205960d9ccc168236752fbef65dbe10aa0ce74faae12f48bb3b72ec7f38ef2a78b4874c222c1e85754e981639f3b33 languageName: node linkType: hard @@ -1294,7 +1294,7 @@ __metadata: "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec + checksum: 10c0/46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec languageName: node linkType: hard @@ -1307,7 +1307,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083 + checksum: 10c0/89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083 languageName: node linkType: hard @@ -1319,7 +1319,7 @@ __metadata: "@babel/plugin-syntax-json-strings": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 39e82223992a9ad857722ae051291935403852ad24b0dd64c645ca1c10517b6bf9822377d88643fed8b3e61a4e3f7e5ae41cf90eb07c40a786505d47d5970e54 + checksum: 10c0/39e82223992a9ad857722ae051291935403852ad24b0dd64c645ca1c10517b6bf9822377d88643fed8b3e61a4e3f7e5ae41cf90eb07c40a786505d47d5970e54 languageName: node linkType: hard @@ -1330,7 +1330,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4 + checksum: 10c0/8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4 languageName: node linkType: hard @@ -1342,7 +1342,7 @@ __metadata: "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 87b034dd13143904e405887e6125d76c27902563486efc66b7d9a9d8f9406b76c6ac42d7b37224014af5783d7edb465db0cdecd659fa3227baad0b3a6a35deff + checksum: 10c0/87b034dd13143904e405887e6125d76c27902563486efc66b7d9a9d8f9406b76c6ac42d7b37224014af5783d7edb465db0cdecd659fa3227baad0b3a6a35deff languageName: node linkType: hard @@ -1353,7 +1353,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88 + checksum: 10c0/687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88 languageName: node linkType: hard @@ -1365,7 +1365,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5 + checksum: 10c0/9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5 languageName: node linkType: hard @@ -1378,7 +1378,7 @@ __metadata: "@babel/helper-simple-access": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d + checksum: 10c0/5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d languageName: node linkType: hard @@ -1392,7 +1392,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1926631fe9d87c0c53427a3420ad49da62d53320d0016b6afab64e5417a672aa5bdff3ea1d24746ffa1e43319c28a80f5d8cef0ad214760d399c293b5850500f + checksum: 10c0/1926631fe9d87c0c53427a3420ad49da62d53320d0016b6afab64e5417a672aa5bdff3ea1d24746ffa1e43319c28a80f5d8cef0ad214760d399c293b5850500f languageName: node linkType: hard @@ -1404,7 +1404,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6 + checksum: 10c0/f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6 languageName: node linkType: hard @@ -1416,7 +1416,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 + checksum: 10c0/b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 languageName: node linkType: hard @@ -1427,7 +1427,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04 + checksum: 10c0/f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04 languageName: node linkType: hard @@ -1439,7 +1439,7 @@ __metadata: "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bce490d22da5c87ff27fffaff6ad5a4d4979b8d7b72e30857f191e9c1e1824ba73bb8d7081166289369e388f94f0ce5383a593b1fc84d09464a062c75f824b0b + checksum: 10c0/bce490d22da5c87ff27fffaff6ad5a4d4979b8d7b72e30857f191e9c1e1824ba73bb8d7081166289369e388f94f0ce5383a593b1fc84d09464a062c75f824b0b languageName: node linkType: hard @@ -1451,7 +1451,7 @@ __metadata: "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e34902da4f5588dc4812c92cb1f6a5e3e3647baf7b4623e30942f551bf1297621abec4e322ebfa50b320c987c0f34d9eb4355b3d289961d9035e2126e3119c12 + checksum: 10c0/e34902da4f5588dc4812c92cb1f6a5e3e3647baf7b4623e30942f551bf1297621abec4e322ebfa50b320c987c0f34d9eb4355b3d289961d9035e2126e3119c12 languageName: node linkType: hard @@ -1466,7 +1466,7 @@ __metadata: "@babel/plugin-transform-parameters": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b56017992ffe7fcd1dd9a9da67c39995a141820316266bcf7d77dc912980d228ccbd3f36191d234f5cc389b09157b5d2a955e33e8fb368319534affd1c72b262 + checksum: 10c0/b56017992ffe7fcd1dd9a9da67c39995a141820316266bcf7d77dc912980d228ccbd3f36191d234f5cc389b09157b5d2a955e33e8fb368319534affd1c72b262 languageName: node linkType: hard @@ -1478,7 +1478,7 @@ __metadata: "@babel/helper-replace-supers": "npm:^7.22.20" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775 + checksum: 10c0/a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775 languageName: node linkType: hard @@ -1490,7 +1490,7 @@ __metadata: "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4ef61812af0e4928485e28301226ce61139a8b8cea9e9a919215ebec4891b9fea2eb7a83dc3090e2679b7d7b2c8653da601fbc297d2addc54a908b315173991e + checksum: 10c0/4ef61812af0e4928485e28301226ce61139a8b8cea9e9a919215ebec4891b9fea2eb7a83dc3090e2679b7d7b2c8653da601fbc297d2addc54a908b315173991e languageName: node linkType: hard @@ -1503,7 +1503,7 @@ __metadata: "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 305b773c29ad61255b0e83ec1e92b2f7af6aa58be4cba1e3852bddaa14f7d2afd7b4438f41c28b179d6faac7eb8d4fb5530a17920294f25d459b8f84406bfbfb + checksum: 10c0/305b773c29ad61255b0e83ec1e92b2f7af6aa58be4cba1e3852bddaa14f7d2afd7b4438f41c28b179d6faac7eb8d4fb5530a17920294f25d459b8f84406bfbfb languageName: node linkType: hard @@ -1514,7 +1514,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7 + checksum: 10c0/a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7 languageName: node linkType: hard @@ -1526,7 +1526,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4 + checksum: 10c0/745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4 languageName: node linkType: hard @@ -1540,7 +1540,7 @@ __metadata: "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8d31b28f24204b4d13514cd3a8f3033abf575b1a6039759ddd6e1d82dd33ba7281f9bc85c9f38072a665d69bfa26dc40737eefaf9d397b024654a483d2357bf5 + checksum: 10c0/8d31b28f24204b4d13514cd3a8f3033abf575b1a6039759ddd6e1d82dd33ba7281f9bc85c9f38072a665d69bfa26dc40737eefaf9d397b024654a483d2357bf5 languageName: node linkType: hard @@ -1551,7 +1551,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747 + checksum: 10c0/b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747 languageName: node linkType: hard @@ -1562,7 +1562,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 + checksum: 10c0/3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 languageName: node linkType: hard @@ -1573,7 +1573,7 @@ __metadata: "@babel/plugin-transform-react-jsx": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 + checksum: 10c0/4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 languageName: node linkType: hard @@ -1584,7 +1584,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6b586508fc58998483d4ee93a7e784c4f4d2350e2633739cf1990b7ad172e13906f72382fdaf7f07b4e3c7e7555342634d392bdeb1a079bb64762c6368ca9a32 + checksum: 10c0/6b586508fc58998483d4ee93a7e784c4f4d2350e2633739cf1990b7ad172e13906f72382fdaf7f07b4e3c7e7555342634d392bdeb1a079bb64762c6368ca9a32 languageName: node linkType: hard @@ -1595,7 +1595,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a3aad7cf738e9bfaddc26cdbb83bb9684c2e689d26fb0793d772af0c8da0cd25bb02523d192fbc6946c32143e56b472c1d33fa82466b3f2d3346e1ce8fe83cf6 + checksum: 10c0/a3aad7cf738e9bfaddc26cdbb83bb9684c2e689d26fb0793d772af0c8da0cd25bb02523d192fbc6946c32143e56b472c1d33fa82466b3f2d3346e1ce8fe83cf6 languageName: node linkType: hard @@ -1610,7 +1610,7 @@ __metadata: "@babel/types": "npm:^7.23.4" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 + checksum: 10c0/8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 languageName: node linkType: hard @@ -1622,7 +1622,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2 + checksum: 10c0/76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2 languageName: node linkType: hard @@ -1634,7 +1634,7 @@ __metadata: regenerator-transform: "npm:^0.15.2" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6 + checksum: 10c0/3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6 languageName: node linkType: hard @@ -1645,7 +1645,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd + checksum: 10c0/4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd languageName: node linkType: hard @@ -1661,7 +1661,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 3b959c2b88ea0009c288fa190d9f69b0d26cb336b8a7cab54a5e54b844f33cce1996725c15305a40049c8f23ca30082ee27e1f6853ff35fad723543e3d2dba47 + checksum: 10c0/3b959c2b88ea0009c288fa190d9f69b0d26cb336b8a7cab54a5e54b844f33cce1996725c15305a40049c8f23ca30082ee27e1f6853ff35fad723543e3d2dba47 languageName: node linkType: hard @@ -1672,7 +1672,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0 + checksum: 10c0/c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0 languageName: node linkType: hard @@ -1684,7 +1684,7 @@ __metadata: "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb + checksum: 10c0/a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb languageName: node linkType: hard @@ -1695,7 +1695,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56 + checksum: 10c0/cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56 languageName: node linkType: hard @@ -1706,7 +1706,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d + checksum: 10c0/9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d languageName: node linkType: hard @@ -1717,7 +1717,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a + checksum: 10c0/50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a languageName: node linkType: hard @@ -1731,7 +1731,7 @@ __metadata: "@babel/plugin-syntax-typescript": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f + checksum: 10c0/e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f languageName: node linkType: hard @@ -1742,7 +1742,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866 + checksum: 10c0/f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866 languageName: node linkType: hard @@ -1754,7 +1754,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f + checksum: 10c0/dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f languageName: node linkType: hard @@ -1766,7 +1766,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c + checksum: 10c0/df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c languageName: node linkType: hard @@ -1778,7 +1778,7 @@ __metadata: "@babel/helper-plugin-utils": "npm:^7.22.5" peerDependencies: "@babel/core": ^7.0.0 - checksum: 30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b + checksum: 10c0/30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b languageName: node linkType: hard @@ -1868,7 +1868,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2837a42089180e51bfd6864b6d197e01fc0abec1920422e71c0513c2fc8fb5f3bfe694ed778cc4e45856c546964945bc53bf8105e4b26f3580ce3685fa50cc0f + checksum: 10c0/2837a42089180e51bfd6864b6d197e01fc0abec1920422e71c0513c2fc8fb5f3bfe694ed778cc4e45856c546964945bc53bf8105e4b26f3580ce3685fa50cc0f languageName: node linkType: hard @@ -1881,7 +1881,7 @@ __metadata: "@babel/plugin-transform-flow-strip-types": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 1cf109925791f2af679f03289848d27596b4f27cb0ad4ee74a8dd4c1cbecc119bdef3b45cbbe12489bc9bdf61163f94c1c0bf6013cc58c325f1cc99edc01bda9 + checksum: 10c0/1cf109925791f2af679f03289848d27596b4f27cb0ad4ee74a8dd4c1cbecc119bdef3b45cbbe12489bc9bdf61163f94c1c0bf6013cc58c325f1cc99edc01bda9 languageName: node linkType: hard @@ -1894,7 +1894,7 @@ __metadata: esutils: "npm:^2.0.2" peerDependencies: "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 - checksum: 9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 languageName: node linkType: hard @@ -1910,7 +1910,7 @@ __metadata: "@babel/plugin-transform-react-pure-annotations": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c + checksum: 10c0/cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c languageName: node linkType: hard @@ -1925,7 +1925,7 @@ __metadata: "@babel/plugin-transform-typescript": "npm:^7.23.3" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7 + checksum: 10c0/e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7 languageName: node linkType: hard @@ -1940,14 +1940,14 @@ __metadata: source-map-support: "npm:^0.5.16" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b2466e41a4394e725b57e139ba45c3f61b88546d3cb443e84ce46cb34071b60c6cdb706a14c58a1443db530691a54f51da1f0c97f6c1aecbb838a2fb7eb5dbb9 + checksum: 10c0/b2466e41a4394e725b57e139ba45c3f61b88546d3cb443e84ce46cb34071b60c6cdb706a14c58a1443db530691a54f51da1f0c97f6c1aecbb838a2fb7eb5dbb9 languageName: node linkType: hard "@babel/regjsgen@npm:^0.8.0": version: 0.8.0 resolution: "@babel/regjsgen@npm:0.8.0" - checksum: 4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + checksum: 10c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a languageName: node linkType: hard @@ -1957,7 +1957,7 @@ __metadata: dependencies: core-js-pure: "npm:^3.30.2" regenerator-runtime: "npm:^0.14.0" - checksum: 7926ebf38285b41e2a486b25aaa10861db1cfd29accd0b0eaa1338080d853339481f78d8d73e5d1f219a8ad52c477dcd4e7cc3473d1befbb290c77b27ed1ec91 + checksum: 10c0/7926ebf38285b41e2a486b25aaa10861db1cfd29accd0b0eaa1338080d853339481f78d8d73e5d1f219a8ad52c477dcd4e7cc3473d1befbb290c77b27ed1ec91 languageName: node linkType: hard @@ -1966,7 +1966,7 @@ __metadata: resolution: "@babel/runtime@npm:7.23.2" dependencies: regenerator-runtime: "npm:^0.14.0" - checksum: 271fcfad8574269d9967b8a1c03f2e1eab108a52ad7c96ed136eee0b11f46156f1186637bd5e79a4207163db9a00413cd70a6428e137b982d0ee8ab85eb9f438 + checksum: 10c0/271fcfad8574269d9967b8a1c03f2e1eab108a52ad7c96ed136eee0b11f46156f1186637bd5e79a4207163db9a00413cd70a6428e137b982d0ee8ab85eb9f438 languageName: node linkType: hard @@ -1977,7 +1977,7 @@ __metadata: "@babel/code-frame": "npm:^7.23.5" "@babel/parser": "npm:^7.23.9" "@babel/types": "npm:^7.23.9" - checksum: 0e8b60119433787742bc08ae762bbd8d6755611c4cabbcb7627b292ec901a55af65d93d1c88572326069efb64136ef151ec91ffb74b2df7689bbab237030833a + checksum: 10c0/0e8b60119433787742bc08ae762bbd8d6755611c4cabbcb7627b292ec901a55af65d93d1c88572326069efb64136ef151ec91ffb74b2df7689bbab237030833a languageName: node linkType: hard @@ -1995,7 +1995,7 @@ __metadata: "@babel/types": "npm:^7.23.9" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: d1615d1d02f04d47111a7ea4446a1a6275668ca39082f31d51f08380de9502e19862be434eaa34b022ce9a17dbb8f9e2b73a746c654d9575f3a680a7ffdf5630 + checksum: 10c0/d1615d1d02f04d47111a7ea4446a1a6275668ca39082f31d51f08380de9502e19862be434eaa34b022ce9a17dbb8f9e2b73a746c654d9575f3a680a7ffdf5630 languageName: node linkType: hard @@ -2006,21 +2006,21 @@ __metadata: "@babel/helper-string-parser": "npm:^7.23.4" "@babel/helper-validator-identifier": "npm:^7.22.20" to-fast-properties: "npm:^2.0.0" - checksum: edc7bb180ce7e4d2aea10c6972fb10474341ac39ba8fdc4a27ffb328368dfdfbf40fca18e441bbe7c483774500d5c05e222cec276c242e952853dcaf4eb884f7 + checksum: 10c0/edc7bb180ce7e4d2aea10c6972fb10474341ac39ba8fdc4a27ffb328368dfdfbf40fca18e441bbe7c483774500d5c05e222cec276c242e952853dcaf4eb884f7 languageName: node linkType: hard "@base2/pretty-print-object@npm:1.0.1": version: 1.0.1 resolution: "@base2/pretty-print-object@npm:1.0.1" - checksum: 98f77ea185a30c854897feb2a68fe51be8451a1a0b531bac61a5dd67033926a0ba0c9be6e0f819b8cb72ca349b3e7648bf81c12fd21df0b45219c75a3a75784b + checksum: 10c0/98f77ea185a30c854897feb2a68fe51be8451a1a0b531bac61a5dd67033926a0ba0c9be6e0f819b8cb72ca349b3e7648bf81c12fd21df0b45219c75a3a75784b languageName: node linkType: hard "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" - checksum: 6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 languageName: node linkType: hard @@ -2073,7 +2073,7 @@ __metadata: "@chevrotain/gast": "npm:10.5.0" "@chevrotain/types": "npm:10.5.0" lodash: "npm:4.17.21" - checksum: ae621f2255be6f2838775aa022e54c9557a7fe3f42b52ced3d44b2dac26a48020c9db76c49b90dbb2982eb152c385a4ff2dac7578deef6131592fe13bda93ea7 + checksum: 10c0/ae621f2255be6f2838775aa022e54c9557a7fe3f42b52ced3d44b2dac26a48020c9db76c49b90dbb2982eb152c385a4ff2dac7578deef6131592fe13bda93ea7 languageName: node linkType: hard @@ -2083,21 +2083,21 @@ __metadata: dependencies: "@chevrotain/types": "npm:10.5.0" lodash: "npm:4.17.21" - checksum: 4e894fe9932ef8a74a0d147c78f73fc0ef8aeb7170a79d66648c07c1de505ef0dc8b8dc0a5a69a58abd92adb7a165d9a540cb6b2393589b1025af18bcdb585ab + checksum: 10c0/4e894fe9932ef8a74a0d147c78f73fc0ef8aeb7170a79d66648c07c1de505ef0dc8b8dc0a5a69a58abd92adb7a165d9a540cb6b2393589b1025af18bcdb585ab languageName: node linkType: hard "@chevrotain/types@npm:10.5.0": version: 10.5.0 resolution: "@chevrotain/types@npm:10.5.0" - checksum: 9131b833e9658263c114713758379e06e79e94e0cd0cf178ec9ddbc5672896c7e890d230b5e72402cd4d7ce861835ce9489d0402723620650d4b6c353b497ec6 + checksum: 10c0/9131b833e9658263c114713758379e06e79e94e0cd0cf178ec9ddbc5672896c7e890d230b5e72402cd4d7ce861835ce9489d0402723620650d4b6c353b497ec6 languageName: node linkType: hard "@chevrotain/utils@npm:10.5.0": version: 10.5.0 resolution: "@chevrotain/utils@npm:10.5.0" - checksum: a7d99b8e9ecc8ceb0d46b5f194710768055c2b932aca316a5f1e77d8c1a6ecb8f4c5b39e4bac4dcd7189dfa5025dcdc112903511037b03a4ea88d216b68b4708 + checksum: 10c0/a7d99b8e9ecc8ceb0d46b5f194710768055c2b932aca316a5f1e77d8c1a6ecb8f4c5b39e4bac4dcd7189dfa5025dcdc112903511037b03a4ea88d216b68b4708 languageName: node linkType: hard @@ -2114,7 +2114,7 @@ __metadata: node-fetch-native: "npm:1.0.1" snakecase-keys: "npm:5.4.4" tslib: "npm:2.4.1" - checksum: 9a5497b35a23cc12beb91a88823608bf4e59869c367fb794e5c26f01dec81151a53d94f3bf197e09e4cb629797e53fc38cef9671973f62e8834d5b67bf9b85a5 + checksum: 10c0/9a5497b35a23cc12beb91a88823608bf4e59869c367fb794e5c26f01dec81151a53d94f3bf197e09e4cb629797e53fc38cef9671973f62e8834d5b67bf9b85a5 languageName: node linkType: hard @@ -2127,7 +2127,7 @@ __metadata: tslib: "npm:2.4.1" peerDependencies: react: ">=16" - checksum: 4db23f01d71b4f07f9ac7f76e26b3f7a826c8d72657f9110beb838ba62be6ff1553b7eb4d49415d574b463c261077bde28e17a7b79a9b0d6fd69f2bcad24030f + checksum: 10c0/4db23f01d71b4f07f9ac7f76e26b3f7a826c8d72657f9110beb838ba62be6ff1553b7eb4d49415d574b463c261077bde28e17a7b79a9b0d6fd69f2bcad24030f languageName: node linkType: hard @@ -2144,7 +2144,7 @@ __metadata: camelcase-keys: "npm:6.2.2" snakecase-keys: "npm:3.2.1" tslib: "npm:2.4.1" - checksum: 51bf5e0b1a7dbd4733d9a722cb21618f869c52dacd9925f84eccd65b3faea2cf55d16360c68ccca5f5a30d2611ee728a382e7ff2a9396ff93e56a6ffc8a2a01b + checksum: 10c0/51bf5e0b1a7dbd4733d9a722cb21618f869c52dacd9925f84eccd65b3faea2cf55d16360c68ccca5f5a30d2611ee728a382e7ff2a9396ff93e56a6ffc8a2a01b languageName: node linkType: hard @@ -2160,7 +2160,7 @@ __metadata: peerDependenciesMeta: react: optional: true - checksum: 03a2683fedef91d3a1a5123dffacd2698b13f15327ad22e7908d4e9770fb988cff8faae52d2028285fadbd759612b4afb77128bc5f44f6845adf9d3f7db207f7 + checksum: 10c0/03a2683fedef91d3a1a5123dffacd2698b13f15327ad22e7908d4e9770fb988cff8faae52d2028285fadbd759612b4afb77128bc5f44f6845adf9d3f7db207f7 languageName: node linkType: hard @@ -2169,14 +2169,14 @@ __metadata: resolution: "@clerk/types@npm:3.60.0" dependencies: csstype: "npm:3.1.1" - checksum: 46a850320d03d2bc1b91e309ccf90e9f24abae58c51c75b45396aee16d68921661abd70fe9b2eee830404a05f178adfb0ccaddff6262c495a283965e6d0aad28 + checksum: 10c0/46a850320d03d2bc1b91e309ccf90e9f24abae58c51c75b45396aee16d68921661abd70fe9b2eee830404a05f178adfb0ccaddff6262c495a283965e6d0aad28 languageName: node linkType: hard "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" - checksum: eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 languageName: node linkType: hard @@ -2185,7 +2185,7 @@ __metadata: resolution: "@cspotcode/source-map-support@npm:0.8.1" dependencies: "@jridgewell/trace-mapping": "npm:0.3.9" - checksum: 05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 languageName: node linkType: hard @@ -2211,7 +2211,7 @@ __metadata: tough-cookie: "npm:^4.1.3" tunnel-agent: "npm:^0.6.0" uuid: "npm:^8.3.2" - checksum: 8eb92a665e6549e2533f5169431addcaad0307f51a8c7f3b6b169eb79b4d673373784a527590a47b0a2905ad5f601b24ab2d1b31d184243235aba470ffc9c1f7 + checksum: 10c0/8eb92a665e6549e2533f5169431addcaad0307f51a8c7f3b6b169eb79b4d673373784a527590a47b0a2905ad5f601b24ab2d1b31d184243235aba470ffc9c1f7 languageName: node linkType: hard @@ -2221,14 +2221,14 @@ __metadata: dependencies: debug: "npm:^3.1.0" lodash.once: "npm:^4.1.1" - checksum: 1bf6224b244f6093033d77f04f6bef719280542656de063cf8ac3f38957b62aa633e6918af0b9673a8bf0123b42a850db51d9729a3ae3da885ac179bc7fc1d26 + checksum: 10c0/1bf6224b244f6093033d77f04f6bef719280542656de063cf8ac3f38957b62aa633e6918af0b9673a8bf0123b42a850db51d9729a3ae3da885ac179bc7fc1d26 languageName: node linkType: hard "@discoveryjs/json-ext@npm:0.5.7, @discoveryjs/json-ext@npm:^0.5.0, @discoveryjs/json-ext@npm:^0.5.3": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" - checksum: e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c + checksum: 10c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c languageName: node linkType: hard @@ -2237,7 +2237,7 @@ __metadata: resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" peerDependencies: react: ">=16.8.0" - checksum: a15b2167940e3a908160687b73fc4fcd81e59ab45136b6967f02c7c419d9a149acd22a416b325c389642d4f1c3d33cf4196cad6b618128b55b7c74f6807a240b + checksum: 10c0/a15b2167940e3a908160687b73fc4fcd81e59ab45136b6967f02c7c419d9a149acd22a416b325c389642d4f1c3d33cf4196cad6b618128b55b7c74f6807a240b languageName: node linkType: hard @@ -2247,7 +2247,7 @@ __metadata: dependencies: "@envelop/types": "npm:5.0.0" tslib: "npm:^2.5.0" - checksum: abc06585177a634d355fd7cec22a838086e6ccf20317f34b4b9eb92c4acb1aee7f09f621197f065619148a58de027a968ecb26d0bdee87bf0380769816ad4be2 + checksum: 10c0/abc06585177a634d355fd7cec22a838086e6ccf20317f34b4b9eb92c4acb1aee7f09f621197f065619148a58de027a968ecb26d0bdee87bf0380769816ad4be2 languageName: node linkType: hard @@ -2257,7 +2257,7 @@ __metadata: dependencies: "@envelop/types": "npm:4.0.1" tslib: "npm:^2.5.0" - checksum: 37a9cdab390a354be8612e92891dbd13de0a58aedfad0728cbe2111069ca599c9ee5c542b3f4de9f155123b0cac776aa60ef10c5a3721ce58b5cb3b2383ddda6 + checksum: 10c0/37a9cdab390a354be8612e92891dbd13de0a58aedfad0728cbe2111069ca599c9ee5c542b3f4de9f155123b0cac776aa60ef10c5a3721ce58b5cb3b2383ddda6 languageName: node linkType: hard @@ -2270,7 +2270,7 @@ __metadata: peerDependencies: "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 5a08a2a666632399ca5ced484a8eaddfc41f8c81e5e793c4401d17861acb8a67ae5e41fc0595012a8fecc43111287f89b4fef529d7bb00d4b58273e0f955cbc5 + checksum: 10c0/5a08a2a666632399ca5ced484a8eaddfc41f8c81e5e793c4401d17861acb8a67ae5e41fc0595012a8fecc43111287f89b4fef529d7bb00d4b58273e0f955cbc5 languageName: node linkType: hard @@ -2282,7 +2282,7 @@ __metadata: peerDependencies: "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 48b3a2c98514cd629eadc09f741a1a21cb363a6ebf940a40e39c69054cd61b3d73b37575c1c3573fdc57685b76d58694b14dfae63d357d015040e69f4363ad98 + checksum: 10c0/48b3a2c98514cd629eadc09f741a1a21cb363a6ebf940a40e39c69054cd61b3d73b37575c1c3573fdc57685b76d58694b14dfae63d357d015040e69f4363ad98 languageName: node linkType: hard @@ -2294,7 +2294,7 @@ __metadata: peerDependencies: "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 9d454dd67da800293b6cfde9e49512e0c84261cdd65dc521ae4c472ce0a2b4a4645b4d39596e3d4157bac31b120fae1fc985cb94c5d8d07590f94fdbc36b9c7b + checksum: 10c0/9d454dd67da800293b6cfde9e49512e0c84261cdd65dc521ae4c472ce0a2b4a4645b4d39596e3d4157bac31b120fae1fc985cb94c5d8d07590f94fdbc36b9c7b languageName: node linkType: hard @@ -2310,7 +2310,7 @@ __metadata: peerDependencies: "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: b158af86ffd56fd54306aac39ad541de115f346bbf32ee9ec51e1feb383e45b4bdfd5a91ab3eca8a1fae05ed1d75cad6ceeeb6945e4f72b1bc5ac14a8fdc20c9 + checksum: 10c0/b158af86ffd56fd54306aac39ad541de115f346bbf32ee9ec51e1feb383e45b4bdfd5a91ab3eca8a1fae05ed1d75cad6ceeeb6945e4f72b1bc5ac14a8fdc20c9 languageName: node linkType: hard @@ -2320,7 +2320,7 @@ __metadata: peerDependencies: "@envelop/core": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4eb454df4b446303711edd0cd31e707fec06337c2e8327c7987d279fef8785e47e47ffe72c7444b4650a83efbf3234c6b85f550a8044ca181dcd10c05dcb3650 + checksum: 10c0/4eb454df4b446303711edd0cd31e707fec06337c2e8327c7987d279fef8785e47e47ffe72c7444b4650a83efbf3234c6b85f550a8044ca181dcd10c05dcb3650 languageName: node linkType: hard @@ -2334,7 +2334,7 @@ __metadata: "@envelop/core": ^5.0.0 "@envelop/types": ^5.0.0 graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 1ce29b19f880a926aca1352c72e607bc3017eb46b416fbb523fd189beea033d6584f4ce884bede265aafaf4ca333c12a4e3d04628cf0d3b08ab119eaefcc4061 + checksum: 10c0/1ce29b19f880a926aca1352c72e607bc3017eb46b416fbb523fd189beea033d6584f4ce884bede265aafaf4ca333c12a4e3d04628cf0d3b08ab119eaefcc4061 languageName: node linkType: hard @@ -2343,7 +2343,7 @@ __metadata: resolution: "@envelop/types@npm:4.0.1" dependencies: tslib: "npm:^2.5.0" - checksum: 81e09afaf60d036102f7992daeefb0cd5380bb1484dd19cb90db73db4ae730b5297823439711fb8315ee01485a37f1c8155aa1111c7dc4ea11c77b7f25945633 + checksum: 10c0/81e09afaf60d036102f7992daeefb0cd5380bb1484dd19cb90db73db4ae730b5297823439711fb8315ee01485a37f1c8155aa1111c7dc4ea11c77b7f25945633 languageName: node linkType: hard @@ -2352,7 +2352,7 @@ __metadata: resolution: "@envelop/types@npm:5.0.0" dependencies: tslib: "npm:^2.5.0" - checksum: 0cbaa68218cb6121b58c6d354b0a17913ded042673df7bfcf385cac6c3b42713b82719875f553b31e8f059727ff5478ed11b33b4febf8deeaf902f1a92b212a8 + checksum: 10c0/0cbaa68218cb6121b58c6d354b0a17913ded042673df7bfcf385cac6c3b42713b82719875f553b31e8f059727ff5478ed11b33b4febf8deeaf902f1a92b212a8 languageName: node linkType: hard @@ -2841,7 +2841,7 @@ __metadata: dependenciesMeta: "@envelop/core": optional: true - checksum: ec696620e40d169cb02320a7540120e1db4bc9eae298f23c50f68802f52cb2e87f2b9b733e03567c91ca23a66027ed94d811d19555540fbb270f3eb3d218f386 + checksum: 10c0/ec696620e40d169cb02320a7540120e1db4bc9eae298f23c50f68802f52cb2e87f2b9b733e03567c91ca23a66027ed94d811d19555540fbb270f3eb3d218f386 languageName: node linkType: hard @@ -2857,7 +2857,7 @@ __metadata: optional: true "@escape.tech/graphql-armor-types": optional: true - checksum: ce589e35955925e78f4e794d64b48a90f84a2ee2f47ca78c349338760ebe114f55c82e5c2deaf8b7b2fe71c1d36b6f06def3562100bdcaf0d7333f982c9166b2 + checksum: 10c0/ce589e35955925e78f4e794d64b48a90f84a2ee2f47ca78c349338760ebe114f55c82e5c2deaf8b7b2fe71c1d36b6f06def3562100bdcaf0d7333f982c9166b2 languageName: node linkType: hard @@ -2873,7 +2873,7 @@ __metadata: optional: true "@escape.tech/graphql-armor-types": optional: true - checksum: 7eb9132b95d6f7c638983cec4756359bda5805ccd369facedc168e2112602b2db46280ad3755f1fa586c77cb132a853e470bec6400a5b5ae25f9b5f7bae619d1 + checksum: 10c0/7eb9132b95d6f7c638983cec4756359bda5805ccd369facedc168e2112602b2db46280ad3755f1fa586c77cb132a853e470bec6400a5b5ae25f9b5f7bae619d1 languageName: node linkType: hard @@ -2889,7 +2889,7 @@ __metadata: optional: true "@escape.tech/graphql-armor-types": optional: true - checksum: f30f231984da41b4f1a4fd89551c6d57ba830814a6de32f863a8cf3bc3e436933700fc2716741e8f171b66dee7d45a46056b86244a44d1ad95b128a47eb0f74a + checksum: 10c0/f30f231984da41b4f1a4fd89551c6d57ba830814a6de32f863a8cf3bc3e436933700fc2716741e8f171b66dee7d45a46056b86244a44d1ad95b128a47eb0f74a languageName: node linkType: hard @@ -2905,7 +2905,7 @@ __metadata: optional: true "@escape.tech/graphql-armor-types": optional: true - checksum: 94d1612998ea34ad512f6343399262a47b1ade5184511d19bfde4cbcb29948e2e210ae3f46e5c5aa40c3b4e942ef92d2cfc9885a426f2965136546c5b4b048f9 + checksum: 10c0/94d1612998ea34ad512f6343399262a47b1ade5184511d19bfde4cbcb29948e2e210ae3f46e5c5aa40c3b4e942ef92d2cfc9885a426f2965136546c5b4b048f9 languageName: node linkType: hard @@ -2921,7 +2921,7 @@ __metadata: optional: true "@escape.tech/graphql-armor-types": optional: true - checksum: 42278e504a87c622d4abac739321acb88f1f18f0829d546dd24f010d92a0987f50aee7ab92b5e406b0176aaee70eb8e0e2805517fa257699174356875aa9b302 + checksum: 10c0/42278e504a87c622d4abac739321acb88f1f18f0829d546dd24f010d92a0987f50aee7ab92b5e406b0176aaee70eb8e0e2805517fa257699174356875aa9b302 languageName: node linkType: hard @@ -2930,7 +2930,7 @@ __metadata: resolution: "@escape.tech/graphql-armor-types@npm:0.5.0" dependencies: graphql: "npm:^16.0.0" - checksum: fc93eab84d27836ea37f6d2f8f0604b889906da26a54a2ffa25008e289f46b469c481d9071ca5c0a3ccc66a188cb4665592e73617507ca044f8a6a6cefb71270 + checksum: 10c0/fc93eab84d27836ea37f6d2f8f0604b889906da26a54a2ffa25008e289f46b469c481d9071ca5c0a3ccc66a188cb4665592e73617507ca044f8a6a6cefb71270 languageName: node linkType: hard @@ -2956,7 +2956,7 @@ __metadata: optional: true "@escape.tech/graphql-armor-types": optional: true - checksum: 40ecfb643fea264eacb7d3d4031e139a3bb3cea6f1519146042d2eb9bbad64b1f5d570886459da75c25ff1a471fc13b04fae2f2795b0c6e0b97922bfb9191d47 + checksum: 10c0/40ecfb643fea264eacb7d3d4031e139a3bb3cea6f1519146042d2eb9bbad64b1f5d570886459da75c25ff1a471fc13b04fae2f2795b0c6e0b97922bfb9191d47 languageName: node linkType: hard @@ -2967,14 +2967,14 @@ __metadata: eslint-visitor-keys: "npm:^3.3.0" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": version: 4.6.2 resolution: "@eslint-community/regexpp@npm:4.6.2" - checksum: da800788298f8419f4c4e04eaa4e3c97e7f57537e822e7b150de662e420e3d437816b863e490807bd0b00e715b0989f9d8864bf54357cbcfa84e4255b910789d + checksum: 10c0/da800788298f8419f4c4e04eaa4e3c97e7f57537e822e7b150de662e420e3d437816b863e490807bd0b00e715b0989f9d8864bf54357cbcfa84e4255b910789d languageName: node linkType: hard @@ -2991,14 +2991,14 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 languageName: node linkType: hard "@eslint/js@npm:8.55.0": version: 8.55.0 resolution: "@eslint/js@npm:8.55.0" - checksum: 88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d + checksum: 10c0/88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d languageName: node linkType: hard @@ -3011,28 +3011,28 @@ __metadata: mjml: ^4.13.0 react: ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: dc9cd475d624c4b48462a49ef1e964b7010b297347a3fca1664e18c8d198a0373071b8d6afcbac99ac5725b50dcdc99081ab1766b21f54a4ad569e5b41e19bdb + checksum: 10c0/dc9cd475d624c4b48462a49ef1e964b7010b297347a3fca1664e18c8d198a0373071b8d6afcbac99ac5725b50dcdc99081ab1766b21f54a4ad569e5b41e19bdb languageName: node linkType: hard "@faker-js/faker@npm:8.0.2": version: 8.0.2 resolution: "@faker-js/faker@npm:8.0.2" - checksum: a7851d4abfcd93c8c9d40ca7f1a7ad2218b9dcac1b11afe9dcf0fe38f5c1d91610e56bcedf5193a5b178dc10e052baab35977853342e84ec12b1fb27b425b356 + checksum: 10c0/a7851d4abfcd93c8c9d40ca7f1a7ad2218b9dcac1b11afe9dcf0fe38f5c1d91610e56bcedf5193a5b178dc10e052baab35977853342e84ec12b1fb27b425b356 languageName: node linkType: hard "@fal-works/esbuild-plugin-global-externals@npm:^2.1.2": version: 2.1.2 resolution: "@fal-works/esbuild-plugin-global-externals@npm:2.1.2" - checksum: 2c84a8e6121b00ac8e4eb2469ab8f188142db2f1927391758e5d0142cb684b7eb0fad0c9d6caf358616eb2a77af2c067e08b9ec8e05749b415fc4dd0ef96d0fe + checksum: 10c0/2c84a8e6121b00ac8e4eb2469ab8f188142db2f1927391758e5d0142cb684b7eb0fad0c9d6caf358616eb2a77af2c067e08b9ec8e05749b415fc4dd0ef96d0fe languageName: node linkType: hard "@fastify/accept-negotiator@npm:^1.0.0": version: 1.1.0 resolution: "@fastify/accept-negotiator@npm:1.1.0" - checksum: 1cb9a298c992b812869158ddc6093557a877b30e5f77618a7afea985a0667c50bc7113593bf0f7f9dc9b82b94c16e8ab127a0afc3efde6677fd645539f6d08e5 + checksum: 10c0/1cb9a298c992b812869158ddc6093557a877b30e5f77618a7afea985a0667c50bc7113593bf0f7f9dc9b82b94c16e8ab127a0afc3efde6677fd645539f6d08e5 languageName: node linkType: hard @@ -3043,7 +3043,7 @@ __metadata: ajv: "npm:^8.11.0" ajv-formats: "npm:^2.1.1" fast-uri: "npm:^2.0.0" - checksum: d10df76b7016984bf70bc6aca99962468ec43e0be5772d4aa3a7735ae78be44fdbcb2c078fe0cfdffec076080dfb7cbdbf4b729e52b168039477126f9d023af0 + checksum: 10c0/d10df76b7016984bf70bc6aca99962468ec43e0be5772d4aa3a7735ae78be44fdbcb2c078fe0cfdffec076080dfb7cbdbf4b729e52b168039477126f9d023af0 languageName: node linkType: hard @@ -3052,28 +3052,28 @@ __metadata: resolution: "@fastify/busboy@npm:1.2.1" dependencies: text-decoding: "npm:^1.0.0" - checksum: fe13effa7a7a2aa270ef62586cd8d04339036b10ffa1d3d6a883e502fcc1bdc6d8de1bd7ac9d46ef7718bed3b1202cac058e281f5053dee262af7538243cb780 + checksum: 10c0/fe13effa7a7a2aa270ef62586cd8d04339036b10ffa1d3d6a883e502fcc1bdc6d8de1bd7ac9d46ef7718bed3b1202cac058e281f5053dee262af7538243cb780 languageName: node linkType: hard "@fastify/busboy@npm:^2.0.0": version: 2.0.0 resolution: "@fastify/busboy@npm:2.0.0" - checksum: fdaedca865721769a3a8d788c9efd6af90e73b5f2ff0160dbf46a6160631bbe56e6e5770fafb9a6395111372c73fb2bfa8d4698edc98c6b1f7d97cc9b74e37ea + checksum: 10c0/fdaedca865721769a3a8d788c9efd6af90e73b5f2ff0160dbf46a6160631bbe56e6e5770fafb9a6395111372c73fb2bfa8d4698edc98c6b1f7d97cc9b74e37ea languageName: node linkType: hard "@fastify/deepmerge@npm:^1.0.0": version: 1.3.0 resolution: "@fastify/deepmerge@npm:1.3.0" - checksum: 8115ed7b891189ee4ebba554a105cb69111615bdb2961f8c58a80872fac9d7b74b2c6317d545a7d378325d094ce73a91fc9c5d7d6189476779cd5a5493cb1351 + checksum: 10c0/8115ed7b891189ee4ebba554a105cb69111615bdb2961f8c58a80872fac9d7b74b2c6317d545a7d378325d094ce73a91fc9c5d7d6189476779cd5a5493cb1351 languageName: node linkType: hard "@fastify/error@npm:^3.0.0, @fastify/error@npm:^3.4.0": version: 3.4.1 resolution: "@fastify/error@npm:3.4.1" - checksum: 1f1a0faa8c86639afb6f4bd47a9cdc1f0f20ce0d6944340fbdec8218aaba91dc9cae9ed78e24e61bceb782a867efda2b9a6320091f00dcbb896d9c8a9bdf5f96 + checksum: 10c0/1f1a0faa8c86639afb6f4bd47a9cdc1f0f20ce0d6944340fbdec8218aaba91dc9cae9ed78e24e61bceb782a867efda2b9a6320091f00dcbb896d9c8a9bdf5f96 languageName: node linkType: hard @@ -3082,7 +3082,7 @@ __metadata: resolution: "@fastify/fast-json-stringify-compiler@npm:4.3.0" dependencies: fast-json-stringify: "npm:^5.7.0" - checksum: 513ef296f5ed682f7a460cfa6c5fb917a32fc540111b873c9937f944558e021492b18f30f9fd8dd20db252381a4428adbcc9f03a077f16c86d02f081eb490c7b + checksum: 10c0/513ef296f5ed682f7a460cfa6c5fb917a32fc540111b873c9937f944558e021492b18f30f9fd8dd20db252381a4428adbcc9f03a077f16c86d02f081eb490c7b languageName: node linkType: hard @@ -3094,7 +3094,7 @@ __metadata: fast-querystring: "npm:^1.1.2" fastify-plugin: "npm:^4.5.0" ws: "npm:^8.4.2" - checksum: c8f7fe380580f53059f676ca5b2bbdb1eef0a2d3dce28568e8932aeedb992efdc5fc40dae41b6d52f2f0ce14036af182664d0276ea9366e31fd920a119e7a03a + checksum: 10c0/c8f7fe380580f53059f676ca5b2bbdb1eef0a2d3dce28568e8932aeedb992efdc5fc40dae41b6d52f2f0ce14036af182664d0276ea9366e31fd920a119e7a03a languageName: node linkType: hard @@ -3110,7 +3110,7 @@ __metadata: pump: "npm:^3.0.0" tiny-lru: "npm:^11.0.0" undici: "npm:^5.19.1" - checksum: 01d6dd4cffb6810415ccf04718d1477acf7acc18ec2f7b26537b994b6037b9ff25df6e2778e1f1017fd35f9cad85a1b7d540db2aa20e21db04b30f4fd3449913 + checksum: 10c0/01d6dd4cffb6810415ccf04718d1477acf7acc18ec2f7b26537b994b6037b9ff25df6e2778e1f1017fd35f9cad85a1b7d540db2aa20e21db04b30f4fd3449913 languageName: node linkType: hard @@ -3123,7 +3123,7 @@ __metadata: fast-decode-uri-component: "npm:^1.0.1" http-errors: "npm:2.0.0" mime: "npm:^3.0.0" - checksum: 0e1c10022660fa1f1959b7c414d1be2c47ab42be1da8e21cd72a4df3104c516fdf7b590ee67f897037dd4c85b716fac63929e894d7699623549646604f6db14b + checksum: 10c0/0e1c10022660fa1f1959b7c414d1be2c47ab42be1da8e21cd72a4df3104c516fdf7b590ee67f897037dd4c85b716fac63929e894d7699623549646604f6db14b languageName: node linkType: hard @@ -3137,7 +3137,7 @@ __metadata: fastify-plugin: "npm:^4.0.0" glob: "npm:^8.0.1" p-limit: "npm:^3.1.0" - checksum: 9248c9851c4bb24965e88eb2f0825fda2b2b08ddb83aa5f08e529b8a522cf20978f81e8e4837e2cb550b39ea433790b0fd82db4b2f0673133325e265c9099fff + checksum: 10c0/9248c9851c4bb24965e88eb2f0825fda2b2b08ddb83aa5f08e529b8a522cf20978f81e8e4837e2cb550b39ea433790b0fd82db4b2f0673133325e265c9099fff languageName: node linkType: hard @@ -3147,7 +3147,7 @@ __metadata: dependencies: fast-uri: "npm:^2.2.0" fastify-plugin: "npm:^4.0.0" - checksum: 727822f90277b937eabdbbdbf14ae1f8b9fb495ae7b9799bdd383a56f784eb3c9929998a3ac133881afd9871b7c6d9261c3f2e339f82d793f4535e25079e5621 + checksum: 10c0/727822f90277b937eabdbbdbf14ae1f8b9fb495ae7b9799bdd383a56f784eb3c9929998a3ac133881afd9871b7c6d9261c3f2e339f82d793f4535e25079e5621 languageName: node linkType: hard @@ -3162,14 +3162,14 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 28bfce0f8dee85e44953a2a07caf009b0208c897d9d260b778ff06c7876c6e0b474d64501dd77cfcf2323eef5582b2a8cdd7246a9b5c05362adb98dd0b7a332f + checksum: 10c0/28bfce0f8dee85e44953a2a07caf009b0208c897d9d260b778ff06c7876c6e0b474d64501dd77cfcf2323eef5582b2a8cdd7246a9b5c05362adb98dd0b7a332f languageName: node linkType: hard "@firebase/analytics-types@npm:0.8.0": version: 0.8.0 resolution: "@firebase/analytics-types@npm:0.8.0" - checksum: ba74a2b35bf4e7aa62ea79d5ee938f0e7fa3cb0d4161eb8fcbd8230a3d8944d928f4dfc8ca4c3c65a1704b1d71c1d6a85af5401a575090a0f90fea7d8313f3a9 + checksum: 10c0/ba74a2b35bf4e7aa62ea79d5ee938f0e7fa3cb0d4161eb8fcbd8230a3d8944d928f4dfc8ca4c3c65a1704b1d71c1d6a85af5401a575090a0f90fea7d8313f3a9 languageName: node linkType: hard @@ -3184,7 +3184,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 07a23cfbc6a2f52bc07a0a4248495337509f5e2e6276456d97a9725d6a843b1cbf917b7dc5702a0c788ecb025ea4920ca44a7f24f07ced7e25a5014a28947619 + checksum: 10c0/07a23cfbc6a2f52bc07a0a4248495337509f5e2e6276456d97a9725d6a843b1cbf917b7dc5702a0c788ecb025ea4920ca44a7f24f07ced7e25a5014a28947619 languageName: node linkType: hard @@ -3200,21 +3200,21 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 339a532f6487bffb50820b02cfdea764de74f064e8f9879a716cd84b1f34e3f82ce6c55e9ed7f90258f357c5bca58f85e95afa85b0a3d28b1268b9a81f724f96 + checksum: 10c0/339a532f6487bffb50820b02cfdea764de74f064e8f9879a716cd84b1f34e3f82ce6c55e9ed7f90258f357c5bca58f85e95afa85b0a3d28b1268b9a81f724f96 languageName: node linkType: hard "@firebase/app-check-interop-types@npm:0.3.0": version: 0.3.0 resolution: "@firebase/app-check-interop-types@npm:0.3.0" - checksum: 248342f09af8737c1765ad55c8930b7939a18299993ea2d57df70fa706933a68a754e275aedb877e57059ab89a2764a64e9cc1c595c34e138507f5ef415ef59a + checksum: 10c0/248342f09af8737c1765ad55c8930b7939a18299993ea2d57df70fa706933a68a754e275aedb877e57059ab89a2764a64e9cc1c595c34e138507f5ef415ef59a languageName: node linkType: hard "@firebase/app-check-types@npm:0.5.0": version: 0.5.0 resolution: "@firebase/app-check-types@npm:0.5.0" - checksum: fdbabd150aa58dff226bd83a63de37a1eb5212c0afdbb6f5d4360166a0c1f52aa24ea5dccffb130c25f5297291bdbc415a086763dca502189dd9006319ebd1b9 + checksum: 10c0/fdbabd150aa58dff226bd83a63de37a1eb5212c0afdbb6f5d4360166a0c1f52aa24ea5dccffb130c25f5297291bdbc415a086763dca502189dd9006319ebd1b9 languageName: node linkType: hard @@ -3228,7 +3228,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: e4d0672f9b99be1f7d2fc570d393d3f139f9cb4dc46b92da2eae54891e03bb7c298a5574bc414c7fdb6800dd910c90c9ee5dd78cb211f784b54053de24917457 + checksum: 10c0/e4d0672f9b99be1f7d2fc570d393d3f139f9cb4dc46b92da2eae54891e03bb7c298a5574bc414c7fdb6800dd910c90c9ee5dd78cb211f784b54053de24917457 languageName: node linkType: hard @@ -3241,14 +3241,14 @@ __metadata: "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" - checksum: cc0695c65108f0dd3904b832d84f8d57b0b841102a5c7199fe00f323fb17d1c628d40e10dca27d36f1b92c2b4af1999618c5fd2dd37d3fb0f0feab0c70338a68 + checksum: 10c0/cc0695c65108f0dd3904b832d84f8d57b0b841102a5c7199fe00f323fb17d1c628d40e10dca27d36f1b92c2b4af1999618c5fd2dd37d3fb0f0feab0c70338a68 languageName: node linkType: hard "@firebase/app-types@npm:0.9.0": version: 0.9.0 resolution: "@firebase/app-types@npm:0.9.0" - checksum: 361b0e1e0cd5cf1a79f220e9b1624a90ec399f9623272a7d650a8bc48d76bb85e9645d20e7e521d5e7fce80abac270c4c22776caea84ef418274abb0bfc3dbac + checksum: 10c0/361b0e1e0cd5cf1a79f220e9b1624a90ec399f9623272a7d650a8bc48d76bb85e9645d20e7e521d5e7fce80abac270c4c22776caea84ef418274abb0bfc3dbac languageName: node linkType: hard @@ -3261,7 +3261,7 @@ __metadata: "@firebase/util": "npm:1.9.3" idb: "npm:7.1.1" tslib: "npm:^2.1.0" - checksum: f7dda134e69837aa6989d9d8b5e6f5a5b4b423b83b381b1748bad96c750b2175c13ffc66d2af4bcfb14de1dd28f31cf0e9b05c90222aa74e858776d1c2fa8fc3 + checksum: 10c0/f7dda134e69837aa6989d9d8b5e6f5a5b4b423b83b381b1748bad96c750b2175c13ffc66d2af4bcfb14de1dd28f31cf0e9b05c90222aa74e858776d1c2fa8fc3 languageName: node linkType: hard @@ -3277,14 +3277,14 @@ __metadata: undici: "npm:5.26.5" peerDependencies: "@firebase/app-compat": 0.x - checksum: e29b8cf55e9cfb8eb7404f9e9cd9676cd22169529658114523972fc5860a7a5df94ef7aa48ec3230af104ec5e9a128862f42300230e7e3ca933613e9a6209db0 + checksum: 10c0/e29b8cf55e9cfb8eb7404f9e9cd9676cd22169529658114523972fc5860a7a5df94ef7aa48ec3230af104ec5e9a128862f42300230e7e3ca933613e9a6209db0 languageName: node linkType: hard "@firebase/auth-interop-types@npm:0.2.1": version: 0.2.1 resolution: "@firebase/auth-interop-types@npm:0.2.1" - checksum: 832836afcd62c6ecacc07c412d7696bb29c1a21e7ebd3e8ea77af70df97999354370fc478bb78dee7c05c84f98becae56062a2e26ec0c9ebfa98036734cf343d + checksum: 10c0/832836afcd62c6ecacc07c412d7696bb29c1a21e7ebd3e8ea77af70df97999354370fc478bb78dee7c05c84f98becae56062a2e26ec0c9ebfa98036734cf343d languageName: node linkType: hard @@ -3294,7 +3294,7 @@ __metadata: peerDependencies: "@firebase/app-types": 0.x "@firebase/util": 1.x - checksum: 5a56fc80b9a745af0af2397e3808692e04cd74eeb1edfa6f89da8c98756630b67380b10af57d13f80726f68c9de25cfa7e1eb3de152ce6bc1218f8f2b07d0cd9 + checksum: 10c0/5a56fc80b9a745af0af2397e3808692e04cd74eeb1edfa6f89da8c98756630b67380b10af57d13f80726f68c9de25cfa7e1eb3de152ce6bc1218f8f2b07d0cd9 languageName: node linkType: hard @@ -3313,7 +3313,7 @@ __metadata: peerDependenciesMeta: "@react-native-async-storage/async-storage": optional: true - checksum: d2afa05b121ba00343804db9f36e149629d183b00b6fda22a545867200ef35cd393dc4537a2fc2ebda5bdb11500b5fcddb3e62b6ec18f0f80ad0a7d969ae522b + checksum: 10c0/d2afa05b121ba00343804db9f36e149629d183b00b6fda22a545867200ef35cd393dc4537a2fc2ebda5bdb11500b5fcddb3e62b6ec18f0f80ad0a7d969ae522b languageName: node linkType: hard @@ -3323,7 +3323,7 @@ __metadata: dependencies: "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" - checksum: 35480c2b6e87c56f593535154c0cc92e7224d1533611a2bc2fe9f0975a44eb7a0400e0de0454a1888bb1ac21f0b17ec03a0d937581735ea229baf9b243bd1b39 + checksum: 10c0/35480c2b6e87c56f593535154c0cc92e7224d1533611a2bc2fe9f0975a44eb7a0400e0de0454a1888bb1ac21f0b17ec03a0d937581735ea229baf9b243bd1b39 languageName: node linkType: hard @@ -3337,7 +3337,7 @@ __metadata: "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" - checksum: 8cf67802b7c52052e363653420e7694ef846acda8a674aefddc39a4984739bfa4ff66a76a466bb2c8c697a63c715de9ed5e2d5a7aba1c271de357fe3185eee22 + checksum: 10c0/8cf67802b7c52052e363653420e7694ef846acda8a674aefddc39a4984739bfa4ff66a76a466bb2c8c697a63c715de9ed5e2d5a7aba1c271de357fe3185eee22 languageName: node linkType: hard @@ -3351,7 +3351,7 @@ __metadata: "@firebase/logger": "npm:0.4.0" "@firebase/util": "npm:1.9.3" tslib: "npm:^2.1.0" - checksum: eccfe6be28d46e5caacdcf98ce79debf3c5f61f0398254ee01fcea8118c86cab33a70b878c562b74a4708883c4856176d8774a334810c28515177c80ec247321 + checksum: 10c0/eccfe6be28d46e5caacdcf98ce79debf3c5f61f0398254ee01fcea8118c86cab33a70b878c562b74a4708883c4856176d8774a334810c28515177c80ec247321 languageName: node linkType: hard @@ -3361,7 +3361,7 @@ __metadata: dependencies: "@firebase/app-types": "npm:0.9.0" "@firebase/util": "npm:1.9.3" - checksum: f1e07d43aca7e865c0ae865583d727461a76146e5d68b3e90e988499e2d2ea9a330fac65b1ac31081f097363b9bd8ef342d0a6f1e3d58361068be434ec0cef79 + checksum: 10c0/f1e07d43aca7e865c0ae865583d727461a76146e5d68b3e90e988499e2d2ea9a330fac65b1ac31081f097363b9bd8ef342d0a6f1e3d58361068be434ec0cef79 languageName: node linkType: hard @@ -3371,7 +3371,7 @@ __metadata: dependencies: "@firebase/app-types": "npm:0.9.0" "@firebase/util": "npm:1.9.3" - checksum: e5e532def9b713302fd74b563f83528ed0aca520bf94fb5580fa44902a9ade6addcb34f08bbd5fe33d1c217cb697a7049d134bea37bc6475d4af3cc6d1600799 + checksum: 10c0/e5e532def9b713302fd74b563f83528ed0aca520bf94fb5580fa44902a9ade6addcb34f08bbd5fe33d1c217cb697a7049d134bea37bc6475d4af3cc6d1600799 languageName: node linkType: hard @@ -3385,7 +3385,7 @@ __metadata: "@firebase/util": "npm:1.9.3" faye-websocket: "npm:0.11.4" tslib: "npm:^2.1.0" - checksum: a67d4acf10256e7648f953325c9b25aade163d165a085d0c7cbc25a7c3b81954ead2b97a7c88706c5ef671cda6a97024fca1207283bbb9344bc92c24c895adea + checksum: 10c0/a67d4acf10256e7648f953325c9b25aade163d165a085d0c7cbc25a7c3b81954ead2b97a7c88706c5ef671cda6a97024fca1207283bbb9344bc92c24c895adea languageName: node linkType: hard @@ -3399,7 +3399,7 @@ __metadata: "@firebase/util": "npm:1.9.3" faye-websocket: "npm:0.11.4" tslib: "npm:^2.1.0" - checksum: e0028cbefeb95ec450719312a774fbf418b04fd9a5acbdc92ef2ae7039f16ead8ae7aa7863817688e6660a0cf5345f1dae348fa5f83455a72b3a204b36054f6a + checksum: 10c0/e0028cbefeb95ec450719312a774fbf418b04fd9a5acbdc92ef2ae7039f16ead8ae7aa7863817688e6660a0cf5345f1dae348fa5f83455a72b3a204b36054f6a languageName: node linkType: hard @@ -3414,7 +3414,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 215af998b304d2d69aae167ad4a301b4cb911199126ff5facbf22f7412fbb3c5ae45ca9abb10c72f10a36bc3279673d9d8831c99bd4ce22ce79c0472f064d23b + checksum: 10c0/215af998b304d2d69aae167ad4a301b4cb911199126ff5facbf22f7412fbb3c5ae45ca9abb10c72f10a36bc3279673d9d8831c99bd4ce22ce79c0472f064d23b languageName: node linkType: hard @@ -3424,7 +3424,7 @@ __metadata: peerDependencies: "@firebase/app-types": 0.x "@firebase/util": 1.x - checksum: 39b2a429484d0eb0144c74da47cb3d33c5b6cdcbc1137757b74eb2dcad05f3ca3751ba941ec06e5c1c22afa443b226fe9ca3be06bec1eb12f9abc401af8aa5f1 + checksum: 10c0/39b2a429484d0eb0144c74da47cb3d33c5b6cdcbc1137757b74eb2dcad05f3ca3751ba941ec06e5c1c22afa443b226fe9ca3be06bec1eb12f9abc401af8aa5f1 languageName: node linkType: hard @@ -3442,7 +3442,7 @@ __metadata: undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x - checksum: bb6609a3cf0e5804db6ad6ea18b799bd8199a7cb611f2a51d96350a191f316ffc10e36f0cf078f922d08091cc3df42b4194fca57a0033bb498542c4d8714c35f + checksum: 10c0/bb6609a3cf0e5804db6ad6ea18b799bd8199a7cb611f2a51d96350a191f316ffc10e36f0cf078f922d08091cc3df42b4194fca57a0033bb498542c4d8714c35f languageName: node linkType: hard @@ -3457,14 +3457,14 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: ac56a3efbf6da841dd5efdaadbfceb9207a391e37b40bd12d78541059f7ab25b2a972e9a707a29d48612243139d753b565170adf3e269a7e4625bfb267d91668 + checksum: 10c0/ac56a3efbf6da841dd5efdaadbfceb9207a391e37b40bd12d78541059f7ab25b2a972e9a707a29d48612243139d753b565170adf3e269a7e4625bfb267d91668 languageName: node linkType: hard "@firebase/functions-types@npm:0.6.0": version: 0.6.0 resolution: "@firebase/functions-types@npm:0.6.0" - checksum: e0c99aaf43a95b38c701eff7683d61dc43135d396ef41ddeb7bac5046d84b1b59c5f1e6e7d5db5adedba05b5580b47081851052bec705900aacfa417affd1bfe + checksum: 10c0/e0c99aaf43a95b38c701eff7683d61dc43135d396ef41ddeb7bac5046d84b1b59c5f1e6e7d5db5adedba05b5580b47081851052bec705900aacfa417affd1bfe languageName: node linkType: hard @@ -3481,7 +3481,7 @@ __metadata: undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x - checksum: 133335fba1508c24ced8b1a5eafc508ae9202336c46b8b32220362e2b21385b48f6233931e63461e3fb707a9959ddb104d461428b94416e2596803e2ae66f1ca + checksum: 10c0/133335fba1508c24ced8b1a5eafc508ae9202336c46b8b32220362e2b21385b48f6233931e63461e3fb707a9959ddb104d461428b94416e2596803e2ae66f1ca languageName: node linkType: hard @@ -3496,7 +3496,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 2adf6a11958d3b9a4ca2f5232a35d41bff732da3079a1d4cc75a025e866456ab91f5a60d73d3d82ace1499aaa3f7d96f466aaaa62ba3aad925649e4cd1269005 + checksum: 10c0/2adf6a11958d3b9a4ca2f5232a35d41bff732da3079a1d4cc75a025e866456ab91f5a60d73d3d82ace1499aaa3f7d96f466aaaa62ba3aad925649e4cd1269005 languageName: node linkType: hard @@ -3505,7 +3505,7 @@ __metadata: resolution: "@firebase/installations-types@npm:0.5.0" peerDependencies: "@firebase/app-types": 0.x - checksum: fcb4880792b42668482dd03c0d569f4563ae70772f5b0155907f261513ac7d3ce6cab683a77d6a75e499e3c600406bbd99b30e9b32c94ac0fb094c166b9a80b1 + checksum: 10c0/fcb4880792b42668482dd03c0d569f4563ae70772f5b0155907f261513ac7d3ce6cab683a77d6a75e499e3c600406bbd99b30e9b32c94ac0fb094c166b9a80b1 languageName: node linkType: hard @@ -3519,7 +3519,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: a5596ee5caa31bbfa081be93e4eb67ba81b638f245ccbfb44f860255e393a4a1f5ac2f319a7c08fdc6b0e7c2d1fff806c1d32ca86098b63ce02afd5c9cdd850c + checksum: 10c0/a5596ee5caa31bbfa081be93e4eb67ba81b638f245ccbfb44f860255e393a4a1f5ac2f319a7c08fdc6b0e7c2d1fff806c1d32ca86098b63ce02afd5c9cdd850c languageName: node linkType: hard @@ -3528,7 +3528,7 @@ __metadata: resolution: "@firebase/logger@npm:0.4.0" dependencies: tslib: "npm:^2.1.0" - checksum: 81c870e2d467bb351813e9e1e6afdcb373835fed6ccf967e43e3be4bb0fdaa50f9bf70332d3509fed435add3186bd064ef2915540b62e1213f0a5899e52ad95a + checksum: 10c0/81c870e2d467bb351813e9e1e6afdcb373835fed6ccf967e43e3be4bb0fdaa50f9bf70332d3509fed435add3186bd064ef2915540b62e1213f0a5899e52ad95a languageName: node linkType: hard @@ -3542,14 +3542,14 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 8d2e19bd9f362d9edb527999d00c9ba6f6fc53b0c5c446bbdf2df2b882b06875b17703be14888a4a4f8d1b2eed025a9f8a422e0b9d31638b9b37046c360ee19b + checksum: 10c0/8d2e19bd9f362d9edb527999d00c9ba6f6fc53b0c5c446bbdf2df2b882b06875b17703be14888a4a4f8d1b2eed025a9f8a422e0b9d31638b9b37046c360ee19b languageName: node linkType: hard "@firebase/messaging-interop-types@npm:0.2.0": version: 0.2.0 resolution: "@firebase/messaging-interop-types@npm:0.2.0" - checksum: db5a92bae1ef0bd2844e7d6783b943d407499f2778260f84dfcb5bb476c4cd15130835a03ff3eeadb02b96c0c580bd9ed0ab862919a817da45493816c2ccd7f6 + checksum: 10c0/db5a92bae1ef0bd2844e7d6783b943d407499f2778260f84dfcb5bb476c4cd15130835a03ff3eeadb02b96c0c580bd9ed0ab862919a817da45493816c2ccd7f6 languageName: node linkType: hard @@ -3565,7 +3565,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 4454394a0b405b0837df905fe2ff1bd6c48a276c65d546e639af9c32e1a3a8a1cab60333c286cea27c22c58db1150e158a60146adf5f0e52bfab18e9ea29125d + checksum: 10c0/4454394a0b405b0837df905fe2ff1bd6c48a276c65d546e639af9c32e1a3a8a1cab60333c286cea27c22c58db1150e158a60146adf5f0e52bfab18e9ea29125d languageName: node linkType: hard @@ -3581,14 +3581,14 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 4ba3b914876fb67a337dfcdae87739dc9586124f4cc60a07ae33519de758c06c942251dc64c27960d2bcc3432bdaa937b2f4364ed952ab762926ba3799b50764 + checksum: 10c0/4ba3b914876fb67a337dfcdae87739dc9586124f4cc60a07ae33519de758c06c942251dc64c27960d2bcc3432bdaa937b2f4364ed952ab762926ba3799b50764 languageName: node linkType: hard "@firebase/performance-types@npm:0.2.0": version: 0.2.0 resolution: "@firebase/performance-types@npm:0.2.0" - checksum: be1ed084c7b21eb73ec627e05a302cd45e9eace70bd094b2c952a714ebfdba97988cd01a91f7b791bf0d55ead0631152fa25f6cca216fb2a8ac716b69e478ab3 + checksum: 10c0/be1ed084c7b21eb73ec627e05a302cd45e9eace70bd094b2c952a714ebfdba97988cd01a91f7b791bf0d55ead0631152fa25f6cca216fb2a8ac716b69e478ab3 languageName: node linkType: hard @@ -3603,7 +3603,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 7c54d358c73fbd422acd5b5b7fee6450cac4a701f97983950325f978e99c7d51cec1505573487ab92ba4efa423b33025e1c5830538e2302ed84bb732f32cbdad + checksum: 10c0/7c54d358c73fbd422acd5b5b7fee6450cac4a701f97983950325f978e99c7d51cec1505573487ab92ba4efa423b33025e1c5830538e2302ed84bb732f32cbdad languageName: node linkType: hard @@ -3619,14 +3619,14 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 2a01d49102e135e355380ad9d765a44a41b859850275f653a5c9dcbbe7293073c594842784e0345aac10f393887dadd6c5f0318fced01551cb4845fc01cc6cf7 + checksum: 10c0/2a01d49102e135e355380ad9d765a44a41b859850275f653a5c9dcbbe7293073c594842784e0345aac10f393887dadd6c5f0318fced01551cb4845fc01cc6cf7 languageName: node linkType: hard "@firebase/remote-config-types@npm:0.3.0": version: 0.3.0 resolution: "@firebase/remote-config-types@npm:0.3.0" - checksum: 06c86880db0e7ea6b75c98e582b215979b5e7ae77eae8347a44050d80f918df9010007b2f83eea4342f0c39b8867578e92ed467b36955623008d50b78bb6adee + checksum: 10c0/06c86880db0e7ea6b75c98e582b215979b5e7ae77eae8347a44050d80f918df9010007b2f83eea4342f0c39b8867578e92ed467b36955623008d50b78bb6adee languageName: node linkType: hard @@ -3641,7 +3641,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app": 0.x - checksum: 1b0b3d46ba707407f4adba6494519446a11dc4358e04cdef741bfebf5a0579ef464a75ba90fcb2af9b51c691f3f7e94a9c3adc4cae4eb783823552a0201967b0 + checksum: 10c0/1b0b3d46ba707407f4adba6494519446a11dc4358e04cdef741bfebf5a0579ef464a75ba90fcb2af9b51c691f3f7e94a9c3adc4cae4eb783823552a0201967b0 languageName: node linkType: hard @@ -3656,7 +3656,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: "@firebase/app-compat": 0.x - checksum: 71924ef9685d2e84913607df9fdac971cfe299522cea07fb93afa06103cb573392c009ea38c41f09a88e8b6d7702c1ec3c6003b54dd61badbd69fe3d0a654c4c + checksum: 10c0/71924ef9685d2e84913607df9fdac971cfe299522cea07fb93afa06103cb573392c009ea38c41f09a88e8b6d7702c1ec3c6003b54dd61badbd69fe3d0a654c4c languageName: node linkType: hard @@ -3666,7 +3666,7 @@ __metadata: peerDependencies: "@firebase/app-types": 0.x "@firebase/util": 1.x - checksum: 98c15f3eba81c8903b1a6256a07f77b4510636595c492d90a4fd992eae6c22f37b705a5782dc688e3a5afeb2c94197824991739796224cc1875d1d2b5109e849 + checksum: 10c0/98c15f3eba81c8903b1a6256a07f77b4510636595c492d90a4fd992eae6c22f37b705a5782dc688e3a5afeb2c94197824991739796224cc1875d1d2b5109e849 languageName: node linkType: hard @@ -3680,7 +3680,7 @@ __metadata: undici: "npm:5.26.5" peerDependencies: "@firebase/app": 0.x - checksum: c7c7284dd92ab11c5584b1e806e9fd0c8e76b8292fefcabe9a871a323e235a42c424d92416d6ec50b95436b6fc2552ee7b981816b7188ad266426f5dd89e9102 + checksum: 10c0/c7c7284dd92ab11c5584b1e806e9fd0c8e76b8292fefcabe9a871a323e235a42c424d92416d6ec50b95436b6fc2552ee7b981816b7188ad266426f5dd89e9102 languageName: node linkType: hard @@ -3689,14 +3689,14 @@ __metadata: resolution: "@firebase/util@npm:1.9.3" dependencies: tslib: "npm:^2.1.0" - checksum: ede5db85568869e08697e6b5646ac719ba50a196f9cd16ac4bbf619d6f9d6c4aa83d94f7a7b506644db590dbccf81fb14152c02afaca852b035aed10a890f5a5 + checksum: 10c0/ede5db85568869e08697e6b5646ac719ba50a196f9cd16ac4bbf619d6f9d6c4aa83d94f7a7b506644db590dbccf81fb14152c02afaca852b035aed10a890f5a5 languageName: node linkType: hard "@firebase/webchannel-wrapper@npm:0.10.5": version: 0.10.5 resolution: "@firebase/webchannel-wrapper@npm:0.10.5" - checksum: efe7f9cec3fb23b023c42820de0afe81175d7465783d9916223405d8cf1ffccfc30fbd779ae57c217c648e3c4c19ecfaf189478b35e887a33355158b4f6c25d5 + checksum: 10c0/efe7f9cec3fb23b023c42820de0afe81175d7465783d9916223405d8cf1ffccfc30fbd779ae57c217c648e3c4c19ecfaf189478b35e887a33355158b4f6c25d5 languageName: node linkType: hard @@ -3705,7 +3705,7 @@ __metadata: resolution: "@floating-ui/core@npm:1.4.1" dependencies: "@floating-ui/utils": "npm:^0.1.1" - checksum: 6a738ff3b5bcca2470904a2462a2700e32081f6e681e077fd63c8d0b389439511a2a16187589df156fac6e8f47d56bdc0afea64303b9341fb5886cff82d87758 + checksum: 10c0/6a738ff3b5bcca2470904a2462a2700e32081f6e681e077fd63c8d0b389439511a2a16187589df156fac6e8f47d56bdc0afea64303b9341fb5886cff82d87758 languageName: node linkType: hard @@ -3715,7 +3715,7 @@ __metadata: dependencies: "@floating-ui/core": "npm:^1.4.1" "@floating-ui/utils": "npm:^0.1.1" - checksum: cda044e72b6e015af70ef482ff19cae34b085c69a04e3d5d48613a58f6e88b71dbd7cc2f2ae02fc1f5f29ad8ba13c1c3074e2a4416b8c73ede47139177b5749c + checksum: 10c0/cda044e72b6e015af70ef482ff19cae34b085c69a04e3d5d48613a58f6e88b71dbd7cc2f2ae02fc1f5f29ad8ba13c1c3074e2a4416b8c73ede47139177b5749c languageName: node linkType: hard @@ -3727,14 +3727,14 @@ __metadata: peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 856c0c9de0a9117bcc69b1363fd9fa188133b9714394609db937903ab4330e9851becfd2a83453f40834de1a18377caf329b6b71afc1c69d7c5687f87da80ed4 + checksum: 10c0/856c0c9de0a9117bcc69b1363fd9fa188133b9714394609db937903ab4330e9851becfd2a83453f40834de1a18377caf329b6b71afc1c69d7c5687f87da80ed4 languageName: node linkType: hard "@floating-ui/utils@npm:^0.1.1": version: 0.1.1 resolution: "@floating-ui/utils@npm:0.1.1" - checksum: 3fca5a8bce10de87f78c9b9377db7d5a4c992f98adc3722e46725d9bd2a3a1051bb1c512caf5fe293752c660455df5f7b6a2153802f9299572fac3b565f4c407 + checksum: 10c0/3fca5a8bce10de87f78c9b9377db7d5a4c992f98adc3722e46725d9bd2a3a1051bb1c512caf5fe293752c660455df5f7b6a2153802f9299572fac3b565f4c407 languageName: node linkType: hard @@ -3746,7 +3746,7 @@ __metadata: functional-red-black-tree: "npm:^1.0.1" google-gax: "npm:^3.5.7" protobufjs: "npm:^7.2.5" - checksum: fafc2ad2cf739b9d9588865fbaea436504454707841e0a10e1d9890019d8efc0f43d0103f5edb06ac098cfe7735d93edaf952771518575b0a15cd82238cfe3ce + checksum: 10c0/fafc2ad2cf739b9d9588865fbaea436504454707841e0a10e1d9890019d8efc0f43d0103f5edb06ac098cfe7735d93edaf952771518575b0a15cd82238cfe3ce languageName: node linkType: hard @@ -3756,21 +3756,21 @@ __metadata: dependencies: arrify: "npm:^2.0.0" extend: "npm:^3.0.2" - checksum: 589f08435591897f694f18c154cd36a69c7094da40668b713152faefbba9fe0a46a85eb46d9f0160c698f21b61a86b11dfc21cd74b1c071b96b45e8892e41184 + checksum: 10c0/589f08435591897f694f18c154cd36a69c7094da40668b713152faefbba9fe0a46a85eb46d9f0160c698f21b61a86b11dfc21cd74b1c071b96b45e8892e41184 languageName: node linkType: hard "@google-cloud/projectify@npm:^3.0.0": version: 3.0.0 resolution: "@google-cloud/projectify@npm:3.0.0" - checksum: b7309cb8c7565c0fe735f69520e9531f5212a5136fc26b00b9b34cbe9a7dfc4a7c7f9efff9e299dd7dced666865063acc47d22294da4ba79fcfd93429c239d8a + checksum: 10c0/b7309cb8c7565c0fe735f69520e9531f5212a5136fc26b00b9b34cbe9a7dfc4a7c7f9efff9e299dd7dced666865063acc47d22294da4ba79fcfd93429c239d8a languageName: node linkType: hard "@google-cloud/promisify@npm:^3.0.0": version: 3.0.1 resolution: "@google-cloud/promisify@npm:3.0.1" - checksum: b37a7e5797b0cd23d9cc0f171e6e97879d62be7359467a83155339b472eaaed8ffce657cc206a79ca1e6aad66b68718649e7915d9ea52fc61d8fc21589db27f3 + checksum: 10c0/b37a7e5797b0cd23d9cc0f171e6e97879d62be7359467a83155339b472eaaed8ffce657cc206a79ca1e6aad66b68718649e7915d9ea52fc61d8fc21589db27f3 languageName: node linkType: hard @@ -3795,7 +3795,7 @@ __metadata: retry-request: "npm:^5.0.0" teeny-request: "npm:^8.0.0" uuid: "npm:^8.0.0" - checksum: 2d4b0cf1ef5d8f94fc839b2d75b42a4ec6528fb979d82c7111d00fe9866c15a2c7a385c6f5b71ded635531b6b0760376aaaf5c9d009ff207de6a978e7c8fa36b + checksum: 10c0/2d4b0cf1ef5d8f94fc839b2d75b42a4ec6528fb979d82c7111d00fe9866c15a2c7a385c6f5b71ded635531b6b0760376aaaf5c9d009ff207de6a978e7c8fa36b languageName: node linkType: hard @@ -3807,7 +3807,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 32476f676b59876e75af41a448a6133f29f5f2b6c975e88d0e54b5d793e931cffd2d55f094bd79e7fe84664e18cf6bcdf13d199ddec903713338aaa522ff1b3b + checksum: 10c0/32476f676b59876e75af41a448a6133f29f5f2b6c975e88d0e54b5d793e931cffd2d55f094bd79e7fe84664e18cf6bcdf13d199ddec903713338aaa522ff1b3b languageName: node linkType: hard @@ -3819,7 +3819,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 1b0d8006862463bf1a8122c8b25f6f91535826149e2eafda85938e5527ced4bbf275bd81cbb55f3378a8329b9c7bce280b8d011abff7eb69196a81aa45f38140 + checksum: 10c0/1b0d8006862463bf1a8122c8b25f6f91535826149e2eafda85938e5527ced4bbf275bd81cbb55f3378a8329b9c7bce280b8d011abff7eb69196a81aa45f38140 languageName: node linkType: hard @@ -3869,7 +3869,7 @@ __metadata: graphql-code-generator: cjs/bin.js graphql-codegen: cjs/bin.js graphql-codegen-esm: esm/bin.js - checksum: e6886054bad3b8de3760d1381b54c7dd0af2eb77104563065ba7ca63700b25ad1f8ce9fe8482d960ff8bd4cf110465a3e822a1303da10cebd6965c72d5a9e9a1 + checksum: 10c0/e6886054bad3b8de3760d1381b54c7dd0af2eb77104563065ba7ca63700b25ad1f8ce9fe8482d960ff8bd4cf110465a3e822a1303da10cebd6965c72d5a9e9a1 languageName: node linkType: hard @@ -3892,7 +3892,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c975e72a97a0f679a9ee77265ad5cf535d17d5409fb39704653f0b6c203e1c6815e0a81b20b0d597ebb8f537a5a8a5a601a9366073270fde9971408f0ddadc1d + checksum: 10c0/c975e72a97a0f679a9ee77265ad5cf535d17d5409fb39704653f0b6c203e1c6815e0a81b20b0d597ebb8f537a5a8a5a601a9366073270fde9971408f0ddadc1d languageName: node linkType: hard @@ -3906,7 +3906,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 822be191eba5cc9f1882936501941054adfc517cb7f32e32c85843253eec268eca20d24f2ba04d9575719e36e3a5cd0df059715f3fd78d32f12f7d79c7198e79 + checksum: 10c0/822be191eba5cc9f1882936501941054adfc517cb7f32e32c85843253eec268eca20d24f2ba04d9575719e36e3a5cd0df059715f3fd78d32f12f7d79c7198e79 languageName: node linkType: hard @@ -3918,7 +3918,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 52ad2ee32f4d4e690ec8f9fbd9e62d7ec1ddfcb91004acf86969b1e24767c19aa49870ee49ccb196efba92f9280f813073e891950dc234d2e411263c1e84408d + checksum: 10c0/52ad2ee32f4d4e690ec8f9fbd9e62d7ec1ddfcb91004acf86969b1e24767c19aa49870ee49ccb196efba92f9280f813073e891950dc234d2e411263c1e84408d languageName: node linkType: hard @@ -3933,7 +3933,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: c2e0be33d2e0362892b466058da02ad8476192691ce8efc64f0e94116a1b2ae6c1a479b5d399f4396fee3c54959f5e4a296d994bcffa458c1ec5167c56d183ab + checksum: 10c0/c2e0be33d2e0362892b466058da02ad8476192691ce8efc64f0e94116a1b2ae6c1a479b5d399f4396fee3c54959f5e4a296d994bcffa458c1ec5167c56d183ab languageName: node linkType: hard @@ -3949,7 +3949,7 @@ __metadata: tslib: "npm:~2.4.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: b4abce50a751d938a48b2b7ff57aa1671df1ae9d54196ccd60237077aef2e2b528b45244cb786d1b2eeb1f464c48eb7626553fdc5cf3a9013455ed27ef3ef7d2 + checksum: 10c0/b4abce50a751d938a48b2b7ff57aa1671df1ae9d54196ccd60237077aef2e2b528b45244cb786d1b2eeb1f464c48eb7626553fdc5cf3a9013455ed27ef3ef7d2 languageName: node linkType: hard @@ -3965,7 +3965,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: cc4a63eb6cd015c9b26f6ff115257ff9c7b87c352a23b3f0622536c6df693e647ff627daef6f370c629fc515ddfdb2f7e3190f5e8cd6490a1ea513835cc358c3 + checksum: 10c0/cc4a63eb6cd015c9b26f6ff115257ff9c7b87c352a23b3f0622536c6df693e647ff627daef6f370c629fc515ddfdb2f7e3190f5e8cd6490a1ea513835cc358c3 languageName: node linkType: hard @@ -3981,7 +3981,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: afb3d43736c8d4a2131135343df11a286c68f330656777549f6d9a2dd76b8278133697dddbaa9d43353ed476f0eccd2273cccc4bb4a289d10f0611b139812efa + checksum: 10c0/afb3d43736c8d4a2131135343df11a286c68f330656777549f6d9a2dd76b8278133697dddbaa9d43353ed476f0eccd2273cccc4bb4a289d10f0611b139812efa languageName: node linkType: hard @@ -3994,7 +3994,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: cc4602e5b97876181e6a8e3e0241e336715e489d1721121037a0a28b49d3bd800de9a331c8db2e9449c3c237e842c05db93a2c834cfcc7e3cd68a15c96a8e204 + checksum: 10c0/cc4602e5b97876181e6a8e3e0241e336715e489d1721121037a0a28b49d3bd800de9a331c8db2e9449c3c237e842c05db93a2c834cfcc7e3cd68a15c96a8e204 languageName: node linkType: hard @@ -4007,7 +4007,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 82b7dcca9bbec4406d107e97f611d4c8657a65064a19c93e5319047a780a051392ef70e27b5d501e765eb0fb0a3f08d69e5051d7797c5d2f0756bae93e871154 + checksum: 10c0/82b7dcca9bbec4406d107e97f611d4c8657a65064a19c93e5319047a780a051392ef70e27b5d501e765eb0fb0a3f08d69e5051d7797c5d2f0756bae93e871154 languageName: node linkType: hard @@ -4022,7 +4022,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 84c7a10d9a574987c7a18f81ad43dff92e1605f9295488ef314cf17273772bb2fd406772164b2a601fda15b280fbc0d3d42cdc8c9ce742b68e4423faf9a2aca0 + checksum: 10c0/84c7a10d9a574987c7a18f81ad43dff92e1605f9295488ef314cf17273772bb2fd406772164b2a601fda15b280fbc0d3d42cdc8c9ce742b68e4423faf9a2aca0 languageName: node linkType: hard @@ -4037,7 +4037,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4ea5c955e0b12b1f6aa4d6ad46b217c56e802ff5508b939a3a218c53208d03bbd308bb3dfbfbc30fe7c4bd0be4c9c51c76b0fe65c6238618ed482874c869f801 + checksum: 10c0/4ea5c955e0b12b1f6aa4d6ad46b217c56e802ff5508b939a3a218c53208d03bbd308bb3dfbfbc30fe7c4bd0be4c9c51c76b0fe65c6238618ed482874c869f801 languageName: node linkType: hard @@ -4052,7 +4052,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: dd372cdc732831376fd0f931c419ed2fdcedfb79ac49117fa98aaceec70c3839697cd7eb9d276be39512d1490272ebc6d7919dcc9760f2aa200058dcc6a89086 + checksum: 10c0/dd372cdc732831376fd0f931c419ed2fdcedfb79ac49117fa98aaceec70c3839697cd7eb9d276be39512d1490272ebc6d7919dcc9760f2aa200058dcc6a89086 languageName: node linkType: hard @@ -4068,7 +4068,7 @@ __metadata: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 graphql-tag: ^2.0.0 - checksum: 8aed1aa62694abea2616bf39501b561a0aed107b3c0112aeb257167df4f8a13e866b335d509b94153b99bd77e1d36312ff260e18d26049673268318144d693e5 + checksum: 10c0/8aed1aa62694abea2616bf39501b561a0aed107b3c0112aeb257167df4f8a13e866b335d509b94153b99bd77e1d36312ff260e18d26049673268318144d693e5 languageName: node linkType: hard @@ -4084,7 +4084,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: f87383d0f145b1b6cc8c7382f932bdbf6dd37f3f2526e1f17b73ee9f0bf9a6db8d7db04867712dd6f5839d5b967823ca3e534462335d8fd389b2bfda4aa0cb2e + checksum: 10c0/f87383d0f145b1b6cc8c7382f932bdbf6dd37f3f2526e1f17b73ee9f0bf9a6db8d7db04867712dd6f5839d5b967823ca3e534462335d8fd389b2bfda4aa0cb2e languageName: node linkType: hard @@ -4099,7 +4099,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 6fbf7cfda19fe8b02ab34a948c0d2cf58b68a26f8c31c03cbb097ef2196c1071d986bba6660d5da516c36c9f184e8bbef014cf851bf706aba81138a423cda250 + checksum: 10c0/6fbf7cfda19fe8b02ab34a948c0d2cf58b68a26f8c31c03cbb097ef2196c1071d986bba6660d5da516c36c9f184e8bbef014cf851bf706aba81138a423cda250 languageName: node linkType: hard @@ -4114,7 +4114,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: b3e5b0759e56c27c9eaed09d909eca32bfed25b29320c4e948fecfa3a354e7467885ff55082461a18e77c30445d3316585c403df861ed6f894305dfd613bb334 + checksum: 10c0/b3e5b0759e56c27c9eaed09d909eca32bfed25b29320c4e948fecfa3a354e7467885ff55082461a18e77c30445d3316585c403df861ed6f894305dfd613bb334 languageName: node linkType: hard @@ -4134,7 +4134,7 @@ __metadata: tslib: "npm:~2.4.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 9dfc4893599721eba988103d4456345f915cab75c9a754e78a21bd7d05c49b00a01f38ffb70355d758626da0396ae3bb6d44fc98d5c8f9f36a1b122aea0063c4 + checksum: 10c0/9dfc4893599721eba988103d4456345f915cab75c9a754e78a21bd7d05c49b00a01f38ffb70355d758626da0396ae3bb6d44fc98d5c8f9f36a1b122aea0063c4 languageName: node linkType: hard @@ -4154,7 +4154,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 4a393276f091de20cc3b8c3af07c772592328ed1c304835db533ab39dfeba4f7411040480404db21b677a85c055699cdd2992139a89456ec71492df6fa4ae9bf + checksum: 10c0/4a393276f091de20cc3b8c3af07c772592328ed1c304835db533ab39dfeba4f7411040480404db21b677a85c055699cdd2992139a89456ec71492df6fa4ae9bf languageName: node linkType: hard @@ -4174,7 +4174,7 @@ __metadata: tslib: "npm:~2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 704c08bf29b274a463c8a20381f280f3294c4e48764b8b99ae9fbca610e2b54ac5ee1cf0e1165962e75c49dd8d2237f743d56bd3f5e66c5a072bc77c22f49be6 + checksum: 10c0/704c08bf29b274a463c8a20381f280f3294c4e48764b8b99ae9fbca610e2b54ac5ee1cf0e1165962e75c49dd8d2237f743d56bd3f5e66c5a072bc77c22f49be6 languageName: node linkType: hard @@ -4188,7 +4188,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 34d4de6bced685770512cb518a01566846db30d0d5235eafbbf967213479e56552fe2a42996ec29a5a9a4db402d7bc8c9aa0b1be6bb1ccfaeb5ed60087c3381d + checksum: 10c0/34d4de6bced685770512cb518a01566846db30d0d5235eafbbf967213479e56552fe2a42996ec29a5a9a4db402d7bc8c9aa0b1be6bb1ccfaeb5ed60087c3381d languageName: node linkType: hard @@ -4202,7 +4202,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: ff5ad8f36844cfa823061e6aa4cb0e5c4e2ebbd716c02c04bc1fdf637799fea760abd9f53083e9ebb038a0aa61263cf6360535776610dbfb9b0981e1deb1fb8a + checksum: 10c0/ff5ad8f36844cfa823061e6aa4cb0e5c4e2ebbd716c02c04bc1fdf637799fea760abd9f53083e9ebb038a0aa61263cf6360535776610dbfb9b0981e1deb1fb8a languageName: node linkType: hard @@ -4217,7 +4217,7 @@ __metadata: unixify: "npm:^1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 + checksum: 10c0/c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 languageName: node linkType: hard @@ -4234,7 +4234,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1199ad14ffa1f0e8d6b12102bd78f7b0451ebe802f4bb7b4332a6fc27acf26b5d092b9dc6d656c7595efb0f7fc3bc247ba7fe1bb5317892443f42b27af4c54fc + checksum: 10c0/1199ad14ffa1f0e8d6b12102bd78f7b0451ebe802f4bb7b4332a6fc27acf26b5d092b9dc6d656c7595efb0f7fc3bc247ba7fe1bb5317892443f42b27af4c54fc languageName: node linkType: hard @@ -4246,7 +4246,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 06b2cc9f8d0fb7e5c43e434cab35698655d6d65cfa94c301996d6b1354101837a8e709b26dc5251fa2c3216e8469fb0db76b4cd93ca015b61f75e9926db9d9ef + checksum: 10c0/06b2cc9f8d0fb7e5c43e434cab35698655d6d65cfa94c301996d6b1354101837a8e709b26dc5251fa2c3216e8469fb0db76b4cd93ca015b61f75e9926db9d9ef languageName: node linkType: hard @@ -4263,7 +4263,7 @@ __metadata: ws: "npm:8.13.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 35619da6da45320ea53433018c4e2aa3ceab5fed097b9b51b6151007817139c9cb9f554d44a6fc51185d3ba829824cad9758f6cd98ead052a75d3d757306400f + checksum: 10c0/35619da6da45320ea53433018c4e2aa3ceab5fed097b9b51b6151007817139c9cb9f554d44a6fc51185d3ba829824cad9758f6cd98ead052a75d3d757306400f languageName: node linkType: hard @@ -4281,7 +4281,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: db2bb80e10bde0e6e34c3c86ed30c4f3082ba332fba5700d182045c4eb40453e670ea2277426fea31167481ed0b89446644ff106848e397b83e17c61d73218f3 + checksum: 10c0/db2bb80e10bde0e6e34c3c86ed30c4f3082ba332fba5700d182045c4eb40453e670ea2277426fea31167481ed0b89446644ff106848e397b83e17c61d73218f3 languageName: node linkType: hard @@ -4296,7 +4296,7 @@ __metadata: ws: "npm:8.13.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: caf03080b125a9c3291a09a19747ffd7d16c99bfa378ee26bbd82d7613efcaa516d684ed74139a70267c68d8b4ff071541a4db4c9a3e9d2ea944d2bf912b6f50 + checksum: 10c0/caf03080b125a9c3291a09a19747ffd7d16c99bfa378ee26bbd82d7613efcaa516d684ed74139a70267c68d8b4ff071541a4db4c9a3e9d2ea944d2bf912b6f50 languageName: node linkType: hard @@ -4311,7 +4311,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: c9300ac118040ea1da18f4cc79613292d91b6e5edc312763c5b8a9da79cc3581bc7d43a292120c7b4c71367613c4b21da3e656985dce827fae0503a5fcbcbc71 + checksum: 10c0/c9300ac118040ea1da18f4cc79613292d91b6e5edc312763c5b8a9da79cc3581bc7d43a292120c7b4c71367613c4b21da3e656985dce827fae0503a5fcbcbc71 languageName: node linkType: hard @@ -4326,7 +4326,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: cc1e1a54e411c1a274263d8c08227def18d4b37f6866f915fd69d2236791dd28403b4cd4d92631e0b2071c990562047e3d0d8ebae1c1e7084edc0eec4a6b6e46 + checksum: 10c0/cc1e1a54e411c1a274263d8c08227def18d4b37f6866f915fd69d2236791dd28403b4cd4d92631e0b2071c990562047e3d0d8ebae1c1e7084edc0eec4a6b6e46 languageName: node linkType: hard @@ -4342,7 +4342,7 @@ __metadata: unixify: "npm:^1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1a991e59c48d6faeb27f0e256859fca3de703c9e6ac949044bb95dd02558d0a22356fe0a93d93f815ee36cf0c6c3af582b2927579c115712622311f71cdda172 + checksum: 10c0/1a991e59c48d6faeb27f0e256859fca3de703c9e6ac949044bb95dd02558d0a22356fe0a93d93f815ee36cf0c6c3af582b2927579c115712622311f71cdda172 languageName: node linkType: hard @@ -4359,7 +4359,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 8044027a85fa0bd6a6094811c6868fa826b8a2a7cbeee615cb87c79c2c2caf0a208cad5fe45beffab0e020db813d70023eea34b6499c05aadda2f7730d283c8b + checksum: 10c0/8044027a85fa0bd6a6094811c6868fa826b8a2a7cbeee615cb87c79c2c2caf0a208cad5fe45beffab0e020db813d70023eea34b6499c05aadda2f7730d283c8b languageName: node linkType: hard @@ -4374,7 +4374,7 @@ __metadata: unixify: "npm:^1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b + checksum: 10c0/f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b languageName: node linkType: hard @@ -4390,7 +4390,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 + checksum: 10c0/86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 languageName: node linkType: hard @@ -4403,7 +4403,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732 + checksum: 10c0/d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732 languageName: node linkType: hard @@ -4417,7 +4417,7 @@ __metadata: unixify: "npm:^1.0.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 0628719ae10799d6b07d80b2f6228d62afb53aa52ce2f95e222afa63c829fd3ccf1bec68f334c5a00e11f1a517c768528704bb9290a8e303a60e0286258e100d + checksum: 10c0/0628719ae10799d6b07d80b2f6228d62afb53aa52ce2f95e222afa63c829fd3ccf1bec68f334c5a00e11f1a517c768528704bb9290a8e303a60e0286258e100d languageName: node linkType: hard @@ -4431,7 +4431,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786 + checksum: 10c0/1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786 languageName: node linkType: hard @@ -4443,7 +4443,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: cbfcb2c10490a11417991e8b61b8df2eba73a2c576e57cbf2d928902030d4391122536b9442bf042609ec24376b79b8bc6d9117e137dd8db2255ed90613acbc7 + checksum: 10c0/cbfcb2c10490a11417991e8b61b8df2eba73a2c576e57cbf2d928902030d4391122536b9442bf042609ec24376b79b8bc6d9117e137dd8db2255ed90613acbc7 languageName: node linkType: hard @@ -4455,7 +4455,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4 + checksum: 10c0/2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4 languageName: node linkType: hard @@ -4466,7 +4466,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 10be773b0082fe54b9505469a89925f1a5e33f866453b88cd411261951e8718f8720451e07c56cbfb762970b56b9b45c7c748d62afcdcf9414ec64533e94e543 + checksum: 10c0/10be773b0082fe54b9505469a89925f1a5e33f866453b88cd411261951e8718f8720451e07c56cbfb762970b56b9b45c7c748d62afcdcf9414ec64533e94e543 languageName: node linkType: hard @@ -4477,7 +4477,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: db4ac0a2b0c89126ee7746e5615ae003d8665b684b17fb35956a7633fefb0e329a047f32a975cfbdf83f0f5ac4ae09fe469834fd71fdd49d8ed932fda79012fd + checksum: 10c0/db4ac0a2b0c89126ee7746e5615ae003d8665b684b17fb35956a7633fefb0e329a047f32a975cfbdf83f0f5ac4ae09fe469834fd71fdd49d8ed932fda79012fd languageName: node linkType: hard @@ -4505,7 +4505,7 @@ __metadata: yaml-ast-parser: "npm:^0.0.43" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 7d3d8c2ba5fae3372179534ba4f846729e499fb0d5ab1b530751ed26241d5cc29a2a87f510930faaa884d1efbe42e462e246e2d060742a00b80a893b34fa5fa9 + checksum: 10c0/7d3d8c2ba5fae3372179534ba4f846729e499fb0d5ab1b530751ed26241d5cc29a2a87f510930faaa884d1efbe42e462e246e2d060742a00b80a893b34fa5fa9 languageName: node linkType: hard @@ -4518,7 +4518,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 9d74d65da8bf474e256ff0cfb77afb442a968451ded6a92b8348d8ac1bca3b2c13a578ab29ac869d10d53e0101219fe8283d485fff920aa7abcc68fcbbdd9a36 + checksum: 10c0/9d74d65da8bf474e256ff0cfb77afb442a968451ded6a92b8348d8ac1bca3b2c13a578ab29ac869d10d53e0101219fe8283d485fff920aa7abcc68fcbbdd9a36 languageName: node linkType: hard @@ -4531,7 +4531,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 88f483d7fdd68f137f5b5a9e0cb8c4f312cebcc8366155570f08cb8c3f5d805e0db5e780ff8551600b7dfb8840958ff9ec3c5cd5121fd8be01d216ff4f4bdb56 + checksum: 10c0/88f483d7fdd68f137f5b5a9e0cb8c4f312cebcc8366155570f08cb8c3f5d805e0db5e780ff8551600b7dfb8840958ff9ec3c5cd5121fd8be01d216ff4f4bdb56 languageName: node linkType: hard @@ -4545,7 +4545,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3d71117c8d8ed491aa5b988bcdfcc1a7ca8cea8638b37083af2665a0dbb95e1255961a8a43658538ad33b83d621812886a4626ad7a5333d7d9e6c62304b52cb2 + checksum: 10c0/3d71117c8d8ed491aa5b988bcdfcc1a7ca8cea8638b37083af2665a0dbb95e1255961a8a43658538ad33b83d621812886a4626ad7a5333d7d9e6c62304b52cb2 languageName: node linkType: hard @@ -4559,7 +4559,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4 + checksum: 10c0/42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4 languageName: node linkType: hard @@ -4582,7 +4582,7 @@ __metadata: ws: "npm:^8.12.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 963153fde3389f3e44de63c8bca3ce43c85c6ef0f9c5feb56b24d9146f4bf4fef84bebe44a961acc0e0aa0a48081add24684404b83b84bbb9f5e3fcdbc131cae + checksum: 10c0/963153fde3389f3e44de63c8bca3ce43c85c6ef0f9c5feb56b24d9146f4bf4fef84bebe44a961acc0e0aa0a48081add24684404b83b84bbb9f5e3fcdbc131cae languageName: node linkType: hard @@ -4596,7 +4596,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 61c464541fe0b17d26cec83f93b5f4a3af352e10c22878c5449fbea5f22c68f1e0c78ddc0a93f480da42dba80fb41ebfe99920915c389ac132a0217ef808d2bc + checksum: 10c0/61c464541fe0b17d26cec83f93b5f4a3af352e10c22878c5449fbea5f22c68f1e0c78ddc0a93f480da42dba80fb41ebfe99920915c389ac132a0217ef808d2bc languageName: node linkType: hard @@ -4607,7 +4607,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f9bab1370aa91e706abec4c8ea980e15293cb78bd4effba53ad2365dc39d81148db7667b3ef89b35f0a0b0ad58081ffdac4264b7125c69fa8393590ae5025745 + checksum: 10c0/f9bab1370aa91e706abec4c8ea980e15293cb78bd4effba53ad2365dc39d81148db7667b3ef89b35f0a0b0ad58081ffdac4264b7125c69fa8393590ae5025745 languageName: node linkType: hard @@ -4619,7 +4619,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 + checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 languageName: node linkType: hard @@ -4634,7 +4634,7 @@ __metadata: value-or-promise: "npm:^1.0.12" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 6b0aa1a78af8280c7356e2841156a6708a9a147e5991afae9586046ef000b8d08e6d0405dceb10ffbfb0c208a97a527a16d5f04ee2fbf99f6eefe98fe6037292 + checksum: 10c0/6b0aa1a78af8280c7356e2841156a6708a9a147e5991afae9586046ef000b8d08e6d0405dceb10ffbfb0c208a97a527a16d5f04ee2fbf99f6eefe98fe6037292 languageName: node linkType: hard @@ -4643,7 +4643,7 @@ __metadata: resolution: "@graphql-typed-document-node/core@npm:3.2.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c + checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c languageName: node linkType: hard @@ -4652,7 +4652,7 @@ __metadata: resolution: "@graphql-yoga/logger@npm:2.0.0" dependencies: tslib: "npm:^2.5.2" - checksum: 1489588485c9974aba66c0e5002a1251085771b0703ac1aaa2a3df93b895fc57f7cf6203680ff453b304d4ba438ea6a4cc9999d13a4bf6fd5128f3f088ff927b + checksum: 10c0/1489588485c9974aba66c0e5002a1251085771b0703ac1aaa2a3df93b895fc57f7cf6203680ff453b304d4ba438ea6a4cc9999d13a4bf6fd5128f3f088ff927b languageName: node linkType: hard @@ -4664,7 +4664,7 @@ __metadata: peerDependencies: graphql: ^15.2.0 || ^16.0.0 graphql-yoga: ^5.1.1 - checksum: 0f6f490e5830d52ebab964599558475de4b1bb2191fcc987fa8914b5550bca55e624e319670674a01403ef963449e7e99fea699259519f65726636fe587193ea + checksum: 10c0/0f6f490e5830d52ebab964599558475de4b1bb2191fcc987fa8914b5550bca55e624e319670674a01403ef963449e7e99fea699259519f65726636fe587193ea languageName: node linkType: hard @@ -4676,7 +4676,7 @@ __metadata: peerDependencies: graphql: ^15.2.0 || ^16.0.0 graphql-yoga: ^5.1.1 - checksum: e4adfbce8b0c50be9f384df5477a285615e2a54c602b57cbc4448d4b0874d2052892b6cddd6a96d85a75820683ebdfb22b56db08ce61a34e080e0e7f39c63297 + checksum: 10c0/e4adfbce8b0c50be9f384df5477a285615e2a54c602b57cbc4448d4b0874d2052892b6cddd6a96d85a75820683ebdfb22b56db08ce61a34e080e0e7f39c63297 languageName: node linkType: hard @@ -4687,7 +4687,7 @@ __metadata: "@graphql-tools/utils": ^10.0.0 graphql: ^15.2.0 || ^16.0.0 graphql-yoga: ^5.1.1 - checksum: 19c00017f75df4aed065d30e67da5728a1ef6ee852dd7f30c052628b465e8d3e1a24c4ed70995d6ca2018b750649cea5e5902eadf0c75a2c65c7e487dd295169 + checksum: 10c0/19c00017f75df4aed065d30e67da5728a1ef6ee852dd7f30c052628b465e8d3e1a24c4ed70995d6ca2018b750649cea5e5902eadf0c75a2c65c7e487dd295169 languageName: node linkType: hard @@ -4699,7 +4699,7 @@ __metadata: "@whatwg-node/events": "npm:^0.1.0" peerDependencies: ioredis: ^5.0.6 - checksum: 16035ed1c10b7f8a582edaa99a3d1fb740ea81e73203a176f9e5115144165a3b8661cdb00d7e7a3572100af65daac0ff3f6d565c897a9244d0e0e7d9d1f9fcdd + checksum: 10c0/16035ed1c10b7f8a582edaa99a3d1fb740ea81e73203a176f9e5115144165a3b8661cdb00d7e7a3572100af65daac0ff3f6d565c897a9244d0e0e7d9d1f9fcdd languageName: node linkType: hard @@ -4711,7 +4711,7 @@ __metadata: "@repeaterjs/repeater": "npm:^3.0.4" "@whatwg-node/events": "npm:^0.1.0" tslib: "npm:^2.5.2" - checksum: 05e2f5cb23ea2b3cfe3737cf13fb98ebb3ded8a6a8239a170a6bd65b443109595e1bf2bbef94e3b18438b63dae18761bce4225eb437420bae651131457ede8b5 + checksum: 10c0/05e2f5cb23ea2b3cfe3737cf13fb98ebb3ded8a6a8239a170a6bd65b443109595e1bf2bbef94e3b18438b63dae18761bce4225eb437420bae651131457ede8b5 languageName: node linkType: hard @@ -4721,7 +4721,7 @@ __metadata: dependencies: "@repeaterjs/repeater": "npm:^3.0.4" tslib: "npm:^2.5.2" - checksum: 563c26e4ef8f116e3b2991651acc2a80a37e1c53c6df4159e46e948b226624fc3c414663deef063fa19a7a63bc6a2d2ed8b950782b4d57f34eea775e3312d61c + checksum: 10c0/563c26e4ef8f116e3b2991651acc2a80a37e1c53c6df4159e46e948b226624fc3c414663deef063fa19a7a63bc6a2d2ed8b950782b4d57f34eea775e3312d61c languageName: node linkType: hard @@ -4731,7 +4731,7 @@ __metadata: dependencies: "@grpc/proto-loader": "npm:^0.7.0" "@types/node": "npm:>=12.12.47" - checksum: 296c415afedc2ae27e3741472df8520223e97d10c63a2a9fc482357e3f735430b4fc6e493ccf7efcc440ec7f752ce9f041b195d3b35a741f356a9e594113d175 + checksum: 10c0/296c415afedc2ae27e3741472df8520223e97d10c63a2a9fc482357e3f735430b4fc6e493ccf7efcc440ec7f752ce9f041b195d3b35a741f356a9e594113d175 languageName: node linkType: hard @@ -4741,7 +4741,7 @@ __metadata: dependencies: "@grpc/proto-loader": "npm:^0.7.8" "@types/node": "npm:>=12.12.47" - checksum: 107fb38da26e68ba05f54a694cac2d9541bec2bbeacbbc981f766541587ab7ba06ae623fea7b732403c7c4500d157608fe9caad4c28b685640fe13332a77240a + checksum: 10c0/107fb38da26e68ba05f54a694cac2d9541bec2bbeacbbc981f766541587ab7ba06ae623fea7b732403c7c4500d157608fe9caad4c28b685640fe13332a77240a languageName: node linkType: hard @@ -4755,14 +4755,14 @@ __metadata: yargs: "npm:^17.7.2" bin: proto-loader-gen-types: build/bin/proto-loader-gen-types.js - checksum: 92aca1b722aaf9a06c8f09d712bdaa5191b39acd5d06cde7ea538d13e21ce49e83d0b64d7c80b900bbf453251a582a56e2eb5a7188a90194e7eb59ba73ef9cf7 + checksum: 10c0/92aca1b722aaf9a06c8f09d712bdaa5191b39acd5d06cde7ea538d13e21ce49e83d0b64d7c80b900bbf453251a582a56e2eb5a7188a90194e7eb59ba73ef9cf7 languageName: node linkType: hard "@hexagon/base64@npm:^1.1.25": version: 1.1.26 resolution: "@hexagon/base64@npm:1.1.26" - checksum: 3c334f179961871476bcf1b58e12773b97dcf1697dfca93895275a1bf4e0485b02ba91a4f1aa32581fb1743fcac96874609c2f8b3a7c6e68ba3324c4d79e0311 + checksum: 10c0/3c334f179961871476bcf1b58e12773b97dcf1697dfca93895275a1bf4e0485b02ba91a4f1aa32581fb1743fcac96874609c2f8b3a7c6e68ba3324c4d79e0311 languageName: node linkType: hard @@ -4773,42 +4773,42 @@ __metadata: "@humanwhocodes/object-schema": "npm:^2.0.1" debug: "npm:^4.1.1" minimatch: "npm:^3.0.5" - checksum: d76ca802d853366094d0e98ff0d0994117fc8eff96649cd357b15e469e428228f597cd2e929d54ab089051684949955f16ee905bb19f7b2f0446fb377157be7a + checksum: 10c0/d76ca802d853366094d0e98ff0d0994117fc8eff96649cd357b15e469e428228f597cd2e929d54ab089051684949955f16ee905bb19f7b2f0446fb377157be7a languageName: node linkType: hard "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" - checksum: 909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 languageName: node linkType: hard "@humanwhocodes/object-schema@npm:^2.0.1": version: 2.0.1 resolution: "@humanwhocodes/object-schema@npm:2.0.1" - checksum: 9dba24e59fdb4041829d92b693aacb778add3b6f612aaa9c0774f3b650c11a378cc64f042a59da85c11dae33df456580a3c36837b953541aed6ff94294f97fac + checksum: 10c0/9dba24e59fdb4041829d92b693aacb778add3b6f612aaa9c0774f3b650c11a378cc64f042a59da85c11dae33df456580a3c36837b953541aed6ff94294f97fac languageName: node linkType: hard "@hutson/parse-repository-url@npm:^3.0.0": version: 3.0.2 resolution: "@hutson/parse-repository-url@npm:3.0.2" - checksum: d9197757ecad2df18d29d3e1d1fe0716d458fd88b849c71cbec9e78239f911074c97e8d764dfd8ed890431c1137e52dd7a337207fd65be20ce0784f7860ae4d1 + checksum: 10c0/d9197757ecad2df18d29d3e1d1fe0716d458fd88b849c71cbec9e78239f911074c97e8d764dfd8ed890431c1137e52dd7a337207fd65be20ce0784f7860ae4d1 languageName: node linkType: hard "@iarna/toml@npm:2.2.5": version: 2.2.5 resolution: "@iarna/toml@npm:2.2.5" - checksum: d095381ad4554aca233b7cf5a91f243ef619e5e15efd3157bc640feac320545450d14b394aebbf6f02a2047437ced778ae598d5879a995441ab7b6c0b2c2f201 + checksum: 10c0/d095381ad4554aca233b7cf5a91f243ef619e5e15efd3157bc640feac320545450d14b394aebbf6f02a2047437ced778ae598d5879a995441ab7b6c0b2c2f201 languageName: node linkType: hard "@ioredis/commands@npm:^1.1.1": version: 1.2.0 resolution: "@ioredis/commands@npm:1.2.0" - checksum: a5d3c29dd84d8a28b7c67a441ac1715cbd7337a7b88649c0f17c345d89aa218578d2b360760017c48149ef8a70f44b051af9ac0921a0622c2b479614c4f65b36 + checksum: 10c0/a5d3c29dd84d8a28b7c67a441ac1715cbd7337a7b88649c0f17c345d89aa218578d2b360760017c48149ef8a70f44b051af9ac0921a0622c2b479614c4f65b36 languageName: node linkType: hard @@ -4822,14 +4822,14 @@ __metadata: strip-ansi-cjs: "npm:strip-ansi@^6.0.1" wrap-ansi: "npm:^8.1.0" wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" - checksum: b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e languageName: node linkType: hard "@isaacs/string-locale-compare@npm:^1.1.0": version: 1.1.0 resolution: "@isaacs/string-locale-compare@npm:1.1.0" - checksum: d67226ff7ac544a495c77df38187e69e0e3a0783724777f86caadafb306e2155dc3b5787d5927916ddd7fb4a53561ac8f705448ac3235d18ea60da5854829fdf + checksum: 10c0/d67226ff7ac544a495c77df38187e69e0e3a0783724777f86caadafb306e2155dc3b5787d5927916ddd7fb4a53561ac8f705448ac3235d18ea60da5854829fdf languageName: node linkType: hard @@ -4842,14 +4842,14 @@ __metadata: get-package-type: "npm:^0.1.0" js-yaml: "npm:^3.13.1" resolve-from: "npm:^5.0.0" - checksum: dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 languageName: node linkType: hard "@istanbuljs/schema@npm:^0.1.2": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" - checksum: 61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a languageName: node linkType: hard @@ -4863,7 +4863,7 @@ __metadata: jest-message-util: "npm:^29.7.0" jest-util: "npm:^29.7.0" slash: "npm:^3.0.0" - checksum: 7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c languageName: node linkType: hard @@ -4904,7 +4904,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 languageName: node linkType: hard @@ -4916,7 +4916,7 @@ __metadata: "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" jest-mock: "npm:^29.7.0" - checksum: c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 languageName: node linkType: hard @@ -4925,7 +4925,7 @@ __metadata: resolution: "@jest/expect-utils@npm:29.7.0" dependencies: jest-get-type: "npm:^29.6.3" - checksum: 60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a languageName: node linkType: hard @@ -4935,7 +4935,7 @@ __metadata: dependencies: expect: "npm:^29.7.0" jest-snapshot: "npm:^29.7.0" - checksum: b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e languageName: node linkType: hard @@ -4949,7 +4949,7 @@ __metadata: jest-message-util: "npm:^29.7.0" jest-mock: "npm:^29.7.0" jest-util: "npm:^29.7.0" - checksum: cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c languageName: node linkType: hard @@ -4961,7 +4961,7 @@ __metadata: "@jest/expect": "npm:^29.7.0" "@jest/types": "npm:^29.6.3" jest-mock: "npm:^29.7.0" - checksum: a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea languageName: node linkType: hard @@ -4998,7 +4998,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 languageName: node linkType: hard @@ -5007,7 +5007,7 @@ __metadata: resolution: "@jest/schemas@npm:29.6.3" dependencies: "@sinclair/typebox": "npm:^0.27.8" - checksum: b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be languageName: node linkType: hard @@ -5018,7 +5018,7 @@ __metadata: "@jridgewell/trace-mapping": "npm:^0.3.18" callsites: "npm:^3.0.0" graceful-fs: "npm:^4.2.9" - checksum: a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 languageName: node linkType: hard @@ -5030,7 +5030,7 @@ __metadata: "@jest/types": "npm:^29.6.3" "@types/istanbul-lib-coverage": "npm:^2.0.0" collect-v8-coverage: "npm:^1.0.0" - checksum: 7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 languageName: node linkType: hard @@ -5042,7 +5042,7 @@ __metadata: graceful-fs: "npm:^4.2.9" jest-haste-map: "npm:^29.7.0" slash: "npm:^3.0.0" - checksum: 593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b languageName: node linkType: hard @@ -5065,7 +5065,7 @@ __metadata: pirates: "npm:^4.0.4" slash: "npm:^3.0.0" write-file-atomic: "npm:^4.0.2" - checksum: 7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 languageName: node linkType: hard @@ -5079,7 +5079,7 @@ __metadata: "@types/node": "npm:*" "@types/yargs": "npm:^17.0.8" chalk: "npm:^4.0.0" - checksum: ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 languageName: node linkType: hard @@ -5090,21 +5090,21 @@ __metadata: "@jridgewell/set-array": "npm:^1.0.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 + checksum: 10c0/376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.1 resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: 0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf + checksum: 10c0/0dbc9e29bc640bbbdc5b9876d2859c69042bfcf1423c1e6421bcca53e826660bff4e41c7d4bcb8dbea696404231a6f902f76ba41835d049e20f2dd6cffb713bf languageName: node linkType: hard "@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab + checksum: 10c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab languageName: node linkType: hard @@ -5114,14 +5114,14 @@ __metadata: dependencies: "@jridgewell/gen-mapping": "npm:^0.3.0" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 + checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 languageName: node linkType: hard "@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: 0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 languageName: node linkType: hard @@ -5131,7 +5131,7 @@ __metadata: dependencies: "@jridgewell/resolve-uri": "npm:^3.0.3" "@jridgewell/sourcemap-codec": "npm:^1.4.10" - checksum: fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b languageName: node linkType: hard @@ -5141,7 +5141,7 @@ __metadata: dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 18cf19f88e2792c1c91515f2b629aae05f3cdbb2e60c3886e16e80725234ce26dd10144c4981c05d9366e7094498c0b4fe5c1a89f4a730d7376a4ba4af448149 + checksum: 10c0/18cf19f88e2792c1c91515f2b629aae05f3cdbb2e60c3886e16e80725234ce26dd10144c4981c05d9366e7094498c0b4fe5c1a89f4a730d7376a4ba4af448149 languageName: node linkType: hard @@ -5150,21 +5150,21 @@ __metadata: resolution: "@jsdoc/salty@npm:0.2.5" dependencies: lodash: "npm:^4.17.21" - checksum: ae2441ea2f11c19cfc8a65a0c25ac0ca2699813732d0b95571f646100a535507a8c5c68f5105e215b331a4445d3287da451fdfff65f8e8d4740c260aaa416b65 + checksum: 10c0/ae2441ea2f11c19cfc8a65a0c25ac0ca2699813732d0b95571f646100a535507a8c5c68f5105e215b331a4445d3287da451fdfff65f8e8d4740c260aaa416b65 languageName: node linkType: hard "@juggle/resize-observer@npm:^3.3.1": version: 3.4.0 resolution: "@juggle/resize-observer@npm:3.4.0" - checksum: 12930242357298c6f2ad5d4ec7cf631dfb344ca7c8c830ab7f64e6ac11eb1aae486901d8d880fd08fb1b257800c160a0da3aee1e7ed9adac0ccbb9b7c5d93347 + checksum: 10c0/12930242357298c6f2ad5d4ec7cf631dfb344ca7c8c830ab7f64e6ac11eb1aae486901d8d880fd08fb1b257800c160a0da3aee1e7ed9adac0ccbb9b7c5d93347 languageName: node linkType: hard "@leichtgewicht/ip-codec@npm:^2.0.1": version: 2.0.4 resolution: "@leichtgewicht/ip-codec@npm:2.0.4" - checksum: 3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b + checksum: 10c0/3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b languageName: node linkType: hard @@ -5236,14 +5236,14 @@ __metadata: write-pkg: "npm:4.0.0" yargs: "npm:17.7.2" yargs-parser: "npm:21.1.1" - checksum: 1569183c38fb627f80f3b953119a07d12bdfd7a511899d0608d5ce27fd386bcf1a66f869d00e2bf3dc82a1e0e27f09b3f95b194a5b8ac4e213f4e8b04fed1bac + checksum: 10c0/1569183c38fb627f80f3b953119a07d12bdfd7a511899d0608d5ce27fd386bcf1a66f869d00e2bf3dc82a1e0e27f09b3f95b194a5b8ac4e213f4e8b04fed1bac languageName: node linkType: hard "@lukeed/ms@npm:^2.0.1": version: 2.0.1 resolution: "@lukeed/ms@npm:2.0.1" - checksum: 06a5c9985194fb5e5e3ea60766589c808efee61661d85f869f92432bfb2fa5e5326b56b99df4c5d900bf4e9ce861791db058cae89a1d02a6be0638d9e804644a + checksum: 10c0/06a5c9985194fb5e5e3ea60766589c808efee61661d85f869f92432bfb2fa5e5326b56b99df4c5d900bf4e9ce861791db058cae89a1d02a6be0638d9e804644a languageName: node linkType: hard @@ -5255,7 +5255,7 @@ __metadata: "@types/react": "npm:>=16" peerDependencies: react: ">=16" - checksum: 6d647115703dbe258f7fe372499fa8c6fe17a053ff0f2a208111c9973a71ae738a0ed376770445d39194d217e00e1a015644b24f32c2f7cb4f57988de0649b15 + checksum: 10c0/6d647115703dbe258f7fe372499fa8c6fe17a053ff0f2a208111c9973a71ae738a0ed376770445d39194d217e00e1a015644b24f32c2f7cb4f57988de0649b15 languageName: node linkType: hard @@ -5264,7 +5264,7 @@ __metadata: resolution: "@mrleebo/prisma-ast@npm:0.5.2" dependencies: chevrotain: "npm:^10.4.2" - checksum: 155795a245d885d6cd3edac43a3eb57c8ba5c178d71b7595e278c3f7879f78511b9796d3b13e37c228cfdba9621715a2af450611b68aa4d58739fbe129e8200d + checksum: 10c0/155795a245d885d6cd3edac43a3eb57c8ba5c178d71b7595e278c3f7879f78511b9796d3b13e37c228cfdba9621715a2af450611b68aa4d58739fbe129e8200d languageName: node linkType: hard @@ -5274,7 +5274,7 @@ __metadata: dependencies: "@types/set-cookie-parser": "npm:^2.4.0" set-cookie-parser: "npm:^2.4.6" - checksum: f950062538d431674d581309cf19884fc4d3f57e2a276164cac0c9a3250071d42464ba7825d13be14c703ca5a912d62a62626f4a068d8f36d1629dbb63bde740 + checksum: 10c0/f950062538d431674d581309cf19884fc4d3f57e2a276164cac0c9a3250071d42464ba7825d13be14c703ca5a912d62a62626f4a068d8f36d1629dbb63bde740 languageName: node linkType: hard @@ -5290,7 +5290,7 @@ __metadata: outvariant: "npm:^1.2.1" strict-event-emitter: "npm:^0.2.4" web-encoding: "npm:^1.1.5" - checksum: 0343a93711b60c321c40733d6bf2720a736d8e0730f5d0d9916ee4a24abfcfca4a83d1e4b2e21c3affef4fc61f04588104be002fbc8258dc4b0d202c384ade33 + checksum: 10c0/0343a93711b60c321c40733d6bf2720a736d8e0730f5d0d9916ee4a24abfcfca4a83d1e4b2e21c3affef4fc61f04588104be002fbc8258dc4b0d202c384ade33 languageName: node linkType: hard @@ -5301,7 +5301,7 @@ __metadata: "@repeaterjs/repeater": "npm:^3.0.4" peerDependencies: graphql: ^15.4.0 || ^16.0.0 - checksum: a7ee5825a277e5240a1908cf830c3d55f114a6d8fec520dc155081f170241c50b92309169a6cc79f66087b97f0aaad8895573b2c346fd7671402c6ce3dd81452 + checksum: 10c0/a7ee5825a277e5240a1908cf830c3d55f114a6d8fec520dc155081f170241c50b92309169a6cc79f66087b97f0aaad8895573b2c346fd7671402c6ce3dd81452 languageName: node linkType: hard @@ -5310,7 +5310,7 @@ __metadata: resolution: "@n1ru4l/graphql-live-query@npm:0.10.0" peerDependencies: graphql: ^15.4.0 || ^16.0.0 - checksum: 972bea6d6e4dcc443e15c19f2da373fc01f7e6c8d366569075dc89dc94e55da5a4029d0e8cff289d208c43edcca5e112fe286c6601717ab42d428fc3d5c2dfae + checksum: 10c0/972bea6d6e4dcc443e15c19f2da373fc01f7e6c8d366569075dc89dc94e55da5a4029d0e8cff289d208c43edcca5e112fe286c6601717ab42d428fc3d5c2dfae languageName: node linkType: hard @@ -5323,7 +5323,7 @@ __metadata: "@repeaterjs/repeater": "npm:^3.0.4" peerDependencies: graphql: ^15.4.0 || ^16.0.0 - checksum: c2b4c1c09fa68ac7bd776166a86d361ac6e2659028391e7c3cca25943e966d1d035271141e28d0a519d50409cc07728df163d01ee26cacf403f59a6dcf2d4243 + checksum: 10c0/c2b4c1c09fa68ac7bd776166a86d361ac6e2659028391e7c3cca25943e966d1d035271141e28d0a519d50409cc07728df163d01ee26cacf403f59a6dcf2d4243 languageName: node linkType: hard @@ -5334,14 +5334,14 @@ __metadata: gunzip-maybe: "npm:^1.4.2" pump: "npm:^3.0.0" tar-fs: "npm:^2.1.1" - checksum: d66e76c6c990745d691c85d1dfa7f3dfd181405bb52c295baf4d1838b847d40c686e24602ea0ab1cdeb14d409db59f6bb9e2f96f56fe53da275da9cccf778e27 + checksum: 10c0/d66e76c6c990745d691c85d1dfa7f3dfd181405bb52c295baf4d1838b847d40c686e24602ea0ab1cdeb14d409db59f6bb9e2f96f56fe53da275da9cccf778e27 languageName: node linkType: hard "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": version: 2.1.8-no-fsevents.3 resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" - checksum: 27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 + checksum: 10c0/27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 languageName: node linkType: hard @@ -5350,7 +5350,7 @@ __metadata: resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" dependencies: eslint-scope: "npm:5.1.1" - checksum: 75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 + checksum: 10c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 languageName: node linkType: hard @@ -5360,14 +5360,14 @@ __metadata: dependencies: "@nodelib/fs.stat": "npm:2.0.5" run-parallel: "npm:^1.1.9" - checksum: 732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb languageName: node linkType: hard "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" - checksum: 88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d languageName: node linkType: hard @@ -5377,7 +5377,7 @@ __metadata: dependencies: "@nodelib/fs.scandir": "npm:2.1.5" fastq: "npm:^1.6.0" - checksum: db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 languageName: node linkType: hard @@ -5390,7 +5390,7 @@ __metadata: https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" socks-proxy-agent: "npm:^8.0.1" - checksum: 7b89590598476dda88e79c473766b67c682aae6e0ab0213491daa6083dcc0c171f86b3868f5506f22c09aa5ea69ad7dfb78f4bf39a8dca375d89a42f408645b3 + checksum: 10c0/7b89590598476dda88e79c473766b67c682aae6e0ab0213491daa6083dcc0c171f86b3868f5506f22c09aa5ea69ad7dfb78f4bf39a8dca375d89a42f408645b3 languageName: node linkType: hard @@ -5433,7 +5433,7 @@ __metadata: walk-up-path: "npm:^3.0.1" bin: arborist: bin/index.js - checksum: 075f9da60c835067af9e0b2b01955feef822cc6a14cc8fd40ef16ca99e2ea557f19002f7540876521eccf1196b81b03c4644c96df3d0025f3265f679f4025fd3 + checksum: 10c0/075f9da60c835067af9e0b2b01955feef822cc6a14cc8fd40ef16ca99e2ea557f19002f7540876521eccf1196b81b03c4644c96df3d0025f3265f679f4025fd3 languageName: node linkType: hard @@ -5442,7 +5442,7 @@ __metadata: resolution: "@npmcli/fs@npm:3.1.0" dependencies: semver: "npm:^7.3.5" - checksum: 162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e languageName: node linkType: hard @@ -5458,7 +5458,7 @@ __metadata: promise-retry: "npm:^2.0.1" semver: "npm:^7.3.5" which: "npm:^4.0.0" - checksum: dab301d06f037cf92b66547c4a702901c4efd42be470ab72457cc2f9617f47aca0bb59a44566cf65c1170d6489bd58be96b87269f83782b63323272059a9e4e2 + checksum: 10c0/dab301d06f037cf92b66547c4a702901c4efd42be470ab72457cc2f9617f47aca0bb59a44566cf65c1170d6489bd58be96b87269f83782b63323272059a9e4e2 languageName: node linkType: hard @@ -5470,7 +5470,7 @@ __metadata: npm-normalize-package-bin: "npm:^3.0.0" bin: installed-package-contents: lib/index.js - checksum: 03efadb365997e3b54d1d1ea30ef3555729a68939ab2b7b7800a4a2750afb53da222f52be36bd7c44950434c3e26cbe7be28dac093efdf7b1bbe9e025ab62a07 + checksum: 10c0/03efadb365997e3b54d1d1ea30ef3555729a68939ab2b7b7800a4a2750afb53da222f52be36bd7c44950434c3e26cbe7be28dac093efdf7b1bbe9e025ab62a07 languageName: node linkType: hard @@ -5482,7 +5482,7 @@ __metadata: glob: "npm:^10.2.2" minimatch: "npm:^9.0.0" read-package-json-fast: "npm:^3.0.0" - checksum: caeb5f911d9b7ae0be01436442e6ec6b25aef750fe923de7a653eb62999d35b9f8be67c3f856790350ac86d9cea4a52532859b621eea81738f576302ecdd7475 + checksum: 10c0/caeb5f911d9b7ae0be01436442e6ec6b25aef750fe923de7a653eb62999d35b9f8be67c3f856790350ac86d9cea4a52532859b621eea81738f576302ecdd7475 languageName: node linkType: hard @@ -5494,21 +5494,21 @@ __metadata: json-parse-even-better-errors: "npm:^3.0.0" pacote: "npm:^17.0.0" semver: "npm:^7.3.5" - checksum: ae9084c333a678f3c1f2e30fefbd4cae25b5b5d0b1c27c3c3f92919cf1da85da24c2b3f3112bd53a184f711b2c165c4d709cd6283f5662cefb80903265ca7c81 + checksum: 10c0/ae9084c333a678f3c1f2e30fefbd4cae25b5b5d0b1c27c3c3f92919cf1da85da24c2b3f3112bd53a184f711b2c165c4d709cd6283f5662cefb80903265ca7c81 languageName: node linkType: hard "@npmcli/name-from-folder@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/name-from-folder@npm:2.0.0" - checksum: 1aa551771d98ab366d4cb06b33efd3bb62b609942f6d9c3bb667c10e5bb39a223d3e330022bc980a44402133e702ae67603862099ac8254dad11f90e77409827 + checksum: 10c0/1aa551771d98ab366d4cb06b33efd3bb62b609942f6d9c3bb667c10e5bb39a223d3e330022bc980a44402133e702ae67603862099ac8254dad11f90e77409827 languageName: node linkType: hard "@npmcli/node-gyp@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/node-gyp@npm:3.0.0" - checksum: 5d0ac17dacf2dd6e45312af2c1ae2749bb0730fcc82da101c37d3a4fd963a5e1c5d39781e5e1e5e5828df4ab1ad4e3fdbab1d69b7cd0abebad9983efb87df985 + checksum: 10c0/5d0ac17dacf2dd6e45312af2c1ae2749bb0730fcc82da101c37d3a4fd963a5e1c5d39781e5e1e5e5828df4ab1ad4e3fdbab1d69b7cd0abebad9983efb87df985 languageName: node linkType: hard @@ -5523,7 +5523,7 @@ __metadata: normalize-package-data: "npm:^6.0.0" proc-log: "npm:^3.0.0" semver: "npm:^7.5.3" - checksum: 489b0e42d05c1c3c43ba94b6435c062ae28bee3e8ebf3b8e0977fe4ab8eb37fe6ab019203b38f39b54a592d85df2a602c0d700fc23adc630f4e7bfb0207a8a9e + checksum: 10c0/489b0e42d05c1c3c43ba94b6435c062ae28bee3e8ebf3b8e0977fe4ab8eb37fe6ab019203b38f39b54a592d85df2a602c0d700fc23adc630f4e7bfb0207a8a9e languageName: node linkType: hard @@ -5532,7 +5532,7 @@ __metadata: resolution: "@npmcli/promise-spawn@npm:7.0.0" dependencies: which: "npm:^4.0.0" - checksum: a8d310d4f0f033ea8be19e956db35dd11d1f80774e85ba97eafb3b41f7f92813ef3ae29215a14028dacf6b4d3b2357ae5935a0899c33546dd24bb629a6d5c1e8 + checksum: 10c0/a8d310d4f0f033ea8be19e956db35dd11d1f80774e85ba97eafb3b41f7f92813ef3ae29215a14028dacf6b4d3b2357ae5935a0899c33546dd24bb629a6d5c1e8 languageName: node linkType: hard @@ -5541,7 +5541,7 @@ __metadata: resolution: "@npmcli/query@npm:3.0.1" dependencies: postcss-selector-parser: "npm:^6.0.10" - checksum: 497f03887121df13dbbc7a008772708746ecb9d8b9dbb1d8a8cdc5eb03ff6dbce0e78cbc48102e7cd3d2f3abc2faf22fd5348bb3c33efd13e2077faf8d71efde + checksum: 10c0/497f03887121df13dbbc7a008772708746ecb9d8b9dbb1d8a8cdc5eb03ff6dbce0e78cbc48102e7cd3d2f3abc2faf22fd5348bb3c33efd13e2077faf8d71efde languageName: node linkType: hard @@ -5554,7 +5554,7 @@ __metadata: node-gyp: "npm:^10.0.0" read-package-json-fast: "npm:^3.0.0" which: "npm:^4.0.0" - checksum: 5b2b92d9dcedf9f0263861288f9ab9dbb54474bb326578e5fed635994ccdc31d56084c2768475652761cb88f88273bc04db79d2d5a3a35b91389c6fb9d272880 + checksum: 10c0/5b2b92d9dcedf9f0263861288f9ab9dbb54474bb326578e5fed635994ccdc31d56084c2768475652761cb88f88273bc04db79d2d5a3a35b91389c6fb9d272880 languageName: node linkType: hard @@ -5563,7 +5563,7 @@ __metadata: resolution: "@nrwl/devkit@npm:17.2.4" dependencies: "@nx/devkit": "npm:17.2.4" - checksum: d667552390970200385a25f1389c93bce6300b288c835b77b6c7758cc7d6e31b15257bd460a38f8aa62319ad0eb7d7fbbf2d63391366ec550e434f896565e840 + checksum: 10c0/d667552390970200385a25f1389c93bce6300b288c835b77b6c7758cc7d6e31b15257bd460a38f8aa62319ad0eb7d7fbbf2d63391366ec550e434f896565e840 languageName: node linkType: hard @@ -5575,7 +5575,7 @@ __metadata: tslib: "npm:^2.3.0" bin: tao: index.js - checksum: d98361141704d83487f2401116cafa7348acb30a1637336ddc471fdc42313503280767777c9752e91df0e56d3b7491251894172817e0e5ee514fe44d3ab2bf09 + checksum: 10c0/d98361141704d83487f2401116cafa7348acb30a1637336ddc471fdc42313503280767777c9752e91df0e56d3b7491251894172817e0e5ee514fe44d3ab2bf09 languageName: node linkType: hard @@ -5592,7 +5592,7 @@ __metadata: tslib: "npm:^2.3.0" peerDependencies: nx: ">= 16 <= 18" - checksum: 81603cdefbc5a44cb560b27b97134760196dd21c781d01559c05526cb8f2803981ce20a5e2f59dcd363d225bd58e4d943a7d5066c07c0d6bd039f5aa1de695c5 + checksum: 10c0/81603cdefbc5a44cb560b27b97134760196dd21c781d01559c05526cb8f2803981ce20a5e2f59dcd363d225bd58e4d943a7d5066c07c0d6bd039f5aa1de695c5 languageName: node linkType: hard @@ -5677,7 +5677,7 @@ __metadata: "@octokit/plugin-paginate-rest": "npm:^9.0.0" "@octokit/types": "npm:^12.0.0" "@octokit/webhooks": "npm:^12.0.4" - checksum: 92b4193bfbe0b12196329f7b7d1d3f038575eb54680a95a68a70b62f5ecaa23de9a240a7ad64711f1639266f37c80f09a8975ae8a754fd680384dc1410ae477b + checksum: 10c0/92b4193bfbe0b12196329f7b7d1d3f038575eb54680a95a68a70b62f5ecaa23de9a240a7ad64711f1639266f37c80f09a8975ae8a754fd680384dc1410ae477b languageName: node linkType: hard @@ -5694,7 +5694,7 @@ __metadata: lru-cache: "npm:^10.0.0" universal-github-app-jwt: "npm:^1.1.1" universal-user-agent: "npm:^6.0.0" - checksum: b9dfbeaf90c5e999461701ce66f26a937a3acc7ceed81b0aaaffae181630086cf4cd7e82c6ecff7f025ce75726cd890ca116f7f5c5020e9786a4deb75af50c45 + checksum: 10c0/b9dfbeaf90c5e999461701ce66f26a937a3acc7ceed81b0aaaffae181630086cf4cd7e82c6ecff7f025ce75726cd890ca116f7f5c5020e9786a4deb75af50c45 languageName: node linkType: hard @@ -5709,7 +5709,7 @@ __metadata: "@types/btoa-lite": "npm:^1.0.0" btoa-lite: "npm:^1.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 721bc0bfe31263f68a2f8c6d9d19e55853535f8d08efd2460e33f33b8a0c40ece943018b180635ffad34006fa45e6721b2dbc644675d4a3a8fb0222b0775e831 + checksum: 10c0/721bc0bfe31263f68a2f8c6d9d19e55853535f8d08efd2460e33f33b8a0c40ece943018b180635ffad34006fa45e6721b2dbc644675d4a3a8fb0222b0775e831 languageName: node linkType: hard @@ -5721,7 +5721,7 @@ __metadata: "@octokit/request": "npm:^8.0.0" "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 9e969de43e5238bef62def6897dddf5c544fce2e582e3ce8ae2889d6ac9de954930e360b526d7f94c11a093709faff8ab4c77039ab218dde679865b09d85baf5 + checksum: 10c0/9e969de43e5238bef62def6897dddf5c544fce2e582e3ce8ae2889d6ac9de954930e360b526d7f94c11a093709faff8ab4c77039ab218dde679865b09d85baf5 languageName: node linkType: hard @@ -5735,21 +5735,21 @@ __metadata: "@octokit/types": "npm:^12.0.0" btoa-lite: "npm:^1.0.0" universal-user-agent: "npm:^6.0.0" - checksum: e887674a65a6083b4ad1d4ab9f48da71d3b386d5eba3c9715b6d9bc2b3837217d9f307c5a2da568941ff138a55b8113c077e952ca8d0295e96de895a521d6a6f + checksum: 10c0/e887674a65a6083b4ad1d4ab9f48da71d3b386d5eba3c9715b6d9bc2b3837217d9f307c5a2da568941ff138a55b8113c077e952ca8d0295e96de895a521d6a6f languageName: node linkType: hard "@octokit/auth-token@npm:^3.0.0": version: 3.0.4 resolution: "@octokit/auth-token@npm:3.0.4" - checksum: abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 + checksum: 10c0/abdf5e2da36344de9727c70ba782d58004f5ae1da0f65fa9bc9216af596ef23c0e4675f386df2f6886806612558091d603564051b693b0ad1986aa6160b7a231 languageName: node linkType: hard "@octokit/auth-token@npm:^4.0.0": version: 4.0.0 resolution: "@octokit/auth-token@npm:4.0.0" - checksum: 57acaa6c394c5abab2f74e8e1dcf4e7a16b236f713c77a54b8f08e2d14114de94b37946259e33ec2aab0566b26f724c2b71d2602352b59e541a9854897618f3c + checksum: 10c0/57acaa6c394c5abab2f74e8e1dcf4e7a16b236f713c77a54b8f08e2d14114de94b37946259e33ec2aab0566b26f724c2b71d2602352b59e541a9854897618f3c languageName: node linkType: hard @@ -5759,7 +5759,7 @@ __metadata: dependencies: "@octokit/request-error": "npm:^5.0.0" "@octokit/types": "npm:^12.0.0" - checksum: c9cad429981a34021ec9f1fdc238c39eba36807683859a3bffb9dd66abf1ce016c9a2ff31fe09313458e59b37f8fa91522c0e34a1daecefdabcdf23a494fbcc2 + checksum: 10c0/c9cad429981a34021ec9f1fdc238c39eba36807683859a3bffb9dd66abf1ce016c9a2ff31fe09313458e59b37f8fa91522c0e34a1daecefdabcdf23a494fbcc2 languageName: node linkType: hard @@ -5774,7 +5774,7 @@ __metadata: "@octokit/types": "npm:^9.0.0" before-after-hook: "npm:^2.2.0" universal-user-agent: "npm:^6.0.0" - checksum: e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 + checksum: 10c0/e54081a56884e628d1804837fddcd48c10d516117bb891551c8dc9d8e3dad449aeb9b4677ca71e8f0e76268c2b7656c953099506679aaa4666765228474a3ce6 languageName: node linkType: hard @@ -5789,7 +5789,7 @@ __metadata: "@octokit/types": "npm:^12.0.0" before-after-hook: "npm:^2.2.0" universal-user-agent: "npm:^6.0.0" - checksum: f3b3cb72f8f374e763e60922eacad56cb08fc05ee0be26f2a7b61937f89a377a8fd1b54f3d621a2b9627a9402c595d4b7e24900602e401b8a8edaffd995fa98f + checksum: 10c0/f3b3cb72f8f374e763e60922eacad56cb08fc05ee0be26f2a7b61937f89a377a8fd1b54f3d621a2b9627a9402c595d4b7e24900602e401b8a8edaffd995fa98f languageName: node linkType: hard @@ -5800,7 +5800,7 @@ __metadata: "@octokit/types": "npm:^9.0.0" is-plain-object: "npm:^5.0.0" universal-user-agent: "npm:^6.0.0" - checksum: fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 + checksum: 10c0/fd147a55010b54af7567bf90791359f7096a1c9916a2b7c72f8afd0c53141338b3d78da3a4ab3e3bdfeb26218a1b73735432d8987ccc04996b1019219299f115 languageName: node linkType: hard @@ -5810,7 +5810,7 @@ __metadata: dependencies: "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: f1c857c5d85afa9d7e8857f7f97dbec28d3b6ab1dc21fe35172f1bc9e5512c8a3a26edabf6b2d83bb60d700f7ad290c96be960496aa83606095630edfad06db4 + checksum: 10c0/f1c857c5d85afa9d7e8857f7f97dbec28d3b6ab1dc21fe35172f1bc9e5512c8a3a26edabf6b2d83bb60d700f7ad290c96be960496aa83606095630edfad06db4 languageName: node linkType: hard @@ -5821,7 +5821,7 @@ __metadata: "@octokit/request": "npm:^6.0.0" "@octokit/types": "npm:^9.0.0" universal-user-agent: "npm:^6.0.0" - checksum: de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 + checksum: 10c0/de1d839d97fe6d96179925f6714bf96e7af6f77929892596bb4211adab14add3291fc5872b269a3d0e91a4dcf248d16096c82606c4a43538cf241b815c2e2a36 languageName: node linkType: hard @@ -5832,7 +5832,7 @@ __metadata: "@octokit/request": "npm:^8.0.1" "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 96e5d6b970be60877134cc147b9249534f3a79d691b9932d731d453426fa1e1a0a36111a1b0a6ab43d61309c630903a65db5559b5c800300dc26cf588f50fea8 + checksum: 10c0/96e5d6b970be60877134cc147b9249534f3a79d691b9932d731d453426fa1e1a0a36111a1b0a6ab43d61309c630903a65db5559b5c800300dc26cf588f50fea8 languageName: node linkType: hard @@ -5848,14 +5848,14 @@ __metadata: "@octokit/oauth-methods": "npm:^4.0.0" "@types/aws-lambda": "npm:^8.10.83" universal-user-agent: "npm:^6.0.0" - checksum: 47b6a6d434bf106de3f1ae358f72ef9022c1e724e0a0ea6636277abe742935d1efdb0768f1fec010d8fdcb16e4f93d6bcb66cb46df2c739160599a120b3ef539 + checksum: 10c0/47b6a6d434bf106de3f1ae358f72ef9022c1e724e0a0ea6636277abe742935d1efdb0768f1fec010d8fdcb16e4f93d6bcb66cb46df2c739160599a120b3ef539 languageName: node linkType: hard "@octokit/oauth-authorization-url@npm:^6.0.2": version: 6.0.2 resolution: "@octokit/oauth-authorization-url@npm:6.0.2" - checksum: 8c06e538b3e392f0fa68f3347078c32f92c03474eb214e4e82774513a54c164bac14c228f7dbd79d22a920df1a8b2e0765dd6ee45929bda0b77e5cf7f0d92c71 + checksum: 10c0/8c06e538b3e392f0fa68f3347078c32f92c03474eb214e4e82774513a54c164bac14c228f7dbd79d22a920df1a8b2e0765dd6ee45929bda0b77e5cf7f0d92c71 languageName: node linkType: hard @@ -5868,28 +5868,28 @@ __metadata: "@octokit/request-error": "npm:^5.0.0" "@octokit/types": "npm:^12.0.0" btoa-lite: "npm:^1.0.0" - checksum: fcaa5636780e3f406ddea9c6c881e7ae0b2a9fe0ec3bcd2748825ff27219a9ea1e223020bff0c988748d3ec18c6aa91bc9bcb557c8522553b3eccdcd4494d925 + checksum: 10c0/fcaa5636780e3f406ddea9c6c881e7ae0b2a9fe0ec3bcd2748825ff27219a9ea1e223020bff0c988748d3ec18c6aa91bc9bcb557c8522553b3eccdcd4494d925 languageName: node linkType: hard "@octokit/openapi-types@npm:^18.0.0": version: 18.0.0 resolution: "@octokit/openapi-types@npm:18.0.0" - checksum: d90fab10d962be71e72b85ffab2055cffd9c3196ff1edc3e4106deb78e99e8782965cf7aa6a4c1398f828e4d0c3e0f905915debfe34396d956dfce8e75b21664 + checksum: 10c0/d90fab10d962be71e72b85ffab2055cffd9c3196ff1edc3e4106deb78e99e8782965cf7aa6a4c1398f828e4d0c3e0f905915debfe34396d956dfce8e75b21664 languageName: node linkType: hard "@octokit/openapi-types@npm:^19.1.0": version: 19.1.0 resolution: "@octokit/openapi-types@npm:19.1.0" - checksum: ae8081f52b797b91a12d4f6cddc475699c9d34b06645b337adc77d30b583d8fe8506597a45c42f8f1a96bfb2a9d092cee257d8a65d718bfeed23a0d153448eea + checksum: 10c0/ae8081f52b797b91a12d4f6cddc475699c9d34b06645b337adc77d30b583d8fe8506597a45c42f8f1a96bfb2a9d092cee257d8a65d718bfeed23a0d153448eea languageName: node linkType: hard "@octokit/plugin-enterprise-rest@npm:6.0.1": version: 6.0.1 resolution: "@octokit/plugin-enterprise-rest@npm:6.0.1" - checksum: 26bd0a30582954efcd29b41e16698db79e9d20e3f88c4069b43b183223cee69862621f18b6a7a1c9257b1cd07c24477e403b75c74688660ecf31d467b9d8fd9e + checksum: 10c0/26bd0a30582954efcd29b41e16698db79e9d20e3f88c4069b43b183223cee69862621f18b6a7a1c9257b1cd07c24477e403b75c74688660ecf31d467b9d8fd9e languageName: node linkType: hard @@ -5898,7 +5898,7 @@ __metadata: resolution: "@octokit/plugin-paginate-graphql@npm:4.0.0" peerDependencies: "@octokit/core": ">=5" - checksum: a76ede8b7ceef78f319f80083c7043f5e721c10468e520e1989c4b81fc57ccb549324ef323ee86bc62abfb7a75b0c1b30b1f64715da50737b4ec6ffb2a9b95a4 + checksum: 10c0/a76ede8b7ceef78f319f80083c7043f5e721c10468e520e1989c4b81fc57ccb549324ef323ee86bc62abfb7a75b0c1b30b1f64715da50737b4ec6ffb2a9b95a4 languageName: node linkType: hard @@ -5910,7 +5910,7 @@ __metadata: "@octokit/types": "npm:^9.2.3" peerDependencies: "@octokit/core": ">=4" - checksum: def241c4f00b864822ab6414eaadd8679a6d332004c7e77467cfc1e6d5bdcc453c76bd185710ee942e4df201f9dd2170d960f46af5b14ef6f261a0068f656364 + checksum: 10c0/def241c4f00b864822ab6414eaadd8679a6d332004c7e77467cfc1e6d5bdcc453c76bd185710ee942e4df201f9dd2170d960f46af5b14ef6f261a0068f656364 languageName: node linkType: hard @@ -5921,7 +5921,7 @@ __metadata: "@octokit/types": "npm:^12.4.0" peerDependencies: "@octokit/core": ">=5" - checksum: a17055dff8fde5ebc03bf935294ffa4605ed714cb15252f0fa63cda1b95e738fafb5ab9748b18fbdfa5615d5f6686cbf193c6d6426e7dc4fd1dda91c87263f3b + checksum: 10c0/a17055dff8fde5ebc03bf935294ffa4605ed714cb15252f0fa63cda1b95e738fafb5ab9748b18fbdfa5615d5f6686cbf193c6d6426e7dc4fd1dda91c87263f3b languageName: node linkType: hard @@ -5930,7 +5930,7 @@ __metadata: resolution: "@octokit/plugin-request-log@npm:1.0.4" peerDependencies: "@octokit/core": ">=3" - checksum: 7238585445555db553912e0cdef82801c89c6e5cbc62c23ae086761c23cc4a403d6c3fddd20348bbd42fb7508e2c2fce370eb18fdbe3fbae2c0d2c8be974f4cc + checksum: 10c0/7238585445555db553912e0cdef82801c89c6e5cbc62c23ae086761c23cc4a403d6c3fddd20348bbd42fb7508e2c2fce370eb18fdbe3fbae2c0d2c8be974f4cc languageName: node linkType: hard @@ -5941,7 +5941,7 @@ __metadata: "@octokit/types": "npm:^12.3.0" peerDependencies: "@octokit/core": ">=5" - checksum: 4d00a2334753955f0c3841ba8fc0880c093b94838e011864ee737d958d2d64e3d45d34fa4c8b64bccf9e13c6de81318cbd6e2b24df37992941d12f54def28432 + checksum: 10c0/4d00a2334753955f0c3841ba8fc0880c093b94838e011864ee737d958d2d64e3d45d34fa4c8b64bccf9e13c6de81318cbd6e2b24df37992941d12f54def28432 languageName: node linkType: hard @@ -5952,7 +5952,7 @@ __metadata: "@octokit/types": "npm:^10.0.0" peerDependencies: "@octokit/core": ">=3" - checksum: 8bffbc5852695dd08d65cc64b6ab7d2871ed9df1e791608f48b488a3908b5b655e3686b5dd72fc37c824e82bdd4dfc9d24e2e50205bbc324667def1d705bc9da + checksum: 10c0/8bffbc5852695dd08d65cc64b6ab7d2871ed9df1e791608f48b488a3908b5b655e3686b5dd72fc37c824e82bdd4dfc9d24e2e50205bbc324667def1d705bc9da languageName: node linkType: hard @@ -5965,7 +5965,7 @@ __metadata: bottleneck: "npm:^2.15.3" peerDependencies: "@octokit/core": ">=5" - checksum: 721b5a7949e3defdec5f1b451850ab924162fd2712c9ab59a2aaaad5b9ed6ee2a9447fe82ec1f91086cf23aaaceb14ff4e74de67ba3c63c5029e59c67b50979c + checksum: 10c0/721b5a7949e3defdec5f1b451850ab924162fd2712c9ab59a2aaaad5b9ed6ee2a9447fe82ec1f91086cf23aaaceb14ff4e74de67ba3c63c5029e59c67b50979c languageName: node linkType: hard @@ -5977,7 +5977,7 @@ __metadata: bottleneck: "npm:^2.15.3" peerDependencies: "@octokit/core": ^5.0.0 - checksum: aa21da4078a64f8ce0e7f340d041ad8d58d2fc8eb3fa658ba82e0b3207d689ccfbdd0fd3e2104fb2eea1de37f7857bae835705465122dda310d0fd7041bfdf94 + checksum: 10c0/aa21da4078a64f8ce0e7f340d041ad8d58d2fc8eb3fa658ba82e0b3207d689ccfbdd0fd3e2104fb2eea1de37f7857bae835705465122dda310d0fd7041bfdf94 languageName: node linkType: hard @@ -5988,7 +5988,7 @@ __metadata: "@octokit/types": "npm:^9.0.0" deprecation: "npm:^2.0.0" once: "npm:^1.4.0" - checksum: 1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 + checksum: 10c0/1e252ac193c8af23b709909911aa327ed5372cbafcba09e4aff41e0f640a7c152579ab0a60311a92e37b4e7936392d59ee4c2feae5cdc387ee8587a33d8afa60 languageName: node linkType: hard @@ -5999,7 +5999,7 @@ __metadata: "@octokit/types": "npm:^12.0.0" deprecation: "npm:^2.0.0" once: "npm:^1.4.0" - checksum: e72a4627120de345b54876a1f007664095e5be9d624fce2e14fccf7668cd8f5e4929d444d8fc085d48e1fb5cd548538453974aab129a669101110d6679dce6c6 + checksum: 10c0/e72a4627120de345b54876a1f007664095e5be9d624fce2e14fccf7668cd8f5e4929d444d8fc085d48e1fb5cd548538453974aab129a669101110d6679dce6c6 languageName: node linkType: hard @@ -6013,7 +6013,7 @@ __metadata: is-plain-object: "npm:^5.0.0" node-fetch: "npm:^2.6.7" universal-user-agent: "npm:^6.0.0" - checksum: 6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b + checksum: 10c0/6b6079ed45bac44c4579b40990bfd1905b03d4bc4e5255f3d5a10cf5182171578ebe19abeab32ebb11a806f1131947f2a06b7a077bd7e77ade7b15fe2882174b languageName: node linkType: hard @@ -6025,7 +6025,7 @@ __metadata: "@octokit/request-error": "npm:^5.0.0" "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: ef84418e0b1f28335c105bca2b1518b04797791761024d26f80f60a528cdcf468baf9897fd34f535c42af0643a598884f882bc832e68edbfe1ea530c2df563a4 + checksum: 10c0/ef84418e0b1f28335c105bca2b1518b04797791761024d26f80f60a528cdcf468baf9897fd34f535c42af0643a598884f882bc832e68edbfe1ea530c2df563a4 languageName: node linkType: hard @@ -6037,14 +6037,14 @@ __metadata: "@octokit/plugin-paginate-rest": "npm:^6.1.2" "@octokit/plugin-request-log": "npm:^1.0.4" "@octokit/plugin-rest-endpoint-methods": "npm:^7.1.2" - checksum: a14ae31fc5e70e76d2492aae63d3453cbb71f44e7492400f885ab5ac6b2612bcb244bafa29e45a59461f3e5d99807ff9c88d48af8317ffa4f8ad3f8f11fdd035 + checksum: 10c0/a14ae31fc5e70e76d2492aae63d3453cbb71f44e7492400f885ab5ac6b2612bcb244bafa29e45a59461f3e5d99807ff9c88d48af8317ffa4f8ad3f8f11fdd035 languageName: node linkType: hard "@octokit/tsconfig@npm:^1.0.2": version: 1.0.2 resolution: "@octokit/tsconfig@npm:1.0.2" - checksum: 84db70b495beeed69259dd4def14cdfb600edeb65ef32811558c99413ee2b414ed10bff9c4dcc7a43451d0fd36b4925ada9ef7d4272b5eae38cb005cc2f459ac + checksum: 10c0/84db70b495beeed69259dd4def14cdfb600edeb65ef32811558c99413ee2b414ed10bff9c4dcc7a43451d0fd36b4925ada9ef7d4272b5eae38cb005cc2f459ac languageName: node linkType: hard @@ -6053,7 +6053,7 @@ __metadata: resolution: "@octokit/types@npm:10.0.0" dependencies: "@octokit/openapi-types": "npm:^18.0.0" - checksum: 9bbbec1e452c271752e5ba735c161a558933f2e35f3004bb0b6e8d6ba574af48b68bab2f293112a8e68c595435a2fbcc76f3e7333f45ba1888bb5193777a943e + checksum: 10c0/9bbbec1e452c271752e5ba735c161a558933f2e35f3004bb0b6e8d6ba574af48b68bab2f293112a8e68c595435a2fbcc76f3e7333f45ba1888bb5193777a943e languageName: node linkType: hard @@ -6062,7 +6062,7 @@ __metadata: resolution: "@octokit/types@npm:12.4.0" dependencies: "@octokit/openapi-types": "npm:^19.1.0" - checksum: b52b3fd8af307a1868846991f8376548a790814b20639dee1110271a768c0489081970df893ca2230f6285066003230d22f5877eeac90418971a475c79808241 + checksum: 10c0/b52b3fd8af307a1868846991f8376548a790814b20639dee1110271a768c0489081970df893ca2230f6285066003230d22f5877eeac90418971a475c79808241 languageName: node linkType: hard @@ -6071,21 +6071,21 @@ __metadata: resolution: "@octokit/types@npm:9.3.2" dependencies: "@octokit/openapi-types": "npm:^18.0.0" - checksum: 2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 + checksum: 10c0/2925479aa378a4491762b4fcf381bdc7daca39b4e0b2dd7062bce5d74a32ed7d79d20d3c65ceaca6d105cf4b1f7417fea634219bf90f79a57d03e2dac629ec45 languageName: node linkType: hard "@octokit/webhooks-methods@npm:^4.0.0": version: 4.0.0 resolution: "@octokit/webhooks-methods@npm:4.0.0" - checksum: 67182bf353b5fad1832d8d2647192348e3cf17aed8b8feeb8c10f680691c176b51f133d143aee43961f0eac3cd848b2f993fa03c7477980fc9a926bd8d7ba934 + checksum: 10c0/67182bf353b5fad1832d8d2647192348e3cf17aed8b8feeb8c10f680691c176b51f133d143aee43961f0eac3cd848b2f993fa03c7477980fc9a926bd8d7ba934 languageName: node linkType: hard "@octokit/webhooks-types@npm:7.1.0": version: 7.1.0 resolution: "@octokit/webhooks-types@npm:7.1.0" - checksum: 5a293214d8c7ba72bab1e866c308005c55b3588c13f4d1ed101726fd362ff584282e7f9a486852d7fe87d15a547a3b234e31d8c559170ecf453d7305fbe4924a + checksum: 10c0/5a293214d8c7ba72bab1e866c308005c55b3588c13f4d1ed101726fd362ff584282e7f9a486852d7fe87d15a547a3b234e31d8c559170ecf453d7305fbe4924a languageName: node linkType: hard @@ -6097,21 +6097,21 @@ __metadata: "@octokit/webhooks-methods": "npm:^4.0.0" "@octokit/webhooks-types": "npm:7.1.0" aggregate-error: "npm:^3.1.0" - checksum: ace6483d3ac404213465ea3b4b0f0ae53ed2db47f2cb9664508c527c736f8bd605a4751207c4ba9508d75bea79be27534137af5c8916fcb8865465152b57156f + checksum: 10c0/ace6483d3ac404213465ea3b4b0f0ae53ed2db47f2cb9664508c527c736f8bd605a4751207c4ba9508d75bea79be27534137af5c8916fcb8865465152b57156f languageName: node linkType: hard "@one-ini/wasm@npm:0.1.1": version: 0.1.1 resolution: "@one-ini/wasm@npm:0.1.1" - checksum: 54700e055037f1a63bfcc86d24822203b25759598c2c3e295d1435130a449108aebc119c9c2e467744767dbe0b6ab47a182c61aa1071ba7368f5e20ab197ba65 + checksum: 10c0/54700e055037f1a63bfcc86d24822203b25759598c2c3e295d1435130a449108aebc119c9c2e467744767dbe0b6ab47a182c61aa1071ba7368f5e20ab197ba65 languageName: node linkType: hard "@open-draft/until@npm:^1.0.3": version: 1.0.3 resolution: "@open-draft/until@npm:1.0.3" - checksum: f88bcd774b55359d14a4fa80f7bfe7d9d6d26a5995e94e823e43b211656daae3663e983f0a996937da286d22f6f5da2087b661845302f236ba27f8529dcd14fb + checksum: 10c0/f88bcd774b55359d14a4fa80f7bfe7d9d6d26a5995e94e823e43b211656daae3663e983f0a996937da286d22f6f5da2087b661845302f236ba27f8529dcd14fb languageName: node linkType: hard @@ -6120,14 +6120,14 @@ __metadata: resolution: "@opentelemetry/api-logs@npm:0.45.1" dependencies: "@opentelemetry/api": "npm:^1.0.0" - checksum: 110784924fe39fd544ff71ca6f117834e229fc7940fea7492b3d2bdf1259fc7819860603fda7cc970b6ecd37d79f365be559e0999141172e455e8a839c4d0836 + checksum: 10c0/110784924fe39fd544ff71ca6f117834e229fc7940fea7492b3d2bdf1259fc7819860603fda7cc970b6ecd37d79f365be559e0999141172e455e8a839c4d0836 languageName: node linkType: hard "@opentelemetry/api@npm:1.7.0, @opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.0.1": version: 1.7.0 resolution: "@opentelemetry/api@npm:1.7.0" - checksum: b5468115d1cec45dd2b86b39210fdc03620a93b9f07c3d20b14081f75e2f7c9b37ceceeb60d5f35c6d4f9819ae07eee0b4874e53e7362376db21db1e00f483f8 + checksum: 10c0/b5468115d1cec45dd2b86b39210fdc03620a93b9f07c3d20b14081f75e2f7c9b37ceceeb60d5f35c6d4f9819ae07eee0b4874e53e7362376db21db1e00f483f8 languageName: node linkType: hard @@ -6136,7 +6136,7 @@ __metadata: resolution: "@opentelemetry/context-async-hooks@npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 6de54978adc500dbcc96738f0a74080c784a5bfe25bd193158bf4abb14659a9a27595cbd65f45dc9058b02c6c9ae883a2a0002b72c036264db676213c25cb7c8 + checksum: 10c0/6de54978adc500dbcc96738f0a74080c784a5bfe25bd193158bf4abb14659a9a27595cbd65f45dc9058b02c6c9ae883a2a0002b72c036264db676213c25cb7c8 languageName: node linkType: hard @@ -6147,7 +6147,7 @@ __metadata: "@opentelemetry/semantic-conventions": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: ceb17446ce32faaa8d71caaaf25c9abbc5fd72077c7b868ea6f51e08a4a3daeb9133682a3b299a64291111416f2dd0dbeeed66f44409995fa4540f7250e3ffe1 + checksum: 10c0/ceb17446ce32faaa8d71caaaf25c9abbc5fd72077c7b868ea6f51e08a4a3daeb9133682a3b299a64291111416f2dd0dbeeed66f44409995fa4540f7250e3ffe1 languageName: node linkType: hard @@ -6162,7 +6162,7 @@ __metadata: "@opentelemetry/sdk-trace-base": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ^1.0.0 - checksum: 3561877ff62bff651a7a4f0f17578910843fc5e00e2e33493591c61a2ac4d85c936b5024fc1dbcbb53c3cf3079914fbf9d80f71dfc3a6301589152b3e5ad84c0 + checksum: 10c0/3561877ff62bff651a7a4f0f17578910843fc5e00e2e33493591c61a2ac4d85c936b5024fc1dbcbb53c3cf3079914fbf9d80f71dfc3a6301589152b3e5ad84c0 languageName: node linkType: hard @@ -6173,7 +6173,7 @@ __metadata: "@opentelemetry/core": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ^1.0.0 - checksum: 22f30443238c2c9ddf26f1a18bf80012bc38cefe0e7ee6c32bd5c44d1f2303b11ab68130b638bd5f977ebc40d030890a407466033b42a9a9dba02c864568f82f + checksum: 10c0/22f30443238c2c9ddf26f1a18bf80012bc38cefe0e7ee6c32bd5c44d1f2303b11ab68130b638bd5f977ebc40d030890a407466033b42a9a9dba02c864568f82f languageName: node linkType: hard @@ -6189,7 +6189,7 @@ __metadata: "@opentelemetry/sdk-trace-base": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.3.0 <1.8.0" - checksum: 5e306e88dff99ef48543edda3e76851fe8d8894981f138479623befa0e8276d84541beaee6ef2a4dfe0bc5a2feb96b3137edb17ad0751d332e67b9d67f49ffa3 + checksum: 10c0/5e306e88dff99ef48543edda3e76851fe8d8894981f138479623befa0e8276d84541beaee6ef2a4dfe0bc5a2feb96b3137edb17ad0751d332e67b9d67f49ffa3 languageName: node linkType: hard @@ -6200,7 +6200,7 @@ __metadata: "@opentelemetry/core": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: c3a31c3679f66a407da3e867775a01f0fbeda5ccd4482bb2979af6285c545ceaed41ad6f9061124daf4d6af2e1f4b3db52095085b159df6197454612752c4cfb + checksum: 10c0/c3a31c3679f66a407da3e867775a01f0fbeda5ccd4482bb2979af6285c545ceaed41ad6f9061124daf4d6af2e1f4b3db52095085b159df6197454612752c4cfb languageName: node linkType: hard @@ -6211,7 +6211,7 @@ __metadata: "@opentelemetry/core": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 622035eed6a219b24bbb26d12d4efe1ed8d84f5e5045b5e948808ea92d5f0a029233ea47126c8322c3c9d6c3f1fe904aed82ed9f68c4e006123ae083c0fb2f32 + checksum: 10c0/622035eed6a219b24bbb26d12d4efe1ed8d84f5e5045b5e948808ea92d5f0a029233ea47126c8322c3c9d6c3f1fe904aed82ed9f68c4e006123ae083c0fb2f32 languageName: node linkType: hard @@ -6223,7 +6223,7 @@ __metadata: "@opentelemetry/semantic-conventions": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 064cc1948c7ea9a31edfbf9945c326be1c2802e48c0c0e977cfd2cb4e5e3b63de13d7cc299da31ca99fd2fc82587c16fca53fc60a64db49d479fb16b4593eaea + checksum: 10c0/064cc1948c7ea9a31edfbf9945c326be1c2802e48c0c0e977cfd2cb4e5e3b63de13d7cc299da31ca99fd2fc82587c16fca53fc60a64db49d479fb16b4593eaea languageName: node linkType: hard @@ -6236,7 +6236,7 @@ __metadata: peerDependencies: "@opentelemetry/api": ">=1.4.0 <1.8.0" "@opentelemetry/api-logs": ">=0.39.1" - checksum: 9210dab03024509500a0af9905ad676fdfc118fcccc9be8fa9e0c11147bdc242c580407c7bf2395502193884715e292ee17e811cede2586465dda04b2c8464e0 + checksum: 10c0/9210dab03024509500a0af9905ad676fdfc118fcccc9be8fa9e0c11147bdc242c580407c7bf2395502193884715e292ee17e811cede2586465dda04b2c8464e0 languageName: node linkType: hard @@ -6249,7 +6249,7 @@ __metadata: lodash.merge: "npm:^4.6.2" peerDependencies: "@opentelemetry/api": ">=1.3.0 <1.8.0" - checksum: 3c7050eb997d0bf9d1a6182f94cb49fcf4d62dd47df45b7e9e881df5bd6135a0d54c664fd29ae2a21fbf7cf93715c0e3e4a390bd56059e70a9ccd3f7ee5ab6a4 + checksum: 10c0/3c7050eb997d0bf9d1a6182f94cb49fcf4d62dd47df45b7e9e881df5bd6135a0d54c664fd29ae2a21fbf7cf93715c0e3e4a390bd56059e70a9ccd3f7ee5ab6a4 languageName: node linkType: hard @@ -6262,7 +6262,7 @@ __metadata: "@opentelemetry/semantic-conventions": "npm:1.18.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: e3ab716724d9d761c12cbabc41246e7ef27d8c05bc298cae0fa9a7fc84cf9229a87d4128b6ff28d11f12fcc4b0cdabad13d80a5ea57f99e26860bdf38622173c + checksum: 10c0/e3ab716724d9d761c12cbabc41246e7ef27d8c05bc298cae0fa9a7fc84cf9229a87d4128b6ff28d11f12fcc4b0cdabad13d80a5ea57f99e26860bdf38622173c languageName: node linkType: hard @@ -6278,14 +6278,14 @@ __metadata: semver: "npm:^7.5.2" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.8.0" - checksum: 1b9f4718b12da439e8147a3bba8d7902cd9fd316954fbdbc51b72b90f2eede3ae17f97331f7cf888df9994f4c7cd63f4b64286a74c0cfc8695e7df0b913d1349 + checksum: 10c0/1b9f4718b12da439e8147a3bba8d7902cd9fd316954fbdbc51b72b90f2eede3ae17f97331f7cf888df9994f4c7cd63f4b64286a74c0cfc8695e7df0b913d1349 languageName: node linkType: hard "@opentelemetry/semantic-conventions@npm:1.18.1": version: 1.18.1 resolution: "@opentelemetry/semantic-conventions@npm:1.18.1" - checksum: 6437c3758e732d643218e35c66fa931ddf65dde9a33c10af16b866135cbb5357fc3424316139c2ca1188cf0f5b23e844b6e6c9ab461637cb150a40219bee70e9 + checksum: 10c0/6437c3758e732d643218e35c66fa931ddf65dde9a33c10af16b866135cbb5357fc3424316139c2ca1188cf0f5b23e844b6e6c9ab461637cb150a40219bee70e9 languageName: node linkType: hard @@ -6399,7 +6399,7 @@ __metadata: optional: true "@parcel/watcher-win32-x64": optional: true - checksum: 905d7eff0caf3461cbcf3ffa08f0f1886790fe965c7a914e04cb35807b4770121cad95eb67c9d09165fe7be0799a2e3530e75b1131f18cdff9e326f457bd37d1 + checksum: 10c0/905d7eff0caf3461cbcf3ffa08f0f1886790fe965c7a914e04cb35807b4770121cad95eb67c9d09165fe7be0799a2e3530e75b1131f18cdff9e326f457bd37d1 languageName: node linkType: hard @@ -6410,7 +6410,7 @@ __metadata: "@peculiar/asn1-schema": "npm:^2.3.6" asn1js: "npm:^3.0.5" tslib: "npm:^2.4.0" - checksum: e7e6d91b72671386863a1451c622b7728ff346a4dc22ea3dcf58c042d58af02baab0bda133ad725f44d20d9590ba78cf13b37fd841a27426447eacecc2f30fc7 + checksum: 10c0/e7e6d91b72671386863a1451c622b7728ff346a4dc22ea3dcf58c042d58af02baab0bda133ad725f44d20d9590ba78cf13b37fd841a27426447eacecc2f30fc7 languageName: node linkType: hard @@ -6422,7 +6422,7 @@ __metadata: "@peculiar/asn1-x509": "npm:^2.3.6" asn1js: "npm:^3.0.5" tslib: "npm:^2.4.0" - checksum: 60d5baf5fc36fbfe68d6d4f427f025b9f4f8c5bcb675b70db6e07dfe991529da4c351a8befaf41975237a70c7fbb2b0d05cfccc692145a34d78d296ebba68b4b + checksum: 10c0/60d5baf5fc36fbfe68d6d4f427f025b9f4f8c5bcb675b70db6e07dfe991529da4c351a8befaf41975237a70c7fbb2b0d05cfccc692145a34d78d296ebba68b4b languageName: node linkType: hard @@ -6434,7 +6434,7 @@ __metadata: "@peculiar/asn1-x509": "npm:^2.3.6" asn1js: "npm:^3.0.5" tslib: "npm:^2.4.0" - checksum: a3408a687174e439125a6c36418192de4984c640952fa53d283843495c16270f818a58f962ef8721858ebf9def5ec6cf5a0cf369a984eb7ef29a0f7bd88ec9ec + checksum: 10c0/a3408a687174e439125a6c36418192de4984c640952fa53d283843495c16270f818a58f962ef8721858ebf9def5ec6cf5a0cf369a984eb7ef29a0f7bd88ec9ec languageName: node linkType: hard @@ -6445,7 +6445,7 @@ __metadata: asn1js: "npm:^3.0.5" pvtsutils: "npm:^1.3.2" tslib: "npm:^2.4.0" - checksum: 86591b1691f6b296b515137d699e45c6384a08f38ddd080dc13a5b7f85d59aa4a0a1c52fa857b47e727c4b997293bc50c0812d22f1ba9ed7b246a8a8aac5491c + checksum: 10c0/86591b1691f6b296b515137d699e45c6384a08f38ddd080dc13a5b7f85d59aa4a0a1c52fa857b47e727c4b997293bc50c0812d22f1ba9ed7b246a8a8aac5491c languageName: node linkType: hard @@ -6458,7 +6458,7 @@ __metadata: ipaddr.js: "npm:^2.0.1" pvtsutils: "npm:^1.3.2" tslib: "npm:^2.4.0" - checksum: 9513a471270fbfa45501f50a3c82cb7827a53951114ae791a79081d50597b94e3919fe4507b96ff875d7f5323c581138901d8bd1a620db9c387fd361dee44f2c + checksum: 10c0/9513a471270fbfa45501f50a3c82cb7827a53951114ae791a79081d50597b94e3919fe4507b96ff875d7f5323c581138901d8bd1a620db9c387fd361dee44f2c languageName: node linkType: hard @@ -6467,7 +6467,7 @@ __metadata: resolution: "@peculiar/json-schema@npm:1.1.12" dependencies: tslib: "npm:^2.0.0" - checksum: 202132c66dcc6b6aca5d0af971c015be2e163da2f7f992910783c5d39c8a7db59b6ec4f4ce419459a1f954b7e1d17b6b253f0e60072c1b3d254079f4eaebc311 + checksum: 10c0/202132c66dcc6b6aca5d0af971c015be2e163da2f7f992910783c5d39c8a7db59b6ec4f4ce419459a1f954b7e1d17b6b253f0e60072c1b3d254079f4eaebc311 languageName: node linkType: hard @@ -6480,7 +6480,7 @@ __metadata: pvtsutils: "npm:^1.3.2" tslib: "npm:^2.4.1" webcrypto-core: "npm:^1.7.4" - checksum: 5acf1b025664525452e2b0748573b0f4100c6840d71ff5577188dfb81b97d463911deff17b4b0c3e59f35fe93c54fec4591f1c42f0a54dae1d5710a03c5e55d3 + checksum: 10c0/5acf1b025664525452e2b0748573b0f4100c6840d71ff5577188dfb81b97d463911deff17b4b0c3e59f35fe93c54fec4591f1c42f0a54dae1d5710a03c5e55d3 languageName: node linkType: hard @@ -6493,14 +6493,14 @@ __metadata: pvtsutils: "npm:^1.3.2" tslib: "npm:^2.5.0" webcrypto-core: "npm:^1.7.7" - checksum: 0b778f32f81feee4f521397a1000d151fbc526ddde4f3f853e4a98815986c08b93b66654a8a9766dc161af13d8340bc3e00f04b17585474bbe260df7b586863a + checksum: 10c0/0b778f32f81feee4f521397a1000d151fbc526ddde4f3f853e4a98815986c08b93b66654a8a9766dc161af13d8340bc3e00f04b17585474bbe260df7b586863a languageName: node linkType: hard "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd languageName: node linkType: hard @@ -6511,7 +6511,7 @@ __metadata: playwright: "npm:1.41.1" bin: playwright: cli.js - checksum: 72bd5bb67c512027d214b9c54c2a22a469bd19d7809771e53a5bfdcc11330591e01579bb22f807d1ebbcdcea35d625e0fc9eb9791cebcc63bf55b82dd1cdefdd + checksum: 10c0/72bd5bb67c512027d214b9c54c2a22a469bd19d7809771e53a5bfdcc11330591e01579bb22f807d1ebbcdcea35d625e0fc9eb9791cebcc63bf55b82dd1cdefdd languageName: node linkType: hard @@ -6550,14 +6550,14 @@ __metadata: optional: true webpack-plugin-serve: optional: true - checksum: a9c8468417a14a23339e313cff6ddb8029e0637748973070e61d83a2534620b3492b9a42ecf9eb9d63cb709f53c17fe814bc7dd68d64c300db338e9fd7287bc4 + checksum: 10c0/a9c8468417a14a23339e313cff6ddb8029e0637748973070e61d83a2534620b3492b9a42ecf9eb9d63cb709f53c17fe814bc7dd68d64c300db338e9fd7287bc4 languageName: node linkType: hard "@polka/url@npm:^1.0.0-next.20": version: 1.0.0-next.21 resolution: "@polka/url@npm:1.0.0-next.21" - checksum: 53c1f28683a075aac41f8ce2a54eb952b6bc67a03494b2dca1cb63d833a6da898cea6a92df8e1e6b680db985fb7f9c16e11c20afa6584bcdda68a16fb4c18737 + checksum: 10c0/53c1f28683a075aac41f8ce2a54eb952b6bc67a03494b2dca1cb63d833a6da898cea6a92df8e1e6b680db985fb7f9c16e11c20afa6584bcdda68a16fb4c18737 languageName: node linkType: hard @@ -6569,21 +6569,21 @@ __metadata: peerDependenciesMeta: prisma: optional: true - checksum: 5447007e42d507e45960210d804736000b53556b076dd15797dfaed0c58e462dc24eb27e9c6636b8a145dd1a103fc7f6cd876f1906217e8fd8b74c6533169287 + checksum: 10c0/5447007e42d507e45960210d804736000b53556b076dd15797dfaed0c58e462dc24eb27e9c6636b8a145dd1a103fc7f6cd876f1906217e8fd8b74c6533169287 languageName: node linkType: hard "@prisma/debug@npm:5.9.1": version: 5.9.1 resolution: "@prisma/debug@npm:5.9.1" - checksum: 0e116019f5e8df7ec30503bcfd033e54c94a20e2a6d6abeed525eac3e0be8f40f8cd3b0cf43abad91d1ec80c3dbca8d827f753b2ccbf9eea20a05ff1cd1d12f5 + checksum: 10c0/0e116019f5e8df7ec30503bcfd033e54c94a20e2a6d6abeed525eac3e0be8f40f8cd3b0cf43abad91d1ec80c3dbca8d827f753b2ccbf9eea20a05ff1cd1d12f5 languageName: node linkType: hard "@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 resolution: "@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" - checksum: 861dd5f88fec224c5bd5885f0a33f8ab0cd39190497806d27d411ea8abde2b684eb27518c47bb0b560e025219284b94d2c5d85abc715f2765f2500e766bf2fdd + checksum: 10c0/861dd5f88fec224c5bd5885f0a33f8ab0cd39190497806d27d411ea8abde2b684eb27518c47bb0b560e025219284b94d2c5d85abc715f2765f2500e766bf2fdd languageName: node linkType: hard @@ -6595,7 +6595,7 @@ __metadata: "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" "@prisma/fetch-engine": "npm:5.9.1" "@prisma/get-platform": "npm:5.9.1" - checksum: 2148c14ec3d46709477319b23dae0e837c91a8119ee01e0a06daf73e6f008bfda5439603d29d722e17b297f2ebe2e73eedb50a4e914a2103931d3de2b4409436 + checksum: 10c0/2148c14ec3d46709477319b23dae0e837c91a8119ee01e0a06daf73e6f008bfda5439603d29d722e17b297f2ebe2e73eedb50a4e914a2103931d3de2b4409436 languageName: node linkType: hard @@ -6606,7 +6606,7 @@ __metadata: "@prisma/debug": "npm:5.9.1" "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" "@prisma/get-platform": "npm:5.9.1" - checksum: 3abe9ce5dcdea042a6047ba6497730f6d7ce05103de7cf1634e7543742369abc4a62179a8de1cb219e132f5e45729c95c04fc039cebee5b93c23400722ba0583 + checksum: 10c0/3abe9ce5dcdea042a6047ba6497730f6d7ce05103de7cf1634e7543742369abc4a62179a8de1cb219e132f5e45729c95c04fc039cebee5b93c23400722ba0583 languageName: node linkType: hard @@ -6615,7 +6615,7 @@ __metadata: resolution: "@prisma/generator-helper@npm:5.9.1" dependencies: "@prisma/debug": "npm:5.9.1" - checksum: 34179bc1aded0fec379393f9849046cf3ec3792ca9c052a5486720127af0a234aa0ce3f2b31b04246ac481549a028ddbd9c08259ddcbdce81e8f88db77d5d1f4 + checksum: 10c0/34179bc1aded0fec379393f9849046cf3ec3792ca9c052a5486720127af0a234aa0ce3f2b31b04246ac481549a028ddbd9c08259ddcbdce81e8f88db77d5d1f4 languageName: node linkType: hard @@ -6624,7 +6624,7 @@ __metadata: resolution: "@prisma/get-platform@npm:5.9.1" dependencies: "@prisma/debug": "npm:5.9.1" - checksum: ac7aa5fca0d5c2a6f04b04bc30eef8df4524ec34e9b2761b47c9fa58ab9b718c5525cb20a944d10e66d7978a4f8ec1ba6cb44a41139d26f885dbfd69c17d385b + checksum: 10c0/ac7aa5fca0d5c2a6f04b04bc30eef8df4524ec34e9b2761b47c9fa58ab9b718c5525cb20a944d10e66d7978a4f8ec1ba6cb44a41139d26f885dbfd69c17d385b languageName: node linkType: hard @@ -6640,42 +6640,42 @@ __metadata: "@prisma/prisma-schema-wasm": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" arg: "npm:5.0.2" prompts: "npm:2.4.2" - checksum: 1afc0e9cbdef678260524b32111d5d2d8aaa684c5800f407055f20c68d39e6afa3e5c0378ce9223a58c6021023c19b08b7ed4a2ee0418552e9213d39b8eeec17 + checksum: 10c0/1afc0e9cbdef678260524b32111d5d2d8aaa684c5800f407055f20c68d39e6afa3e5c0378ce9223a58c6021023c19b08b7ed4a2ee0418552e9213d39b8eeec17 languageName: node linkType: hard "@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 resolution: "@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" - checksum: ad61814eb28b57f540fbaa508db7056742905305e0393ee6a5bc3624ed9e54dba75f8472f1bff620b6c47364355e3caa69a1dd2009735e4c4ecbe5cd2110204e + checksum: 10c0/ad61814eb28b57f540fbaa508db7056742905305e0393ee6a5bc3624ed9e54dba75f8472f1bff620b6c47364355e3caa69a1dd2009735e4c4ecbe5cd2110204e languageName: node linkType: hard "@protobufjs/aspromise@npm:^1.1.1, @protobufjs/aspromise@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/aspromise@npm:1.1.2" - checksum: a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f + checksum: 10c0/a83343a468ff5b5ec6bff36fd788a64c839e48a07ff9f4f813564f58caf44d011cd6504ed2147bf34835bd7a7dd2107052af755961c6b098fd8902b4f6500d0f languageName: node linkType: hard "@protobufjs/base64@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/base64@npm:1.1.2" - checksum: eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 + checksum: 10c0/eec925e681081af190b8ee231f9bad3101e189abbc182ff279da6b531e7dbd2a56f1f306f37a80b1be9e00aa2d271690d08dcc5f326f71c9eed8546675c8caf6 languageName: node linkType: hard "@protobufjs/codegen@npm:^2.0.4": version: 2.0.4 resolution: "@protobufjs/codegen@npm:2.0.4" - checksum: 26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 + checksum: 10c0/26ae337c5659e41f091606d16465bbcc1df1f37cc1ed462438b1f67be0c1e28dfb2ca9f294f39100c52161aef82edf758c95d6d75650a1ddf31f7ddee1440b43 languageName: node linkType: hard "@protobufjs/eventemitter@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/eventemitter@npm:1.1.0" - checksum: 1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 + checksum: 10c0/1eb0a75180e5206d1033e4138212a8c7089a3d418c6dfa5a6ce42e593a4ae2e5892c4ef7421f38092badba4040ea6a45f0928869989411001d8c1018ea9a6e70 languageName: node linkType: hard @@ -6685,42 +6685,42 @@ __metadata: dependencies: "@protobufjs/aspromise": "npm:^1.1.1" "@protobufjs/inquire": "npm:^1.1.0" - checksum: cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 + checksum: 10c0/cda6a3dc2d50a182c5865b160f72077aac197046600091dbb005dd0a66db9cce3c5eaed6d470ac8ed49d7bcbeef6ee5f0bc288db5ff9a70cbd003e5909065233 languageName: node linkType: hard "@protobufjs/float@npm:^1.0.2": version: 1.0.2 resolution: "@protobufjs/float@npm:1.0.2" - checksum: 18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 + checksum: 10c0/18f2bdede76ffcf0170708af15c9c9db6259b771e6b84c51b06df34a9c339dbbeec267d14ce0bddd20acc142b1d980d983d31434398df7f98eb0c94a0eb79069 languageName: node linkType: hard "@protobufjs/inquire@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/inquire@npm:1.1.0" - checksum: 64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a + checksum: 10c0/64372482efcba1fb4d166a2664a6395fa978b557803857c9c03500e0ac1013eb4b1aacc9ed851dd5fc22f81583670b4f4431bae186f3373fedcfde863ef5921a languageName: node linkType: hard "@protobufjs/path@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/path@npm:1.1.2" - checksum: cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 + checksum: 10c0/cece0a938e7f5dfd2fa03f8c14f2f1cf8b0d6e13ac7326ff4c96ea311effd5fb7ae0bba754fbf505312af2e38500250c90e68506b97c02360a43793d88a0d8b4 languageName: node linkType: hard "@protobufjs/pool@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/pool@npm:1.1.0" - checksum: eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 + checksum: 10c0/eda2718b7f222ac6e6ad36f758a92ef90d26526026a19f4f17f668f45e0306a5bd734def3f48f51f8134ae0978b6262a5c517c08b115a551756d1a3aadfcf038 languageName: node linkType: hard "@protobufjs/utf8@npm:^1.1.0": version: 1.1.0 resolution: "@protobufjs/utf8@npm:1.1.0" - checksum: a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 + checksum: 10c0/a3fe31fe3fa29aa3349e2e04ee13dc170cc6af7c23d92ad49e3eeaf79b9766264544d3da824dba93b7855bd6a2982fb40032ef40693da98a136d835752beb487 languageName: node linkType: hard @@ -6729,7 +6729,7 @@ __metadata: resolution: "@radix-ui/number@npm:1.0.1" dependencies: "@babel/runtime": "npm:^7.13.10" - checksum: 42e4870cd14459da6da03e43c7507dc4c807ed787a87bda52912a0d1d6d5013326b697c18c9625fc6a2cf0af2b45d9c86747985b45358fd92ab646b983978e3c + checksum: 10c0/42e4870cd14459da6da03e43c7507dc4c807ed787a87bda52912a0d1d6d5013326b697c18c9625fc6a2cf0af2b45d9c86747985b45358fd92ab646b983978e3c languageName: node linkType: hard @@ -6738,7 +6738,7 @@ __metadata: resolution: "@radix-ui/primitive@npm:1.0.1" dependencies: "@babel/runtime": "npm:^7.13.10" - checksum: 912216455537db3ca77f3e7f70174fb2b454fbd4a37a0acb7cfadad9ab6131abdfb787472242574460a3c301edf45738340cc84f6717982710082840fde7d916 + checksum: 10c0/912216455537db3ca77f3e7f70174fb2b454fbd4a37a0acb7cfadad9ab6131abdfb787472242574460a3c301edf45738340cc84f6717982710082840fde7d916 languageName: node linkType: hard @@ -6758,7 +6758,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: c931f6d7e0bac50fd1654a0303a303aff74a68a13a33a851a43a7c88677b53a92ca6557920b9105144a3002f899ce888437d20ddd7803a5c716edac99587626d + checksum: 10c0/c931f6d7e0bac50fd1654a0303a303aff74a68a13a33a851a43a7c88677b53a92ca6557920b9105144a3002f899ce888437d20ddd7803a5c716edac99587626d languageName: node linkType: hard @@ -6781,7 +6781,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: cefa56383d7451ca79e4bd5a29aaeef6c205a04297213efd149aaead82fc8cde4fb8298e20e6b3613e5696e43f814fb4489805428f6604834fb31f73c6725fa8 + checksum: 10c0/cefa56383d7451ca79e4bd5a29aaeef6c205a04297213efd149aaead82fc8cde4fb8298e20e6b3613e5696e43f814fb4489805428f6604834fb31f73c6725fa8 languageName: node linkType: hard @@ -6796,7 +6796,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: be06f8dab35b5a1bffa7a5982fb26218ddade1acb751288333e3b89d7b4a7dfb5a6371be83876dac0ec2ebe0866d295e8618b778608e1965342986ea448040ec + checksum: 10c0/be06f8dab35b5a1bffa7a5982fb26218ddade1acb751288333e3b89d7b4a7dfb5a6371be83876dac0ec2ebe0866d295e8618b778608e1965342986ea448040ec languageName: node linkType: hard @@ -6811,7 +6811,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 3de5761b32cc70cd61715527f29d8c699c01ab28c195ced972ccbc7025763a373a68f18c9f948c7a7b922e469fd2df7fee5f7536e3f7bad44ffc06d959359333 + checksum: 10c0/3de5761b32cc70cd61715527f29d8c699c01ab28c195ced972ccbc7025763a373a68f18c9f948c7a7b922e469fd2df7fee5f7536e3f7bad44ffc06d959359333 languageName: node linkType: hard @@ -6826,7 +6826,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: b1a45b4d1d5070ca3b5864b920f6c6210c962bdb519abb62b38b1baef9d06737dc3d8ecdb61860b7504a735235a539652f5977c7299ec021da84e6b0f64d988a + checksum: 10c0/b1a45b4d1d5070ca3b5864b920f6c6210c962bdb519abb62b38b1baef9d06737dc3d8ecdb61860b7504a735235a539652f5977c7299ec021da84e6b0f64d988a languageName: node linkType: hard @@ -6850,7 +6850,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: a7b9695092cd4109a7b4a4a66b7f634c42d4f39aa0893621a8ee5e8bc90f8ae27e741df66db726c341a60d2115e3f813520fee1f5cc4fb05d77914b4ade3819f + checksum: 10c0/a7b9695092cd4109a7b4a4a66b7f634c42d4f39aa0893621a8ee5e8bc90f8ae27e741df66db726c341a60d2115e3f813520fee1f5cc4fb05d77914b4ade3819f languageName: node linkType: hard @@ -6865,7 +6865,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: d5fd4e5aa9d9a87c8ad490b3b4992d6f1d9eddf18e56df2a2bcf8744c4332b275d73377fd193df3e6ba0ad9608dc497709beca5c64de2b834d5f5350b3c9a272 + checksum: 10c0/d5fd4e5aa9d9a87c8ad490b3b4992d6f1d9eddf18e56df2a2bcf8744c4332b275d73377fd193df3e6ba0ad9608dc497709beca5c64de2b834d5f5350b3c9a272 languageName: node linkType: hard @@ -6887,7 +6887,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: bfff46919666c122f5b812ee427494ae8408c0eebee30337bd2ce0eedf539f0feaa242f790304ef9df15425b837010ffc6061ce467bedd2c5fd9373bee2b95da + checksum: 10c0/bfff46919666c122f5b812ee427494ae8408c0eebee30337bd2ce0eedf539f0feaa242f790304ef9df15425b837010ffc6061ce467bedd2c5fd9373bee2b95da languageName: node linkType: hard @@ -6903,7 +6903,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: e2859ca58bea171c956098ace7ecf615cf9432f58a118b779a14720746b3adcf0351c36c75de131548672d3cd290ca238198acbd33b88dc4706f98312e9317ad + checksum: 10c0/e2859ca58bea171c956098ace7ecf615cf9432f58a118b779a14720746b3adcf0351c36c75de131548672d3cd290ca238198acbd33b88dc4706f98312e9317ad languageName: node linkType: hard @@ -6932,7 +6932,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 4bd069b79f7046af2c0967b8e43f727cd09834cbd6df1e3d5a943c4f83428ff8b646882737fdf7593c22e261a1d13768a5c020138d79503862ae2e1729081bba + checksum: 10c0/4bd069b79f7046af2c0967b8e43f727cd09834cbd6df1e3d5a943c4f83428ff8b646882737fdf7593c22e261a1d13768a5c020138d79503862ae2e1729081bba languageName: node linkType: hard @@ -6952,7 +6952,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: baf295bbbf09ead37b64ee1dc025a6a540960f5e60552766d78f6065504c67d4bcf49fad5e2073617d9a3011daafad625aa3bd1da7a886c704833b22a49e888f + checksum: 10c0/baf295bbbf09ead37b64ee1dc025a6a540960f5e60552766d78f6065504c67d4bcf49fad5e2073617d9a3011daafad625aa3bd1da7a886c704833b22a49e888f languageName: node linkType: hard @@ -6972,7 +6972,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 67a66ff8898a5e7739eda228ab6f5ce808858da1dce967014138d87e72b6bbfc93dc1467c706d98d1a2b93bf0b6e09233d1a24d31c78227b078444c1a69c42be + checksum: 10c0/67a66ff8898a5e7739eda228ab6f5ce808858da1dce967014138d87e72b6bbfc93dc1467c706d98d1a2b93bf0b6e09233d1a24d31c78227b078444c1a69c42be languageName: node linkType: hard @@ -7000,7 +7000,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 61e3ddfd1647e64fba855434ff41e8e7ba707244fe8841f78c450fbdce525383b64259279475615d030dbf1625cbffd8eeebee72d91bf6978794f5dbcf887fc0 + checksum: 10c0/61e3ddfd1647e64fba855434ff41e8e7ba707244fe8841f78c450fbdce525383b64259279475615d030dbf1625cbffd8eeebee72d91bf6978794f5dbcf887fc0 languageName: node linkType: hard @@ -7040,7 +7040,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 888fffa703a8f79b45c01d5f03ad9aae66250ddfff827bbba4f222c4d0720aa2f01a3e4b6bd80acabaf5e2fa7ad79de9e9dfd14831f7f4c24337d4d8dfb58ccc + checksum: 10c0/888fffa703a8f79b45c01d5f03ad9aae66250ddfff827bbba4f222c4d0720aa2f01a3e4b6bd80acabaf5e2fa7ad79de9e9dfd14831f7f4c24337d4d8dfb58ccc languageName: node linkType: hard @@ -7060,7 +7060,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 87bcde47343f2bc4439a0dc34381f557905d9b3c1e8c5a0d32ceea62a8ef84f3abf671c5cb29309fc87759ad41d39af619ba546cf54109d64c8746e3ca683de3 + checksum: 10c0/87bcde47343f2bc4439a0dc34381f557905d9b3c1e8c5a0d32ceea62a8ef84f3abf671c5cb29309fc87759ad41d39af619ba546cf54109d64c8746e3ca683de3 languageName: node linkType: hard @@ -7076,7 +7076,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 3af6ea4891e6fa8091e666802adffe7718b3cd390a10fa9229a5f40f8efded9f3918ea01b046103d93923d41cc32119505ebb6bde76cad07a87b6cf4f2119347 + checksum: 10c0/3af6ea4891e6fa8091e666802adffe7718b3cd390a10fa9229a5f40f8efded9f3918ea01b046103d93923d41cc32119505ebb6bde76cad07a87b6cf4f2119347 languageName: node linkType: hard @@ -7102,7 +7102,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 4f4761965022759ac0950ac026029b64049e1f18ef07a01ddde788b7606efcb262c9ae3a418de0c0756bf7285182ed0d268502c6f17ba86d2ff27eee5507bbf7 + checksum: 10c0/4f4761965022759ac0950ac026029b64049e1f18ef07a01ddde788b7606efcb262c9ae3a418de0c0756bf7285182ed0d268502c6f17ba86d2ff27eee5507bbf7 languageName: node linkType: hard @@ -7124,7 +7124,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 9b487dad213ea7e70b0aa205e7c6f790a6f2bf394c39912e22dbe003403fd0d24a41c2efd31695fc31ab7bac286f28253dbb2fc5202cacd572ebf909f1fdc86c + checksum: 10c0/9b487dad213ea7e70b0aa205e7c6f790a6f2bf394c39912e22dbe003403fd0d24a41c2efd31695fc31ab7bac286f28253dbb2fc5202cacd572ebf909f1fdc86c languageName: node linkType: hard @@ -7150,7 +7150,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 3ed7ebe22ef2e8369e08bb59776671a7b8c413628249c338b8db86b4b9ac40127b4201d5bd4a9c23ea1fd21464769b4fa427d3ebcda3a7fcdbd45b256b5a753a + checksum: 10c0/3ed7ebe22ef2e8369e08bb59776671a7b8c413628249c338b8db86b4b9ac40127b4201d5bd4a9c23ea1fd21464769b4fa427d3ebcda3a7fcdbd45b256b5a753a languageName: node linkType: hard @@ -7165,7 +7165,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 331b432be1edc960ca148637ae6087220873ee828ceb13bd155926ef8f49e862812de5b379129f6aaefcd11be53715f3237e6caa9a33d9c0abfff43f3ba58938 + checksum: 10c0/331b432be1edc960ca148637ae6087220873ee828ceb13bd155926ef8f49e862812de5b379129f6aaefcd11be53715f3237e6caa9a33d9c0abfff43f3ba58938 languageName: node linkType: hard @@ -7181,7 +7181,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 29b069dbf09e48bca321af6272574ad0fc7283174e7d092731a10663fe00c0e6b4bde5e1b5ea67725fe48dcbe8026e7ff0d69d42891c62cbb9ca408498171fbe + checksum: 10c0/29b069dbf09e48bca321af6272574ad0fc7283174e7d092731a10663fe00c0e6b4bde5e1b5ea67725fe48dcbe8026e7ff0d69d42891c62cbb9ca408498171fbe languageName: node linkType: hard @@ -7197,7 +7197,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 3c94c78902dcb40b60083ee2184614f45c95a189178f52d89323b467bd04bcf5fdb1bc4d43debecd7f0b572c3843c7e04edbcb56f40a4b4b43936fb2770fb8ad + checksum: 10c0/3c94c78902dcb40b60083ee2184614f45c95a189178f52d89323b467bd04bcf5fdb1bc4d43debecd7f0b572c3843c7e04edbcb56f40a4b4b43936fb2770fb8ad languageName: node linkType: hard @@ -7212,7 +7212,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 13cd0c38395c5838bc9a18238020d3bcf67fb340039e6d1cbf438be1b91d64cf6900b78121f3dc9219faeb40dcc7b523ce0f17e4a41631655690e5a30a40886a + checksum: 10c0/13cd0c38395c5838bc9a18238020d3bcf67fb340039e6d1cbf438be1b91d64cf6900b78121f3dc9219faeb40dcc7b523ce0f17e4a41631655690e5a30a40886a languageName: node linkType: hard @@ -7227,7 +7227,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: f5fbc602108668484a4ed506b7842482222d1d03094362e26abb7fdd593eee8794fc47d85b3524fb9d00884801c89a6eefd0bed0971eba1ec189c637b6afd398 + checksum: 10c0/f5fbc602108668484a4ed506b7842482222d1d03094362e26abb7fdd593eee8794fc47d85b3524fb9d00884801c89a6eefd0bed0971eba1ec189c637b6afd398 languageName: node linkType: hard @@ -7243,7 +7243,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 94c5ab31dfd3678c0cb77a30025e82b3a287577c1a8674b0d703a36d27434bc9c59790e0bebf57ed153f0b8e0d8c3b9675fc9787b9eac525a09abcda8fa9e7eb + checksum: 10c0/94c5ab31dfd3678c0cb77a30025e82b3a287577c1a8674b0d703a36d27434bc9c59790e0bebf57ed153f0b8e0d8c3b9675fc9787b9eac525a09abcda8fa9e7eb languageName: node linkType: hard @@ -7259,7 +7259,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: b109a4b3781781c4dc641a1173f0a6fcb0b0f7b2d7cdba5848a46070c9fb4e518909a46c20a3c2efbc78737c64859c59ead837f2940e8c8394d1c503ef58773b + checksum: 10c0/b109a4b3781781c4dc641a1173f0a6fcb0b0f7b2d7cdba5848a46070c9fb4e518909a46c20a3c2efbc78737c64859c59ead837f2940e8c8394d1c503ef58773b languageName: node linkType: hard @@ -7279,7 +7279,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 0cbc12c2156b3fa0e40090cafd8525ce84c16a6b5a038a8e8fc7cbb16ed6da9ab369593962c57a18c41a16ec8713e0195c68ea34072ef1ca254ed4d4c0770bb4 + checksum: 10c0/0cbc12c2156b3fa0e40090cafd8525ce84c16a6b5a038a8e8fc7cbb16ed6da9ab369593962c57a18c41a16ec8713e0195c68ea34072ef1ca254ed4d4c0770bb4 languageName: node linkType: hard @@ -7288,7 +7288,7 @@ __metadata: resolution: "@radix-ui/rect@npm:1.0.1" dependencies: "@babel/runtime": "npm:^7.13.10" - checksum: 4c5159661340acc31b11e1f2ebd87a1521d39bfa287544dd2cd75b399539a4b625d38a1501c90ceae21fcca18ed164b0c3735817ff140ae334098192c110e571 + checksum: 10c0/4c5159661340acc31b11e1f2ebd87a1521d39bfa287544dd2cd75b399539a4b625d38a1501c90ceae21fcca18ed164b0c3735817ff140ae334098192c110e571 languageName: node linkType: hard @@ -7300,7 +7300,7 @@ __metadata: pretty: "npm:2.0.0" react: "npm:18.2.0" react-dom: "npm:18.2.0" - checksum: ea0db578ef58734160ac512d04de5b09f558d192fbb74c0b9bdb3006e91d0d73ee7d77007f4740bef0d587f8b231f8dba5ef01e16e18d2deb37859ddd2e7d09a + checksum: 10c0/ea0db578ef58734160ac512d04de5b09f558d192fbb74c0b9bdb3006e91d0d73ee7d77007f4740bef0d587f8b231f8dba5ef01e16e18d2deb37859ddd2e7d09a languageName: node linkType: hard @@ -7312,7 +7312,7 @@ __metadata: pretty: "npm:2.0.0" react: "npm:18.2.0" react-dom: "npm:18.2.0" - checksum: 12c1767995e0994cfeb8e81b17ea6a326db25d3bb290297d2889cde0b37de02384ad1fb36f9902ac9a147b8ff0a4cb1134b0c2aa17b59ec154441b553d4e09c1 + checksum: 10c0/12c1767995e0994cfeb8e81b17ea6a326db25d3bb290297d2889cde0b37de02384ad1fb36f9902ac9a147b8ff0a4cb1134b0c2aa17b59ec154441b553d4e09c1 languageName: node linkType: hard @@ -7321,7 +7321,7 @@ __metadata: resolution: "@redis/bloom@npm:1.2.0" peerDependencies: "@redis/client": ^1.0.0 - checksum: 7dde8e67188164e96226c8a5c78ebd2801f1662947371e78fb95fb180c1e9ddff8d237012eb5e9182775be61cb546f67f759927cdaee0d178d863ee290e1fb27 + checksum: 10c0/7dde8e67188164e96226c8a5c78ebd2801f1662947371e78fb95fb180c1e9ddff8d237012eb5e9182775be61cb546f67f759927cdaee0d178d863ee290e1fb27 languageName: node linkType: hard @@ -7332,7 +7332,7 @@ __metadata: cluster-key-slot: "npm:1.1.2" generic-pool: "npm:3.9.0" yallist: "npm:4.0.0" - checksum: 17e2225dc0874842943ba2fd9fb5fa8e95424948e73215aa7ee2060c42b4ccd373fc0bd657e85858630374338db6b203058e1c83b0794c5934bdbeb40e90d5dd + checksum: 10c0/17e2225dc0874842943ba2fd9fb5fa8e95424948e73215aa7ee2060c42b4ccd373fc0bd657e85858630374338db6b203058e1c83b0794c5934bdbeb40e90d5dd languageName: node linkType: hard @@ -7341,7 +7341,7 @@ __metadata: resolution: "@redis/graph@npm:1.1.0" peerDependencies: "@redis/client": ^1.0.0 - checksum: 2b30ea2a67a07b312f42b5fe1dce770c0559c153faaca64d53ef8a479438108b32260e9701d12addb50ccc4ea1df8a949ea5e802c13ead689c635d65bad1bc3a + checksum: 10c0/2b30ea2a67a07b312f42b5fe1dce770c0559c153faaca64d53ef8a479438108b32260e9701d12addb50ccc4ea1df8a949ea5e802c13ead689c635d65bad1bc3a languageName: node linkType: hard @@ -7350,7 +7350,7 @@ __metadata: resolution: "@redis/json@npm:1.0.4" peerDependencies: "@redis/client": ^1.0.0 - checksum: 6c1585c046909125170c2d3c970e1b11680279df2ae58af1017b638c1c118a285cd83d1fc96d9826860071772ebe978d71dfc46a784862ac1e9c952633e757d0 + checksum: 10c0/6c1585c046909125170c2d3c970e1b11680279df2ae58af1017b638c1c118a285cd83d1fc96d9826860071772ebe978d71dfc46a784862ac1e9c952633e757d0 languageName: node linkType: hard @@ -7359,7 +7359,7 @@ __metadata: resolution: "@redis/search@npm:1.1.3" peerDependencies: "@redis/client": ^1.0.0 - checksum: 3ca704b294a47ba21ad83d1caceb1b75c12c2e751b6e98a092cb42c97726071917f7249e00a162e4f76e196f3b4d0353539f3c6a2750d807f444ce3f78320817 + checksum: 10c0/3ca704b294a47ba21ad83d1caceb1b75c12c2e751b6e98a092cb42c97726071917f7249e00a162e4f76e196f3b4d0353539f3c6a2750d807f444ce3f78320817 languageName: node linkType: hard @@ -7368,7 +7368,7 @@ __metadata: resolution: "@redis/time-series@npm:1.0.4" peerDependencies: "@redis/client": ^1.0.0 - checksum: ec637500f1544384724ed57542274b70f9f0c2f2a5253fcdb63c809322167996740f4effd3666e4984600684fb37eb79efe6ab09309e36b68c964cbd8789641c + checksum: 10c0/ec637500f1544384724ed57542274b70f9f0c2f2a5253fcdb63c809322167996740f4effd3666e4984600684fb37eb79efe6ab09309e36b68c964cbd8789641c languageName: node linkType: hard @@ -8800,7 +8800,7 @@ __metadata: "@repeaterjs/repeater@npm:3.0.4, @repeaterjs/repeater@npm:^3.0.4": version: 3.0.4 resolution: "@repeaterjs/repeater@npm:3.0.4" - checksum: 9a2928d70f2be4a8f72857f8f7553810015ac970f174b4b20f07289644379af57fa68947601d67e557c1a7c33ddf805e787cf2a1d5e9037ba485d24075a81b6b + checksum: 10c0/9a2928d70f2be4a8f72857f8f7553810015ac970f174b4b20f07289644379af57fa68947601d67e557c1a7c33ddf805e787cf2a1d5e9037ba485d24075a81b6b languageName: node linkType: hard @@ -8908,7 +8908,7 @@ __metadata: peerDependenciesMeta: prettier: optional: true - checksum: 275247e686cc999d91623d67ce09171f9ed17764616bb7941877439ce44b1cba305ac049e91981660cd8690f18d797cd27cecdf26cf436eb81895093e0223f42 + checksum: 10c0/275247e686cc999d91623d67ce09171f9ed17764616bb7941877439ce44b1cba305ac049e91981660cd8690f18d797cd27cecdf26cf436eb81895093e0223f42 languageName: node linkType: hard @@ -8918,7 +8918,7 @@ __metadata: dependencies: domhandler: "npm:^5.0.3" selderee: "npm:^0.10.0" - checksum: 361596e51f4593cb74c6eb482401577f00d75f2d5297f1b0b7606de7360b52703ec1e0006f7c32aeb12a8e35ba0bc38e6bc1cef48c2419d9ca01e6f4fa9ea6f1 + checksum: 10c0/361596e51f4593cb74c6eb482401577f00d75f2d5297f1b0b7606de7360b52703ec1e0006f7c32aeb12a8e35ba0bc38e6bc1cef48c2419d9ca01e6f4fa9ea6f1 languageName: node linkType: hard @@ -8928,7 +8928,7 @@ __metadata: dependencies: domhandler: "npm:^5.0.3" selderee: "npm:^0.11.0" - checksum: e938ba9aeb31a9cf30dcb2977ef41685c598bf744bedc88c57aa9e8b7e71b51781695cf99c08aac50773fd7714eba670bd2a079e46db0788abe40c6d220084eb + checksum: 10c0/e938ba9aeb31a9cf30dcb2977ef41685c598bf744bedc88c57aa9e8b7e71b51781695cf99c08aac50773fd7714eba670bd2a079e46db0788abe40c6d220084eb languageName: node linkType: hard @@ -8937,28 +8937,28 @@ __metadata: resolution: "@sigstore/bundle@npm:2.1.1" dependencies: "@sigstore/protobuf-specs": "npm:^0.2.1" - checksum: d3e358569e9b0f1a2c5bfa3ab8608046fc11f42424ea717b4871044cf9ecbff374fc08673b9858ec93f993fa1a6166d416b1245a0d13d0f856ea5de99e27a594 + checksum: 10c0/d3e358569e9b0f1a2c5bfa3ab8608046fc11f42424ea717b4871044cf9ecbff374fc08673b9858ec93f993fa1a6166d416b1245a0d13d0f856ea5de99e27a594 languageName: node linkType: hard "@sigstore/core@npm:^0.2.0": version: 0.2.0 resolution: "@sigstore/core@npm:0.2.0" - checksum: b3da01c5369ba7e02b3f56921d0e3da8d6527d005d1bf6e90fbebf4211541c068a2a18e65f205ff7bcaa9ca3f41c7261396e7d4b4ad05b0aedca2e3bae0405eb + checksum: 10c0/b3da01c5369ba7e02b3f56921d0e3da8d6527d005d1bf6e90fbebf4211541c068a2a18e65f205ff7bcaa9ca3f41c7261396e7d4b4ad05b0aedca2e3bae0405eb languageName: node linkType: hard "@sigstore/protobuf-specs@npm:^0.1.0": version: 0.1.0 resolution: "@sigstore/protobuf-specs@npm:0.1.0" - checksum: fa373952653d4ea32c593f754cf04c56a57287c7357e830c9ded10c47318fe8e9ec82900109e63f60380828145928ec67f4a6229fc73da45b9771a3139e82f8f + checksum: 10c0/fa373952653d4ea32c593f754cf04c56a57287c7357e830c9ded10c47318fe8e9ec82900109e63f60380828145928ec67f4a6229fc73da45b9771a3139e82f8f languageName: node linkType: hard "@sigstore/protobuf-specs@npm:^0.2.1": version: 0.2.1 resolution: "@sigstore/protobuf-specs@npm:0.2.1" - checksum: 756b3bc64e7f21d966473208cd3920fcde6744025f7deb1d3be1d2b6261b825178b393db7458cd191b2eab947e516eacd6f91aa2f4545d8c045431fb699ac357 + checksum: 10c0/756b3bc64e7f21d966473208cd3920fcde6744025f7deb1d3be1d2b6261b825178b393db7458cd191b2eab947e516eacd6f91aa2f4545d8c045431fb699ac357 languageName: node linkType: hard @@ -8970,7 +8970,7 @@ __metadata: "@sigstore/core": "npm:^0.2.0" "@sigstore/protobuf-specs": "npm:^0.2.1" make-fetch-happen: "npm:^13.0.0" - checksum: 482206264bdf517fe54d08171942219b4541704f5dec9ecb169687d545b1437c5a1493ab5ea84e87180f777d7476f0154828f0ce978f55071b0117d5687f3f9c + checksum: 10c0/482206264bdf517fe54d08171942219b4541704f5dec9ecb169687d545b1437c5a1493ab5ea84e87180f777d7476f0154828f0ce978f55071b0117d5687f3f9c languageName: node linkType: hard @@ -8980,7 +8980,7 @@ __metadata: dependencies: "@sigstore/protobuf-specs": "npm:^0.1.0" tuf-js: "npm:^1.1.7" - checksum: de76e20e6c131b118aa721c62efa1f7512ecbe3d94044770ddc06edb5d78be79fef0da1b81b69c2b012ed6fd2ace0fe0080e5dbdc40703d170de550188befb34 + checksum: 10c0/de76e20e6c131b118aa721c62efa1f7512ecbe3d94044770ddc06edb5d78be79fef0da1b81b69c2b012ed6fd2ace0fe0080e5dbdc40703d170de550188befb34 languageName: node linkType: hard @@ -8990,7 +8990,7 @@ __metadata: dependencies: "@sigstore/protobuf-specs": "npm:^0.2.1" tuf-js: "npm:^2.2.0" - checksum: a214561e143f553132428597eaa68cfdcb36c6bf757f3dea30b2e55038433b0ffc53c446036e6d104487fb55f8d6bc6e01764090d29f42497fb44d55017f360c + checksum: 10c0/a214561e143f553132428597eaa68cfdcb36c6bf757f3dea30b2e55038433b0ffc53c446036e6d104487fb55f8d6bc6e01764090d29f42497fb44d55017f360c languageName: node linkType: hard @@ -9001,7 +9001,7 @@ __metadata: "@sigstore/bundle": "npm:^2.1.1" "@sigstore/core": "npm:^0.2.0" "@sigstore/protobuf-specs": "npm:^0.2.1" - checksum: 3eeb4817ac38dc7b337a48e75c4e88226a5553c32594fa8c22221087a69656a7ccfe68e6f59eb12f1ecc506ea6c6db90e4b312c7dcc4a66c04e01434dc607fc7 + checksum: 10c0/3eeb4817ac38dc7b337a48e75c4e88226a5553c32594fa8c22221087a69656a7ccfe68e6f59eb12f1ecc506ea6c6db90e4b312c7dcc4a66c04e01434dc607fc7 languageName: node linkType: hard @@ -9010,7 +9010,7 @@ __metadata: resolution: "@simplewebauthn/browser@npm:7.4.0" dependencies: "@simplewebauthn/typescript-types": "npm:^7.4.0" - checksum: cd69d51511e1bb75603b254b706194e8b7c3849e8f02fcb373cc8bb8c789df803a1bb900de7853c0cc63c0ad81fd56497ca63885638d566137afa387674099ad + checksum: 10c0/cd69d51511e1bb75603b254b706194e8b7c3849e8f02fcb373cc8bb8c789df803a1bb900de7853c0cc63c0ad81fd56497ca63885638d566137afa387674099ad languageName: node linkType: hard @@ -9020,7 +9020,7 @@ __metadata: dependencies: "@simplewebauthn/typescript-types": "npm:^7.4.0" "@types/node": "npm:^18.11.9" - checksum: 66a3eabb8fca5a8f779d428b358c8fc02dd2496f9cafda882f3b19562e5c9d21a8af3082f635c7ff0a1914e33a87817be0d16307f5327606149a52e854406cbb + checksum: 10c0/66a3eabb8fca5a8f779d428b358c8fc02dd2496f9cafda882f3b19562e5c9d21a8af3082f635c7ff0a1914e33a87817be0d16307f5327606149a52e854406cbb languageName: node linkType: hard @@ -9041,28 +9041,28 @@ __metadata: cbor-x: "npm:^1.4.1" cross-fetch: "npm:^3.1.5" debug: "npm:^4.3.2" - checksum: 51858ad0bcfb55b96c8dd4a337ed93baf000ccf55cdf13f9f87c96e54c0fa80b0fb0eb96fc570d9e039a2526d770a1a21811a03a15f9ad23a02142ff9ba8ad6e + checksum: 10c0/51858ad0bcfb55b96c8dd4a337ed93baf000ccf55cdf13f9f87c96e54c0fa80b0fb0eb96fc570d9e039a2526d770a1a21811a03a15f9ad23a02142ff9ba8ad6e languageName: node linkType: hard "@simplewebauthn/typescript-types@npm:7.4.0, @simplewebauthn/typescript-types@npm:^7.4.0": version: 7.4.0 resolution: "@simplewebauthn/typescript-types@npm:7.4.0" - checksum: b7aefd742d2f483531ff96509475571339660addba1f140883d8e489601d6a3a5b1c6759aa5ba27a9da5b502709aee9f060a4d4e57010f32c94eb5c42ef562a3 + checksum: 10c0/b7aefd742d2f483531ff96509475571339660addba1f140883d8e489601d6a3a5b1c6759aa5ba27a9da5b502709aee9f060a4d4e57010f32c94eb5c42ef562a3 languageName: node linkType: hard "@sinclair/typebox@npm:^0.27.8": version: 0.27.8 resolution: "@sinclair/typebox@npm:0.27.8" - checksum: ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e languageName: node linkType: hard "@sindresorhus/is@npm:^0.14.0": version: 0.14.0 resolution: "@sindresorhus/is@npm:0.14.0" - checksum: 7247aa9314d4fc3df9b3f63d8b5b962a89c7600a5db1f268546882bfc4d31a975a899f5f42a09dd41a11e58636e6402f7c40f92df853aee417247bb11faee9a0 + checksum: 10c0/7247aa9314d4fc3df9b3f63d8b5b962a89c7600a5db1f268546882bfc4d31a975a899f5f42a09dd41a11e58636e6402f7c40f92df853aee417247bb11faee9a0 languageName: node linkType: hard @@ -9071,7 +9071,7 @@ __metadata: resolution: "@sinonjs/commons@npm:3.0.0" dependencies: type-detect: "npm:4.0.8" - checksum: 1df9cd257942f4e4960dfb9fd339d9e97b6a3da135f3d5b8646562918e863809cb8e00268535f4f4723535d2097881c8fc03d545c414d8555183376cfc54ee84 + checksum: 10c0/1df9cd257942f4e4960dfb9fd339d9e97b6a3da135f3d5b8646562918e863809cb8e00268535f4f4723535d2097881c8fc03d545c414d8555183376cfc54ee84 languageName: node linkType: hard @@ -9080,7 +9080,7 @@ __metadata: resolution: "@sinonjs/fake-timers@npm:10.3.0" dependencies: "@sinonjs/commons": "npm:^3.0.0" - checksum: 2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 languageName: node linkType: hard @@ -9090,7 +9090,7 @@ __metadata: dependencies: "@storybook/addon-highlight": "npm:7.6.10" axe-core: "npm:^4.2.0" - checksum: dfbf9d1ea10d313cb3855693c68264c0ced28c88aaecd0556bb62ce9ee01e38294aaa5298d9a136313c35cb9edaed447d9aef063802d1862119e78d8d03404db + checksum: 10c0/dfbf9d1ea10d313cb3855693c68264c0ced28c88aaecd0556bb62ce9ee01e38294aaa5298d9a136313c35cb9edaed447d9aef063802d1862119e78d8d03404db languageName: node linkType: hard @@ -9104,7 +9104,7 @@ __metadata: dequal: "npm:^2.0.2" polished: "npm:^4.2.2" uuid: "npm:^9.0.0" - checksum: 1b394d0be63400963fcecc0f50ef8554185d628f8c5b29f357656eaa9d6a52e40560ac8f34140fa7c7de15c13b910d7c0585a23e3e23bbf0068e94f7bcc4f382 + checksum: 10c0/1b394d0be63400963fcecc0f50ef8554185d628f8c5b29f357656eaa9d6a52e40560ac8f34140fa7c7de15c13b910d7c0585a23e3e23bbf0068e94f7bcc4f382 languageName: node linkType: hard @@ -9115,7 +9115,7 @@ __metadata: "@storybook/global": "npm:^5.0.0" memoizerific: "npm:^1.11.3" ts-dedent: "npm:^2.0.0" - checksum: 3dab198f8bec8525e9ad0f31d9b8a98d4debb224ce81b91cd96199018de300cb08b36b337e580a532646db4de3580fee3606be4bf2f86867b1e02ec4bca54bff + checksum: 10c0/3dab198f8bec8525e9ad0f31d9b8a98d4debb224ce81b91cd96199018de300cb08b36b337e580a532646db4de3580fee3606be4bf2f86867b1e02ec4bca54bff languageName: node linkType: hard @@ -9126,7 +9126,7 @@ __metadata: "@storybook/blocks": "npm:7.6.10" lodash: "npm:^4.17.21" ts-dedent: "npm:^2.0.0" - checksum: 4af41964c74c8eeb2420a8922a1a2725efd7ea8d8a06a5c897885a3fc09cccaa05035738cff7089df352e345696ae6781ceef0e6e9626c749760bb2d5ad37513 + checksum: 10c0/4af41964c74c8eeb2420a8922a1a2725efd7ea8d8a06a5c897885a3fc09cccaa05035738cff7089df352e345696ae6781ceef0e6e9626c749760bb2d5ad37513 languageName: node linkType: hard @@ -9156,7 +9156,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: d30f0cbd4f6edd454b47fad2ece36de0fe246d2b2a5b90f505ad76b9991dc8572822c758e0b48ae5f9d04b46581ebf9bd86d1ed257317d7453fe1cbc4d58cf93 + checksum: 10c0/d30f0cbd4f6edd454b47fad2ece36de0fe246d2b2a5b90f505ad76b9991dc8572822c758e0b48ae5f9d04b46581ebf9bd86d1ed257317d7453fe1cbc4d58cf93 languageName: node linkType: hard @@ -9181,7 +9181,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 4fdaac14b2b0be6ac6cfe7d43760cbffd6be612917c4f3f553512b655ef6460fe9f4734eccc85b0358ca1a51e8b0f82ce94f70866ac56729903e4626a0ee39ae + checksum: 10c0/4fdaac14b2b0be6ac6cfe7d43760cbffd6be612917c4f3f553512b655ef6460fe9f4734eccc85b0358ca1a51e8b0f82ce94f70866ac56729903e4626a0ee39ae languageName: node linkType: hard @@ -9190,7 +9190,7 @@ __metadata: resolution: "@storybook/addon-highlight@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" - checksum: 879fa4723150fa1c0d7eb975144d0194571f1343c10c3b105032ecf1f678da8d1b65fa895b1e74b68f0770596fc90ca43c734b81b88b79722b63f726a66827fc + checksum: 10c0/879fa4723150fa1c0d7eb975144d0194571f1343c10c3b105032ecf1f678da8d1b65fa895b1e74b68f0770596fc90ca43c734b81b88b79722b63f726a66827fc languageName: node linkType: hard @@ -9200,7 +9200,7 @@ __metadata: dependencies: "@storybook/global": "npm:^5.0.0" tiny-invariant: "npm:^1.3.1" - checksum: ee5bcebfe1827fc290d8f26b673f3b209037c08b2e7f3711b581238bb9a58214ef318bd63f0ceb6ce162e0976260d5f880b73c72226da0ba5e6ec7a0777e282b + checksum: 10c0/ee5bcebfe1827fc290d8f26b673f3b209037c08b2e7f3711b581238bb9a58214ef318bd63f0ceb6ce162e0976260d5f880b73c72226da0ba5e6ec7a0777e282b languageName: node linkType: hard @@ -9210,14 +9210,14 @@ __metadata: dependencies: "@storybook/global": "npm:^5.0.0" ts-dedent: "npm:^2.0.0" - checksum: 81fa670e385311a9430fc7037aa20a90bf8c5e8731c52cac2d0f575e893c24e8747e961267a4d4d72ba8bd440063d5cb7671d97527b1403fbd17cca2c79611b8 + checksum: 10c0/81fa670e385311a9430fc7037aa20a90bf8c5e8731c52cac2d0f575e893c24e8747e961267a4d4d72ba8bd440063d5cb7671d97527b1403fbd17cca2c79611b8 languageName: node linkType: hard "@storybook/addon-toolbars@npm:7.6.10": version: 7.6.10 resolution: "@storybook/addon-toolbars@npm:7.6.10" - checksum: 876808b468b0baf60c275349fde43e12f3aa1a362d7b3d72f78f3ac63e54020b4999da21cee4a542c671cd01238da051c2ecbcf7ce05e063bdde801453230e2e + checksum: 10c0/876808b468b0baf60c275349fde43e12f3aa1a362d7b3d72f78f3ac63e54020b4999da21cee4a542c671cd01238da051c2ecbcf7ce05e063bdde801453230e2e languageName: node linkType: hard @@ -9226,7 +9226,7 @@ __metadata: resolution: "@storybook/addon-viewport@npm:7.6.10" dependencies: memoizerific: "npm:^1.11.3" - checksum: 97ee1bd3a64a715b0bbf28eeb430107fc02cf568d2e0a6f2b8b1ac161b8355a2e384de6a81ded98f08f9bd1f78329d928f3c73ff0556c57b8dc0684c05e5ed64 + checksum: 10c0/97ee1bd3a64a715b0bbf28eeb430107fc02cf568d2e0a6f2b8b1ac161b8355a2e384de6a81ded98f08f9bd1f78329d928f3c73ff0556c57b8dc0684c05e5ed64 languageName: node linkType: hard @@ -9260,7 +9260,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a24947dcfbfda75f1a2f5c07f1a2a35d98960ce985c4dde1520169020b40ba85192c25e61b31e104d739bfecc4b7f03e05e31c8954024f2a08e6c13a54b1acd1 + checksum: 10c0/a24947dcfbfda75f1a2f5c07f1a2a35d98960ce985c4dde1520169020b40ba85192c25e61b31e104d739bfecc4b7f03e05e31c8954024f2a08e6c13a54b1acd1 languageName: node linkType: hard @@ -9284,7 +9284,7 @@ __metadata: fs-extra: "npm:^11.1.0" process: "npm:^0.11.10" util: "npm:^0.12.4" - checksum: 06294f7a54241b320c92a241812d4e8a36b6ecf7d76fe1befd855f8fae77f8545d1168f3f6f005a5224afdc788e529cf822162b31fcd9a172b271ae46f815d38 + checksum: 10c0/06294f7a54241b320c92a241812d4e8a36b6ecf7d76fe1befd855f8fae77f8545d1168f3f6f005a5224afdc788e529cf822162b31fcd9a172b271ae46f815d38 languageName: node linkType: hard @@ -9333,7 +9333,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 8771a1666d41d3318d5fbb34c5307ca75c3e526293cc9db8b915750526ea5f238c0e3368eb2980f9dc205f2b0f5c29263ed38238461591d006abeb9ab34efa60 + checksum: 10c0/8771a1666d41d3318d5fbb34c5307ca75c3e526293cc9db8b915750526ea5f238c0e3368eb2980f9dc205f2b0f5c29263ed38238461591d006abeb9ab34efa60 languageName: node linkType: hard @@ -9347,7 +9347,7 @@ __metadata: qs: "npm:^6.10.0" telejson: "npm:^7.2.0" tiny-invariant: "npm:^1.3.1" - checksum: 4c7522701fd4b0e2c6c9bca2513ff38f97cdbbaf4f9d3d3d02f3aafce4b7395151232aaa70af5b33b9c830008b6e7ab6149d16ab6b6bebcce4593dbb0c42aec2 + checksum: 10c0/4c7522701fd4b0e2c6c9bca2513ff38f97cdbbaf4f9d3d3d02f3aafce4b7395151232aaa70af5b33b9c830008b6e7ab6149d16ab6b6bebcce4593dbb0c42aec2 languageName: node linkType: hard @@ -9398,7 +9398,7 @@ __metadata: bin: getstorybook: ./bin/index.js sb: ./bin/index.js - checksum: 7f6d5193f1fd7e2ff89189925e82f52bda1ada726d9cf368179e62e34d29fe9540c33a7f8df5e24340ce254a7743c78631dd6dc4469c33d565aaf015096ecd32 + checksum: 10c0/7f6d5193f1fd7e2ff89189925e82f52bda1ada726d9cf368179e62e34d29fe9540c33a7f8df5e24340ce254a7743c78631dd6dc4469c33d565aaf015096ecd32 languageName: node linkType: hard @@ -9407,7 +9407,7 @@ __metadata: resolution: "@storybook/client-logger@npm:7.6.10" dependencies: "@storybook/global": "npm:^5.0.0" - checksum: 055ddeedb39a172c1d2f5ee3b3806c8a3fa1b060faea496520aecc513a79661498be1f08ab8720465054bc958910cfceb652b8a725a5254a33e6747a4eb5d869 + checksum: 10c0/055ddeedb39a172c1d2f5ee3b3806c8a3fa1b060faea496520aecc513a79661498be1f08ab8720465054bc958910cfceb652b8a725a5254a33e6747a4eb5d869 languageName: node linkType: hard @@ -9429,7 +9429,7 @@ __metadata: lodash: "npm:^4.17.21" prettier: "npm:^2.8.0" recast: "npm:^0.23.1" - checksum: f6073a99fd7f6cde73bfa3146642a8d1c131274c1c890e1a2c159e9b1442c767839b265e713145507195a1fa8c3b1b962bad4e79d689aa2edccf6805422552ee + checksum: 10c0/f6073a99fd7f6cde73bfa3146642a8d1c131274c1c890e1a2c159e9b1442c767839b265e713145507195a1fa8c3b1b962bad4e79d689aa2edccf6805422552ee languageName: node linkType: hard @@ -9450,7 +9450,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 1f8d9d22a0fc929cbc61704ee0234a0a3b31c163e250801022d9a6e896980963773b47840c26a55911afd2d52e0041a450458f9a9e7916cc34572287f40b2035 + checksum: 10c0/1f8d9d22a0fc929cbc61704ee0234a0a3b31c163e250801022d9a6e896980963773b47840c26a55911afd2d52e0041a450458f9a9e7916cc34572287f40b2035 languageName: node linkType: hard @@ -9460,7 +9460,7 @@ __metadata: dependencies: "@storybook/client-logger": "npm:7.6.10" "@storybook/preview-api": "npm:7.6.10" - checksum: 15e27a56778789cfd2afe03a7722b6bc72302eb5aaea7f0d641008e3a01fa57f2651db5839c539f43cf42ac7783870be67f12411a56a763fa9f38ad74d8cd94c + checksum: 10c0/15e27a56778789cfd2afe03a7722b6bc72302eb5aaea7f0d641008e3a01fa57f2651db5839c539f43cf42ac7783870be67f12411a56a763fa9f38ad74d8cd94c languageName: node linkType: hard @@ -9491,7 +9491,7 @@ __metadata: pretty-hrtime: "npm:^1.0.3" resolve-from: "npm:^5.0.0" ts-dedent: "npm:^2.0.0" - checksum: 0d08aa5b36385ae323f4d4fb940954df90ac4d91ba4f5960d1287b23b43d51116ad92cd4037349f8aace1c0770aac39d2f7d6723e50cf9e79634ea2a42c990e8 + checksum: 10c0/0d08aa5b36385ae323f4d4fb940954df90ac4d91ba4f5960d1287b23b43d51116ad92cd4037349f8aace1c0770aac39d2f7d6723e50cf9e79634ea2a42c990e8 languageName: node linkType: hard @@ -9500,7 +9500,7 @@ __metadata: resolution: "@storybook/core-events@npm:7.6.10" dependencies: ts-dedent: "npm:^2.0.0" - checksum: 9432820a7742621f2eba58e4a121b9f00cf052977d059a32e4e9fe15e877b75c21b4ffd3c925138b59c18c06b3e3ef00c0e67ff3769ee3125e6423cec5a2bc91 + checksum: 10c0/9432820a7742621f2eba58e4a121b9f00cf052977d059a32e4e9fe15e877b75c21b4ffd3c925138b59c18c06b3e3ef00c0e67ff3769ee3125e6423cec5a2bc91 languageName: node linkType: hard @@ -9549,7 +9549,7 @@ __metadata: util-deprecate: "npm:^1.0.2" watchpack: "npm:^2.2.0" ws: "npm:^8.2.3" - checksum: 68e9f02f8e8d405c2cfa50d8eb343515ed93594d4035dbcb7951ae861eeacea22fed865fa2f6b793e804e8b4e252c38cf222aea4b9ef0e2a6b6c5b83f3449195 + checksum: 10c0/68e9f02f8e8d405c2cfa50d8eb343515ed93594d4035dbcb7951ae861eeacea22fed865fa2f6b793e804e8b4e252c38cf222aea4b9ef0e2a6b6c5b83f3449195 languageName: node linkType: hard @@ -9562,7 +9562,7 @@ __metadata: "@storybook/types": "npm:7.6.10" "@types/node": "npm:^18.0.0" ts-dedent: "npm:^2.0.0" - checksum: e7b6a78921753a099bf6e53a990460f1b0b6103e9996490b6f323468cf2466282ec2513654f8aee6c38dbe1498b402ff6e79f009791b2cdadd53e34ccb9d4a35 + checksum: 10c0/e7b6a78921753a099bf6e53a990460f1b0b6103e9996490b6f323468cf2466282ec2513654f8aee6c38dbe1498b402ff6e79f009791b2cdadd53e34ccb9d4a35 languageName: node linkType: hard @@ -9572,7 +9572,7 @@ __metadata: dependencies: "@storybook/csf-tools": "npm:7.6.10" unplugin: "npm:^1.3.1" - checksum: 82e5704db25b4fe41a0a5b6dacec5f01971aa0f69e8bf89f0b6f2867bbb935df986aec74aac2e69d568e53aa06fba45cde6cfa27885344db70bc587d923502bb + checksum: 10c0/82e5704db25b4fe41a0a5b6dacec5f01971aa0f69e8bf89f0b6f2867bbb935df986aec74aac2e69d568e53aa06fba45cde6cfa27885344db70bc587d923502bb languageName: node linkType: hard @@ -9589,7 +9589,7 @@ __metadata: fs-extra: "npm:^11.1.0" recast: "npm:^0.23.1" ts-dedent: "npm:^2.0.0" - checksum: ab0d3ab39fb3a2c1b6e88f504ba23b42717c5186f4bf2222edd800f01f7f2ff781b8651d90e21a844c24b744ce3ffb25b176a619f866ed40c9db45ba5e3a0534 + checksum: 10c0/ab0d3ab39fb3a2c1b6e88f504ba23b42717c5186f4bf2222edd800f01f7f2ff781b8651d90e21a844c24b744ce3ffb25b176a619f866ed40c9db45ba5e3a0534 languageName: node linkType: hard @@ -9598,14 +9598,14 @@ __metadata: resolution: "@storybook/csf@npm:0.1.2" dependencies: type-fest: "npm:^2.19.0" - checksum: b51a55292e5d2af8b1d135a28ecaa94f8860ddfedcb393adfa2cca1ee23853156066f737d8be1cb5412f572781aa525dc0b2f6e4a6f6ce805489f0149efe837c + checksum: 10c0/b51a55292e5d2af8b1d135a28ecaa94f8860ddfedcb393adfa2cca1ee23853156066f737d8be1cb5412f572781aa525dc0b2f6e4a6f6ce805489f0149efe837c languageName: node linkType: hard "@storybook/docs-mdx@npm:^0.1.0": version: 0.1.0 resolution: "@storybook/docs-mdx@npm:0.1.0" - checksum: e4d510f0452a7a3cb09d9617920c18b974f836299dfba38d6b2e62fbfea418d71f340b6c280a87201b1336a7221c7cc16b47794c1f8e81d01dcfa1f599343085 + checksum: 10c0/e4d510f0452a7a3cb09d9617920c18b974f836299dfba38d6b2e62fbfea418d71f340b6c280a87201b1336a7221c7cc16b47794c1f8e81d01dcfa1f599343085 languageName: node linkType: hard @@ -9620,14 +9620,14 @@ __metadata: assert: "npm:^2.1.0" doctrine: "npm:^3.0.0" lodash: "npm:^4.17.21" - checksum: 6d4a7c8385589c9f9ee8bc3847c031452d22491bd6877e6112c241dbf8a1666cc7df3fd5eed09079d15eb6d01325d32b3db9b397e20328237fcc7ba0431d4d9f + checksum: 10c0/6d4a7c8385589c9f9ee8bc3847c031452d22491bd6877e6112c241dbf8a1666cc7df3fd5eed09079d15eb6d01325d32b3db9b397e20328237fcc7ba0431d4d9f languageName: node linkType: hard "@storybook/global@npm:^5.0.0": version: 5.0.0 resolution: "@storybook/global@npm:5.0.0" - checksum: 8f1b61dcdd3a89584540896e659af2ecc700bc740c16909a7be24ac19127ea213324de144a141f7caf8affaed017d064fea0618d453afbe027cf60f54b4a6d0b + checksum: 10c0/8f1b61dcdd3a89584540896e659af2ecc700bc740c16909a7be24ac19127ea213324de144a141f7caf8affaed017d064fea0618d453afbe027cf60f54b4a6d0b languageName: node linkType: hard @@ -9649,35 +9649,35 @@ __metadata: store2: "npm:^2.14.2" telejson: "npm:^7.2.0" ts-dedent: "npm:^2.0.0" - checksum: 99c2cdd18a581f7bc1adb2a167036f61ea72bf48df1c942dabf01674ffa1eb0be7caa96b4b2999a028b35b3bff745af37fc6c52e1f2f2581e8492164c97398e2 + checksum: 10c0/99c2cdd18a581f7bc1adb2a167036f61ea72bf48df1c942dabf01674ffa1eb0be7caa96b4b2999a028b35b3bff745af37fc6c52e1f2f2581e8492164c97398e2 languageName: node linkType: hard "@storybook/manager@npm:7.6.10": version: 7.6.10 resolution: "@storybook/manager@npm:7.6.10" - checksum: c5e6c2ca8c016d2d2b9482f2b72a63718850929993d50eca1d30e0b24b54b25986416deda2dd52fe6c36aaa41498a66066844dfa3bac4db6a2f112789e8607ef + checksum: 10c0/c5e6c2ca8c016d2d2b9482f2b72a63718850929993d50eca1d30e0b24b54b25986416deda2dd52fe6c36aaa41498a66066844dfa3bac4db6a2f112789e8607ef languageName: node linkType: hard "@storybook/mdx2-csf@npm:^1.0.0": version: 1.1.0 resolution: "@storybook/mdx2-csf@npm:1.1.0" - checksum: ba4496a51efae35edb3e509e488cd16066ccf0768d2dc527bbc2650d0bc0f630540985205772d63d1711d1a5dae66136a919077c90fa2ac7a02a13de43446baa + checksum: 10c0/ba4496a51efae35edb3e509e488cd16066ccf0768d2dc527bbc2650d0bc0f630540985205772d63d1711d1a5dae66136a919077c90fa2ac7a02a13de43446baa languageName: node linkType: hard "@storybook/node-logger@npm:7.6.10": version: 7.6.10 resolution: "@storybook/node-logger@npm:7.6.10" - checksum: 6e1946d48c1ed756c3c0a8b082ece63d1e3bd437afdd3abc711ebd68ed913af7e50b3f6b1f79f8b8b94b07e3d3f8bd8adccd42aac9b5c6f886557dd21a0a947e + checksum: 10c0/6e1946d48c1ed756c3c0a8b082ece63d1e3bd437afdd3abc711ebd68ed913af7e50b3f6b1f79f8b8b94b07e3d3f8bd8adccd42aac9b5c6f886557dd21a0a947e languageName: node linkType: hard "@storybook/postinstall@npm:7.6.10": version: 7.6.10 resolution: "@storybook/postinstall@npm:7.6.10" - checksum: 54b1b0712dbe9091e07e35b52a6fc2a06ca40550df1674182f0b819491aea4e232cb605c03ef460b74b04bf5dc331a1b6cd47e8d27d9bcadc61819e136d0ec2e + checksum: 10c0/54b1b0712dbe9091e07e35b52a6fc2a06ca40550df1674182f0b819491aea4e232cb605c03ef460b74b04bf5dc331a1b6cd47e8d27d9bcadc61819e136d0ec2e languageName: node linkType: hard @@ -9711,7 +9711,7 @@ __metadata: optional: true typescript: optional: true - checksum: 25b4ad5650c5a73a9b4502d0b275760d9c9ad1b0b28357f5eda3659020bba411719765790c373930edcf80bc9c7cc845cb5d8ec5626bd978cdfa7db466a5b261 + checksum: 10c0/25b4ad5650c5a73a9b4502d0b275760d9c9ad1b0b28357f5eda3659020bba411719765790c373930edcf80bc9c7cc845cb5d8ec5626bd978cdfa7db466a5b261 languageName: node linkType: hard @@ -9733,14 +9733,14 @@ __metadata: synchronous-promise: "npm:^2.0.15" ts-dedent: "npm:^2.0.0" util-deprecate: "npm:^1.0.2" - checksum: 57d82b807e5d20e6582f0ebd38d0edda393f9712c71aabad16b72567e8978d005e5bf3d8470a8a64ad49b7929bf4ef67f172c66797375273e64fa26db542aabf + checksum: 10c0/57d82b807e5d20e6582f0ebd38d0edda393f9712c71aabad16b72567e8978d005e5bf3d8470a8a64ad49b7929bf4ef67f172c66797375273e64fa26db542aabf languageName: node linkType: hard "@storybook/preview@npm:7.6.10": version: 7.6.10 resolution: "@storybook/preview@npm:7.6.10" - checksum: 519dd85d1c560ee4aa960c4fe9354c5ba5a51eca711bc498f55e5b846860352da53c27939982ab79edebafa4fcb2c7465ccb6e25ba15e5c699d8ed48e6499b8c + checksum: 10c0/519dd85d1c560ee4aa960c4fe9354c5ba5a51eca711bc498f55e5b846860352da53c27939982ab79edebafa4fcb2c7465ccb6e25ba15e5c699d8ed48e6499b8c languageName: node linkType: hard @@ -9758,7 +9758,7 @@ __metadata: peerDependencies: typescript: ">= 4.x" webpack: ">= 4" - checksum: 505a728f36df3f519f4985bdf18f2078ea18a1a8f7f837fc831f971363fb7643a182f01a6857a9729ac5a1246d370526fca5a19017f82e7493af4ca945cb7235 + checksum: 10c0/505a728f36df3f519f4985bdf18f2078ea18a1a8f7f837fc831f971363fb7643a182f01a6857a9729ac5a1246d370526fca5a19017f82e7493af4ca945cb7235 languageName: node linkType: hard @@ -9768,7 +9768,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 4626bfa823440f142835e9a7750a1e6aeeb573ba80eb94d42435814168b52288dc0dd79373ebe54699107f2a7b6d0f10f76fac786e17c9208dbec47ef73806a0 + checksum: 10c0/4626bfa823440f142835e9a7750a1e6aeeb573ba80eb94d42435814168b52288dc0dd79373ebe54699107f2a7b6d0f10f76fac786e17c9208dbec47ef73806a0 languageName: node linkType: hard @@ -9790,7 +9790,7 @@ __metadata: optional: true typescript: optional: true - checksum: 9406f464f0fcfb9c226b1b962194e06b9445527bd2d6c0e6e99074d4174b69992fb99b8d2e069977030c879cf4296c6ea0cc6675e0022cc51f9c54f05fe2ca07 + checksum: 10c0/9406f464f0fcfb9c226b1b962194e06b9445527bd2d6c0e6e99074d4174b69992fb99b8d2e069977030c879cf4296c6ea0cc6675e0022cc51f9c54f05fe2ca07 languageName: node linkType: hard @@ -9826,7 +9826,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: eabdeb5420a24b4fe7b80d31ae4eb9a230af68f16e57117eccb08adea785c623f4863afd97596329d77992e550dc64490871dad65d9b1e2c3e64d3d4e7f3046e + checksum: 10c0/eabdeb5420a24b4fe7b80d31ae4eb9a230af68f16e57117eccb08adea785c623f4863afd97596329d77992e550dc64490871dad65d9b1e2c3e64d3d4e7f3046e languageName: node linkType: hard @@ -9837,7 +9837,7 @@ __metadata: "@storybook/client-logger": "npm:7.6.10" memoizerific: "npm:^1.11.3" qs: "npm:^6.10.0" - checksum: 3899b7aa525243ce57f26621d9e5602d7168887d26a98c03b0cc935c8fd98d17ec6dde3cca34226f8fe29f5f292b1fa329e762a4a6a75edbe87592512640705e + checksum: 10c0/3899b7aa525243ce57f26621d9e5602d7168887d26a98c03b0cc935c8fd98d17ec6dde3cca34226f8fe29f5f292b1fa329e762a4a6a75edbe87592512640705e languageName: node linkType: hard @@ -9853,7 +9853,7 @@ __metadata: fetch-retry: "npm:^5.0.2" fs-extra: "npm:^11.1.0" read-pkg-up: "npm:^7.0.1" - checksum: a0cc6b2b4979cf91917f21e200bb58e29080d252c86e4ea58f7776e6991fc9ff8f1e43122caa87e80b630a43630da2b16e451cb5cd903f3554ff531e9764052e + checksum: 10c0/a0cc6b2b4979cf91917f21e200bb58e29080d252c86e4ea58f7776e6991fc9ff8f1e43122caa87e80b630a43630da2b16e451cb5cd903f3554ff531e9764052e languageName: node linkType: hard @@ -9868,7 +9868,7 @@ __metadata: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 999bd56a2914d247c82c6b723eb3244e34add13d6c504c8913dbfdb6e5b16144e12e4d9ceba2371e69ba374498117dbc39c609c78fb58375459dcf62e84f31e8 + checksum: 10c0/999bd56a2914d247c82c6b723eb3244e34add13d6c504c8913dbfdb6e5b16144e12e4d9ceba2371e69ba374498117dbc39c609c78fb58375459dcf62e84f31e8 languageName: node linkType: hard @@ -9880,7 +9880,7 @@ __metadata: "@types/babel__core": "npm:^7.0.0" "@types/express": "npm:^4.7.0" file-system-cache: "npm:2.3.0" - checksum: 21a8a3a0820ce934467860c10a170d1abd49dc1a005003a07cc2674cf0f53e188c031b7800573d96debe8c248431d87d543b6d631ab1252554d42e10215a912d + checksum: 10c0/21a8a3a0820ce934467860c10a170d1abd49dc1a005003a07cc2674cf0f53e188c031b7800573d96debe8c248431d87d543b6d631ab1252554d42e10215a912d languageName: node linkType: hard @@ -9889,7 +9889,7 @@ __metadata: resolution: "@supabase/functions-js@npm:2.1.5" dependencies: "@supabase/node-fetch": "npm:^2.6.14" - checksum: f2af9f12c9ffa4460998c166d71184bb2fc7753f2063548d482a51db3178da24217cd9dea1be8803356c3fd743848fdfb1e1903d882aa90fa7a7ae0c5dc7d070 + checksum: 10c0/f2af9f12c9ffa4460998c166d71184bb2fc7753f2063548d482a51db3178da24217cd9dea1be8803356c3fd743848fdfb1e1903d882aa90fa7a7ae0c5dc7d070 languageName: node linkType: hard @@ -9898,7 +9898,7 @@ __metadata: resolution: "@supabase/gotrue-js@npm:2.57.0" dependencies: "@supabase/node-fetch": "npm:^2.6.14" - checksum: d2870e04333a1af3fd296ae14b1a2fa6b3f7fbd40a1ae7cf2329d786dd4523762194e66501c371897f78cd241904bc7a2a8af0876bb781deaed3331cd3b7f07e + checksum: 10c0/d2870e04333a1af3fd296ae14b1a2fa6b3f7fbd40a1ae7cf2329d786dd4523762194e66501c371897f78cd241904bc7a2a8af0876bb781deaed3331cd3b7f07e languageName: node linkType: hard @@ -9907,7 +9907,7 @@ __metadata: resolution: "@supabase/node-fetch@npm:2.6.14" dependencies: whatwg-url: "npm:^5.0.0" - checksum: 645db87873ba9bb661cf41c46b05b52a8a769ca66abf1ac7b9f3b900e6dd5e7a97dfa421897db0ace21dd3acb409ba35f22225818bf5860e4af92a38e102be86 + checksum: 10c0/645db87873ba9bb661cf41c46b05b52a8a769ca66abf1ac7b9f3b900e6dd5e7a97dfa421897db0ace21dd3acb409ba35f22225818bf5860e4af92a38e102be86 languageName: node linkType: hard @@ -9916,7 +9916,7 @@ __metadata: resolution: "@supabase/postgrest-js@npm:1.8.6" dependencies: "@supabase/node-fetch": "npm:^2.6.14" - checksum: 8c40a5d21408b127f12439b480dd6a0b64bcf669a2b42ed12aae73450b844053093f0f9e3792225ff2b52d8a8d2ccc66dd2429eca5ce99b0892b8de24e706989 + checksum: 10c0/8c40a5d21408b127f12439b480dd6a0b64bcf669a2b42ed12aae73450b844053093f0f9e3792225ff2b52d8a8d2ccc66dd2429eca5ce99b0892b8de24e706989 languageName: node linkType: hard @@ -9928,7 +9928,7 @@ __metadata: "@types/phoenix": "npm:^1.5.4" "@types/websocket": "npm:^1.0.3" websocket: "npm:^1.0.34" - checksum: 2c095e128570e40a0d102a4917f9351ad4c5a5275939c1fe6b930ae6500493ae5b7dccb3e26e95416d5811e3ff337b71ca491c4d335ed3c13a0e3f9bd9925d37 + checksum: 10c0/2c095e128570e40a0d102a4917f9351ad4c5a5275939c1fe6b930ae6500493ae5b7dccb3e26e95416d5811e3ff337b71ca491c4d335ed3c13a0e3f9bd9925d37 languageName: node linkType: hard @@ -9937,7 +9937,7 @@ __metadata: resolution: "@supabase/storage-js@npm:2.5.4" dependencies: "@supabase/node-fetch": "npm:^2.6.14" - checksum: a541a282a6c247de785457db12d8e53d90d1b4fff0aabc76233c39c20ab8a10d9b41097ebf0b90985a0b8459db9e3bdc8a08ac5b1885b0fb417ff910af2b527a + checksum: 10c0/a541a282a6c247de785457db12d8e53d90d1b4fff0aabc76233c39c20ab8a10d9b41097ebf0b90985a0b8459db9e3bdc8a08ac5b1885b0fb417ff910af2b527a languageName: node linkType: hard @@ -9951,7 +9951,7 @@ __metadata: "@supabase/postgrest-js": "npm:^1.8.6" "@supabase/realtime-js": "npm:^2.8.4" "@supabase/storage-js": "npm:^2.5.4" - checksum: ca3afb51a76ef3a6bcf10b50f3b0797e7534884d936eef966a30de08f8e6464bf4aaaac51f2ce453d8b8496da7d6b2829a35fe7126983731bdf70c6399325411 + checksum: 10c0/ca3afb51a76ef3a6bcf10b50f3b0797e7534884d936eef966a30de08f8e6464bf4aaaac51f2ce453d8b8496da7d6b2829a35fe7126983731bdf70c6399325411 languageName: node linkType: hard @@ -9960,7 +9960,7 @@ __metadata: resolution: "@svgr/babel-plugin-add-jsx-attribute@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: a50bd0baa34faf16bcba712091f94c7f0e230431fe99a9dfc3401fa92823ad3f68495b86ab9bf9044b53839e8c416cfbb37eb3f246ff33f261e0fa9ee1779c5b + checksum: 10c0/a50bd0baa34faf16bcba712091f94c7f0e230431fe99a9dfc3401fa92823ad3f68495b86ab9bf9044b53839e8c416cfbb37eb3f246ff33f261e0fa9ee1779c5b languageName: node linkType: hard @@ -9969,7 +9969,7 @@ __metadata: resolution: "@svgr/babel-plugin-remove-jsx-attribute@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 8a98e59bd9971e066815b4129409932f7a4db4866834fe75677ea6d517972fb40b380a69a4413189f20e7947411f9ab1b0f029dd5e8068686a5a0188d3ccd4c7 + checksum: 10c0/8a98e59bd9971e066815b4129409932f7a4db4866834fe75677ea6d517972fb40b380a69a4413189f20e7947411f9ab1b0f029dd5e8068686a5a0188d3ccd4c7 languageName: node linkType: hard @@ -9978,7 +9978,7 @@ __metadata: resolution: "@svgr/babel-plugin-remove-jsx-empty-expression@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 517dcca75223bd05d3f056a8514dbba3031278bea4eadf0842c576d84f4651e7a4e0e7082d3ee4ef42456de0f9c4531d8a1917c04876ca64b014b859ca8f1bde + checksum: 10c0/517dcca75223bd05d3f056a8514dbba3031278bea4eadf0842c576d84f4651e7a4e0e7082d3ee4ef42456de0f9c4531d8a1917c04876ca64b014b859ca8f1bde languageName: node linkType: hard @@ -9987,7 +9987,7 @@ __metadata: resolution: "@svgr/babel-plugin-replace-jsx-attribute-value@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 004bd1892053b7e9c1b0bb14acc44e77634ec393722b87b1e4fae53e2c35122a2dd0d5c15e9070dbeec274e22e7693a2b8b48506733a8009ee92b12946fcb10a + checksum: 10c0/004bd1892053b7e9c1b0bb14acc44e77634ec393722b87b1e4fae53e2c35122a2dd0d5c15e9070dbeec274e22e7693a2b8b48506733a8009ee92b12946fcb10a languageName: node linkType: hard @@ -9996,7 +9996,7 @@ __metadata: resolution: "@svgr/babel-plugin-svg-dynamic-title@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 80e0a7fcf902f984c705051ca5c82ea6050ccbb70b651a8fea6d0eb5809e4dac274b49ea6be2d87f1eb9dfc0e2d6cdfffe1669ec2117f44b67a60a07d4c0b8b8 + checksum: 10c0/80e0a7fcf902f984c705051ca5c82ea6050ccbb70b651a8fea6d0eb5809e4dac274b49ea6be2d87f1eb9dfc0e2d6cdfffe1669ec2117f44b67a60a07d4c0b8b8 languageName: node linkType: hard @@ -10005,7 +10005,7 @@ __metadata: resolution: "@svgr/babel-plugin-svg-em-dimensions@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 73e92c8277a89279745c0c500f59f083279a8dc30cd552b22981fade2a77628fb2bd2819ee505725fcd2e93f923e3790b52efcff409a159e657b46604a0b9a21 + checksum: 10c0/73e92c8277a89279745c0c500f59f083279a8dc30cd552b22981fade2a77628fb2bd2819ee505725fcd2e93f923e3790b52efcff409a159e657b46604a0b9a21 languageName: node linkType: hard @@ -10014,7 +10014,7 @@ __metadata: resolution: "@svgr/babel-plugin-transform-react-native-svg@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 6bac146b0b2a61b934302c5e32784ef66d1990bcf0dd6409c102f62efbc640c513b0a8f30d7046d53517b10a0dc75b532783c2e04bb151caa0c649d6177eb206 + checksum: 10c0/6bac146b0b2a61b934302c5e32784ef66d1990bcf0dd6409c102f62efbc640c513b0a8f30d7046d53517b10a0dc75b532783c2e04bb151caa0c649d6177eb206 languageName: node linkType: hard @@ -10023,7 +10023,7 @@ __metadata: resolution: "@svgr/babel-plugin-transform-svg-component@npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 4ac00bb99a3db4ef05e4362f116a3c608ee365a2d26cf7318d8d41a4a5b30a02c80455cce0e62c65b60ed815b5d632bedabac2ccd4b56f998fadef5286e3ded4 + checksum: 10c0/4ac00bb99a3db4ef05e4362f116a3c608ee365a2d26cf7318d8d41a4a5b30a02c80455cce0e62c65b60ed815b5d632bedabac2ccd4b56f998fadef5286e3ded4 languageName: node linkType: hard @@ -10041,7 +10041,7 @@ __metadata: "@svgr/babel-plugin-transform-svg-component": "npm:8.0.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b8793c16862fef9244b4b9e96aee61af74d2f07b5f3c221008b45b1edb8c3454b3723ed04ab665b51e582bc3aad4c0e88435a526cddaa2fa3ca729695f18bb95 + checksum: 10c0/b8793c16862fef9244b4b9e96aee61af74d2f07b5f3c221008b45b1edb8c3454b3723ed04ab665b51e582bc3aad4c0e88435a526cddaa2fa3ca729695f18bb95 languageName: node linkType: hard @@ -10054,7 +10054,7 @@ __metadata: camelcase: "npm:^6.2.0" cosmiconfig: "npm:^8.1.3" snake-case: "npm:^3.0.4" - checksum: aea5e55948e8f188a91faddcd011f134e6a2d994afb1bdd769b881ff4e8c734749a8a4b278ee5575f2b7e53ec9ce0535b33e1b3a0d1827a2a350abcb91d1841f + checksum: 10c0/aea5e55948e8f188a91faddcd011f134e6a2d994afb1bdd769b881ff4e8c734749a8a4b278ee5575f2b7e53ec9ce0535b33e1b3a0d1827a2a350abcb91d1841f languageName: node linkType: hard @@ -10064,7 +10064,7 @@ __metadata: dependencies: "@babel/types": "npm:^7.21.3" entities: "npm:^4.4.0" - checksum: f4165b583ba9eaf6719e598977a7b3ed182f177983e55f9eb55a6a73982d81277510e9eb7ab41f255151fb9ed4edd11ac4bef95dd872f04ed64966d8c85e0f79 + checksum: 10c0/f4165b583ba9eaf6719e598977a7b3ed182f177983e55f9eb55a6a73982d81277510e9eb7ab41f255151fb9ed4edd11ac4bef95dd872f04ed64966d8c85e0f79 languageName: node linkType: hard @@ -10078,7 +10078,7 @@ __metadata: svg-parser: "npm:^2.0.4" peerDependencies: "@svgr/core": "*" - checksum: c3c440d9f8723b2320fcf183da760799534ef998bfcfc5c848d66feab614f02980c9c313bc7c0488202affbdd216ee9381afbe948ecbcea718c19632138dc4d9 + checksum: 10c0/c3c440d9f8723b2320fcf183da760799534ef998bfcfc5c848d66feab614f02980c9c313bc7c0488202affbdd216ee9381afbe948ecbcea718c19632138dc4d9 languageName: node linkType: hard @@ -10194,21 +10194,21 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 273d4894d9f62b72a3f4e84d351bc426ba33055bb2fd38f743777c5ac802365bf61dec2e12552252fbdb705c96dd9688534740e23746ddb98a59b4e45af64369 + checksum: 10c0/273d4894d9f62b72a3f4e84d351bc426ba33055bb2fd38f743777c5ac802365bf61dec2e12552252fbdb705c96dd9688534740e23746ddb98a59b4e45af64369 languageName: node linkType: hard "@swc/counter@npm:^0.1.1": version: 0.1.2 resolution: "@swc/counter@npm:0.1.2" - checksum: 18be012107d4ba1f79776c48d83391ca2159103d7d31a59ff52fcc8024db51b71c5f46714a9fb73981739bc8a38dc6f385a046b71cc08f6043f3c47f5c409eab + checksum: 10c0/18be012107d4ba1f79776c48d83391ca2159103d7d31a59ff52fcc8024db51b71c5f46714a9fb73981739bc8a38dc6f385a046b71cc08f6043f3c47f5c409eab languageName: node linkType: hard "@swc/types@npm:^0.1.5": version: 0.1.5 resolution: "@swc/types@npm:0.1.5" - checksum: b35f93fe896a2240f6f10544e408f9648c2bd4bcff9bd8d022d9a6942d31cf859f86119fb0bbb04a12eefa1f6a6745ffc7d18f3a490d76d7b6a074a7c9608144 + checksum: 10c0/b35f93fe896a2240f6f10544e408f9648c2bd4bcff9bd8d022d9a6942d31cf859f86119fb0bbb04a12eefa1f6a6745ffc7d18f3a490d76d7b6a074a7c9608144 languageName: node linkType: hard @@ -10217,7 +10217,7 @@ __metadata: resolution: "@szmarczak/http-timer@npm:1.1.2" dependencies: defer-to-connect: "npm:^1.0.1" - checksum: 0594140e027ce4e98970c6d176457fcbff80900b1b3101ac0d08628ca6d21d70e0b94c6aaada94d4f76c1423fcc7195af83da145ce0fd556fc0595ca74a17b8b + checksum: 10c0/0594140e027ce4e98970c6d176457fcbff80900b1b3101ac0d08628ca6d21d70e0b94c6aaada94d4f76c1423fcc7195af83da145ce0fd556fc0595ca74a17b8b languageName: node linkType: hard @@ -10233,7 +10233,7 @@ __metadata: dom-accessibility-api: "npm:^0.5.9" lz-string: "npm:^1.5.0" pretty-format: "npm:^27.0.2" - checksum: 147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 + checksum: 10c0/147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 languageName: node linkType: hard @@ -10249,7 +10249,7 @@ __metadata: dom-accessibility-api: "npm:^0.5.9" lz-string: "npm:^1.5.0" pretty-format: "npm:^27.0.2" - checksum: 614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d + checksum: 10c0/614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d languageName: node linkType: hard @@ -10282,7 +10282,7 @@ __metadata: optional: true vitest: optional: true - checksum: 38ef0dc054b90b253015adaa16828046b1eff8137b86506d5233c10c85a8d8516d55dddb0af5ada46ef98ce9d9bbdad94de42acd29ed07adfb2924fc7bfc6429 + checksum: 10c0/38ef0dc054b90b253015adaa16828046b1eff8137b86506d5233c10c85a8d8516d55dddb0af5ada46ef98ce9d9bbdad94de42acd29ed07adfb2924fc7bfc6429 languageName: node linkType: hard @@ -10296,7 +10296,7 @@ __metadata: peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 - checksum: b5b0990d3aa0ea8b37c55804e0d5d584fc638a5c7d4df90da9a0fdb00bc981b27b6991468b2dc719982a5d0b0107a41596063ce51ad519eeab47b22bc04d6779 + checksum: 10c0/b5b0990d3aa0ea8b37c55804e0d5d584fc638a5c7d4df90da9a0fdb00bc981b27b6991468b2dc719982a5d0b0107a41596063ce51ad519eeab47b22bc04d6779 languageName: node linkType: hard @@ -10305,21 +10305,21 @@ __metadata: resolution: "@testing-library/user-event@npm:14.5.2" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 68a0c2aa28a3c8e6eb05cafee29705438d7d8a9427423ce5064d44f19c29e89b5636de46dd2f28620fb10abba75c67130185bbc3aa23ac1163a227a5f36641e1 + checksum: 10c0/68a0c2aa28a3c8e6eb05cafee29705438d7d8a9427423ce5064d44f19c29e89b5636de46dd2f28620fb10abba75c67130185bbc3aa23ac1163a227a5f36641e1 languageName: node linkType: hard "@tootallnate/once@npm:2": version: 2.0.0 resolution: "@tootallnate/once@npm:2.0.0" - checksum: 073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 languageName: node linkType: hard "@trysound/sax@npm:0.2.0": version: 0.2.0 resolution: "@trysound/sax@npm:0.2.0" - checksum: 44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 languageName: node linkType: hard @@ -10331,7 +10331,7 @@ __metadata: minimatch: "npm:^5.1.0" mkdirp: "npm:^1.0.4" path-browserify: "npm:^1.0.1" - checksum: a9f306dd5c0c022b805400a1e54f18ec3fd1d80cc62e41f5f6964755d4b2538c10584b2fd040f9184121269dfebbe20ac7ffeb9965e74c3d6cb5b8891e29e5cb + checksum: 10c0/a9f306dd5c0c022b805400a1e54f18ec3fd1d80cc62e41f5f6964755d4b2538c10584b2fd040f9184121269dfebbe20ac7ffeb9965e74c3d6cb5b8891e29e5cb languageName: node linkType: hard @@ -10343,49 +10343,49 @@ __metadata: minimatch: "npm:^7.4.3" mkdirp: "npm:^2.1.6" path-browserify: "npm:^1.0.1" - checksum: e25fd46158d72be238ab1dda74e7ee284085895b12b9ab279f37d50f1cd71b2be95a56f3efa19d5f52986534e9f34ae4a294467cd1637b27cf4fb82bd7318bb7 + checksum: 10c0/e25fd46158d72be238ab1dda74e7ee284085895b12b9ab279f37d50f1cd71b2be95a56f3efa19d5f52986534e9f34ae4a294467cd1637b27cf4fb82bd7318bb7 languageName: node linkType: hard "@tsconfig/node10@npm:^1.0.7": version: 1.0.9 resolution: "@tsconfig/node10@npm:1.0.9" - checksum: c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220 + checksum: 10c0/c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220 languageName: node linkType: hard "@tsconfig/node12@npm:^1.0.7": version: 1.0.11 resolution: "@tsconfig/node12@npm:1.0.11" - checksum: dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 languageName: node linkType: hard "@tsconfig/node14@npm:^1.0.0": version: 1.0.3 resolution: "@tsconfig/node14@npm:1.0.3" - checksum: 67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 languageName: node linkType: hard "@tsconfig/node16@npm:^1.0.2": version: 1.0.4 resolution: "@tsconfig/node16@npm:1.0.4" - checksum: 05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb languageName: node linkType: hard "@tufjs/canonical-json@npm:1.0.0": version: 1.0.0 resolution: "@tufjs/canonical-json@npm:1.0.0" - checksum: 6d28fdfa1fe22cc6a3ff41de8bf74c46dee6d4ff00e8a33519d84e060adaaa04bbdaf17fbcd102511fbdd5e4b8d2a67341c9aaf0cd641be1aea386442f4b1e88 + checksum: 10c0/6d28fdfa1fe22cc6a3ff41de8bf74c46dee6d4ff00e8a33519d84e060adaaa04bbdaf17fbcd102511fbdd5e4b8d2a67341c9aaf0cd641be1aea386442f4b1e88 languageName: node linkType: hard "@tufjs/canonical-json@npm:2.0.0": version: 2.0.0 resolution: "@tufjs/canonical-json@npm:2.0.0" - checksum: 52c5ffaef1483ed5c3feedfeba26ca9142fa386eea54464e70ff515bd01c5e04eab05d01eff8c2593291dcaf2397ca7d9c512720e11f52072b04c47a5c279415 + checksum: 10c0/52c5ffaef1483ed5c3feedfeba26ca9142fa386eea54464e70ff515bd01c5e04eab05d01eff8c2593291dcaf2397ca7d9c512720e11f52072b04c47a5c279415 languageName: node linkType: hard @@ -10395,7 +10395,7 @@ __metadata: dependencies: "@tufjs/canonical-json": "npm:1.0.0" minimatch: "npm:^9.0.0" - checksum: 99bcfa6ecd642861a21e4874c4a687bb57f7c2ab7e10c6756b576c2fa4a6f2be3d21ba8e76334f11ea2846949b514b10fa59584aaee0a100e09e9263114b635b + checksum: 10c0/99bcfa6ecd642861a21e4874c4a687bb57f7c2ab7e10c6756b576c2fa4a6f2be3d21ba8e76334f11ea2846949b514b10fa59584aaee0a100e09e9263114b635b languageName: node linkType: hard @@ -10405,7 +10405,7 @@ __metadata: dependencies: "@tufjs/canonical-json": "npm:2.0.0" minimatch: "npm:^9.0.3" - checksum: 252f525b05526077430920b30b125e197a3d711f4c6d1ceeee9cea5044035e4d94e57db481d96bd8e9d1ce5ee23fcc9fe989e7e0c9c2aec7e1edc27326ee16e6 + checksum: 10c0/252f525b05526077430920b30b125e197a3d711f4c6d1ceeee9cea5044035e4d94e57db481d96bd8e9d1ce5ee23fcc9fe989e7e0c9c2aec7e1edc27326ee16e6 languageName: node linkType: hard @@ -10414,21 +10414,21 @@ __metadata: resolution: "@types/archiver@npm:6.0.2" dependencies: "@types/readdir-glob": "npm:*" - checksum: 01ca91d76c57b38ae030a24a07b46664bf3ae9d303c0cdd2b342e06a4b53dccd0d0c375ff3f9af966a93512554f82ef97c515fcc47536e7dbb29a7d9bc09a540 + checksum: 10c0/01ca91d76c57b38ae030a24a07b46664bf3ae9d303c0cdd2b342e06a4b53dccd0d0c375ff3f9af966a93512554f82ef97c515fcc47536e7dbb29a7d9bc09a540 languageName: node linkType: hard "@types/aria-query@npm:^5.0.1": version: 5.0.1 resolution: "@types/aria-query@npm:5.0.1" - checksum: bc9e40ce37bd3a1654948778c7829bd55aea1bc5f2cd06fcf6cd650b07bb388995799e9aab6e2d93a6cf55dcba3b85c155f7ba93adefcc7c2e152fc6057061b5 + checksum: 10c0/bc9e40ce37bd3a1654948778c7829bd55aea1bc5f2cd06fcf6cd650b07bb388995799e9aab6e2d93a6cf55dcba3b85c155f7ba93adefcc7c2e152fc6057061b5 languageName: node linkType: hard "@types/aws-lambda@npm:8.10.126, @types/aws-lambda@npm:^8.10.83": version: 8.10.126 resolution: "@types/aws-lambda@npm:8.10.126" - checksum: 4b538cbb3c730c08d921ff13943b39f9a68d89c2ad64b54dff82768e949b4cacd3d82c028bb5fce495f0a66b37b6299052367d419890229956565ccbc2bd9767 + checksum: 10c0/4b538cbb3c730c08d921ff13943b39f9a68d89c2ad64b54dff82768e949b4cacd3d82c028bb5fce495f0a66b37b6299052367d419890229956565ccbc2bd9767 languageName: node linkType: hard @@ -10441,7 +10441,7 @@ __metadata: "@types/babel-traverse": "npm:*" "@types/babel-types": "npm:*" "@types/babylon": "npm:*" - checksum: 4a0e26acc0aed7ffed6aa0ee63fedb8dedac1f11633229ff0c09d27cf02863fa2c25cbb99eecfa5004449b84027b3ab4abe2d29a936784cb2a85e4d49593b4e4 + checksum: 10c0/4a0e26acc0aed7ffed6aa0ee63fedb8dedac1f11633229ff0c09d27cf02863fa2c25cbb99eecfa5004449b84027b3ab4abe2d29a936784cb2a85e4d49593b4e4 languageName: node linkType: hard @@ -10450,7 +10450,7 @@ __metadata: resolution: "@types/babel-generator@npm:6.25.5" dependencies: "@types/babel-types": "npm:*" - checksum: 7570d07c894b70967af3178ab6dea3fe42184bc65dba3f46752eb909d22cc5a2fb1ed2736b00f486f0994a9a54184684cfe8fd98012630472f3b6128fff7adef + checksum: 10c0/7570d07c894b70967af3178ab6dea3fe42184bc65dba3f46752eb909d22cc5a2fb1ed2736b00f486f0994a9a54184684cfe8fd98012630472f3b6128fff7adef languageName: node linkType: hard @@ -10460,7 +10460,7 @@ __metadata: dependencies: "@types/babel__core": "npm:*" "@types/prettier": "npm:^2.0.0" - checksum: b05e4d551a98d74a743945fa109cf1866fc6b57303f3daee29276e1e6ca354ff647f946e047747e5104f5d9f26cd09d2c22599b1282454283a59248e6a164fb8 + checksum: 10c0/b05e4d551a98d74a743945fa109cf1866fc6b57303f3daee29276e1e6ca354ff647f946e047747e5104f5d9f26cd09d2c22599b1282454283a59248e6a164fb8 languageName: node linkType: hard @@ -10470,7 +10470,7 @@ __metadata: dependencies: "@types/babel-types": "npm:*" "@types/babylon": "npm:*" - checksum: 35af56dcadc3b5b28e4bbc0bb964f0f3dc22f7bab9e86369e383c0cde2d7f1a7e34f4ef2a272aaae1a61610a81897eff3601b09956e8c220986698986c9086b1 + checksum: 10c0/35af56dcadc3b5b28e4bbc0bb964f0f3dc22f7bab9e86369e383c0cde2d7f1a7e34f4ef2a272aaae1a61610a81897eff3601b09956e8c220986698986c9086b1 languageName: node linkType: hard @@ -10479,14 +10479,14 @@ __metadata: resolution: "@types/babel-traverse@npm:6.25.7" dependencies: "@types/babel-types": "npm:*" - checksum: 66b798a4b2480efbd391680fde7d359f7486b064b030c6efdebc4ef7bf09a8c2b1eaf3f0ff5bea2eb25e95100c600613cd4605f5fb17cf0fff7181e08dfc7683 + checksum: 10c0/66b798a4b2480efbd391680fde7d359f7486b064b030c6efdebc4ef7bf09a8c2b1eaf3f0ff5bea2eb25e95100c600613cd4605f5fb17cf0fff7181e08dfc7683 languageName: node linkType: hard "@types/babel-types@npm:*": version: 7.0.11 resolution: "@types/babel-types@npm:7.0.11" - checksum: 968415bf9997704d2dfd841ffdf9b80dc824a78fdc0640a48a2bd95d2c238097159af38bfd7d51486cb8c1fde353033d302bfc68a2deb1802d1d7846c0594d1e + checksum: 10c0/968415bf9997704d2dfd841ffdf9b80dc824a78fdc0640a48a2bd95d2c238097159af38bfd7d51486cb8c1fde353033d302bfc68a2deb1802d1d7846c0594d1e languageName: node linkType: hard @@ -10499,7 +10499,7 @@ __metadata: "@types/babel__generator": "npm:*" "@types/babel__template": "npm:*" "@types/babel__traverse": "npm:*" - checksum: bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff languageName: node linkType: hard @@ -10512,7 +10512,7 @@ __metadata: "@types/babel__generator": "npm:*" "@types/babel__template": "npm:*" "@types/babel__traverse": "npm:*" - checksum: 2adc7ec49de5f922271ce087cedee000de468a3e13f92b7b6254016bd8357298cb98e6d2b3c9defc69bb6e38e0c134ffe80776a8ce4e9fb167bbffcb4d7613b7 + checksum: 10c0/2adc7ec49de5f922271ce087cedee000de468a3e13f92b7b6254016bd8357298cb98e6d2b3c9defc69bb6e38e0c134ffe80776a8ce4e9fb167bbffcb4d7613b7 languageName: node linkType: hard @@ -10521,7 +10521,7 @@ __metadata: resolution: "@types/babel__generator@npm:7.6.7" dependencies: "@babel/types": "npm:^7.0.0" - checksum: 2427203864ef231857e102eeb32b731a419164863983119cdd4dac9f1503c2831eb4262d05ade95d4574aa410b94c16e54e36a616758452f685a34881f4596d9 + checksum: 10c0/2427203864ef231857e102eeb32b731a419164863983119cdd4dac9f1503c2831eb4262d05ade95d4574aa410b94c16e54e36a616758452f685a34881f4596d9 languageName: node linkType: hard @@ -10531,7 +10531,7 @@ __metadata: dependencies: "@babel/parser": "npm:^7.1.0" "@babel/types": "npm:^7.0.0" - checksum: 6f180e96c39765487f27e861d43eebed341ec7a2fc06cdf5a52c22872fae67f474ca165d149c708f4fd9d5482beb66c0a92f77411b234bb30262ed2303e50b1a + checksum: 10c0/6f180e96c39765487f27e861d43eebed341ec7a2fc06cdf5a52c22872fae67f474ca165d149c708f4fd9d5482beb66c0a92f77411b234bb30262ed2303e50b1a languageName: node linkType: hard @@ -10540,7 +10540,7 @@ __metadata: resolution: "@types/babel__traverse@npm:7.20.4" dependencies: "@babel/types": "npm:^7.20.7" - checksum: e76cb4974c7740fd61311152dc497e7b05c1c46ba554aab875544ab0a7457f343cafcad34ba8fb2ff543ab0e012ef2d3fa0c13f1a4e9a4cd9c4c703c7a2a8d62 + checksum: 10c0/e76cb4974c7740fd61311152dc497e7b05c1c46ba554aab875544ab0a7457f343cafcad34ba8fb2ff543ab0e012ef2d3fa0c13f1a4e9a4cd9c4c703c7a2a8d62 languageName: node linkType: hard @@ -10549,7 +10549,7 @@ __metadata: resolution: "@types/babylon@npm:6.16.6" dependencies: "@types/babel-types": "npm:*" - checksum: 4e0be7ed31d1bed532d54e11de4fa0d69a11d8cda7a245498b4e7c1827c0f9f84f7462e2978878860b45fc1c10cdfecb96d323efac928627e71dba4d4e6aef30 + checksum: 10c0/4e0be7ed31d1bed532d54e11de4fa0d69a11d8cda7a245498b4e7c1827c0f9f84f7462e2978878860b45fc1c10cdfecb96d323efac928627e71dba4d4e6aef30 languageName: node linkType: hard @@ -10559,7 +10559,7 @@ __metadata: dependencies: "@types/connect": "npm:*" "@types/node": "npm:*" - checksum: c2dd533e1d4af958d656bdba7f376df68437d8dfb7e4522c88b6f3e6f827549e4be5bf0be68a5f1878accf5752ea37fba7e8a4b6dda53d0d122d77e27b69c750 + checksum: 10c0/c2dd533e1d4af958d656bdba7f376df68437d8dfb7e4522c88b6f3e6f827549e4be5bf0be68a5f1878accf5752ea37fba7e8a4b6dda53d0d122d77e27b69c750 languageName: node linkType: hard @@ -10568,14 +10568,14 @@ __metadata: resolution: "@types/bonjour@npm:3.5.10" dependencies: "@types/node": "npm:*" - checksum: 5a3d70695a8dfe79c020579fcbf18d7dbb89b8f061dd388c76b68c4797c0fccd71f3e8a9e2bea00afffdb9b37a49dd0ac0a192829d5b655a5b49c66f313a7be8 + checksum: 10c0/5a3d70695a8dfe79c020579fcbf18d7dbb89b8f061dd388c76b68c4797c0fccd71f3e8a9e2bea00afffdb9b37a49dd0ac0a192829d5b655a5b49c66f313a7be8 languageName: node linkType: hard "@types/btoa-lite@npm:^1.0.0": version: 1.0.0 resolution: "@types/btoa-lite@npm:1.0.0" - checksum: ab354cfa11b683fcc97c66cd2199b0a630b771dc13e3f98783c9f15beba3bdf031b9925c924252473888da3737a07dec93971226e0310354e58f9e64a03a102f + checksum: 10c0/ab354cfa11b683fcc97c66cd2199b0a630b771dc13e3f98783c9f15beba3bdf031b9925c924252473888da3737a07dec93971226e0310354e58f9e64a03a102f languageName: node linkType: hard @@ -10585,7 +10585,7 @@ __metadata: dependencies: "@types/express-serve-static-core": "npm:*" "@types/node": "npm:*" - checksum: 176362698eb68cfbd0517c015fc089fd764d5d35f07230238bb57f833d24a4737f46b4d78dfc225809e7324729d360b831567d1dff17639d576ad85f5b86743d + checksum: 10c0/176362698eb68cfbd0517c015fc089fd764d5d35f07230238bb57f833d24a4737f46b4d78dfc225809e7324729d360b831567d1dff17639d576ad85f5b86743d languageName: node linkType: hard @@ -10594,14 +10594,14 @@ __metadata: resolution: "@types/connect@npm:3.4.35" dependencies: "@types/node": "npm:*" - checksum: f11a1ccfed540723dddd7cb496543ad40a2f663f22ff825e9b220f0bae86db8b1ced2184ee41d3fb358b019ad6519e39481b06386db91ebb859003ad1d54fe6a + checksum: 10c0/f11a1ccfed540723dddd7cb496543ad40a2f663f22ff825e9b220f0bae86db8b1ced2184ee41d3fb358b019ad6519e39481b06386db91ebb859003ad1d54fe6a languageName: node linkType: hard "@types/cookie@npm:^0.4.1": version: 0.4.1 resolution: "@types/cookie@npm:0.4.1" - checksum: f96afe12bd51be1ec61410b0641243d93fa3a494702407c787a4c872b5c8bcd39b224471452055e44a9ce42af1a636e87d161994226eaf4c2be9c30f60418409 + checksum: 10c0/f96afe12bd51be1ec61410b0641243d93fa3a494702407c787a4c872b5c8bcd39b224471452055e44a9ce42af1a636e87d161994226eaf4c2be9c30f60418409 languageName: node linkType: hard @@ -10613,7 +10613,7 @@ __metadata: "@types/express": "npm:*" "@types/keygrip": "npm:*" "@types/node": "npm:*" - checksum: 259883abcd884da8ca9c58b91c402aa04e78ea7a0fa6772d4951c44e0868a3722a6fff54c0ac796002affc0e5b18f374213b2d4904b4e5c7f0d78a7368c14242 + checksum: 10c0/259883abcd884da8ca9c58b91c402aa04e78ea7a0fa6772d4951c44e0868a3722a6fff54c0ac796002affc0e5b18f374213b2d4904b4e5c7f0d78a7368c14242 languageName: node linkType: hard @@ -10622,7 +10622,7 @@ __metadata: resolution: "@types/cross-spawn@npm:6.0.5" dependencies: "@types/node": "npm:*" - checksum: 871a21a96e03292a4a257f0bdefcc0f3ce33a9d14a87899eb7b4a4f05910a094cbeb71d5a6c6deb3eef6b0a798570f7105c0fae11323c743df1243186a0098f6 + checksum: 10c0/871a21a96e03292a4a257f0bdefcc0f3ce33a9d14a87899eb7b4a4f05910a094cbeb71d5a6c6deb3eef6b0a798570f7105c0fae11323c743df1243186a0098f6 languageName: node linkType: hard @@ -10631,56 +10631,56 @@ __metadata: resolution: "@types/debug@npm:4.1.12" dependencies: "@types/ms": "npm:*" - checksum: 5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f languageName: node linkType: hard "@types/detect-port@npm:^1.3.0": version: 1.3.3 resolution: "@types/detect-port@npm:1.3.3" - checksum: 27c8000e3d41fd1158e2213b31c90b63852299ed66e4604b028a7146519530ab129b8ff867db02b06a32f61e7764f8d5aff0c44c5f543ce2b4b035e5968b62e1 + checksum: 10c0/27c8000e3d41fd1158e2213b31c90b63852299ed66e4604b028a7146519530ab129b8ff867db02b06a32f61e7764f8d5aff0c44c5f543ce2b4b035e5968b62e1 languageName: node linkType: hard "@types/doctrine@npm:^0.0.3": version: 0.0.3 resolution: "@types/doctrine@npm:0.0.3" - checksum: 566dcdc988c97ff01d14493ceb2223643347f07cf0a88c86cd7cb7c2821cfc837fd39295e6809a29614fdfdc6c4e981408155ca909b2e5da5d947af939b6c966 + checksum: 10c0/566dcdc988c97ff01d14493ceb2223643347f07cf0a88c86cd7cb7c2821cfc837fd39295e6809a29614fdfdc6c4e981408155ca909b2e5da5d947af939b6c966 languageName: node linkType: hard "@types/doctrine@npm:^0.0.9": version: 0.0.9 resolution: "@types/doctrine@npm:0.0.9" - checksum: cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c + checksum: 10c0/cdaca493f13c321cf0cacd1973efc0ae74569633145d9e6fc1128f32217a6968c33bea1f858275239fe90c98f3be57ec8f452b416a9ff48b8e8c1098b20fa51c languageName: node linkType: hard "@types/ejs@npm:^3.1.1": version: 3.1.2 resolution: "@types/ejs@npm:3.1.2" - checksum: 8e55275011009e7a44043d97348a4a1b5a7583e1f048b6ad8998f1b30667995314f15bc9cc9ed3e0e79722cce9a06845d06d5d023bca179bb00d52016b41ad7d + checksum: 10c0/8e55275011009e7a44043d97348a4a1b5a7583e1f048b6ad8998f1b30667995314f15bc9cc9ed3e0e79722cce9a06845d06d5d023bca179bb00d52016b41ad7d languageName: node linkType: hard "@types/emscripten@npm:^1.39.6": version: 1.39.6 resolution: "@types/emscripten@npm:1.39.6" - checksum: cb1ea8ccddada1d304bdf11a54daa0d1e87f29cea947eceff54c1e0a752d2cc185eeffdcf52042f24420aa8e1fa9bbfdbab1231fb2531eefcfdc788199fee2de + checksum: 10c0/cb1ea8ccddada1d304bdf11a54daa0d1e87f29cea947eceff54c1e0a752d2cc185eeffdcf52042f24420aa8e1fa9bbfdbab1231fb2531eefcfdc788199fee2de languageName: node linkType: hard "@types/envinfo@npm:7.8.3": version: 7.8.3 resolution: "@types/envinfo@npm:7.8.3" - checksum: 31a504f317c8b2c93dda513d3c117f518f27cf3f36aba65e78bf908927f9ef304351fe49d6ba19515994b91d1d1c23a089bfd3c8b0f1e84737606f6791a05ff6 + checksum: 10c0/31a504f317c8b2c93dda513d3c117f518f27cf3f36aba65e78bf908927f9ef304351fe49d6ba19515994b91d1d1c23a089bfd3c8b0f1e84737606f6791a05ff6 languageName: node linkType: hard "@types/escodegen@npm:^0.0.6": version: 0.0.6 resolution: "@types/escodegen@npm:0.0.6" - checksum: bbef189319c7b0386486bc7224369f118c7aedf35cc13e40ae5879b9ab4f848936f31e8eea50e71d4de72d4b7a77d9e6e9e5ceec4406c648fbc0077ede634ed5 + checksum: 10c0/bbef189319c7b0386486bc7224369f118c7aedf35cc13e40ae5879b9ab4f848936f31e8eea50e71d4de72d4b7a77d9e6e9e5ceec4406c648fbc0077ede634ed5 languageName: node linkType: hard @@ -10690,7 +10690,7 @@ __metadata: dependencies: "@types/eslint": "npm:*" "@types/estree": "npm:*" - checksum: f8a19cddf9d402f079bcc261958fff5ff2616465e4fb4cd423aa966a6a32bf5d3c65ca3ca0fbe824776b48c5cd525efbaf927b98b8eeef093aa68a1a2ba19359 + checksum: 10c0/f8a19cddf9d402f079bcc261958fff5ff2616465e4fb4cd423aa966a6a32bf5d3c65ca3ca0fbe824776b48c5cd525efbaf927b98b8eeef093aa68a1a2ba19359 languageName: node linkType: hard @@ -10700,21 +10700,21 @@ __metadata: dependencies: "@types/estree": "npm:*" "@types/json-schema": "npm:*" - checksum: 5797dce7805f601ee34b2f63d6a80dba21302e2fe2614c7990eca7a22472f9e0c386d56d82fe79a7cdede57c8dcc1e0f9b1e5dc384adf736833b901ffcc29628 + checksum: 10c0/5797dce7805f601ee34b2f63d6a80dba21302e2fe2614c7990eca7a22472f9e0c386d56d82fe79a7cdede57c8dcc1e0f9b1e5dc384adf736833b901ffcc29628 languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": version: 1.0.5 resolution: "@types/estree@npm:1.0.5" - checksum: b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d languageName: node linkType: hard "@types/estree@npm:^0.0.51": version: 0.0.51 resolution: "@types/estree@npm:0.0.51" - checksum: a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 + checksum: 10c0/a70c60d5e634e752fcd45b58c9c046ef22ad59ede4bc93ad5193c7e3b736ebd6bcd788ade59d9c3b7da6eeb0939235f011d4c59bb4fc04d8c346b76035099dd1 languageName: node linkType: hard @@ -10726,7 +10726,7 @@ __metadata: "@types/qs": "npm:*" "@types/range-parser": "npm:*" "@types/send": "npm:*" - checksum: 08db6ffff07b5d53d852bb0a078ea5ee6dc3eb581d8c8fdf0d65f48c641db2830658074c797844e618b0933ce4ca2ddd08191f9d79b12eb2ec3d66f8551716ec + checksum: 10c0/08db6ffff07b5d53d852bb0a078ea5ee6dc3eb581d8c8fdf0d65f48c641db2830658074c797844e618b0933ce4ca2ddd08191f9d79b12eb2ec3d66f8551716ec languageName: node linkType: hard @@ -10738,7 +10738,7 @@ __metadata: "@types/express-serve-static-core": "npm:^4.17.33" "@types/qs": "npm:*" "@types/serve-static": "npm:*" - checksum: 12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf + checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf languageName: node linkType: hard @@ -10750,14 +10750,14 @@ __metadata: "@types/express-serve-static-core": "npm:^4.17.18" "@types/qs": "npm:*" "@types/serve-static": "npm:*" - checksum: 616e3618dfcbafe387bf2213e1e40f77f101685f3e9efff47c66fd2da611b7578ed5f4e61e1cdb1f2a32c8f01eff4ee74f93c52ad56d45e69b7154da66b3443a + checksum: 10c0/616e3618dfcbafe387bf2213e1e40f77f101685f3e9efff47c66fd2da611b7578ed5f4e61e1cdb1f2a32c8f01eff4ee74f93c52ad56d45e69b7154da66b3443a languageName: node linkType: hard "@types/find-cache-dir@npm:^3.2.1": version: 3.2.1 resolution: "@types/find-cache-dir@npm:3.2.1" - checksum: 68059aec88ef776a689c1711a881fd91a9ce1b03dd5898ea1d2ac5d77d7b0235f21fdf210f380c13deca8b45e4499841a63aaf31fd2123af687f2c6b472f41ce + checksum: 10c0/68059aec88ef776a689c1711a881fd91a9ce1b03dd5898ea1d2ac5d77d7b0235f21fdf210f380c13deca8b45e4499841a63aaf31fd2123af687f2c6b472f41ce languageName: node linkType: hard @@ -10767,7 +10767,7 @@ __metadata: dependencies: "@types/jsonfile": "npm:*" "@types/node": "npm:*" - checksum: 9e34f9b24ea464f3c0b18c3f8a82aefc36dc524cc720fc2b886e5465abc66486ff4e439ea3fb2c0acebf91f6d3f74e514f9983b1f02d4243706bdbb7511796ad + checksum: 10c0/9e34f9b24ea464f3c0b18c3f8a82aefc36dc524cc720fc2b886e5465abc66486ff4e439ea3fb2c0acebf91f6d3f74e514f9983b1f02d4243706bdbb7511796ad languageName: node linkType: hard @@ -10777,7 +10777,7 @@ __metadata: dependencies: "@types/minimatch": "npm:^5.1.2" "@types/node": "npm:*" - checksum: ded07aa0d7a1caf3c47b85e262be82989ccd7933b4a14712b79c82fd45a239249811d9fc3a135b3e9457afa163e74a297033d7245b0dc63cd3d032f3906b053f + checksum: 10c0/ded07aa0d7a1caf3c47b85e262be82989ccd7933b4a14712b79c82fd45a239249811d9fc3a135b3e9457afa163e74a297033d7245b0dc63cd3d032f3906b053f languageName: node linkType: hard @@ -10786,21 +10786,21 @@ __metadata: resolution: "@types/graceful-fs@npm:4.1.6" dependencies: "@types/node": "npm:*" - checksum: b1d32c5ae7bd52cf60e29df20407904c4312a39612e7ec2ee23c1e3731c1cfe31d97c6941bf6cb52f5f929d50d86d92dd506436b63fafa833181d439b628885e + checksum: 10c0/b1d32c5ae7bd52cf60e29df20407904c4312a39612e7ec2ee23c1e3731c1cfe31d97c6941bf6cb52f5f929d50d86d92dd506436b63fafa833181d439b628885e languageName: node linkType: hard "@types/html-minifier-terser@npm:^6.0.0": version: 6.1.0 resolution: "@types/html-minifier-terser@npm:6.1.0" - checksum: a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab + checksum: 10c0/a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab languageName: node linkType: hard "@types/http-errors@npm:*": version: 2.0.1 resolution: "@types/http-errors@npm:2.0.1" - checksum: 3bbc8c84fb02b381737e2eec563b434121384b1aef4e070edec4479a1bc74f27373edc09162680cd3ea1035ef8e5ab6d606bd7c99e3855c424045fb74376cb66 + checksum: 10c0/3bbc8c84fb02b381737e2eec563b434121384b1aef4e070edec4479a1bc74f27373edc09162680cd3ea1035ef8e5ab6d606bd7c99e3855c424045fb74376cb66 languageName: node linkType: hard @@ -10809,14 +10809,14 @@ __metadata: resolution: "@types/http-proxy@npm:1.17.11" dependencies: "@types/node": "npm:*" - checksum: 0af1bed7c1eaace924b8a316a718a702d40882dc541320ca1629c7f4ee852ef4dbef1963d4cb9e523b59dbe4d7f07e37def38b15e8ebb92d5b569b800b1c2bf7 + checksum: 10c0/0af1bed7c1eaace924b8a316a718a702d40882dc541320ca1629c7f4ee852ef4dbef1963d4cb9e523b59dbe4d7f07e37def38b15e8ebb92d5b569b800b1c2bf7 languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": version: 2.0.4 resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: af5f6b64e788331ed3f7b2e2613cb6ca659c58b8500be94bbda8c995ad3da9216c006f1cfe6f66b321c39392b1bda18b16e63cef090a77d24a00b4bd5ba3b018 + checksum: 10c0/af5f6b64e788331ed3f7b2e2613cb6ca659c58b8500be94bbda8c995ad3da9216c006f1cfe6f66b321c39392b1bda18b16e63cef090a77d24a00b4bd5ba3b018 languageName: node linkType: hard @@ -10825,7 +10825,7 @@ __metadata: resolution: "@types/istanbul-lib-report@npm:3.0.0" dependencies: "@types/istanbul-lib-coverage": "npm:*" - checksum: 7ced458631276a28082ee40645224c3cdd8b861961039ff811d841069171c987ec7e50bc221845ec0d04df0022b2f457a21fb2f816dab2fbe64d59377b32031f + checksum: 10c0/7ced458631276a28082ee40645224c3cdd8b861961039ff811d841069171c987ec7e50bc221845ec0d04df0022b2f457a21fb2f816dab2fbe64d59377b32031f languageName: node linkType: hard @@ -10834,7 +10834,7 @@ __metadata: resolution: "@types/istanbul-reports@npm:3.0.1" dependencies: "@types/istanbul-lib-report": "npm:*" - checksum: e147f0db9346a0cae9a359220bc76f7c78509fb6979a2597feb24d64b6e8328d2d26f9d152abbd59c6bca721e4ea2530af20116d01df50815efafd1e151fd777 + checksum: 10c0/e147f0db9346a0cae9a359220bc76f7c78509fb6979a2597feb24d64b6e8328d2d26f9d152abbd59c6bca721e4ea2530af20116d01df50815efafd1e151fd777 languageName: node linkType: hard @@ -10844,21 +10844,21 @@ __metadata: dependencies: expect: "npm:^29.0.0" pretty-format: "npm:^29.0.0" - checksum: a28e7827ea7e1a2aace6a386868fa6b8402c162d6c71570aed2c29d3745ddc22ceef6899a20643071817905d3c57b670a7992fc8760bff65939351fd4dc481cf + checksum: 10c0/a28e7827ea7e1a2aace6a386868fa6b8402c162d6c71570aed2c29d3745ddc22ceef6899a20643071817905d3c57b670a7992fc8760bff65939351fd4dc481cf languageName: node linkType: hard "@types/js-levenshtein@npm:^1.1.1": version: 1.1.1 resolution: "@types/js-levenshtein@npm:1.1.1" - checksum: 23d021eb3c976e0a6648dbf2fc104cafd7f417b04aa22de24e3d26479d6295660e3f4cfdb93073924830297b8191ec64d86881c55b08c6d7a9798fde41d2a767 + checksum: 10c0/23d021eb3c976e0a6648dbf2fc104cafd7f417b04aa22de24e3d26479d6295660e3f4cfdb93073924830297b8191ec64d86881c55b08c6d7a9798fde41d2a767 languageName: node linkType: hard "@types/js-yaml@npm:^4.0.0": version: 4.0.5 resolution: "@types/js-yaml@npm:4.0.5" - checksum: 37eb783b16f1704d26bbf83b35cf5d12f6018c18f2c9232515468ac60a4c5b71b6344a7b872545eeca3dfd66bb17e2bb1e611646cc727d7c6a001165a4ec0a32 + checksum: 10c0/37eb783b16f1704d26bbf83b35cf5d12f6018c18f2c9232515468ac60a4c5b71b6344a7b872545eeca3dfd66bb17e2bb1e611646cc727d7c6a001165a4ec0a32 languageName: node linkType: hard @@ -10868,7 +10868,7 @@ __metadata: dependencies: ast-types: "npm:^0.14.1" recast: "npm:^0.20.3" - checksum: 1d204a4c3d9f52669e315dfbc1e65434ec55ee884574306d35048b89ef83b625c64d510228b6aabbd4248af566e02e0ce9de0aa8ccdfff696c69fbaced7007e7 + checksum: 10c0/1d204a4c3d9f52669e315dfbc1e65434ec55ee884574306d35048b89ef83b625c64d510228b6aabbd4248af566e02e0ce9de0aa8ccdfff696c69fbaced7007e7 languageName: node linkType: hard @@ -10879,28 +10879,28 @@ __metadata: "@types/node": "npm:*" "@types/tough-cookie": "npm:*" parse5: "npm:^7.0.0" - checksum: 3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 + checksum: 10c0/3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 languageName: node linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.12 resolution: "@types/json-schema@npm:7.0.12" - checksum: 2c39946ae321fe42d085c61a85872a81bbee70f9b2054ad344e8811dfc478fdbaf1ebf5f2989bb87c895ba2dfc3b1dcba85db11e467bbcdc023708814207791c + checksum: 10c0/2c39946ae321fe42d085c61a85872a81bbee70f9b2054ad344e8811dfc478fdbaf1ebf5f2989bb87c895ba2dfc3b1dcba85db11e467bbcdc023708814207791c languageName: node linkType: hard "@types/json-stable-stringify@npm:^1.0.32": version: 1.0.34 resolution: "@types/json-stable-stringify@npm:1.0.34" - checksum: b24c7953a314426011c2304f909278734504f5c77354c16ea3bbbc55cbba5f5e02ce026a2345dbfcd8a78f33a34693840441c12a31c653131a7010a568adc56c + checksum: 10c0/b24c7953a314426011c2304f909278734504f5c77354c16ea3bbbc55cbba5f5e02ce026a2345dbfcd8a78f33a34693840441c12a31c653131a7010a568adc56c languageName: node linkType: hard "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" - checksum: 6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac languageName: node linkType: hard @@ -10909,7 +10909,7 @@ __metadata: resolution: "@types/jsonfile@npm:6.1.1" dependencies: "@types/node": "npm:*" - checksum: 96dfca37e856978eaf256bf5200c46a01a27a0455b9323a72598e8d59ddd81095934bf15e9c84d6a30125cf63e1464aef6d70ab4a35f34ee2cdfa1fe0db0720b + checksum: 10c0/96dfca37e856978eaf256bf5200c46a01a27a0455b9323a72598e8d59ddd81095934bf15e9c84d6a30125cf63e1464aef6d70ab4a35f34ee2cdfa1fe0db0720b languageName: node linkType: hard @@ -10918,14 +10918,14 @@ __metadata: resolution: "@types/jsonwebtoken@npm:9.0.5" dependencies: "@types/node": "npm:*" - checksum: c582b8420586f3b9550f7e34992cb32be300bc953636f3b087ed9c180ce7ea5c2e4b35090be2d57f0d3168cc3ca1074932907caa2afe09f4e9c84cf5c0daefa8 + checksum: 10c0/c582b8420586f3b9550f7e34992cb32be300bc953636f3b087ed9c180ce7ea5c2e4b35090be2d57f0d3168cc3ca1074932907caa2afe09f4e9c84cf5c0daefa8 languageName: node linkType: hard "@types/keygrip@npm:*": version: 1.0.2 resolution: "@types/keygrip@npm:1.0.2" - checksum: 95c9cc9824754baecb73c42051477c9f9dfb1a4dcaf6f51d025398e379b146adc0da2c476ed0129fe4ea157413910e5e2acb10c6dad308ef5ea8a95080229fd5 + checksum: 10c0/95c9cc9824754baecb73c42051477c9f9dfb1a4dcaf6f51d025398e379b146adc0da2c476ed0129fe4ea157413910e5e2acb10c6dad308ef5ea8a95080229fd5 languageName: node linkType: hard @@ -10934,35 +10934,35 @@ __metadata: resolution: "@types/keyv@npm:3.1.4" dependencies: "@types/node": "npm:*" - checksum: ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + checksum: 10c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c languageName: node linkType: hard "@types/line-column@npm:1.0.0": version: 1.0.0 resolution: "@types/line-column@npm:1.0.0" - checksum: 70503f45d4e0953b470067df22911e0a9e877f5d8459dcbc2bbebc7dd8534114ef99fd0f0926e657fb9711e45e3ffaa7fb04469b605252f4309dbe66cb1c9489 + checksum: 10c0/70503f45d4e0953b470067df22911e0a9e877f5d8459dcbc2bbebc7dd8534114ef99fd0f0926e657fb9711e45e3ffaa7fb04469b605252f4309dbe66cb1c9489 languageName: node linkType: hard "@types/linkify-it@npm:*": version: 3.0.2 resolution: "@types/linkify-it@npm:3.0.2" - checksum: 4cf1452a11f5b9465aafe0448b36323fdc640bd370a61c44421bed89b8b88b77d94deede21e1bd54e410412492a1c21252efc15fa80b1529df5057f03a15bd49 + checksum: 10c0/4cf1452a11f5b9465aafe0448b36323fdc640bd370a61c44421bed89b8b88b77d94deede21e1bd54e410412492a1c21252efc15fa80b1529df5057f03a15bd49 languageName: node linkType: hard "@types/lodash@npm:4.14.201, @types/lodash@npm:^4.14.167": version: 4.14.201 resolution: "@types/lodash@npm:4.14.201" - checksum: 14dc43787296c429433d7d034ed47c5ac24b92217056f80a0e6c990449120b9c9c1058918188945fb88353c0c8333c5c36dccc40c51edbd39b05d2169ab2e0ad + checksum: 10c0/14dc43787296c429433d7d034ed47c5ac24b92217056f80a0e6c990449120b9c9c1058918188945fb88353c0c8333c5c36dccc40c51edbd39b05d2169ab2e0ad languageName: node linkType: hard "@types/long@npm:^4.0.0": version: 4.0.2 resolution: "@types/long@npm:4.0.2" - checksum: 42ec66ade1f72ff9d143c5a519a65efc7c1c77be7b1ac5455c530ae9acd87baba065542f8847522af2e3ace2cc999f3ad464ef86e6b7352eece34daf88f8c924 + checksum: 10c0/42ec66ade1f72ff9d143c5a519a65efc7c1c77be7b1ac5455c530ae9acd87baba065542f8847522af2e3ace2cc999f3ad464ef86e6b7352eece34daf88f8c924 languageName: node linkType: hard @@ -10971,7 +10971,7 @@ __metadata: resolution: "@types/lru-cache@npm:7.10.10" dependencies: lru-cache: "npm:*" - checksum: ab85558867cb059bebd42074c1cd517eb41efb1db22b9d26dfdc58df01c83ff9c212a562b4ec3d5936418ffb03e626a0f30463026aa5fb5ced41e3b4b4af057f + checksum: 10c0/ab85558867cb059bebd42074c1cd517eb41efb1db22b9d26dfdc58df01c83ff9c212a562b4ec3d5936418ffb03e626a0f30463026aa5fb5ced41e3b4b4af057f languageName: node linkType: hard @@ -10981,28 +10981,28 @@ __metadata: dependencies: "@types/linkify-it": "npm:*" "@types/mdurl": "npm:*" - checksum: f72e08f69d76be2e30cd367fd6e5302c6878aa44e5b1a952fe7e41280044502bcb9bac8459ad94f6bb5e4f9c4cb52803950609ad66786f0fddc3a8bd533f777d + checksum: 10c0/f72e08f69d76be2e30cd367fd6e5302c6878aa44e5b1a952fe7e41280044502bcb9bac8459ad94f6bb5e4f9c4cb52803950609ad66786f0fddc3a8bd533f777d languageName: node linkType: hard "@types/md5@npm:2.3.5": version: 2.3.5 resolution: "@types/md5@npm:2.3.5" - checksum: aef9c40ab0ec61f1ae2acb04ee04e55b99eeec64af58176ef36d4feaf6aac335f32caca07eca0e3a1813fc362bf0b8663423250e24b39ebcfdc24c6ca4abe1cf + checksum: 10c0/aef9c40ab0ec61f1ae2acb04ee04e55b99eeec64af58176ef36d4feaf6aac335f32caca07eca0e3a1813fc362bf0b8663423250e24b39ebcfdc24c6ca4abe1cf languageName: node linkType: hard "@types/mdurl@npm:*": version: 1.0.2 resolution: "@types/mdurl@npm:1.0.2" - checksum: 38d18f0d63af68d0480b821b3d884e144b669c0617010da4c13a444498384b4833aff17f84768afeeca7ef3e6cfcd8bb7c462ffbc39a81ff549f17ae5c3ffb8e + checksum: 10c0/38d18f0d63af68d0480b821b3d884e144b669c0617010da4c13a444498384b4833aff17f84768afeeca7ef3e6cfcd8bb7c462ffbc39a81ff549f17ae5c3ffb8e languageName: node linkType: hard "@types/mdx@npm:^2.0.0": version: 2.0.5 resolution: "@types/mdx@npm:2.0.5" - checksum: f46932365a24ad6927dd87678598b839fa64ef8c9d0714b45a0185ac52427b374899ba96022f97330b27aca3572a6815f844cf345a50b9c0c483f485c243eda1 + checksum: 10c0/f46932365a24ad6927dd87678598b839fa64ef8c9d0714b45a0185ac52427b374899ba96022f97330b27aca3572a6815f844cf345a50b9c0c483f485c243eda1 languageName: node linkType: hard @@ -11011,56 +11011,56 @@ __metadata: resolution: "@types/memjs@npm:1.3.0" dependencies: "@types/node": "npm:*" - checksum: 71d8dda576405a8ca16b6b312a546e4703f102a24d39c64d486b9bf6cdb13498ebf1c14e3b5ce583baeae47f84f21576c64950ba094b14ccd72639106a17dfd5 + checksum: 10c0/71d8dda576405a8ca16b6b312a546e4703f102a24d39c64d486b9bf6cdb13498ebf1c14e3b5ce583baeae47f84f21576c64950ba094b14ccd72639106a17dfd5 languageName: node linkType: hard "@types/mime-types@npm:2.1.4, @types/mime-types@npm:^2.1.0": version: 2.1.4 resolution: "@types/mime-types@npm:2.1.4" - checksum: a10d57881d14a053556b3d09292de467968d965b0a06d06732c748da39b3aa569270b5b9f32529fd0e9ac1e5f3b91abb894f5b1996373254a65cb87903c86622 + checksum: 10c0/a10d57881d14a053556b3d09292de467968d965b0a06d06732c748da39b3aa569270b5b9f32529fd0e9ac1e5f3b91abb894f5b1996373254a65cb87903c86622 languageName: node linkType: hard "@types/mime@npm:*": version: 3.0.1 resolution: "@types/mime@npm:3.0.1" - checksum: c4c0fc89042822a3b5ffd6ef0da7006513454ee8376ffa492372d17d2925a4e4b1b194c977b718c711df38b33eb9d06deb5dbf9f851bcfb7e5e65f06b2a87f97 + checksum: 10c0/c4c0fc89042822a3b5ffd6ef0da7006513454ee8376ffa492372d17d2925a4e4b1b194c977b718c711df38b33eb9d06deb5dbf9f851bcfb7e5e65f06b2a87f97 languageName: node linkType: hard "@types/mime@npm:^1": version: 1.3.2 resolution: "@types/mime@npm:1.3.2" - checksum: 61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 + checksum: 10c0/61d144e5170c6cdf6de334ec0ee4bb499b1a0fb0233834a9e8cec6d289b0e3042bedf35cbc1c995d71a247635770dae3f13a9ddae69098bb54b933429bc08d35 languageName: node linkType: hard "@types/minimatch@npm:^3.0.3": version: 3.0.5 resolution: "@types/minimatch@npm:3.0.5" - checksum: a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 + checksum: 10c0/a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 languageName: node linkType: hard "@types/minimatch@npm:^5.1.2": version: 5.1.2 resolution: "@types/minimatch@npm:5.1.2" - checksum: 83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 + checksum: 10c0/83cf1c11748891b714e129de0585af4c55dd4c2cafb1f1d5233d79246e5e1e19d1b5ad9e8db449667b3ffa2b6c80125c429dbee1054e9efb45758dbc4e118562 languageName: node linkType: hard "@types/minimist@npm:^1.2.0, @types/minimist@npm:^1.2.2": version: 1.2.2 resolution: "@types/minimist@npm:1.2.2" - checksum: f220f57f682bbc3793dab4518f8e2180faa79d8e2589c79614fd777d7182be203ba399020c3a056a115064f5d57a065004a32b522b2737246407621681b24137 + checksum: 10c0/f220f57f682bbc3793dab4518f8e2180faa79d8e2589c79614fd777d7182be203ba399020c3a056a115064f5d57a065004a32b522b2737246407621681b24137 languageName: node linkType: hard "@types/mjml-core@npm:*": version: 4.7.1 resolution: "@types/mjml-core@npm:4.7.1" - checksum: 11deecd239b81d4f4cfa9440881e90379b28243d6c7108ca1ce7738e0e1f94fca23883ba1c872e39037e9d954746fdac79692d7fb36cfc41d48f22dfea75381c + checksum: 10c0/11deecd239b81d4f4cfa9440881e90379b28243d6c7108ca1ce7738e0e1f94fca23883ba1c872e39037e9d954746fdac79692d7fb36cfc41d48f22dfea75381c languageName: node linkType: hard @@ -11069,14 +11069,14 @@ __metadata: resolution: "@types/mjml@npm:4.7.1" dependencies: "@types/mjml-core": "npm:*" - checksum: 52dc7cf2388f8def26ae3fae3a230650d4aa76de10a0ef832a4db0c9a8a20daed7520ceeecee037992a884e422a18735c096ca48e8bc2bbb6a3e76fa02ba3d74 + checksum: 10c0/52dc7cf2388f8def26ae3fae3a230650d4aa76de10a0ef832a4db0c9a8a20daed7520ceeecee037992a884e422a18735c096ca48e8bc2bbb6a3e76fa02ba3d74 languageName: node linkType: hard "@types/ms@npm:*": version: 0.7.31 resolution: "@types/ms@npm:0.7.31" - checksum: 19fae4f587651e8761c76a0c72ba8af1700d37054476878d164b758edcc926f4420ed06037a1a7fdddc1dbea25265895d743c8b2ea44f3f3f7ac06c449b9221e + checksum: 10c0/19fae4f587651e8761c76a0c72ba8af1700d37054476878d164b758edcc926f4420ed06037a1a7fdddc1dbea25265895d743c8b2ea44f3f3f7ac06c449b9221e languageName: node linkType: hard @@ -11085,14 +11085,14 @@ __metadata: resolution: "@types/ncp@npm:2.0.8" dependencies: "@types/node": "npm:*" - checksum: c488159404263d2a7d0d560eb8f3102ddd47de46587144d2f48bff9b856bec24a89c6fd7d1061052f1d17223534de3b391616dc92ff0e99615654e31e4164f87 + checksum: 10c0/c488159404263d2a7d0d560eb8f3102ddd47de46587144d2f48bff9b856bec24a89c6fd7d1061052f1d17223534de3b391616dc92ff0e99615654e31e4164f87 languageName: node linkType: hard "@types/netlify-identity-widget@npm:1.9.6": version: 1.9.6 resolution: "@types/netlify-identity-widget@npm:1.9.6" - checksum: 730b17f9271d27a9640b4494f49d988ad6c99f373c8954c2b57cbac82816f5196977f43d0232d7a4fd77702fe2d666aaac05241aa5381de46158369be9288a84 + checksum: 10c0/730b17f9271d27a9640b4494f49d988ad6c99f373c8954c2b57cbac82816f5196977f43d0232d7a4fd77702fe2d666aaac05241aa5381de46158369be9288a84 languageName: node linkType: hard @@ -11102,7 +11102,7 @@ __metadata: dependencies: "@types/node": "npm:*" form-data: "npm:^3.0.0" - checksum: bd2ce7621905f9d80cd2fbe003d32a8d304f4aa53c12eb01a498255a1fc570d82216cff9a7ed38ff32570c78e46c924a8e23187a011ecfcfec4c530c7bdecdbb + checksum: 10c0/bd2ce7621905f9d80cd2fbe003d32a8d304f4aa53c12eb01a498255a1fc570d82216cff9a7ed38ff32570c78e46c924a8e23187a011ecfcfec4c530c7bdecdbb languageName: node linkType: hard @@ -11112,7 +11112,7 @@ __metadata: dependencies: "@types/node": "npm:*" form-data: "npm:^3.0.0" - checksum: e43e4670ed8b7693dbf660ac1450b14fcfcdd8efca1eb0f501b6ad95af2d1fa06f8541db03e9511e82a5fee510a238fe0913330c9a58f8ac6892b985f6dd993e + checksum: 10c0/e43e4670ed8b7693dbf660ac1450b14fcfcdd8efca1eb0f501b6ad95af2d1fa06f8541db03e9511e82a5fee510a238fe0913330c9a58f8ac6892b985f6dd993e languageName: node linkType: hard @@ -11121,14 +11121,14 @@ __metadata: resolution: "@types/node@npm:20.11.10" dependencies: undici-types: "npm:~5.26.4" - checksum: aced8595c2786d4e60471772659add1e2e0d1f2b73d119820b2e1815426d6e52c6a77f1c7fca8ea46490c36f7959cc46b0dc609fa2e80b7fd24f9a7d696c2210 + checksum: 10c0/aced8595c2786d4e60471772659add1e2e0d1f2b73d119820b2e1815426d6e52c6a77f1c7fca8ea46490c36f7959cc46b0dc609fa2e80b7fd24f9a7d696c2210 languageName: node linkType: hard "@types/node@npm:16.18.6": version: 16.18.6 resolution: "@types/node@npm:16.18.6" - checksum: 88192f5cd3d21ca827898c903ce6fbb8a92a51d0f9d8f7e93ac3f2f3b46cdd9f29c969fe3af9ba004833bb265c6330042f37d11cd97b9e4f54dabf2b34399075 + checksum: 10c0/88192f5cd3d21ca827898c903ce6fbb8a92a51d0f9d8f7e93ac3f2f3b46cdd9f29c969fe3af9ba004833bb265c6330042f37d11cd97b9e4f54dabf2b34399075 languageName: node linkType: hard @@ -11137,7 +11137,7 @@ __metadata: resolution: "@types/node@npm:18.19.3" dependencies: undici-types: "npm:~5.26.4" - checksum: 3ed943d06e9dff70a3da793f794f1192cd93b0ababdb9f07425a05680f17cfce649cbc46734265f6fbe52fd9f277496d3a4da26c013f1193a0345f2420ea6cd0 + checksum: 10c0/3ed943d06e9dff70a3da793f794f1192cd93b0ababdb9f07425a05680f17cfce649cbc46734265f6fbe52fd9f277496d3a4da26c013f1193a0345f2420ea6cd0 languageName: node linkType: hard @@ -11146,49 +11146,49 @@ __metadata: resolution: "@types/nodemailer@npm:6.4.14" dependencies: "@types/node": "npm:*" - checksum: b5958843576cde76dc532aa7b726182fef8b466fa9fcaf1aa03f89f02e896bec4e28b593ffa1a289a46bd0b7fdf34da0640ab7ef8f0811948016f58f77e16307 + checksum: 10c0/b5958843576cde76dc532aa7b726182fef8b466fa9fcaf1aa03f89f02e896bec4e28b593ffa1a289a46bd0b7fdf34da0640ab7ef8f0811948016f58f77e16307 languageName: node linkType: hard "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" - checksum: c90b163741f27a1a4c3b1869d7d5c272adbd355eb50d5f060f9ce122ce4342cf35f5b0005f55ef780596cacfeb69b7eee54cd3c2e02d37f75e664945b6e75fc6 + checksum: 10c0/c90b163741f27a1a4c3b1869d7d5c272adbd355eb50d5f060f9ce122ce4342cf35f5b0005f55ef780596cacfeb69b7eee54cd3c2e02d37f75e664945b6e75fc6 languageName: node linkType: hard "@types/parse-json@npm:^4.0.0": version: 4.0.0 resolution: "@types/parse-json@npm:4.0.0" - checksum: 1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 + checksum: 10c0/1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 languageName: node linkType: hard "@types/pascalcase@npm:1.0.3": version: 1.0.3 resolution: "@types/pascalcase@npm:1.0.3" - checksum: 4bc93fee5a7e3ea63a1c92f66cc72462dc557430c705ecefd834181950a779cf188f24e9afac15687ff9fdf360cb5f233130c6fc92d4bb94772551557adb8281 + checksum: 10c0/4bc93fee5a7e3ea63a1c92f66cc72462dc557430c705ecefd834181950a779cf188f24e9afac15687ff9fdf360cb5f233130c6fc92d4bb94772551557adb8281 languageName: node linkType: hard "@types/phoenix@npm:^1.5.4": version: 1.6.0 resolution: "@types/phoenix@npm:1.6.0" - checksum: 5c3caf2028423b584680bf839b2579c4369a3c1388d33dbf9a8354be8b74c6357cba045f9a1ea32f92d5a6f6c78375c3e275a1d363fbf289aef50a2eea0d8748 + checksum: 10c0/5c3caf2028423b584680bf839b2579c4369a3c1388d33dbf9a8354be8b74c6357cba045f9a1ea32f92d5a6f6c78375c3e275a1d363fbf289aef50a2eea0d8748 languageName: node linkType: hard "@types/prettier@npm:2.7.3, @types/prettier@npm:^2.0.0": version: 2.7.3 resolution: "@types/prettier@npm:2.7.3" - checksum: 0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 + checksum: 10c0/0960b5c1115bb25e979009d0b44c42cf3d792accf24085e4bfce15aef5794ea042e04e70c2139a2c3387f781f18c89b5706f000ddb089e9a4a2ccb7536a2c5f0 languageName: node linkType: hard "@types/pretty-hrtime@npm:^1.0.0": version: 1.0.1 resolution: "@types/pretty-hrtime@npm:1.0.1" - checksum: e990110a3626e987319092c5149d5ea244785b83fbbd8e62605714ec1fa4317a3524ae0b6381cdc2ca92619d9a451b3fe9ff4085c42826f5398e3380d3031bff + checksum: 10c0/e990110a3626e987319092c5149d5ea244785b83fbbd8e62605714ec1fa4317a3524ae0b6381cdc2ca92619d9a451b3fe9ff4085c42826f5398e3380d3031bff languageName: node linkType: hard @@ -11198,35 +11198,35 @@ __metadata: dependencies: "@types/node": "npm:*" kleur: "npm:^3.0.3" - checksum: b5940938ab587d3a054919d14b31a7ca5660ce2b4e4a66d6949687a5305e7281a5963b1fe2dd87839ec0876bb01258fbaf89f120d134303853be146f34241f67 + checksum: 10c0/b5940938ab587d3a054919d14b31a7ca5660ce2b4e4a66d6949687a5305e7281a5963b1fe2dd87839ec0876bb01258fbaf89f120d134303853be146f34241f67 languageName: node linkType: hard "@types/prop-types@npm:*": version: 15.7.5 resolution: "@types/prop-types@npm:15.7.5" - checksum: 648aae41423821c61c83823ae36116c8d0f68258f8b609bdbc257752dcd616438d6343d554262aa9a7edaee5a19aca2e028a74fa2d0f40fffaf2816bc7056857 + checksum: 10c0/648aae41423821c61c83823ae36116c8d0f68258f8b609bdbc257752dcd616438d6343d554262aa9a7edaee5a19aca2e028a74fa2d0f40fffaf2816bc7056857 languageName: node linkType: hard "@types/ps-tree@npm:^1.1.2": version: 1.1.2 resolution: "@types/ps-tree@npm:1.1.2" - checksum: d43d5ac375886c37b11f54254578925ff07093b07326898d34eec744bf5721b61b7f3f743b2337e7157a368bb39166e679f26d464620371a0d232509f7f9ac99 + checksum: 10c0/d43d5ac375886c37b11f54254578925ff07093b07326898d34eec744bf5721b61b7f3f743b2337e7157a368bb39166e679f26d464620371a0d232509f7f9ac99 languageName: node linkType: hard "@types/qs@npm:*, @types/qs@npm:6.9.11, @types/qs@npm:^6.9.5": version: 6.9.11 resolution: "@types/qs@npm:6.9.11" - checksum: 657a50f05b694d6fd3916d24177cfa0f3b8b87d9deff4ffa4dddcb0b03583ebf7c47b424b8de400270fb9a5cc1e9cf790dd82c833c6935305851e7da8ede3ff5 + checksum: 10c0/657a50f05b694d6fd3916d24177cfa0f3b8b87d9deff4ffa4dddcb0b03583ebf7c47b424b8de400270fb9a5cc1e9cf790dd82c833c6935305851e7da8ede3ff5 languageName: node linkType: hard "@types/range-parser@npm:*": version: 1.2.4 resolution: "@types/range-parser@npm:1.2.4" - checksum: 8e3c3cda88675efd9145241bcb454449715b7d015a7fb80d018dcb3d441fa1938b302242cc0dfa6b02c5d014dd8bc082ae90091e62b1e816cae3ec36c2a7dbcb + checksum: 10c0/8e3c3cda88675efd9145241bcb454449715b7d015a7fb80d018dcb3d441fa1938b302242cc0dfa6b02c5d014dd8bc082ae90091e62b1e816cae3ec36c2a7dbcb languageName: node linkType: hard @@ -11235,7 +11235,7 @@ __metadata: resolution: "@types/react-dom@npm:18.2.19" dependencies: "@types/react": "npm:*" - checksum: 88d7c6daa4659f661d0c97985d9fca492f24b421a34bb614dcd94c343aed7bea121463149e97fb01ecaa693be17b7d1542cf71ddb1705f3889a81eb2639a88aa + checksum: 10c0/88d7c6daa4659f661d0c97985d9fca492f24b421a34bb614dcd94c343aed7bea121463149e97fb01ecaa693be17b7d1542cf71ddb1705f3889a81eb2639a88aa languageName: node linkType: hard @@ -11246,7 +11246,7 @@ __metadata: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 6b1c73beafbbc582dc54ffd92b3779f6d850e8f6b5ce5d04b31e9498a3d77bfc416bb08f0d8d63ab4f4649ccd6639996472416871c01c74a528b16a55faeaf38 + checksum: 10c0/6b1c73beafbbc582dc54ffd92b3779f6d850e8f6b5ce5d04b31e9498a3d77bfc416bb08f0d8d63ab4f4649ccd6639996472416871c01c74a528b16a55faeaf38 languageName: node linkType: hard @@ -11255,14 +11255,14 @@ __metadata: resolution: "@types/readdir-glob@npm:1.1.5" dependencies: "@types/node": "npm:*" - checksum: 46849136a3b5246105bca0303aab80552a9ff67e024e77ef1845a806a24c1a621dfcba0e4ee5a00ebad17f51edb80928f2dd6dc510a1d9897f3bc22ed64e5cbd + checksum: 10c0/46849136a3b5246105bca0303aab80552a9ff67e024e77ef1845a806a24c1a621dfcba0e4ee5a00ebad17f51edb80928f2dd6dc510a1d9897f3bc22ed64e5cbd languageName: node linkType: hard "@types/resolve@npm:^1.20.2": version: 1.20.6 resolution: "@types/resolve@npm:1.20.6" - checksum: a9b0549d816ff2c353077365d865a33655a141d066d0f5a3ba6fd4b28bc2f4188a510079f7c1f715b3e7af505a27374adce2a5140a3ece2a059aab3d6e1a4244 + checksum: 10c0/a9b0549d816ff2c353077365d865a33655a141d066d0f5a3ba6fd4b28bc2f4188a510079f7c1f715b3e7af505a27374adce2a5140a3ece2a059aab3d6e1a4244 languageName: node linkType: hard @@ -11271,14 +11271,14 @@ __metadata: resolution: "@types/responselike@npm:1.0.0" dependencies: "@types/node": "npm:*" - checksum: 474ac2402e6d43c007eee25f50d01eb1f67255ca83dd8e036877292bbe8dd5d2d1e50b54b408e233b50a8c38e681ff3ebeaf22f18b478056eddb65536abb003a + checksum: 10c0/474ac2402e6d43c007eee25f50d01eb1f67255ca83dd8e036877292bbe8dd5d2d1e50b54b408e233b50a8c38e681ff3ebeaf22f18b478056eddb65536abb003a languageName: node linkType: hard "@types/retry@npm:0.12.0": version: 0.12.0 resolution: "@types/retry@npm:0.12.0" - checksum: 7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 + checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 languageName: node linkType: hard @@ -11288,21 +11288,21 @@ __metadata: dependencies: "@types/glob": "npm:*" "@types/node": "npm:*" - checksum: 08beaf5d5ac6d6ecb76df74e3f873453feab079b5993f7cdd00bf2789bc2dea6917d5d24e75a5346fe201f396fa8a6eccb1291f97695997e34733f9663228a86 + checksum: 10c0/08beaf5d5ac6d6ecb76df74e3f873453feab079b5993f7cdd00bf2789bc2dea6917d5d24e75a5346fe201f396fa8a6eccb1291f97695997e34733f9663228a86 languageName: node linkType: hard "@types/scheduler@npm:*": version: 0.16.3 resolution: "@types/scheduler@npm:0.16.3" - checksum: c249d4b96fa05165ac22c214f94a045ee0af8beedefdbc54b769febd0044cab3a874e55419841a0dcc76439e379a63e257f3253c87168e3261e7bc783d623302 + checksum: 10c0/c249d4b96fa05165ac22c214f94a045ee0af8beedefdbc54b769febd0044cab3a874e55419841a0dcc76439e379a63e257f3253c87168e3261e7bc783d623302 languageName: node linkType: hard "@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4": version: 7.5.0 resolution: "@types/semver@npm:7.5.0" - checksum: ca4ba4642b5972b6e88e73c5bc02bbaceb8d76bce71748d86e3e95042d4e5a44603113a1dcd2cb9b73ad6f91f6e4ab73185eb41bbfc9c73b11f0ed3db3b7443a + checksum: 10c0/ca4ba4642b5972b6e88e73c5bc02bbaceb8d76bce71748d86e3e95042d4e5a44603113a1dcd2cb9b73ad6f91f6e4ab73185eb41bbfc9c73b11f0ed3db3b7443a languageName: node linkType: hard @@ -11312,7 +11312,7 @@ __metadata: dependencies: "@types/mime": "npm:^1" "@types/node": "npm:*" - checksum: 1aad6bfafdaa3a3cadad1b441843dfd166821c0e93513daabe979de85b552a1298cfb6f07d40f80b5ecf14a3194dc148deb138605039841f1dadc7132c73e634 + checksum: 10c0/1aad6bfafdaa3a3cadad1b441843dfd166821c0e93513daabe979de85b552a1298cfb6f07d40f80b5ecf14a3194dc148deb138605039841f1dadc7132c73e634 languageName: node linkType: hard @@ -11321,7 +11321,7 @@ __metadata: resolution: "@types/serve-index@npm:1.9.1" dependencies: "@types/express": "npm:*" - checksum: ed1ac8407101a787ebf09164a81bc24248ccf9d9789cd4eaa360a9a06163e5d2168c46ab0ddf2007e47b455182ecaa7632a886639919d9d409a27f7aef4e847a + checksum: 10c0/ed1ac8407101a787ebf09164a81bc24248ccf9d9789cd4eaa360a9a06163e5d2168c46ab0ddf2007e47b455182ecaa7632a886639919d9d409a27f7aef4e847a languageName: node linkType: hard @@ -11332,7 +11332,7 @@ __metadata: "@types/http-errors": "npm:*" "@types/mime": "npm:*" "@types/node": "npm:*" - checksum: 5e7b3e17b376f8910d5c9a0b1def38d7841c8939713940098f1b80a330d5caa9cfe9b632c122252cd70165052439e18fafa46635dc55b1d6058343901eec22eb + checksum: 10c0/5e7b3e17b376f8910d5c9a0b1def38d7841c8939713940098f1b80a330d5caa9cfe9b632c122252cd70165052439e18fafa46635dc55b1d6058343901eec22eb languageName: node linkType: hard @@ -11341,21 +11341,21 @@ __metadata: resolution: "@types/set-cookie-parser@npm:2.4.2" dependencies: "@types/node": "npm:*" - checksum: 71a668ebd353deed2c0fccac7505c29e4b6b1cabde91ce9a1b2a9956dd8c91f82fd6b730dcb726a43e3a511c912b1f64e2f2dea32c4fec7b5ed7f950e6ea9a6d + checksum: 10c0/71a668ebd353deed2c0fccac7505c29e4b6b1cabde91ce9a1b2a9956dd8c91f82fd6b730dcb726a43e3a511c912b1f64e2f2dea32c4fec7b5ed7f950e6ea9a6d languageName: node linkType: hard "@types/sinonjs__fake-timers@npm:8.1.1": version: 8.1.1 resolution: "@types/sinonjs__fake-timers@npm:8.1.1" - checksum: e2e6c425a548177c0930c2f9b82d3951956c9701b9ebf59623d5ad2c3229c523d3c0d598e79fe7392a239657abd3dbe3676be0650ce438bcd1199ee3b617a4d7 + checksum: 10c0/e2e6c425a548177c0930c2f9b82d3951956c9701b9ebf59623d5ad2c3229c523d3c0d598e79fe7392a239657abd3dbe3676be0650ce438bcd1199ee3b617a4d7 languageName: node linkType: hard "@types/sizzle@npm:^2.3.2": version: 2.3.3 resolution: "@types/sizzle@npm:2.3.3" - checksum: a19de697d2d444c0a3e3cdbfb303b337aeef9dc54b8bdb4a2f15b1fbd7ab1f7b7bf85065b17b5d2da48ea80d38d659fa213ae706880787ff92323e9fce76d841 + checksum: 10c0/a19de697d2d444c0a3e3cdbfb303b337aeef9dc54b8bdb4a2f15b1fbd7ab1f7b7bf85065b17b5d2da48ea80d38d659fa213ae706880787ff92323e9fce76d841 languageName: node linkType: hard @@ -11364,7 +11364,7 @@ __metadata: resolution: "@types/sockjs@npm:0.3.33" dependencies: "@types/node": "npm:*" - checksum: 75b9b2839970ebab3e557955b9e2b1091d87cefabee1023e566bccc093411acc4a1402f3da4fde18aca44f5b9c42fe0626afd073a2140002b9b53eb71a084e4d + checksum: 10c0/75b9b2839970ebab3e557955b9e2b1091d87cefabee1023e566bccc093411acc4a1402f3da4fde18aca44f5b9c42fe0626afd073a2140002b9b53eb71a084e4d languageName: node linkType: hard @@ -11373,21 +11373,21 @@ __metadata: resolution: "@types/split2@npm:4.2.3" dependencies: "@types/node": "npm:*" - checksum: 92326872b1f6f2e5a0808682a3f0630efb98bed51b1e40e2133e740f664bbde7a21af54e2a1f1a1f6eac218a70d7a9bae22d3e6d614950c06ddab391b7a1dfca + checksum: 10c0/92326872b1f6f2e5a0808682a3f0630efb98bed51b1e40e2133e740f664bbde7a21af54e2a1f1a1f6eac218a70d7a9bae22d3e6d614950c06ddab391b7a1dfca languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": version: 2.0.1 resolution: "@types/stack-utils@npm:2.0.1" - checksum: 3327ee919a840ffe907bbd5c1d07dfd79137dd9732d2d466cf717ceec5bb21f66296173c53bb56cff95fae4185b9cd6770df3e9745fe4ba528bbc4975f54d13f + checksum: 10c0/3327ee919a840ffe907bbd5c1d07dfd79137dd9732d2d466cf717ceec5bb21f66296173c53bb56cff95fae4185b9cd6770df3e9745fe4ba528bbc4975f54d13f languageName: node linkType: hard "@types/tough-cookie@npm:*": version: 4.0.2 resolution: "@types/tough-cookie@npm:4.0.2" - checksum: 38d01fc79a9a87166253b8c548bb401599424c57a818bea1b47a68be6dcd37fc3bff381f978354e00221f284937d5066bb92d58bf79952f9d21deb934e8ec9a7 + checksum: 10c0/38d01fc79a9a87166253b8c548bb401599424c57a818bea1b47a68be6dcd37fc3bff381f978354e00221f284937d5066bb92d58bf79952f9d21deb934e8ec9a7 languageName: node linkType: hard @@ -11396,35 +11396,35 @@ __metadata: resolution: "@types/tunnel@npm:0.0.3" dependencies: "@types/node": "npm:*" - checksum: 6d479136e541bc080ae8c71ff794b97c513d2787116e0dffb6ffdfb69f2257422e928a585fe84b3ae3a997e99d712b65d0c3fabf43a0980a483e83a042644ace + checksum: 10c0/6d479136e541bc080ae8c71ff794b97c513d2787116e0dffb6ffdfb69f2257422e928a585fe84b3ae3a997e99d712b65d0c3fabf43a0980a483e83a042644ace languageName: node linkType: hard "@types/unist@npm:^2.0.0": version: 2.0.6 resolution: "@types/unist@npm:2.0.6" - checksum: 8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb + checksum: 10c0/8690789328e8e10c487334341fcf879fd49f8987c98ce49849f9871052f95d87477735171bb661e6f551bdb95235e015dfdad1867ca1d9b5b88a053f72ac40eb languageName: node linkType: hard "@types/uuid@npm:9.0.7, @types/uuid@npm:^9.0.1": version: 9.0.7 resolution: "@types/uuid@npm:9.0.7" - checksum: b329ebd4f9d1d8e08d4f2cc211be4922d70d1149f73d5772630e4a3acfb5170c6d37b3d7a39a0412f1a56e86e8a844c7f297c798b082f90380608bf766688787 + checksum: 10c0/b329ebd4f9d1d8e08d4f2cc211be4922d70d1149f73d5772630e4a3acfb5170c6d37b3d7a39a0412f1a56e86e8a844c7f297c798b082f90380608bf766688787 languageName: node linkType: hard "@types/vscode@npm:1.79.1": version: 1.79.1 resolution: "@types/vscode@npm:1.79.1" - checksum: e9c2ac55b1012ffec62551064666fe6cf7c54ea766cf67387d9fcfe85ff1f2b11f7300eeea86bc8d42d994f1b4cc1d25610e84a7c9dde4b97a56de7d235be060 + checksum: 10c0/e9c2ac55b1012ffec62551064666fe6cf7c54ea766cf67387d9fcfe85ff1f2b11f7300eeea86bc8d42d994f1b4cc1d25610e84a7c9dde4b97a56de7d235be060 languageName: node linkType: hard "@types/webpack-env@npm:1.18.4": version: 1.18.4 resolution: "@types/webpack-env@npm:1.18.4" - checksum: 3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 + checksum: 10c0/3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 languageName: node linkType: hard @@ -11435,7 +11435,7 @@ __metadata: "@types/node": "npm:*" tapable: "npm:^2.2.0" webpack: "npm:^5" - checksum: d1fec1f678af79dd0d84333740bdd2ce128c7f4fd1f8d14bb0ec0f4c5af70580af68350f677e3696003a8cb2e2b5f510f8c0ed7ee5ad2bc7874c87f80ecd7c8d + checksum: 10c0/d1fec1f678af79dd0d84333740bdd2ce128c7f4fd1f8d14bb0ec0f4c5af70580af68350f677e3696003a8cb2e2b5f510f8c0ed7ee5ad2bc7874c87f80ecd7c8d languageName: node linkType: hard @@ -11444,14 +11444,14 @@ __metadata: resolution: "@types/websocket@npm:1.0.5" dependencies: "@types/node": "npm:*" - checksum: 866f31a394d4fbcb4055420daaec16096e42666e30c573ca4291fc7fcde8316eb2ab4995f7f21c6e5e37572bcbf72483d8a6d340db303c6c2fcbbf79377b8b5a + checksum: 10c0/866f31a394d4fbcb4055420daaec16096e42666e30c573ca4291fc7fcde8316eb2ab4995f7f21c6e5e37572bcbf72483d8a6d340db303c6c2fcbbf79377b8b5a languageName: node linkType: hard "@types/which@npm:^3.0.0": version: 3.0.0 resolution: "@types/which@npm:3.0.0" - checksum: 6c867d8a70dd1ef8999acf0b721b4b7c10e4a08b783b532a5c1223e36c8dd1b4b9e3644891db7013ac817a7afc89bef6fc680c4faddd473d8384387428d5bf9c + checksum: 10c0/6c867d8a70dd1ef8999acf0b721b4b7c10e4a08b783b532a5c1223e36c8dd1b4b9e3644891db7013ac817a7afc89bef6fc680c4faddd473d8384387428d5bf9c languageName: node linkType: hard @@ -11460,14 +11460,14 @@ __metadata: resolution: "@types/ws@npm:8.5.5" dependencies: "@types/node": "npm:*" - checksum: 9fb5aaeb2899f2c5aa55946656a39fdf679e48ec4eff557901215249ac84f435853b1d224214e88a93fcbca4bc9a0b0af01113d76f37db0b5873a882e5e99935 + checksum: 10c0/9fb5aaeb2899f2c5aa55946656a39fdf679e48ec4eff557901215249ac84f435853b1d224214e88a93fcbca4bc9a0b0af01113d76f37db0b5873a882e5e99935 languageName: node linkType: hard "@types/yargs-parser@npm:*, @types/yargs-parser@npm:21.0.3": version: 21.0.3 resolution: "@types/yargs-parser@npm:21.0.3" - checksum: e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 languageName: node linkType: hard @@ -11476,7 +11476,7 @@ __metadata: resolution: "@types/yargs@npm:17.0.32" dependencies: "@types/yargs-parser": "npm:*" - checksum: 2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf languageName: node linkType: hard @@ -11485,14 +11485,14 @@ __metadata: resolution: "@types/yauzl@npm:2.10.0" dependencies: "@types/node": "npm:*" - checksum: e917cf11c78e9ca7d037d0e6e0d6d5d99443d9d7201f8f1a556f02a2bc57ae457487e9bfec89dfa848d16979b35de6e5b34840d4d0bb9e5f33849d077ac15154 + checksum: 10c0/e917cf11c78e9ca7d037d0e6e0d6d5d99443d9d7201f8f1a556f02a2bc57ae457487e9bfec89dfa848d16979b35de6e5b34840d4d0bb9e5f33849d077ac15154 languageName: node linkType: hard "@types/yoga-layout@npm:1.9.2": version: 1.9.2 resolution: "@types/yoga-layout@npm:1.9.2" - checksum: 9f2a8618afe3e2e18e76eeaa4ec7d09a85f01f071231f8ff21388d851f940dd7ae5867a5f9aef29eafe44c47453a328d3c718fff1451ab62266450b415e43150 + checksum: 10c0/9f2a8618afe3e2e18e76eeaa4ec7d09a85f01f071231f8ff21388d851f940dd7ae5867a5f9aef29eafe44c47453a328d3c718fff1451ab62266450b415e43150 languageName: node linkType: hard @@ -11516,7 +11516,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a + checksum: 10c0/3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a languageName: node linkType: hard @@ -11533,7 +11533,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 + checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 languageName: node linkType: hard @@ -11543,7 +11543,7 @@ __metadata: dependencies: "@typescript-eslint/types": "npm:5.62.0" "@typescript-eslint/visitor-keys": "npm:5.62.0" - checksum: 861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f languageName: node linkType: hard @@ -11560,14 +11560,14 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 + checksum: 10c0/93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 languageName: node linkType: hard "@typescript-eslint/types@npm:5.62.0": version: 5.62.0 resolution: "@typescript-eslint/types@npm:5.62.0" - checksum: 7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf languageName: node linkType: hard @@ -11585,7 +11585,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf languageName: node linkType: hard @@ -11603,7 +11603,7 @@ __metadata: semver: "npm:^7.3.7" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 languageName: node linkType: hard @@ -11613,14 +11613,14 @@ __metadata: dependencies: "@typescript-eslint/types": "npm:5.62.0" eslint-visitor-keys: "npm:^3.3.0" - checksum: 7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d languageName: node linkType: hard "@ungap/structured-clone@npm:^1.2.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d languageName: node linkType: hard @@ -11635,7 +11635,7 @@ __metadata: react-refresh: "npm:^0.14.0" peerDependencies: vite: ^4.2.0 || ^5.0.0 - checksum: de1eec44d703f32e5b58e776328ca20793657fe991835d15b290230b19a2a08be5d31501d424279ae13ecfed28044c117b69d746891c8d9b92c69e8a8907e989 + checksum: 10c0/de1eec44d703f32e5b58e776328ca20793657fe991835d15b290230b19a2a08be5d31501d424279ae13ecfed28044c117b69d746891c8d9b92c69e8a8907e989 languageName: node linkType: hard @@ -11646,7 +11646,7 @@ __metadata: "@vitest/spy": "npm:1.2.2" "@vitest/utils": "npm:1.2.2" chai: "npm:^4.3.10" - checksum: 920e80b956d9d5ef7909cbe2bf883c8556da11c5123ea037396cb672d7038116c9773bd36915a3df7be2ffd76b661d5a6487e7e5ded78f39e2500cb36ae81e59 + checksum: 10c0/920e80b956d9d5ef7909cbe2bf883c8556da11c5123ea037396cb672d7038116c9773bd36915a3df7be2ffd76b661d5a6487e7e5ded78f39e2500cb36ae81e59 languageName: node linkType: hard @@ -11657,7 +11657,7 @@ __metadata: "@vitest/utils": "npm:1.2.2" p-limit: "npm:^5.0.0" pathe: "npm:^1.1.1" - checksum: 25a9c03cca5b40738fe606757b14ee9d60d25193115b4674e3cc402c2b2c3844d234902d48bfa7646cb205455ea27891fef96733e033a570b85fe74ed29ff81c + checksum: 10c0/25a9c03cca5b40738fe606757b14ee9d60d25193115b4674e3cc402c2b2c3844d234902d48bfa7646cb205455ea27891fef96733e033a570b85fe74ed29ff81c languageName: node linkType: hard @@ -11668,7 +11668,7 @@ __metadata: magic-string: "npm:^0.30.5" pathe: "npm:^1.1.1" pretty-format: "npm:^29.7.0" - checksum: 0f8a69a289aa6466c7dd56f8327190d56a0bc7ad10412127de001c94784f6dba5e5bccb757def21f565f4efa3e00c307b92e8b6c302f11fc57889b743ba18a95 + checksum: 10c0/0f8a69a289aa6466c7dd56f8327190d56a0bc7ad10412127de001c94784f6dba5e5bccb757def21f565f4efa3e00c307b92e8b6c302f11fc57889b743ba18a95 languageName: node linkType: hard @@ -11677,7 +11677,7 @@ __metadata: resolution: "@vitest/spy@npm:1.2.2" dependencies: tinyspy: "npm:^2.2.0" - checksum: 5480048d26c0d82b524317552fbdcc05fed6ea626d887620647826453a344798a360f2a75af477512a1569b1b6c918eae62338e8b35575f875fc2d7ef51419f3 + checksum: 10c0/5480048d26c0d82b524317552fbdcc05fed6ea626d887620647826453a344798a360f2a75af477512a1569b1b6c918eae62338e8b35575f875fc2d7ef51419f3 languageName: node linkType: hard @@ -11689,7 +11689,7 @@ __metadata: estree-walker: "npm:^3.0.3" loupe: "npm:^2.3.7" pretty-format: "npm:^29.7.0" - checksum: 32449cb7eca8ecea56e0fce280c9770f65fa6b60bbba73be06ca2891096818899b4b3220bd3c815df8beb4266034db394fcf235e4de8959cce686b8b360948d1 + checksum: 10c0/32449cb7eca8ecea56e0fce280c9770f65fa6b60bbba73be06ca2891096818899b4b3220bd3c815df8beb4266034db394fcf235e4de8959cce686b8b360948d1 languageName: node linkType: hard @@ -11699,7 +11699,7 @@ __metadata: dependencies: https-proxy-agent: "npm:^7.0.2" proxy-from-env: "npm:^1.1.0" - checksum: e98cfdb4cadd0a5d0ae9d52e0807098ea7a9a3c7b1dc52f1213271278e565c3de6280ce29319aebf12c4d643ebe4e2e8ffa4ab613d03994688c1f6ebff4d1216 + checksum: 10c0/e98cfdb4cadd0a5d0ae9d52e0807098ea7a9a3c7b1dc52f1213271278e565c3de6280ce29319aebf12c4d643ebe4e2e8ffa4ab613d03994688c1f6ebff4d1216 languageName: node linkType: hard @@ -11709,7 +11709,7 @@ __metadata: dependencies: "@webassemblyjs/helper-numbers": "npm:1.11.6" "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" - checksum: e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb + checksum: 10c0/e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb languageName: node linkType: hard @@ -11720,49 +11720,49 @@ __metadata: "@webassemblyjs/helper-module-context": "npm:1.9.0" "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" "@webassemblyjs/wast-parser": "npm:1.9.0" - checksum: 8246c714346cdcd3ab204a2b09904d9d36c4f7da8f30cc217b0b7272a3ef57a3c21e95d51b26601641133fb66fea5cc46c357cf897808512f13b3d1c2efe88e4 + checksum: 10c0/8246c714346cdcd3ab204a2b09904d9d36c4f7da8f30cc217b0b7272a3ef57a3c21e95d51b26601641133fb66fea5cc46c357cf897808512f13b3d1c2efe88e4 languageName: node linkType: hard "@webassemblyjs/floating-point-hex-parser@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a languageName: node linkType: hard "@webassemblyjs/floating-point-hex-parser@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" - checksum: 17acfdfe6650691ae8d0279e6ff4fb8b5efce64e12f3fa18c6a7d279968cc72eb21c0db7ebb5be9d627d05fa7014cef087843d999de96c917079f57d7dac8f77 + checksum: 10c0/17acfdfe6650691ae8d0279e6ff4fb8b5efce64e12f3fa18c6a7d279968cc72eb21c0db7ebb5be9d627d05fa7014cef087843d999de96c917079f57d7dac8f77 languageName: node linkType: hard "@webassemblyjs/helper-api-error@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a languageName: node linkType: hard "@webassemblyjs/helper-api-error@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" - checksum: 892851b25cf4b4b307490328f45858414326dac667ca15244b5e959fa6e22478b29dabeb581d49ef8a2874e291d0417a3a959be70428c39cd40870e73b394dbc + checksum: 10c0/892851b25cf4b4b307490328f45858414326dac667ca15244b5e959fa6e22478b29dabeb581d49ef8a2874e291d0417a3a959be70428c39cd40870e73b394dbc languageName: node linkType: hard "@webassemblyjs/helper-buffer@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" - checksum: 55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a + checksum: 10c0/55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a languageName: node linkType: hard "@webassemblyjs/helper-buffer@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" - checksum: b09a3e27d9127ccaab095bd171336e7675bb5b832e05b701ff174a853b763154a49f5382c4c3f2f1cc746b1cff3f2025452145cf807ddf788133bcccf5920ca8 + checksum: 10c0/b09a3e27d9127ccaab095bd171336e7675bb5b832e05b701ff174a853b763154a49f5382c4c3f2f1cc746b1cff3f2025452145cf807ddf788133bcccf5920ca8 languageName: node linkType: hard @@ -11771,14 +11771,14 @@ __metadata: resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" dependencies: "@webassemblyjs/wast-printer": "npm:1.9.0" - checksum: 010969a6c8b016680a9b1383ff4b8147c363608dd1e29602154e5460954af4fd48daed518a76b232ca43935d4b6bebf54fba38da56f809e2bd12f063d84013ec + checksum: 10c0/010969a6c8b016680a9b1383ff4b8147c363608dd1e29602154e5460954af4fd48daed518a76b232ca43935d4b6bebf54fba38da56f809e2bd12f063d84013ec languageName: node linkType: hard "@webassemblyjs/helper-fsm@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" - checksum: ef0c99b58716d757a1a41f99fb46578d3f07d97b60cd51deaeffdf0aad09ec47f5093ee8d098d12324d57f8812609704c377fccfe9a32d02c0a658a4a33dce94 + checksum: 10c0/ef0c99b58716d757a1a41f99fb46578d3f07d97b60cd51deaeffdf0aad09ec47f5093ee8d098d12324d57f8812609704c377fccfe9a32d02c0a658a4a33dce94 languageName: node linkType: hard @@ -11787,7 +11787,7 @@ __metadata: resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" dependencies: "@webassemblyjs/ast": "npm:1.9.0" - checksum: 130a9ac1141770b9f70ad568ec2dc769e92c756f91b06ece9cda2c2a5e80e21ec9c8c2a945a5839bf379e52fa921ae134245a7492e1b9ae0e8c557bb9b4953c3 + checksum: 10c0/130a9ac1141770b9f70ad568ec2dc769e92c756f91b06ece9cda2c2a5e80e21ec9c8c2a945a5839bf379e52fa921ae134245a7492e1b9ae0e8c557bb9b4953c3 languageName: node linkType: hard @@ -11798,21 +11798,21 @@ __metadata: "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" "@webassemblyjs/helper-api-error": "npm:1.11.6" "@xtuc/long": "npm:4.2.2" - checksum: c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 languageName: node linkType: hard "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 languageName: node linkType: hard "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" - checksum: 1741993e1c723f56b619a4981ec975f903886aa3f1f50c7bdb2eaa45ca4ad8d023d6ae7413ef643f060567b1f12a9dcfad6c43688879c46ee4f0b53aa71cd5c9 + checksum: 10c0/1741993e1c723f56b619a4981ec975f903886aa3f1f50c7bdb2eaa45ca4ad8d023d6ae7413ef643f060567b1f12a9dcfad6c43688879c46ee4f0b53aa71cd5c9 languageName: node linkType: hard @@ -11824,7 +11824,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.11.6" "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" "@webassemblyjs/wasm-gen": "npm:1.11.6" - checksum: b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce + checksum: 10c0/b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce languageName: node linkType: hard @@ -11836,7 +11836,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.9.0" "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" "@webassemblyjs/wasm-gen": "npm:1.9.0" - checksum: 2a5baa7749c50a4a428f372ab88b7e52956b48798d44e7291b4aa8558b247337dba791112ce8a4f5b2281e1b9014e6d44d0141476a5fcde6016fac2e009671e8 + checksum: 10c0/2a5baa7749c50a4a428f372ab88b7e52956b48798d44e7291b4aa8558b247337dba791112ce8a4f5b2281e1b9014e6d44d0141476a5fcde6016fac2e009671e8 languageName: node linkType: hard @@ -11845,7 +11845,7 @@ __metadata: resolution: "@webassemblyjs/ieee754@npm:1.11.6" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f languageName: node linkType: hard @@ -11854,7 +11854,7 @@ __metadata: resolution: "@webassemblyjs/ieee754@npm:1.9.0" dependencies: "@xtuc/ieee754": "npm:^1.2.0" - checksum: 0eff34ec7048400b30282ab9af6ad19d2852dab2f5ffaec8bdc697b8380bc2c9dbe6cadf65f49e68242c82ee3caa8aa6e46c89dbfdab37615189b4da2eab3819 + checksum: 10c0/0eff34ec7048400b30282ab9af6ad19d2852dab2f5ffaec8bdc697b8380bc2c9dbe6cadf65f49e68242c82ee3caa8aa6e46c89dbfdab37615189b4da2eab3819 languageName: node linkType: hard @@ -11863,7 +11863,7 @@ __metadata: resolution: "@webassemblyjs/leb128@npm:1.11.6" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e languageName: node linkType: hard @@ -11872,21 +11872,21 @@ __metadata: resolution: "@webassemblyjs/leb128@npm:1.9.0" dependencies: "@xtuc/long": "npm:4.2.2" - checksum: 441be8634733b33b710f44d4394552d6290bb1a0a8311b384b1865b58c3549d0ddeaf1c3985bbee024a8df12c597be3580fc1cde2ae003dcbf26762b493a7a2f + checksum: 10c0/441be8634733b33b710f44d4394552d6290bb1a0a8311b384b1865b58c3549d0ddeaf1c3985bbee024a8df12c597be3580fc1cde2ae003dcbf26762b493a7a2f languageName: node linkType: hard "@webassemblyjs/utf8@npm:1.11.6": version: 1.11.6 resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee languageName: node linkType: hard "@webassemblyjs/utf8@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/utf8@npm:1.9.0" - checksum: 9566689a1bcf555d6b79d0da79e24ff2be23c0395e5a19ed3c2ceca7831e50b867e0b1c66b3ff1b1d7f297b2d2414314967a884a77634ad0acff8a78489e2b19 + checksum: 10c0/9566689a1bcf555d6b79d0da79e24ff2be23c0395e5a19ed3c2ceca7831e50b867e0b1c66b3ff1b1d7f297b2d2414314967a884a77634ad0acff8a78489e2b19 languageName: node linkType: hard @@ -11902,7 +11902,7 @@ __metadata: "@webassemblyjs/wasm-opt": "npm:1.9.0" "@webassemblyjs/wasm-parser": "npm:1.9.0" "@webassemblyjs/wast-printer": "npm:1.9.0" - checksum: 07f4cb4a73989622c524f9264b6afe664d33354f081499f04db675aed2b79498bd43600c3d7bebcb9f93ccce6a094b3c28f3f7b11ea62e9e82074c2ae68dc058 + checksum: 10c0/07f4cb4a73989622c524f9264b6afe664d33354f081499f04db675aed2b79498bd43600c3d7bebcb9f93ccce6a094b3c28f3f7b11ea62e9e82074c2ae68dc058 languageName: node linkType: hard @@ -11918,7 +11918,7 @@ __metadata: "@webassemblyjs/wasm-opt": "npm:1.11.6" "@webassemblyjs/wasm-parser": "npm:1.11.6" "@webassemblyjs/wast-printer": "npm:1.11.6" - checksum: 9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 + checksum: 10c0/9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 languageName: node linkType: hard @@ -11931,7 +11931,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.11.6" "@webassemblyjs/leb128": "npm:1.11.6" "@webassemblyjs/utf8": "npm:1.11.6" - checksum: ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad + checksum: 10c0/ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad languageName: node linkType: hard @@ -11944,7 +11944,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.9.0" "@webassemblyjs/leb128": "npm:1.9.0" "@webassemblyjs/utf8": "npm:1.9.0" - checksum: 876826bef91f3af9e48118fb269c348871d5b6f019e071065556da56a3a5818630b00133e07c9dd2cc767e7f2c70934f3ed0060330ce3e37910e9c9df25f1600 + checksum: 10c0/876826bef91f3af9e48118fb269c348871d5b6f019e071065556da56a3a5818630b00133e07c9dd2cc767e7f2c70934f3ed0060330ce3e37910e9c9df25f1600 languageName: node linkType: hard @@ -11956,7 +11956,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.11.6" "@webassemblyjs/wasm-gen": "npm:1.11.6" "@webassemblyjs/wasm-parser": "npm:1.11.6" - checksum: 82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 + checksum: 10c0/82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 languageName: node linkType: hard @@ -11968,7 +11968,7 @@ __metadata: "@webassemblyjs/helper-buffer": "npm:1.9.0" "@webassemblyjs/wasm-gen": "npm:1.9.0" "@webassemblyjs/wasm-parser": "npm:1.9.0" - checksum: 3d5558e078b660cd9777950f2df60f005f3cbdbcfa6c8c19dc0cf012f44f5bfa97c991d7ac26b3e78596bad0538e92dd00b5db4b51ebc373da8e329a03639190 + checksum: 10c0/3d5558e078b660cd9777950f2df60f005f3cbdbcfa6c8c19dc0cf012f44f5bfa97c991d7ac26b3e78596bad0538e92dd00b5db4b51ebc373da8e329a03639190 languageName: node linkType: hard @@ -11982,7 +11982,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.11.6" "@webassemblyjs/leb128": "npm:1.11.6" "@webassemblyjs/utf8": "npm:1.11.6" - checksum: 7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f + checksum: 10c0/7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f languageName: node linkType: hard @@ -11996,7 +11996,7 @@ __metadata: "@webassemblyjs/ieee754": "npm:1.9.0" "@webassemblyjs/leb128": "npm:1.9.0" "@webassemblyjs/utf8": "npm:1.9.0" - checksum: 1e8615b9f9c3c431c9635c9a9884bca89eff1ab2383ad849341c23e09899454482a8f8813d33bf86ee1b0acc97c7c83926961a9b34d4804fa5d559610ab0a4a2 + checksum: 10c0/1e8615b9f9c3c431c9635c9a9884bca89eff1ab2383ad849341c23e09899454482a8f8813d33bf86ee1b0acc97c7c83926961a9b34d4804fa5d559610ab0a4a2 languageName: node linkType: hard @@ -12010,7 +12010,7 @@ __metadata: "@webassemblyjs/helper-code-frame": "npm:1.9.0" "@webassemblyjs/helper-fsm": "npm:1.9.0" "@xtuc/long": "npm:4.2.2" - checksum: c79952466fdf7816be527b1db102952b777b12318eabb5c40df074cd8361e3a7b0179a985534fa8b5a7b93668b07ba46875ffeb5da03ca5177c80ba960ebdffc + checksum: 10c0/c79952466fdf7816be527b1db102952b777b12318eabb5c40df074cd8361e3a7b0179a985534fa8b5a7b93668b07ba46875ffeb5da03ca5177c80ba960ebdffc languageName: node linkType: hard @@ -12020,7 +12020,7 @@ __metadata: dependencies: "@webassemblyjs/ast": "npm:1.11.6" "@xtuc/long": "npm:4.2.2" - checksum: 916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c + checksum: 10c0/916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c languageName: node linkType: hard @@ -12031,7 +12031,7 @@ __metadata: "@webassemblyjs/ast": "npm:1.9.0" "@webassemblyjs/wast-parser": "npm:1.9.0" "@xtuc/long": "npm:4.2.2" - checksum: f3d106aa884cbb7687307db7adeb3b98abff9de81b9ba8c1065267340b5e9de64ffc533044ab916b1f4ce8a67fb03efa54b29b61c8e908abe4c07edf82f614cd + checksum: 10c0/f3d106aa884cbb7687307db7adeb3b98abff9de81b9ba8c1065267340b5e9de64ffc533044ab916b1f4ce8a67fb03efa54b29b61c8e908abe4c07edf82f614cd languageName: node linkType: hard @@ -12041,7 +12041,7 @@ __metadata: peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x - checksum: a8da1f15702cb289807da99235ed95326ed7dabeb1a36ca59bd3a5dbe6adcc946a9a2767936050fc4d5ed14efab0e5b5a641dfe8e3d862c36caa5791ac12759d + checksum: 10c0/a8da1f15702cb289807da99235ed95326ed7dabeb1a36ca59bd3a5dbe6adcc946a9a2767936050fc4d5ed14efab0e5b5a641dfe8e3d862c36caa5791ac12759d languageName: node linkType: hard @@ -12051,7 +12051,7 @@ __metadata: peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x - checksum: ca88a35604dc9aedac7c26e8f6793c5039dc1eea2b12a85fbfd669a5f21ecf9cf169d7fd157ea366a62666e3fa05b776306a96742ac61a9868f44fdce6b40f7d + checksum: 10c0/ca88a35604dc9aedac7c26e8f6793c5039dc1eea2b12a85fbfd669a5f21ecf9cf169d7fd157ea366a62666e3fa05b776306a96742ac61a9868f44fdce6b40f7d languageName: node linkType: hard @@ -12064,21 +12064,21 @@ __metadata: peerDependenciesMeta: webpack-dev-server: optional: true - checksum: 36079d34971ff99a58b66b13f4184dcdd8617853c48cccdbc3f9ab7ea9e5d4fcf504e873c298ea7aa15e0b51ad2c4aee4d7a70bd7d9364e60f57b0eb93ca15fc + checksum: 10c0/36079d34971ff99a58b66b13f4184dcdd8617853c48cccdbc3f9ab7ea9e5d4fcf504e873c298ea7aa15e0b51ad2c4aee4d7a70bd7d9364e60f57b0eb93ca15fc languageName: node linkType: hard "@whatwg-node/events@npm:^0.0.3": version: 0.0.3 resolution: "@whatwg-node/events@npm:0.0.3" - checksum: 87ac0854f84650ce016ccd82a6c087eac1c6204eeb80cf358737ce7757a345e3a4ba19e9b1815b326eb1451d49878785aa9dc426631f4ea47dedbcfc51b56977 + checksum: 10c0/87ac0854f84650ce016ccd82a6c087eac1c6204eeb80cf358737ce7757a345e3a4ba19e9b1815b326eb1451d49878785aa9dc426631f4ea47dedbcfc51b56977 languageName: node linkType: hard "@whatwg-node/events@npm:^0.1.0": version: 0.1.1 resolution: "@whatwg-node/events@npm:0.1.1" - checksum: 7e4678c8c092484dc248f4a229a398de30d21190b94ebebc333c2187180207a18e257c4588d0910e872251b3089007f4a2a3ff8b9a4d057fae94db8da28be467 + checksum: 10c0/7e4678c8c092484dc248f4a229a398de30d21190b94ebebc333c2187180207a18e257c4588d0910e872251b3089007f4a2a3ff8b9a4d057fae94db8da28be467 languageName: node linkType: hard @@ -12088,7 +12088,7 @@ __metadata: dependencies: "@whatwg-node/node-fetch": "npm:^0.5.0" urlpattern-polyfill: "npm:^9.0.0" - checksum: cb91d18c744e0d01c2f8d7982f961258a43b54baa8680ed6291a257f85e5ace1b68fc74105eebebd96b4450648fbaec98d91a434c1142da44acf928c41842d58 + checksum: 10c0/cb91d18c744e0d01c2f8d7982f961258a43b54baa8680ed6291a257f85e5ace1b68fc74105eebebd96b4450648fbaec98d91a434c1142da44acf928c41842d58 languageName: node linkType: hard @@ -12101,7 +12101,7 @@ __metadata: busboy: "npm:^1.6.0" urlpattern-polyfill: "npm:^8.0.0" web-streams-polyfill: "npm:^3.2.1" - checksum: 37d882bf85764aec7541cda1008099ab4d695971608946ec9b9e40326eedfd4c49507fbcc8765ebe3e9241f4dc9d1e970e0b3501a814d721c40c721d313c5d50 + checksum: 10c0/37d882bf85764aec7541cda1008099ab4d695971608946ec9b9e40326eedfd4c49507fbcc8765ebe3e9241f4dc9d1e970e0b3501a814d721c40c721d313c5d50 languageName: node linkType: hard @@ -12114,7 +12114,7 @@ __metadata: fast-querystring: "npm:^1.1.1" fast-url-parser: "npm:^1.1.3" tslib: "npm:^2.3.1" - checksum: 49e4fd5e682d1fa1229b2c13c06074c6a633eddbe61be162fd213ddb85d6d27d51554b3cced5f6b7f3be1722a64cca7f5ffe0722d08b3285fe2f289d8d5a045d + checksum: 10c0/49e4fd5e682d1fa1229b2c13c06074c6a633eddbe61be162fd213ddb85d6d27d51554b3cced5f6b7f3be1722a64cca7f5ffe0722d08b3285fe2f289d8d5a045d languageName: node linkType: hard @@ -12127,7 +12127,7 @@ __metadata: fast-querystring: "npm:^1.1.1" fast-url-parser: "npm:^1.1.3" tslib: "npm:^2.3.1" - checksum: 1c1638dc205fb9047a41462f787dd90990973b63c4e47baaf3ad4d1f3e1b2537ef9a02d5a874297997d91d3f48392ab4b3eca68b7b48aab32dedc43c7709f0a9 + checksum: 10c0/1c1638dc205fb9047a41462f787dd90990973b63c4e47baaf3ad4d1f3e1b2537ef9a02d5a874297997d91d3f48392ab4b3eca68b7b48aab32dedc43c7709f0a9 languageName: node linkType: hard @@ -12137,7 +12137,7 @@ __metadata: dependencies: "@whatwg-node/fetch": "npm:^0.9.10" tslib: "npm:^2.3.1" - checksum: 9503a17fde50a3c2615584c8a3b54bbad3596756979b3abddb2617b1ce4eef28ef534e5f026b6661db32bac80db523bfd5eba470986be76daf99469319c716c2 + checksum: 10c0/9503a17fde50a3c2615584c8a3b54bbad3596756979b3abddb2617b1ce4eef28ef534e5f026b6661db32bac80db523bfd5eba470986be76daf99469319c716c2 languageName: node linkType: hard @@ -12146,7 +12146,7 @@ __metadata: resolution: "@wry/caches@npm:1.0.1" dependencies: tslib: "npm:^2.3.0" - checksum: a7bca3377f1131d3f1080f2e39d0692c9d1ca86bfd55734786f167f46aad28a4c8e772107324e8319843fb8068fdf98abcdea376d8a589316b1f0cdadf81f8b1 + checksum: 10c0/a7bca3377f1131d3f1080f2e39d0692c9d1ca86bfd55734786f167f46aad28a4c8e772107324e8319843fb8068fdf98abcdea376d8a589316b1f0cdadf81f8b1 languageName: node linkType: hard @@ -12155,7 +12155,7 @@ __metadata: resolution: "@wry/context@npm:0.7.3" dependencies: tslib: "npm:^2.3.0" - checksum: c18d8e1579770db5aabe86b7ee9d5c36a8e3b974b56efbe72a3dc53771a6385467a23a8c7e1280f46c5d3e76569a429345df0d59ba598876eb56c6424dd65f06 + checksum: 10c0/c18d8e1579770db5aabe86b7ee9d5c36a8e3b974b56efbe72a3dc53771a6385467a23a8c7e1280f46c5d3e76569a429345df0d59ba598876eb56c6424dd65f06 languageName: node linkType: hard @@ -12164,7 +12164,7 @@ __metadata: resolution: "@wry/equality@npm:0.5.6" dependencies: tslib: "npm:^2.3.0" - checksum: 72473421de095b9dd10733abe58e26544888383622d362dd7b78fed863304cab0b2fdbc9bf96d2abc8a5e99358dddec4f92be0f6c74a312da9cfffc10f58d0c4 + checksum: 10c0/72473421de095b9dd10733abe58e26544888383622d362dd7b78fed863304cab0b2fdbc9bf96d2abc8a5e99358dddec4f92be0f6c74a312da9cfffc10f58d0c4 languageName: node linkType: hard @@ -12173,7 +12173,7 @@ __metadata: resolution: "@wry/trie@npm:0.4.3" dependencies: tslib: "npm:^2.3.0" - checksum: 1a14edba595b1967d0cf38208c2660b2952a8e8a649bb669b67907df48f602c7f2acbe16c1e1b115afa7d7effb9f1a4dbde38eef16ee92e7521a511262a53281 + checksum: 10c0/1a14edba595b1967d0cf38208c2660b2952a8e8a649bb669b67907df48f602c7f2acbe16c1e1b115afa7d7effb9f1a4dbde38eef16ee92e7521a511262a53281 languageName: node linkType: hard @@ -12182,28 +12182,28 @@ __metadata: resolution: "@wry/trie@npm:0.5.0" dependencies: tslib: "npm:^2.3.0" - checksum: 8c8cfcac96ba4bc69dabf02740e19e613f501b398e80bacc32cd95e87228f75ecb41cd1a76a65abae9756c0f61ab3536e0da52de28857456f9381ffdf5995d3e + checksum: 10c0/8c8cfcac96ba4bc69dabf02740e19e613f501b398e80bacc32cd95e87228f75ecb41cd1a76a65abae9756c0f61ab3536e0da52de28857456f9381ffdf5995d3e languageName: node linkType: hard "@xmldom/xmldom@npm:^0.8.3": version: 0.8.8 resolution: "@xmldom/xmldom@npm:0.8.8" - checksum: b2a88a667f2290721b6e40dcdfbc65d8a7fa0d9521d2c0a8ba31807ad7a3165fb4fe8d84907b99b632e61f486f18ab9169e949c07d7db1b5dc7081300ee9b0cc + checksum: 10c0/b2a88a667f2290721b6e40dcdfbc65d8a7fa0d9521d2c0a8ba31807ad7a3165fb4fe8d84907b99b632e61f486f18ab9169e949c07d7db1b5dc7081300ee9b0cc languageName: node linkType: hard "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" - checksum: a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f languageName: node linkType: hard "@xtuc/long@npm:4.2.2": version: 4.2.2 resolution: "@xtuc/long@npm:4.2.2" - checksum: 8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 languageName: node linkType: hard @@ -12214,7 +12214,7 @@ __metadata: tslib: "npm:^2.4.0" peerDependencies: esbuild: ">=0.10.0" - checksum: 5095bc316862971add31ca1fadb0095b6ad15f25120f6ab3a06086bb6a7be93c2f3c45bff80d5976689fc89b0e9bf82bd3d410e205c852739874d32d050c4e57 + checksum: 10c0/5095bc316862971add31ca1fadb0095b6ad15f25120f6ab3a06086bb6a7be93c2f3c45bff80d5976689fc89b0e9bf82bd3d410e205c852739874d32d050c4e57 languageName: node linkType: hard @@ -12224,7 +12224,7 @@ __metadata: dependencies: "@yarnpkg/libzip": "npm:^2.3.0" tslib: "npm:^1.13.0" - checksum: c4fbbed99e801f17c381204e9699d9ea4fb51b14e99968985f477bdbc7b02b61e026860173f3f46bd60d9f46ae6a06f420a3edb3c02c3a45ae83779095928094 + checksum: 10c0/c4fbbed99e801f17c381204e9699d9ea4fb51b14e99968985f477bdbc7b02b61e026860173f3f46bd60d9f46ae6a06f420a3edb3c02c3a45ae83779095928094 languageName: node linkType: hard @@ -12234,14 +12234,14 @@ __metadata: dependencies: "@types/emscripten": "npm:^1.39.6" tslib: "npm:^1.13.0" - checksum: 0c2361ccb002e28463ed98541f3bdaab54f52aad6a2080666c2a9ea605ebd9cdfb7b0340b1db6f105820d05bcb803cdfb3ce755a8f6034657298c291bf884f81 + checksum: 10c0/0c2361ccb002e28463ed98541f3bdaab54f52aad6a2080666c2a9ea605ebd9cdfb7b0340b1db6f105820d05bcb803cdfb3ce755a8f6034657298c291bf884f81 languageName: node linkType: hard "@yarnpkg/lockfile@npm:^1.1.0": version: 1.1.0 resolution: "@yarnpkg/lockfile@npm:1.1.0" - checksum: 0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda + checksum: 10c0/0bfa50a3d756623d1f3409bc23f225a1d069424dbc77c6fd2f14fb377390cd57ec703dc70286e081c564be9051ead9ba85d81d66a3e68eeb6eb506d4e0c0fbda languageName: node linkType: hard @@ -12251,7 +12251,7 @@ __metadata: dependencies: js-yaml: "npm:^3.10.0" tslib: "npm:^2.4.0" - checksum: c7f421c6885142f351459031c093fb2e79abcce6f4a89765a10e600bb7ab122949c54bcea2b23de9572a2b34ba29f822b17831c1c43ba50373ceb8cb5b336667 + checksum: 10c0/c7f421c6885142f351459031c093fb2e79abcce6f4a89765a10e600bb7ab122949c54bcea2b23de9572a2b34ba29f822b17831c1c43ba50373ceb8cb5b336667 languageName: node linkType: hard @@ -12262,14 +12262,14 @@ __metadata: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 5ce27ae75fb1db9657d4065bf6b380b4c0f756feb1bdf42bfde40551a74bcc0ec918f748cbdbd5d95b7107d00bc2f731ee731b5cfe93acb6f7da5639b16aa1f8 + checksum: 10c0/5ce27ae75fb1db9657d4065bf6b380b4c0f756feb1bdf42bfde40551a74bcc0ec918f748cbdbd5d95b7107d00bc2f731ee731b5cfe93acb6f7da5639b16aa1f8 languageName: node linkType: hard "@zxing/text-encoding@npm:0.9.0": version: 0.9.0 resolution: "@zxing/text-encoding@npm:0.9.0" - checksum: d15bff181d46c2ab709e7242801a8d40408aa8c19b44462e5f60e766bf59105b44957914ab6baab60d10d466a5e965f21fe890c67dfdb7d5c7f940df457b4d0d + checksum: 10c0/d15bff181d46c2ab709e7242801a8d40408aa8c19b44462e5f60e766bf59105b44957914ab6baab60d10d466a5e965f21fe890c67dfdb7d5c7f940df457b4d0d languageName: node linkType: hard @@ -12281,28 +12281,28 @@ __metadata: through: "npm:>=2.2.7 <3" bin: JSONStream: ./bin.js - checksum: 0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2 + checksum: 10c0/0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2 languageName: node linkType: hard "abab@npm:^2.0.6": version: 2.0.6 resolution: "abab@npm:2.0.6" - checksum: 0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 languageName: node linkType: hard "abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" - checksum: 3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 languageName: node linkType: hard "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" - checksum: f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 languageName: node linkType: hard @@ -12311,14 +12311,14 @@ __metadata: resolution: "abort-controller@npm:3.0.0" dependencies: event-target-shim: "npm:^5.0.0" - checksum: 90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 languageName: node linkType: hard "abstract-logging@npm:^2.0.1": version: 2.0.1 resolution: "abstract-logging@npm:2.0.1" - checksum: 304879d9babcf6772260e5ddde632e6428e1f42f7a7a116d4689e97ad813a20e0ec2dd1e0a122f3617557f40091b9ca85735de4b48c17a2041268cb47b3f8ef1 + checksum: 10c0/304879d9babcf6772260e5ddde632e6428e1f42f7a7a116d4689e97ad813a20e0ec2dd1e0a122f3617557f40091b9ca85735de4b48c17a2041268cb47b3f8ef1 languageName: node linkType: hard @@ -12328,7 +12328,7 @@ __metadata: dependencies: mime-types: "npm:~2.1.34" negotiator: "npm:0.6.3" - checksum: 3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 languageName: node linkType: hard @@ -12338,7 +12338,7 @@ __metadata: dependencies: acorn: "npm:^8.1.0" acorn-walk: "npm:^8.0.2" - checksum: 7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b + checksum: 10c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b languageName: node linkType: hard @@ -12347,14 +12347,14 @@ __metadata: resolution: "acorn-import-assertions@npm:1.9.0" peerDependencies: acorn: ^8 - checksum: 3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe + checksum: 10c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe languageName: node linkType: hard "acorn-jsx-walk@npm:2.0.0": version: 2.0.0 resolution: "acorn-jsx-walk@npm:2.0.0" - checksum: ee268a91ecb5f8d023607bcc04e2859406197979e95ddcdd6dd747e4af1680672c57db1a7aded351c52a341b5a6f438a7edca12f6680504d602bf50e0a151fad + checksum: 10c0/ee268a91ecb5f8d023607bcc04e2859406197979e95ddcdd6dd747e4af1680672c57db1a7aded351c52a341b5a6f438a7edca12f6680504d602bf50e0a151fad languageName: node linkType: hard @@ -12363,7 +12363,7 @@ __metadata: resolution: "acorn-jsx@npm:5.3.2" peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 languageName: node linkType: hard @@ -12372,28 +12372,28 @@ __metadata: resolution: "acorn-loose@npm:8.4.0" dependencies: acorn: "npm:^8.11.0" - checksum: e62407bdc338059e4d552b9ed5ccd44f13c5a86f5304a117bb8513672f9eb976bbbde1839f540296062660cef6b162f59bdc16d9c3430b264081567ba9684699 + checksum: 10c0/e62407bdc338059e4d552b9ed5ccd44f13c5a86f5304a117bb8513672f9eb976bbbde1839f540296062660cef6b162f59bdc16d9c3430b264081567ba9684699 languageName: node linkType: hard "acorn-walk@npm:8.3.0": version: 8.3.0 resolution: "acorn-walk@npm:8.3.0" - checksum: 24346e595f507b6e704a60d35f3c5e1aa9891d4fb6a3fc3d856503ab718cc26cabb5e3e1ff0ff8da6ec03d60a8226ebdb602805a94f970e7f797ea3b8b09437f + checksum: 10c0/24346e595f507b6e704a60d35f3c5e1aa9891d4fb6a3fc3d856503ab718cc26cabb5e3e1ff0ff8da6ec03d60a8226ebdb602805a94f970e7f797ea3b8b09437f languageName: node linkType: hard "acorn-walk@npm:^7.2.0": version: 7.2.0 resolution: "acorn-walk@npm:7.2.0" - checksum: ff99f3406ed8826f7d6ef6ac76b7608f099d45a1ff53229fa267125da1924188dbacf02e7903dfcfd2ae4af46f7be8847dc7d564c73c4e230dfb69c8ea8e6b4c + checksum: 10c0/ff99f3406ed8826f7d6ef6ac76b7608f099d45a1ff53229fa267125da1924188dbacf02e7903dfcfd2ae4af46f7be8847dc7d564c73c4e230dfb69c8ea8e6b4c languageName: node linkType: hard "acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1, acorn-walk@npm:^8.3.2": version: 8.3.2 resolution: "acorn-walk@npm:8.3.2" - checksum: 7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 + checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 languageName: node linkType: hard @@ -12402,7 +12402,7 @@ __metadata: resolution: "acorn@npm:8.11.2" bin: acorn: bin/acorn - checksum: a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 + checksum: 10c0/a3ed76c761b75ec54b1ec3068fb7f113a182e95aea7f322f65098c2958d232e3d211cb6dac35ff9c647024b63714bc528a26d54a925d1fef2c25585b4c8e4017 languageName: node linkType: hard @@ -12411,7 +12411,7 @@ __metadata: resolution: "acorn@npm:6.4.2" bin: acorn: bin/acorn - checksum: 52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b + checksum: 10c0/52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b languageName: node linkType: hard @@ -12420,7 +12420,7 @@ __metadata: resolution: "acorn@npm:7.4.1" bin: acorn: bin/acorn - checksum: bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 + checksum: 10c0/bd0b2c2b0f334bbee48828ff897c12bd2eb5898d03bf556dcc8942022cec795ac5bb5b6b585e2de687db6231faf07e096b59a361231dd8c9344d5df5f7f0e526 languageName: node linkType: hard @@ -12429,21 +12429,21 @@ __metadata: resolution: "acorn@npm:8.11.3" bin: acorn: bin/acorn - checksum: 3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 + checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 languageName: node linkType: hard "add-stream@npm:^1.0.0": version: 1.0.0 resolution: "add-stream@npm:1.0.0" - checksum: 985014a14e76ca4cb24e0fc58bb1556794cf38c5c8937de335a10584f50a371dc48e1c34a59391c7eb9c1fc908b4b86764df5d2756f701df6ba95d1ca2f63ddc + checksum: 10c0/985014a14e76ca4cb24e0fc58bb1556794cf38c5c8937de335a10584f50a371dc48e1c34a59391c7eb9c1fc908b4b86764df5d2756f701df6ba95d1ca2f63ddc languageName: node linkType: hard "address@npm:^1.0.1": version: 1.2.2 resolution: "address@npm:1.2.2" - checksum: 1c8056b77fb124456997b78ed682ecc19d2fd7ea8bd5850a2aa8c3e3134c913847c57bcae418622efd32ba858fa1e242a40a251ac31da0515664fc0ac03a047d + checksum: 10c0/1c8056b77fb124456997b78ed682ecc19d2fd7ea8bd5850a2aa8c3e3134c913847c57bcae418622efd32ba858fa1e242a40a251ac31da0515664fc0ac03a047d languageName: node linkType: hard @@ -12453,14 +12453,14 @@ __metadata: dependencies: loader-utils: "npm:^2.0.0" regex-parser: "npm:^2.2.11" - checksum: 6a6e5bb8b670e4e1238c708f6163e92aa2ad0308fe5913de73c89e4cbf41738ee0bcc5552b94d0b7bf8be435ee49b78c6de8a6db7badd80762051e843c8aa14f + checksum: 10c0/6a6e5bb8b670e4e1238c708f6163e92aa2ad0308fe5913de73c89e4cbf41738ee0bcc5552b94d0b7bf8be435ee49b78c6de8a6db7badd80762051e843c8aa14f languageName: node linkType: hard "agent-base@npm:5": version: 5.1.1 resolution: "agent-base@npm:5.1.1" - checksum: 3baa3f01072c16e3955ce7802166e576cde9831af82b262aae1c780af49c0c84e82e64ba9ef9e7d1704fe29e9f0096a78a4f998ec137360fee3cb95186f97161 + checksum: 10c0/3baa3f01072c16e3955ce7802166e576cde9831af82b262aae1c780af49c0c84e82e64ba9ef9e7d1704fe29e9f0096a78a4f998ec137360fee3cb95186f97161 languageName: node linkType: hard @@ -12469,7 +12469,7 @@ __metadata: resolution: "agent-base@npm:6.0.2" dependencies: debug: "npm:4" - checksum: dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 languageName: node linkType: hard @@ -12478,7 +12478,7 @@ __metadata: resolution: "agent-base@npm:7.1.0" dependencies: debug: "npm:^4.3.4" - checksum: fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce languageName: node linkType: hard @@ -12489,7 +12489,7 @@ __metadata: debug: "npm:^4.1.0" depd: "npm:^2.0.0" humanize-ms: "npm:^1.2.1" - checksum: 61cbdab12d45e82e9ae515b0aa8d09617b66f72409e541a646dd7be4b7260d335d7f56a38079ad305bf0ffb8405592a459faf1294111289107f48352a20c2799 + checksum: 10c0/61cbdab12d45e82e9ae515b0aa8d09617b66f72409e541a646dd7be4b7260d335d7f56a38079ad305bf0ffb8405592a459faf1294111289107f48352a20c2799 languageName: node linkType: hard @@ -12499,7 +12499,7 @@ __metadata: dependencies: clean-stack: "npm:^2.0.0" indent-string: "npm:^4.0.0" - checksum: a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 languageName: node linkType: hard @@ -12508,7 +12508,7 @@ __metadata: resolution: "ajv-errors@npm:1.0.1" peerDependencies: ajv: ">=5.0.0" - checksum: de2d6e8100c8707ea063ee4785d53adf599b457c0d4f72c3592244d67ad16448a6d35f7ce45f12bdd2819939447c876e8ef2f1c0800896d7f2aa25c3838acdf1 + checksum: 10c0/de2d6e8100c8707ea063ee4785d53adf599b457c0d4f72c3592244d67ad16448a6d35f7ce45f12bdd2819939447c876e8ef2f1c0800896d7f2aa25c3838acdf1 languageName: node linkType: hard @@ -12522,7 +12522,7 @@ __metadata: peerDependenciesMeta: ajv: optional: true - checksum: e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 languageName: node linkType: hard @@ -12531,7 +12531,7 @@ __metadata: resolution: "ajv-keywords@npm:3.5.2" peerDependencies: ajv: ^6.9.1 - checksum: 0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 languageName: node linkType: hard @@ -12542,7 +12542,7 @@ __metadata: fast-deep-equal: "npm:^3.1.3" peerDependencies: ajv: ^8.8.2 - checksum: 18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 languageName: node linkType: hard @@ -12554,7 +12554,7 @@ __metadata: json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" uri-js: "npm:^4.2.2" - checksum: ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e + checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e languageName: node linkType: hard @@ -12566,7 +12566,7 @@ __metadata: fast-json-stable-stringify: "npm:^2.0.0" json-schema-traverse: "npm:^0.4.1" uri-js: "npm:^4.2.2" - checksum: 41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 languageName: node linkType: hard @@ -12590,7 +12590,7 @@ __metadata: optional: true bin: all-contributors: dist/cli.js - checksum: da33f175aabbf95596e4b06f1582720cf05b2e2ceb363df85b104b7cb072b050d2f3f3adbb0af91142c61ddb10fcaa4d194f32f64551a467e665b2c2dcb3e561 + checksum: 10c0/da33f175aabbf95596e4b06f1582720cf05b2e2ceb363df85b104b7cb072b050d2f3f3adbb0af91142c61ddb10fcaa4d194f32f64551a467e665b2c2dcb3e561 languageName: node linkType: hard @@ -12599,14 +12599,14 @@ __metadata: resolution: "ansi-align@npm:3.0.1" dependencies: string-width: "npm:^4.1.0" - checksum: ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 languageName: node linkType: hard "ansi-colors@npm:^4.1.1": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" - checksum: ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 languageName: node linkType: hard @@ -12619,7 +12619,7 @@ __metadata: through2: "npm:^2.0.1" bin: ansi-diff-stream: ./bin.js - checksum: c3d472bb041f29190436098556445f081d1221ef4f24b7d287abe5f58d0360f13a8c47a950a710d303c90621a37a05e35f63a92a15c11f5826de6eefab851542 + checksum: 10c0/c3d472bb041f29190436098556445f081d1221ef4f24b7d287abe5f58d0360f13a8c47a950a710d303c90621a37a05e35f63a92a15c11f5826de6eefab851542 languageName: node linkType: hard @@ -12628,7 +12628,7 @@ __metadata: resolution: "ansi-escapes@npm:4.3.2" dependencies: type-fest: "npm:^0.21.3" - checksum: da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 languageName: node linkType: hard @@ -12637,7 +12637,7 @@ __metadata: resolution: "ansi-escapes@npm:5.0.0" dependencies: type-fest: "npm:^1.0.2" - checksum: f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 + checksum: 10c0/f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 languageName: node linkType: hard @@ -12646,7 +12646,7 @@ __metadata: resolution: "ansi-escapes@npm:6.2.0" dependencies: type-fest: "npm:^3.0.0" - checksum: 3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e + checksum: 10c0/3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e languageName: node linkType: hard @@ -12655,28 +12655,28 @@ __metadata: resolution: "ansi-html-community@npm:0.0.8" bin: ansi-html: bin/ansi-html - checksum: 45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 + checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 languageName: node linkType: hard "ansi-regex@npm:^2.0.0": version: 2.1.1 resolution: "ansi-regex@npm:2.1.1" - checksum: 78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b + checksum: 10c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b languageName: node linkType: hard "ansi-regex@npm:^5.0.1": version: 5.0.1 resolution: "ansi-regex@npm:5.0.1" - checksum: 9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 languageName: node linkType: hard "ansi-regex@npm:^6.0.1": version: 6.0.1 resolution: "ansi-regex@npm:6.0.1" - checksum: cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 languageName: node linkType: hard @@ -12685,7 +12685,7 @@ __metadata: resolution: "ansi-styles@npm:3.2.1" dependencies: color-convert: "npm:^1.9.0" - checksum: ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b languageName: node linkType: hard @@ -12694,21 +12694,21 @@ __metadata: resolution: "ansi-styles@npm:4.3.0" dependencies: color-convert: "npm:^2.0.1" - checksum: 895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 languageName: node linkType: hard "ansi-styles@npm:^5.0.0, ansi-styles@npm:^5.2.0": version: 5.2.0 resolution: "ansi-styles@npm:5.2.0" - checksum: 9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df languageName: node linkType: hard "ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": version: 6.2.1 resolution: "ansi-styles@npm:6.2.1" - checksum: 5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c languageName: node linkType: hard @@ -12718,7 +12718,7 @@ __metadata: dependencies: micromatch: "npm:^3.1.4" normalize-path: "npm:^2.1.1" - checksum: a0d745e52f0233048724b9c9d7b1d8a650f7a50151a0f1d2cce1857b09fd096052d334f8c570cc88596edef8249ae778f767db94025cd00f81e154a37bb7e34e + checksum: 10c0/a0d745e52f0233048724b9c9d7b1d8a650f7a50151a0f1d2cce1857b09fd096052d334f8c570cc88596edef8249ae778f767db94025cd00f81e154a37bb7e34e languageName: node linkType: hard @@ -12728,35 +12728,35 @@ __metadata: dependencies: normalize-path: "npm:^3.0.0" picomatch: "npm:^2.0.4" - checksum: 57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac languageName: node linkType: hard "app-root-dir@npm:^1.0.2": version: 1.0.2 resolution: "app-root-dir@npm:1.0.2" - checksum: 0225e4be7788968a82bb76df9b14b0d7f212a5c12e8c625cdc34f80548780bcbfc5f3287d0806dddd83bf9dbf9ce302e76b2887cd3a6f4be52b79df7f3aa9e7c + checksum: 10c0/0225e4be7788968a82bb76df9b14b0d7f212a5c12e8c625cdc34f80548780bcbfc5f3287d0806dddd83bf9dbf9ce302e76b2887cd3a6f4be52b79df7f3aa9e7c languageName: node linkType: hard "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" - checksum: d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 + checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 languageName: node linkType: hard "aproba@npm:^1.1.1": version: 1.2.0 resolution: "aproba@npm:1.2.0" - checksum: 2d34f008c9edfa991f42fe4b667d541d38a474a39ae0e24805350486d76744cd91ee45313283c1d39a055b14026dd0fc4d0cbfc13f210855d59d7e8b5a61dc51 + checksum: 10c0/2d34f008c9edfa991f42fe4b667d541d38a474a39ae0e24805350486d76744cd91ee45313283c1d39a055b14026dd0fc4d0cbfc13f210855d59d7e8b5a61dc51 languageName: node linkType: hard "arch@npm:^2.2.0": version: 2.2.0 resolution: "arch@npm:2.2.0" - checksum: 4ceaf8d8207817c216ebc4469742052cb0a097bc45d9b7fcd60b7507220da545a28562ab5bdd4dfe87921bb56371a0805da4e10d704e01f93a15f83240f1284c + checksum: 10c0/4ceaf8d8207817c216ebc4469742052cb0a097bc45d9b7fcd60b7507220da545a28562ab5bdd4dfe87921bb56371a0805da4e10d704e01f93a15f83240f1284c languageName: node linkType: hard @@ -12770,7 +12770,7 @@ __metadata: lodash: "npm:^4.17.15" normalize-path: "npm:^3.0.0" readable-stream: "npm:^3.6.0" - checksum: fc646fe1f8e3650383b6f79384e1c8f69caf7685c705221e23393a674ee1d67331e246250a72b03ec2fbdb2cfe30adc2d4287f6357684d6843d604738bf2c870 + checksum: 10c0/fc646fe1f8e3650383b6f79384e1c8f69caf7685c705221e23393a674ee1d67331e246250a72b03ec2fbdb2cfe30adc2d4287f6357684d6843d604738bf2c870 languageName: node linkType: hard @@ -12785,14 +12785,14 @@ __metadata: readdir-glob: "npm:^1.1.2" tar-stream: "npm:^3.0.0" zip-stream: "npm:^5.0.1" - checksum: 54c5a634b39691114e727d4b4f360439fa7cd40b414c9d909606fbfd7048037f7dccefa49337f9ed19b1f5c209e021ce5e1ff9c6b547907257bc71f1af6f8cf3 + checksum: 10c0/54c5a634b39691114e727d4b4f360439fa7cd40b414c9d909606fbfd7048037f7dccefa49337f9ed19b1f5c209e021ce5e1ff9c6b547907257bc71f1af6f8cf3 languageName: node linkType: hard "archy@npm:^1.0.0": version: 1.0.0 resolution: "archy@npm:1.0.0" - checksum: 200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 + checksum: 10c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 languageName: node linkType: hard @@ -12802,7 +12802,7 @@ __metadata: dependencies: delegates: "npm:^1.0.0" readable-stream: "npm:^3.6.0" - checksum: 8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 + checksum: 10c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 languageName: node linkType: hard @@ -12812,21 +12812,21 @@ __metadata: dependencies: delegates: "npm:^1.0.0" readable-stream: "npm:^4.1.0" - checksum: 760008e32948e9f738c5a288792d187e235fee0f170e042850bc7ff242f2a499f3f2874d6dd43ac06f5d9f5306137bc51bbdd4ae0bb11379c58b01678e0f684d + checksum: 10c0/760008e32948e9f738c5a288792d187e235fee0f170e042850bc7ff242f2a499f3f2874d6dd43ac06f5d9f5306137bc51bbdd4ae0bb11379c58b01678e0f684d languageName: node linkType: hard "arg@npm:5.0.2, arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" - checksum: ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e + checksum: 10c0/ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e languageName: node linkType: hard "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" - checksum: 070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a languageName: node linkType: hard @@ -12835,14 +12835,14 @@ __metadata: resolution: "argparse@npm:1.0.10" dependencies: sprintf-js: "npm:~1.0.2" - checksum: b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de languageName: node linkType: hard "argparse@npm:^2.0.1": version: 2.0.1 resolution: "argparse@npm:2.0.1" - checksum: c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e languageName: node linkType: hard @@ -12851,7 +12851,7 @@ __metadata: resolution: "aria-hidden@npm:1.2.3" dependencies: tslib: "npm:^2.0.0" - checksum: 46b07b7273167ad3fc2625f1ecbb43f8e6f73115c66785cbb5dcf1e2508133a43b6419d610c39676ceaeb563239efbd8974d5c0187695db8b3e8c3e11f549c2d + checksum: 10c0/46b07b7273167ad3fc2625f1ecbb43f8e6f73115c66785cbb5dcf1e2508133a43b6419d610c39676ceaeb563239efbd8974d5c0187695db8b3e8c3e11f549c2d languageName: node linkType: hard @@ -12860,7 +12860,7 @@ __metadata: resolution: "aria-query@npm:5.1.3" dependencies: deep-equal: "npm:^2.0.5" - checksum: edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf languageName: node linkType: hard @@ -12869,28 +12869,28 @@ __metadata: resolution: "aria-query@npm:5.3.0" dependencies: dequal: "npm:^2.0.3" - checksum: 2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 + checksum: 10c0/2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 languageName: node linkType: hard "arr-diff@npm:^4.0.0": version: 4.0.0 resolution: "arr-diff@npm:4.0.0" - checksum: 67b80067137f70c89953b95f5c6279ad379c3ee39f7143578e13bd51580a40066ee2a55da066e22d498dce10f68c2d70056d7823f972fab99dfbf4c78d0bc0f7 + checksum: 10c0/67b80067137f70c89953b95f5c6279ad379c3ee39f7143578e13bd51580a40066ee2a55da066e22d498dce10f68c2d70056d7823f972fab99dfbf4c78d0bc0f7 languageName: node linkType: hard "arr-flatten@npm:^1.1.0": version: 1.1.0 resolution: "arr-flatten@npm:1.1.0" - checksum: bef53be02ed3bc58f202b3861a5b1eb6e1ae4fecf39c3ad4d15b1e0433f941077d16e019a33312d820844b0661777322acbb7d0c447b04d9bdf7d6f9c532548a + checksum: 10c0/bef53be02ed3bc58f202b3861a5b1eb6e1ae4fecf39c3ad4d15b1e0433f941077d16e019a33312d820844b0661777322acbb7d0c447b04d9bdf7d6f9c532548a languageName: node linkType: hard "arr-union@npm:^3.1.0": version: 3.1.0 resolution: "arr-union@npm:3.1.0" - checksum: 7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51 + checksum: 10c0/7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51 languageName: node linkType: hard @@ -12900,35 +12900,35 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" is-array-buffer: "npm:^3.0.1" - checksum: 12f84f6418b57a954caa41654e5e63e019142a4bbb2c6829ba86d1ba65d31ccfaf1461d1743556fd32b091fac34ff44d9dfbdb001402361c45c373b2c86f5c20 + checksum: 10c0/12f84f6418b57a954caa41654e5e63e019142a4bbb2c6829ba86d1ba65d31ccfaf1461d1743556fd32b091fac34ff44d9dfbdb001402361c45c373b2c86f5c20 languageName: node linkType: hard "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" - checksum: c0d924cc2b7e3f5a0e6ae932e8941c5fddc0412bcecf8d5152641910e60f5e1c1e87da2b32083dec2f92f9a8f78e916ea68c22a0579794ba49886951ae783123 + checksum: 10c0/c0d924cc2b7e3f5a0e6ae932e8941c5fddc0412bcecf8d5152641910e60f5e1c1e87da2b32083dec2f92f9a8f78e916ea68c22a0579794ba49886951ae783123 languageName: node linkType: hard "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" - checksum: 806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 languageName: node linkType: hard "array-flatten@npm:^2.1.2": version: 2.1.2 resolution: "array-flatten@npm:2.1.2" - checksum: bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f + checksum: 10c0/bdc1cee68e41bec9cfc1161408734e2269428ef371445606bce4e6241001e138a94b9a617cc9a5b4b7fe6a3a51e3d5a942646975ce82a2e202ccf3e9b478c82f languageName: node linkType: hard "array-ify@npm:^1.0.0": version: 1.0.0 resolution: "array-ify@npm:1.0.0" - checksum: 75c9c072faac47bd61779c0c595e912fe660d338504ac70d10e39e1b8a4a0c9c87658703d619b9d1b70d324177ae29dc8d07dda0d0a15d005597bc4c5a59c70c + checksum: 10c0/75c9c072faac47bd61779c0c595e912fe660d338504ac70d10e39e1b8a4a0c9c87658703d619b9d1b70d324177ae29dc8d07dda0d0a15d005597bc4c5a59c70c languageName: node linkType: hard @@ -12941,21 +12941,21 @@ __metadata: es-abstract: "npm:^1.22.1" get-intrinsic: "npm:^1.2.1" is-string: "npm:^1.0.7" - checksum: 692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b + checksum: 10c0/692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b languageName: node linkType: hard "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" - checksum: 429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 languageName: node linkType: hard "array-unique@npm:^0.3.2": version: 0.3.2 resolution: "array-unique@npm:0.3.2" - checksum: dbf4462cdba8a4b85577be07705210b3d35be4b765822a3f52962d907186617638ce15e0603a4fefdcf82f4cbbc9d433f8cbbd6855148a68872fa041b6474121 + checksum: 10c0/dbf4462cdba8a4b85577be07705210b3d35be4b765822a3f52962d907186617638ce15e0603a4fefdcf82f4cbbc9d433f8cbbd6855148a68872fa041b6474121 languageName: node linkType: hard @@ -12968,7 +12968,7 @@ __metadata: es-abstract: "npm:^1.22.1" es-shim-unscopables: "npm:^1.0.0" get-intrinsic: "npm:^1.2.1" - checksum: 2c5c4d3f07512d6729f728f6260a314c00f2eb0a243123092661fa1bc65dce90234c3b483b5f978396eccef6f69c50f0bea248448aaf9cdfcd1cedad6217acbb + checksum: 10c0/2c5c4d3f07512d6729f728f6260a314c00f2eb0a243123092661fa1bc65dce90234c3b483b5f978396eccef6f69c50f0bea248448aaf9cdfcd1cedad6217acbb languageName: node linkType: hard @@ -12980,7 +12980,7 @@ __metadata: define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" es-shim-unscopables: "npm:^1.0.0" - checksum: a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b languageName: node linkType: hard @@ -12992,7 +12992,7 @@ __metadata: define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" es-shim-unscopables: "npm:^1.0.0" - checksum: 67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 languageName: node linkType: hard @@ -13005,7 +13005,7 @@ __metadata: es-abstract: "npm:^1.20.4" es-array-method-boxes-properly: "npm:^1.0.0" is-string: "npm:^1.0.7" - checksum: 0c6c589d22d6cda4a32458c6fd57a41f420a4fa6cd184a3f6fe7b507f457bc4a073aff6accd595bcd6ac29cad856e7ac306549f127acdb098f401eea13c54901 + checksum: 10c0/0c6c589d22d6cda4a32458c6fd57a41f420a4fa6cd184a3f6fe7b507f457bc4a073aff6accd595bcd6ac29cad856e7ac306549f127acdb098f401eea13c54901 languageName: node linkType: hard @@ -13018,7 +13018,7 @@ __metadata: es-abstract: "npm:^1.20.4" es-shim-unscopables: "npm:^1.0.0" get-intrinsic: "npm:^1.1.3" - checksum: fd5f57aca3c7ddcd1bb83965457b625f3a67d8f334f5cbdb8ac8ef33d5b0d38281524114db2936f8c08048115d5158af216c94e6ae1eb966241b9b6f4ab8a7e8 + checksum: 10c0/fd5f57aca3c7ddcd1bb83965457b625f3a67d8f334f5cbdb8ac8ef33d5b0d38281524114db2936f8c08048115d5158af216c94e6ae1eb966241b9b6f4ab8a7e8 languageName: node linkType: hard @@ -13033,21 +13033,21 @@ __metadata: get-intrinsic: "npm:^1.2.1" is-array-buffer: "npm:^3.0.2" is-shared-array-buffer: "npm:^1.0.2" - checksum: 96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb + checksum: 10c0/96b6e40e439678ffb7fa266398510074d33c3980fbb475490b69980cca60adec3b0777047ef377068a29862157f83edef42efc64ce48ce38977d04d68de5b7fb languageName: node linkType: hard "arrify@npm:^1.0.1": version: 1.0.1 resolution: "arrify@npm:1.0.1" - checksum: c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab + checksum: 10c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab languageName: node linkType: hard "arrify@npm:^2.0.0, arrify@npm:^2.0.1": version: 2.0.1 resolution: "arrify@npm:2.0.1" - checksum: 3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb + checksum: 10c0/3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb languageName: node linkType: hard @@ -13056,14 +13056,14 @@ __metadata: resolution: "as-table@npm:1.0.55" dependencies: printable-characters: "npm:^1.0.42" - checksum: 8c5693a84621fe53c62fcad6b779dc55c5caf4d43b8e67077964baea4a337769ef53f590d7395c806805b4ef1a391b614ba9acdee19b2ca4309ddedaf13894e6 + checksum: 10c0/8c5693a84621fe53c62fcad6b779dc55c5caf4d43b8e67077964baea4a337769ef53f590d7395c806805b4ef1a391b614ba9acdee19b2ca4309ddedaf13894e6 languageName: node linkType: hard "asap@npm:~2.0.3": version: 2.0.6 resolution: "asap@npm:2.0.6" - checksum: c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d languageName: node linkType: hard @@ -13075,7 +13075,7 @@ __metadata: inherits: "npm:^2.0.1" minimalistic-assert: "npm:^1.0.0" safer-buffer: "npm:^2.1.0" - checksum: b577232fa6069cc52bb128e564002c62b2b1fe47f7137bdcd709c0b8495aa79cee0f8cc458a831b2d8675900eea0d05781b006be5e1aa4f0ae3577a73ec20324 + checksum: 10c0/b577232fa6069cc52bb128e564002c62b2b1fe47f7137bdcd709c0b8495aa79cee0f8cc458a831b2d8675900eea0d05781b006be5e1aa4f0ae3577a73ec20324 languageName: node linkType: hard @@ -13084,7 +13084,7 @@ __metadata: resolution: "asn1@npm:0.2.6" dependencies: safer-buffer: "npm:~2.1.0" - checksum: 00c8a06c37e548762306bcb1488388d2f76c74c36f70c803f0c081a01d3bdf26090fc088cd812afc5e56a6d49e33765d451a5f8a68ab9c2b087eba65d2e980e0 + checksum: 10c0/00c8a06c37e548762306bcb1488388d2f76c74c36f70c803f0c081a01d3bdf26090fc088cd812afc5e56a6d49e33765d451a5f8a68ab9c2b087eba65d2e980e0 languageName: node linkType: hard @@ -13095,14 +13095,14 @@ __metadata: pvtsutils: "npm:^1.3.2" pvutils: "npm:^1.1.3" tslib: "npm:^2.4.0" - checksum: bb8eaf4040c8f49dd475566874986f5976b81bae65a6b5526e2208a13cdca323e69ce297bcd435fdda3eb6933defe888e71974d705b6fcb14f2734a907f8aed4 + checksum: 10c0/bb8eaf4040c8f49dd475566874986f5976b81bae65a6b5526e2208a13cdca323e69ce297bcd435fdda3eb6933defe888e71974d705b6fcb14f2734a907f8aed4 languageName: node linkType: hard "assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": version: 1.0.0 resolution: "assert-plus@npm:1.0.0" - checksum: b194b9d50c3a8f872ee85ab110784911e696a4d49f7ee6fc5fb63216dedbefd2c55999c70cb2eaeb4cf4a0e0338b44e9ace3627117b5bf0d42460e9132f21b91 + checksum: 10c0/b194b9d50c3a8f872ee85ab110784911e696a4d49f7ee6fc5fb63216dedbefd2c55999c70cb2eaeb4cf4a0e0338b44e9ace3627117b5bf0d42460e9132f21b91 languageName: node linkType: hard @@ -13112,7 +13112,7 @@ __metadata: dependencies: object-assign: "npm:^4.1.1" util: "npm:0.10.3" - checksum: 188da37d63be479a3b14657c01080db90cdf7fa004e346af916cf8beebcaffb11359c596d0c9c3cd8174c9125a6225796ef1ce533487edc97f8ce3b18c1ab590 + checksum: 10c0/188da37d63be479a3b14657c01080db90cdf7fa004e346af916cf8beebcaffb11359c596d0c9c3cd8174c9125a6225796ef1ce533487edc97f8ce3b18c1ab590 languageName: node linkType: hard @@ -13125,28 +13125,28 @@ __metadata: object-is: "npm:^1.1.5" object.assign: "npm:^4.1.4" util: "npm:^0.12.5" - checksum: 7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 + checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 languageName: node linkType: hard "assertion-error@npm:^1.1.0": version: 1.1.0 resolution: "assertion-error@npm:1.1.0" - checksum: 25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b + checksum: 10c0/25456b2aa333250f01143968e02e4884a34588a8538fbbf65c91a637f1dbfb8069249133cd2f4e530f10f624d206a664e7df30207830b659e9f5298b00a4099b languageName: node linkType: hard "assign-symbols@npm:^1.0.0": version: 1.0.0 resolution: "assign-symbols@npm:1.0.0" - checksum: 29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775 + checksum: 10c0/29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775 languageName: node linkType: hard "ast-types-flow@npm:^0.0.8": version: 0.0.8 resolution: "ast-types-flow@npm:0.0.8" - checksum: f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e languageName: node linkType: hard @@ -13155,7 +13155,7 @@ __metadata: resolution: "ast-types@npm:0.14.2" dependencies: tslib: "npm:^2.0.1" - checksum: 5d66d89b6c07fe092087454b6042dbaf81f2882b176db93861e2b986aafe0bce49e1f1ff59aac775d451c1426ad1e967d250e9e3548f5166ea8a3475e66c169d + checksum: 10c0/5d66d89b6c07fe092087454b6042dbaf81f2882b176db93861e2b986aafe0bce49e1f1ff59aac775d451c1426ad1e967d250e9e3548f5166ea8a3475e66c169d languageName: node linkType: hard @@ -13164,28 +13164,28 @@ __metadata: resolution: "ast-types@npm:0.16.1" dependencies: tslib: "npm:^2.0.1" - checksum: abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf + checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf languageName: node linkType: hard "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" - checksum: f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 languageName: node linkType: hard "async-each@npm:^1.0.1": version: 1.0.6 resolution: "async-each@npm:1.0.6" - checksum: d4e45e8f077e20e015952c065ceae75f82b30ee2d4a8e56a5c454ae44331aaa009d8c94fe043ba254c177bffae9f6ebeefebb7daf9f7ce4d27fac0274dc328ae + checksum: 10c0/d4e45e8f077e20e015952c065ceae75f82b30ee2d4a8e56a5c454ae44331aaa009d8c94fe043ba254c177bffae9f6ebeefebb7daf9f7ce4d27fac0274dc328ae languageName: node linkType: hard "async-limiter@npm:~1.0.0": version: 1.0.1 resolution: "async-limiter@npm:1.0.1" - checksum: 0693d378cfe86842a70d4c849595a0bb50dc44c11649640ca982fa90cbfc74e3cc4753b5a0847e51933f2e9c65ce8e05576e75e5e1fd963a086e673735b35969 + checksum: 10c0/0693d378cfe86842a70d4c849595a0bb50dc44c11649640ca982fa90cbfc74e3cc4753b5a0847e51933f2e9c65ce8e05576e75e5e1fd963a086e673735b35969 languageName: node linkType: hard @@ -13194,7 +13194,7 @@ __metadata: resolution: "async-retry@npm:1.3.3" dependencies: retry: "npm:0.13.1" - checksum: cabced4fb46f8737b95cc88dc9c0ff42656c62dc83ce0650864e891b6c155a063af08d62c446269b51256f6fbcb69a6563b80e76d0ea4a5117b0c0377b6b19d8 + checksum: 10c0/cabced4fb46f8737b95cc88dc9c0ff42656c62dc83ce0650864e891b6c155a063af08d62c446269b51256f6fbcb69a6563b80e76d0ea4a5117b0c0377b6b19d8 languageName: node linkType: hard @@ -13203,14 +13203,14 @@ __metadata: resolution: "async@npm:2.6.4" dependencies: lodash: "npm:^4.17.14" - checksum: 0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 + checksum: 10c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 languageName: node linkType: hard "async@npm:^3.1.0, async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4": version: 3.2.4 resolution: "async@npm:3.2.4" - checksum: b5d02fed64717edf49e35b2b156debd9cf524934ea670108fa5528e7615ed66a5e0bf6c65f832c9483b63aa7f0bffe3e588ebe8d58a539b833798d324516e1c9 + checksum: 10c0/b5d02fed64717edf49e35b2b156debd9cf524934ea670108fa5528e7615ed66a5e0bf6c65f832c9483b63aa7f0bffe3e588ebe8d58a539b833798d324516e1c9 languageName: node linkType: hard @@ -13219,21 +13219,21 @@ __metadata: resolution: "asynciterator.prototype@npm:1.0.0" dependencies: has-symbols: "npm:^1.0.3" - checksum: fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204 + checksum: 10c0/fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204 languageName: node linkType: hard "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" - checksum: d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d languageName: node linkType: hard "at-least-node@npm:^1.0.0": version: 1.0.0 resolution: "at-least-node@npm:1.0.0" - checksum: 4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef languageName: node linkType: hard @@ -13242,28 +13242,28 @@ __metadata: resolution: "atob@npm:2.1.2" bin: atob: bin/atob.js - checksum: ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e + checksum: 10c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e languageName: node linkType: hard "atomic-sleep@npm:^1.0.0": version: 1.0.0 resolution: "atomic-sleep@npm:1.0.0" - checksum: e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a languageName: node linkType: hard "auto-bind@npm:~4.0.0": version: 4.0.0 resolution: "auto-bind@npm:4.0.0" - checksum: 12f70745d081ba990dca028ecfa70de25d4baa9a8b74a5bef3ab293da56cba32ff8276c3ff8e5fe6d9f370547bf3fa71486befbfefe272af7e722c21d0c25530 + checksum: 10c0/12f70745d081ba990dca028ecfa70de25d4baa9a8b74a5bef3ab293da56cba32ff8276c3ff8e5fe6d9f370547bf3fa71486befbfefe272af7e722c21d0c25530 languageName: node linkType: hard "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" - checksum: c4df567ca72d2754a6cbad20088f5f98b1065b3360178169fa9b44ea101af62c0f423fc3854fa820fd6895b6b9171b8386e71558203103ff8fc2ad503fdcc660 + checksum: 10c0/c4df567ca72d2754a6cbad20088f5f98b1065b3360178169fa9b44ea101af62c0f423fc3854fa820fd6895b6b9171b8386e71558203103ff8fc2ad503fdcc660 languageName: node linkType: hard @@ -13274,7 +13274,7 @@ __metadata: archy: "npm:^1.0.0" debug: "npm:^4.0.0" fastq: "npm:^1.6.1" - checksum: a763b7cb0d9bdd4c111c28b46cb83ee9d4bf79e5f99c5cd8b8f2727cf6d0cd5ec3e6df90dbda74a56cdec72fe928dd2e13e75e67270a88b92401f68ef756b3ce + checksum: 10c0/a763b7cb0d9bdd4c111c28b46cb83ee9d4bf79e5f99c5cd8b8f2727cf6d0cd5ec3e6df90dbda74a56cdec72fe928dd2e13e75e67270a88b92401f68ef756b3ce languageName: node linkType: hard @@ -13288,7 +13288,7 @@ __metadata: watchpack: "npm:^2.0.0-beta.10" bin: lambda: bin/lambda - checksum: cf017d4a0b92e14c7361afde48f40a77523fd8f9d911bbd951b65a453bc0aa54219a03d95c11fcad0f707994b67f691c6764215497f13178688e9efd17212b91 + checksum: 10c0/cf017d4a0b92e14c7361afde48f40a77523fd8f9d911bbd951b65a453bc0aa54219a03d95c11fcad0f707994b67f691c6764215497f13178688e9efd17212b91 languageName: node linkType: hard @@ -13306,35 +13306,35 @@ __metadata: util: "npm:^0.12.4" uuid: "npm:8.0.0" xml2js: "npm:0.5.0" - checksum: ebbe976d7f279e0909fe16b5ef1dfc66d8b1ff130ac9aef99933f441ec33c0952a0617f52522e7a9d4d83241484e05c5a61ec3e21ad5c1871dc85f83d4e5d561 + checksum: 10c0/ebbe976d7f279e0909fe16b5ef1dfc66d8b1ff130ac9aef99933f441ec33c0952a0617f52522e7a9d4d83241484e05c5a61ec3e21ad5c1871dc85f83d4e5d561 languageName: node linkType: hard "aws-sign2@npm:~0.7.0": version: 0.7.0 resolution: "aws-sign2@npm:0.7.0" - checksum: 021d2cc5547d4d9ef1633e0332e746a6f447997758b8b68d6fb33f290986872d2bff5f0c37d5832f41a7229361f093cd81c40898d96ed153493c0fb5cd8575d2 + checksum: 10c0/021d2cc5547d4d9ef1633e0332e746a6f447997758b8b68d6fb33f290986872d2bff5f0c37d5832f41a7229361f093cd81c40898d96ed153493c0fb5cd8575d2 languageName: node linkType: hard "aws4@npm:^1.8.0": version: 1.12.0 resolution: "aws4@npm:1.12.0" - checksum: 1e39c266f53b04daf88e112de93a6006375b386a1b7ab6197260886e39abd012aa90bdd87949c3bf9c30754846031f6d5d8ac4f8676628097c11065b5d39847a + checksum: 10c0/1e39c266f53b04daf88e112de93a6006375b386a1b7ab6197260886e39abd012aa90bdd87949c3bf9c30754846031f6d5d8ac4f8676628097c11065b5d39847a languageName: node linkType: hard "axe-core@npm:=4.7.0": version: 4.7.0 resolution: "axe-core@npm:4.7.0" - checksum: 89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba + checksum: 10c0/89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba languageName: node linkType: hard "axe-core@npm:^4.2.0": version: 4.7.2 resolution: "axe-core@npm:4.7.2" - checksum: 8dfc61f038fbd9623ae8a264c8a475d887113a027fb440a2b377b82ffd300e71d1a0bcf042ff13b517a8d548b34c44b4159eff693725c5d7cde240d0aa68feac + checksum: 10c0/8dfc61f038fbd9623ae8a264c8a475d887113a027fb440a2b377b82ffd300e71d1a0bcf042ff13b517a8d548b34c44b4159eff693725c5d7cde240d0aa68feac languageName: node linkType: hard @@ -13345,7 +13345,7 @@ __metadata: follow-redirects: "npm:^1.15.0" form-data: "npm:^4.0.0" proxy-from-env: "npm:^1.1.0" - checksum: 9b77e030e85e4f9cbcba7bb52fbff67d6ce906c92d213e0bd932346a50140faf83733bf786f55bd58301bd92f9973885c7b87d6348023e10f7eaf286d0791a1d + checksum: 10c0/9b77e030e85e4f9cbcba7bb52fbff67d6ce906c92d213e0bd932346a50140faf83733bf786f55bd58301bd92f9973885c7b87d6348023e10f7eaf286d0791a1d languageName: node linkType: hard @@ -13354,14 +13354,14 @@ __metadata: resolution: "axobject-query@npm:3.2.1" dependencies: dequal: "npm:^2.0.3" - checksum: f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 + checksum: 10c0/f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 languageName: node linkType: hard "b4a@npm:^1.6.4": version: 1.6.4 resolution: "b4a@npm:1.6.4" - checksum: a0af707430c3643fd8d9418c732849d3626f1c9281489e021fcad969fb4808fb9f67b224de36b59c9c3b5a13d853482fee0c0eb53f7aec12d540fa67f63648b6 + checksum: 10c0/a0af707430c3643fd8d9418c732849d3626f1c9281489e021fcad969fb4808fb9f67b224de36b59c9c3b5a13d853482fee0c0eb53f7aec12d540fa67f63648b6 languageName: node linkType: hard @@ -13370,7 +13370,7 @@ __metadata: resolution: "babel-core@npm:7.0.0-bridge.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 + checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 languageName: node linkType: hard @@ -13387,7 +13387,7 @@ __metadata: slash: "npm:^3.0.0" peerDependencies: "@babel/core": ^7.8.0 - checksum: 2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 languageName: node linkType: hard @@ -13400,7 +13400,7 @@ __metadata: "@babel/types": "npm:^7.1.6" peerDependencies: "@babel/core": ^7.1.2 - checksum: 58e41540f9727b981d5adb684f3927a423054f77740045e9c5e136de7cc8909afa56110445070bde7b00b8cb75e2c81e7925710f59aacb6549aee9ff89c7afe1 + checksum: 10c0/58e41540f9727b981d5adb684f3927a423054f77740045e9c5e136de7cc8909afa56110445070bde7b00b8cb75e2c81e7925710f59aacb6549aee9ff89c7afe1 languageName: node linkType: hard @@ -13415,7 +13415,7 @@ __metadata: peerDependencies: "@babel/core": ^7.0.0 webpack: ">=2" - checksum: 7b83bae35a12fbc5cdf250e2d36a288305fe5b6d20ab044ab7c09bbf456c8895b80af7a4f1e8b64b5c07a4fd48d4b5144dab40b4bc72a4fed532dc000362f38f + checksum: 10c0/7b83bae35a12fbc5cdf250e2d36a288305fe5b6d20ab044ab7c09bbf456c8895b80af7a4f1e8b64b5c07a4fd48d4b5144dab40b4bc72a4fed532dc000362f38f languageName: node linkType: hard @@ -13428,14 +13428,14 @@ __metadata: peerDependencies: "@babel/core": ^7.12.0 webpack: ">=5" - checksum: e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb languageName: node linkType: hard "babel-plugin-add-react-displayname@npm:^0.0.5": version: 0.0.5 resolution: "babel-plugin-add-react-displayname@npm:0.0.5" - checksum: 96b363d613e3d25e55606546874f3ab34b45088ac5143a64e417976f1eb29ed3e4df90400daa5edb2026d6088ed172f7af469d89838aac4bc810ede377b63c63 + checksum: 10c0/96b363d613e3d25e55606546874f3ab34b45088ac5143a64e417976f1eb29ed3e4df90400daa5edb2026d6088ed172f7af469d89838aac4bc810ede377b63c63 languageName: node linkType: hard @@ -13445,7 +13445,7 @@ __metadata: dependencies: "@babel/core": "npm:^7.11.1" logical-not: "npm:^1.0.1" - checksum: e738db0589551544c38619777334039ec9e2b245eb8e5930878e1ba5bef64b0eb33551bcbc52213d9ae8979155d07d16d22926def353d483eac12ab63d8d1983 + checksum: 10c0/e738db0589551544c38619777334039ec9e2b245eb8e5930878e1ba5bef64b0eb33551bcbc52213d9ae8979155d07d16d22926def353d483eac12ab63d8d1983 languageName: node linkType: hard @@ -13460,14 +13460,14 @@ __metadata: peerDependencies: "@babel/core": ^7.0.0 graphql-tag: ^2.10.1 - checksum: 6616bf9d03f5e905413ea024e0609bf70a2b18b875c19da1e00fe787a16e71ce36244bd097f65c7faa269d4e97e683ab53ca532d15827298c0381a05b8341add + checksum: 10c0/6616bf9d03f5e905413ea024e0609bf70a2b18b875c19da1e00fe787a16e71ce36244bd097f65c7faa269d4e97e683ab53ca532d15827298c0381a05b8341add languageName: node linkType: hard "babel-plugin-ignore-html-and-css-imports@npm:0.1.0": version: 0.1.0 resolution: "babel-plugin-ignore-html-and-css-imports@npm:0.1.0" - checksum: cb83c0d66134ab5bcd12332e6c33a0e13475929cf729b7f26c8d324037371e3c3e60ea9bd7a6ac87a1fca268c5665991878c47bf92be21157a63032c6f86b633 + checksum: 10c0/cb83c0d66134ab5bcd12332e6c33a0e13475929cf729b7f26c8d324037371e3c3e60ea9bd7a6ac87a1fca268c5665991878c47bf92be21157a63032c6f86b633 languageName: node linkType: hard @@ -13480,7 +13480,7 @@ __metadata: "@istanbuljs/schema": "npm:^0.1.2" istanbul-lib-instrument: "npm:^5.0.4" test-exclude: "npm:^6.0.0" - checksum: 1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb languageName: node linkType: hard @@ -13492,7 +13492,7 @@ __metadata: "@babel/types": "npm:^7.3.3" "@types/babel__core": "npm:^7.1.14" "@types/babel__traverse": "npm:^7.0.6" - checksum: 7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e languageName: node linkType: hard @@ -13505,7 +13505,7 @@ __metadata: pkg-up: "npm:^3.1.0" reselect: "npm:^4.1.7" resolve: "npm:^1.22.1" - checksum: bbddb437bf23ab2e12e25c855d71c906cf7a438d0d4821cf0786f23990718f86f76c49f7952ba2370a312c806d223e1efb7ca16698ff49d019396c8d81e4a870 + checksum: 10c0/bbddb437bf23ab2e12e25c855d71c906cf7a438d0d4821cf0786f23990718f86f76c49f7952ba2370a312c806d223e1efb7ca16698ff49d019396c8d81e4a870 languageName: node linkType: hard @@ -13518,7 +13518,7 @@ __metadata: semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 843e7528de0e03a31a6f3837896a95f75b0b24b0294a077246282372279e974400b0bdd82399e8f9cbfe42c87ed56540fd71c33eafb7c8e8b9adac546ecc5fe5 + checksum: 10c0/843e7528de0e03a31a6f3837896a95f75b0b24b0294a077246282372279e974400b0bdd82399e8f9cbfe42c87ed56540fd71c33eafb7c8e8b9adac546ecc5fe5 languageName: node linkType: hard @@ -13530,7 +13530,7 @@ __metadata: core-js-compat: "npm:^3.34.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: b857010736c5e42e20b683973dae862448a42082fcc95b3ef188305a6864a4f94b5cbd568e49e4cd7172c6b2eace7bc403c3ba0984fbe5479474ade01126d559 + checksum: 10c0/b857010736c5e42e20b683973dae862448a42082fcc95b3ef188305a6864a4f94b5cbd568e49e4cd7172c6b2eace7bc403c3ba0984fbe5479474ade01126d559 languageName: node linkType: hard @@ -13541,21 +13541,21 @@ __metadata: "@babel/helper-define-polyfill-provider": "npm:^0.5.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 2aab692582082d54e0df9f9373dca1b223e65b4e7e96440160f27ed8803d417a1fa08da550f08aa3820d2010329ca91b68e2b6e9bd7aed51c93d46dfe79629bb + checksum: 10c0/2aab692582082d54e0df9f9373dca1b223e65b4e7e96440160f27ed8803d417a1fa08da550f08aa3820d2010329ca91b68e2b6e9bd7aed51c93d46dfe79629bb languageName: node linkType: hard "babel-plugin-remove-code@npm:0.0.6": version: 0.0.6 resolution: "babel-plugin-remove-code@npm:0.0.6" - checksum: e77c44d727331cfef548d1e4ea747b6afbd05e1f439addc8d81f8ec9a4766be6d2d6fa638426f9dca811a032ee24be2b691468e21ebbf08406972c9f4f77bbac + checksum: 10c0/e77c44d727331cfef548d1e4ea747b6afbd05e1f439addc8d81f8ec9a4766be6d2d6fa638426f9dca811a032ee24be2b691468e21ebbf08406972c9f4f77bbac languageName: node linkType: hard "babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": version: 7.0.0-beta.0 resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" - checksum: 67e3d6a706637097526b2d3046d3124d3efd3aac28b47af940c2f8df01b8d7ffeb4cdf5648f3b5eac3f098f5b61c4845e306f34301c869e5e14db6ae8b77f699 + checksum: 10c0/67e3d6a706637097526b2d3046d3124d3efd3aac28b47af940c2f8df01b8d7ffeb4cdf5648f3b5eac3f098f5b61c4845e306f34301c869e5e14db6ae8b77f699 languageName: node linkType: hard @@ -13570,7 +13570,7 @@ __metadata: strip-indent: "npm:^3.0.0" peerDependencies: "@babel/core": ">=7.11.6" - checksum: b5e6b6a64adff947ad07948f5e792de12d75694927527df63078bb05861f157ce8e00ac540b5d5e08a13e97293f42577f0629a7bab71c430114660f4c525c788 + checksum: 10c0/b5e6b6a64adff947ad07948f5e792de12d75694927527df63078bb05861f157ce8e00ac540b5d5e08a13e97293f42577f0629a7bab71c430114660f4c525c788 languageName: node linkType: hard @@ -13592,7 +13592,7 @@ __metadata: "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" peerDependencies: "@babel/core": ^7.0.0 - checksum: 5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 + checksum: 10c0/5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 languageName: node linkType: hard @@ -13629,7 +13629,7 @@ __metadata: babel-plugin-syntax-trailing-function-commas: "npm:^7.0.0-beta.0" peerDependencies: "@babel/core": ^7.0.0 - checksum: 2be440c0fd7d1df247417be35644cb89f40a300e7fcdc44878b737ec49b04380eff422e4ebdc7bb5efd5ecfef45b634fc5fe11c3a409a50c9084e81083037902 + checksum: 10c0/2be440c0fd7d1df247417be35644cb89f40a300e7fcdc44878b737ec49b04380eff422e4ebdc7bb5efd5ecfef45b634fc5fe11c3a409a50c9084e81083037902 languageName: node linkType: hard @@ -13641,7 +13641,7 @@ __metadata: babel-preset-current-node-syntax: "npm:^1.0.0" peerDependencies: "@babel/core": ^7.0.0 - checksum: ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 languageName: node linkType: hard @@ -13667,28 +13667,28 @@ __metadata: webpack: "npm:^4.44.2" bin: babel-timing: dist/cli.js - checksum: 1a70d7ae9ef60e71fb9a4a4ac155c660b0cc779d1a6b48023964050b458b822d66d01c1007038765113f6f622496beddabf5978ed4c5f96d1d8b277301ca058f + checksum: 10c0/1a70d7ae9ef60e71fb9a4a4ac155c660b0cc779d1a6b48023964050b458b822d66d01c1007038765113f6f622496beddabf5978ed4c5f96d1d8b277301ca058f languageName: node linkType: hard "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" - checksum: 9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee languageName: node linkType: hard "base64-js@npm:^1.0.2, base64-js@npm:^1.3.0, base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" - checksum: f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf languageName: node linkType: hard "base64url@npm:3.0.1": version: 3.0.1 resolution: "base64url@npm:3.0.1" - checksum: 5ca9d6064e9440a2a45749558dddd2549ca439a305793d4f14a900b7256b5f4438ef1b7a494e1addc66ced5d20f5c010716d353ed267e4b769e6c78074991241 + checksum: 10c0/5ca9d6064e9440a2a45749558dddd2549ca439a305793d4f14a900b7256b5f4438ef1b7a494e1addc66ced5d20f5c010716d353ed267e4b769e6c78074991241 languageName: node linkType: hard @@ -13703,14 +13703,14 @@ __metadata: isobject: "npm:^3.0.1" mixin-deep: "npm:^1.2.0" pascalcase: "npm:^0.1.1" - checksum: 30a2c0675eb52136b05ef496feb41574d9f0bb2d6d677761da579c00a841523fccf07f1dbabec2337b5f5750f428683b8ca60d89e56a1052c4ae1c0cd05de64d + checksum: 10c0/30a2c0675eb52136b05ef496feb41574d9f0bb2d6d677761da579c00a841523fccf07f1dbabec2337b5f5750f428683b8ca60d89e56a1052c4ae1c0cd05de64d languageName: node linkType: hard "batch@npm:0.6.1": version: 0.6.1 resolution: "batch@npm:0.6.1" - checksum: 925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 + checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 languageName: node linkType: hard @@ -13719,14 +13719,14 @@ __metadata: resolution: "bcrypt-pbkdf@npm:1.0.2" dependencies: tweetnacl: "npm:^0.14.3" - checksum: ddfe85230b32df25aeebfdccfbc61d3bc493ace49c884c9c68575de1f5dcf733a5d7de9def3b0f318b786616b8d85bad50a28b1da1750c43e0012c93badcc148 + checksum: 10c0/ddfe85230b32df25aeebfdccfbc61d3bc493ace49c884c9c68575de1f5dcf733a5d7de9def3b0f318b786616b8d85bad50a28b1da1750c43e0012c93badcc148 languageName: node linkType: hard "before-after-hook@npm:^2.2.0": version: 2.2.3 resolution: "before-after-hook@npm:2.2.3" - checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c + checksum: 10c0/0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c languageName: node linkType: hard @@ -13735,28 +13735,28 @@ __metadata: resolution: "better-opn@npm:3.0.2" dependencies: open: "npm:^8.0.4" - checksum: 911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 + checksum: 10c0/911ef25d44da75aabfd2444ce7a4294a8000ebcac73068c04a60298b0f7c7506b60421aa4cd02ac82502fb42baaff7e4892234b51e6923eded44c5a11185f2f5 languageName: node linkType: hard "big-integer@npm:^1.6.44": version: 1.6.51 resolution: "big-integer@npm:1.6.51" - checksum: c8139662d57f8833a44802f4b65be911679c569535ea73c5cfd3c1c8994eaead1b84b6f63e1db63833e4d4cacb6b6a9e5522178113dfdc8e4c81ed8436f1e8cc + checksum: 10c0/c8139662d57f8833a44802f4b65be911679c569535ea73c5cfd3c1c8994eaead1b84b6f63e1db63833e4d4cacb6b6a9e5522178113dfdc8e4c81ed8436f1e8cc languageName: node linkType: hard "big.js@npm:^5.2.2": version: 5.2.2 resolution: "big.js@npm:5.2.2" - checksum: 230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f languageName: node linkType: hard "bignumber.js@npm:^9.0.0": version: 9.1.1 resolution: "bignumber.js@npm:9.1.1" - checksum: 950312b15d038ae06028c8a6901fb4efd57fa889ada8c887cebd856e79f2fc9667641bebfb2e2ea4cc694e663fd55c1fe6e62a7e8fe40bbdebdf92269537b802 + checksum: 10c0/950312b15d038ae06028c8a6901fb4efd57fa889ada8c887cebd856e79f2fc9667641bebfb2e2ea4cc694e663fd55c1fe6e62a7e8fe40bbdebdf92269537b802 languageName: node linkType: hard @@ -13768,21 +13768,21 @@ __metadata: npm-normalize-package-bin: "npm:^3.0.0" read-cmd-shim: "npm:^4.0.0" write-file-atomic: "npm:^5.0.0" - checksum: f89d84bf421aed326bc57e755623ba3810683529b3fb8329194f3970a1fe07bac88990c64a0dbdd57cb1290d4e0eae5fd3dacc59c60640eeb626ff5b1a249ac2 + checksum: 10c0/f89d84bf421aed326bc57e755623ba3810683529b3fb8329194f3970a1fe07bac88990c64a0dbdd57cb1290d4e0eae5fd3dacc59c60640eeb626ff5b1a249ac2 languageName: node linkType: hard "binary-extensions@npm:^1.0.0": version: 1.13.1 resolution: "binary-extensions@npm:1.13.1" - checksum: 2d616938ac23d828ec3fbe0dea429b566fd2c137ddc38f166f16561ccd58029deac3fa9fddb489ab13d679c8fb5f1bd0e82824041299e5e39d8dd3cc68fbb9f9 + checksum: 10c0/2d616938ac23d828ec3fbe0dea429b566fd2c137ddc38f166f16561ccd58029deac3fa9fddb489ab13d679c8fb5f1bd0e82824041299e5e39d8dd3cc68fbb9f9 languageName: node linkType: hard "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" - checksum: d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d + checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d languageName: node linkType: hard @@ -13791,7 +13791,7 @@ __metadata: resolution: "bindings@npm:1.5.0" dependencies: file-uri-to-path: "npm:1.0.0" - checksum: 3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba languageName: node linkType: hard @@ -13802,7 +13802,7 @@ __metadata: buffer: "npm:^5.5.0" inherits: "npm:^2.0.4" readable-stream: "npm:^3.4.0" - checksum: 02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f languageName: node linkType: hard @@ -13813,35 +13813,35 @@ __metadata: buffer: "npm:^6.0.3" inherits: "npm:^2.0.4" readable-stream: "npm:^3.4.0" - checksum: 528a9c3d7d6b87af98c46f10a887654d027c28c503c7f7de87440e643f0056d7a2319a967762b8ec18150c64799d2825a277147a752a0570a7407c0b705b0d01 + checksum: 10c0/528a9c3d7d6b87af98c46f10a887654d027c28c503c7f7de87440e643f0056d7a2319a967762b8ec18150c64799d2825a277147a752a0570a7407c0b705b0d01 languageName: node linkType: hard "blob-util@npm:^2.0.2": version: 2.0.2 resolution: "blob-util@npm:2.0.2" - checksum: ed82d587827e5c86be122301a7c250f8364963e9582f72a826255bfbd32f8d69cc10169413d666667bb1c4fc8061329ae89d176ffe46fee8f32080af944ccddc + checksum: 10c0/ed82d587827e5c86be122301a7c250f8364963e9582f72a826255bfbd32f8d69cc10169413d666667bb1c4fc8061329ae89d176ffe46fee8f32080af944ccddc languageName: node linkType: hard "bluebird@npm:^3.5.5, bluebird@npm:^3.7.2": version: 3.7.2 resolution: "bluebird@npm:3.7.2" - checksum: 680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 + checksum: 10c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 languageName: node linkType: hard "bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": version: 4.12.0 resolution: "bn.js@npm:4.12.0" - checksum: 9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 + checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 languageName: node linkType: hard "bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": version: 5.2.1 resolution: "bn.js@npm:5.2.1" - checksum: bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa languageName: node linkType: hard @@ -13861,7 +13861,7 @@ __metadata: raw-body: "npm:2.5.1" type-is: "npm:~1.6.18" unpipe: "npm:1.0.0" - checksum: a202d493e2c10a33fb7413dac7d2f713be579c4b88343cd814b6df7a38e5af1901fc31044e04de176db56b16d9772aa25a7723f64478c20f4d91b1ac223bf3b8 + checksum: 10c0/a202d493e2c10a33fb7413dac7d2f713be579c4b88343cd814b6df7a38e5af1901fc31044e04de176db56b16d9772aa25a7723f64478c20f4d91b1ac223bf3b8 languageName: node linkType: hard @@ -13873,21 +13873,21 @@ __metadata: dns-equal: "npm:^1.0.0" fast-deep-equal: "npm:^3.1.3" multicast-dns: "npm:^7.2.5" - checksum: 8dd3fef3ff8a11678d8f586be03c85004a45bae4353c55d7dbffe288cad73ddb38dee08b57425b9945c9a3a840d50bd40ae5aeda0066186dabe4b84a315b4e05 + checksum: 10c0/8dd3fef3ff8a11678d8f586be03c85004a45bae4353c55d7dbffe288cad73ddb38dee08b57425b9945c9a3a840d50bd40ae5aeda0066186dabe4b84a315b4e05 languageName: node linkType: hard "boolbase@npm:^1.0.0": version: 1.0.0 resolution: "boolbase@npm:1.0.0" - checksum: e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf + checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf languageName: node linkType: hard "bottleneck@npm:^2.15.3": version: 2.19.5 resolution: "bottleneck@npm:2.19.5" - checksum: b0f72e45b2e0f56a21ba720183f16bef8e693452fb0495d997fa354e42904353a94bd8fd429868e6751bc85e54b6755190519eed5a0ae0a94a5185209ae7c6d0 + checksum: 10c0/b0f72e45b2e0f56a21ba720183f16bef8e693452fb0495d997fa354e42904353a94bd8fd429868e6751bc85e54b6755190519eed5a0ae0a94a5185209ae7c6d0 languageName: node linkType: hard @@ -13903,7 +13903,7 @@ __metadata: type-fest: "npm:^0.20.2" widest-line: "npm:^3.1.0" wrap-ansi: "npm:^7.0.0" - checksum: 71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 + checksum: 10c0/71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 languageName: node linkType: hard @@ -13912,7 +13912,7 @@ __metadata: resolution: "bplist-parser@npm:0.2.0" dependencies: big-integer: "npm:^1.6.44" - checksum: ce79c69e0f6efe506281e7c84e3712f7d12978991675b6e3a58a295b16f13ca81aa9b845c335614a545e0af728c8311b6aa3142af76ba1cb616af9bbac5c4a9f + checksum: 10c0/ce79c69e0f6efe506281e7c84e3712f7d12978991675b6e3a58a295b16f13ca81aa9b845c335614a545e0af728c8311b6aa3142af76ba1cb616af9bbac5c4a9f languageName: node linkType: hard @@ -13922,7 +13922,7 @@ __metadata: dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 languageName: node linkType: hard @@ -13931,7 +13931,7 @@ __metadata: resolution: "brace-expansion@npm:2.0.1" dependencies: balanced-match: "npm:^1.0.0" - checksum: b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f languageName: node linkType: hard @@ -13949,7 +13949,7 @@ __metadata: snapdragon-node: "npm:^2.0.1" split-string: "npm:^3.0.2" to-regex: "npm:^3.0.1" - checksum: 72b27ea3ea2718f061c29e70fd6e17606e37c65f5801abddcf0b0052db1de7d60f3bf92cfc220ab57b44bd0083a5f69f9d03b3461d2816cfe9f9398207acc728 + checksum: 10c0/72b27ea3ea2718f061c29e70fd6e17606e37c65f5801abddcf0b0052db1de7d60f3bf92cfc220ab57b44bd0083a5f69f9d03b3461d2816cfe9f9398207acc728 languageName: node linkType: hard @@ -13958,21 +13958,21 @@ __metadata: resolution: "braces@npm:3.0.2" dependencies: fill-range: "npm:^7.0.1" - checksum: 321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 languageName: node linkType: hard "brorand@npm:^1.0.1, brorand@npm:^1.1.0": version: 1.1.0 resolution: "brorand@npm:1.1.0" - checksum: 6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 languageName: node linkType: hard "browser-assert@npm:^1.2.1": version: 1.2.1 resolution: "browser-assert@npm:1.2.1" - checksum: 902abf999f92c9c951fdb6d7352c09eea9a84706258699655f7e7906e42daa06a1ae286398a755872740e05a6a71c43c5d1a0c0431d67a8cdb66e5d859a3fc0c + checksum: 10c0/902abf999f92c9c951fdb6d7352c09eea9a84706258699655f7e7906e42daa06a1ae286398a755872740e05a6a71c43c5d1a0c0431d67a8cdb66e5d859a3fc0c languageName: node linkType: hard @@ -13986,7 +13986,7 @@ __metadata: evp_bytestokey: "npm:^1.0.3" inherits: "npm:^2.0.1" safe-buffer: "npm:^5.0.1" - checksum: 967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 languageName: node linkType: hard @@ -13997,7 +13997,7 @@ __metadata: browserify-aes: "npm:^1.0.4" browserify-des: "npm:^1.0.0" evp_bytestokey: "npm:^1.0.0" - checksum: aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d languageName: node linkType: hard @@ -14009,7 +14009,7 @@ __metadata: des.js: "npm:^1.0.0" inherits: "npm:^2.0.1" safe-buffer: "npm:^5.1.2" - checksum: 943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d languageName: node linkType: hard @@ -14019,7 +14019,7 @@ __metadata: dependencies: bn.js: "npm:^5.0.0" randombytes: "npm:^2.0.1" - checksum: fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a + checksum: 10c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a languageName: node linkType: hard @@ -14036,7 +14036,7 @@ __metadata: parse-asn1: "npm:^5.1.5" readable-stream: "npm:^3.6.0" safe-buffer: "npm:^5.2.0" - checksum: 8f00a370e3e97060977dc58e51251d3ca398ee73523994a44430321e8de2c7d85395362d59014b2b07efe4190f369baee2ff28eb8f405ff4660b776651cf052d + checksum: 10c0/8f00a370e3e97060977dc58e51251d3ca398ee73523994a44430321e8de2c7d85395362d59014b2b07efe4190f369baee2ff28eb8f405ff4660b776651cf052d languageName: node linkType: hard @@ -14045,7 +14045,7 @@ __metadata: resolution: "browserify-zlib@npm:0.1.4" dependencies: pako: "npm:~0.2.0" - checksum: 0cde7ca5d33d43125649330fd75c056397e53731956a2593c4a2529f4e609a8e6abdb2b8e1921683abf5645375b92cfb2a21baa42fe3c9fc3e2556d32043af93 + checksum: 10c0/0cde7ca5d33d43125649330fd75c056397e53731956a2593c4a2529f4e609a8e6abdb2b8e1921683abf5645375b92cfb2a21baa42fe3c9fc3e2556d32043af93 languageName: node linkType: hard @@ -14054,7 +14054,7 @@ __metadata: resolution: "browserify-zlib@npm:0.2.0" dependencies: pako: "npm:~1.0.5" - checksum: 9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 + checksum: 10c0/9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 languageName: node linkType: hard @@ -14068,7 +14068,7 @@ __metadata: update-browserslist-db: "npm:^1.0.13" bin: browserslist: cli.js - checksum: 5a1f673ce0d6e61a68369835a6b66e199669bde02c3bed5ec51e77598d8daafd91719dba55b15af2021b9ad0bbaa94951fd702eb71087449eb28be8002815ece + checksum: 10c0/5a1f673ce0d6e61a68369835a6b66e199669bde02c3bed5ec51e77598d8daafd91719dba55b15af2021b9ad0bbaa94951fd702eb71087449eb28be8002815ece languageName: node linkType: hard @@ -14077,42 +14077,42 @@ __metadata: resolution: "bser@npm:2.1.1" dependencies: node-int64: "npm:^0.4.0" - checksum: 24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 languageName: node linkType: hard "btoa-lite@npm:^1.0.0": version: 1.0.0 resolution: "btoa-lite@npm:1.0.0" - checksum: 7a4f0568ae3c915464650f98fde7901ae07b13a333a614515a0c86876b3528670fafece28dfef9745d971a613bb83341823afb0c20c6f318b384c1e364b9eb95 + checksum: 10c0/7a4f0568ae3c915464650f98fde7901ae07b13a333a614515a0c86876b3528670fafece28dfef9745d971a613bb83341823afb0c20c6f318b384c1e364b9eb95 languageName: node linkType: hard "buffer-crc32@npm:^0.2.1, buffer-crc32@npm:~0.2.3": version: 0.2.13 resolution: "buffer-crc32@npm:0.2.13" - checksum: cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 + checksum: 10c0/cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 languageName: node linkType: hard "buffer-equal-constant-time@npm:1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" - checksum: fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e + checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e languageName: node linkType: hard "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" - checksum: 124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 languageName: node linkType: hard "buffer-xor@npm:^1.0.3": version: 1.0.3 resolution: "buffer-xor@npm:1.0.3" - checksum: fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c languageName: node linkType: hard @@ -14123,7 +14123,7 @@ __metadata: base64-js: "npm:^1.0.2" ieee754: "npm:^1.1.4" isarray: "npm:^1.0.0" - checksum: dc443d7e7caab23816b58aacdde710b72f525ad6eecd7d738fcaa29f6d6c12e8d9c13fed7219fd502be51ecf0615f5c077d4bdc6f9308dde2e53f8e5393c5b21 + checksum: 10c0/dc443d7e7caab23816b58aacdde710b72f525ad6eecd7d738fcaa29f6d6c12e8d9c13fed7219fd502be51ecf0615f5c077d4bdc6f9308dde2e53f8e5393c5b21 languageName: node linkType: hard @@ -14133,7 +14133,7 @@ __metadata: dependencies: base64-js: "npm:^1.3.1" ieee754: "npm:^1.2.1" - checksum: 2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 languageName: node linkType: hard @@ -14143,7 +14143,7 @@ __metadata: dependencies: base64-js: "npm:^1.3.1" ieee754: "npm:^1.1.13" - checksum: 27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e languageName: node linkType: hard @@ -14153,21 +14153,21 @@ __metadata: dependencies: node-gyp: "npm:latest" node-gyp-build: "npm:^4.3.0" - checksum: 48d6cf98b9c227db65f0a1062b6c80e933c43dc03e0ad5f908da0e79cc87a633c215516f4d541ca9b0e09c1fb386f1bbe1fc2de913057f0201d14798d3e0c2bb + checksum: 10c0/48d6cf98b9c227db65f0a1062b6c80e933c43dc03e0ad5f908da0e79cc87a633c215516f4d541ca9b0e09c1fb386f1bbe1fc2de913057f0201d14798d3e0c2bb languageName: node linkType: hard "builtin-status-codes@npm:^3.0.0": version: 3.0.0 resolution: "builtin-status-codes@npm:3.0.0" - checksum: c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c + checksum: 10c0/c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c languageName: node linkType: hard "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" - checksum: 493afcc1db0a56d174cc85bebe5ca69144f6fdd0007d6cbe6b2434185314c79d83cb867e492b56aa5cf421b4b8a8135bf96ba4c3ce71994cf3da154d1ea59747 + checksum: 10c0/493afcc1db0a56d174cc85bebe5ca69144f6fdd0007d6cbe6b2434185314c79d83cb867e492b56aa5cf421b4b8a8135bf96ba4c3ce71994cf3da154d1ea59747 languageName: node linkType: hard @@ -14176,7 +14176,7 @@ __metadata: resolution: "builtins@npm:5.0.1" dependencies: semver: "npm:^7.0.0" - checksum: 9390a51a9abbc0233dac79c66715f927508b9d0c62cb7a42448fe8c52def60c707e6e9eb2cc4c9b7aba11601899935bca4e4064ae5e19c04c7e1bb9309e69134 + checksum: 10c0/9390a51a9abbc0233dac79c66715f927508b9d0c62cb7a42448fe8c52def60c707e6e9eb2cc4c9b7aba11601899935bca4e4064ae5e19c04c7e1bb9309e69134 languageName: node linkType: hard @@ -14185,35 +14185,35 @@ __metadata: resolution: "busboy@npm:1.6.0" dependencies: streamsearch: "npm:^1.1.0" - checksum: fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f languageName: node linkType: hard "byte-size@npm:8.1.1": version: 8.1.1 resolution: "byte-size@npm:8.1.1" - checksum: 83170a16820fde48ebaef93bf6b2e86c5f72041f76e44eba1f3c738cceb699aeadf11088198944d5d7c6f970b465ab1e3dddc2e60bfb49a74374f3447a8db5b9 + checksum: 10c0/83170a16820fde48ebaef93bf6b2e86c5f72041f76e44eba1f3c738cceb699aeadf11088198944d5d7c6f970b465ab1e3dddc2e60bfb49a74374f3447a8db5b9 languageName: node linkType: hard "bytes@npm:3.0.0": version: 3.0.0 resolution: "bytes@npm:3.0.0" - checksum: 91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 languageName: node linkType: hard "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" - checksum: 76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e languageName: node linkType: hard "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" - checksum: 4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 + checksum: 10c0/4ee06aaa7bab8981f0d54e5f5f9d4adcd64058e9697563ce336d8a3878ed018ee18ebe5359b2430eceae87e0758e62ea2019c3f52ae6e211b1bd2e133856cd10 languageName: node linkType: hard @@ -14236,7 +14236,7 @@ __metadata: ssri: "npm:^6.0.1" unique-filename: "npm:^1.1.1" y18n: "npm:^4.0.0" - checksum: b4b0aa49e3fbd3ca92f71bc62923e4afce31fd687b31d5ba524b2a54b36e96a8b027165599307dda5e4a6f7268cc951b77ca170efa00c1b72761f9daae51fdfb + checksum: 10c0/b4b0aa49e3fbd3ca92f71bc62923e4afce31fd687b31d5ba524b2a54b36e96a8b027165599307dda5e4a6f7268cc951b77ca170efa00c1b72761f9daae51fdfb languageName: node linkType: hard @@ -14256,7 +14256,7 @@ __metadata: ssri: "npm:^10.0.0" tar: "npm:^6.1.11" unique-filename: "npm:^3.0.0" - checksum: fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 + checksum: 10c0/fcb0843c8e152b0e1440328508a2c0d6435c431198155e31daa591b348a1739b089ce2a72a4528690ed10a2bf086c180ee4980e2116457131b4c8a6e65e10976 languageName: node linkType: hard @@ -14276,7 +14276,7 @@ __metadata: ssri: "npm:^10.0.0" tar: "npm:^6.1.11" unique-filename: "npm:^3.0.0" - checksum: a31666805a80a8b16ad3f85faf66750275a9175a3480896f4f6d31b5d53ef190484fabd71bdb6d2ea5603c717fbef09f4af03d6a65b525c8ef0afaa44c361866 + checksum: 10c0/a31666805a80a8b16ad3f85faf66750275a9175a3480896f4f6d31b5d53ef190484fabd71bdb6d2ea5603c717fbef09f4af03d6a65b525c8ef0afaa44c361866 languageName: node linkType: hard @@ -14293,7 +14293,7 @@ __metadata: to-object-path: "npm:^0.3.0" union-value: "npm:^1.0.0" unset-value: "npm:^1.0.0" - checksum: a7142e25c73f767fa520957dcd179b900b86eac63b8cfeaa3b2a35e18c9ca5968aa4e2d2bed7a3e7efd10f13be404344cfab3a4156217e71f9bdb95940bb9c8c + checksum: 10c0/a7142e25c73f767fa520957dcd179b900b86eac63b8cfeaa3b2a35e18c9ca5968aa4e2d2bed7a3e7efd10f13be404344cfab3a4156217e71f9bdb95940bb9c8c languageName: node linkType: hard @@ -14308,14 +14308,14 @@ __metadata: lowercase-keys: "npm:^2.0.0" normalize-url: "npm:^4.1.0" responselike: "npm:^1.0.2" - checksum: e92f2b2078c014ba097647ab4ff6a6149dc2974a65670ee97ec593ec9f4148ecc988e86b9fcd8ebf7fe255774a53d5dc3db6b01065d44f09a7452c7a7d8e4844 + checksum: 10c0/e92f2b2078c014ba097647ab4ff6a6149dc2974a65670ee97ec593ec9f4148ecc988e86b9fcd8ebf7fe255774a53d5dc3db6b01065d44f09a7452c7a7d8e4844 languageName: node linkType: hard "cachedir@npm:^2.3.0": version: 2.3.0 resolution: "cachedir@npm:2.3.0" - checksum: 8380a4a4aa824b20cbc246c38ae2b3379a865f52ea1f31f7b057d07545ea1ab27f93c4323d4bd1bd398991489f18a226880c3166b19ecbf49a77b18c519d075a + checksum: 10c0/8380a4a4aa824b20cbc246c38ae2b3379a865f52ea1f31f7b057d07545ea1ab27f93c4323d4bd1bd398991489f18a226880c3166b19ecbf49a77b18c519d075a languageName: node linkType: hard @@ -14326,14 +14326,14 @@ __metadata: function-bind: "npm:^1.1.2" get-intrinsic: "npm:^1.2.1" set-function-length: "npm:^1.1.1" - checksum: a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10 + checksum: 10c0/a6172c168fd6dacf744fcde745099218056bd755c50415b592655dcd6562157ed29f130f56c3f6db2250f67e4bd62e5c218cdc56d7bfd76e0bda50770fce2d10 languageName: node linkType: hard "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" - checksum: fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 languageName: node linkType: hard @@ -14343,7 +14343,7 @@ __metadata: dependencies: no-case: "npm:^2.2.0" upper-case: "npm:^1.1.1" - checksum: 491c6bbf986b9d8355e12cca6beb719b44c2fe96e8526c09958a1b4e0dbb081a82ea59c13b5a6ccf9158ce5979cbe56a8a10d7322bfeed2d84725c6b89d8f934 + checksum: 10c0/491c6bbf986b9d8355e12cca6beb719b44c2fe96e8526c09958a1b4e0dbb081a82ea59c13b5a6ccf9158ce5979cbe56a8a10d7322bfeed2d84725c6b89d8f934 languageName: node linkType: hard @@ -14353,7 +14353,7 @@ __metadata: dependencies: pascal-case: "npm:^3.1.2" tslib: "npm:^2.0.3" - checksum: bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a + checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a languageName: node linkType: hard @@ -14364,7 +14364,7 @@ __metadata: camelcase: "npm:^5.3.1" map-obj: "npm:^4.0.0" quick-lru: "npm:^4.0.1" - checksum: bf1a28348c0f285c6c6f68fb98a9d088d3c0269fed0cdff3ea680d5a42df8a067b4de374e7a33e619eb9d5266a448fe66c2dd1f8e0c9209ebc348632882a3526 + checksum: 10c0/bf1a28348c0f285c6c6f68fb98a9d088d3c0269fed0cdff3ea680d5a42df8a067b4de374e7a33e619eb9d5266a448fe66c2dd1f8e0c9209ebc348632882a3526 languageName: node linkType: hard @@ -14376,21 +14376,21 @@ __metadata: map-obj: "npm:^4.1.0" quick-lru: "npm:^5.1.1" type-fest: "npm:^1.2.1" - checksum: ae86a51168643e9e8a2f2c7bfa17850729979ec3dafc5253056a7d97931cbb0e3ef5b4185e59d54b7a56c54405dee2874b0c82033498d8626e512ff9034cb05c + checksum: 10c0/ae86a51168643e9e8a2f2c7bfa17850729979ec3dafc5253056a7d97931cbb0e3ef5b4185e59d54b7a56c54405dee2874b0c82033498d8626e512ff9034cb05c languageName: node linkType: hard "camelcase@npm:6.3.0, camelcase@npm:^6.2.0, camelcase@npm:^6.3.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" - checksum: 0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 languageName: node linkType: hard "camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": version: 5.3.1 resolution: "camelcase@npm:5.3.1" - checksum: 92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 languageName: node linkType: hard @@ -14402,14 +14402,14 @@ __metadata: caniuse-lite: "npm:^1.0.0" lodash.memoize: "npm:^4.1.2" lodash.uniq: "npm:^4.5.0" - checksum: 60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c + checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c languageName: node linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001580": version: 1.0.30001581 resolution: "caniuse-lite@npm:1.0.30001581" - checksum: 34b048156514eab5932212807428905cbecdef918f7c3d2153d5e8b6885d929e5c0b649f9e135cb1e03e413fbad8e00d1f24ed04cbcca52adc660ef98cad9032 + checksum: 10c0/34b048156514eab5932212807428905cbecdef918f7c3d2153d5e8b6885d929e5c0b649f9e135cb1e03e413fbad8e00d1f24ed04cbcca52adc660ef98cad9032 languageName: node linkType: hard @@ -14420,21 +14420,21 @@ __metadata: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" upper-case-first: "npm:^2.0.2" - checksum: 6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 + checksum: 10c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 languageName: node linkType: hard "case-sensitive-paths-webpack-plugin@npm:^2.4.0": version: 2.4.0 resolution: "case-sensitive-paths-webpack-plugin@npm:2.4.0" - checksum: 310dab619b661a7fa44ed773870be6d6d7373faff6953ad92720f9553e2579e46dda5b9a79eae6d25ff3733cc15aa466b96e5811af16213f23c115aa220b4ab4 + checksum: 10c0/310dab619b661a7fa44ed773870be6d6d7373faff6953ad92720f9553e2579e46dda5b9a79eae6d25ff3733cc15aa466b96e5811af16213f23c115aa220b4ab4 languageName: node linkType: hard "caseless@npm:~0.12.0": version: 0.12.0 resolution: "caseless@npm:0.12.0" - checksum: ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 + checksum: 10c0/ccf64bcb6c0232cdc5b7bd91ddd06e23a4b541f138336d4725233ac538041fb2f29c2e86c3c4a7a61ef990b665348db23a047060b9414c3a6603e9fa61ad4626 languageName: node linkType: hard @@ -14443,7 +14443,7 @@ __metadata: resolution: "catharsis@npm:0.9.0" dependencies: lodash: "npm:^4.17.15" - checksum: 9ac03ca48154ac63cfdb6c1645481d9d04f3c3e0dea131debf3116a0c12aa47e8864be7dcf770932c46d75bdd844a99f0c116c234e57232ad1f427751498e7ed + checksum: 10c0/9ac03ca48154ac63cfdb6c1645481d9d04f3c3e0dea131debf3116a0c12aa47e8864be7dcf770932c46d75bdd844a99f0c116c234e57232ad1f427751498e7ed languageName: node linkType: hard @@ -14474,7 +14474,7 @@ __metadata: optional: true bin: download-cbor-prebuilds: bin/download-prebuilds.js - checksum: e7471f9ad421d352d60079faa63234ea7795d4ae64ce617a49a5f3b82a1a95e81c141f75bc1d7c0ae3d7dca924a78f9109aab5ee2a2113830bf67705c08839d0 + checksum: 10c0/e7471f9ad421d352d60079faa63234ea7795d4ae64ce617a49a5f3b82a1a95e81c141f75bc1d7c0ae3d7dca924a78f9109aab5ee2a2113830bf67705c08839d0 languageName: node linkType: hard @@ -14486,7 +14486,7 @@ __metadata: dependenciesMeta: cbor-extract: optional: true - checksum: ac0c0671d38b916d964de446a3d2efc5434d948777d607c6dec2756f87c36c177c7d143ef9539168fc58d23dcd5e6945b1e0911b60aff898d54aacdefeb26c10 + checksum: 10c0/ac0c0671d38b916d964de446a3d2efc5434d948777d607c6dec2756f87c36c177c7d143ef9539168fc58d23dcd5e6945b1e0911b60aff898d54aacdefeb26c10 languageName: node linkType: hard @@ -14501,7 +14501,7 @@ __metadata: loupe: "npm:^2.3.6" pathval: "npm:^1.1.1" type-detect: "npm:^4.0.8" - checksum: 91590a8fe18bd6235dece04ccb2d5b4ecec49984b50924499bdcd7a95c02cb1fd2a689407c19bb854497bde534ef57525cfad6c7fdd2507100fd802fbc2aefbd + checksum: 10c0/91590a8fe18bd6235dece04ccb2d5b4ecec49984b50924499bdcd7a95c02cb1fd2a689407c19bb854497bde534ef57525cfad6c7fdd2507100fd802fbc2aefbd languageName: node linkType: hard @@ -14511,7 +14511,7 @@ __metadata: dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" - checksum: 3787bd65ecd98ab3a1acc3b4f71d006268a675875e49ee6ea75fb54ba73d268b97544368358c18c42445e408e076ae8ad5cec8fbad36942a2c7ac654883dc61e + checksum: 10c0/3787bd65ecd98ab3a1acc3b4f71d006268a675875e49ee6ea75fb54ba73d268b97544368358c18c42445e408e076ae8ad5cec8fbad36942a2c7ac654883dc61e languageName: node linkType: hard @@ -14521,14 +14521,14 @@ __metadata: dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" - checksum: 4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 languageName: node linkType: hard "chalk@npm:5.3.0, chalk@npm:^5.0.0, chalk@npm:^5.2.0, chalk@npm:^5.3.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" - checksum: 8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 languageName: node linkType: hard @@ -14539,7 +14539,7 @@ __metadata: ansi-styles: "npm:^3.2.1" escape-string-regexp: "npm:^1.0.5" supports-color: "npm:^5.3.0" - checksum: e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 languageName: node linkType: hard @@ -14549,7 +14549,7 @@ __metadata: dependencies: ansi-styles: "npm:^4.1.0" supports-color: "npm:^7.1.0" - checksum: ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 + checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 languageName: node linkType: hard @@ -14567,7 +14567,7 @@ __metadata: title-case: "npm:^3.0.3" upper-case: "npm:^2.0.2" upper-case-first: "npm:^2.0.2" - checksum: c2d5fda011b2430f9e503afdca5d8ed48b0e8ee96e38f5530193f8a503317c4a82e6b721c5ea8ef852a2534bdd3d1af25d76e0604b820cd3bc136cf9c179803e + checksum: 10c0/c2d5fda011b2430f9e503afdca5d8ed48b0e8ee96e38f5530193f8a503317c4a82e6b721c5ea8ef852a2534bdd3d1af25d76e0604b820cd3bc136cf9c179803e languageName: node linkType: hard @@ -14585,7 +14585,7 @@ __metadata: title-case: "npm:^3.0.3" upper-case: "npm:^2.0.2" upper-case-first: "npm:^2.0.2" - checksum: 0de81690de866aa8c477f8b5b08c6f9dbce4a078cffa5f014858f49fda548a9a6524b61f62f2940acce9f1fdcfeef3a7124090684e86e731f55d26c22713e2d7 + checksum: 10c0/0de81690de866aa8c477f8b5b08c6f9dbce4a078cffa5f014858f49fda548a9a6524b61f62f2940acce9f1fdcfeef3a7124090684e86e731f55d26c22713e2d7 languageName: node linkType: hard @@ -14605,35 +14605,35 @@ __metadata: sentence-case: "npm:^3.0.4" snake-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 + checksum: 10c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 languageName: node linkType: hard "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" - checksum: 57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e languageName: node linkType: hard "char-regex@npm:^2.0.0": version: 2.0.1 resolution: "char-regex@npm:2.0.1" - checksum: ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 + checksum: 10c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 languageName: node linkType: hard "chardet@npm:^0.7.0": version: 0.7.0 resolution: "chardet@npm:0.7.0" - checksum: 96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d languageName: node linkType: hard "charenc@npm:0.0.2": version: 0.0.2 resolution: "charenc@npm:0.0.2" - checksum: a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 + checksum: 10c0/a45ec39363a16799d0f9365c8dd0c78e711415113c6f14787a22462ef451f5013efae8a28f1c058f81fc01f2a6a16955f7a5fd0cd56247ce94a45349c89877d8 languageName: node linkType: hard @@ -14642,14 +14642,14 @@ __metadata: resolution: "check-error@npm:1.0.3" dependencies: get-func-name: "npm:^2.0.2" - checksum: 94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 + checksum: 10c0/94aa37a7315c0e8a83d0112b5bfb5a8624f7f0f81057c73e4707729cdd8077166c6aefb3d8e2b92c63ee130d4a2ff94bad46d547e12f3238cc1d78342a973841 languageName: node linkType: hard "check-more-types@npm:^2.24.0": version: 2.24.0 resolution: "check-more-types@npm:2.24.0" - checksum: 93fda2c32eb5f6cd1161a84a2f4107c0e00b40a851748516791dd9a0992b91bdf504e3bf6bf7673ce603ae620042e11ed4084d16d6d92b36818abc9c2e725520 + checksum: 10c0/93fda2c32eb5f6cd1161a84a2f4107c0e00b40a851748516791dd9a0992b91bdf504e3bf6bf7673ce603ae620042e11ed4084d16d6d92b36818abc9c2e725520 languageName: node linkType: hard @@ -14665,7 +14665,7 @@ __metadata: semver: "npm:^6.3.0" bin: check-node-version: bin.js - checksum: 7778e04d240710c64d952181d45c1efe21c2a032da529d8eafced5811652137bd24d53b0a850fac27cb75de8041f40fa268df66e8f57fbeeff82813215eefab7 + checksum: 10c0/7778e04d240710c64d952181d45c1efe21c2a032da529d8eafced5811652137bd24d53b0a850fac27cb75de8041f40fa268df66e8f57fbeeff82813215eefab7 languageName: node linkType: hard @@ -14679,7 +14679,7 @@ __metadata: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" domutils: "npm:^3.0.1" - checksum: 2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 + checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 languageName: node linkType: hard @@ -14694,7 +14694,7 @@ __metadata: htmlparser2: "npm:^8.0.1" parse5: "npm:^7.0.0" parse5-htmlparser2-tree-adapter: "npm:^7.0.0" - checksum: c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc + checksum: 10c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc languageName: node linkType: hard @@ -14708,7 +14708,7 @@ __metadata: "@chevrotain/utils": "npm:10.5.0" lodash: "npm:4.17.21" regexp-to-ast: "npm:0.5.0" - checksum: a67a8b9f326231e6e4bf42e0c82d5f6e0b69bcfe4266e406d644ee58d22f7cba63deb034973813d0f5761026328cd4928250136cde940e3ef238a1f020c7307a + checksum: 10c0/a67a8b9f326231e6e4bf42e0c82d5f6e0b69bcfe4266e406d644ee58d22f7cba63deb034973813d0f5761026328cd4928250136cde940e3ef238a1f020c7307a languageName: node linkType: hard @@ -14727,7 +14727,7 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: 1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 + checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 languageName: node linkType: hard @@ -14750,42 +14750,42 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: 5631cc00080224f9482cf5418dcbea111aec02fa8d81a8cfe37e47b9cf36089e071de52d503647e3a821a01426a40adc926ba899f657af86a51b8f8d4eef12a7 + checksum: 10c0/5631cc00080224f9482cf5418dcbea111aec02fa8d81a8cfe37e47b9cf36089e071de52d503647e3a821a01426a40adc926ba899f657af86a51b8f8d4eef12a7 languageName: node linkType: hard "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" - checksum: ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db + checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db languageName: node linkType: hard "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" - checksum: 594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 languageName: node linkType: hard "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" - checksum: 080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c + checksum: 10c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c languageName: node linkType: hard "ci-info@npm:4.0.0": version: 4.0.0 resolution: "ci-info@npm:4.0.0" - checksum: ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 + checksum: 10c0/ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 languageName: node linkType: hard "ci-info@npm:^3.2.0, ci-info@npm:^3.6.1": version: 3.9.0 resolution: "ci-info@npm:3.9.0" - checksum: 6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a languageName: node linkType: hard @@ -14795,14 +14795,14 @@ __metadata: dependencies: inherits: "npm:^2.0.1" safe-buffer: "npm:^5.0.1" - checksum: d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b + checksum: 10c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b languageName: node linkType: hard "cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.3": version: 1.2.3 resolution: "cjs-module-lexer@npm:1.2.3" - checksum: 0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab + checksum: 10c0/0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab languageName: node linkType: hard @@ -14814,7 +14814,7 @@ __metadata: define-property: "npm:^0.2.5" isobject: "npm:^3.0.0" static-extend: "npm:^0.1.1" - checksum: d44f4afc7a3e48dba4c2d3fada5f781a1adeeff371b875c3b578bc33815c6c29d5d06483c2abfd43a32d35b104b27b67bfa39c2e8a422fa858068bd756cfbd42 + checksum: 10c0/d44f4afc7a3e48dba4c2d3fada5f781a1adeeff371b875c3b578bc33815c6c29d5d06483c2abfd43a32d35b104b27b67bfa39c2e8a422fa858068bd756cfbd42 languageName: node linkType: hard @@ -14823,7 +14823,7 @@ __metadata: resolution: "clean-css@npm:4.2.4" dependencies: source-map: "npm:~0.6.0" - checksum: 0e41795fdc9d65e5e17a3b0016d90bf2a653e3a680829b5bcebdbab48604cfe36d96d8af6346338d2c2aca8aa9af024ac4fb752ac3eb5b71bef68a34a129b58a + checksum: 10c0/0e41795fdc9d65e5e17a3b0016d90bf2a653e3a680829b5bcebdbab48604cfe36d96d8af6346338d2c2aca8aa9af024ac4fb752ac3eb5b71bef68a34a129b58a languageName: node linkType: hard @@ -14832,21 +14832,21 @@ __metadata: resolution: "clean-css@npm:5.3.2" dependencies: source-map: "npm:~0.6.0" - checksum: 315e0e81306524bd2c1905fa6823bf7658be40799b78f446e5e6922808718d2b80266fb3e96842a06176fa683bc2c1a0d2827b08d154e2f9cf136d7bda909d33 + checksum: 10c0/315e0e81306524bd2c1905fa6823bf7658be40799b78f446e5e6922808718d2b80266fb3e96842a06176fa683bc2c1a0d2827b08d154e2f9cf136d7bda909d33 languageName: node linkType: hard "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" - checksum: 1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 languageName: node linkType: hard "cli-boxes@npm:^2.2.1": version: 2.2.1 resolution: "cli-boxes@npm:2.2.1" - checksum: 6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 + checksum: 10c0/6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 languageName: node linkType: hard @@ -14855,7 +14855,7 @@ __metadata: resolution: "cli-cursor@npm:3.1.0" dependencies: restore-cursor: "npm:^3.1.0" - checksum: 92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 languageName: node linkType: hard @@ -14864,21 +14864,21 @@ __metadata: resolution: "cli-cursor@npm:4.0.0" dependencies: restore-cursor: "npm:^4.0.0" - checksum: e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c + checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c languageName: node linkType: hard "cli-spinners@npm:2.6.1": version: 2.6.1 resolution: "cli-spinners@npm:2.6.1" - checksum: 6abcdfef59aa68e6b51376d87d257f9120a0a7120a39dd21633702d24797decb6dc747dff2217c88732710db892b5053c5c672d221b6c4d13bbcb5372e203596 + checksum: 10c0/6abcdfef59aa68e6b51376d87d257f9120a0a7120a39dd21633702d24797decb6dc747dff2217c88732710db892b5053c5c672d221b6c4d13bbcb5372e203596 languageName: node linkType: hard "cli-spinners@npm:^2.5.0, cli-spinners@npm:^2.9.0": version: 2.9.1 resolution: "cli-spinners@npm:2.9.1" - checksum: c9b1152bd387e5b76823bdee6f19079c4017994d352627216e5d3dab9220a8402514519ad96a0a12120b80752fead98d1e7a7a5f56ce32125f92778ef47bdd8c + checksum: 10c0/c9b1152bd387e5b76823bdee6f19079c4017994d352627216e5d3dab9220a8402514519ad96a0a12120b80752fead98d1e7a7a5f56ce32125f92778ef47bdd8c languageName: node linkType: hard @@ -14891,7 +14891,7 @@ __metadata: dependenciesMeta: "@colors/colors": optional: true - checksum: 39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c + checksum: 10c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c languageName: node linkType: hard @@ -14901,7 +14901,7 @@ __metadata: dependencies: slice-ansi: "npm:^3.0.0" string-width: "npm:^4.2.0" - checksum: dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 languageName: node linkType: hard @@ -14911,14 +14911,14 @@ __metadata: dependencies: slice-ansi: "npm:^5.0.0" string-width: "npm:^5.0.0" - checksum: a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c + checksum: 10c0/a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c languageName: node linkType: hard "cli-width@npm:^3.0.0": version: 3.0.0 resolution: "cli-width@npm:3.0.0" - checksum: 125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a languageName: node linkType: hard @@ -14929,7 +14929,7 @@ __metadata: string-width: "npm:^4.2.0" strip-ansi: "npm:^6.0.0" wrap-ansi: "npm:^6.2.0" - checksum: 35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 + checksum: 10c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 languageName: node linkType: hard @@ -14940,7 +14940,7 @@ __metadata: string-width: "npm:^4.2.0" strip-ansi: "npm:^6.0.0" wrap-ansi: "npm:^7.0.0" - checksum: 6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 + checksum: 10c0/6035f5daf7383470cef82b3d3db00bec70afb3423538c50394386ffbbab135e26c3689c41791f911fa71b62d13d3863c712fdd70f0fbdffd938a1e6fd09aac00 languageName: node linkType: hard @@ -14951,7 +14951,7 @@ __metadata: string-width: "npm:^4.2.0" strip-ansi: "npm:^6.0.1" wrap-ansi: "npm:^7.0.0" - checksum: 4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 languageName: node linkType: hard @@ -14962,7 +14962,7 @@ __metadata: is-plain-object: "npm:^2.0.4" kind-of: "npm:^6.0.2" shallow-clone: "npm:^3.0.0" - checksum: 637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 languageName: node linkType: hard @@ -14971,56 +14971,56 @@ __metadata: resolution: "clone-response@npm:1.0.3" dependencies: mimic-response: "npm:^1.0.0" - checksum: 06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 + checksum: 10c0/06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 languageName: node linkType: hard "clone@npm:^1.0.2": version: 1.0.4 resolution: "clone@npm:1.0.4" - checksum: 2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b languageName: node linkType: hard "cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0": version: 1.1.2 resolution: "cluster-key-slot@npm:1.1.2" - checksum: d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3 + checksum: 10c0/d7d39ca28a8786e9e801eeb8c770e3c3236a566625d7299a47bb71113fb2298ce1039596acb82590e598c52dbc9b1f088c8f587803e697cb58e1867a95ff94d3 languageName: node linkType: hard "cmd-shim@npm:6.0.1, cmd-shim@npm:^6.0.0": version: 6.0.1 resolution: "cmd-shim@npm:6.0.1" - checksum: fe8fd2ad79a30193fb6f439fe4104de3129e869c58eac507d2154db95ebfd45ddfbcec8f373ed9ba5d3036b85d963e8ef5d1d28754c160b117cb77c02e4528cb + checksum: 10c0/fe8fd2ad79a30193fb6f439fe4104de3129e869c58eac507d2154db95ebfd45ddfbcec8f373ed9ba5d3036b85d963e8ef5d1d28754c160b117cb77c02e4528cb languageName: node linkType: hard "co@npm:^4.6.0": version: 4.6.0 resolution: "co@npm:4.6.0" - checksum: c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 languageName: node linkType: hard "code-block-writer@npm:^11.0.0": version: 11.0.3 resolution: "code-block-writer@npm:11.0.3" - checksum: 12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 + checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 languageName: node linkType: hard "code-block-writer@npm:^12.0.0": version: 12.0.0 resolution: "code-block-writer@npm:12.0.0" - checksum: ced73cdc466bff968bba9e8e32340d88420d25a229b9269f7425a10a7c2c9a12ca702dcb601b2462b96472d354f021cf66e552179fcbe30c8f7ecd0173c5fa07 + checksum: 10c0/ced73cdc466bff968bba9e8e32340d88420d25a229b9269f7425a10a7c2c9a12ca702dcb601b2462b96472d354f021cf66e552179fcbe30c8f7ecd0173c5fa07 languageName: node linkType: hard "collect-v8-coverage@npm:^1.0.0": version: 1.0.2 resolution: "collect-v8-coverage@npm:1.0.2" - checksum: ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 languageName: node linkType: hard @@ -15030,7 +15030,7 @@ __metadata: dependencies: map-visit: "npm:^1.0.0" object-visit: "npm:^1.0.0" - checksum: add72a8d1c37cb90e53b1aaa2c31bf1989bfb733f0b02ce82c9fa6828c7a14358dba2e4f8e698c02f69e424aeccae1ffb39acdeaf872ade2f41369e84a2fcf8a + checksum: 10c0/add72a8d1c37cb90e53b1aaa2c31bf1989bfb733f0b02ce82c9fa6828c7a14358dba2e4f8e698c02f69e424aeccae1ffb39acdeaf872ade2f41369e84a2fcf8a languageName: node linkType: hard @@ -15039,7 +15039,7 @@ __metadata: resolution: "color-convert@npm:1.9.3" dependencies: color-name: "npm:1.1.3" - checksum: 5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c languageName: node linkType: hard @@ -15048,21 +15048,21 @@ __metadata: resolution: "color-convert@npm:2.0.1" dependencies: color-name: "npm:~1.1.4" - checksum: 37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 languageName: node linkType: hard "color-name@npm:1.1.3": version: 1.1.3 resolution: "color-name@npm:1.1.3" - checksum: 566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 languageName: node linkType: hard "color-name@npm:~1.1.4": version: 1.1.4 resolution: "color-name@npm:1.1.4" - checksum: a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 languageName: node linkType: hard @@ -15071,28 +15071,28 @@ __metadata: resolution: "color-support@npm:1.1.3" bin: color-support: bin.js - checksum: 8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 + checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 languageName: node linkType: hard "colord@npm:^2.9.1": version: 2.9.3 resolution: "colord@npm:2.9.3" - checksum: 9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 languageName: node linkType: hard "colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.16, colorette@npm:^2.0.19, colorette@npm:^2.0.20": version: 2.0.20 resolution: "colorette@npm:2.0.20" - checksum: e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 languageName: node linkType: hard "colors@npm:^1.4.0": version: 1.4.0 resolution: "colors@npm:1.4.0" - checksum: 9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb + checksum: 10c0/9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb languageName: node linkType: hard @@ -15102,7 +15102,7 @@ __metadata: dependencies: strip-ansi: "npm:^6.0.1" wcwidth: "npm:^1.0.0" - checksum: 25b90b59129331bbb8b0c838f8df69924349b83e8eab9549f431062a20a39094b8d744bb83265be38fd5d03140ce4bfbd85837c293f618925e83157ae9535f1d + checksum: 10c0/25b90b59129331bbb8b0c838f8df69924349b83e8eab9549f431062a20a39094b8d744bb83265be38fd5d03140ce4bfbd85837c293f618925e83157ae9535f1d languageName: node linkType: hard @@ -15111,91 +15111,91 @@ __metadata: resolution: "combined-stream@npm:1.0.8" dependencies: delayed-stream: "npm:~1.0.0" - checksum: 0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 languageName: node linkType: hard "commander@npm:11.1.0": version: 11.1.0 resolution: "commander@npm:11.1.0" - checksum: 13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 + checksum: 10c0/13cc6ac875e48780250f723fb81c1c1178d35c5decb1abb1b628b3177af08a8554e76b2c0f29de72d69eef7c864d12613272a71fabef8047922bc622ab75a179 languageName: node linkType: hard "commander@npm:^10.0.0, commander@npm:^10.0.1": version: 10.0.1 resolution: "commander@npm:10.0.1" - checksum: 53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 languageName: node linkType: hard "commander@npm:^2.19.0, commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" - checksum: 74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 languageName: node linkType: hard "commander@npm:^3.0.2": version: 3.0.2 resolution: "commander@npm:3.0.2" - checksum: 8a279b4bacde68f03664086260ccb623122d2bdae6f380a41c9e06b646e830372c30a4b88261238550e0ad69d53f7af8883cb705d8237fdd22947e84913b149c + checksum: 10c0/8a279b4bacde68f03664086260ccb623122d2bdae6f380a41c9e06b646e830372c30a4b88261238550e0ad69d53f7af8883cb705d8237fdd22947e84913b149c languageName: node linkType: hard "commander@npm:^4.0.1": version: 4.1.1 resolution: "commander@npm:4.1.1" - checksum: 84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab + checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab languageName: node linkType: hard "commander@npm:^6.1.0, commander@npm:^6.2.1": version: 6.2.1 resolution: "commander@npm:6.2.1" - checksum: 85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea languageName: node linkType: hard "commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" - checksum: 8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a languageName: node linkType: hard "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" - checksum: 8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 + checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 languageName: node linkType: hard "common-ancestor-path@npm:^1.0.1": version: 1.0.1 resolution: "common-ancestor-path@npm:1.0.1" - checksum: 390c08d2a67a7a106d39499c002d827d2874966d938012453fd7ca34cd306881e2b9d604f657fa7a8e6e4896d67f39ebc09bf1bfd8da8ff318e0fb7a8752c534 + checksum: 10c0/390c08d2a67a7a106d39499c002d827d2874966d938012453fd7ca34cd306881e2b9d604f657fa7a8e6e4896d67f39ebc09bf1bfd8da8ff318e0fb7a8752c534 languageName: node linkType: hard "common-path-prefix@npm:^3.0.0": version: 3.0.0 resolution: "common-path-prefix@npm:3.0.0" - checksum: c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb + checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb languageName: node linkType: hard "common-tags@npm:1.8.2, common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" - checksum: 23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 + checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 languageName: node linkType: hard "commondir@npm:^1.0.1": version: 1.0.1 resolution: "commondir@npm:1.0.1" - checksum: 33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 languageName: node linkType: hard @@ -15205,14 +15205,14 @@ __metadata: dependencies: array-ify: "npm:^1.0.0" dot-prop: "npm:^5.1.0" - checksum: 78bd4dd4ed311a79bd264c9e13c36ed564cde657f1390e699e0f04b8eee1fc06ffb8698ce2dfb5fbe7342d509579c82d4e248f08915b708f77f7b72234086cc3 + checksum: 10c0/78bd4dd4ed311a79bd264c9e13c36ed564cde657f1390e699e0f04b8eee1fc06ffb8698ce2dfb5fbe7342d509579c82d4e248f08915b708f77f7b72234086cc3 languageName: node linkType: hard "component-emitter@npm:^1.2.1": version: 1.3.0 resolution: "component-emitter@npm:1.3.0" - checksum: 68774a0a3754fb6c0ba53c2e88886dfbd0c773931066abb1d7fd1b0c893b2a838d8f088ab4dca1f18cc1a4fc2e6932019eba3ded2d931b5ba2241ce40e93a24f + checksum: 10c0/68774a0a3754fb6c0ba53c2e88886dfbd0c773931066abb1d7fd1b0c893b2a838d8f088ab4dca1f18cc1a4fc2e6932019eba3ded2d931b5ba2241ce40e93a24f languageName: node linkType: hard @@ -15224,7 +15224,7 @@ __metadata: crc32-stream: "npm:^5.0.0" normalize-path: "npm:^3.0.0" readable-stream: "npm:^3.6.0" - checksum: 1c604ac753b4ec643a807f3db545bf497d1e9c6f81e9132280c98d972b02bbeba087e7fb2d53f3043f9643a64a6140e9e39b94329040695d404b83a0c7f38fa2 + checksum: 10c0/1c604ac753b4ec643a807f3db545bf497d1e9c6f81e9132280c98d972b02bbeba087e7fb2d53f3043f9643a64a6140e9e39b94329040695d404b83a0c7f38fa2 languageName: node linkType: hard @@ -15233,7 +15233,7 @@ __metadata: resolution: "compressible@npm:2.0.18" dependencies: mime-db: "npm:>= 1.43.0 < 2" - checksum: 8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 + checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 languageName: node linkType: hard @@ -15248,14 +15248,14 @@ __metadata: on-headers: "npm:~1.0.2" safe-buffer: "npm:5.1.2" vary: "npm:~1.1.2" - checksum: 138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc languageName: node linkType: hard "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" - checksum: c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f languageName: node linkType: hard @@ -15267,7 +15267,7 @@ __metadata: inherits: "npm:^2.0.3" readable-stream: "npm:^2.2.2" typedarray: "npm:^0.0.6" - checksum: 2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 + checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 languageName: node linkType: hard @@ -15279,7 +15279,7 @@ __metadata: inherits: "npm:^2.0.3" readable-stream: "npm:^3.0.2" typedarray: "npm:^0.0.6" - checksum: 29565dd9198fe1d8cf57f6cc71527dbc6ad67e12e4ac9401feb389c53042b2dceedf47034cbe702dfc4fd8df3ae7e6bfeeebe732cc4fa2674e484c13f04c219a + checksum: 10c0/29565dd9198fe1d8cf57f6cc71527dbc6ad67e12e4ac9401feb389c53042b2dceedf47034cbe702dfc4fd8df3ae7e6bfeeebe732cc4fa2674e484c13f04c219a languageName: node linkType: hard @@ -15299,7 +15299,7 @@ __metadata: bin: conc: dist/bin/concurrently.js concurrently: dist/bin/concurrently.js - checksum: 0e9683196fe9c071d944345d21d8f34aa6c0cc50c0dd897e95619f2f1c9eb4871dca851b2569da17888235b7335b4c821ca19deed35bebcd9a131ee5d247f34c + checksum: 10c0/0e9683196fe9c071d944345d21d8f34aa6c0cc50c0dd897e95619f2f1c9eb4871dca851b2569da17888235b7335b4c821ca19deed35bebcd9a131ee5d247f34c languageName: node linkType: hard @@ -15310,7 +15310,7 @@ __metadata: extend-shallow: "npm:^2.0.1" is-whitespace: "npm:^0.3.0" kind-of: "npm:^3.0.2" - checksum: 19485db92a5d4658b50ab250626ece0cebe57f73af126b348604309894ed9a2b05f88f1802a090fd1897156eda0af69d8f14446bc62f978e0d048b5135e91694 + checksum: 10c0/19485db92a5d4658b50ab250626ece0cebe57f73af126b348604309894ed9a2b05f88f1802a090fd1897156eda0af69d8f14446bc62f978e0d048b5135e91694 languageName: node linkType: hard @@ -15320,7 +15320,7 @@ __metadata: dependencies: ini: "npm:^1.3.4" proto-list: "npm:~1.2.1" - checksum: 39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e + checksum: 10c0/39d1df18739d7088736cc75695e98d7087aea43646351b028dfabd5508d79cf6ef4c5bcd90471f52cd87ae470d1c5490c0a8c1a292fbe6ee9ff688061ea0963e languageName: node linkType: hard @@ -15334,28 +15334,28 @@ __metadata: unique-string: "npm:^1.0.0" write-file-atomic: "npm:^2.0.0" xdg-basedir: "npm:^3.0.0" - checksum: a68edffee893b1803a108c4083dee481967f7eec232f83499bc86973d93d1e2728c1ea98cb1a4c7c583bc172abbdf197888ba0b0c12640631792186aa233918b + checksum: 10c0/a68edffee893b1803a108c4083dee481967f7eec232f83499bc86973d93d1e2728c1ea98cb1a4c7c583bc172abbdf197888ba0b0c12640631792186aa233918b languageName: node linkType: hard "connect-history-api-fallback@npm:^2.0.0": version: 2.0.0 resolution: "connect-history-api-fallback@npm:2.0.0" - checksum: 90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 languageName: node linkType: hard "console-browserify@npm:^1.1.0": version: 1.2.0 resolution: "console-browserify@npm:1.2.0" - checksum: 89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 + checksum: 10c0/89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 languageName: node linkType: hard "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" - checksum: 7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 + checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 languageName: node linkType: hard @@ -15366,14 +15366,14 @@ __metadata: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" upper-case: "npm:^2.0.2" - checksum: 91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e + checksum: 10c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e languageName: node linkType: hard "constants-browserify@npm:^1.0.0": version: 1.0.0 resolution: "constants-browserify@npm:1.0.0" - checksum: ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 + checksum: 10c0/ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 languageName: node linkType: hard @@ -15382,14 +15382,14 @@ __metadata: resolution: "content-disposition@npm:0.5.4" dependencies: safe-buffer: "npm:5.2.1" - checksum: bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb languageName: node linkType: hard "content-type@npm:~1.0.4": version: 1.0.5 resolution: "content-type@npm:1.0.5" - checksum: b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af languageName: node linkType: hard @@ -15398,7 +15398,7 @@ __metadata: resolution: "conventional-changelog-angular@npm:7.0.0" dependencies: compare-func: "npm:^2.0.0" - checksum: 90e73e25e224059b02951b6703b5f8742dc2a82c1fea62163978e6735fd3ab04350897a8fc6f443ec6b672d6b66e28a0820e833e544a0101f38879e5e6289b7e + checksum: 10c0/90e73e25e224059b02951b6703b5f8742dc2a82c1fea62163978e6735fd3ab04350897a8fc6f443ec6b672d6b66e28a0820e833e544a0101f38879e5e6289b7e languageName: node linkType: hard @@ -15417,14 +15417,14 @@ __metadata: normalize-package-data: "npm:^3.0.3" read-pkg: "npm:^3.0.0" read-pkg-up: "npm:^3.0.0" - checksum: c026da415ea58346c167e58f8dd717592e92afc897aa604189a6d69f48b6943e7a656b2c83433810feea32dda117b0914a7f5860ed338a21f6ee9b0f56788b37 + checksum: 10c0/c026da415ea58346c167e58f8dd717592e92afc897aa604189a6d69f48b6943e7a656b2c83433810feea32dda117b0914a7f5860ed338a21f6ee9b0f56788b37 languageName: node linkType: hard "conventional-changelog-preset-loader@npm:^3.0.0": version: 3.0.0 resolution: "conventional-changelog-preset-loader@npm:3.0.0" - checksum: 5de23c4aa8b8526c3542fd5abe9758d56eed79821f32cc16d1fdf480cecc44855edbe4680113f229509dcaf4b97cc41e786ac8e3b0822b44fd9d0b98542ed0e0 + checksum: 10c0/5de23c4aa8b8526c3542fd5abe9758d56eed79821f32cc16d1fdf480cecc44855edbe4680113f229509dcaf4b97cc41e786ac8e3b0822b44fd9d0b98542ed0e0 languageName: node linkType: hard @@ -15441,7 +15441,7 @@ __metadata: split: "npm:^1.0.1" bin: conventional-changelog-writer: cli.js - checksum: 455e1e444f400c98a1b3e96b0392a46c317af9412220482b7db0e60ff2abea6a7a7ae5d8ddf9a9c965f7904d619030ba645b0dff0ae5d9f96613f13c27592688 + checksum: 10c0/455e1e444f400c98a1b3e96b0392a46c317af9412220482b7db0e60ff2abea6a7a7ae5d8ddf9a9c965f7904d619030ba645b0dff0ae5d9f96613f13c27592688 languageName: node linkType: hard @@ -15451,7 +15451,7 @@ __metadata: dependencies: lodash.ismatch: "npm:^4.4.0" modify-values: "npm:^1.0.1" - checksum: 9d43cf9029bf39b70b394c551846a57b6f0473028ba5628c38bd447672655cc27bb80ba502d9a7e41335f63ad62b754cb26579f3d4bae7398dfc092acbb32578 + checksum: 10c0/9d43cf9029bf39b70b394c551846a57b6f0473028ba5628c38bd447672655cc27bb80ba502d9a7e41335f63ad62b754cb26579f3d4bae7398dfc092acbb32578 languageName: node linkType: hard @@ -15465,7 +15465,7 @@ __metadata: split2: "npm:^3.2.2" bin: conventional-commits-parser: cli.js - checksum: 12e390cc80ad8a825c5775a329b95e11cf47a6df7b8a3875d375e28b8cb27c4f32955842ea73e4e357cff9757a6be99fdffe4fda87a23e9d8e73f983425537a0 + checksum: 10c0/12e390cc80ad8a825c5775a329b95e11cf47a6df7b8a3875d375e28b8cb27c4f32955842ea73e4e357cff9757a6be99fdffe4fda87a23e9d8e73f983425537a0 languageName: node linkType: hard @@ -15482,42 +15482,42 @@ __metadata: meow: "npm:^8.1.2" bin: conventional-recommended-bump: cli.js - checksum: ff751a256ddfbec62efd5a32de059b01659e945073793c6766143a8242864fd8099804a90bbf1e6a61928ade3d12292d6f66f721a113630de392d54eb7f0b0c3 + checksum: 10c0/ff751a256ddfbec62efd5a32de059b01659e945073793c6766143a8242864fd8099804a90bbf1e6a61928ade3d12292d6f66f721a113630de392d54eb7f0b0c3 languageName: node linkType: hard "convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" - checksum: 281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b languageName: node linkType: hard "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" - checksum: 8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b languageName: node linkType: hard "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" - checksum: b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 languageName: node linkType: hard "cookie@npm:0.5.0, cookie@npm:^0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" - checksum: c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d + checksum: 10c0/c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d languageName: node linkType: hard "cookie@npm:^0.4.2": version: 0.4.2 resolution: "cookie@npm:0.4.2" - checksum: beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 + checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 languageName: node linkType: hard @@ -15531,14 +15531,14 @@ __metadata: mkdirp: "npm:^0.5.1" rimraf: "npm:^2.5.4" run-queue: "npm:^1.0.0" - checksum: c2ce213cb27ee3df584d16eb6c9bfe99cfb531585007533c3e4c752521b4fbf0b2f7f90807d79c496683330808ecd9fdbd9ab9ddfa0913150b7f5097423348ce + checksum: 10c0/c2ce213cb27ee3df584d16eb6c9bfe99cfb531585007533c3e4c752521b4fbf0b2f7f90807d79c496683330808ecd9fdbd9ab9ddfa0913150b7f5097423348ce languageName: node linkType: hard "copy-descriptor@npm:^0.1.0": version: 0.1.1 resolution: "copy-descriptor@npm:0.1.1" - checksum: 161f6760b7348c941007a83df180588fe2f1283e0867cc027182734e0f26134e6cc02de09aa24a95dc267b2e2025b55659eef76c8019df27bc2d883033690181 + checksum: 10c0/161f6760b7348c941007a83df180588fe2f1283e0867cc027182734e0f26134e6cc02de09aa24a95dc267b2e2025b55659eef76c8019df27bc2d883033690181 languageName: node linkType: hard @@ -15554,7 +15554,7 @@ __metadata: serialize-javascript: "npm:^6.0.0" peerDependencies: webpack: ^5.1.0 - checksum: a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 + checksum: 10c0/a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 languageName: node linkType: hard @@ -15563,35 +15563,35 @@ __metadata: resolution: "core-js-compat@npm:3.35.1" dependencies: browserslist: "npm:^4.22.2" - checksum: c3b872e1f9703aa9554cce816207d85730da4703f1776c540b4da11bbbef6d9a1e6041625b5c1f58d2ada3d05f4a2b92897b7de5315c5ecd5d33d50dec86cca7 + checksum: 10c0/c3b872e1f9703aa9554cce816207d85730da4703f1776c540b4da11bbbef6d9a1e6041625b5c1f58d2ada3d05f4a2b92897b7de5315c5ecd5d33d50dec86cca7 languageName: node linkType: hard "core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": version: 3.31.1 resolution: "core-js-pure@npm:3.31.1" - checksum: 58e126c2fb3d2758f29f947edc9a561b367189d158f98bfdf6169a7fafbbafc61ae4a9c69df6ed48a7b3985727c60eead82b2072f66f5ca0d911b9b4c74cbb8c + checksum: 10c0/58e126c2fb3d2758f29f947edc9a561b367189d158f98bfdf6169a7fafbbafc61ae4a9c69df6ed48a7b3985727c60eead82b2072f66f5ca0d911b9b4c74cbb8c languageName: node linkType: hard "core-js@npm:3.35.1, core-js@npm:^3.27.2, core-js@npm:^3.30.2": version: 3.35.1 resolution: "core-js@npm:3.35.1" - checksum: ebc8e22c36d13bcf2140cbc1d8ad65d1b08192bff4c43ade70c72eac103cb4dcfbc521f2b1ad1c74881b0a4353e64986537893ae4f07888e49228340efa13ae6 + checksum: 10c0/ebc8e22c36d13bcf2140cbc1d8ad65d1b08192bff4c43ade70c72eac103cb4dcfbc521f2b1ad1c74881b0a4353e64986537893ae4f07888e49228340efa13ae6 languageName: node linkType: hard "core-util-is@npm:1.0.2": version: 1.0.2 resolution: "core-util-is@npm:1.0.2" - checksum: 980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 + checksum: 10c0/980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 languageName: node linkType: hard "core-util-is@npm:~1.0.0": version: 1.0.3 resolution: "core-util-is@npm:1.0.3" - checksum: 90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 languageName: node linkType: hard @@ -15603,7 +15603,7 @@ __metadata: js-yaml: "npm:^4.1.0" parse-json: "npm:^5.0.0" path-type: "npm:^4.0.0" - checksum: cea301202bb68373f9c8ccc77a6002aab1032f327dd1458e5932ee1a2f48919c881074d702cece91f18275673817872a0d3d00eb46f30a33c8f2009dbbac0e5c + checksum: 10c0/cea301202bb68373f9c8ccc77a6002aab1032f327dd1458e5932ee1a2f48919c881074d702cece91f18275673817872a0d3d00eb46f30a33c8f2009dbbac0e5c languageName: node linkType: hard @@ -15616,7 +15616,7 @@ __metadata: parse-json: "npm:^5.0.0" path-type: "npm:^4.0.0" yaml: "npm:^1.10.0" - checksum: b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 languageName: node linkType: hard @@ -15628,7 +15628,7 @@ __metadata: js-yaml: "npm:^4.1.0" parse-json: "npm:^5.0.0" path-type: "npm:^4.0.0" - checksum: 4180aa6d1881b75ba591b2fc04b022741a3a4b67e9e243c0eb8d169b6e1efbd3cdf7e8ca19243c0f2e53a9d59ac3eccd5cad5f95f487fcbf4e740f9e86745747 + checksum: 10c0/4180aa6d1881b75ba591b2fc04b022741a3a4b67e9e243c0eb8d169b6e1efbd3cdf7e8ca19243c0f2e53a9d59ac3eccd5cad5f95f487fcbf4e740f9e86745747 languageName: node linkType: hard @@ -15637,7 +15637,7 @@ __metadata: resolution: "crc-32@npm:1.2.2" bin: crc32: bin/crc32.njs - checksum: 11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 + checksum: 10c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 languageName: node linkType: hard @@ -15647,7 +15647,7 @@ __metadata: dependencies: crc-32: "npm:^1.2.0" readable-stream: "npm:^3.4.0" - checksum: bd6e6d49b76fd562eef3a4b7b64b1e551fb5dfca0a3b54fb7e59765c57468295b60755f85d3450fd61eee01dcca0974600157717cad8f356d513c28bac726a41 + checksum: 10c0/bd6e6d49b76fd562eef3a4b7b64b1e551fb5dfca0a3b54fb7e59765c57468295b60755f85d3450fd61eee01dcca0974600157717cad8f356d513c28bac726a41 languageName: node linkType: hard @@ -15657,7 +15657,7 @@ __metadata: dependencies: bn.js: "npm:^4.1.0" elliptic: "npm:^6.5.3" - checksum: 77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f languageName: node linkType: hard @@ -15670,7 +15670,7 @@ __metadata: md5.js: "npm:^1.3.4" ripemd160: "npm:^2.0.1" sha.js: "npm:^2.4.0" - checksum: d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 languageName: node linkType: hard @@ -15684,7 +15684,7 @@ __metadata: ripemd160: "npm:^2.0.0" safe-buffer: "npm:^5.0.1" sha.js: "npm:^2.4.8" - checksum: 24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 languageName: node linkType: hard @@ -15701,7 +15701,7 @@ __metadata: prompts: "npm:^2.0.1" bin: create-jest: bin/create-jest.js - checksum: e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f languageName: node linkType: hard @@ -15743,7 +15743,7 @@ __metadata: "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" - checksum: 157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 languageName: node linkType: hard @@ -15755,7 +15755,7 @@ __metadata: bin: cross-env: src/bin/cross-env.js cross-env-shell: src/bin/cross-env-shell.js - checksum: f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf + checksum: 10c0/f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf languageName: node linkType: hard @@ -15764,7 +15764,7 @@ __metadata: resolution: "cross-fetch@npm:3.1.8" dependencies: node-fetch: "npm:^2.6.12" - checksum: 4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af + checksum: 10c0/4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af languageName: node linkType: hard @@ -15773,7 +15773,7 @@ __metadata: resolution: "cross-inspect@npm:1.0.0" dependencies: tslib: "npm:^2.4.0" - checksum: 53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 + checksum: 10c0/53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 languageName: node linkType: hard @@ -15784,14 +15784,14 @@ __metadata: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: 5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 languageName: node linkType: hard "crypt@npm:0.0.2": version: 0.0.2 resolution: "crypt@npm:0.0.2" - checksum: adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 + checksum: 10c0/adbf263441dd801665d5425f044647533f39f4612544071b1471962209d235042fb703c27eea2795c7c53e1dfc242405173003f83cf4f4761a633d11f9653f18 languageName: node linkType: hard @@ -15810,21 +15810,21 @@ __metadata: public-encrypt: "npm:^4.0.0" randombytes: "npm:^2.0.0" randomfill: "npm:^1.0.3" - checksum: 0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 + checksum: 10c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 languageName: node linkType: hard "crypto-random-string@npm:^1.0.0": version: 1.0.0 resolution: "crypto-random-string@npm:1.0.0" - checksum: 0cb4dbbb895656919d1de11ba43829a3527edddb85a9c49c9d4c4eb783d3b03fc9f371cefee62c87082fd8758db2798a52a9cad48a7381826190d3c2cf858e4a + checksum: 10c0/0cb4dbbb895656919d1de11ba43829a3527edddb85a9c49c9d4c4eb783d3b03fc9f371cefee62c87082fd8758db2798a52a9cad48a7381826190d3c2cf858e4a languageName: node linkType: hard "crypto-random-string@npm:^2.0.0": version: 2.0.0 resolution: "crypto-random-string@npm:2.0.0" - checksum: 288589b2484fe787f9e146f56c4be90b940018f17af1b152e4dde12309042ff5a2bf69e949aab8b8ac253948381529cc6f3e5a2427b73643a71ff177fa122b37 + checksum: 10c0/288589b2484fe787f9e146f56c4be90b940018f17af1b152e4dde12309042ff5a2bf69e949aab8b8ac253948381529cc6f3e5a2427b73643a71ff177fa122b37 languageName: node linkType: hard @@ -15833,7 +15833,7 @@ __metadata: resolution: "css-declaration-sorter@npm:6.4.0" peerDependencies: postcss: ^8.0.9 - checksum: aef4d5927e576bae04349457be0607af44525cf5f4b28a91843c7b7f28fcbb302ba149385bb0e2172380556994e31680c5177b42d03502c417789b139e20cbc2 + checksum: 10c0/aef4d5927e576bae04349457be0607af44525cf5f4b28a91843c7b7f28fcbb302ba149385bb0e2172380556994e31680c5177b42d03502c417789b139e20cbc2 languageName: node linkType: hard @@ -15851,7 +15851,7 @@ __metadata: semver: "npm:^7.3.8" peerDependencies: webpack: ^5.0.0 - checksum: a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 + checksum: 10c0/a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 languageName: node linkType: hard @@ -15880,7 +15880,7 @@ __metadata: optional: true lightningcss: optional: true - checksum: 1792259e18f7c5ee25b6bbf60b38b64201747add83d1f751c8c654159b46ebacd0d1103d35f17d97197033e21e02d2ba4a4e9aa14c9c0d067b7c7653c721814e + checksum: 10c0/1792259e18f7c5ee25b6bbf60b38b64201747add83d1f751c8c654159b46ebacd0d1103d35f17d97197033e21e02d2ba4a4e9aa14c9c0d067b7c7653c721814e languageName: node linkType: hard @@ -15893,7 +15893,7 @@ __metadata: domhandler: "npm:^4.3.1" domutils: "npm:^2.8.0" nth-check: "npm:^2.0.1" - checksum: a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 + checksum: 10c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 languageName: node linkType: hard @@ -15906,7 +15906,7 @@ __metadata: domhandler: "npm:^5.0.2" domutils: "npm:^3.0.1" nth-check: "npm:^2.0.1" - checksum: 551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 + checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 languageName: node linkType: hard @@ -15916,7 +15916,7 @@ __metadata: dependencies: mdn-data: "npm:2.0.30" source-map-js: "npm:^1.0.1" - checksum: 6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 + checksum: 10c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 languageName: node linkType: hard @@ -15926,21 +15926,21 @@ __metadata: dependencies: mdn-data: "npm:2.0.28" source-map-js: "npm:^1.0.1" - checksum: 47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186 + checksum: 10c0/47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186 languageName: node linkType: hard "css-what@npm:^6.0.1, css-what@npm:^6.1.0": version: 6.1.0 resolution: "css-what@npm:6.1.0" - checksum: a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 languageName: node linkType: hard "css.escape@npm:^1.5.1": version: 1.5.1 resolution: "css.escape@npm:1.5.1" - checksum: 5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 languageName: node linkType: hard @@ -15949,7 +15949,7 @@ __metadata: resolution: "cssesc@npm:3.0.0" bin: cssesc: bin/cssesc - checksum: 6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 languageName: node linkType: hard @@ -15988,7 +15988,7 @@ __metadata: postcss-unique-selectors: "npm:^6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 401a8d0712cca6577df52cf4aac234ff4a946f0f51c0d09e7c518fff389706cff54d702ff22762e834b23401a89b836aef113e69cc66fa5dfa1f361bdd932495 + checksum: 10c0/401a8d0712cca6577df52cf4aac234ff4a946f0f51c0d09e7c518fff389706cff54d702ff22762e834b23401a89b836aef113e69cc66fa5dfa1f361bdd932495 languageName: node linkType: hard @@ -15997,7 +15997,7 @@ __metadata: resolution: "cssnano-utils@npm:4.0.0" peerDependencies: postcss: ^8.2.15 - checksum: ca5cb2be5ec8ea624c28f5f54c00a440557afd3c2b25cb568517db44d230833743f3db30729126efe4d7fc616a42718dd76255bbefcb7d3cc7e3ff5989d907b3 + checksum: 10c0/ca5cb2be5ec8ea624c28f5f54c00a440557afd3c2b25cb568517db44d230833743f3db30729126efe4d7fc616a42718dd76255bbefcb7d3cc7e3ff5989d907b3 languageName: node linkType: hard @@ -16009,7 +16009,7 @@ __metadata: lilconfig: "npm:^2.1.0" peerDependencies: postcss: ^8.2.15 - checksum: b73a3a257dd32201ce504cb34b08f1259c8a260b063f58d33e03283149d94ee2ba938d7f9beae1413f0f34e06828759575ade6ae95fa01d199f291e1d4f6d2c2 + checksum: 10c0/b73a3a257dd32201ce504cb34b08f1259c8a260b063f58d33e03283149d94ee2ba938d7f9beae1413f0f34e06828759575ade6ae95fa01d199f291e1d4f6d2c2 languageName: node linkType: hard @@ -16018,21 +16018,21 @@ __metadata: resolution: "csso@npm:5.0.5" dependencies: css-tree: "npm:~2.2.0" - checksum: ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b + checksum: 10c0/ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b languageName: node linkType: hard "cssom@npm:^0.5.0": version: 0.5.0 resolution: "cssom@npm:0.5.0" - checksum: 8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd + checksum: 10c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd languageName: node linkType: hard "cssom@npm:~0.3.6": version: 0.3.8 resolution: "cssom@npm:0.3.8" - checksum: d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 + checksum: 10c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 languageName: node linkType: hard @@ -16041,28 +16041,28 @@ __metadata: resolution: "cssstyle@npm:2.3.0" dependencies: cssom: "npm:~0.3.6" - checksum: 863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 + checksum: 10c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 languageName: node linkType: hard "csstype@npm:3.1.1": version: 3.1.1 resolution: "csstype@npm:3.1.1" - checksum: 7c8b8c5923049d84132581c13bae6e1faf999746fe3998ba5f3819a8e1cdc7512ace87b7d0a4a69f0f4b8ba11daf835d4f1390af23e09fc4f0baad52c084753a + checksum: 10c0/7c8b8c5923049d84132581c13bae6e1faf999746fe3998ba5f3819a8e1cdc7512ace87b7d0a4a69f0f4b8ba11daf835d4f1390af23e09fc4f0baad52c084753a languageName: node linkType: hard "csstype@npm:^3.0.2": version: 3.1.2 resolution: "csstype@npm:3.1.2" - checksum: 32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6 + checksum: 10c0/32c038af259897c807ac738d9eab16b3d86747c72b09d5c740978e06f067f9b7b1737e1b75e407c7ab1fe1543dc95f20e202b4786aeb1b8d3bdf5d5ce655e6c6 languageName: node linkType: hard "cyclist@npm:^1.0.1": version: 1.0.2 resolution: "cyclist@npm:1.0.2" - checksum: 163e2f7207180ccf2bb5a6ca8a7360469c13fad631509ef96de02397266b3a42089e2b2b51b97d3d8fdc4709d2fbe651c309670e5cc28b0ae445b1e5a34a98e2 + checksum: 10c0/163e2f7207180ccf2bb5a6ca8a7360469c13fad631509ef96de02397266b3a42089e2b2b51b97d3d8fdc4709d2fbe651c309670e5cc28b0ae445b1e5a34a98e2 languageName: node linkType: hard @@ -16073,14 +16073,14 @@ __metadata: chalk: "npm:4.1.2" peerDependencies: cypress: ">=8.0.0" - checksum: a523c0dac14c8c6a7297282e0dfd275f9bbcf242661932a449a5a2a02521886ceb70d420ed81d042a1d69bc62dc96209310225a9e54a2c44cf9c929dd2b8d7e4 + checksum: 10c0/a523c0dac14c8c6a7297282e0dfd275f9bbcf242661932a449a5a2a02521886ceb70d420ed81d042a1d69bc62dc96209310225a9e54a2c44cf9c929dd2b8d7e4 languageName: node linkType: hard "cypress-wait-until@npm:3.0.1": version: 3.0.1 resolution: "cypress-wait-until@npm:3.0.1" - checksum: 7a45ae6415f6642c089c2569bedd1bc9672581ace76d70f95bc86e1b72e1c838449a03328f952fc97023fd9ee037bdf91c07f790987f7ecfa0676128cb3dc3b9 + checksum: 10c0/7a45ae6415f6642c089c2569bedd1bc9672581ace76d70f95bc86e1b72e1c838449a03328f952fc97023fd9ee037bdf91c07f790987f7ecfa0676128cb3dc3b9 languageName: node linkType: hard @@ -16133,7 +16133,7 @@ __metadata: yauzl: "npm:^2.10.0" bin: cypress: bin/cypress - checksum: f89394d8d7a1978ff8d44506114273a3279bc679f3b2732caab4d2dfd317b97c4e8abb3e137109e9a986282fc4a3f925843907a3c6205f1b9b3ad30fb9380dd9 + checksum: 10c0/f89394d8d7a1978ff8d44506114273a3279bc679f3b2732caab4d2dfd317b97c4e8abb3e137109e9a986282fc4a3f925843907a3c6205f1b9b3ad30fb9380dd9 languageName: node linkType: hard @@ -16143,21 +16143,21 @@ __metadata: dependencies: es5-ext: "npm:^0.10.50" type: "npm:^1.0.1" - checksum: 1fedcb3b956a461f64d86b94b347441beff5cef8910b6ac4ec509a2c67eeaa7093660a98b26601ac91f91260238add73bdf25867a9c0cb783774642bc4c1523f + checksum: 10c0/1fedcb3b956a461f64d86b94b347441beff5cef8910b6ac4ec509a2c67eeaa7093660a98b26601ac91f91260238add73bdf25867a9c0cb783774642bc4c1523f languageName: node linkType: hard "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8" - checksum: 4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 languageName: node linkType: hard "dargs@npm:^7.0.0": version: 7.0.0 resolution: "dargs@npm:7.0.0" - checksum: ec7f6a8315a8fa2f8b12d39207615bdf62b4d01f631b96fbe536c8ad5469ab9ed710d55811e564d0d5c1d548fc8cb6cc70bf0939f2415790159f5a75e0f96c92 + checksum: 10c0/ec7f6a8315a8fa2f8b12d39207615bdf62b4d01f631b96fbe536c8ad5469ab9ed710d55811e564d0d5c1d548fc8cb6cc70bf0939f2415790159f5a75e0f96c92 languageName: node linkType: hard @@ -16166,21 +16166,21 @@ __metadata: resolution: "dashdash@npm:1.14.1" dependencies: assert-plus: "npm:^1.0.0" - checksum: 64589a15c5bd01fa41ff7007e0f2c6552c5ef2028075daa16b188a3721f4ba001841bf306dfc2eee6e2e6e7f76b38f5f17fb21fa847504192290ffa9e150118a + checksum: 10c0/64589a15c5bd01fa41ff7007e0f2c6552c5ef2028075daa16b188a3721f4ba001841bf306dfc2eee6e2e6e7f76b38f5f17fb21fa847504192290ffa9e150118a languageName: node linkType: hard "data-uri-to-buffer@npm:^2.0.0": version: 2.0.2 resolution: "data-uri-to-buffer@npm:2.0.2" - checksum: 341b6191ed65fa453e97a6d44db06082121ebc2ef3e6e096dfb6a1ebbc75e8be39d4199a5b4dba0f0efc43f2a3b2bcc276d85cf1407eba880eb09ebf17c3c31e + checksum: 10c0/341b6191ed65fa453e97a6d44db06082121ebc2ef3e6e096dfb6a1ebbc75e8be39d4199a5b4dba0f0efc43f2a3b2bcc276d85cf1407eba880eb09ebf17c3c31e languageName: node linkType: hard "data-uri-to-buffer@npm:^4.0.0": version: 4.0.1 resolution: "data-uri-to-buffer@npm:4.0.1" - checksum: 20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b + checksum: 10c0/20a6b93107597530d71d4cb285acee17f66bcdfc03fd81040921a81252f19db27588d87fc8fc69e1950c55cfb0bf8ae40d0e5e21d907230813eb5d5a7f9eb45b languageName: node linkType: hard @@ -16191,14 +16191,14 @@ __metadata: abab: "npm:^2.0.6" whatwg-mimetype: "npm:^3.0.0" whatwg-url: "npm:^11.0.0" - checksum: 051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 + checksum: 10c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 languageName: node linkType: hard "dataloader@npm:^2.2.2": version: 2.2.2 resolution: "dataloader@npm:2.2.2" - checksum: 125ec69f821478cf7c6b4360095db6cab939fe57876a0d2060c428091a8deee7152345189923b71a6afa694aaec463779f34b585317164016fd6f54f52cd94ba + checksum: 10c0/125ec69f821478cf7c6b4360095db6cab939fe57876a0d2060c428091a8deee7152345189923b71a6afa694aaec463779f34b585317164016fd6f54f52cd94ba languageName: node linkType: hard @@ -16207,28 +16207,28 @@ __metadata: resolution: "date-fns@npm:2.30.0" dependencies: "@babel/runtime": "npm:^7.21.0" - checksum: e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 + checksum: 10c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 languageName: node linkType: hard "dateformat@npm:^3.0.3": version: 3.0.3 resolution: "dateformat@npm:3.0.3" - checksum: 2effb8bef52ff912f87a05e4adbeacff46353e91313ad1ea9ed31412db26849f5a0fcc7e3ce36dbfb84fc6c881a986d5694f84838ad0da7000d5150693e78678 + checksum: 10c0/2effb8bef52ff912f87a05e4adbeacff46353e91313ad1ea9ed31412db26849f5a0fcc7e3ce36dbfb84fc6c881a986d5694f84838ad0da7000d5150693e78678 languageName: node linkType: hard "dayjs@npm:^1.10.4": version: 1.11.9 resolution: "dayjs@npm:1.11.9" - checksum: 1697892de0f4107083ec72451ba86c947df61d9a67f8c52da991c5f8e347781baccec5c4c42e81a99e63cf603389ed324723cd77ad1b6fbd04f0f34433334979 + checksum: 10c0/1697892de0f4107083ec72451ba86c947df61d9a67f8c52da991c5f8e347781baccec5c4c42e81a99e63cf603389ed324723cd77ad1b6fbd04f0f34433334979 languageName: node linkType: hard "debounce@npm:^1.2.0": version: 1.2.1 resolution: "debounce@npm:1.2.1" - checksum: 6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 + checksum: 10c0/6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 languageName: node linkType: hard @@ -16237,7 +16237,7 @@ __metadata: resolution: "debug@npm:2.6.9" dependencies: ms: "npm:2.0.0" - checksum: 121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 languageName: node linkType: hard @@ -16249,7 +16249,7 @@ __metadata: peerDependenciesMeta: supports-color: optional: true - checksum: cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 languageName: node linkType: hard @@ -16258,7 +16258,7 @@ __metadata: resolution: "debug@npm:3.2.7" dependencies: ms: "npm:^2.1.1" - checksum: 37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a languageName: node linkType: hard @@ -16268,21 +16268,21 @@ __metadata: dependencies: decamelize: "npm:^1.1.0" map-obj: "npm:^1.0.0" - checksum: 4ca385933127437658338c65fb9aead5f21b28d3dd3ccd7956eb29aab0953b5d3c047fbc207111672220c71ecf7a4d34f36c92851b7bbde6fca1a02c541bdd7d + checksum: 10c0/4ca385933127437658338c65fb9aead5f21b28d3dd3ccd7956eb29aab0953b5d3c047fbc207111672220c71ecf7a4d34f36c92851b7bbde6fca1a02c541bdd7d languageName: node linkType: hard "decamelize@npm:5.0.1, decamelize@npm:^5.0.0": version: 5.0.1 resolution: "decamelize@npm:5.0.1" - checksum: 3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3 + checksum: 10c0/3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3 languageName: node linkType: hard "decamelize@npm:^1.1.0, decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" - checksum: 85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 languageName: node linkType: hard @@ -16291,21 +16291,21 @@ __metadata: resolution: "decamelize@npm:2.0.0" dependencies: xregexp: "npm:4.0.0" - checksum: 7908c37fa2e20022cfbf425c03aebdc8dee3c57b6c64135bbf23007f40528dd2463b4fb28755ee5dec7be3aca4b1d136de962bea6a886518b27c558b0f3a8bb5 + checksum: 10c0/7908c37fa2e20022cfbf425c03aebdc8dee3c57b6c64135bbf23007f40528dd2463b4fb28755ee5dec7be3aca4b1d136de962bea6a886518b27c558b0f3a8bb5 languageName: node linkType: hard "decimal.js@npm:^10.4.2": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" - checksum: 6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee languageName: node linkType: hard "decode-uri-component@npm:^0.2.0": version: 0.2.2 resolution: "decode-uri-component@npm:0.2.2" - checksum: 1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 languageName: node linkType: hard @@ -16314,14 +16314,14 @@ __metadata: resolution: "decompress-response@npm:3.3.0" dependencies: mimic-response: "npm:^1.0.0" - checksum: 5ffaf1d744277fd51c68c94ddc3081cd011b10b7de06637cccc6ecba137d45304a09ba1a776dee1c47fccc60b4a056c4bc74468eeea798ff1f1fca0024b45c9d + checksum: 10c0/5ffaf1d744277fd51c68c94ddc3081cd011b10b7de06637cccc6ecba137d45304a09ba1a776dee1c47fccc60b4a056c4bc74468eeea798ff1f1fca0024b45c9d languageName: node linkType: hard "dedent@npm:0.7.0, dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" - checksum: 7c3aa00ddfe3e5fcd477958e156156a5137e3bb6ff1493ca05edff4decf29a90a057974cc77e75951f8eb801c1816cb45aea1f52d628cdd000b82b36ab839d1b + checksum: 10c0/7c3aa00ddfe3e5fcd477958e156156a5137e3bb6ff1493ca05edff4decf29a90a057974cc77e75951f8eb801c1816cb45aea1f52d628cdd000b82b36ab839d1b languageName: node linkType: hard @@ -16333,7 +16333,7 @@ __metadata: peerDependenciesMeta: babel-plugin-macros: optional: true - checksum: f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 + checksum: 10c0/f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 languageName: node linkType: hard @@ -16342,7 +16342,7 @@ __metadata: resolution: "deep-eql@npm:4.1.3" dependencies: type-detect: "npm:^4.0.0" - checksum: ff34e8605d8253e1bf9fe48056e02c6f347b81d9b5df1c6650a1b0f6f847b4a86453b16dc226b34f853ef14b626e85d04e081b022e20b00cd7d54f079ce9bbdd + checksum: 10c0/ff34e8605d8253e1bf9fe48056e02c6f347b81d9b5df1c6650a1b0f6f847b4a86453b16dc226b34f853ef14b626e85d04e081b022e20b00cd7d54f079ce9bbdd languageName: node linkType: hard @@ -16368,35 +16368,35 @@ __metadata: which-boxed-primitive: "npm:^1.0.2" which-collection: "npm:^1.0.1" which-typed-array: "npm:^1.1.9" - checksum: 9e32606f0e24ef4d6b100c68cadae81495c3638944e933afc4b8389b042e95c5fe1381492cf7a6d385bcbae564c9cfb7086f37f277e37521a632b008a6b208dc + checksum: 10c0/9e32606f0e24ef4d6b100c68cadae81495c3638944e933afc4b8389b042e95c5fe1381492cf7a6d385bcbae564c9cfb7086f37f277e37521a632b008a6b208dc languageName: node linkType: hard "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" - checksum: 1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 languageName: node linkType: hard "deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" - checksum: 7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c languageName: node linkType: hard "deepmerge@npm:4.2.2": version: 4.2.2 resolution: "deepmerge@npm:4.2.2" - checksum: d6136eee869057fea7a829aa2d10073ed49db5216e42a77cc737dd385334aab9b68dae22020a00c24c073d5f79cbbdd3f11b8d4fc87700d112ddaa0e1f968ef2 + checksum: 10c0/d6136eee869057fea7a829aa2d10073ed49db5216e42a77cc737dd385334aab9b68dae22020a00c24c073d5f79cbbdd3f11b8d4fc87700d112ddaa0e1f968ef2 languageName: node linkType: hard "deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2, deepmerge@npm:^4.3.1": version: 4.3.1 resolution: "deepmerge@npm:4.3.1" - checksum: e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 languageName: node linkType: hard @@ -16406,7 +16406,7 @@ __metadata: dependencies: bplist-parser: "npm:^0.2.0" untildify: "npm:^4.0.0" - checksum: 8db3ab882eb3e1e8b59d84c8641320e6c66d8eeb17eb4bb848b7dd549b1e6fd313988e4a13542e95fbaeff03f6e9dedc5ad191ad4df7996187753eb0d45c00b7 + checksum: 10c0/8db3ab882eb3e1e8b59d84c8641320e6c66d8eeb17eb4bb848b7dd549b1e6fd313988e4a13542e95fbaeff03f6e9dedc5ad191ad4df7996187753eb0d45c00b7 languageName: node linkType: hard @@ -16415,7 +16415,7 @@ __metadata: resolution: "default-gateway@npm:6.0.3" dependencies: execa: "npm:^5.0.0" - checksum: 5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba + checksum: 10c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba languageName: node linkType: hard @@ -16424,14 +16424,14 @@ __metadata: resolution: "defaults@npm:1.0.4" dependencies: clone: "npm:^1.0.2" - checksum: 9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a languageName: node linkType: hard "defer-to-connect@npm:^1.0.1": version: 1.1.3 resolution: "defer-to-connect@npm:1.1.3" - checksum: 9feb161bd7d21836fdff31eba79c2b11b7aaf844be58faf727121f8b0d9c2e82b494560df0903f41b52dd75027dc7c9455c11b3739f3202b28ca92b56c8f960e + checksum: 10c0/9feb161bd7d21836fdff31eba79c2b11b7aaf844be58faf727121f8b0d9c2e82b494560df0903f41b52dd75027dc7c9455c11b3739f3202b28ca92b56c8f960e languageName: node linkType: hard @@ -16442,14 +16442,14 @@ __metadata: get-intrinsic: "npm:^1.2.1" gopd: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" - checksum: 77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94 + checksum: 10c0/77ef6e0bceb515e05b5913ab635a84d537cee84f8a7c37c77fdcb31fc5b80f6dbe81b33375e4b67d96aa04e6a0d8d4ea099e431d83f089af8d93adfb584bcb94 languageName: node linkType: hard "define-lazy-prop@npm:^2.0.0": version: 2.0.0 resolution: "define-lazy-prop@npm:2.0.0" - checksum: db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 languageName: node linkType: hard @@ -16460,7 +16460,7 @@ __metadata: define-data-property: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" object-keys: "npm:^1.1.1" - checksum: 88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 languageName: node linkType: hard @@ -16469,7 +16469,7 @@ __metadata: resolution: "define-property@npm:0.2.5" dependencies: is-descriptor: "npm:^0.1.0" - checksum: 9986915c0893818dedc9ca23eaf41370667762fd83ad8aa4bf026a28563120dbaacebdfbfbf2b18d3b929026b9c6ee972df1dbf22de8fafb5fe6ef18361e4750 + checksum: 10c0/9986915c0893818dedc9ca23eaf41370667762fd83ad8aa4bf026a28563120dbaacebdfbfbf2b18d3b929026b9c6ee972df1dbf22de8fafb5fe6ef18361e4750 languageName: node linkType: hard @@ -16478,7 +16478,7 @@ __metadata: resolution: "define-property@npm:1.0.0" dependencies: is-descriptor: "npm:^1.0.0" - checksum: d7cf09db10d55df305f541694ed51dafc776ad9bb8a24428899c9f2d36b11ab38dce5527a81458d1b5e7c389f8cbe803b4abad6e91a0037a329d153b84fc975e + checksum: 10c0/d7cf09db10d55df305f541694ed51dafc776ad9bb8a24428899c9f2d36b11ab38dce5527a81458d1b5e7c389f8cbe803b4abad6e91a0037a329d153b84fc975e languageName: node linkType: hard @@ -16488,14 +16488,14 @@ __metadata: dependencies: is-descriptor: "npm:^1.0.2" isobject: "npm:^3.0.1" - checksum: f91a08ad008fa764172a2c072adc7312f10217ade89ddaea23018321c6d71b2b68b8c229141ed2064179404e345c537f1a2457c379824813695b51a6ad3e4969 + checksum: 10c0/f91a08ad008fa764172a2c072adc7312f10217ade89ddaea23018321c6d71b2b68b8c229141ed2064179404e345c537f1a2457c379824813695b51a6ad3e4969 languageName: node linkType: hard "defu@npm:^6.1.2": version: 6.1.2 resolution: "defu@npm:6.1.2" - checksum: ceb467f8f30d4000ae5300105904736113826a3d4124640b70e145b243d6c78c868de03634038d870e0855ff4cdfd17324a8caf7386229501a5bb776adb682f4 + checksum: 10c0/ceb467f8f30d4000ae5300105904736113826a3d4124640b70e145b243d6c78c868de03634038d870e0855ff4cdfd17324a8caf7386229501a5bb776adb682f4 languageName: node linkType: hard @@ -16511,42 +16511,42 @@ __metadata: p-map: "npm:^4.0.0" rimraf: "npm:^3.0.2" slash: "npm:^3.0.0" - checksum: 8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f + checksum: 10c0/8a095c5ccade42c867a60252914ae485ec90da243d735d1f63ec1e64c1cfbc2b8810ad69a29ab6326d159d4fddaa2f5bad067808c42072351ec458efff86708f languageName: node linkType: hard "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" - checksum: d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 languageName: node linkType: hard "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" - checksum: ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 languageName: node linkType: hard "denque@npm:^2.1.0": version: 2.1.0 resolution: "denque@npm:2.1.0" - checksum: f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363 + checksum: 10c0/f9ef81aa0af9c6c614a727cb3bd13c5d7db2af1abf9e6352045b86e85873e629690f6222f4edd49d10e4ccf8f078bbeec0794fafaf61b659c0589d0c511ec363 languageName: node linkType: hard "depd@npm:2.0.0, depd@npm:^2.0.0": version: 2.0.0 resolution: "depd@npm:2.0.0" - checksum: 58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c languageName: node linkType: hard "depd@npm:~1.1.2": version: 1.1.2 resolution: "depd@npm:1.1.2" - checksum: acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 languageName: node linkType: hard @@ -16587,28 +16587,28 @@ __metadata: depcruise-wrap-stream-in-html: bin/wrap-stream-in-html.mjs dependency-cruise: bin/dependency-cruise.mjs dependency-cruiser: bin/dependency-cruise.mjs - checksum: cee94b0e4a1375fc9a3e8df01d9bf3032cb3ca6406f24701753ab9ccc79282580c646141c0b6502bfe24e76f53b7796288c03a6575e569ee5b527e4aa76f9ba7 + checksum: 10c0/cee94b0e4a1375fc9a3e8df01d9bf3032cb3ca6406f24701753ab9ccc79282580c646141c0b6502bfe24e76f53b7796288c03a6575e569ee5b527e4aa76f9ba7 languageName: node linkType: hard "dependency-graph@npm:^0.11.0": version: 0.11.0 resolution: "dependency-graph@npm:0.11.0" - checksum: 9e6968d1534fdb502f7f3a25a3819b499f9d60f8389193950ed0b4d1618f1341b36b5d039f2cee256cfe10c9e8198ace16b271e370df06a93fac206e81602e7c + checksum: 10c0/9e6968d1534fdb502f7f3a25a3819b499f9d60f8389193950ed0b4d1618f1341b36b5d039f2cee256cfe10c9e8198ace16b271e370df06a93fac206e81602e7c languageName: node linkType: hard "deprecation@npm:^2.0.0, deprecation@npm:^2.3.1": version: 2.3.1 resolution: "deprecation@npm:2.3.1" - checksum: 23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 + checksum: 10c0/23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 languageName: node linkType: hard "dequal@npm:^2.0.2, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" - checksum: f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 languageName: node linkType: hard @@ -16618,28 +16618,28 @@ __metadata: dependencies: inherits: "npm:^2.0.1" minimalistic-assert: "npm:^1.0.0" - checksum: 671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 languageName: node linkType: hard "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" - checksum: bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 languageName: node linkType: hard "detect-indent@npm:^5.0.0": version: 5.0.0 resolution: "detect-indent@npm:5.0.0" - checksum: 58d985dd5b4d5e5aad6fe7d8ecc74538fa92c807c894794b8505569e45651bf01a38755b65d9d3d17e512239a26d3131837cbef43cf4226968d5abf175bbcc9d + checksum: 10c0/58d985dd5b4d5e5aad6fe7d8ecc74538fa92c807c894794b8505569e45651bf01a38755b65d9d3d17e512239a26d3131837cbef43cf4226968d5abf175bbcc9d languageName: node linkType: hard "detect-indent@npm:^6.0.0, detect-indent@npm:^6.1.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" - checksum: dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 + checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 languageName: node linkType: hard @@ -16648,35 +16648,35 @@ __metadata: resolution: "detect-libc@npm:1.0.3" bin: detect-libc: ./bin/detect-libc.js - checksum: 4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d languageName: node linkType: hard "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" - checksum: c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d languageName: node linkType: hard "detect-node-es@npm:^1.1.0": version: 1.1.0 resolution: "detect-node-es@npm:1.1.0" - checksum: e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe + checksum: 10c0/e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe languageName: node linkType: hard "detect-node@npm:2.0.4": version: 2.0.4 resolution: "detect-node@npm:2.0.4" - checksum: 51357b37b1b26afef72fa3fa70ae7aeb37346874a41802cd5e2c9a81400eeeeec04293b153e3b30bcb982997b0952b608bb7d1c08777325da4dd93bd25891e0a + checksum: 10c0/51357b37b1b26afef72fa3fa70ae7aeb37346874a41802cd5e2c9a81400eeeeec04293b153e3b30bcb982997b0952b608bb7d1c08777325da4dd93bd25891e0a languageName: node linkType: hard "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" - checksum: f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 languageName: node linkType: hard @@ -16685,7 +16685,7 @@ __metadata: resolution: "detect-package-manager@npm:2.0.1" dependencies: execa: "npm:^5.1.1" - checksum: 56ffd65228d1ff3ead5ea7f8ab951a517a29270de27510b790c9a8b77d4f36efbd61493e170ca77ee3dc13cbb5218583ce65b78ad14a59dc48565c9bcbbf3c71 + checksum: 10c0/56ffd65228d1ff3ead5ea7f8ab951a517a29270de27510b790c9a8b77d4f36efbd61493e170ca77ee3dc13cbb5218583ce65b78ad14a59dc48565c9bcbbf3c71 languageName: node linkType: hard @@ -16698,28 +16698,28 @@ __metadata: bin: detect: bin/detect-port.js detect-port: bin/detect-port.js - checksum: f2b204ad3a9f8e8b53fea35fcc97469f31a8e3e786a2f59fbc886397e33b5f130c5f964bf001b9a64d990047c3824f6a439308461ff19801df04ab48a754639e + checksum: 10c0/f2b204ad3a9f8e8b53fea35fcc97469f31a8e3e786a2f59fbc886397e33b5f130c5f964bf001b9a64d990047c3824f6a439308461ff19801df04ab48a754639e languageName: node linkType: hard "didyoumean@npm:^1.2.1": version: 1.2.2 resolution: "didyoumean@npm:1.2.2" - checksum: 95d0b53d23b851aacff56dfadb7ecfedce49da4232233baecfeecb7710248c4aa03f0aa8995062f0acafaf925adf8536bd7044a2e68316fd7d411477599bc27b + checksum: 10c0/95d0b53d23b851aacff56dfadb7ecfedce49da4232233baecfeecb7710248c4aa03f0aa8995062f0acafaf925adf8536bd7044a2e68316fd7d411477599bc27b languageName: node linkType: hard "diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" - checksum: 32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 languageName: node linkType: hard "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" - checksum: 81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 languageName: node linkType: hard @@ -16730,7 +16730,7 @@ __metadata: bn.js: "npm:^4.1.0" miller-rabin: "npm:^4.0.0" randombytes: "npm:^2.0.0" - checksum: ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf languageName: node linkType: hard @@ -16739,14 +16739,14 @@ __metadata: resolution: "dir-glob@npm:3.0.1" dependencies: path-type: "npm:^4.0.0" - checksum: dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c languageName: node linkType: hard "dns-equal@npm:^1.0.0": version: 1.0.0 resolution: "dns-equal@npm:1.0.0" - checksum: da966e5275ac50546e108af6bc29aaae2164d2ae96d60601b333c4a3aff91f50b6ca14929cf91f20a9cad1587b356323e300cea3ff6588a6a816988485f445f1 + checksum: 10c0/da966e5275ac50546e108af6bc29aaae2164d2ae96d60601b333c4a3aff91f50b6ca14929cf91f20a9cad1587b356323e300cea3ff6588a6a816988485f445f1 languageName: node linkType: hard @@ -16755,7 +16755,7 @@ __metadata: resolution: "dns-packet@npm:5.6.0" dependencies: "@leichtgewicht/ip-codec": "npm:^2.0.1" - checksum: b458d9c8c9f346fdf1d6e88998dc29815f1eac51c05061510b903b9b882d48cac95b132c5c33eeb330665a7c85227a922767a3eb72ce7be143964a1cce63b770 + checksum: 10c0/b458d9c8c9f346fdf1d6e88998dc29815f1eac51c05061510b903b9b882d48cac95b132c5c33eeb330665a7c85227a922767a3eb72ce7be143964a1cce63b770 languageName: node linkType: hard @@ -16764,7 +16764,7 @@ __metadata: resolution: "doctrine@npm:2.1.0" dependencies: esutils: "npm:^2.0.2" - checksum: b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac languageName: node linkType: hard @@ -16773,21 +16773,21 @@ __metadata: resolution: "doctrine@npm:3.0.0" dependencies: esutils: "npm:^2.0.2" - checksum: c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 languageName: node linkType: hard "dom-accessibility-api@npm:^0.5.9": version: 0.5.16 resolution: "dom-accessibility-api@npm:0.5.16" - checksum: b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 + checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 languageName: node linkType: hard "dom-accessibility-api@npm:^0.6.3": version: 0.6.3 resolution: "dom-accessibility-api@npm:0.6.3" - checksum: 10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 languageName: node linkType: hard @@ -16796,7 +16796,7 @@ __metadata: resolution: "dom-converter@npm:0.2.0" dependencies: utila: "npm:~0.4" - checksum: e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 + checksum: 10c0/e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 languageName: node linkType: hard @@ -16807,7 +16807,7 @@ __metadata: domelementtype: "npm:^2.0.1" domhandler: "npm:^4.2.0" entities: "npm:^2.0.0" - checksum: 67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 + checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 languageName: node linkType: hard @@ -16818,21 +16818,21 @@ __metadata: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.2" entities: "npm:^4.2.0" - checksum: d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 + checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 languageName: node linkType: hard "domain-browser@npm:^1.1.1": version: 1.2.0 resolution: "domain-browser@npm:1.2.0" - checksum: a955f482f4b4710fbd77c12a33e77548d63603c30c80f61a80519f27e3db1ba8530b914584cc9e9365d2038753d6b5bd1f4e6c81e432b007b0ec95b8b5e69b1b + checksum: 10c0/a955f482f4b4710fbd77c12a33e77548d63603c30c80f61a80519f27e3db1ba8530b914584cc9e9365d2038753d6b5bd1f4e6c81e432b007b0ec95b8b5e69b1b languageName: node linkType: hard "domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": version: 2.3.0 resolution: "domelementtype@npm:2.3.0" - checksum: 686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 languageName: node linkType: hard @@ -16841,7 +16841,7 @@ __metadata: resolution: "domexception@npm:4.0.0" dependencies: webidl-conversions: "npm:^7.0.0" - checksum: 774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 + checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 languageName: node linkType: hard @@ -16850,7 +16850,7 @@ __metadata: resolution: "domhandler@npm:3.3.0" dependencies: domelementtype: "npm:^2.0.1" - checksum: 376e6462a6144121f6ae50c9c1b8e0b22d2e0c68f9fb2ef6e57a5f4f9395854b1258cb638c58b171ee291359a5f41a4a57f403954db976484a59ffcee4c1e405 + checksum: 10c0/376e6462a6144121f6ae50c9c1b8e0b22d2e0c68f9fb2ef6e57a5f4f9395854b1258cb638c58b171ee291359a5f41a4a57f403954db976484a59ffcee4c1e405 languageName: node linkType: hard @@ -16859,7 +16859,7 @@ __metadata: resolution: "domhandler@npm:4.3.1" dependencies: domelementtype: "npm:^2.2.0" - checksum: 5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b + checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b languageName: node linkType: hard @@ -16868,7 +16868,7 @@ __metadata: resolution: "domhandler@npm:5.0.3" dependencies: domelementtype: "npm:^2.3.0" - checksum: bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a + checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a languageName: node linkType: hard @@ -16879,7 +16879,7 @@ __metadata: dom-serializer: "npm:^1.0.1" domelementtype: "npm:^2.2.0" domhandler: "npm:^4.2.0" - checksum: d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db + checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db languageName: node linkType: hard @@ -16890,7 +16890,7 @@ __metadata: dom-serializer: "npm:^2.0.0" domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - checksum: 342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 + checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 languageName: node linkType: hard @@ -16900,7 +16900,7 @@ __metadata: dependencies: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 languageName: node linkType: hard @@ -16909,7 +16909,7 @@ __metadata: resolution: "dot-prop@npm:4.2.1" dependencies: is-obj: "npm:^1.0.0" - checksum: ea0a98871ef4de0cce05325979517a43b70eb3a3671254fce78f2629c125d5ddb69cfdd5570ace4e41d9f02ced06374ea0444d1aeae70290a19f73e02093318e + checksum: 10c0/ea0a98871ef4de0cce05325979517a43b70eb3a3671254fce78f2629c125d5ddb69cfdd5570ace4e41d9f02ced06374ea0444d1aeae70290a19f73e02093318e languageName: node linkType: hard @@ -16918,7 +16918,7 @@ __metadata: resolution: "dot-prop@npm:5.3.0" dependencies: is-obj: "npm:^2.0.0" - checksum: 93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599 + checksum: 10c0/93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599 languageName: node linkType: hard @@ -16927,7 +16927,7 @@ __metadata: resolution: "dotenv-defaults@npm:5.0.2" dependencies: dotenv: "npm:^14.0.0" - checksum: 89fe77f8d97a183c701307dde7d328a973271b8ce04af3a48928250cd707a9f324b04a672a2ceb770db117a7724995c48e93edc438b3c9ce1207a67adee77098 + checksum: 10c0/89fe77f8d97a183c701307dde7d328a973271b8ce04af3a48928250cd707a9f324b04a672a2ceb770db117a7724995c48e93edc438b3c9ce1207a67adee77098 languageName: node linkType: hard @@ -16936,14 +16936,14 @@ __metadata: resolution: "dotenv-defaults@npm:2.0.2" dependencies: dotenv: "npm:^8.2.0" - checksum: 14b7b8f6c21a30404106384398728746e63405bfeabe47ef7aadd0e81de49986d5896a612e5b1acddf655af6472a24947b7b113aa3ef3270a2877afa9c5bd287 + checksum: 10c0/14b7b8f6c21a30404106384398728746e63405bfeabe47ef7aadd0e81de49986d5896a612e5b1acddf655af6472a24947b7b113aa3ef3270a2877afa9c5bd287 languageName: node linkType: hard "dotenv-expand@npm:^10.0.0, dotenv-expand@npm:~10.0.0": version: 10.0.0 resolution: "dotenv-expand@npm:10.0.0" - checksum: 298f5018e29cfdcb0b5f463ba8e8627749103fbcf6cf81c561119115754ed582deee37b49dfc7253028aaba875ab7aea5fa90e5dac88e511d009ab0e6677924e + checksum: 10c0/298f5018e29cfdcb0b5f463ba8e8627749103fbcf6cf81c561119115754ed582deee37b49dfc7253028aaba875ab7aea5fa90e5dac88e511d009ab0e6677924e languageName: node linkType: hard @@ -16954,49 +16954,49 @@ __metadata: dotenv-defaults: "npm:^2.0.2" peerDependencies: webpack: ^4 || ^5 - checksum: ddd12406e7b27a9f324110d34ddf6efdf386f8f6dbbf903cb74b63ed582c28262197eadca4e20cdee55d1e427cc4acd47c9dadd38bfc49219ae215d0b688c2e8 + checksum: 10c0/ddd12406e7b27a9f324110d34ddf6efdf386f8f6dbbf903cb74b63ed582c28262197eadca4e20cdee55d1e427cc4acd47c9dadd38bfc49219ae215d0b688c2e8 languageName: node linkType: hard "dotenv@npm:16.3.1, dotenv@npm:^16.0.0, dotenv@npm:~16.3.1": version: 16.3.1 resolution: "dotenv@npm:16.3.1" - checksum: b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 + checksum: 10c0/b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 languageName: node linkType: hard "dotenv@npm:^14.0.0": version: 14.3.2 resolution: "dotenv@npm:14.3.2" - checksum: cb428358aa3a8da735be727f8a9de56e148ddf97d84a75e528039dc90e55787688766e48204a50b8326ba1ebaa6e039584c1019dfc28fa144e68145d8cbe5946 + checksum: 10c0/cb428358aa3a8da735be727f8a9de56e148ddf97d84a75e528039dc90e55787688766e48204a50b8326ba1ebaa6e039584c1019dfc28fa144e68145d8cbe5946 languageName: node linkType: hard "dotenv@npm:^8.2.0": version: 8.6.0 resolution: "dotenv@npm:8.6.0" - checksum: 6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f + checksum: 10c0/6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f languageName: node linkType: hard "dset@npm:^3.1.1, dset@npm:^3.1.2": version: 3.1.2 resolution: "dset@npm:3.1.2" - checksum: a10d5f214ccd53e7d2e79215473256b74cb98fd3f20ad4f4684ab575b19bac71e5dda524d6febcf42854062e3f575a2dbfca4d53d2ffb9ae238eecdcc97a095b + checksum: 10c0/a10d5f214ccd53e7d2e79215473256b74cb98fd3f20ad4f4684ab575b19bac71e5dda524d6febcf42854062e3f575a2dbfca4d53d2ffb9ae238eecdcc97a095b languageName: node linkType: hard "duplexer3@npm:^0.1.4": version: 0.1.5 resolution: "duplexer3@npm:0.1.5" - checksum: 02195030d61c4d6a2a34eca71639f2ea5e05cb963490e5bd9527623c2ac7f50c33842a34d14777ea9cbfd9bc2be5a84065560b897d9fabb99346058a5b86ca98 + checksum: 10c0/02195030d61c4d6a2a34eca71639f2ea5e05cb963490e5bd9527623c2ac7f50c33842a34d14777ea9cbfd9bc2be5a84065560b897d9fabb99346058a5b86ca98 languageName: node linkType: hard "duplexer@npm:^0.1.1, duplexer@npm:^0.1.2, duplexer@npm:~0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" - checksum: c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 languageName: node linkType: hard @@ -17008,7 +17008,7 @@ __metadata: inherits: "npm:^2.0.1" readable-stream: "npm:^2.0.0" stream-shift: "npm:^1.0.0" - checksum: 59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3 + checksum: 10c0/59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3 languageName: node linkType: hard @@ -17020,14 +17020,14 @@ __metadata: inherits: "npm:^2.0.3" readable-stream: "npm:^3.1.1" stream-shift: "npm:^1.0.0" - checksum: cacd09d8f1c58f92f83e17dffc14ece50415b32753446ed92046236a27a9e73cb914cda495d955ea12e0e615381082a511f20e219f48a06e84675c9d6950675b + checksum: 10c0/cacd09d8f1c58f92f83e17dffc14ece50415b32753446ed92046236a27a9e73cb914cda495d955ea12e0e615381082a511f20e219f48a06e84675c9d6950675b languageName: node linkType: hard "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" - checksum: 26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 languageName: node linkType: hard @@ -17037,7 +17037,7 @@ __metadata: dependencies: jsbn: "npm:~0.1.0" safer-buffer: "npm:^2.1.0" - checksum: 6cf168bae1e2dad2e46561d9af9cbabfbf5ff592176ad4e9f0f41eaaf5fe5e10bb58147fe0a804de62b1ee9dad42c28810c88d652b21b6013c47ba8efa274ca1 + checksum: 10c0/6cf168bae1e2dad2e46561d9af9cbabfbf5ff592176ad4e9f0f41eaaf5fe5e10bb58147fe0a804de62b1ee9dad42c28810c88d652b21b6013c47ba8efa274ca1 languageName: node linkType: hard @@ -17046,7 +17046,7 @@ __metadata: resolution: "ecdsa-sig-formatter@npm:1.0.11" dependencies: safe-buffer: "npm:^5.0.1" - checksum: ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c + checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c languageName: node linkType: hard @@ -17060,14 +17060,14 @@ __metadata: semver: "npm:^7.5.3" bin: editorconfig: bin/editorconfig - checksum: ed6985959d7b34a56e1c09bef118758c81c969489b768d152c93689fce8403b0452462e934f665febaba3478eebc0fd41c0a36100783eaadf6d926c4abc87a3d + checksum: 10c0/ed6985959d7b34a56e1c09bef118758c81c969489b768d152c93689fce8403b0452462e934f665febaba3478eebc0fd41c0a36100783eaadf6d926c4abc87a3d languageName: node linkType: hard "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" - checksum: b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 languageName: node linkType: hard @@ -17078,14 +17078,14 @@ __metadata: jake: "npm:^10.8.5" bin: ejs: bin/cli.js - checksum: f0e249c79128810f5f6d5cbf347fc906d86bb9384263db0b2a9004aea649f2bc2d112736de5716c509c80afb4721c47281bd5b57c757d3b63f1bf5ac5f885893 + checksum: 10c0/f0e249c79128810f5f6d5cbf347fc906d86bb9384263db0b2a9004aea649f2bc2d112736de5716c509c80afb4721c47281bd5b57c757d3b63f1bf5ac5f885893 languageName: node linkType: hard "electron-to-chromium@npm:^1.4.648": version: 1.4.648 resolution: "electron-to-chromium@npm:1.4.648" - checksum: 9f9ab328744a9d593e170c46743c76b41052341176310d481ba184098cea2541d8e04a9bd309e1d77e6e9e010ee27a4f573b149f6f23404d239613816d1d072a + checksum: 10c0/9f9ab328744a9d593e170c46743c76b41052341176310d481ba184098cea2541d8e04a9bd309e1d77e6e9e010ee27a4f573b149f6f23404d239613816d1d072a languageName: node linkType: hard @@ -17100,49 +17100,49 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 + checksum: 10c0/5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 languageName: node linkType: hard "emittery@npm:^0.13.1": version: 0.13.1 resolution: "emittery@npm:0.13.1" - checksum: 1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 languageName: node linkType: hard "emoji-regex@npm:^10.2.1, emoji-regex@npm:^10.3.0": version: 10.3.0 resolution: "emoji-regex@npm:10.3.0" - checksum: b4838e8dcdceb44cf47f59abe352c25ff4fe7857acaf5fb51097c427f6f75b44d052eb907a7a3b86f86bc4eae3a93f5c2b7460abe79c407307e6212d65c91163 + checksum: 10c0/b4838e8dcdceb44cf47f59abe352c25ff4fe7857acaf5fb51097c427f6f75b44d052eb907a7a3b86f86bc4eae3a93f5c2b7460abe79c407307e6212d65c91163 languageName: node linkType: hard "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" - checksum: b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 languageName: node linkType: hard "emoji-regex@npm:^9.2.2": version: 9.2.2 resolution: "emoji-regex@npm:9.2.2" - checksum: af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 languageName: node linkType: hard "emojis-list@npm:^3.0.0": version: 3.0.0 resolution: "emojis-list@npm:3.0.0" - checksum: 7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b languageName: node linkType: hard "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" - checksum: f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec languageName: node linkType: hard @@ -17151,7 +17151,7 @@ __metadata: resolution: "encoding@npm:0.1.13" dependencies: iconv-lite: "npm:^0.6.2" - checksum: 36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 languageName: node linkType: hard @@ -17160,7 +17160,7 @@ __metadata: resolution: "end-of-stream@npm:1.4.4" dependencies: once: "npm:^1.4.0" - checksum: 870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 languageName: node linkType: hard @@ -17171,7 +17171,7 @@ __metadata: dedent: "npm:^0.7.0" fast-json-parse: "npm:^1.0.3" objectorarray: "npm:^1.0.5" - checksum: 8cd6dae45e693ae2b2cbff2384348d3a5e2a06cc0396dddca8165e46bd2fd8d5394d44d338ba653bbfce4aead90eca1ec1abe7203843c84155c645d283b6b884 + checksum: 10c0/8cd6dae45e693ae2b2cbff2384348d3a5e2a06cc0396dddca8165e46bd2fd8d5394d44d338ba653bbfce4aead90eca1ec1abe7203843c84155c645d283b6b884 languageName: node linkType: hard @@ -17181,7 +17181,7 @@ __metadata: dependencies: graceful-fs: "npm:^4.2.4" tapable: "npm:^2.2.0" - checksum: 69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a + checksum: 10c0/69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a languageName: node linkType: hard @@ -17192,7 +17192,7 @@ __metadata: graceful-fs: "npm:^4.1.2" memory-fs: "npm:^0.5.0" tapable: "npm:^1.0.0" - checksum: d95fc630606ea35bed21c4a029bbb1681919571a2d1d2011c7fc42a26a9e48ed3d74a89949ce331e1fd3229850a303e3218b887b92951330f16bdfbb93a10e64 + checksum: 10c0/d95fc630606ea35bed21c4a029bbb1681919571a2d1d2011c7fc42a26a9e48ed3d74a89949ce331e1fd3229850a303e3218b887b92951330f16bdfbb93a10e64 languageName: node linkType: hard @@ -17202,7 +17202,7 @@ __metadata: dependencies: ansi-colors: "npm:^4.1.1" strip-ansi: "npm:^6.0.1" - checksum: 43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 languageName: node linkType: hard @@ -17211,42 +17211,42 @@ __metadata: resolution: "enquirer@npm:2.3.6" dependencies: ansi-colors: "npm:^4.1.1" - checksum: 8e070e052c2c64326a2803db9084d21c8aaa8c688327f133bf65c4a712586beb126fd98c8a01cfb0433e82a4bd3b6262705c55a63e0f7fb91d06b9cedbde9a11 + checksum: 10c0/8e070e052c2c64326a2803db9084d21c8aaa8c688327f133bf65c4a712586beb126fd98c8a01cfb0433e82a4bd3b6262705c55a63e0f7fb91d06b9cedbde9a11 languageName: node linkType: hard "ent@npm:^2.2.0": version: 2.2.0 resolution: "ent@npm:2.2.0" - checksum: d12c504d93afb8b22551323f78f60f0a2660289cf2de2210bdd2fdb07ac204956da23510a7711bf48079aa0aa726e21724224de6c6289120ddcf27652b30cb17 + checksum: 10c0/d12c504d93afb8b22551323f78f60f0a2660289cf2de2210bdd2fdb07ac204956da23510a7711bf48079aa0aa726e21724224de6c6289120ddcf27652b30cb17 languageName: node linkType: hard "entities@npm:^2.0.0": version: 2.2.0 resolution: "entities@npm:2.2.0" - checksum: 7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 languageName: node linkType: hard "entities@npm:^4.2.0, entities@npm:^4.4.0": version: 4.5.0 resolution: "entities@npm:4.5.0" - checksum: 5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 languageName: node linkType: hard "entities@npm:~2.1.0": version: 2.1.0 resolution: "entities@npm:2.1.0" - checksum: dd96ed95f7e017b7fbbcdd39bd6dc3dea6638f747c00610b53f23ea461ac409af87670f313805d85854bfce04f96e17d83575f75b3b2920365d78678ccd2a405 + checksum: 10c0/dd96ed95f7e017b7fbbcdd39bd6dc3dea6638f747c00610b53f23ea461ac409af87670f313805d85854bfce04f96e17d83575f75b3b2920365d78678ccd2a405 languageName: node linkType: hard "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" - checksum: 285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 languageName: node linkType: hard @@ -17255,7 +17255,7 @@ __metadata: resolution: "envinfo@npm:7.11.0" bin: envinfo: dist/cli.js - checksum: 4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d + checksum: 10c0/4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d languageName: node linkType: hard @@ -17264,14 +17264,14 @@ __metadata: resolution: "envinfo@npm:7.8.1" bin: envinfo: dist/cli.js - checksum: 01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 + checksum: 10c0/01efe7fcf55d4b84a146bc638ef89a89a70b610957db64636ac7cc4247d627eeb1c808ed79d3cfbe3d4fed5e8ba3d61db79c1ca1a3fea9f38639561eefd68733 languageName: node linkType: hard "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" - checksum: b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 languageName: node linkType: hard @@ -17282,7 +17282,7 @@ __metadata: prr: "npm:~1.0.1" bin: errno: cli.js - checksum: 83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 + checksum: 10c0/83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 languageName: node linkType: hard @@ -17291,7 +17291,7 @@ __metadata: resolution: "error-ex@npm:1.3.2" dependencies: is-arrayish: "npm:^0.2.1" - checksum: ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce languageName: node linkType: hard @@ -17300,7 +17300,7 @@ __metadata: resolution: "error-stack-parser@npm:2.1.4" dependencies: stackframe: "npm:^1.3.4" - checksum: 7679b780043c98b01fc546725484e0cfd3071bf5c906bbe358722972f04abf4fc3f0a77988017665bab367f6ef3fc2d0185f7528f45966b83e7c99c02d5509b9 + checksum: 10c0/7679b780043c98b01fc546725484e0cfd3071bf5c906bbe358722972f04abf4fc3f0a77988017665bab367f6ef3fc2d0185f7528f45966b83e7c99c02d5509b9 languageName: node linkType: hard @@ -17347,14 +17347,14 @@ __metadata: typed-array-length: "npm:^1.0.4" unbox-primitive: "npm:^1.0.2" which-typed-array: "npm:^1.1.13" - checksum: da31ec43b1c8eb47ba8a17693cac143682a1078b6c3cd883ce0e2062f135f532e93d873694ef439670e1f6ca03195118f43567ba6f33fb0d6c7daae750090236 + checksum: 10c0/da31ec43b1c8eb47ba8a17693cac143682a1078b6c3cd883ce0e2062f135f532e93d873694ef439670e1f6ca03195118f43567ba6f33fb0d6c7daae750090236 languageName: node linkType: hard "es-array-method-boxes-properly@npm:^1.0.0": version: 1.0.0 resolution: "es-array-method-boxes-properly@npm:1.0.0" - checksum: 4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d languageName: node linkType: hard @@ -17371,7 +17371,7 @@ __metadata: is-string: "npm:^1.0.7" isarray: "npm:^2.0.5" stop-iteration-iterator: "npm:^1.0.0" - checksum: ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 languageName: node linkType: hard @@ -17393,14 +17393,14 @@ __metadata: internal-slot: "npm:^1.0.5" iterator.prototype: "npm:^1.1.2" safe-array-concat: "npm:^1.0.1" - checksum: b4c83f94bfe624260d5238092de3173989f76f1416b1d02c388aea3b2024174e5f5f0e864057311ac99790b57e836ca3545b6e77256b26066dac944519f5e6d6 + checksum: 10c0/b4c83f94bfe624260d5238092de3173989f76f1416b1d02c388aea3b2024174e5f5f0e864057311ac99790b57e836ca3545b6e77256b26066dac944519f5e6d6 languageName: node linkType: hard "es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.4.1": version: 1.4.1 resolution: "es-module-lexer@npm:1.4.1" - checksum: b7260a138668554d3f0ddcc728cb4b60c2fa463f15545cf155ecbdd5450a1348952d58298a7f48642e900ee579f21d7f5304b6b3c61b3d9fc2d4b2109b5a9dff + checksum: 10c0/b7260a138668554d3f0ddcc728cb4b60c2fa463f15545cf155ecbdd5450a1348952d58298a7f48642e900ee579f21d7f5304b6b3c61b3d9fc2d4b2109b5a9dff languageName: node linkType: hard @@ -17411,7 +17411,7 @@ __metadata: get-intrinsic: "npm:^1.1.3" has: "npm:^1.0.3" has-tostringtag: "npm:^1.0.0" - checksum: 9af096365e3861bb29755cc5f76f15f66a7eab0e83befca396129090c1d9737e54090278b8e5357e97b5f0a5b0459fca07c40c6740884c2659cbf90ef8e508cc + checksum: 10c0/9af096365e3861bb29755cc5f76f15f66a7eab0e83befca396129090c1d9737e54090278b8e5357e97b5f0a5b0459fca07c40c6740884c2659cbf90ef8e508cc languageName: node linkType: hard @@ -17420,7 +17420,7 @@ __metadata: resolution: "es-shim-unscopables@npm:1.0.0" dependencies: has: "npm:^1.0.3" - checksum: d54a66239fbd19535b3e50333913260394f14d2d7adb136a95396a13ca584bab400cf9cb2ffd9232f3fe2f0362540bd3a708240c493e46e13fe0b90cfcfedc3d + checksum: 10c0/d54a66239fbd19535b3e50333913260394f14d2d7adb136a95396a13ca584bab400cf9cb2ffd9232f3fe2f0362540bd3a708240c493e46e13fe0b90cfcfedc3d languageName: node linkType: hard @@ -17431,7 +17431,7 @@ __metadata: is-callable: "npm:^1.1.4" is-date-object: "npm:^1.0.1" is-symbol: "npm:^1.0.2" - checksum: 0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 languageName: node linkType: hard @@ -17442,7 +17442,7 @@ __metadata: es6-iterator: "npm:^2.0.3" es6-symbol: "npm:^3.1.3" next-tick: "npm:^1.1.0" - checksum: 72dfbec5e4bce24754be9f2c2a1c67c01de3fe000103c115f52891f6a51f44a59674c40a1f6bd2390fcd43987746dccb76efafea91c7bb6295bdca8d63ba3db4 + checksum: 10c0/72dfbec5e4bce24754be9f2c2a1c67c01de3fe000103c115f52891f6a51f44a59674c40a1f6bd2390fcd43987746dccb76efafea91c7bb6295bdca8d63ba3db4 languageName: node linkType: hard @@ -17453,7 +17453,7 @@ __metadata: d: "npm:1" es5-ext: "npm:^0.10.35" es6-symbol: "npm:^3.1.1" - checksum: 91f20b799dba28fb05bf623c31857fc1524a0f1c444903beccaf8929ad196c8c9ded233e5ac7214fc63a92b3f25b64b7f2737fcca8b1f92d2d96cf3ac902f5d8 + checksum: 10c0/91f20b799dba28fb05bf623c31857fc1524a0f1c444903beccaf8929ad196c8c9ded233e5ac7214fc63a92b3f25b64b7f2737fcca8b1f92d2d96cf3ac902f5d8 languageName: node linkType: hard @@ -17463,14 +17463,14 @@ __metadata: dependencies: d: "npm:^1.0.1" ext: "npm:^1.1.2" - checksum: 22982f815f00df553a89f4fb74c5048fed85df598482b4bd38dbd173174247949c72982a7d7132a58b147525398400e5f182db59b0916cb49f1e245fb0e22233 + checksum: 10c0/22982f815f00df553a89f4fb74c5048fed85df598482b4bd38dbd173174247949c72982a7d7132a58b147525398400e5f182db59b0916cb49f1e245fb0e22233 languageName: node linkType: hard "esbuild-plugin-alias@npm:^0.2.1": version: 0.2.1 resolution: "esbuild-plugin-alias@npm:0.2.1" - checksum: a67bc6bc2744fc8637f7321f00c1f00e4fae86c182662421738ebfabf3ad344967b9c667185c6c34d9edd5b289807d34bfdceef94620e94e0a45683534af69e0 + checksum: 10c0/a67bc6bc2744fc8637f7321f00c1f00e4fae86c182662421738ebfabf3ad344967b9c667185c6c34d9edd5b289807d34bfdceef94620e94e0a45683534af69e0 languageName: node linkType: hard @@ -17481,7 +17481,7 @@ __metadata: debug: "npm:^4.3.4" peerDependencies: esbuild: ">=0.12 <1" - checksum: 9ccd0573cb66018e4cce3c1416eed0f5f3794c7026ce469a94e2f8761335abed8e363fc8e8bb036ab9ad7e579bb4296b8568a04ae5626596c123576b0d9c9bde + checksum: 10c0/9ccd0573cb66018e4cce3c1416eed0f5f3794c7026ce469a94e2f8761335abed8e363fc8e8bb036ab9ad7e579bb4296b8568a04ae5626596c123576b0d9c9bde languageName: node linkType: hard @@ -17561,7 +17561,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 355f13fe91110155404b12b4e0eeb840aceddffb609e63ebd03bf039b9576db791d51fcd22992b155ad9249bcd9cab838e34577770cff974ecf1d245dcb1b16e + checksum: 10c0/355f13fe91110155404b12b4e0eeb840aceddffb609e63ebd03bf039b9576db791d51fcd22992b155ad9249bcd9cab838e34577770cff974ecf1d245dcb1b16e languageName: node linkType: hard @@ -17638,7 +17638,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 473b1d92842f50a303cf948a11ebd5f69581cd254d599dd9d62f9989858e0533f64e83b723b5e1398a5b488c0f5fd088795b4235f65ecaf4f007d4b79f04bc88 + checksum: 10c0/473b1d92842f50a303cf948a11ebd5f69581cd254d599dd9d62f9989858e0533f64e83b723b5e1398a5b488c0f5fd088795b4235f65ecaf4f007d4b79f04bc88 languageName: node linkType: hard @@ -17718,49 +17718,49 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 0fd913124089e26d30ec30f73b94d4ef9607935251df3253f869106980a5d4c78aa517738c8746abe6e933262e91a77d31427ce468ed8fc7fe498a20f7f92fbc + checksum: 10c0/0fd913124089e26d30ec30f73b94d4ef9607935251df3253f869106980a5d4c78aa517738c8746abe6e933262e91a77d31427ce468ed8fc7fe498a20f7f92fbc languageName: node linkType: hard "escalade@npm:^3.1.1": version: 3.1.1 resolution: "escalade@npm:3.1.1" - checksum: afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d + checksum: 10c0/afd02e6ca91ffa813e1108b5e7756566173d6bc0d1eb951cb44d6b21702ec17c1cf116cfe75d4a2b02e05acb0b808a7a9387d0d1ca5cf9c04ad03a8445c3e46d languageName: node linkType: hard "escape-goat@npm:^3.0.0": version: 3.0.0 resolution: "escape-goat@npm:3.0.0" - checksum: a2b470bbdb95ccbcd19390576993a2b75735457b1979275f4f0d6da86d2e932a2a12edd9270208e3090299a26df857da1f80555c37bb1bac6fa9135322253ca4 + checksum: 10c0/a2b470bbdb95ccbcd19390576993a2b75735457b1979275f4f0d6da86d2e932a2a12edd9270208e3090299a26df857da1f80555c37bb1bac6fa9135322253ca4 languageName: node linkType: hard "escape-html@npm:~1.0.3": version: 1.0.3 resolution: "escape-html@npm:1.0.3" - checksum: 524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 languageName: node linkType: hard "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" - checksum: a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 languageName: node linkType: hard "escape-string-regexp@npm:^2.0.0": version: 2.0.0 resolution: "escape-string-regexp@npm:2.0.0" - checksum: 2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 languageName: node linkType: hard "escape-string-regexp@npm:^4.0.0": version: 4.0.0 resolution: "escape-string-regexp@npm:4.0.0" - checksum: 9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 languageName: node linkType: hard @@ -17779,7 +17779,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: 30d337803e8f44308c90267bf6192399e4b44792497c77a7506b68ab802ba6a48ebbe1ce77b219aba13dfd2de5f5e1c267e35be1ed87b2a9c3315e8b283e302a + checksum: 10c0/30d337803e8f44308c90267bf6192399e4b44792497c77a7506b68ab802ba6a48ebbe1ce77b219aba13dfd2de5f5e1c267e35be1ed87b2a9c3315e8b283e302a languageName: node linkType: hard @@ -17797,7 +17797,7 @@ __metadata: bin: escodegen: bin/escodegen.js esgenerate: bin/esgenerate.js - checksum: e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 languageName: node linkType: hard @@ -17808,7 +17808,7 @@ __metadata: eslint: ">=7.0.0" bin: eslint-config-prettier: bin/cli.js - checksum: 19f8c497d9bdc111a17a61b25ded97217be3755bbc4714477dfe535ed539dddcaf42ef5cf8bb97908b058260cf89a3d7c565cb0be31096cbcd39f4c2fa5fe43c + checksum: 10c0/19f8c497d9bdc111a17a61b25ded97217be3755bbc4714477dfe535ed539dddcaf42ef5cf8bb97908b058260cf89a3d7c565cb0be31096cbcd39f4c2fa5fe43c languageName: node linkType: hard @@ -17821,7 +17821,7 @@ __metadata: peerDependencies: "@babel/core": ^7.0.0-0 babel-plugin-module-resolver: ^3.0.0 || ^4.0.0 || ^5.0.0 - checksum: 168fc793cc565cb8c27eb69c67872420980a6fcaac4a5b6951bdaa2700c0745c997d282b3c8cce313c423a12933a0f6fcc347a799398f3cf7f91e9e8a35d2d69 + checksum: 10c0/168fc793cc565cb8c27eb69c67872420980a6fcaac4a5b6951bdaa2700c0745c997d282b3c8cce313c423a12933a0f6fcc347a799398f3cf7f91e9e8a35d2d69 languageName: node linkType: hard @@ -17832,7 +17832,7 @@ __metadata: debug: "npm:^3.2.7" is-core-module: "npm:^2.13.0" resolve: "npm:^1.22.4" - checksum: 0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 languageName: node linkType: hard @@ -17844,7 +17844,7 @@ __metadata: peerDependenciesMeta: eslint: optional: true - checksum: c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df + checksum: 10c0/c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df languageName: node linkType: hard @@ -17855,7 +17855,7 @@ __metadata: eslint-rule-composer: "npm:^0.3.0" peerDependencies: eslint: ">=4.0.0" - checksum: c73e054c3cf3c5392e8ea7e56f41db3859b9d7c0dd347c28a5f08ae87889cc4879fcddfe227ee1ec075a9ab62e34e245d7e6e723180dfa36d07397c2cbb2c1a1 + checksum: 10c0/c73e054c3cf3c5392e8ea7e56f41db3859b9d7c0dd347c28a5f08ae87889cc4879fcddfe227ee1ec075a9ab62e34e245d7e6e723180dfa36d07397c2cbb2c1a1 languageName: node linkType: hard @@ -17882,7 +17882,7 @@ __metadata: tsconfig-paths: "npm:^3.14.2" peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733 + checksum: 10c0/761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733 languageName: node linkType: hard @@ -17895,7 +17895,7 @@ __metadata: requireindex: "npm:^1.2.0" peerDependencies: eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 - checksum: 4a9f17a1c3e537df6093cf82207121536a48565907d8173194339758f39d759db5f65fa6d632815eec36b4de2644fa2d721eae395c43943e2d4a76ecba9ebeb5 + checksum: 10c0/4a9f17a1c3e537df6093cf82207121536a48565907d8173194339758f39d759db5f65fa6d632815eec36b4de2644fa2d721eae395c43943e2d4a76ecba9ebeb5 languageName: node linkType: hard @@ -17921,7 +17921,7 @@ __metadata: object.fromentries: "npm:^2.0.7" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 + checksum: 10c0/199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 languageName: node linkType: hard @@ -17936,7 +17936,7 @@ __metadata: peerDependenciesMeta: eslint-config-prettier: optional: true - checksum: c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 + checksum: 10c0/c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 languageName: node linkType: hard @@ -17945,7 +17945,7 @@ __metadata: resolution: "eslint-plugin-react-hooks@npm:4.6.0" peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 58c7e10ea5792c33346fcf5cb4024e14837035ce412ff99c2dcb7c4f903dc9b17939078f80bfef826301ce326582c396c00e8e0ac9d10ac2cde2b42d33763c65 + checksum: 10c0/58c7e10ea5792c33346fcf5cb4024e14837035ce412ff99c2dcb7c4f903dc9b17939078f80bfef826301ce326582c396c00e8e0ac9d10ac2cde2b42d33763c65 languageName: node linkType: hard @@ -17971,14 +17971,14 @@ __metadata: string.prototype.matchall: "npm:^4.0.8" peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: f9b247861024bafc396c4bd3c9ac946604b3b23077251c98f23602aa22027a0c33a69157fd49564e4ff7f17b3678e5dc366a46c7ec42a09454d7cbce786d5001 + checksum: 10c0/f9b247861024bafc396c4bd3c9ac946604b3b23077251c98f23602aa22027a0c33a69157fd49564e4ff7f17b3678e5dc366a46c7ec42a09454d7cbce786d5001 languageName: node linkType: hard "eslint-rule-composer@npm:^0.3.0": version: 0.3.0 resolution: "eslint-rule-composer@npm:0.3.0" - checksum: 1f0c40d209e1503a955101a0dbba37e7fc67c8aaa47a5b9ae0b0fcbae7022c86e52b3df2b1b9ffd658e16cd80f31fff92e7222460a44d8251e61d49e0af79a07 + checksum: 10c0/1f0c40d209e1503a955101a0dbba37e7fc67c8aaa47a5b9ae0b0fcbae7022c86e52b3df2b1b9ffd658e16cd80f31fff92e7222460a44d8251e61d49e0af79a07 languageName: node linkType: hard @@ -17988,7 +17988,7 @@ __metadata: dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^4.1.1" - checksum: d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a languageName: node linkType: hard @@ -17998,7 +17998,7 @@ __metadata: dependencies: esrecurse: "npm:^4.1.0" estraverse: "npm:^4.1.1" - checksum: a2a3fe5845938ce7cfd2e658c309a9bb27a7f9ce94f0cc447ed5f9fa95b16451556d7e1db4c8e5d2aaa02d02850f5346d23091bbe94f7097412ce846504b4dcc + checksum: 10c0/a2a3fe5845938ce7cfd2e658c309a9bb27a7f9ce94f0cc447ed5f9fa95b16451556d7e1db4c8e5d2aaa02d02850f5346d23091bbe94f7097412ce846504b4dcc languageName: node linkType: hard @@ -18008,21 +18008,21 @@ __metadata: dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 languageName: node linkType: hard "eslint-visitor-keys@npm:^2.1.0": version: 2.1.0 resolution: "eslint-visitor-keys@npm:2.1.0" - checksum: 9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 languageName: node linkType: hard "eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" - checksum: 92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 languageName: node linkType: hard @@ -18070,7 +18070,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1 + checksum: 10c0/d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1 languageName: node linkType: hard @@ -18081,7 +18081,7 @@ __metadata: acorn: "npm:^8.9.0" acorn-jsx: "npm:^5.3.2" eslint-visitor-keys: "npm:^3.4.1" - checksum: 1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 languageName: node linkType: hard @@ -18091,7 +18091,7 @@ __metadata: bin: esparse: ./bin/esparse.js esvalidate: ./bin/esvalidate.js - checksum: ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 languageName: node linkType: hard @@ -18100,7 +18100,7 @@ __metadata: resolution: "esquery@npm:1.5.0" dependencies: estraverse: "npm:^5.1.0" - checksum: a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 languageName: node linkType: hard @@ -18109,21 +18109,21 @@ __metadata: resolution: "esrecurse@npm:4.3.0" dependencies: estraverse: "npm:^5.2.0" - checksum: 81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 languageName: node linkType: hard "estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": version: 4.3.0 resolution: "estraverse@npm:4.3.0" - checksum: 9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d languageName: node linkType: hard "estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": version: 5.3.0 resolution: "estraverse@npm:5.3.0" - checksum: 1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 languageName: node linkType: hard @@ -18132,21 +18132,21 @@ __metadata: resolution: "estree-walker@npm:3.0.3" dependencies: "@types/estree": "npm:^1.0.0" - checksum: c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d + checksum: 10c0/c12e3c2b2642d2bcae7d5aa495c60fa2f299160946535763969a1c83fc74518ffa9c2cd3a8b69ac56aea547df6a8aac25f729a342992ef0bbac5f1c73e78995d languageName: node linkType: hard "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" - checksum: 9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 languageName: node linkType: hard "etag@npm:~1.8.1": version: 1.8.1 resolution: "etag@npm:1.8.1" - checksum: 12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 languageName: node linkType: hard @@ -18161,49 +18161,49 @@ __metadata: split: "npm:0.3" stream-combiner: "npm:~0.0.4" through: "npm:~2.3.1" - checksum: c3ec4e1efc27ab3e73a98923f0a2fa9a19051b87068fea2f3d53d2e4e8c5cfdadf8c8a115b17f3d90b16a46432d396bad91b6e8d0cceb3e449be717a03b75209 + checksum: 10c0/c3ec4e1efc27ab3e73a98923f0a2fa9a19051b87068fea2f3d53d2e4e8c5cfdadf8c8a115b17f3d90b16a46432d396bad91b6e8d0cceb3e449be717a03b75209 languageName: node linkType: hard "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1" - checksum: 0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b languageName: node linkType: hard "eventemitter2@npm:6.4.7": version: 6.4.7 resolution: "eventemitter2@npm:6.4.7" - checksum: 35d8e9d51b919114eb072d33786274e1475db50efe00960c24c088ce4f76c07a826ccc927602724928efb3d8f09a7d8dd1fa79e410875118c0e9846959287f34 + checksum: 10c0/35d8e9d51b919114eb072d33786274e1475db50efe00960c24c088ce4f76c07a826ccc927602724928efb3d8f09a7d8dd1fa79e410875118c0e9846959287f34 languageName: node linkType: hard "eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" - checksum: 5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b languageName: node linkType: hard "eventemitter3@npm:^5.0.1": version: 5.0.1 resolution: "eventemitter3@npm:5.0.1" - checksum: 4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 languageName: node linkType: hard "events@npm:1.1.1": version: 1.1.1 resolution: "events@npm:1.1.1" - checksum: 29ba5a4c7d03dd2f4a2d3d9d4dfd8332225256f666cd69f490975d2eff8d7c73f1fb4872877b2c1f3b485e8fb42462153d65e5a21ea994eb928c3bec9e0c826e + checksum: 10c0/29ba5a4c7d03dd2f4a2d3d9d4dfd8332225256f666cd69f490975d2eff8d7c73f1fb4872877b2c1f3b485e8fb42462153d65e5a21ea994eb928c3bec9e0c826e languageName: node linkType: hard "events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" - checksum: d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 languageName: node linkType: hard @@ -18214,7 +18214,7 @@ __metadata: md5.js: "npm:^1.3.4" node-gyp: "npm:latest" safe-buffer: "npm:^5.1.1" - checksum: 77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 languageName: node linkType: hard @@ -18231,7 +18231,7 @@ __metadata: onetime: "npm:^5.1.0" signal-exit: "npm:^3.0.2" strip-final-newline: "npm:^2.0.0" - checksum: 02211601bb1c52710260edcc68fb84c3c030dc68bafc697c90ada3c52cc31375337de8c24826015b8382a58d63569ffd203b79c94fef217d65503e3e8d2c52ba + checksum: 10c0/02211601bb1c52710260edcc68fb84c3c030dc68bafc697c90ada3c52cc31375337de8c24826015b8382a58d63569ffd203b79c94fef217d65503e3e8d2c52ba languageName: node linkType: hard @@ -18248,7 +18248,7 @@ __metadata: onetime: "npm:^5.1.2" signal-exit: "npm:^3.0.3" strip-final-newline: "npm:^2.0.0" - checksum: e110add7ca0de63aea415385ebad7236c8de281d5d9a916dbd69f59009dac3d5d631e6252c2ea5d0258220b0d22acf25649b2caf05fa162eaa1401339fc69ba4 + checksum: 10c0/e110add7ca0de63aea415385ebad7236c8de281d5d9a916dbd69f59009dac3d5d631e6252c2ea5d0258220b0d22acf25649b2caf05fa162eaa1401339fc69ba4 languageName: node linkType: hard @@ -18265,7 +18265,7 @@ __metadata: onetime: "npm:^5.1.2" signal-exit: "npm:^3.0.3" strip-final-newline: "npm:^2.0.0" - checksum: c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f languageName: node linkType: hard @@ -18282,7 +18282,7 @@ __metadata: onetime: "npm:^6.0.0" signal-exit: "npm:^4.1.0" strip-final-newline: "npm:^3.0.0" - checksum: 2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af + checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af languageName: node linkType: hard @@ -18291,14 +18291,14 @@ __metadata: resolution: "executable@npm:4.1.1" dependencies: pify: "npm:^2.2.0" - checksum: c3cc5d2d2e3cdb1b7d7b0639ebd5566d113d7ada21cfa07f5226d55ba2a210320116720e07570ed5659ef2ec516bc00c8f0488dac75d112fd324ef25c2100173 + checksum: 10c0/c3cc5d2d2e3cdb1b7d7b0639ebd5566d113d7ada21cfa07f5226d55ba2a210320116720e07570ed5659ef2ec516bc00c8f0488dac75d112fd324ef25c2100173 languageName: node linkType: hard "exit@npm:^0.1.2": version: 0.1.2 resolution: "exit@npm:0.1.2" - checksum: 71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 languageName: node linkType: hard @@ -18313,7 +18313,7 @@ __metadata: regex-not: "npm:^1.0.0" snapdragon: "npm:^0.8.1" to-regex: "npm:^3.0.1" - checksum: 3e2fb95d2d7d7231486493fd65db913927b656b6fcdfcce41e139c0991a72204af619ad4acb1be75ed994ca49edb7995ef241dbf8cf44dc3c03d211328428a87 + checksum: 10c0/3e2fb95d2d7d7231486493fd65db913927b656b6fcdfcce41e139c0991a72204af619ad4acb1be75ed994ca49edb7995ef241dbf8cf44dc3c03d211328428a87 languageName: node linkType: hard @@ -18326,14 +18326,14 @@ __metadata: jest-matcher-utils: "npm:^29.7.0" jest-message-util: "npm:^29.7.0" jest-util: "npm:^29.7.0" - checksum: 2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 languageName: node linkType: hard "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" - checksum: 160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 languageName: node linkType: hard @@ -18372,7 +18372,7 @@ __metadata: type-is: "npm:~1.6.18" utils-merge: "npm:1.0.1" vary: "npm:~1.1.2" - checksum: 75af556306b9241bc1d7bdd40c9744b516c38ce50ae3210658efcbf96e3aed4ab83b3432f06215eae5610c123bc4136957dc06e50dfc50b7d4d775af56c4c59c + checksum: 10c0/75af556306b9241bc1d7bdd40c9744b516c38ce50ae3210658efcbf96e3aed4ab83b3432f06215eae5610c123bc4136957dc06e50dfc50b7d4d775af56c4c59c languageName: node linkType: hard @@ -18381,7 +18381,7 @@ __metadata: resolution: "ext@npm:1.7.0" dependencies: type: "npm:^2.7.2" - checksum: a8e5f34e12214e9eee3a4af3b5c9d05ba048f28996450975b369fc86e5d0ef13b6df0615f892f5396a9c65d616213c25ec5b0ad17ef42eac4a500512a19da6c7 + checksum: 10c0/a8e5f34e12214e9eee3a4af3b5c9d05ba048f28996450975b369fc86e5d0ef13b6df0615f892f5396a9c65d616213c25ec5b0ad17ef42eac4a500512a19da6c7 languageName: node linkType: hard @@ -18390,7 +18390,7 @@ __metadata: resolution: "extend-shallow@npm:2.0.1" dependencies: is-extendable: "npm:^0.1.0" - checksum: ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 + checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 languageName: node linkType: hard @@ -18400,14 +18400,14 @@ __metadata: dependencies: assign-symbols: "npm:^1.0.0" is-extendable: "npm:^1.0.1" - checksum: f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a + checksum: 10c0/f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a languageName: node linkType: hard "extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" - checksum: 73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 + checksum: 10c0/73bf6e27406e80aa3e85b0d1c4fd987261e628064e170ca781125c0b635a3dabad5e05adbf07595ea0cf1e6c5396cacb214af933da7cbaf24fe75ff14818e8f9 languageName: node linkType: hard @@ -18418,7 +18418,7 @@ __metadata: chardet: "npm:^0.7.0" iconv-lite: "npm:^0.4.24" tmp: "npm:^0.0.33" - checksum: c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 languageName: node linkType: hard @@ -18434,14 +18434,14 @@ __metadata: regex-not: "npm:^1.0.0" snapdragon: "npm:^0.8.1" to-regex: "npm:^3.0.1" - checksum: e1a891342e2010d046143016c6c03d58455c2c96c30bf5570ea07929984ee7d48fad86b363aee08f7a8a638f5c3a66906429b21ecb19bc8e90df56a001cd282c + checksum: 10c0/e1a891342e2010d046143016c6c03d58455c2c96c30bf5570ea07929984ee7d48fad86b363aee08f7a8a638f5c3a66906429b21ecb19bc8e90df56a001cd282c languageName: node linkType: hard "extract-files@npm:^11.0.0": version: 11.0.0 resolution: "extract-files@npm:11.0.0" - checksum: 7ac1cd693d081099d7c29f2b36aad199f92c5ea234c2016eb37ba213dddaefe74d54566f0675de5917d35cf98670183c2c9a0d96094727eb2c6dae02be7fc308 + checksum: 10c0/7ac1cd693d081099d7c29f2b36aad199f92c5ea234c2016eb37ba213dddaefe74d54566f0675de5917d35cf98670183c2c9a0d96094727eb2c6dae02be7fc308 languageName: node linkType: hard @@ -18458,7 +18458,7 @@ __metadata: optional: true bin: extract-zip: cli.js - checksum: 9afbd46854aa15a857ae0341a63a92743a7b89c8779102c3b4ffc207516b2019337353962309f85c66ee3d9092202a83cdc26dbf449a11981272038443974aee + checksum: 10c0/9afbd46854aa15a857ae0341a63a92743a7b89c8779102c3b4ffc207516b2019337353962309f85c66ee3d9092202a83cdc26dbf449a11981272038443974aee languageName: node linkType: hard @@ -18472,56 +18472,56 @@ __metadata: yauzl: "npm:^2.10.0" bin: extract-zip: cli.js - checksum: 333f1349ee678d47268315f264dbfcd7003747d25640441e186e87c66efd7129f171f1bcfe8ff1151a24da19d5f8602daff002ee24145dc65516bc9a8e40ee08 + checksum: 10c0/333f1349ee678d47268315f264dbfcd7003747d25640441e186e87c66efd7129f171f1bcfe8ff1151a24da19d5f8602daff002ee24145dc65516bc9a8e40ee08 languageName: node linkType: hard "extsprintf@npm:1.3.0": version: 1.3.0 resolution: "extsprintf@npm:1.3.0" - checksum: f75114a8388f0cbce68e277b6495dc3930db4dde1611072e4a140c24e204affd77320d004b947a132e9a3b97b8253017b2b62dce661975fb0adced707abf1ab5 + checksum: 10c0/f75114a8388f0cbce68e277b6495dc3930db4dde1611072e4a140c24e204affd77320d004b947a132e9a3b97b8253017b2b62dce661975fb0adced707abf1ab5 languageName: node linkType: hard "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" - checksum: e10e2769985d0e9b6c7199b053a9957589d02e84de42832c295798cb422a025e6d4a92e0259c1fb4d07090f5bfde6b55fd9f880ac5855bd61d775f8ab75a7ab0 + checksum: 10c0/e10e2769985d0e9b6c7199b053a9957589d02e84de42832c295798cb422a025e6d4a92e0259c1fb4d07090f5bfde6b55fd9f880ac5855bd61d775f8ab75a7ab0 languageName: node linkType: hard "fast-content-type-parse@npm:^1.1.0": version: 1.1.0 resolution: "fast-content-type-parse@npm:1.1.0" - checksum: 882bf990fa5d64be1825ce183818db43900ece0d7ef184cb9409bae8ed1001acbe536a657b1496382cb3e308e71ab39cc399bbdae70cba1745eecaeca4e55384 + checksum: 10c0/882bf990fa5d64be1825ce183818db43900ece0d7ef184cb9409bae8ed1001acbe536a657b1496382cb3e308e71ab39cc399bbdae70cba1745eecaeca4e55384 languageName: node linkType: hard "fast-decode-uri-component@npm:^1.0.1": version: 1.0.1 resolution: "fast-decode-uri-component@npm:1.0.1" - checksum: 039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 + checksum: 10c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 languageName: node linkType: hard "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" - checksum: 40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 languageName: node linkType: hard "fast-diff@npm:^1.1.2": version: 1.3.0 resolution: "fast-diff@npm:1.3.0" - checksum: 5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 languageName: node linkType: hard "fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": version: 1.3.2 resolution: "fast-fifo@npm:1.3.2" - checksum: d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c + checksum: 10c0/d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c languageName: node linkType: hard @@ -18534,21 +18534,21 @@ __metadata: glob-parent: "npm:^5.1.2" merge2: "npm:^1.3.0" micromatch: "npm:^4.0.4" - checksum: 42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 languageName: node linkType: hard "fast-json-parse@npm:1.0.3, fast-json-parse@npm:^1.0.3": version: 1.0.3 resolution: "fast-json-parse@npm:1.0.3" - checksum: 2c58c7a0f7f1725c9da1272839f9bee3ccc13b77672b18ab4ac470c707999bca39828cd7e79b87c73017f21c3ddff37992d03fa2fd2da124d9bd06c1d02c9b7e + checksum: 10c0/2c58c7a0f7f1725c9da1272839f9bee3ccc13b77672b18ab4ac470c707999bca39828cd7e79b87c73017f21c3ddff37992d03fa2fd2da124d9bd06c1d02c9b7e languageName: node linkType: hard "fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" - checksum: 7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b languageName: node linkType: hard @@ -18563,14 +18563,14 @@ __metadata: fast-uri: "npm:^2.1.0" json-schema-ref-resolver: "npm:^1.0.1" rfdc: "npm:^1.2.0" - checksum: 29d85a11aa828cf25fdb926b6c2f0f27d584c3c4c59430a9b1e941a4698e4297e87168b18ed5eb93cba2a7e7ef2bb2c2aca3f8090c9b178d7abbac339a2a1b42 + checksum: 10c0/29d85a11aa828cf25fdb926b6c2f0f27d584c3c4c59430a9b1e941a4698e4297e87168b18ed5eb93cba2a7e7ef2bb2c2aca3f8090c9b178d7abbac339a2a1b42 languageName: node linkType: hard "fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" - checksum: 111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 languageName: node linkType: hard @@ -18579,28 +18579,28 @@ __metadata: resolution: "fast-querystring@npm:1.1.2" dependencies: fast-decode-uri-component: "npm:^1.0.1" - checksum: e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3 + checksum: 10c0/e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3 languageName: node linkType: hard "fast-redact@npm:^3.1.1": version: 3.2.0 resolution: "fast-redact@npm:3.2.0" - checksum: a258a178ff8d2f760985be774e589a65df5a573ec12ebc1c72e090950aa860a2a6efb01f673d1be015e9f1170446903cd1ff402e8658b4a84635308dfcef164a + checksum: 10c0/a258a178ff8d2f760985be774e589a65df5a573ec12ebc1c72e090950aa860a2a6efb01f673d1be015e9f1170446903cd1ff402e8658b4a84635308dfcef164a languageName: node linkType: hard "fast-text-encoding@npm:^1.0.0, fast-text-encoding@npm:^1.0.3": version: 1.0.6 resolution: "fast-text-encoding@npm:1.0.6" - checksum: e1d0381bda229c92c7906f63308f3b9caca8c78b732768b1ee16f560089ed21bc159bbe1434138ccd3815931ec8d4785bdade1ad1c45accfdf27ac6606ac67d2 + checksum: 10c0/e1d0381bda229c92c7906f63308f3b9caca8c78b732768b1ee16f560089ed21bc159bbe1434138ccd3815931ec8d4785bdade1ad1c45accfdf27ac6606ac67d2 languageName: node linkType: hard "fast-uri@npm:^2.0.0, fast-uri@npm:^2.1.0, fast-uri@npm:^2.2.0": version: 2.2.0 resolution: "fast-uri@npm:2.2.0" - checksum: 2242463c97c187762a6212c59eb9d881832d15210f16923daf40ee66fba06a801f4da7d6f1010fb4da101069ec99aeb2700bbbb3eb89141b2701a54048989a9c + checksum: 10c0/2242463c97c187762a6212c59eb9d881832d15210f16923daf40ee66fba06a801f4da7d6f1010fb4da101069ec99aeb2700bbbb3eb89141b2701a54048989a9c languageName: node linkType: hard @@ -18609,21 +18609,21 @@ __metadata: resolution: "fast-url-parser@npm:1.1.3" dependencies: punycode: "npm:^1.3.2" - checksum: d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 + checksum: 10c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 languageName: node linkType: hard "fastest-levenshtein@npm:^1.0.12": version: 1.0.16 resolution: "fastest-levenshtein@npm:1.0.16" - checksum: 7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b languageName: node linkType: hard "fastify-plugin@npm:^4.0.0, fastify-plugin@npm:^4.5.0": version: 4.5.0 resolution: "fastify-plugin@npm:4.5.0" - checksum: 81a63886e038fffb5427df5104c53b0f5d8ad89e59a451110cf591a81372ead1986df59d95bd897d9bd742f78e20eb3ff50bda0115382e6359ed1616883b9a01 + checksum: 10c0/81a63886e038fffb5427df5104c53b0f5d8ad89e59a451110cf591a81372ead1986df59d95bd897d9bd742f78e20eb3ff50bda0115382e6359ed1616883b9a01 languageName: node linkType: hard @@ -18634,7 +18634,7 @@ __metadata: fastify-plugin: "npm:^4.0.0" raw-body: "npm:^2.5.1" secure-json-parse: "npm:^2.4.0" - checksum: 3260ab2fc3483a1668442b0a2b60a3f671948d8fc6e7a811ac782cfc28d31d8f064e7b3835ca21cb542d41c4a2a7bc84dd5c18ef0c38f90d7387dd6bbb83161d + checksum: 10c0/3260ab2fc3483a1668442b0a2b60a3f671948d8fc6e7a811ac782cfc28d31d8f064e7b3835ca21cb542d41c4a2a7bc84dd5c18ef0c38f90d7387dd6bbb83161d languageName: node linkType: hard @@ -18658,7 +18658,7 @@ __metadata: secure-json-parse: "npm:^2.7.0" semver: "npm:^7.5.4" toad-cache: "npm:^3.3.0" - checksum: 3ae9e8cdfd6ee4ada4b198f33cd6e152ae751f93e31ce628222e17249544ff34057118c8903d43cb1134c8b1614b7ce19768d8c9f3fde5befa6e236376d97f01 + checksum: 10c0/3ae9e8cdfd6ee4ada4b198f33cd6e152ae751f93e31ce628222e17249544ff34057118c8903d43cb1134c8b1614b7ce19768d8c9f3fde5befa6e236376d97f01 languageName: node linkType: hard @@ -18667,7 +18667,7 @@ __metadata: resolution: "fastq@npm:1.15.0" dependencies: reusify: "npm:^1.0.4" - checksum: 5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 + checksum: 10c0/5ce4f83afa5f88c9379e67906b4d31bc7694a30826d6cc8d0f0473c966929017fda65c2174b0ec89f064ede6ace6c67f8a4fe04cef42119b6a55b0d465554c24 languageName: node linkType: hard @@ -18676,7 +18676,7 @@ __metadata: resolution: "faye-websocket@npm:0.11.4" dependencies: websocket-driver: "npm:>=0.5.1" - checksum: c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 languageName: node linkType: hard @@ -18685,14 +18685,14 @@ __metadata: resolution: "fb-watchman@npm:2.0.2" dependencies: bser: "npm:2.1.1" - checksum: feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 languageName: node linkType: hard "fbjs-css-vars@npm:^1.0.0": version: 1.0.2 resolution: "fbjs-css-vars@npm:1.0.2" - checksum: dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f + checksum: 10c0/dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f languageName: node linkType: hard @@ -18707,7 +18707,7 @@ __metadata: promise: "npm:^7.1.1" setimmediate: "npm:^1.0.5" ua-parser-js: "npm:^1.0.35" - checksum: 66d0a2fc9a774f9066e35ac2ac4bf1245931d27f3ac287c7d47e6aa1fc152b243c2109743eb8f65341e025621fb51a12038fadb9fd8fda2e3ddae04ebab06f91 + checksum: 10c0/66d0a2fc9a774f9066e35ac2ac4bf1245931d27f3ac287c7d47e6aa1fc152b243c2109743eb8f65341e025621fb51a12038fadb9fd8fda2e3ddae04ebab06f91 languageName: node linkType: hard @@ -18716,7 +18716,7 @@ __metadata: resolution: "fd-slicer@npm:1.1.0" dependencies: pend: "npm:~1.2.0" - checksum: 304dd70270298e3ffe3bcc05e6f7ade2511acc278bc52d025f8918b48b6aa3b77f10361bddfadfe2a28163f7af7adbdce96f4d22c31b2f648ba2901f0c5fc20e + checksum: 10c0/304dd70270298e3ffe3bcc05e6f7ade2511acc278bc52d025f8918b48b6aa3b77f10361bddfadfe2a28163f7af7adbdce96f4d22c31b2f648ba2901f0c5fc20e languageName: node linkType: hard @@ -18726,21 +18726,21 @@ __metadata: dependencies: node-domexception: "npm:^1.0.0" web-streams-polyfill: "npm:^3.0.3" - checksum: 60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69 + checksum: 10c0/60054bf47bfa10fb0ba6cb7742acec2f37c1f56344f79a70bb8b1c48d77675927c720ff3191fa546410a0442c998d27ab05e9144c32d530d8a52fbe68f843b69 languageName: node linkType: hard "fetch-retry@npm:^5.0.2": version: 5.0.6 resolution: "fetch-retry@npm:5.0.6" - checksum: 349f50db631039630e915f70c763469cb696f3ac92ca6f63823109334a2bc62f63670b8c5a5c7e0195c39df517e60ef385cc5264f4c4904d0c6707d371fa8999 + checksum: 10c0/349f50db631039630e915f70c763469cb696f3ac92ca6f63823109334a2bc62f63670b8c5a5c7e0195c39df517e60ef385cc5264f4c4904d0c6707d371fa8999 languageName: node linkType: hard "figgy-pudding@npm:^3.5.1": version: 3.5.2 resolution: "figgy-pudding@npm:3.5.2" - checksum: b21c7adaeb8485ef3c50e056b5dc8c3a6461818343aba141e0d7927aad47a0cb9f1d207ffdf494c380cd60d7c848c46a5ce5cb06987d10e9226fcec419c8af90 + checksum: 10c0/b21c7adaeb8485ef3c50e056b5dc8c3a6461818343aba141e0d7927aad47a0cb9f1d207ffdf494c380cd60d7c848c46a5ce5cb06987d10e9226fcec419c8af90 languageName: node linkType: hard @@ -18749,7 +18749,7 @@ __metadata: resolution: "figures@npm:3.2.0" dependencies: escape-string-regexp: "npm:^1.0.5" - checksum: 9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 languageName: node linkType: hard @@ -18758,7 +18758,7 @@ __metadata: resolution: "figures@npm:6.0.1" dependencies: is-unicode-supported: "npm:^2.0.0" - checksum: 1bd53404e49b16dc4c930f8b01d0b97233e2f9e217365e7b7d15db1097d219a3db6739c17853affec034ef6461751b0e426f9fa82e2199b9340358e13eadca93 + checksum: 10c0/1bd53404e49b16dc4c930f8b01d0b97233e2f9e217365e7b7d15db1097d219a3db6739c17853affec034ef6461751b0e426f9fa82e2199b9340358e13eadca93 languageName: node linkType: hard @@ -18767,7 +18767,7 @@ __metadata: resolution: "file-entry-cache@npm:6.0.1" dependencies: flat-cache: "npm:^3.0.4" - checksum: 58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd languageName: node linkType: hard @@ -18777,14 +18777,14 @@ __metadata: dependencies: fs-extra: "npm:11.1.1" ramda: "npm:0.29.0" - checksum: 43de19f0db32e6546bb7abeecb1d6ea83c1eca23b38905c9415a29f6219cc9d6d87b0c1a6aca92c46a0f1bc276241a339f2f68b8aa0ca5c2eb64b6e1e3e4da01 + checksum: 10c0/43de19f0db32e6546bb7abeecb1d6ea83c1eca23b38905c9415a29f6219cc9d6d87b0c1a6aca92c46a0f1bc276241a339f2f68b8aa0ca5c2eb64b6e1e3e4da01 languageName: node linkType: hard "file-uri-to-path@npm:1.0.0": version: 1.0.0 resolution: "file-uri-to-path@npm:1.0.0" - checksum: 3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 languageName: node linkType: hard @@ -18793,7 +18793,7 @@ __metadata: resolution: "filelist@npm:1.0.4" dependencies: minimatch: "npm:^5.0.1" - checksum: 426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 + checksum: 10c0/426b1de3944a3d153b053f1c0ebfd02dccd0308a4f9e832ad220707a6d1f1b3c9784d6cadf6b2f68f09a57565f63ebc7bcdc913ccf8012d834f472c46e596f41 languageName: node linkType: hard @@ -18803,7 +18803,7 @@ __metadata: dependencies: is-object: "npm:~1.0.1" merge-descriptors: "npm:~1.0.0" - checksum: 39d01c6d1fbb7cbb05ccbfee5746afcb03dbaf8990f09f3b1b23a144d215c0b685b9db8f40b0e949627e49baa8e5530a1b7f9a2c50ef29acc715a91c45bbb6da + checksum: 10c0/39d01c6d1fbb7cbb05ccbfee5746afcb03dbaf8990f09f3b1b23a144d215c0b685b9db8f40b0e949627e49baa8e5530a1b7f9a2c50ef29acc715a91c45bbb6da languageName: node linkType: hard @@ -18815,7 +18815,7 @@ __metadata: is-number: "npm:^3.0.0" repeat-string: "npm:^1.6.1" to-regex-range: "npm:^2.1.0" - checksum: ccd57b7c43d7e28a1f8a60adfa3c401629c08e2f121565eece95e2386ebc64dedc7128d8c3448342aabf19db0c55a34f425f148400c7a7be9a606ba48749e089 + checksum: 10c0/ccd57b7c43d7e28a1f8a60adfa3c401629c08e2f121565eece95e2386ebc64dedc7128d8c3448342aabf19db0c55a34f425f148400c7a7be9a606ba48749e089 languageName: node linkType: hard @@ -18824,7 +18824,7 @@ __metadata: resolution: "fill-range@npm:7.0.1" dependencies: to-regex-range: "npm:^5.0.1" - checksum: 7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f languageName: node linkType: hard @@ -18839,7 +18839,7 @@ __metadata: parseurl: "npm:~1.3.3" statuses: "npm:2.0.1" unpipe: "npm:~1.0.0" - checksum: 64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 + checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 languageName: node linkType: hard @@ -18849,7 +18849,7 @@ __metadata: dependencies: json5: "npm:^0.5.1" path-exists: "npm:^3.0.0" - checksum: 6ea93bde7fd062fac87f27789aa77142de87dd023a5a60ceb7c91f65c7fab967a57c0a410ef8c51b8e2a924194867ab2e901ff35a7da7b9db5a94150652385a3 + checksum: 10c0/6ea93bde7fd062fac87f27789aa77142de87dd023a5a60ceb7c91f65c7fab967a57c0a410ef8c51b8e2a924194867ab2e901ff35a7da7b9db5a94150652385a3 languageName: node linkType: hard @@ -18859,7 +18859,7 @@ __metadata: dependencies: json5: "npm:^2.1.1" path-exists: "npm:^4.0.0" - checksum: 4d841cf74f0e17da20c4d52d520831e1ccf42eaa99570c07ea5948adabc14a0d1388dea690efdf66c007de8c4c61629458c11822c88ccc84d855d77668fa5247 + checksum: 10c0/4d841cf74f0e17da20c4d52d520831e1ccf42eaa99570c07ea5948adabc14a0d1388dea690efdf66c007de8c4c61629458c11822c88ccc84d855d77668fa5247 languageName: node linkType: hard @@ -18870,7 +18870,7 @@ __metadata: commondir: "npm:^1.0.1" make-dir: "npm:^2.0.0" pkg-dir: "npm:^3.0.0" - checksum: 556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb + checksum: 10c0/556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb languageName: node linkType: hard @@ -18881,7 +18881,7 @@ __metadata: commondir: "npm:^1.0.1" make-dir: "npm:^3.0.2" pkg-dir: "npm:^4.1.0" - checksum: 92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 languageName: node linkType: hard @@ -18891,7 +18891,7 @@ __metadata: dependencies: common-path-prefix: "npm:^3.0.0" pkg-dir: "npm:^7.0.0" - checksum: 0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + checksum: 10c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff languageName: node linkType: hard @@ -18902,7 +18902,7 @@ __metadata: fast-deep-equal: "npm:^3.1.3" fast-querystring: "npm:^1.0.0" safe-regex2: "npm:^2.0.0" - checksum: 6b4fef5f3a21a73c5428337a02ce2f90af055e3fade6f57f3444a76d7f58a43891aba26597014ff02f9fd9071abfdd32b92ff2435aadaf96dd2316920c456f6e + checksum: 10c0/6b4fef5f3a21a73c5428337a02ce2f90af055e3fade6f57f3444a76d7f58a43891aba26597014ff02f9fd9071abfdd32b92ff2435aadaf96dd2316920c456f6e languageName: node linkType: hard @@ -18911,7 +18911,7 @@ __metadata: resolution: "find-up@npm:2.1.0" dependencies: locate-path: "npm:^2.0.0" - checksum: c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 + checksum: 10c0/c080875c9fe28eb1962f35cbe83c683796a0321899f1eed31a37577800055539815de13d53495049697d3ba313013344f843bb9401dd337a1b832be5edfc6840 languageName: node linkType: hard @@ -18920,7 +18920,7 @@ __metadata: resolution: "find-up@npm:3.0.0" dependencies: locate-path: "npm:^3.0.0" - checksum: 2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 languageName: node linkType: hard @@ -18930,7 +18930,7 @@ __metadata: dependencies: locate-path: "npm:^5.0.0" path-exists: "npm:^4.0.0" - checksum: 0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 languageName: node linkType: hard @@ -18940,7 +18940,7 @@ __metadata: dependencies: locate-path: "npm:^6.0.0" path-exists: "npm:^4.0.0" - checksum: 062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a languageName: node linkType: hard @@ -18950,7 +18950,7 @@ __metadata: dependencies: locate-path: "npm:^7.1.0" path-exists: "npm:^5.0.0" - checksum: 07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 languageName: node linkType: hard @@ -18973,7 +18973,7 @@ __metadata: optional: true "@google-cloud/storage": optional: true - checksum: a8dfd80b841ff989f20986b3447fba5a6a0d664447b5ef041c2f36b3d93d20539e0ecc5d4eb0faaa5cbfe819a1ee820a2560eaea1e3c36eea07b2936d3a642af + checksum: 10c0/a8dfd80b841ff989f20986b3447fba5a6a0d664447b5ef041c2f36b3d93d20539e0ecc5d4eb0faaa5cbfe819a1ee820a2560eaea1e3c36eea07b2936d3a642af languageName: node linkType: hard @@ -19007,7 +19007,7 @@ __metadata: "@firebase/storage": "npm:0.12.0" "@firebase/storage-compat": "npm:0.3.3" "@firebase/util": "npm:1.9.3" - checksum: 7d114fb940579be91248afb0717e7cd74c8f460ab52ce386ae4dcea7e30cb25466cffdd507fd7b8c1c212be50a4eb694763f26482f419d3091c85a1728808756 + checksum: 10c0/7d114fb940579be91248afb0717e7cd74c8f460ab52ce386ae4dcea7e30cb25466cffdd507fd7b8c1c212be50a4eb694763f26482f419d3091c85a1728808756 languageName: node linkType: hard @@ -19017,7 +19017,7 @@ __metadata: dependencies: flatted: "npm:^3.1.0" rimraf: "npm:^3.0.2" - checksum: f274dcbadb09ad8d7b6edf2ee9b034bc40bf0c12638f6c4084e9f1d39208cb104a5ebbb24b398880ef048200eaa116852f73d2d8b72e8c9627aba8c3e27ca057 + checksum: 10c0/f274dcbadb09ad8d7b6edf2ee9b034bc40bf0c12638f6c4084e9f1d39208cb104a5ebbb24b398880ef048200eaa116852f73d2d8b72e8c9627aba8c3e27ca057 languageName: node linkType: hard @@ -19026,21 +19026,21 @@ __metadata: resolution: "flat@npm:5.0.2" bin: flat: cli.js - checksum: f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe languageName: node linkType: hard "flatted@npm:^3.1.0": version: 3.2.7 resolution: "flatted@npm:3.2.7" - checksum: 207a87c7abfc1ea6928ea16bac84f9eaa6d44d365620ece419e5c41cf44a5e9902b4c1f59c9605771b10e4565a0cb46e99d78e0464e8aabb42c97de880642257 + checksum: 10c0/207a87c7abfc1ea6928ea16bac84f9eaa6d44d365620ece419e5c41cf44a5e9902b4c1f59c9605771b10e4565a0cb46e99d78e0464e8aabb42c97de880642257 languageName: node linkType: hard "flow-parser@npm:0.*": version: 0.211.0 resolution: "flow-parser@npm:0.211.0" - checksum: 0cab6e54d2b427052cc4e98ab2b227c6faed9026b2185f779a1ae2c123d0413bc090899e24dec6d1a42cbf15e3dcda699f5d8548a5b6f7ca734700f09251322d + checksum: 10c0/0cab6e54d2b427052cc4e98ab2b227c6faed9026b2185f779a1ae2c123d0413bc090899e24dec6d1a42cbf15e3dcda699f5d8548a5b6f7ca734700f09251322d languageName: node linkType: hard @@ -19050,7 +19050,7 @@ __metadata: dependencies: inherits: "npm:^2.0.3" readable-stream: "npm:^2.3.6" - checksum: 2cd4f65b728d5f388197a03dafabc6a5e4f0c2ed1a2d912e288f7aa1c2996dd90875e55b50cf32c78dca55ad2e2dfae5d3db09b223838388033d87cf5920dd87 + checksum: 10c0/2cd4f65b728d5f388197a03dafabc6a5e4f0c2ed1a2d912e288f7aa1c2996dd90875e55b50cf32c78dca55ad2e2dfae5d3db09b223838388033d87cf5920dd87 languageName: node linkType: hard @@ -19060,7 +19060,7 @@ __metadata: peerDependenciesMeta: debug: optional: true - checksum: 5f37ed9170c9eb19448c5418fdb0f2b73f644b5364834e70791a76ecc7db215246f9773bbef4852cfae4067764ffc852e047f744b661b0211532155b73556a6a + checksum: 10c0/5f37ed9170c9eb19448c5418fdb0f2b73f644b5364834e70791a76ecc7db215246f9773bbef4852cfae4067764ffc852e047f744b661b0211532155b73556a6a languageName: node linkType: hard @@ -19069,14 +19069,14 @@ __metadata: resolution: "for-each@npm:0.3.3" dependencies: is-callable: "npm:^1.1.3" - checksum: 22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa languageName: node linkType: hard "for-in@npm:^1.0.2": version: 1.0.2 resolution: "for-in@npm:1.0.2" - checksum: 42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 + checksum: 10c0/42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 languageName: node linkType: hard @@ -19086,14 +19086,14 @@ __metadata: dependencies: cross-spawn: "npm:^7.0.0" signal-exit: "npm:^4.0.1" - checksum: 9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 languageName: node linkType: hard "forever-agent@npm:~0.6.1": version: 0.6.1 resolution: "forever-agent@npm:0.6.1" - checksum: 364f7f5f7d93ab661455351ce116a67877b66f59aca199559a999bd39e3cfadbfbfacc10415a915255e2210b30c23febe9aec3ca16bf2d1ff11c935a1000e24c + checksum: 10c0/364f7f5f7d93ab661455351ce116a67877b66f59aca199559a999bd39e3cfadbfbfacc10415a915255e2210b30c23febe9aec3ca16bf2d1ff11c935a1000e24c languageName: node linkType: hard @@ -19116,7 +19116,7 @@ __metadata: peerDependencies: typescript: ">3.6.0" webpack: ^5.11.0 - checksum: 1a2bb9bbd3e943e3b3a45d7fa9e8383698f5fea1ba28f7d18c8372c804460c2f13af53f791360b973fddafd3e88de7af59082c3cb3375f4e7c3365cd85accedc + checksum: 10c0/1a2bb9bbd3e943e3b3a45d7fa9e8383698f5fea1ba28f7d18c8372c804460c2f13af53f791360b973fddafd3e88de7af59082c3cb3375f4e7c3365cd85accedc languageName: node linkType: hard @@ -19127,7 +19127,7 @@ __metadata: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.6" mime-types: "npm:^2.1.12" - checksum: 7e8fb913b84a7ac04074781a18d0f94735bbe82815ff35348803331f6480956ff0035db5bcf15826edee09fe01e665cfac664678f1526646a6374ee13f960e56 + checksum: 10c0/7e8fb913b84a7ac04074781a18d0f94735bbe82815ff35348803331f6480956ff0035db5bcf15826edee09fe01e665cfac664678f1526646a6374ee13f960e56 languageName: node linkType: hard @@ -19138,7 +19138,7 @@ __metadata: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: 1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485 + checksum: 10c0/1ccc3ae064a080a799923f754d49fcebdd90515a8924f0f54de557540b50e7f1fe48ba5f2bd0435a5664aa2d49729107e6aaf2155a9abf52339474c5638b4485 languageName: node linkType: hard @@ -19149,7 +19149,7 @@ __metadata: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" mime-types: "npm:^2.1.12" - checksum: cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e languageName: node linkType: hard @@ -19160,7 +19160,7 @@ __metadata: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.6" mime-types: "npm:^2.1.12" - checksum: 706ef1e5649286b6a61e5bb87993a9842807fd8f149cd2548ee807ea4fb882247bdf7f6e64ac4720029c0cd5c80343de0e22eee1dc9e9882e12db9cc7bc016a4 + checksum: 10c0/706ef1e5649286b6a61e5bb87993a9842807fd8f149cd2548ee807ea4fb882247bdf7f6e64ac4720029c0cd5c80343de0e22eee1dc9e9882e12db9cc7bc016a4 languageName: node linkType: hard @@ -19169,14 +19169,14 @@ __metadata: resolution: "formdata-polyfill@npm:4.0.10" dependencies: fetch-blob: "npm:^3.1.2" - checksum: 5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6 + checksum: 10c0/5392ec484f9ce0d5e0d52fb5a78e7486637d516179b0eb84d81389d7eccf9ca2f663079da56f761355c0a65792810e3b345dc24db9a8bbbcf24ef3c8c88570c6 languageName: node linkType: hard "forwarded@npm:0.2.0": version: 0.2.0 resolution: "forwarded@npm:0.2.0" - checksum: 9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 languageName: node linkType: hard @@ -19185,14 +19185,14 @@ __metadata: resolution: "fragment-cache@npm:0.2.1" dependencies: map-cache: "npm:^0.2.2" - checksum: 5891d1c1d1d5e1a7fb3ccf28515c06731476fa88f7a50f4ede8a0d8d239a338448e7f7cc8b73db48da19c229fa30066104fe6489862065a4f1ed591c42fbeabf + checksum: 10c0/5891d1c1d1d5e1a7fb3ccf28515c06731476fa88f7a50f4ede8a0d8d239a338448e7f7cc8b73db48da19c229fa30066104fe6489862065a4f1ed591c42fbeabf languageName: node linkType: hard "fresh@npm:0.5.2": version: 0.5.2 resolution: "fresh@npm:0.5.2" - checksum: c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a languageName: node linkType: hard @@ -19202,21 +19202,21 @@ __metadata: dependencies: inherits: "npm:^2.0.1" readable-stream: "npm:^2.0.0" - checksum: f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 + checksum: 10c0/f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 languageName: node linkType: hard "from@npm:~0": version: 0.1.7 resolution: "from@npm:0.1.7" - checksum: 3aab5aea8fe8e1f12a5dee7f390d46a93431ce691b6222dcd5701c5d34378e51ca59b44967da1105a0f90fcdf5d7629d963d51e7ccd79827d19693bdcfb688d4 + checksum: 10c0/3aab5aea8fe8e1f12a5dee7f390d46a93431ce691b6222dcd5701c5d34378e51ca59b44967da1105a0f90fcdf5d7629d963d51e7ccd79827d19693bdcfb688d4 languageName: node linkType: hard "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" - checksum: a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 + checksum: 10c0/a0cde99085f0872f4d244e83e03a46aa387b74f5a5af750896c6b05e9077fac00e9932fdf5aef84f2f16634cd473c63037d7a512576da7d5c2b9163d1909f3a8 languageName: node linkType: hard @@ -19227,7 +19227,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 + checksum: 10c0/a2480243d7dcfa7d723c5f5b24cf4eba02a6ccece208f1524a2fbde1c629492cfb9a59e4b6d04faff6fbdf71db9fdc8ef7f396417a02884195a625f5d8dc9427 languageName: node linkType: hard @@ -19238,7 +19238,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 + checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 languageName: node linkType: hard @@ -19249,7 +19249,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e languageName: node linkType: hard @@ -19261,7 +19261,7 @@ __metadata: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 languageName: node linkType: hard @@ -19270,7 +19270,7 @@ __metadata: resolution: "fs-minipass@npm:2.1.0" dependencies: minipass: "npm:^3.0.0" - checksum: 703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 languageName: node linkType: hard @@ -19279,21 +19279,21 @@ __metadata: resolution: "fs-minipass@npm:3.0.2" dependencies: minipass: "npm:^5.0.0" - checksum: 34726f25b968ac05f6122ea7e9457fe108c7ae3b82beff0256953b0e405def61af2850570e32be2eb05c1e7660b663f24e14b6ab882d1d8a858314faacc4c972 + checksum: 10c0/34726f25b968ac05f6122ea7e9457fe108c7ae3b82beff0256953b0e405def61af2850570e32be2eb05c1e7660b663f24e14b6ab882d1d8a858314faacc4c972 languageName: node linkType: hard "fs-monkey@npm:^1.0.4": version: 1.0.4 resolution: "fs-monkey@npm:1.0.4" - checksum: eeb2457ec50f7202c44273de2a42b50868c8e6b2ab4825d517947143d4e727c028e24f6d0f46e6f3e7a149a1c9e7d8b3ca28243c3b10366d280a08016483e829 + checksum: 10c0/eeb2457ec50f7202c44273de2a42b50868c8e6b2ab4825d517947143d4e727c028e24f6d0f46e6f3e7a149a1c9e7d8b3ca28243c3b10366d280a08016483e829 languageName: node linkType: hard "fs-readdir-recursive@npm:^1.1.0": version: 1.1.0 resolution: "fs-readdir-recursive@npm:1.1.0" - checksum: 7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c + checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c languageName: node linkType: hard @@ -19305,14 +19305,14 @@ __metadata: iferr: "npm:^0.1.5" imurmurhash: "npm:^0.1.4" readable-stream: "npm:1 || 2" - checksum: 293b2b4ed346d35a28f8637a20cb2aef31be86503da501c42c2eda8fefed328bac16ce0e5daa7019f9329d73930c58031eaea2ce0c70f1680943fbfb7cff808b + checksum: 10c0/293b2b4ed346d35a28f8637a20cb2aef31be86503da501c42c2eda8fefed328bac16ce0e5daa7019f9329d73930c58031eaea2ce0c70f1680943fbfb7cff808b languageName: node linkType: hard "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" - checksum: 444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 languageName: node linkType: hard @@ -19321,7 +19321,7 @@ __metadata: resolution: "fsevents@npm:2.3.2" dependencies: node-gyp: "npm:latest" - checksum: be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b + checksum: 10c0/be78a3efa3e181cda3cf7a4637cb527bcebb0bd0ea0440105a3bb45b86f9245b307dc10a2507e8f4498a7d4ec349d1910f4d73e4d4495b16103106e07eee735b conditions: os=darwin languageName: node linkType: hard @@ -19332,7 +19332,7 @@ __metadata: dependencies: bindings: "npm:^1.5.0" nan: "npm:^2.12.1" - checksum: 4427ff08db9ee7327f2c3ad58ec56f9096a917eed861bfffaa2e2be419479cdf37d00750869ab9ecbf5f59f32ad999bd59577d73fc639193e6c0ce52bb253e02 + checksum: 10c0/4427ff08db9ee7327f2c3ad58ec56f9096a917eed861bfffaa2e2be419479cdf37d00750869ab9ecbf5f59f32ad999bd59577d73fc639193e6c0ce52bb253e02 conditions: os=darwin languageName: node linkType: hard @@ -19342,7 +19342,7 @@ __metadata: resolution: "fsevents@npm:2.3.3" dependencies: node-gyp: "npm:latest" - checksum: a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 conditions: os=darwin languageName: node linkType: hard @@ -19378,7 +19378,7 @@ __metadata: "function-bind@npm:^1.1.1, function-bind@npm:^1.1.2": version: 1.1.2 resolution: "function-bind@npm:1.1.2" - checksum: d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 languageName: node linkType: hard @@ -19390,21 +19390,21 @@ __metadata: define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" functions-have-names: "npm:^1.2.3" - checksum: 9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b languageName: node linkType: hard "functional-red-black-tree@npm:^1.0.1": version: 1.0.1 resolution: "functional-red-black-tree@npm:1.0.1" - checksum: 5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 + checksum: 10c0/5959eed0375803d9924f47688479bb017e0c6816a0e5ac151e22ba6bfe1d12c41de2f339188885e0aa8eeea2072dad509d8e4448467e816bde0a2ca86a0670d3 languageName: node linkType: hard "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" - checksum: 33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca languageName: node linkType: hard @@ -19413,7 +19413,7 @@ __metadata: resolution: "fx@npm:28.0.0" bin: fx: index.js - checksum: becd85992730d07d57dc0fa4deae847ae741952035d22a82903f5b2cc39b9c74592df6db5e3125ad50065d49cd83aedd4217b56c5e7ef7073d7391f37ca55fdf + checksum: 10c0/becd85992730d07d57dc0fa4deae847ae741952035d22a82903f5b2cc39b9c74592df6db5e3125ad50065d49cd83aedd4217b56c5e7ef7073d7391f37ca55fdf languageName: node linkType: hard @@ -19429,7 +19429,7 @@ __metadata: string-width: "npm:^4.2.3" strip-ansi: "npm:^6.0.1" wide-align: "npm:^1.1.5" - checksum: ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c + checksum: 10c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c languageName: node linkType: hard @@ -19445,7 +19445,7 @@ __metadata: string-width: "npm:^4.2.3" strip-ansi: "npm:^6.0.1" wide-align: "npm:^1.1.5" - checksum: 845f9a2534356cd0e9c1ae590ed471bbe8d74c318915b92a34e8813b8d3441ca8e0eb0fa87a48081e70b63b84d398c5e66a13b8e8040181c10b9d77e9fe3287f + checksum: 10c0/845f9a2534356cd0e9c1ae590ed471bbe8d74c318915b92a34e8813b8d3441ca8e0eb0fa87a48081e70b63b84d398c5e66a13b8e8040181c10b9d77e9fe3287f languageName: node linkType: hard @@ -19457,7 +19457,7 @@ __metadata: https-proxy-agent: "npm:^5.0.0" is-stream: "npm:^2.0.0" node-fetch: "npm:^2.6.9" - checksum: eb1fd1910491c18445b4e22932098346b3c16917caa3b71567abba296e2d3dcf53d4ede47825ec06223f8943ea35744553d66238c5ad8f3f7835d9dc8ed540ba + checksum: 10c0/eb1fd1910491c18445b4e22932098346b3c16917caa3b71567abba296e2d3dcf53d4ede47825ec06223f8943ea35744553d66238c5ad8f3f7835d9dc8ed540ba languageName: node linkType: hard @@ -19467,42 +19467,42 @@ __metadata: dependencies: gaxios: "npm:^5.0.0" json-bigint: "npm:^1.0.0" - checksum: c0570f8ed821429444d6d9d46279831aa1b68092bd5f394928dd816c39904721f8a80ed463fcbeb607a469b1917fe24dad0e66dc4a94388620c9172a54fb5a5f + checksum: 10c0/c0570f8ed821429444d6d9d46279831aa1b68092bd5f394928dd816c39904721f8a80ed463fcbeb607a469b1917fe24dad0e66dc4a94388620c9172a54fb5a5f languageName: node linkType: hard "generic-pool@npm:3.9.0": version: 3.9.0 resolution: "generic-pool@npm:3.9.0" - checksum: 6b314d0d71170d5cbaf7162c423f53f8d6556b2135626a65bcdc03c089840b0a2f59eeb2d907939b8200e945eaf71ceb6630426f22d2128a1d242aec4b232aa7 + checksum: 10c0/6b314d0d71170d5cbaf7162c423f53f8d6556b2135626a65bcdc03c089840b0a2f59eeb2d907939b8200e945eaf71ceb6630426f22d2128a1d242aec4b232aa7 languageName: node linkType: hard "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" - checksum: 782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 languageName: node linkType: hard "get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" - checksum: c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde languageName: node linkType: hard "get-east-asian-width@npm:^1.0.0": version: 1.2.0 resolution: "get-east-asian-width@npm:1.2.0" - checksum: 914b1e217cf38436c24b4c60b4c45289e39a45bf9e65ef9fd343c2815a1a02b8a0215aeec8bf9c07c516089004b6e3826332481f40a09529fcadbf6e579f286b + checksum: 10c0/914b1e217cf38436c24b4c60b4c45289e39a45bf9e65ef9fd343c2815a1a02b8a0215aeec8bf9c07c516089004b6e3826332481f40a09529fcadbf6e579f286b languageName: node linkType: hard "get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": version: 2.0.2 resolution: "get-func-name@npm:2.0.2" - checksum: 89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df + checksum: 10c0/89830fd07623fa73429a711b9daecdb304386d237c71268007f788f113505ef1d4cc2d0b9680e072c5082490aec9df5d7758bf5ac6f1c37062855e8e3dc0b9df languageName: node linkType: hard @@ -19514,28 +19514,28 @@ __metadata: has-proto: "npm:^1.0.1" has-symbols: "npm:^1.0.3" hasown: "npm:^2.0.0" - checksum: 4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b + checksum: 10c0/4e7fb8adc6172bae7c4fe579569b4d5238b3667c07931cd46b4eee74bbe6ff6b91329bec311a638d8e60f5b51f44fe5445693c6be89ae88d4b5c49f7ff12db0b languageName: node linkType: hard "get-nonce@npm:^1.0.0": version: 1.0.1 resolution: "get-nonce@npm:1.0.1" - checksum: 2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 + checksum: 10c0/2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 languageName: node linkType: hard "get-npm-tarball-url@npm:^2.0.3": version: 2.0.3 resolution: "get-npm-tarball-url@npm:2.0.3" - checksum: fdf7a830d2602dd3d86285f412c9b2984ffe6ce854e1854e9548ea2b2f09f663b83791a31703552f8c72266d67c72e94c70f8d50a886fe5179d2f07a383660d8 + checksum: 10c0/fdf7a830d2602dd3d86285f412c9b2984ffe6ce854e1854e9548ea2b2f09f663b83791a31703552f8c72266d67c72e94c70f8d50a886fe5179d2f07a383660d8 languageName: node linkType: hard "get-package-type@npm:^0.1.0": version: 0.1.0 resolution: "get-package-type@npm:0.1.0" - checksum: e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be languageName: node linkType: hard @@ -19549,14 +19549,14 @@ __metadata: yargs: "npm:^16.2.0" bin: get-pkg-repo: src/cli.js - checksum: 1338d2e048a594da4a34e7dd69d909376d72784f5ba50963a242b4b35db77533786f618b3f6a9effdee2af20af4917a3b7cf12533b4575d7f9c163886be1fb62 + checksum: 10c0/1338d2e048a594da4a34e7dd69d909376d72784f5ba50963a242b4b35db77533786f618b3f6a9effdee2af20af4917a3b7cf12533b4575d7f9c163886be1fb62 languageName: node linkType: hard "get-port@npm:5.1.1, get-port@npm:^5.1.1": version: 5.1.1 resolution: "get-port@npm:5.1.1" - checksum: 2873877a469b24e6d5e0be490724a17edb39fafc795d1d662e7bea951ca649713b4a50117a473f9d162312cb0e946597bd0e049ed2f866e79e576e8e213d3d1c + checksum: 10c0/2873877a469b24e6d5e0be490724a17edb39fafc795d1d662e7bea951ca649713b4a50117a473f9d162312cb0e946597bd0e049ed2f866e79e576e8e213d3d1c languageName: node linkType: hard @@ -19566,14 +19566,14 @@ __metadata: dependencies: data-uri-to-buffer: "npm:^2.0.0" source-map: "npm:^0.6.1" - checksum: b1db46d28902344fd9407e1f0ed0b8f3a85cb4650f85ba8cee9c0b422fc75118172f12f735706e2c6e034617b13a2fbc5266e7fab617ecb184f0cee074b9dd3e + checksum: 10c0/b1db46d28902344fd9407e1f0ed0b8f3a85cb4650f85ba8cee9c0b422fc75118172f12f735706e2c6e034617b13a2fbc5266e7fab617ecb184f0cee074b9dd3e languageName: node linkType: hard "get-stream@npm:6.0.0": version: 6.0.0 resolution: "get-stream@npm:6.0.0" - checksum: 7cd835cb9180041e7be2cc3de236e5db9f2144515921aeb60ae78d3a46f9944439d654c2aae5b0191e41eb6e2500f0237494a2e6c0790367183f788d1c9f6dd6 + checksum: 10c0/7cd835cb9180041e7be2cc3de236e5db9f2144515921aeb60ae78d3a46f9944439d654c2aae5b0191e41eb6e2500f0237494a2e6c0790367183f788d1c9f6dd6 languageName: node linkType: hard @@ -19582,7 +19582,7 @@ __metadata: resolution: "get-stream@npm:4.1.0" dependencies: pump: "npm:^3.0.0" - checksum: 294d876f667694a5ca23f0ca2156de67da950433b6fb53024833733975d32582896dbc7f257842d331809979efccf04d5e0b6b75ad4d45744c45f193fd497539 + checksum: 10c0/294d876f667694a5ca23f0ca2156de67da950433b6fb53024833733975d32582896dbc7f257842d331809979efccf04d5e0b6b75ad4d45744c45f193fd497539 languageName: node linkType: hard @@ -19591,21 +19591,21 @@ __metadata: resolution: "get-stream@npm:5.2.0" dependencies: pump: "npm:^3.0.0" - checksum: 43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 + checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 languageName: node linkType: hard "get-stream@npm:^6.0.0": version: 6.0.1 resolution: "get-stream@npm:6.0.1" - checksum: 49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 languageName: node linkType: hard "get-stream@npm:^8.0.1": version: 8.0.1 resolution: "get-stream@npm:8.0.1" - checksum: 5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 + checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290 languageName: node linkType: hard @@ -19615,14 +19615,14 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.1.1" - checksum: 23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb + checksum: 10c0/23bc3b44c221cdf7669a88230c62f4b9e30393b61eb21ba4400cb3e346801bd8f95fe4330ee78dbae37aecd874646d53e3e76a17a654d0c84c77f6690526d6bb languageName: node linkType: hard "get-them-args@npm:1.3.2": version: 1.3.2 resolution: "get-them-args@npm:1.3.2" - checksum: a75e26d7369a00f596dc9c3c7b4259a219d4486a0beef51d991867103cc8c07d22814a24210d9c9f56cefb35f9848e16fe120b57b3ec1ea333054e715059d586 + checksum: 10c0/a75e26d7369a00f596dc9c3c7b4259a219d4486a0beef51d991867103cc8c07d22814a24210d9c9f56cefb35f9848e16fe120b57b3ec1ea333054e715059d586 languageName: node linkType: hard @@ -19631,14 +19631,14 @@ __metadata: resolution: "get-tsconfig@npm:4.7.2" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 169b2beababfbb16e8a0ae813ee59d3e14d4960231c816615161ab5be68ec07a394dce59695742ac84295e2efab8d9e89bcf3abaf5e253dfbec3496e01bb9a65 + checksum: 10c0/169b2beababfbb16e8a0ae813ee59d3e14d4960231c816615161ab5be68ec07a394dce59695742ac84295e2efab8d9e89bcf3abaf5e253dfbec3496e01bb9a65 languageName: node linkType: hard "get-value@npm:^2.0.3, get-value@npm:^2.0.6": version: 2.0.6 resolution: "get-value@npm:2.0.6" - checksum: f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9 + checksum: 10c0/f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9 languageName: node linkType: hard @@ -19647,7 +19647,7 @@ __metadata: resolution: "getos@npm:3.2.1" dependencies: async: "npm:^3.2.0" - checksum: 21556fca1da4dfc8f1707261b4f9ff19b9e9bfefa76478249d2abddba3cd014bd6c5360634add1590b27e0b27d422e8f997dddaa0234aae1fa4c54f33f82e841 + checksum: 10c0/21556fca1da4dfc8f1707261b4f9ff19b9e9bfefa76478249d2abddba3cd014bd6c5360634add1590b27e0b27d422e8f997dddaa0234aae1fa4c54f33f82e841 languageName: node linkType: hard @@ -19656,7 +19656,7 @@ __metadata: resolution: "getpass@npm:0.1.7" dependencies: assert-plus: "npm:^1.0.0" - checksum: c13f8530ecf16fc509f3fa5cd8dd2129ffa5d0c7ccdf5728b6022d52954c2d24be3706b4cdf15333eec52f1fbb43feb70a01dabc639d1d10071e371da8aaa52f + checksum: 10c0/c13f8530ecf16fc509f3fa5cd8dd2129ffa5d0c7ccdf5728b6022d52954c2d24be3706b4cdf15333eec52f1fbb43feb70a01dabc639d1d10071e371da8aaa52f languageName: node linkType: hard @@ -19673,7 +19673,7 @@ __metadata: tar: "npm:^6.1.13" bin: giget: dist/cli.mjs - checksum: fc76d1042df3027c468f74320f7333ce3f99a84b7cd701683cffc386a35c53699a5c32b816b635f3cdf12956c3e85df4592ffbb31f01b8da6a8d943521c9e2e4 + checksum: 10c0/fc76d1042df3027c468f74320f7333ce3f99a84b7cd701683cffc386a35c53699a5c32b816b635f3cdf12956c3e85df4592ffbb31f01b8da6a8d943521c9e2e4 languageName: node linkType: hard @@ -19686,7 +19686,7 @@ __metadata: split2: "npm:^3.2.2" bin: git-raw-commits: cli.js - checksum: 2a5db2e4b5b1ef7b6ecbdc175e559920a5400cbdb8d36f130aaef3588bfd74d8650b354a51ff89e0929eadbb265a00078a6291ff26248a525f0b2f079b001bf6 + checksum: 10c0/2a5db2e4b5b1ef7b6ecbdc175e559920a5400cbdb8d36f130aaef3588bfd74d8650b354a51ff89e0929eadbb265a00078a6291ff26248a525f0b2f079b001bf6 languageName: node linkType: hard @@ -19696,7 +19696,7 @@ __metadata: dependencies: gitconfiglocal: "npm:^1.0.0" pify: "npm:^2.3.0" - checksum: 3a846ce98ed36b2d0b801e8ec1ab299a236cfc6fa264bfdf9f42301abfdfd8715c946507fd83a10b9db449eb609ac6f8a2a341daf52e3af0000367487f486355 + checksum: 10c0/3a846ce98ed36b2d0b801e8ec1ab299a236cfc6fa264bfdf9f42301abfdfd8715c946507fd83a10b9db449eb609ac6f8a2a341daf52e3af0000367487f486355 languageName: node linkType: hard @@ -19708,7 +19708,7 @@ __metadata: semver: "npm:^6.3.0" bin: git-semver-tags: cli.js - checksum: b8ef0169beaa2a5a465da26568d87045d8f930b33f265e75cc69dec02428ea3303a2c8d8c2e314d18176f53647c65b2a9f010f04650b3d315d787ec9a0a3e747 + checksum: 10c0/b8ef0169beaa2a5a465da26568d87045d8f930b33f265e75cc69dec02428ea3303a2c8d8c2e314d18176f53647c65b2a9f010f04650b3d315d787ec9a0a3e747 languageName: node linkType: hard @@ -19718,7 +19718,7 @@ __metadata: dependencies: is-ssh: "npm:^1.4.0" parse-url: "npm:^8.1.0" - checksum: a3fa02e1a63c7c824b5ebbf23f4a9a6b34dd80031114c5dd8adb7ef53493642e39d3d80dfef4025a452128400c35c2c138d20a0f6ae5d7d7ef70d9ba13083d34 + checksum: 10c0/a3fa02e1a63c7c824b5ebbf23f4a9a6b34dd80031114c5dd8adb7ef53493642e39d3d80dfef4025a452128400c35c2c138d20a0f6ae5d7d7ef70d9ba13083d34 languageName: node linkType: hard @@ -19727,7 +19727,7 @@ __metadata: resolution: "git-url-parse@npm:13.1.0" dependencies: git-up: "npm:^7.0.0" - checksum: 2ef6126c42d999e240dbcdf1e96172cf7a2044ffa1ef78a518acf823df9bbe2a1ea9e6b443d42948e3c581e4d899559afc4c1de024b3eaa8eb6a4229f73285aa + checksum: 10c0/2ef6126c42d999e240dbcdf1e96172cf7a2044ffa1ef78a518acf823df9bbe2a1ea9e6b443d42948e3c581e4d899559afc4c1de024b3eaa8eb6a4229f73285aa languageName: node linkType: hard @@ -19736,14 +19736,14 @@ __metadata: resolution: "gitconfiglocal@npm:1.0.0" dependencies: ini: "npm:^1.3.2" - checksum: cfcb16344834113199f209f2758ced778dc30e075ddb49b5dde659b4dd2deadee824db0a1b77e1303cb594d9e8b2240da18c67705f657aa76affb444aa349005 + checksum: 10c0/cfcb16344834113199f209f2758ced778dc30e075ddb49b5dde659b4dd2deadee824db0a1b77e1303cb594d9e8b2240da18c67705f657aa76affb444aa349005 languageName: node linkType: hard "github-slugger@npm:^1.0.0": version: 1.5.0 resolution: "github-slugger@npm:1.5.0" - checksum: 116f99732925f939cbfd6f2e57db1aa7e111a460db0d103e3b3f2fce6909d44311663d4542350706cad806345b9892358cc3b153674f88eeae77f43380b3bfca + checksum: 10c0/116f99732925f939cbfd6f2e57db1aa7e111a460db0d103e3b3f2fce6909d44311663d4542350706cad806345b9892358cc3b153674f88eeae77f43380b3bfca languageName: node linkType: hard @@ -19752,7 +19752,7 @@ __metadata: resolution: "glob-parent@npm:5.1.2" dependencies: is-glob: "npm:^4.0.1" - checksum: cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee languageName: node linkType: hard @@ -19762,7 +19762,7 @@ __metadata: dependencies: is-glob: "npm:^3.1.0" path-dirname: "npm:^1.0.0" - checksum: bfa89ce5ae1dfea4c2ece7b61d2ea230d87fcbec7472915cfdb3f4caf688a91ecb0dc86ae39b1e17505adce7e64cae3b971d64dc66091f3a0131169fd631b00d + checksum: 10c0/bfa89ce5ae1dfea4c2ece7b61d2ea230d87fcbec7472915cfdb3f4caf688a91ecb0dc86ae39b1e17505adce7e64cae3b971d64dc66091f3a0131169fd631b00d languageName: node linkType: hard @@ -19771,14 +19771,14 @@ __metadata: resolution: "glob-parent@npm:6.0.2" dependencies: is-glob: "npm:^4.0.3" - checksum: 317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 languageName: node linkType: hard "glob-to-regexp@npm:0.4.1, glob-to-regexp@npm:^0.4.1": version: 0.4.1 resolution: "glob-to-regexp@npm:0.4.1" - checksum: 0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 languageName: node linkType: hard @@ -19793,7 +19793,7 @@ __metadata: path-scurry: "npm:^1.10.1" bin: glob: dist/esm/bin.mjs - checksum: 13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d languageName: node linkType: hard @@ -19807,7 +19807,7 @@ __metadata: minimatch: "npm:^3.0.4" once: "npm:^1.3.0" path-is-absolute: "npm:^1.0.0" - checksum: 7f6fcbf600eb2298cce34c65f6d8bbe6933ddd4f88aa5b38a9c6feec82b615bb33b63b120725303e89c4b50284413c21d2ff883414717a5c7d0c9f7cd7a0e5fe + checksum: 10c0/7f6fcbf600eb2298cce34c65f6d8bbe6933ddd4f88aa5b38a9c6feec82b615bb33b63b120725303e89c4b50284413c21d2ff883414717a5c7d0c9f7cd7a0e5fe languageName: node linkType: hard @@ -19821,7 +19821,7 @@ __metadata: minimatch: "npm:^3.1.1" once: "npm:^1.3.0" path-is-absolute: "npm:^1.0.0" - checksum: 65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe languageName: node linkType: hard @@ -19834,7 +19834,7 @@ __metadata: inherits: "npm:2" minimatch: "npm:^5.0.1" once: "npm:^1.3.0" - checksum: cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f languageName: node linkType: hard @@ -19846,7 +19846,7 @@ __metadata: minimatch: "npm:^8.0.2" minipass: "npm:^4.2.4" path-scurry: "npm:^1.6.1" - checksum: 2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e + checksum: 10c0/2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e languageName: node linkType: hard @@ -19855,7 +19855,7 @@ __metadata: resolution: "global-directory@npm:4.0.1" dependencies: ini: "npm:4.1.1" - checksum: f9cbeef41db4876f94dd0bac1c1b4282a7de9c16350ecaaf83e7b2dd777b32704cc25beeb1170b5a63c42a2c9abfade74d46357fe0133e933218bc89e613d4b2 + checksum: 10c0/f9cbeef41db4876f94dd0bac1c1b4282a7de9c16350ecaaf83e7b2dd777b32704cc25beeb1170b5a63c42a2c9abfade74d46357fe0133e933218bc89e613d4b2 languageName: node linkType: hard @@ -19864,14 +19864,14 @@ __metadata: resolution: "global-dirs@npm:3.0.1" dependencies: ini: "npm:2.0.0" - checksum: ef65e2241a47ff978f7006a641302bc7f4c03dfb98783d42bf7224c136e3a06df046e70ee3a010cf30214114755e46c9eb5eb1513838812fbbe0d92b14c25080 + checksum: 10c0/ef65e2241a47ff978f7006a641302bc7f4c03dfb98783d42bf7224c136e3a06df046e70ee3a010cf30214114755e46c9eb5eb1513838812fbbe0d92b14c25080 languageName: node linkType: hard "globals@npm:^11.1.0": version: 11.12.0 resolution: "globals@npm:11.12.0" - checksum: 758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 languageName: node linkType: hard @@ -19880,7 +19880,7 @@ __metadata: resolution: "globals@npm:13.20.0" dependencies: type-fest: "npm:^0.20.2" - checksum: 9a028f136f1e7a3574689f430f7d57faa0d699c4c7e92ade00b02882a892be31c314d50dff07b48e607283013117bb8a997406d03a1f7ab4a33a005eb16efd6c + checksum: 10c0/9a028f136f1e7a3574689f430f7d57faa0d699c4c7e92ade00b02882a892be31c314d50dff07b48e607283013117bb8a997406d03a1f7ab4a33a005eb16efd6c languageName: node linkType: hard @@ -19889,7 +19889,7 @@ __metadata: resolution: "globalthis@npm:1.0.3" dependencies: define-properties: "npm:^1.1.3" - checksum: 0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 + checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 languageName: node linkType: hard @@ -19903,7 +19903,7 @@ __metadata: ignore: "npm:^5.2.0" merge2: "npm:^1.4.1" slash: "npm:^3.0.0" - checksum: b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 languageName: node linkType: hard @@ -19916,7 +19916,7 @@ __metadata: ignore: "npm:^5.2.4" merge2: "npm:^1.4.1" slash: "npm:^4.0.0" - checksum: a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 + checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 languageName: node linkType: hard @@ -19925,7 +19925,7 @@ __metadata: resolution: "goober@npm:2.1.13" peerDependencies: csstype: ^3.0.10 - checksum: a322ea3b688e1140e9e69014169563a1a73ea715d4a6edeaf61b59d40eb2c3b70f8269b09bb178d474764ee1772a0b1719c1d45db689e5c557698e468ce94702 + checksum: 10c0/a322ea3b688e1140e9e69014169563a1a73ea715d4a6edeaf61b59d40eb2c3b70f8269b09bb178d474764ee1772a0b1719c1d45db689e5c557698e468ce94702 languageName: node linkType: hard @@ -19942,7 +19942,7 @@ __metadata: gtoken: "npm:^6.1.0" jws: "npm:^4.0.0" lru-cache: "npm:^6.0.0" - checksum: a9b101e15ba0457d3abe548b59323211f2c34071721da73a74ba6a773e199e73736910fd7d39b0c978eb7655220ae6f90f4e0b5665419d298ab544f9159d1625 + checksum: 10c0/a9b101e15ba0457d3abe548b59323211f2c34071721da73a74ba6a773e199e73736910fd7d39b0c978eb7655220ae6f90f4e0b5665419d298ab544f9159d1625 languageName: node linkType: hard @@ -19968,7 +19968,7 @@ __metadata: bin: compileProtos: build/tools/compileProtos.js minifyProtoJson: build/tools/minify.js - checksum: a935b7fac764fbf89b613d0a345ac9e531901fcd0223ec738c3e6ce29e9326603aca473326fe60216e04fc8adb7439dd5715f0f3b6b8200cd5f16c7fb4d7d3e7 + checksum: 10c0/a935b7fac764fbf89b613d0a345ac9e531901fcd0223ec738c3e6ce29e9326603aca473326fe60216e04fc8adb7439dd5715f0f3b6b8200cd5f16c7fb4d7d3e7 languageName: node linkType: hard @@ -19979,7 +19979,7 @@ __metadata: node-forge: "npm:^1.3.1" bin: gp12-pem: build/src/bin/gp12-pem.js - checksum: 2cd15077cb2179306870223c65b49d38f0860bd8cc60da8072cc632c9aad8cb7e61e46e63d72e8ef3fca27ad9e6b8870db6cc809839f279382d9cc4d891a9a7b + checksum: 10c0/2cd15077cb2179306870223c65b49d38f0860bd8cc60da8072cc632c9aad8cb7e61e46e63d72e8ef3fca27ad9e6b8870db6cc809839f279382d9cc4d891a9a7b languageName: node linkType: hard @@ -19988,7 +19988,7 @@ __metadata: resolution: "gopd@npm:1.0.1" dependencies: get-intrinsic: "npm:^1.1.3" - checksum: 505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 languageName: node linkType: hard @@ -20007,21 +20007,21 @@ __metadata: p-cancelable: "npm:^1.0.0" to-readable-stream: "npm:^1.0.0" url-parse-lax: "npm:^3.0.0" - checksum: 5cb3111e14b48bf4fb8b414627be481ebfb14151ec867e80a74b6d1472489965b9c4f4ac5cf4f3b1f9b90c60a2ce63584d9072b16efd9a3171553e00afc5abc8 + checksum: 10c0/5cb3111e14b48bf4fb8b414627be481ebfb14151ec867e80a74b6d1472489965b9c4f4ac5cf4f3b1f9b90c60a2ce63584d9072b16efd9a3171553e00afc5abc8 languageName: node linkType: hard "graceful-fs@npm:4.2.11, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" - checksum: 386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 languageName: node linkType: hard "graphemer@npm:^1.4.0": version: 1.4.0 resolution: "graphemer@npm:1.4.0" - checksum: e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 languageName: node linkType: hard @@ -20046,7 +20046,7 @@ __metadata: peerDependenciesMeta: cosmiconfig-toml-loader: optional: true - checksum: 2f9fcc16fca402640f10d3b8c5502f2e77fe640b43ea1d9548664282f48fe2998707ef2e495d1b8b46b33f1c74bbf575c3981ed0a0af43cdfcad5356cae61ce7 + checksum: 10c0/2f9fcc16fca402640f10d3b8c5502f2e77fe640b43ea1d9548664282f48fe2998707ef2e495d1b8b46b33f1c74bbf575c3981ed0a0af43cdfcad5356cae61ce7 languageName: node linkType: hard @@ -20057,7 +20057,7 @@ __metadata: arrify: "npm:^1.0.1" peerDependencies: graphql: "*" - checksum: 8f50268ab3e2553cfe64fad532a3bd60068865217f113ac7388bfea1484d36a7e711a1c26f6a03e67969923967f2a84b62618c07732ca2ca603c295f8a19dbf9 + checksum: 10c0/8f50268ab3e2553cfe64fad532a3bd60068865217f113ac7388bfea1484d36a7e711a1c26f6a03e67969923967f2a84b62618c07732ca2ca603c295f8a19dbf9 languageName: node linkType: hard @@ -20069,7 +20069,7 @@ __metadata: cross-fetch: "npm:^3.1.5" peerDependencies: graphql: 14 - 16 - checksum: f8167925a110e8e1de93d56c14245e7e64391dc8dce5002dd01bf24a3059f345d4ca1bb6ce2040e2ec78264211b0704e75da3e63984f0f74d2042f697a4e8cc6 + checksum: 10c0/f8167925a110e8e1de93d56c14245e7e64391dc8dce5002dd01bf24a3059f345d4ca1bb6ce2040e2ec78264211b0704e75da3e63984f0f74d2042f697a4e8cc6 languageName: node linkType: hard @@ -20080,7 +20080,7 @@ __metadata: tslib: "npm:^2.5.0" peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: d7df28c7bcd274049ee2b93536036b22bc2591bdb86a627a46d4557161965df96c8da6c4f7dc01684d46580d75c7b2fbba7fc5042b763b5b6cba879dc79e010e + checksum: 10c0/d7df28c7bcd274049ee2b93536036b22bc2591bdb86a627a46d4557161965df96c8da6c4f7dc01684d46580d75c7b2fbba7fc5042b763b5b6cba879dc79e010e languageName: node linkType: hard @@ -20089,7 +20089,7 @@ __metadata: resolution: "graphql-sse@npm:2.5.2" peerDependencies: graphql: ">=0.11 <=16" - checksum: 0ceb6fd4b858d9a89a3e77e15157b94cc04f8ed0077a1581169f9bd4e6114940a448f5bcc8cc22be0562056b5e0f515960b239cccf1e7907e708ed4da6f12279 + checksum: 10c0/0ceb6fd4b858d9a89a3e77e15157b94cc04f8ed0077a1581169f9bd4e6114940a448f5bcc8cc22be0562056b5e0f515960b239cccf1e7907e708ed4da6f12279 languageName: node linkType: hard @@ -20100,7 +20100,7 @@ __metadata: tslib: "npm:^2.1.0" peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - checksum: 7763a72011bda454ed8ff1a0d82325f43ca6478e4ce4ab8b7910c4c651dd00db553132171c04d80af5d5aebf1ef6a8a9fd53ccfa33b90ddc00aa3d4be6114419 + checksum: 10c0/7763a72011bda454ed8ff1a0d82325f43ca6478e4ce4ab8b7910c4c651dd00db553132171c04d80af5d5aebf1ef6a8a9fd53ccfa33b90ddc00aa3d4be6114419 languageName: node linkType: hard @@ -20109,7 +20109,7 @@ __metadata: resolution: "graphql-ws@npm:5.12.1" peerDependencies: graphql: ">=0.11 <=16" - checksum: 17338de4783b76e01a41e73a740beb72f9bde46750867463e394679cecc557f2af4ba59af8196e14aed1711a9b7ce6cff0149abc4ff27ca92497b988d6ebbac3 + checksum: 10c0/17338de4783b76e01a41e73a740beb72f9bde46750867463e394679cecc557f2af4ba59af8196e14aed1711a9b7ce6cff0149abc4ff27ca92497b988d6ebbac3 languageName: node linkType: hard @@ -20130,14 +20130,14 @@ __metadata: tslib: "npm:^2.5.2" peerDependencies: graphql: ^15.2.0 || ^16.0.0 - checksum: 282b46c3539528c767b08351a7ddc3e2a171c5f8187ffaa70aaff144607da97a48fba7af3c4e43e97c9bd724ad867fa1861ab795be17e7d89f5f12f8cc56eb11 + checksum: 10c0/282b46c3539528c767b08351a7ddc3e2a171c5f8187ffaa70aaff144607da97a48fba7af3c4e43e97c9bd724ad867fa1861ab795be17e7d89f5f12f8cc56eb11 languageName: node linkType: hard "graphql@npm:16.8.1, graphql@npm:^16.0.0, graphql@npm:^16.8.1": version: 16.8.1 resolution: "graphql@npm:16.8.1" - checksum: 129c318156b466f440914de80dbf7bc67d17f776f2a088a40cb0da611d19a97c224b1c6d2b13cbcbc6e5776e45ed7468b8432f9c3536724e079b44f1a3d57a8a + checksum: 10c0/129c318156b466f440914de80dbf7bc67d17f776f2a088a40cb0da611d19a97c224b1c6d2b13cbcbc6e5776e45ed7468b8432f9c3536724e079b44f1a3d57a8a languageName: node linkType: hard @@ -20148,7 +20148,7 @@ __metadata: gaxios: "npm:^5.0.1" google-p12-pem: "npm:^4.0.0" jws: "npm:^4.0.0" - checksum: d660fbb8ad00a9f5b6eb426090593cb2a07d63dc22a11b0cf155d43779b6078f804e3467e37deb9a1c078ae34e683070279dc5a1577c50e0e3166a6a6748d98e + checksum: 10c0/d660fbb8ad00a9f5b6eb426090593cb2a07d63dc22a11b0cf155d43779b6078f804e3467e37deb9a1c078ae34e683070279dc5a1577c50e0e3166a6a6748d98e languageName: node linkType: hard @@ -20164,7 +20164,7 @@ __metadata: through2: "npm:^2.0.3" bin: gunzip-maybe: bin.js - checksum: 42798a8061759885c2084e1804e51313d14f2dc9cf6c137e222953ec802f914e592d6f9dbf6ad67f4e78eb036e86db017d9c7c93bb23e90cd5ae09326296ed77 + checksum: 10c0/42798a8061759885c2084e1804e51313d14f2dc9cf6c137e222953ec802f914e592d6f9dbf6ad67f4e78eb036e86db017d9c7c93bb23e90cd5ae09326296ed77 languageName: node linkType: hard @@ -20173,14 +20173,14 @@ __metadata: resolution: "gzip-size@npm:6.0.0" dependencies: duplexer: "npm:^0.1.2" - checksum: 4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f + checksum: 10c0/4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f languageName: node linkType: hard "handle-thing@npm:^2.0.0": version: 2.0.1 resolution: "handle-thing@npm:2.0.1" - checksum: 7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 + checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 languageName: node linkType: hard @@ -20198,35 +20198,35 @@ __metadata: optional: true bin: handlebars: bin/handlebars - checksum: 4c0913fc0018a2a2e358ee94e4fe83f071762b8bec51a473d187e6642e94e569843adcf550ffe329554c63ad450c062f3a05447bd2e3fff5ebfe698e214225c6 + checksum: 10c0/4c0913fc0018a2a2e358ee94e4fe83f071762b8bec51a473d187e6642e94e569843adcf550ffe329554c63ad450c062f3a05447bd2e3fff5ebfe698e214225c6 languageName: node linkType: hard "hard-rejection@npm:^2.1.0": version: 2.1.0 resolution: "hard-rejection@npm:2.1.0" - checksum: febc3343a1ad575aedcc112580835b44a89a89e01f400b4eda6e8110869edfdab0b00cd1bd4c3bfec9475a57e79e0b355aecd5be46454b6a62b9a359af60e564 + checksum: 10c0/febc3343a1ad575aedcc112580835b44a89a89e01f400b4eda6e8110869edfdab0b00cd1bd4c3bfec9475a57e79e0b355aecd5be46454b6a62b9a359af60e564 languageName: node linkType: hard "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" - checksum: 724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b languageName: node linkType: hard "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" - checksum: 1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 languageName: node linkType: hard "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" - checksum: 2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 languageName: node linkType: hard @@ -20235,21 +20235,21 @@ __metadata: resolution: "has-property-descriptors@npm:1.0.0" dependencies: get-intrinsic: "npm:^1.1.1" - checksum: d4ca882b6960d6257bd28baa3ddfa21f068d260411004a093b30ca357c740e11e985771c85216a6d1eef4161e862657f48c4758ec8ab515223b3895200ad164b + checksum: 10c0/d4ca882b6960d6257bd28baa3ddfa21f068d260411004a093b30ca357c740e11e985771c85216a6d1eef4161e862657f48c4758ec8ab515223b3895200ad164b languageName: node linkType: hard "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" - checksum: c8a8fe411f810b23a564bd5546a8f3f0fff6f1b692740eb7a2fdc9df716ef870040806891e2f23ff4653f1083e3895bf12088703dd1a0eac3d9202d3a4768cd0 + checksum: 10c0/c8a8fe411f810b23a564bd5546a8f3f0fff6f1b692740eb7a2fdc9df716ef870040806891e2f23ff4653f1083e3895bf12088703dd1a0eac3d9202d3a4768cd0 languageName: node linkType: hard "has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" - checksum: e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 languageName: node linkType: hard @@ -20258,14 +20258,14 @@ __metadata: resolution: "has-tostringtag@npm:1.0.0" dependencies: has-symbols: "npm:^1.0.2" - checksum: 1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011 + checksum: 10c0/1cdba76b7d13f65198a92b8ca1560ba40edfa09e85d182bf436d928f3588a9ebd260451d569f0ed1b849c4bf54f49c862aa0d0a77f9552b1855bb6deb526c011 languageName: node linkType: hard "has-unicode@npm:2.0.1, has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" - checksum: ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c + checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c languageName: node linkType: hard @@ -20276,7 +20276,7 @@ __metadata: get-value: "npm:^2.0.3" has-values: "npm:^0.1.4" isobject: "npm:^2.0.0" - checksum: 7a7c2e9d07bc9742c81806150adb154d149bc6155267248c459cd1ce2a64b0759980d26213260e4b7599c8a3754551179f155ded88d0533a0d2bc7bc29028432 + checksum: 10c0/7a7c2e9d07bc9742c81806150adb154d149bc6155267248c459cd1ce2a64b0759980d26213260e4b7599c8a3754551179f155ded88d0533a0d2bc7bc29028432 languageName: node linkType: hard @@ -20287,14 +20287,14 @@ __metadata: get-value: "npm:^2.0.6" has-values: "npm:^1.0.0" isobject: "npm:^3.0.0" - checksum: 17cdccaf50f8aac80a109dba2e2ee5e800aec9a9d382ef9deab66c56b34269e4c9ac720276d5ffa722764304a1180ae436df077da0dd05548cfae0209708ba4d + checksum: 10c0/17cdccaf50f8aac80a109dba2e2ee5e800aec9a9d382ef9deab66c56b34269e4c9ac720276d5ffa722764304a1180ae436df077da0dd05548cfae0209708ba4d languageName: node linkType: hard "has-values@npm:^0.1.4": version: 0.1.4 resolution: "has-values@npm:0.1.4" - checksum: a8f00ad862c20289798c35243d5bd0b0a97dd44b668c2204afe082e0265f2d0bf3b89fc8cc0ef01a52b49f10aa35cf85c336ee3a5f1cac96ed490f5e901cdbf2 + checksum: 10c0/a8f00ad862c20289798c35243d5bd0b0a97dd44b668c2204afe082e0265f2d0bf3b89fc8cc0ef01a52b49f10aa35cf85c336ee3a5f1cac96ed490f5e901cdbf2 languageName: node linkType: hard @@ -20304,7 +20304,7 @@ __metadata: dependencies: is-number: "npm:^3.0.0" kind-of: "npm:^4.0.0" - checksum: a6f2a1cc6b2e43eacc68e62e71ad6890def7f4b13d2ef06b4ad3ee156c23e470e6df144b9b467701908e17633411f1075fdff0cab45fb66c5e0584d89b25f35e + checksum: 10c0/a6f2a1cc6b2e43eacc68e62e71ad6890def7f4b13d2ef06b4ad3ee156c23e470e6df144b9b467701908e17633411f1075fdff0cab45fb66c5e0584d89b25f35e languageName: node linkType: hard @@ -20313,7 +20313,7 @@ __metadata: resolution: "has@npm:1.0.3" dependencies: function-bind: "npm:^1.1.1" - checksum: e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b + checksum: 10c0/e1da0d2bd109f116b632f27782cf23182b42f14972ca9540e4c5aa7e52647407a0a4a76937334fddcb56befe94a3494825ec22b19b51f5e5507c3153fd1a5e1b languageName: node linkType: hard @@ -20324,7 +20324,7 @@ __metadata: inherits: "npm:^2.0.4" readable-stream: "npm:^3.6.0" safe-buffer: "npm:^5.2.0" - checksum: 663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 languageName: node linkType: hard @@ -20334,7 +20334,7 @@ __metadata: dependencies: inherits: "npm:^2.0.3" minimalistic-assert: "npm:^1.0.1" - checksum: 41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 languageName: node linkType: hard @@ -20343,7 +20343,7 @@ __metadata: resolution: "hasown@npm:2.0.0" dependencies: function-bind: "npm:^1.1.2" - checksum: 5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc + checksum: 10c0/5d415b114f410661208c95e7ab4879f1cc2765b8daceff4dc8718317d1cb7b9ffa7c5d1eafd9a4389c9aab7445d6ea88e05f3096cb1e529618b55304956b87fc languageName: node linkType: hard @@ -20352,7 +20352,7 @@ __metadata: resolution: "he@npm:1.2.0" bin: he: bin/he - checksum: a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 languageName: node linkType: hard @@ -20362,14 +20362,14 @@ __metadata: dependencies: capital-case: "npm:^1.0.4" tslib: "npm:^2.0.3" - checksum: c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb + checksum: 10c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb languageName: node linkType: hard "headers-polyfill@npm:3.2.5": version: 3.2.5 resolution: "headers-polyfill@npm:3.2.5" - checksum: 10202f4ebfaecd6aa31305f29664f876ac01d9174a3fb8fcc5a0df3eaf9c1767fb0d6cf6f961484f2bfd2101b6768090976f146bd88aeedd07af4e741cb2dcb7 + checksum: 10c0/10202f4ebfaecd6aa31305f29664f876ac01d9174a3fb8fcc5a0df3eaf9c1767fb0d6cf6f961484f2bfd2101b6768090976f146bd88aeedd07af4e741cb2dcb7 languageName: node linkType: hard @@ -20380,7 +20380,7 @@ __metadata: hash.js: "npm:^1.0.3" minimalistic-assert: "npm:^1.0.0" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d languageName: node linkType: hard @@ -20389,7 +20389,7 @@ __metadata: resolution: "hoist-non-react-statics@npm:3.3.2" dependencies: react-is: "npm:^16.7.0" - checksum: fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 languageName: node linkType: hard @@ -20398,14 +20398,14 @@ __metadata: resolution: "homedir-polyfill@npm:1.0.3" dependencies: parse-passwd: "npm:^1.0.0" - checksum: 3c099844f94b8b438f124bd5698bdcfef32b2d455115fb8050d7148e7f7b95fc89ba9922586c491f0e1cdebf437b1053c84ecddb8d596e109e9ac69c5b4a9e27 + checksum: 10c0/3c099844f94b8b438f124bd5698bdcfef32b2d455115fb8050d7148e7f7b95fc89ba9922586c491f0e1cdebf437b1053c84ecddb8d596e109e9ac69c5b4a9e27 languageName: node linkType: hard "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" - checksum: 317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 + checksum: 10c0/317cbc6b1bbbe23c2a40ae23f3dafe9fa349ce42a89a36f930e3f9c0530c179a3882d2ef1e4141a4c3674d6faaea862138ec55b43ad6f75e387fda2483a13c70 languageName: node linkType: hard @@ -20414,7 +20414,7 @@ __metadata: resolution: "hosted-git-info@npm:3.0.8" dependencies: lru-cache: "npm:^6.0.0" - checksum: af1392086ab3ab5576aa81af07be2f93ee1588407af18fd9752eb67502558e6ea0ffdd4be35ac6c8bef12fb9017f6e7705757e21b10b5ce7798da9106c9c0d9d + checksum: 10c0/af1392086ab3ab5576aa81af07be2f93ee1588407af18fd9752eb67502558e6ea0ffdd4be35ac6c8bef12fb9017f6e7705757e21b10b5ce7798da9106c9c0d9d languageName: node linkType: hard @@ -20423,7 +20423,7 @@ __metadata: resolution: "hosted-git-info@npm:4.1.0" dependencies: lru-cache: "npm:^6.0.0" - checksum: 150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07 + checksum: 10c0/150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07 languageName: node linkType: hard @@ -20432,7 +20432,7 @@ __metadata: resolution: "hosted-git-info@npm:6.1.1" dependencies: lru-cache: "npm:^7.5.1" - checksum: ba7158f81ae29c1b5a1e452fa517082f928051da8797a00788a84ff82b434996d34f78a875bbb688aec162bda1d4cf71d2312f44da3c896058803f5efa6ce77f + checksum: 10c0/ba7158f81ae29c1b5a1e452fa517082f928051da8797a00788a84ff82b434996d34f78a875bbb688aec162bda1d4cf71d2312f44da3c896058803f5efa6ce77f languageName: node linkType: hard @@ -20441,7 +20441,7 @@ __metadata: resolution: "hosted-git-info@npm:7.0.1" dependencies: lru-cache: "npm:^10.0.1" - checksum: 361c4254f717f06d581a5a90aa0156a945e662e05ebbb533c1fa9935f10886d8247db48cbbcf9667f02e519e6479bf16dcdcf3124c3030e76c4c3ca2c88ee9d3 + checksum: 10c0/361c4254f717f06d581a5a90aa0156a945e662e05ebbb533c1fa9935f10886d8247db48cbbcf9667f02e519e6479bf16dcdcf3124c3030e76c4c3ca2c88ee9d3 languageName: node linkType: hard @@ -20453,7 +20453,7 @@ __metadata: obuf: "npm:^1.0.0" readable-stream: "npm:^2.0.1" wbuf: "npm:^1.1.0" - checksum: 55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 + checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 languageName: node linkType: hard @@ -20462,21 +20462,21 @@ __metadata: resolution: "html-encoding-sniffer@npm:3.0.0" dependencies: whatwg-encoding: "npm:^2.0.0" - checksum: b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 + checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 languageName: node linkType: hard "html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": version: 2.4.0 resolution: "html-entities@npm:2.4.0" - checksum: 42bbd5d91f451625d7e35aaed41c8cd110054c0d0970764cb58df467b3f27f20199e8cf7b4aebc8d4eeaf17a27c0d1fb165f2852db85de200995d0f009c9011d + checksum: 10c0/42bbd5d91f451625d7e35aaed41c8cd110054c0d0970764cb58df467b3f27f20199e8cf7b4aebc8d4eeaf17a27c0d1fb165f2852db85de200995d0f009c9011d languageName: node linkType: hard "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" - checksum: 208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 languageName: node linkType: hard @@ -20493,7 +20493,7 @@ __metadata: terser: "npm:^5.10.0" bin: html-minifier-terser: cli.js - checksum: 1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a + checksum: 10c0/1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a languageName: node linkType: hard @@ -20510,14 +20510,14 @@ __metadata: uglify-js: "npm:^3.5.1" bin: html-minifier: ./cli.js - checksum: 38c2d1cab49593671b104e3bc120b1c5fdf00c75930fcb32e257322219c9d31515af6b39af76e8ecd71fdf3a77d168f8b7b7ce02beba0b72eb5631599b5561bc + checksum: 10c0/38c2d1cab49593671b104e3bc120b1c5fdf00c75930fcb32e257322219c9d31515af6b39af76e8ecd71fdf3a77d168f8b7b7ce02beba0b72eb5631599b5561bc languageName: node linkType: hard "html-tags@npm:^3.1.0": version: 3.3.1 resolution: "html-tags@npm:3.3.1" - checksum: 680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 + checksum: 10c0/680165e12baa51bad7397452d247dbcc5a5c29dac0e6754b1187eee3bf26f514bc1907a431dd2f7eb56207611ae595ee76a0acc8eaa0d931e72c791dd6463d79 languageName: node linkType: hard @@ -20530,7 +20530,7 @@ __metadata: dom-serializer: "npm:^2.0.0" htmlparser2: "npm:^8.0.1" selderee: "npm:^0.10.0" - checksum: 524a97f545efc67f8aa606ad92947e3984a3498f6ba7f42a7932aae89a1fb7fa35036d569b7561d8b7ceb962888a5b7e190d7f50ac04ba01e9189f35d728b926 + checksum: 10c0/524a97f545efc67f8aa606ad92947e3984a3498f6ba7f42a7932aae89a1fb7fa35036d569b7561d8b7ceb962888a5b7e190d7f50ac04ba01e9189f35d728b926 languageName: node linkType: hard @@ -20543,7 +20543,7 @@ __metadata: dom-serializer: "npm:^2.0.0" htmlparser2: "npm:^8.0.2" selderee: "npm:^0.11.0" - checksum: 5d2c77b798cf88a81b1da2fc1ea1a3b3e2ff49fe5a3d812392f802fff18ec315cf0969bd7846ef2eb7df8c37f463bc63e8cbdcf84e42696c6f3e15dfa61cdf4f + checksum: 10c0/5d2c77b798cf88a81b1da2fc1ea1a3b3e2ff49fe5a3d812392f802fff18ec315cf0969bd7846ef2eb7df8c37f463bc63e8cbdcf84e42696c6f3e15dfa61cdf4f languageName: node linkType: hard @@ -20558,7 +20558,7 @@ __metadata: tapable: "npm:^2.0.0" peerDependencies: webpack: ^5.20.0 - checksum: fd7b9882a7b44b78711d3489fd571308372a915924c2e619ad8a08d9100a17ae8899a3d3bb1934c326d45bf942330a693206088ba80f292dd6574d9e33c67a43 + checksum: 10c0/fd7b9882a7b44b78711d3489fd571308372a915924c2e619ad8a08d9100a17ae8899a3d3bb1934c326d45bf942330a693206088ba80f292dd6574d9e33c67a43 languageName: node linkType: hard @@ -20570,7 +20570,7 @@ __metadata: domhandler: "npm:^3.3.0" domutils: "npm:^2.4.2" entities: "npm:^2.0.0" - checksum: 3f276f7ac518930f5330cfe5129dd5764a63e9bae6f57350e90b26affc94b11b2fb6750f056fed245b726d500e78197b4a09c7108c71964fe91303e6e2a29107 + checksum: 10c0/3f276f7ac518930f5330cfe5129dd5764a63e9bae6f57350e90b26affc94b11b2fb6750f056fed245b726d500e78197b4a09c7108c71964fe91303e6e2a29107 languageName: node linkType: hard @@ -20582,7 +20582,7 @@ __metadata: domhandler: "npm:^4.0.0" domutils: "npm:^2.5.2" entities: "npm:^2.0.0" - checksum: 3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 + checksum: 10c0/3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 languageName: node linkType: hard @@ -20594,21 +20594,21 @@ __metadata: domhandler: "npm:^5.0.3" domutils: "npm:^3.0.1" entities: "npm:^4.4.0" - checksum: 609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 + checksum: 10c0/609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 languageName: node linkType: hard "http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" - checksum: ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc languageName: node linkType: hard "http-deceiver@npm:^1.2.7": version: 1.2.7 resolution: "http-deceiver@npm:1.2.7" - checksum: 8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 + checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 languageName: node linkType: hard @@ -20621,7 +20621,7 @@ __metadata: setprototypeof: "npm:1.2.0" statuses: "npm:2.0.1" toidentifier: "npm:1.0.1" - checksum: fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 languageName: node linkType: hard @@ -20633,14 +20633,14 @@ __metadata: inherits: "npm:2.0.3" setprototypeof: "npm:1.1.0" statuses: "npm:>= 1.4.0 < 2" - checksum: 17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 languageName: node linkType: hard "http-parser-js@npm:>=0.5.1": version: 0.5.8 resolution: "http-parser-js@npm:0.5.8" - checksum: 4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 + checksum: 10c0/4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 languageName: node linkType: hard @@ -20651,7 +20651,7 @@ __metadata: "@tootallnate/once": "npm:2" agent-base: "npm:6" debug: "npm:4" - checksum: 32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 languageName: node linkType: hard @@ -20661,7 +20661,7 @@ __metadata: dependencies: agent-base: "npm:^7.1.0" debug: "npm:^4.3.4" - checksum: c7f13487f22209e334d50923c5bbfc5abdeeec19d2adc6780172cbeecd1b95df1543f35842ce2a7149cab43c4ba460ac6ab2e05ecc5e36f399f2ff0a829686db + checksum: 10c0/c7f13487f22209e334d50923c5bbfc5abdeeec19d2adc6780172cbeecd1b95df1543f35842ce2a7149cab43c4ba460ac6ab2e05ecc5e36f399f2ff0a829686db languageName: node linkType: hard @@ -20671,7 +20671,7 @@ __metadata: dependencies: agent-base: "npm:^7.1.0" debug: "npm:^4.3.4" - checksum: a11574ff39436cee3c7bc67f259444097b09474605846ddd8edf0bf4ad8644be8533db1aa463426e376865047d05dc22755e638632819317c0c2f1b2196657c8 + checksum: 10c0/a11574ff39436cee3c7bc67f259444097b09474605846ddd8edf0bf4ad8644be8533db1aa463426e376865047d05dc22755e638632819317c0c2f1b2196657c8 languageName: node linkType: hard @@ -20689,7 +20689,7 @@ __metadata: peerDependenciesMeta: "@types/express": optional: true - checksum: 25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 + checksum: 10c0/25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 languageName: node linkType: hard @@ -20700,7 +20700,7 @@ __metadata: eventemitter3: "npm:^4.0.0" follow-redirects: "npm:^1.0.0" requires-port: "npm:^1.0.0" - checksum: 148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 + checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 languageName: node linkType: hard @@ -20711,14 +20711,14 @@ __metadata: assert-plus: "npm:^1.0.0" jsprim: "npm:^2.0.2" sshpk: "npm:^1.14.1" - checksum: f8d15d8c91a5a80805530e2f401a3f83ed55162058651d86ad00df294b159a54e001b5d00e04983f7542a55865aee02d2d83d68c8499137ff2bc142553d8dfc2 + checksum: 10c0/f8d15d8c91a5a80805530e2f401a3f83ed55162058651d86ad00df294b159a54e001b5d00e04983f7542a55865aee02d2d83d68c8499137ff2bc142553d8dfc2 languageName: node linkType: hard "https-browserify@npm:^1.0.0": version: 1.0.0 resolution: "https-browserify@npm:1.0.0" - checksum: e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae + checksum: 10c0/e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae languageName: node linkType: hard @@ -20728,7 +20728,7 @@ __metadata: dependencies: agent-base: "npm:5" debug: "npm:4" - checksum: fbba3e037ec04e1850e867064a763b86dd884baae9c5f4ad380504e321068c9e9b5de79cf2f3a28ede7c36036dce905b58d9f51703c5b3884d887114f4887f77 + checksum: 10c0/fbba3e037ec04e1850e867064a763b86dd884baae9c5f4ad380504e321068c9e9b5de79cf2f3a28ede7c36036dce905b58d9f51703c5b3884d887114f4887f77 languageName: node linkType: hard @@ -20738,7 +20738,7 @@ __metadata: dependencies: agent-base: "npm:6" debug: "npm:4" - checksum: 6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 languageName: node linkType: hard @@ -20748,7 +20748,7 @@ __metadata: dependencies: agent-base: "npm:^7.0.2" debug: "npm:4" - checksum: 18fb405545c54c0c5131f3c6bedecf36c73095dac368c234e5775e655a0fa176e091d9fd651c9b9e9daadf6dac415116de04f76d791642216b32cc32a8592ebc + checksum: 10c0/18fb405545c54c0c5131f3c6bedecf36c73095dac368c234e5775e655a0fa176e091d9fd651c9b9e9daadf6dac415116de04f76d791642216b32cc32a8592ebc languageName: node linkType: hard @@ -20758,28 +20758,28 @@ __metadata: dependencies: agent-base: "npm:^7.0.2" debug: "npm:4" - checksum: 7735eb90073db087e7e79312e3d97c8c04baf7ea7ca7b013382b6a45abbaa61b281041a98f4e13c8c80d88f843785bcc84ba189165b4b4087b1e3496ba656d77 + checksum: 10c0/7735eb90073db087e7e79312e3d97c8c04baf7ea7ca7b013382b6a45abbaa61b281041a98f4e13c8c80d88f843785bcc84ba189165b4b4087b1e3496ba656d77 languageName: node linkType: hard "human-signals@npm:^1.1.1": version: 1.1.1 resolution: "human-signals@npm:1.1.1" - checksum: 18810ed239a7a5e23fb6c32d0fd4be75d7cd337a07ad59b8dbf0794cb0761e6e628349ee04c409e605fe55344716eab5d0a47a62ba2a2d0d367c89a2b4247b1e + checksum: 10c0/18810ed239a7a5e23fb6c32d0fd4be75d7cd337a07ad59b8dbf0794cb0761e6e628349ee04c409e605fe55344716eab5d0a47a62ba2a2d0d367c89a2b4247b1e languageName: node linkType: hard "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" - checksum: 695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a languageName: node linkType: hard "human-signals@npm:^5.0.0": version: 5.0.0 resolution: "human-signals@npm:5.0.0" - checksum: 5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 + checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82 languageName: node linkType: hard @@ -20788,7 +20788,7 @@ __metadata: resolution: "humanize-ms@npm:1.2.1" dependencies: ms: "npm:^2.0.0" - checksum: f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a languageName: node linkType: hard @@ -20797,14 +20797,14 @@ __metadata: resolution: "humanize-string@npm:2.1.0" dependencies: decamelize: "npm:^2.0.0" - checksum: a0ed69264b5069137afb369b46e18e8dbeb67edc7fb2ad1de18554108943e2fc59155f898013fb7a2f03522879adad7c9a93f1c88428844bcbee006c98db8f0a + checksum: 10c0/a0ed69264b5069137afb369b46e18e8dbeb67edc7fb2ad1de18554108943e2fc59155f898013fb7a2f03522879adad7c9a93f1c88428844bcbee006c98db8f0a languageName: node linkType: hard "hyperdyperid@npm:^1.2.0": version: 1.2.0 resolution: "hyperdyperid@npm:1.2.0" - checksum: 885ba3177c7181d315a856ee9c0005ff8eb5dcb1ce9e9d61be70987895d934d84686c37c981cceeb53216d4c9c15c1cc25f1804e84cc6a74a16993c5d7fd0893 + checksum: 10c0/885ba3177c7181d315a856ee9c0005ff8eb5dcb1ce9e9d61be70987895d934d84686c37c981cceeb53216d4c9c15c1cc25f1804e84cc6a74a16993c5d7fd0893 languageName: node linkType: hard @@ -20813,7 +20813,7 @@ __metadata: resolution: "iconv-lite@npm:0.4.24" dependencies: safer-buffer: "npm:>= 2.1.2 < 3" - checksum: c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 languageName: node linkType: hard @@ -20822,7 +20822,7 @@ __metadata: resolution: "iconv-lite@npm:0.6.3" dependencies: safer-buffer: "npm:>= 2.1.2 < 3.0.0" - checksum: 98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 languageName: node linkType: hard @@ -20831,49 +20831,49 @@ __metadata: resolution: "icss-utils@npm:5.1.0" peerDependencies: postcss: ^8.1.0 - checksum: 39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d + checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d languageName: node linkType: hard "idb@npm:7.0.1": version: 7.0.1 resolution: "idb@npm:7.0.1" - checksum: 240f63358faefb1039a23e9af787005b7d6995f5e2ff4b8eab123a3052889b73483164e35bde1e8e6e04205b481bf1541f9330e91490a4b172608a87d229d742 + checksum: 10c0/240f63358faefb1039a23e9af787005b7d6995f5e2ff4b8eab123a3052889b73483164e35bde1e8e6e04205b481bf1541f9330e91490a4b172608a87d229d742 languageName: node linkType: hard "idb@npm:7.1.1": version: 7.1.1 resolution: "idb@npm:7.1.1" - checksum: 72418e4397638797ee2089f97b45fc29f937b830bc0eb4126f4a9889ecf10320ceacf3a177fe5d7ffaf6b4fe38b20bbd210151549bfdc881db8081eed41c870d + checksum: 10c0/72418e4397638797ee2089f97b45fc29f937b830bc0eb4126f4a9889ecf10320ceacf3a177fe5d7ffaf6b4fe38b20bbd210151549bfdc881db8081eed41c870d languageName: node linkType: hard "ieee754@npm:1.1.13": version: 1.1.13 resolution: "ieee754@npm:1.1.13" - checksum: eaf8c87e014282bfb5b13670991a2ed086eaef35ccc3fb713833863f2e7213041b2c29246adbc5f6561d51d53861c3b11f3b82b28fc6fa1352edeff381f056e5 + checksum: 10c0/eaf8c87e014282bfb5b13670991a2ed086eaef35ccc3fb713833863f2e7213041b2c29246adbc5f6561d51d53861c3b11f3b82b28fc6fa1352edeff381f056e5 languageName: node linkType: hard "ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" - checksum: b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb languageName: node linkType: hard "iferr@npm:^0.1.5": version: 0.1.5 resolution: "iferr@npm:0.1.5" - checksum: e0669b1757d0501b43a158321945d1cc1fe56f28a972df2f88a5818f05c8853c7669ba5d6cfbbf9a1a312850699de6e528626df108d559005df7e15d16ee334c + checksum: 10c0/e0669b1757d0501b43a158321945d1cc1fe56f28a972df2f88a5818f05c8853c7669ba5d6cfbbf9a1a312850699de6e528626df108d559005df7e15d16ee334c languageName: node linkType: hard "ignore-by-default@npm:^1.0.1": version: 1.0.1 resolution: "ignore-by-default@npm:1.0.1" - checksum: 9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 + checksum: 10c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 languageName: node linkType: hard @@ -20882,7 +20882,7 @@ __metadata: resolution: "ignore-walk@npm:5.0.1" dependencies: minimatch: "npm:^5.0.1" - checksum: 0d157a54d6d11af0c3059fdc7679eef3b074e9a663d110a76c72788e2fb5b22087e08b21ab767718187ac3396aca4d0aa6c6473f925b19a74d9a00480ca7a76e + checksum: 10c0/0d157a54d6d11af0c3059fdc7679eef3b074e9a663d110a76c72788e2fb5b22087e08b21ab767718187ac3396aca4d0aa6c6473f925b19a74d9a00480ca7a76e languageName: node linkType: hard @@ -20891,21 +20891,21 @@ __metadata: resolution: "ignore-walk@npm:6.0.4" dependencies: minimatch: "npm:^9.0.0" - checksum: 6dd2ea369f3d32d90cb26ca6647bc6e112ed483433270ed89b8055dd708d00777c2cbc85b93b43f53e2100851277fd1539796a758ae4c64b84445d4f1da5fd8f + checksum: 10c0/6dd2ea369f3d32d90cb26ca6647bc6e112ed483433270ed89b8055dd708d00777c2cbc85b93b43f53e2100851277fd1539796a758ae4c64b84445d4f1da5fd8f languageName: node linkType: hard "ignore@npm:5.3.0, ignore@npm:^5.0.4, ignore@npm:^5.2.0, ignore@npm:^5.2.4": version: 5.3.0 resolution: "ignore@npm:5.3.0" - checksum: dc06bea5c23aae65d0725a957a0638b57e235ae4568dda51ca142053ed2c352de7e3bc93a69b2b32ac31966a1952e9a93c5ef2e2ab7c6b06aef9808f6b55b571 + checksum: 10c0/dc06bea5c23aae65d0725a957a0638b57e235ae4568dda51ca142053ed2c352de7e3bc93a69b2b32ac31966a1952e9a93c5ef2e2ab7c6b06aef9808f6b55b571 languageName: node linkType: hard "immutable@npm:~3.7.6": version: 3.7.6 resolution: "immutable@npm:3.7.6" - checksum: efe2bbb2620aa897afbb79545b9eda4dd3dc072e05ae7004895a7efb43187e4265612a88f8723f391eb1c87c46c52fd11e2d1968e42404450c63e49558d7ca4e + checksum: 10c0/efe2bbb2620aa897afbb79545b9eda4dd3dc072e05ae7004895a7efb43187e4265612a88f8723f391eb1c87c46c52fd11e2d1968e42404450c63e49558d7ca4e languageName: node linkType: hard @@ -20915,14 +20915,14 @@ __metadata: dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" - checksum: 7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 languageName: node linkType: hard "import-from@npm:4.0.0": version: 4.0.0 resolution: "import-from@npm:4.0.0" - checksum: 7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 + checksum: 10c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 languageName: node linkType: hard @@ -20934,35 +20934,35 @@ __metadata: resolve-cwd: "npm:^3.0.0" bin: import-local-fixture: fixtures/cli.js - checksum: c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 + checksum: 10c0/c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 languageName: node linkType: hard "imurmurhash@npm:^0.1.4": version: 0.1.4 resolution: "imurmurhash@npm:0.1.4" - checksum: 8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 languageName: node linkType: hard "indent-string@npm:5.0.0, indent-string@npm:^5.0.0": version: 5.0.0 resolution: "indent-string@npm:5.0.0" - checksum: 8ee77b57d92e71745e133f6f444d6fa3ed503ad0e1bcd7e80c8da08b42375c07117128d670589725ed07b1978065803fa86318c309ba45415b7fe13e7f170220 + checksum: 10c0/8ee77b57d92e71745e133f6f444d6fa3ed503ad0e1bcd7e80c8da08b42375c07117128d670589725ed07b1978065803fa86318c309ba45415b7fe13e7f170220 languageName: node linkType: hard "indent-string@npm:^4.0.0": version: 4.0.0 resolution: "indent-string@npm:4.0.0" - checksum: 1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f languageName: node linkType: hard "infer-owner@npm:^1.0.3": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" - checksum: a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 languageName: node linkType: hard @@ -20972,49 +20972,49 @@ __metadata: dependencies: once: "npm:^1.3.0" wrappy: "npm:1" - checksum: 7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 languageName: node linkType: hard "inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" - checksum: 4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 languageName: node linkType: hard "inherits@npm:2.0.1": version: 2.0.1 resolution: "inherits@npm:2.0.1" - checksum: bfc7b37c21a2cddb272adc65b053b1716612d408bb2c9a4e5c32679dc2b08032aadd67880c405be3dff060a62e45b353fc3d9fa79a3067ad7a3deb6a283cc5c6 + checksum: 10c0/bfc7b37c21a2cddb272adc65b053b1716612d408bb2c9a4e5c32679dc2b08032aadd67880c405be3dff060a62e45b353fc3d9fa79a3067ad7a3deb6a283cc5c6 languageName: node linkType: hard "inherits@npm:2.0.3": version: 2.0.3 resolution: "inherits@npm:2.0.3" - checksum: 6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 languageName: node linkType: hard "ini@npm:2.0.0": version: 2.0.0 resolution: "ini@npm:2.0.0" - checksum: 2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 + checksum: 10c0/2e0c8f386369139029da87819438b20a1ff3fe58372d93fb1a86e9d9344125ace3a806b8ec4eb160a46e64cbc422fe68251869441676af49b7fc441af2389c25 languageName: node linkType: hard "ini@npm:4.1.1": version: 4.1.1 resolution: "ini@npm:4.1.1" - checksum: 7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 + checksum: 10c0/7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211 languageName: node linkType: hard "ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.8, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" - checksum: ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a languageName: node linkType: hard @@ -21029,7 +21029,7 @@ __metadata: semver: "npm:^7.3.5" validate-npm-package-license: "npm:^3.0.4" validate-npm-package-name: "npm:^5.0.0" - checksum: bf23946580af21edb07cb2847516625f361775b2f7b26d53ef629fe6cf920b491d41e63343419c89567999e7e568396f98ec107b733ac3679e52222f518ee28b + checksum: 10c0/bf23946580af21edb07cb2847516625f361775b2f7b26d53ef629fe6cf920b491d41e63343419c89567999e7e568396f98ec107b733ac3679e52222f518ee28b languageName: node linkType: hard @@ -21050,7 +21050,7 @@ __metadata: string-width: "npm:^4.1.0" strip-ansi: "npm:^6.0.0" through: "npm:^2.3.6" - checksum: 96e75974cfd863fe6653c075e41fa5f1a290896df141189816db945debabcd92d3277145f11aef8d2cfca5409ab003ccdd18a099744814057b52a2f27aeb8c94 + checksum: 10c0/96e75974cfd863fe6653c075e41fa5f1a290896df141189816db945debabcd92d3277145f11aef8d2cfca5409ab003ccdd18a099744814057b52a2f27aeb8c94 languageName: node linkType: hard @@ -21073,7 +21073,7 @@ __metadata: strip-ansi: "npm:^6.0.0" through: "npm:^2.3.6" wrap-ansi: "npm:^7.0.0" - checksum: e3e64e10f5daeeb8f770f1310acceb4aab593c10d693e7676ecd4a5b023d5b865b484fec7ead516e5e394db70eff687ef85459f75890f11a99ceadc0f4adce18 + checksum: 10c0/e3e64e10f5daeeb8f770f1310acceb4aab593c10d693e7676ecd4a5b023d5b865b484fec7ead516e5e394db70eff687ef85459f75890f11a99ceadc0f4adce18 languageName: node linkType: hard @@ -21084,21 +21084,21 @@ __metadata: get-intrinsic: "npm:^1.2.0" has: "npm:^1.0.3" side-channel: "npm:^1.0.4" - checksum: 66d8a66b4b5310c042e8ad00ce895dc55cb25165a3a7da0d7862ca18d69d3b1ba86511b4bf3baf4273d744d3f6e9154574af45189ef11135a444945309e39e4a + checksum: 10c0/66d8a66b4b5310c042e8ad00ce895dc55cb25165a3a7da0d7862ca18d69d3b1ba86511b4bf3baf4273d744d3f6e9154574af45189ef11135a444945309e39e4a languageName: node linkType: hard "interpret@npm:^3.1.1": version: 3.1.1 resolution: "interpret@npm:3.1.1" - checksum: 6f3c4d0aa6ec1b43a8862375588a249e3c917739895cbe67fe12f0a76260ea632af51e8e2431b50fbcd0145356dc28ca147be08dbe6a523739fd55c0f91dc2a5 + checksum: 10c0/6f3c4d0aa6ec1b43a8862375588a249e3c917739895cbe67fe12f0a76260ea632af51e8e2431b50fbcd0145356dc28ca147be08dbe6a523739fd55c0f91dc2a5 languageName: node linkType: hard "intl-tel-input@npm:^17.0.19": version: 17.0.21 resolution: "intl-tel-input@npm:17.0.21" - checksum: 2c6c0331046f69fcf880812ab766266e568c3e8b44d50eb628e5bb305e73c2cf4b39965a3422efc54557f46cf983b5b91e9d6c9965ec9513c6eb8c47a790b8c3 + checksum: 10c0/2c6c0331046f69fcf880812ab766266e568c3e8b44d50eb628e5bb305e73c2cf4b39965a3422efc54557f46cf983b5b91e9d6c9965ec9513c6eb8c47a790b8c3 languageName: node linkType: hard @@ -21107,7 +21107,7 @@ __metadata: resolution: "invariant@npm:2.2.4" dependencies: loose-envify: "npm:^1.0.0" - checksum: 5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc languageName: node linkType: hard @@ -21124,35 +21124,35 @@ __metadata: redis-errors: "npm:^1.2.0" redis-parser: "npm:^3.0.0" standard-as-callback: "npm:^2.1.0" - checksum: 0dd2b5b8004e891f5b62edf18ac223194f1f5204698ec827c903e789ea05b0b36f73395491749ec63c66470485bdfb228ccdf1714fbf631a0f78f33211f2c883 + checksum: 10c0/0dd2b5b8004e891f5b62edf18ac223194f1f5204698ec827c903e789ea05b0b36f73395491749ec63c66470485bdfb228ccdf1714fbf631a0f78f33211f2c883 languageName: node linkType: hard "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" - checksum: 8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958 + checksum: 10c0/8d186cc5585f57372847ae29b6eba258c68862055e18a75cc4933327232cb5c107f89800ce29715d542eef2c254fbb68b382e780a7414f9ee7caf60b7a473958 languageName: node linkType: hard "ipaddr.js@npm:1.9.1": version: 1.9.1 resolution: "ipaddr.js@npm:1.9.1" - checksum: 0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a languageName: node linkType: hard "ipaddr.js@npm:^2.0.1": version: 2.1.0 resolution: "ipaddr.js@npm:2.1.0" - checksum: 9aa43ff99771e3d14ab3683df3909b3b033fe81337646bc63780b00ec9bc51d4a696a047c0b261c05867c0a25086ab03f0ce32ea444a6b39e10fac1315d53cab + checksum: 10c0/9aa43ff99771e3d14ab3683df3909b3b033fe81337646bc63780b00ec9bc51d4a696a047c0b261c05867c0a25086ab03f0ce32ea444a6b39e10fac1315d53cab languageName: node linkType: hard "is-absolute-url@npm:^3.0.0": version: 3.0.3 resolution: "is-absolute-url@npm:3.0.3" - checksum: 04c415974c32e73a83d3a21a9bea18fc4e2c14fbe6bbd64832cf1e67a75ade2af0e900f552f0b8a447f1305f5ffc9d143ccd8d005dbe715d198c359d342b86f0 + checksum: 10c0/04c415974c32e73a83d3a21a9bea18fc4e2c14fbe6bbd64832cf1e67a75ade2af0e900f552f0b8a447f1305f5ffc9d143ccd8d005dbe715d198c359d342b86f0 languageName: node linkType: hard @@ -21162,7 +21162,7 @@ __metadata: dependencies: is-relative: "npm:^1.0.0" is-windows: "npm:^1.0.1" - checksum: 422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 + checksum: 10c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 languageName: node linkType: hard @@ -21171,7 +21171,7 @@ __metadata: resolution: "is-accessor-descriptor@npm:0.1.6" dependencies: kind-of: "npm:^3.0.2" - checksum: f2c314b314ec6e8a6e559351bff3c7ee9aed7a5e9c6f61dd8cb9e1382c8bfe33dca3f0e0af13daf9ded9e6e66390ff23b4acfb615d7a249009a51506a7b0f151 + checksum: 10c0/f2c314b314ec6e8a6e559351bff3c7ee9aed7a5e9c6f61dd8cb9e1382c8bfe33dca3f0e0af13daf9ded9e6e66390ff23b4acfb615d7a249009a51506a7b0f151 languageName: node linkType: hard @@ -21180,7 +21180,7 @@ __metadata: resolution: "is-accessor-descriptor@npm:1.0.0" dependencies: kind-of: "npm:^6.0.0" - checksum: d68edafd8ef133e9003837f3c80f4e5b82b12ab5456c772d1796857671ae83e3a426ed225a28a7e35bceabbce68c1f1ffdabf47e6d53f5a4d6c4558776ad3c20 + checksum: 10c0/d68edafd8ef133e9003837f3c80f4e5b82b12ab5456c772d1796857671ae83e3a426ed225a28a7e35bceabbce68c1f1ffdabf47e6d53f5a4d6c4558776ad3c20 languageName: node linkType: hard @@ -21190,7 +21190,7 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" has-tostringtag: "npm:^1.0.0" - checksum: 5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f languageName: node linkType: hard @@ -21201,14 +21201,14 @@ __metadata: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.2.0" is-typed-array: "npm:^1.1.10" - checksum: 40ed13a5f5746ac3ae2f2e463687d9b5a3f5fd0086f970fb4898f0253c2a5ec2e3caea2d664dd8f54761b1c1948609702416921a22faebe160c7640a9217c80e + checksum: 10c0/40ed13a5f5746ac3ae2f2e463687d9b5a3f5fd0086f970fb4898f0253c2a5ec2e3caea2d664dd8f54761b1c1948609702416921a22faebe160c7640a9217c80e languageName: node linkType: hard "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" - checksum: e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 languageName: node linkType: hard @@ -21217,7 +21217,7 @@ __metadata: resolution: "is-async-function@npm:2.0.0" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: 787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 languageName: node linkType: hard @@ -21226,7 +21226,7 @@ __metadata: resolution: "is-bigint@npm:1.0.4" dependencies: has-bigints: "npm:^1.0.1" - checksum: eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 languageName: node linkType: hard @@ -21235,7 +21235,7 @@ __metadata: resolution: "is-binary-path@npm:1.0.1" dependencies: binary-extensions: "npm:^1.0.0" - checksum: 16e456fa3782eaf3d8e28d382b750507e3d54ff6694df8a1b2c6498da321e2ead311de9c42e653d8fb3213de72bac204b5f97e4a110cda8a72f17b1c1b4eb643 + checksum: 10c0/16e456fa3782eaf3d8e28d382b750507e3d54ff6694df8a1b2c6498da321e2ead311de9c42e653d8fb3213de72bac204b5f97e4a110cda8a72f17b1c1b4eb643 languageName: node linkType: hard @@ -21244,7 +21244,7 @@ __metadata: resolution: "is-binary-path@npm:2.1.0" dependencies: binary-extensions: "npm:^2.0.0" - checksum: a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 languageName: node linkType: hard @@ -21254,21 +21254,21 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" has-tostringtag: "npm:^1.0.0" - checksum: 6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 languageName: node linkType: hard "is-buffer@npm:^1.1.5, is-buffer@npm:~1.1.6": version: 1.1.6 resolution: "is-buffer@npm:1.1.6" - checksum: ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 + checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 languageName: node linkType: hard "is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" - checksum: ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f languageName: node linkType: hard @@ -21279,7 +21279,7 @@ __metadata: ci-info: "npm:^3.2.0" bin: is-ci: bin.js - checksum: 0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 + checksum: 10c0/0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 languageName: node linkType: hard @@ -21288,7 +21288,7 @@ __metadata: resolution: "is-core-module@npm:2.13.1" dependencies: hasown: "npm:^2.0.0" - checksum: 2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 + checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 languageName: node linkType: hard @@ -21297,7 +21297,7 @@ __metadata: resolution: "is-data-descriptor@npm:0.1.4" dependencies: kind-of: "npm:^3.0.2" - checksum: 32fda7e966b2c1f093230d5ef2aad1bb86e43e7280da50961e38ec31dbd8a50570a2911fd45277d321074a0762adc98e8462bb62820462594128857225e90d21 + checksum: 10c0/32fda7e966b2c1f093230d5ef2aad1bb86e43e7280da50961e38ec31dbd8a50570a2911fd45277d321074a0762adc98e8462bb62820462594128857225e90d21 languageName: node linkType: hard @@ -21306,7 +21306,7 @@ __metadata: resolution: "is-data-descriptor@npm:1.0.0" dependencies: kind-of: "npm:^6.0.0" - checksum: bed31385d7d1a0dbb2ab3077faf2188acf42609192dca4e320ed7b3dc14a9d70c00658956cdaa2c0402be136c6b56e183973ad81b730fd90ab427fb6fd3608be + checksum: 10c0/bed31385d7d1a0dbb2ab3077faf2188acf42609192dca4e320ed7b3dc14a9d70c00658956cdaa2c0402be136c6b56e183973ad81b730fd90ab427fb6fd3608be languageName: node linkType: hard @@ -21315,14 +21315,14 @@ __metadata: resolution: "is-date-object@npm:1.0.5" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e languageName: node linkType: hard "is-deflate@npm:^1.0.0": version: 1.0.0 resolution: "is-deflate@npm:1.0.0" - checksum: 35f7ffcbef3549dd8a4d8df5dc09b4f4656a0fc88326e8b5201cda54114a9c2d8efb689d87c16f3f35c95bd71dcf13dc790d62b7504745b42c53ab4b40238f5a + checksum: 10c0/35f7ffcbef3549dd8a4d8df5dc09b4f4656a0fc88326e8b5201cda54114a9c2d8efb689d87c16f3f35c95bd71dcf13dc790d62b7504745b42c53ab4b40238f5a languageName: node linkType: hard @@ -21333,7 +21333,7 @@ __metadata: is-accessor-descriptor: "npm:^0.1.6" is-data-descriptor: "npm:^0.1.4" kind-of: "npm:^5.0.0" - checksum: 6b8f5617b764ef8c6be3d54830184357e6cdedd8e0eddf1b97d0658616ac170bfdbc7c1ad00e0aa9f5b767acdb9d6c63d4df936501784b34936bd0f9acf3b665 + checksum: 10c0/6b8f5617b764ef8c6be3d54830184357e6cdedd8e0eddf1b97d0658616ac170bfdbc7c1ad00e0aa9f5b767acdb9d6c63d4df936501784b34936bd0f9acf3b665 languageName: node linkType: hard @@ -21344,7 +21344,7 @@ __metadata: is-accessor-descriptor: "npm:^1.0.0" is-data-descriptor: "npm:^1.0.0" kind-of: "npm:^6.0.2" - checksum: a05169c7a87feb88fc155e3ada469090cfabb5a548a3f794358b511cc47a0871b8b95e7345be4925a22ef3df585c3923b31943b3ad6255ce563a9d97f2e221e0 + checksum: 10c0/a05169c7a87feb88fc155e3ada469090cfabb5a548a3f794358b511cc47a0871b8b95e7345be4925a22ef3df585c3923b31943b3ad6255ce563a9d97f2e221e0 languageName: node linkType: hard @@ -21353,14 +21353,14 @@ __metadata: resolution: "is-docker@npm:2.2.1" bin: is-docker: cli.js - checksum: e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc languageName: node linkType: hard "is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": version: 0.1.1 resolution: "is-extendable@npm:0.1.1" - checksum: dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 + checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 languageName: node linkType: hard @@ -21369,14 +21369,14 @@ __metadata: resolution: "is-extendable@npm:1.0.1" dependencies: is-plain-object: "npm:^2.0.4" - checksum: 1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f + checksum: 10c0/1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f languageName: node linkType: hard "is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" - checksum: 5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 languageName: node linkType: hard @@ -21385,28 +21385,28 @@ __metadata: resolution: "is-finalizationregistry@npm:1.0.2" dependencies: call-bind: "npm:^1.0.2" - checksum: 81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 languageName: node linkType: hard "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc languageName: node linkType: hard "is-fullwidth-code-point@npm:^4.0.0": version: 4.0.0 resolution: "is-fullwidth-code-point@npm:4.0.0" - checksum: df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 + checksum: 10c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 languageName: node linkType: hard "is-generator-fn@npm:^2.0.0": version: 2.1.0 resolution: "is-generator-fn@npm:2.1.0" - checksum: 2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d languageName: node linkType: hard @@ -21415,7 +21415,7 @@ __metadata: resolution: "is-generator-function@npm:1.0.10" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b languageName: node linkType: hard @@ -21424,7 +21424,7 @@ __metadata: resolution: "is-glob@npm:4.0.3" dependencies: is-extglob: "npm:^2.1.1" - checksum: 17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a languageName: node linkType: hard @@ -21433,14 +21433,14 @@ __metadata: resolution: "is-glob@npm:3.1.0" dependencies: is-extglob: "npm:^2.1.0" - checksum: ba816a35dcf5285de924a8a4654df7b183a86381d73ea3bbf3df3cc61b3ba61fdddf90ee205709a2235b210ee600ee86e5e8600093cf291a662607fd032e2ff4 + checksum: 10c0/ba816a35dcf5285de924a8a4654df7b183a86381d73ea3bbf3df3cc61b3ba61fdddf90ee205709a2235b210ee600ee86e5e8600093cf291a662607fd032e2ff4 languageName: node linkType: hard "is-gzip@npm:^1.0.0": version: 1.0.0 resolution: "is-gzip@npm:1.0.0" - checksum: cbc1db080c636a6fb0f7346e3076f8276a29a9d8b52ae67c1971a8131c43f308e98ed227d1a6f49970e6c6ebabee0568e60aed7a3579dd4e1817cddf2faaf9b7 + checksum: 10c0/cbc1db080c636a6fb0f7346e3076f8276a29a9d8b52ae67c1971a8131c43f308e98ed227d1a6f49970e6c6ebabee0568e60aed7a3579dd4e1817cddf2faaf9b7 languageName: node linkType: hard @@ -21450,7 +21450,7 @@ __metadata: dependencies: global-directory: "npm:^4.0.1" is-path-inside: "npm:^4.0.0" - checksum: 5f57745b6e75b2e9e707a26470d0cb74291d9be33c0fe0dc06c6955fe086bc2ca0a8960631b1ecb9677100eac90af33e911aec7a2c0b88097d702bfa3b76486d + checksum: 10c0/5f57745b6e75b2e9e707a26470d0cb74291d9be33c0fe0dc06c6955fe086bc2ca0a8960631b1ecb9677100eac90af33e911aec7a2c0b88097d702bfa3b76486d languageName: node linkType: hard @@ -21460,28 +21460,28 @@ __metadata: dependencies: global-dirs: "npm:^3.0.0" is-path-inside: "npm:^3.0.2" - checksum: f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d + checksum: 10c0/f3e6220ee5824b845c9ed0d4b42c24272701f1f9926936e30c0e676254ca5b34d1b92c6205cae11b283776f9529212c0cdabb20ec280a6451677d6493ca9c22d languageName: node linkType: hard "is-interactive@npm:^1.0.0": version: 1.0.0 resolution: "is-interactive@npm:1.0.0" - checksum: dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d languageName: node linkType: hard "is-interactive@npm:^2.0.0": version: 2.0.0 resolution: "is-interactive@npm:2.0.0" - checksum: 801c8f6064f85199dc6bf99b5dd98db3282e930c3bc197b32f2c5b89313bb578a07d1b8a01365c4348c2927229234f3681eb861b9c2c92bee72ff397390fa600 + checksum: 10c0/801c8f6064f85199dc6bf99b5dd98db3282e930c3bc197b32f2c5b89313bb578a07d1b8a01365c4348c2927229234f3681eb861b9c2c92bee72ff397390fa600 languageName: node linkType: hard "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" - checksum: 85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d languageName: node linkType: hard @@ -21490,14 +21490,14 @@ __metadata: resolution: "is-lower-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: c045e6a52dcc7c3857e2f8c850ded604cdc5269ff94625b03881cefc73bfc02f5099a1bc9bafa67793656711a40d4ab3e26e285a848e728506df20ead0ce8e2f + checksum: 10c0/c045e6a52dcc7c3857e2f8c850ded604cdc5269ff94625b03881cefc73bfc02f5099a1bc9bafa67793656711a40d4ab3e26e285a848e728506df20ead0ce8e2f languageName: node linkType: hard "is-map@npm:^2.0.1, is-map@npm:^2.0.2": version: 2.0.2 resolution: "is-map@npm:2.0.2" - checksum: 119ff9137a37fd131a72fab3f4ab8c9d6a24b0a1ee26b4eff14dc625900d8675a97785eea5f4174265e2006ed076cc24e89f6e57ebd080a48338d914ec9168a5 + checksum: 10c0/119ff9137a37fd131a72fab3f4ab8c9d6a24b0a1ee26b4eff14dc625900d8675a97785eea5f4174265e2006ed076cc24e89f6e57ebd080a48338d914ec9168a5 languageName: node linkType: hard @@ -21507,21 +21507,21 @@ __metadata: dependencies: call-bind: "npm:^1.0.0" define-properties: "npm:^1.1.3" - checksum: 8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 + checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 languageName: node linkType: hard "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" - checksum: eda024c158f70f2017f3415e471b818d314da5ef5be68f801b16314d4a4b6304a74cbed778acf9e2f955bb9c1c5f2935c1be0c7c99e1ad12286f45366217b6a3 + checksum: 10c0/eda024c158f70f2017f3415e471b818d314da5ef5be68f801b16314d4a4b6304a74cbed778acf9e2f955bb9c1c5f2935c1be0c7c99e1ad12286f45366217b6a3 languageName: node linkType: hard "is-node-process@npm:^1.2.0": version: 1.2.0 resolution: "is-node-process@npm:1.2.0" - checksum: 5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed + checksum: 10c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed languageName: node linkType: hard @@ -21530,7 +21530,7 @@ __metadata: resolution: "is-number-object@npm:1.0.7" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b languageName: node linkType: hard @@ -21539,77 +21539,77 @@ __metadata: resolution: "is-number@npm:3.0.0" dependencies: kind-of: "npm:^3.0.2" - checksum: e639c54640b7f029623df24d3d103901e322c0c25ea5bde97cd723c2d0d4c05857a8364ab5c58d963089dbed6bf1d0ffe975cb6aef917e2ad0ccbca653d31b4f + checksum: 10c0/e639c54640b7f029623df24d3d103901e322c0c25ea5bde97cd723c2d0d4c05857a8364ab5c58d963089dbed6bf1d0ffe975cb6aef917e2ad0ccbca653d31b4f languageName: node linkType: hard "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" - checksum: b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 languageName: node linkType: hard "is-obj@npm:^1.0.0": version: 1.0.1 resolution: "is-obj@npm:1.0.1" - checksum: 5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 + checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 languageName: node linkType: hard "is-obj@npm:^2.0.0": version: 2.0.0 resolution: "is-obj@npm:2.0.0" - checksum: 85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e + checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e languageName: node linkType: hard "is-object@npm:~1.0.1": version: 1.0.2 resolution: "is-object@npm:1.0.2" - checksum: 9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 + checksum: 10c0/9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 languageName: node linkType: hard "is-path-cwd@npm:^2.2.0": version: 2.2.0 resolution: "is-path-cwd@npm:2.2.0" - checksum: afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a + checksum: 10c0/afce71533a427a759cd0329301c18950333d7589533c2c90205bd3fdcf7b91eb92d1940493190567a433134d2128ec9325de2fd281e05be1920fbee9edd22e0a languageName: node linkType: hard "is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" - checksum: cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 languageName: node linkType: hard "is-path-inside@npm:^4.0.0": version: 4.0.0 resolution: "is-path-inside@npm:4.0.0" - checksum: 51188d7e2b1d907a9a5f7c18d99a90b60870b951ed87cf97595d9aaa429d4c010652c3350bcbf31182e7f4b0eab9a1860b43e16729b13cb1a44baaa6cdb64c46 + checksum: 10c0/51188d7e2b1d907a9a5f7c18d99a90b60870b951ed87cf97595d9aaa429d4c010652c3350bcbf31182e7f4b0eab9a1860b43e16729b13cb1a44baaa6cdb64c46 languageName: node linkType: hard "is-plain-obj@npm:^1.0.0, is-plain-obj@npm:^1.1.0": version: 1.1.0 resolution: "is-plain-obj@npm:1.1.0" - checksum: daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c + checksum: 10c0/daaee1805add26f781b413fdf192fc91d52409583be30ace35c82607d440da63cc4cac0ac55136716688d6c0a2c6ef3edb2254fecbd1fe06056d6bd15975ee8c languageName: node linkType: hard "is-plain-obj@npm:^3.0.0": version: 3.0.0 resolution: "is-plain-obj@npm:3.0.0" - checksum: 8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc + checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc languageName: node linkType: hard "is-plain-object@npm:5.0.0, is-plain-object@npm:^5.0.0": version: 5.0.0 resolution: "is-plain-object@npm:5.0.0" - checksum: 893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c languageName: node linkType: hard @@ -21618,14 +21618,14 @@ __metadata: resolution: "is-plain-object@npm:2.0.4" dependencies: isobject: "npm:^3.0.1" - checksum: f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 languageName: node linkType: hard "is-potential-custom-element-name@npm:^1.0.1": version: 1.0.1 resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 languageName: node linkType: hard @@ -21635,7 +21635,7 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" has-tostringtag: "npm:^1.0.0" - checksum: bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 languageName: node linkType: hard @@ -21644,14 +21644,14 @@ __metadata: resolution: "is-relative@npm:1.0.0" dependencies: is-unc-path: "npm:^1.0.0" - checksum: 61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 + checksum: 10c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 languageName: node linkType: hard "is-set@npm:^2.0.1, is-set@npm:^2.0.2": version: 2.0.2 resolution: "is-set@npm:2.0.2" - checksum: 5f8bd1880df8c0004ce694e315e6e1e47a3452014be792880bb274a3b2cdb952fdb60789636ca6e084c7947ca8b7ae03ccaf54c93a7fcfed228af810559e5432 + checksum: 10c0/5f8bd1880df8c0004ce694e315e6e1e47a3452014be792880bb274a3b2cdb952fdb60789636ca6e084c7947ca8b7ae03ccaf54c93a7fcfed228af810559e5432 languageName: node linkType: hard @@ -21660,7 +21660,7 @@ __metadata: resolution: "is-shared-array-buffer@npm:1.0.2" dependencies: call-bind: "npm:^1.0.2" - checksum: cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec + checksum: 10c0/cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec languageName: node linkType: hard @@ -21669,35 +21669,35 @@ __metadata: resolution: "is-ssh@npm:1.4.0" dependencies: protocols: "npm:^2.0.1" - checksum: 3eb30d1bcb4507cd25562e7ac61a1c0aa31772134c67cec9c3afe6f4d57ec17e8c2892600a608e8e583f32f53f36465b8968c0305f2855cfbff95acfd049e113 + checksum: 10c0/3eb30d1bcb4507cd25562e7ac61a1c0aa31772134c67cec9c3afe6f4d57ec17e8c2892600a608e8e583f32f53f36465b8968c0305f2855cfbff95acfd049e113 languageName: node linkType: hard "is-stream-ended@npm:^0.1.4": version: 0.1.4 resolution: "is-stream-ended@npm:0.1.4" - checksum: fa4136d91d44f54aabeedd7b8072e03e0e4a6dac4cd47000152781ccad6451787e39ae5db15e7400a261e4d8ef976713237d49c773856548dbf171cc82893afc + checksum: 10c0/fa4136d91d44f54aabeedd7b8072e03e0e4a6dac4cd47000152781ccad6451787e39ae5db15e7400a261e4d8ef976713237d49c773856548dbf171cc82893afc languageName: node linkType: hard "is-stream@npm:2.0.0": version: 2.0.0 resolution: "is-stream@npm:2.0.0" - checksum: 687f6bbd2b995573d33e6b40b2cbc8b9186a751aa3151c23e6fd2c4ca352e323a6dc010b09103f89c9ca0bf5c8c38f3fa8b74d5d9acd1c44f1499874d7e844f9 + checksum: 10c0/687f6bbd2b995573d33e6b40b2cbc8b9186a751aa3151c23e6fd2c4ca352e323a6dc010b09103f89c9ca0bf5c8c38f3fa8b74d5d9acd1c44f1499874d7e844f9 languageName: node linkType: hard "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" - checksum: 7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 languageName: node linkType: hard "is-stream@npm:^3.0.0": version: 3.0.0 resolution: "is-stream@npm:3.0.0" - checksum: eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 + checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8 languageName: node linkType: hard @@ -21706,7 +21706,7 @@ __metadata: resolution: "is-string@npm:1.0.7" dependencies: has-tostringtag: "npm:^1.0.0" - checksum: 905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 languageName: node linkType: hard @@ -21715,7 +21715,7 @@ __metadata: resolution: "is-symbol@npm:1.0.4" dependencies: has-symbols: "npm:^1.0.2" - checksum: 9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 languageName: node linkType: hard @@ -21724,7 +21724,7 @@ __metadata: resolution: "is-text-path@npm:1.0.1" dependencies: text-extensions: "npm:^1.0.0" - checksum: 61c8650c29548febb6bf69e9541fc11abbbb087a0568df7bc471ba264e95fb254def4e610631cbab4ddb0a1a07949d06416f4ebeaf37875023fb184cdb87ee84 + checksum: 10c0/61c8650c29548febb6bf69e9541fc11abbbb087a0568df7bc471ba264e95fb254def4e610631cbab4ddb0a1a07949d06416f4ebeaf37875023fb184cdb87ee84 languageName: node linkType: hard @@ -21733,14 +21733,14 @@ __metadata: resolution: "is-typed-array@npm:1.1.12" dependencies: which-typed-array: "npm:^1.1.11" - checksum: 9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae + checksum: 10c0/9863e9cc7223c6fc1c462a2c3898a7beff6b41b1ee0fabb03b7d278ae7de670b5bcbc8627db56bb66ed60902fa37d53fe5cce0fd2f7d73ac64fe5da6f409b6ae languageName: node linkType: hard "is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" - checksum: 4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec + checksum: 10c0/4c096275ba041a17a13cca33ac21c16bc4fd2d7d7eb94525e7cd2c2f2c1a3ab956e37622290642501ff4310601e413b675cf399ad6db49855527d2163b3eeeec languageName: node linkType: hard @@ -21749,28 +21749,28 @@ __metadata: resolution: "is-unc-path@npm:1.0.0" dependencies: unc-path-regex: "npm:^0.1.2" - checksum: ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e + checksum: 10c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e languageName: node linkType: hard "is-unicode-supported@npm:^0.1.0": version: 0.1.0 resolution: "is-unicode-supported@npm:0.1.0" - checksum: 00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 languageName: node linkType: hard "is-unicode-supported@npm:^1.1.0, is-unicode-supported@npm:^1.3.0": version: 1.3.0 resolution: "is-unicode-supported@npm:1.3.0" - checksum: b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a + checksum: 10c0/b8674ea95d869f6faabddc6a484767207058b91aea0250803cbf1221345cb0c56f466d4ecea375dc77f6633d248d33c47bd296fb8f4cdba0b4edba8917e83d8a languageName: node linkType: hard "is-unicode-supported@npm:^2.0.0": version: 2.0.0 resolution: "is-unicode-supported@npm:2.0.0" - checksum: 3013dfb8265fe9f9a0d1e9433fc4e766595631a8d85d60876c457b4bedc066768dab1477c553d02e2f626d88a4e019162706e04263c94d74994ef636a33b5f94 + checksum: 10c0/3013dfb8265fe9f9a0d1e9433fc4e766595631a8d85d60876c457b4bedc066768dab1477c553d02e2f626d88a4e019162706e04263c94d74994ef636a33b5f94 languageName: node linkType: hard @@ -21779,14 +21779,14 @@ __metadata: resolution: "is-upper-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 2236f416484a2643d55a07cc95443cecf96cbc5fb0de7f24c506a8bc5cc4c4de885ab56c5ec946eadd95b3b7960bff7ed51cc88511fa8e8a9d92f2f8969622d9 + checksum: 10c0/2236f416484a2643d55a07cc95443cecf96cbc5fb0de7f24c506a8bc5cc4c4de885ab56c5ec946eadd95b3b7960bff7ed51cc88511fa8e8a9d92f2f8969622d9 languageName: node linkType: hard "is-weakmap@npm:^2.0.1": version: 2.0.1 resolution: "is-weakmap@npm:2.0.1" - checksum: 9c9fec9efa7bf5030a4a927f33fff2a6976b93646259f92b517d3646c073cc5b98283a162ce75c412b060a46de07032444b530f0a4c9b6e012ef8f1741c3a987 + checksum: 10c0/9c9fec9efa7bf5030a4a927f33fff2a6976b93646259f92b517d3646c073cc5b98283a162ce75c412b060a46de07032444b530f0a4c9b6e012ef8f1741c3a987 languageName: node linkType: hard @@ -21795,7 +21795,7 @@ __metadata: resolution: "is-weakref@npm:1.0.2" dependencies: call-bind: "npm:^1.0.2" - checksum: 1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 languageName: node linkType: hard @@ -21805,28 +21805,28 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.1.1" - checksum: ef5136bd446ae4603229b897f73efd0720c6ab3ec6cc05c8d5c4b51aa9f95164713c4cad0a22ff1fedf04865ff86cae4648bc1d5eead4b6388e1150525af1cc1 + checksum: 10c0/ef5136bd446ae4603229b897f73efd0720c6ab3ec6cc05c8d5c4b51aa9f95164713c4cad0a22ff1fedf04865ff86cae4648bc1d5eead4b6388e1150525af1cc1 languageName: node linkType: hard "is-whitespace@npm:^0.3.0": version: 0.3.0 resolution: "is-whitespace@npm:0.3.0" - checksum: 2f4ef13e0195170bbb587437133ef81ed9d6aec1c5e88f4c2b9055a18a1e70f75d9a9376f0cdae64f3c519e05e5f734d6b8f9682e5cb50384843480bade785ae + checksum: 10c0/2f4ef13e0195170bbb587437133ef81ed9d6aec1c5e88f4c2b9055a18a1e70f75d9a9376f0cdae64f3c519e05e5f734d6b8f9682e5cb50384843480bade785ae languageName: node linkType: hard "is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" - checksum: b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 languageName: node linkType: hard "is-wsl@npm:^1.1.0": version: 1.1.0 resolution: "is-wsl@npm:1.1.0" - checksum: 7ad0012f21092d6f586c7faad84755a8ef0da9b9ec295e4dc82313cce4e1a93a3da3c217265016461f9b141503fe55fa6eb1fd5457d3f05e8d1bdbb48e50c13a + checksum: 10c0/7ad0012f21092d6f586c7faad84755a8ef0da9b9ec295e4dc82313cce4e1a93a3da3c217265016461f9b141503fe55fa6eb1fd5457d3f05e8d1bdbb48e50c13a languageName: node linkType: hard @@ -21835,35 +21835,35 @@ __metadata: resolution: "is-wsl@npm:2.2.0" dependencies: is-docker: "npm:^2.0.0" - checksum: a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e languageName: node linkType: hard "isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" - checksum: 18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d languageName: node linkType: hard "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" - checksum: 4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd languageName: node linkType: hard "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" - checksum: 228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d languageName: node linkType: hard "isexe@npm:^3.1.1": version: 3.1.1 resolution: "isexe@npm:3.1.1" - checksum: 9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 languageName: node linkType: hard @@ -21872,14 +21872,14 @@ __metadata: resolution: "isobject@npm:2.1.0" dependencies: isarray: "npm:1.0.0" - checksum: c4cafec73b3b2ee11be75dff8dafd283b5728235ac099b07d7873d5182553a707768e208327bbc12931b9422d8822280bf88d894a0024ff5857b3efefb480e7b + checksum: 10c0/c4cafec73b3b2ee11be75dff8dafd283b5728235ac099b07d7873d5182553a707768e208327bbc12931b9422d8822280bf88d894a0024ff5857b3efefb480e7b languageName: node linkType: hard "isobject@npm:^3.0.0, isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" - checksum: 03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db languageName: node linkType: hard @@ -21888,21 +21888,21 @@ __metadata: resolution: "isomorphic-ws@npm:5.0.0" peerDependencies: ws: "*" - checksum: a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 + checksum: 10c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 languageName: node linkType: hard "isstream@npm:~0.1.2": version: 0.1.2 resolution: "isstream@npm:0.1.2" - checksum: a6686a878735ca0a48e0d674dd6d8ad31aedfaf70f07920da16ceadc7577b46d67179a60b313f2e6860cb097a2c2eb3cbd0b89e921ae89199a59a17c3273d66f + checksum: 10c0/a6686a878735ca0a48e0d674dd6d8ad31aedfaf70f07920da16ceadc7577b46d67179a60b313f2e6860cb097a2c2eb3cbd0b89e921ae89199a59a17c3273d66f languageName: node linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: 10ecb00a50cac2f506af8231ce523ffa1ac1310db0435c8ffaabb50c1d72539906583aa13c84f8835dc103998b9989edc3c1de989d2e2a96a91a9ba44e5db6b9 + checksum: 10c0/10ecb00a50cac2f506af8231ce523ffa1ac1310db0435c8ffaabb50c1d72539906583aa13c84f8835dc103998b9989edc3c1de989d2e2a96a91a9ba44e5db6b9 languageName: node linkType: hard @@ -21915,7 +21915,7 @@ __metadata: "@istanbuljs/schema": "npm:^0.1.2" istanbul-lib-coverage: "npm:^3.2.0" semver: "npm:^6.3.0" - checksum: 8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee languageName: node linkType: hard @@ -21928,7 +21928,7 @@ __metadata: "@istanbuljs/schema": "npm:^0.1.2" istanbul-lib-coverage: "npm:^3.2.0" semver: "npm:^7.5.4" - checksum: ee86777f3692f95c3ae35c5cbc9aa979b551241da2de1284f75c507a2bdef948cc56ca90214c3bb47b5dc2ebe748610eb4f7c4d39b304f24a933bcd0867a05e8 + checksum: 10c0/ee86777f3692f95c3ae35c5cbc9aa979b551241da2de1284f75c507a2bdef948cc56ca90214c3bb47b5dc2ebe748610eb4f7c4d39b304f24a933bcd0867a05e8 languageName: node linkType: hard @@ -21939,7 +21939,7 @@ __metadata: istanbul-lib-coverage: "npm:^3.0.0" make-dir: "npm:^3.0.0" supports-color: "npm:^7.1.0" - checksum: 81b0d5187c7603ed71bdea0b701a7329f8146549ca19aa26d91b4a163aea756f9d55c1a6dc1dcd087e24dfcb99baa69e266a68644fbfd5dc98107d6f6f5948d2 + checksum: 10c0/81b0d5187c7603ed71bdea0b701a7329f8146549ca19aa26d91b4a163aea756f9d55c1a6dc1dcd087e24dfcb99baa69e266a68644fbfd5dc98107d6f6f5948d2 languageName: node linkType: hard @@ -21950,7 +21950,7 @@ __metadata: debug: "npm:^4.1.1" istanbul-lib-coverage: "npm:^3.0.0" source-map: "npm:^0.6.1" - checksum: 19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 languageName: node linkType: hard @@ -21960,7 +21960,7 @@ __metadata: dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 3a147171bffdbd3034856410b6ec81637871d17d10986513328fec23df6b666f66bd08ea480f5b7a5b9f7e8abc30f3e3c2e7d1b661fc57cdc479aaaa677b1011 + checksum: 10c0/3a147171bffdbd3034856410b6ec81637871d17d10986513328fec23df6b666f66bd08ea480f5b7a5b9f7e8abc30f3e3c2e7d1b661fc57cdc479aaaa677b1011 languageName: node linkType: hard @@ -21973,7 +21973,7 @@ __metadata: has-symbols: "npm:^1.0.3" reflect.getprototypeof: "npm:^1.0.4" set-function-name: "npm:^2.0.1" - checksum: a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 languageName: node linkType: hard @@ -21986,7 +21986,7 @@ __metadata: dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 languageName: node linkType: hard @@ -22000,7 +22000,7 @@ __metadata: minimatch: "npm:^3.1.2" bin: jake: bin/cli.js - checksum: 89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 + checksum: 10c0/89326d01a8bc110d02d973729a66394c79a34b34461116f5c530a2a2dbc30265683fe6737928f75df9178e9d369ff1442f5753fb983d525e740eefdadc56a103 languageName: node linkType: hard @@ -22011,7 +22011,7 @@ __metadata: execa: "npm:^5.0.0" jest-util: "npm:^29.7.0" p-limit: "npm:^3.1.0" - checksum: e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b languageName: node linkType: hard @@ -22039,7 +22039,7 @@ __metadata: pure-rand: "npm:^6.0.0" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" - checksum: 8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e languageName: node linkType: hard @@ -22065,7 +22065,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a languageName: node linkType: hard @@ -22103,7 +22103,7 @@ __metadata: optional: true ts-node: optional: true - checksum: bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 languageName: node linkType: hard @@ -22115,7 +22115,7 @@ __metadata: diff-sequences: "npm:^29.6.3" jest-get-type: "npm:^29.6.3" pretty-format: "npm:^29.7.0" - checksum: 89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 languageName: node linkType: hard @@ -22124,7 +22124,7 @@ __metadata: resolution: "jest-docblock@npm:29.7.0" dependencies: detect-newline: "npm:^3.0.0" - checksum: d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 languageName: node linkType: hard @@ -22137,7 +22137,7 @@ __metadata: jest-get-type: "npm:^29.6.3" jest-util: "npm:^29.7.0" pretty-format: "npm:^29.7.0" - checksum: f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 languageName: node linkType: hard @@ -22158,7 +22158,7 @@ __metadata: peerDependenciesMeta: canvas: optional: true - checksum: 139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f + checksum: 10c0/139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f languageName: node linkType: hard @@ -22172,14 +22172,14 @@ __metadata: "@types/node": "npm:*" jest-mock: "npm:^29.7.0" jest-util: "npm:^29.7.0" - checksum: 61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b languageName: node linkType: hard "jest-get-type@npm:^29.6.3": version: 29.6.3 resolution: "jest-get-type@npm:29.6.3" - checksum: 552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b languageName: node linkType: hard @@ -22202,7 +22202,7 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: 2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c languageName: node linkType: hard @@ -22212,7 +22212,7 @@ __metadata: dependencies: jest-get-type: "npm:^29.6.3" pretty-format: "npm:^29.7.0" - checksum: 71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 languageName: node linkType: hard @@ -22224,7 +22224,7 @@ __metadata: jest-diff: "npm:^29.7.0" jest-get-type: "npm:^29.6.3" pretty-format: "npm:^29.7.0" - checksum: 0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e languageName: node linkType: hard @@ -22241,7 +22241,7 @@ __metadata: pretty-format: "npm:^29.7.0" slash: "npm:^3.0.0" stack-utils: "npm:^2.0.3" - checksum: 850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 languageName: node linkType: hard @@ -22252,7 +22252,7 @@ __metadata: "@jest/types": "npm:^29.6.3" "@types/node": "npm:*" jest-util: "npm:^29.7.0" - checksum: 7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac languageName: node linkType: hard @@ -22264,14 +22264,14 @@ __metadata: peerDependenciesMeta: jest-resolve: optional: true - checksum: 86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac languageName: node linkType: hard "jest-regex-util@npm:^29.0.0, jest-regex-util@npm:^29.6.3": version: 29.6.3 resolution: "jest-regex-util@npm:29.6.3" - checksum: 4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b languageName: node linkType: hard @@ -22281,7 +22281,7 @@ __metadata: dependencies: jest-regex-util: "npm:^29.6.3" jest-snapshot: "npm:^29.7.0" - checksum: b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d languageName: node linkType: hard @@ -22298,7 +22298,7 @@ __metadata: resolve: "npm:^1.20.0" resolve.exports: "npm:^2.0.0" slash: "npm:^3.0.0" - checksum: 59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 languageName: node linkType: hard @@ -22327,7 +22327,7 @@ __metadata: jest-worker: "npm:^29.7.0" p-limit: "npm:^3.1.0" source-map-support: "npm:0.5.13" - checksum: 2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 languageName: node linkType: hard @@ -22357,7 +22357,7 @@ __metadata: jest-util: "npm:^29.7.0" slash: "npm:^3.0.0" strip-bom: "npm:^4.0.0" - checksum: 7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 languageName: node linkType: hard @@ -22385,7 +22385,7 @@ __metadata: natural-compare: "npm:^1.4.0" pretty-format: "npm:^29.7.0" semver: "npm:^7.5.3" - checksum: 6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 languageName: node linkType: hard @@ -22399,7 +22399,7 @@ __metadata: ci-info: "npm:^3.2.0" graceful-fs: "npm:^4.2.9" picomatch: "npm:^2.2.3" - checksum: bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 languageName: node linkType: hard @@ -22413,7 +22413,7 @@ __metadata: jest-get-type: "npm:^29.6.3" leven: "npm:^3.1.0" pretty-format: "npm:^29.7.0" - checksum: a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 languageName: node linkType: hard @@ -22430,7 +22430,7 @@ __metadata: strip-ansi: "npm:^7.0.1" peerDependencies: jest: ^27.0.0 || ^28.0.0 || ^29.0.0 - checksum: 5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 + checksum: 10c0/5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 languageName: node linkType: hard @@ -22446,7 +22446,7 @@ __metadata: emittery: "npm:^0.13.1" jest-util: "npm:^29.7.0" string-length: "npm:^4.0.1" - checksum: ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 languageName: node linkType: hard @@ -22457,7 +22457,7 @@ __metadata: "@types/node": "npm:*" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b languageName: node linkType: hard @@ -22469,7 +22469,7 @@ __metadata: jest-util: "npm:^29.7.0" merge-stream: "npm:^2.0.0" supports-color: "npm:^8.0.0" - checksum: 5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 languageName: node linkType: hard @@ -22488,7 +22488,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b languageName: node linkType: hard @@ -22497,7 +22497,7 @@ __metadata: resolution: "jiti@npm:1.17.1" bin: jiti: bin/jiti.js - checksum: 1241a0dec1493867bfc25bb52ed37bbede9bc37f64ef6414dbef0f0059186734633cf25329bdd583237001a094f9c90017ee245ce96a053d0ce95e34df18a17b + checksum: 10c0/1241a0dec1493867bfc25bb52ed37bbede9bc37f64ef6414dbef0f0059186734633cf25329bdd583237001a094f9c90017ee245ce96a053d0ce95e34df18a17b languageName: node linkType: hard @@ -22506,21 +22506,21 @@ __metadata: resolution: "jiti@npm:1.21.0" bin: jiti: bin/jiti.js - checksum: 7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f + checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f languageName: node linkType: hard "jmespath@npm:0.16.0": version: 0.16.0 resolution: "jmespath@npm:0.16.0" - checksum: 84cdca62c4a3d339701f01cc53decf16581c76ce49e6455119be1c5f6ab09a19e6788372536bd261d348d21cd817981605f8debae67affadba966219a2bac1c5 + checksum: 10c0/84cdca62c4a3d339701f01cc53decf16581c76ce49e6455119be1c5f6ab09a19e6788372536bd261d348d21cd817981605f8debae67affadba966219a2bac1c5 languageName: node linkType: hard "jose@npm:^4.11.4, jose@npm:^4.14.6": version: 4.15.4 resolution: "jose@npm:4.15.4" - checksum: ce8b29f84d6172a566b12b599dafa82f3bef0f16278bb76d562490ac1516fcc14017b05a39d20ffad25ed504f4996d4af4c9d3e0273d95b2d5559bf6d1112bc0 + checksum: 10c0/ce8b29f84d6172a566b12b599dafa82f3bef0f16278bb76d562490ac1516fcc14017b05a39d20ffad25ed504f4996d4af4c9d3e0273d95b2d5559bf6d1112bc0 languageName: node linkType: hard @@ -22536,28 +22536,28 @@ __metadata: css-beautify: js/bin/css-beautify.js html-beautify: js/bin/html-beautify.js js-beautify: js/bin/js-beautify.js - checksum: be7b968a15fef3b3f906b3f043538aebbe5ce0db60b3b44b9532c93d05790078011b8cf66c9b00b28fdd49ba3b15b098babb22fb4ae75fcf2b7814a6ad4ce12f + checksum: 10c0/be7b968a15fef3b3f906b3f043538aebbe5ce0db60b3b44b9532c93d05790078011b8cf66c9b00b28fdd49ba3b15b098babb22fb4ae75fcf2b7814a6ad4ce12f languageName: node linkType: hard "js-cookie@npm:3.0.1": version: 3.0.1 resolution: "js-cookie@npm:3.0.1" - checksum: a7dab91286c49610fb198bcc0d78fbafe9be869cf3cea6f7eaea515abdfdc9d347982fe22316e34666b479a0701119482d46faa3a350a3a3404eb954405edf72 + checksum: 10c0/a7dab91286c49610fb198bcc0d78fbafe9be869cf3cea6f7eaea515abdfdc9d347982fe22316e34666b479a0701119482d46faa3a350a3a3404eb954405edf72 languageName: node linkType: hard "js-levenshtein@npm:^1.1.6": version: 1.1.6 resolution: "js-levenshtein@npm:1.1.6" - checksum: 14045735325ea1fd87f434a74b11d8a14380f090f154747e613529c7cff68b5ee607f5230fa40665d5fb6125a3791f4c223f73b9feca754f989b059f5c05864f + checksum: 10c0/14045735325ea1fd87f434a74b11d8a14380f090f154747e613529c7cff68b5ee607f5230fa40665d5fb6125a3791f4c223f73b9feca754f989b059f5c05864f languageName: node linkType: hard "js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": version: 4.0.0 resolution: "js-tokens@npm:4.0.0" - checksum: e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed languageName: node linkType: hard @@ -22568,7 +22568,7 @@ __metadata: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.js - checksum: 184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f languageName: node linkType: hard @@ -22580,7 +22580,7 @@ __metadata: esprima: "npm:^4.0.0" bin: js-yaml: bin/js-yaml.js - checksum: 6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b languageName: node linkType: hard @@ -22589,14 +22589,14 @@ __metadata: resolution: "js2xmlparser@npm:4.0.2" dependencies: xmlcreate: "npm:^2.0.4" - checksum: b00de9351649d67d225e21734a08f456a4ecb3c29cafcd3bbecb36a8ab61ec841fad7f425bed50e21936fe387f472e49cfe75ce71d0beaacb0475b077c88ed39 + checksum: 10c0/b00de9351649d67d225e21734a08f456a4ecb3c29cafcd3bbecb36a8ab61ec841fad7f425bed50e21936fe387f472e49cfe75ce71d0beaacb0475b077c88ed39 languageName: node linkType: hard "jsbn@npm:~0.1.0": version: 0.1.1 resolution: "jsbn@npm:0.1.1" - checksum: e046e05c59ff880ee4ef68902dbdcb6d2f3c5d60c357d4d68647dc23add556c31c0e5f41bdb7e69e793dd63468bd9e085da3636341048ef577b18f5b713877c0 + checksum: 10c0/e046e05c59ff880ee4ef68902dbdcb6d2f3c5d60c357d4d68647dc23add556c31c0e5f41bdb7e69e793dd63468bd9e085da3636341048ef577b18f5b713877c0 languageName: node linkType: hard @@ -22630,7 +22630,7 @@ __metadata: optional: true bin: jscodeshift: bin/jscodeshift.js - checksum: bfd2de159fe9aa30993b7d1d89db21c00c3a644d096adfcf8bce8c6be4ed02b357a919e8e1470ffd9dd43a3b1bc80bb33d53b30890354ee9c5d677c87b80f9a2 + checksum: 10c0/bfd2de159fe9aa30993b7d1d89db21c00c3a644d096adfcf8bce8c6be4ed02b357a919e8e1470ffd9dd43a3b1bc80bb33d53b30890354ee9c5d677c87b80f9a2 languageName: node linkType: hard @@ -22665,7 +22665,7 @@ __metadata: optional: true bin: jscodeshift: bin/jscodeshift.js - checksum: 334de6ffa776a68b3f59f2f18a285ea977f3339d85e3517f3854761e65769ffa7e453c35cde320fc969106d573df39bd3fb08b23db54ae17c1b1516e5bf05742 + checksum: 10c0/334de6ffa776a68b3f59f2f18a285ea977f3339d85e3517f3854761e65769ffa7e453c35cde320fc969106d573df39bd3fb08b23db54ae17c1b1516e5bf05742 languageName: node linkType: hard @@ -22690,7 +22690,7 @@ __metadata: underscore: "npm:~1.13.2" bin: jsdoc: jsdoc.js - checksum: 1320a49ea576e60cfe38e5912e0b6aab22e3861a76c1795afde2e02896b29e343abee4da0de6b82f1edb6ef6b6c4fc8e2ef41d0fe65a3522138b28b74b01e5c2 + checksum: 10c0/1320a49ea576e60cfe38e5912e0b6aab22e3861a76c1795afde2e02896b29e343abee4da0de6b82f1edb6ef6b6c4fc8e2ef41d0fe65a3522138b28b74b01e5c2 languageName: node linkType: hard @@ -22729,7 +22729,7 @@ __metadata: peerDependenciesMeta: canvas: optional: true - checksum: b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 + checksum: 10c0/b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 languageName: node linkType: hard @@ -22738,7 +22738,7 @@ __metadata: resolution: "jsesc@npm:2.5.2" bin: jsesc: bin/jsesc - checksum: dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 languageName: node linkType: hard @@ -22747,7 +22747,7 @@ __metadata: resolution: "jsesc@npm:0.5.0" bin: jsesc: bin/jsesc - checksum: f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 languageName: node linkType: hard @@ -22756,14 +22756,14 @@ __metadata: resolution: "json-bigint@npm:1.0.0" dependencies: bignumber.js: "npm:^9.0.0" - checksum: e3f34e43be3284b573ea150a3890c92f06d54d8ded72894556357946aeed9877fd795f62f37fe16509af189fd314ab1104d0fd0f163746ad231b9f378f5b33f4 + checksum: 10c0/e3f34e43be3284b573ea150a3890c92f06d54d8ded72894556357946aeed9877fd795f62f37fe16509af189fd314ab1104d0fd0f163746ad231b9f378f5b33f4 languageName: node linkType: hard "json-buffer@npm:3.0.0": version: 3.0.0 resolution: "json-buffer@npm:3.0.0" - checksum: 118c060d84430a8ad8376d0c60250830f350a6381bd56541a1ef257ce7ba82d109d1f71a4c4e92e0be0e7ab7da568fad8f7bf02905910a76e8e0aa338621b944 + checksum: 10c0/118c060d84430a8ad8376d0c60250830f350a6381bd56541a1ef257ce7ba82d109d1f71a4c4e92e0be0e7ab7da568fad8f7bf02905910a76e8e0aa338621b944 languageName: node linkType: hard @@ -22774,7 +22774,7 @@ __metadata: "@babel/runtime": "npm:^7.18.9" chalk: "npm:^4.1.2" pegjs: "npm:^0.10.0" - checksum: 8267add4ce0214abe2de69a85caf12ad2a79bf815df50f89d08a9155261800a2b8b635af2c6a385c05074526efe8ae9b7670e83c759a82a570bd13f47337b642 + checksum: 10c0/8267add4ce0214abe2de69a85caf12ad2a79bf815df50f89d08a9155261800a2b8b635af2c6a385c05074526efe8ae9b7670e83c759a82a570bd13f47337b642 languageName: node linkType: hard @@ -22796,28 +22796,28 @@ __metadata: json-pointer: bin/json-pointer.js json-pointer-test: bin/json-pointer-test.js json-unpack: bin/json-unpack.js - checksum: 7086d3e6173d36b5f104874abfc6a01378c6eb90cd402df8a96d1e73728cf62fe628fc7ac501784020a695c0ea6b246cb226ba19edff6ac8ce03fbd91ad05e44 + checksum: 10c0/7086d3e6173d36b5f104874abfc6a01378c6eb90cd402df8a96d1e73728cf62fe628fc7ac501784020a695c0ea6b246cb226ba19edff6ac8ce03fbd91ad05e44 languageName: node linkType: hard "json-parse-better-errors@npm:^1.0.1, json-parse-better-errors@npm:^1.0.2": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" - checksum: 2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb + checksum: 10c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb languageName: node linkType: hard "json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": version: 2.3.1 resolution: "json-parse-even-better-errors@npm:2.3.1" - checksum: 140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 languageName: node linkType: hard "json-parse-even-better-errors@npm:^3.0.0": version: 3.0.0 resolution: "json-parse-even-better-errors@npm:3.0.0" - checksum: 128de17135e7af655ed83fc26dab0fe54faf43b3517fa73dcd997cce6e05a445932664f085ec6dbc219aeb0c592e53ef10d2d6dee4a8e9211ea901b8e6dd0b52 + checksum: 10c0/128de17135e7af655ed83fc26dab0fe54faf43b3517fa73dcd997cce6e05a445932664f085ec6dbc219aeb0c592e53ef10d2d6dee4a8e9211ea901b8e6dd0b52 languageName: node linkType: hard @@ -22826,35 +22826,35 @@ __metadata: resolution: "json-schema-ref-resolver@npm:1.0.1" dependencies: fast-deep-equal: "npm:^3.1.3" - checksum: aa89d88108c0109ae35b913c89c132fb50c00f3b99fc8a8309b524b9e3a6a77414f19a6a35a1253871462984cbabc74279ebbd9bf103c6629fb7b37c9fb59bcf + checksum: 10c0/aa89d88108c0109ae35b913c89c132fb50c00f3b99fc8a8309b524b9e3a6a77414f19a6a35a1253871462984cbabc74279ebbd9bf103c6629fb7b37c9fb59bcf languageName: node linkType: hard "json-schema-traverse@npm:^0.4.1": version: 0.4.1 resolution: "json-schema-traverse@npm:0.4.1" - checksum: 108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce languageName: node linkType: hard "json-schema-traverse@npm:^1.0.0": version: 1.0.0 resolution: "json-schema-traverse@npm:1.0.0" - checksum: 71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 languageName: node linkType: hard "json-schema@npm:0.4.0": version: 0.4.0 resolution: "json-schema@npm:0.4.0" - checksum: d4a637ec1d83544857c1c163232f3da46912e971d5bf054ba44fdb88f07d8d359a462b4aec46f2745efbc57053365608d88bc1d7b1729f7b4fc3369765639ed3 + checksum: 10c0/d4a637ec1d83544857c1c163232f3da46912e971d5bf054ba44fdb88f07d8d359a462b4aec46f2745efbc57053365608d88bc1d7b1729f7b4fc3369765639ed3 languageName: node linkType: hard "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" - checksum: cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 languageName: node linkType: hard @@ -22863,21 +22863,21 @@ __metadata: resolution: "json-stable-stringify@npm:1.0.2" dependencies: jsonify: "npm:^0.0.1" - checksum: 502d021c3c59c09587faa40d7693d77c00460fd6c68bae95d6e35804909ec8c4aec71b136d3a09df61a7ebf803eb6e820f23ede76b77e74b8b02c76afb2ada8c + checksum: 10c0/502d021c3c59c09587faa40d7693d77c00460fd6c68bae95d6e35804909ec8c4aec71b136d3a09df61a7ebf803eb6e820f23ede76b77e74b8b02c76afb2ada8c languageName: node linkType: hard "json-stringify-nice@npm:^1.1.4": version: 1.1.4 resolution: "json-stringify-nice@npm:1.1.4" - checksum: 13673b67ba9e7fde75a103cade0b0d2dd0d21cd3b918de8d8f6cd59d48ad8c78b0e85f6f4a5842073ddfc91ebdde5ef7c81c7f51945b96a33eaddc5d41324b87 + checksum: 10c0/13673b67ba9e7fde75a103cade0b0d2dd0d21cd3b918de8d8f6cd59d48ad8c78b0e85f6f4a5842073ddfc91ebdde5ef7c81c7f51945b96a33eaddc5d41324b87 languageName: node linkType: hard "json-stringify-safe@npm:^5.0.1, json-stringify-safe@npm:~5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" - checksum: 7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 + checksum: 10c0/7dbf35cd0411d1d648dceb6d59ce5857ec939e52e4afc37601aa3da611f0987d5cee5b38d58329ceddf3ed48bd7215229c8d52059ab01f2444a338bf24ed0f37 languageName: node linkType: hard @@ -22887,7 +22887,7 @@ __metadata: dependencies: remedial: "npm:^1.0.7" remove-trailing-spaces: "npm:^1.0.6" - checksum: d28891860a7ae034873ac8ec5f69f5493106afed9a86295f1642a40b27a48df717c63966439a1dec5b8a4b30e99b86cd1b4ca7d979bb8048ffd7f7c67bfd88a3 + checksum: 10c0/d28891860a7ae034873ac8ec5f69f5493106afed9a86295f1642a40b27a48df717c63966439a1dec5b8a4b30e99b86cd1b4ca7d979bb8048ffd7f7c67bfd88a3 languageName: node linkType: hard @@ -22896,7 +22896,7 @@ __metadata: resolution: "json5@npm:2.2.3" bin: json5: lib/cli.js - checksum: 5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c languageName: node linkType: hard @@ -22905,7 +22905,7 @@ __metadata: resolution: "json5@npm:0.5.1" bin: json5: lib/cli.js - checksum: aca0ab7ccf1883d3fc2ecc16219bc389716a773f774552817deaadb549acc0bb502e317a81946fc0a48f9eb6e0822cf1dc5a097009203f2c94de84c8db02a1f3 + checksum: 10c0/aca0ab7ccf1883d3fc2ecc16219bc389716a773f774552817deaadb549acc0bb502e317a81946fc0a48f9eb6e0822cf1dc5a097009203f2c94de84c8db02a1f3 languageName: node linkType: hard @@ -22916,14 +22916,14 @@ __metadata: minimist: "npm:^1.2.0" bin: json5: lib/cli.js - checksum: 9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f languageName: node linkType: hard "jsonc-parser@npm:3.2.0, jsonc-parser@npm:^3.2.0": version: 3.2.0 resolution: "jsonc-parser@npm:3.2.0" - checksum: 5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b + checksum: 10c0/5a12d4d04dad381852476872a29dcee03a57439574e4181d91dca71904fcdcc5e8e4706c0a68a2c61ad9810e1e1c5806b5100d52d3e727b78f5cdc595401045b languageName: node linkType: hard @@ -22936,21 +22936,21 @@ __metadata: dependenciesMeta: graceful-fs: optional: true - checksum: 4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 languageName: node linkType: hard "jsonify@npm:^0.0.1": version: 0.0.1 resolution: "jsonify@npm:0.0.1" - checksum: 7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 + checksum: 10c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 languageName: node linkType: hard "jsonparse@npm:^1.2.0, jsonparse@npm:^1.3.1": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" - checksum: 89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 + checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0 languageName: node linkType: hard @@ -22968,7 +22968,7 @@ __metadata: lodash.once: "npm:^4.0.0" ms: "npm:^2.1.1" semver: "npm:^7.5.4" - checksum: d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131 + checksum: 10c0/d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131 languageName: node linkType: hard @@ -22980,7 +22980,7 @@ __metadata: extsprintf: "npm:1.3.0" json-schema: "npm:0.4.0" verror: "npm:1.10.0" - checksum: 677be2d41df536c92c6d0114a492ef197084018cfbb1a3e10b1fa1aad889564b2e3a7baa6af7949cc2d73678f42368b0be165a26bd4e4de6883a30dd6a24e98d + checksum: 10c0/677be2d41df536c92c6d0114a492ef197084018cfbb1a3e10b1fa1aad889564b2e3a7baa6af7949cc2d73678f42368b0be165a26bd4e4de6883a30dd6a24e98d languageName: node linkType: hard @@ -22992,7 +22992,7 @@ __metadata: array.prototype.flat: "npm:^1.3.1" object.assign: "npm:^4.1.4" object.values: "npm:^1.1.6" - checksum: a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 languageName: node linkType: hard @@ -23007,21 +23007,21 @@ __metadata: web-resource-inliner: "npm:^6.0.1" bin: juice: bin/juice - checksum: 46bf872a122e152ca02e389ee8de8ad3e17634dc6bfd55064e1acf24ce4aec89ccc2520785eb725be89c7c04427d3e5f95715e3da9dca6bfa806dbcd3ed7ddd7 + checksum: 10c0/46bf872a122e152ca02e389ee8de8ad3e17634dc6bfd55064e1acf24ce4aec89ccc2520785eb725be89c7c04427d3e5f95715e3da9dca6bfa806dbcd3ed7ddd7 languageName: node linkType: hard "just-diff-apply@npm:^5.2.0": version: 5.5.0 resolution: "just-diff-apply@npm:5.5.0" - checksum: d7b85371f2a5a17a108467fda35dddd95264ab438ccec7837b67af5913c57ded7246039d1df2b5bc1ade034ccf815b56d69786c5f1e07383168a066007c796c0 + checksum: 10c0/d7b85371f2a5a17a108467fda35dddd95264ab438ccec7837b67af5913c57ded7246039d1df2b5bc1ade034ccf815b56d69786c5f1e07383168a066007c796c0 languageName: node linkType: hard "just-diff@npm:^6.0.0": version: 6.0.2 resolution: "just-diff@npm:6.0.2" - checksum: 1931ca1f0cea4cc480172165c189a84889033ad7a60bee302268ba8ca9f222b43773fd5f272a23ee618d43d85d3048411f06b635571a198159e9a85bb2495f5c + checksum: 10c0/1931ca1f0cea4cc480172165c189a84889033ad7a60bee302268ba8ca9f222b43773fd5f272a23ee618d43d85d3048411f06b635571a198159e9a85bb2495f5c languageName: node linkType: hard @@ -23032,7 +23032,7 @@ __metadata: buffer-equal-constant-time: "npm:1.0.1" ecdsa-sig-formatter: "npm:1.0.11" safe-buffer: "npm:^5.0.1" - checksum: 5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 + checksum: 10c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 languageName: node linkType: hard @@ -23043,7 +23043,7 @@ __metadata: buffer-equal-constant-time: "npm:1.0.1" ecdsa-sig-formatter: "npm:1.0.11" safe-buffer: "npm:^5.0.1" - checksum: 6baab823b93c038ba1d2a9e531984dcadbc04e9eb98d171f4901b7a40d2be15961a359335de1671d78cb6d987f07cbe5d350d8143255977a889160c4d90fcc3c + checksum: 10c0/6baab823b93c038ba1d2a9e531984dcadbc04e9eb98d171f4901b7a40d2be15961a359335de1671d78cb6d987f07cbe5d350d8143255977a889160c4d90fcc3c languageName: node linkType: hard @@ -23057,7 +23057,7 @@ __metadata: jose: "npm:^4.14.6" limiter: "npm:^1.1.5" lru-memoizer: "npm:^2.2.0" - checksum: 60d686ba42ebfcedffd867aa68044d3d505bc21f6574afda17c6cc8bcabcf88a9a2b651965a25c53280902a532767cd002694c98f68287d31a60b492cba35822 + checksum: 10c0/60d686ba42ebfcedffd867aa68044d3d505bc21f6574afda17c6cc8bcabcf88a9a2b651965a25c53280902a532767cd002694c98f68287d31a60b492cba35822 languageName: node linkType: hard @@ -23067,7 +23067,7 @@ __metadata: dependencies: jwa: "npm:^1.4.1" safe-buffer: "npm:^5.0.1" - checksum: e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff + checksum: 10c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff languageName: node linkType: hard @@ -23077,7 +23077,7 @@ __metadata: dependencies: jwa: "npm:^2.0.0" safe-buffer: "npm:^5.0.1" - checksum: f1ca77ea5451e8dc5ee219cb7053b8a4f1254a79cb22417a2e1043c1eb8a569ae118c68f24d72a589e8a3dd1824697f47d6bd4fb4bebb93a3bdf53545e721661 + checksum: 10c0/f1ca77ea5451e8dc5ee219cb7053b8a4f1254a79cb22417a2e1043c1eb8a569ae118c68f24d72a589e8a3dd1824697f47d6bd4fb4bebb93a3bdf53545e721661 languageName: node linkType: hard @@ -23086,7 +23086,7 @@ __metadata: resolution: "keyv@npm:3.1.0" dependencies: json-buffer: "npm:3.0.0" - checksum: 6ad784361b4c0213333a8c5bc0bcc59cf46cb7cbbe21fb2f1539ffcc8fe18b8f1562ff913b40552278fdea5f152a15996dfa61ce24ce1a22222560c650be4a1b + checksum: 10c0/6ad784361b4c0213333a8c5bc0bcc59cf46cb7cbbe21fb2f1539ffcc8fe18b8f1562ff913b40552278fdea5f152a15996dfa61ce24ce1a22222560c650be4a1b languageName: node linkType: hard @@ -23098,7 +23098,7 @@ __metadata: shell-exec: "npm:1.0.2" bin: kill-port: cli.js - checksum: f9d51a43f8349f162f4f004bd6e68e54d615f9a8f994c780b09771962becb4458cd7ba3a043948ecb18405a7e0d9c31d7264924d0b7f6e24a6f2a01cc474de21 + checksum: 10c0/f9d51a43f8349f162f4f004bd6e68e54d615f9a8f994c780b09771962becb4458cd7ba3a043948ecb18405a7e0d9c31d7264924d0b7f6e24a6f2a01cc474de21 languageName: node linkType: hard @@ -23107,7 +23107,7 @@ __metadata: resolution: "kind-of@npm:3.2.2" dependencies: is-buffer: "npm:^1.1.5" - checksum: 7e34bc29d4b02c997f92f080de34ebb92033a96736bbb0bb2410e033a7e5ae6571f1fa37b2d7710018f95361473b816c604234197f4f203f9cf149d8ef1574d9 + checksum: 10c0/7e34bc29d4b02c997f92f080de34ebb92033a96736bbb0bb2410e033a7e5ae6571f1fa37b2d7710018f95361473b816c604234197f4f203f9cf149d8ef1574d9 languageName: node linkType: hard @@ -23116,21 +23116,21 @@ __metadata: resolution: "kind-of@npm:4.0.0" dependencies: is-buffer: "npm:^1.1.5" - checksum: d6c44c75ee36898142dfc7106afbd50593216c37f96acb81a7ab33ca1a6938ce97d5692b8fc8fccd035f83811a9d97749d68771116441a48eedd0b68e2973165 + checksum: 10c0/d6c44c75ee36898142dfc7106afbd50593216c37f96acb81a7ab33ca1a6938ce97d5692b8fc8fccd035f83811a9d97749d68771116441a48eedd0b68e2973165 languageName: node linkType: hard "kind-of@npm:^5.0.0": version: 5.1.0 resolution: "kind-of@npm:5.1.0" - checksum: fe85b7a2ed4b4d5a12e16e01d00d5c336e1760842fe0da38283605b9880c984288935e87b13138909e4d23d2d197a1d492f7393c6638d2c0fab8a900c4fb0392 + checksum: 10c0/fe85b7a2ed4b4d5a12e16e01d00d5c336e1760842fe0da38283605b9880c984288935e87b13138909e4d23d2d197a1d492f7393c6638d2c0fab8a900c4fb0392 languageName: node linkType: hard "kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" - checksum: 61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 languageName: node linkType: hard @@ -23139,7 +23139,7 @@ __metadata: resolution: "klaw-sync@npm:6.0.0" dependencies: graceful-fs: "npm:^4.1.11" - checksum: 00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a + checksum: 10c0/00d8e4c48d0d699b743b3b028e807295ea0b225caf6179f51029e19783a93ad8bb9bccde617d169659fbe99559d73fb35f796214de031d0023c26b906cecd70a languageName: node linkType: hard @@ -23148,21 +23148,21 @@ __metadata: resolution: "klaw@npm:3.0.0" dependencies: graceful-fs: "npm:^4.1.9" - checksum: 8391cf6df6337dce02e44628b620b39412d007eff162d907d37063c23986041d9b5c3558851d473c2fae92c1ccb0fde8864e36f9c55ac339fc469b517a2caa1b + checksum: 10c0/8391cf6df6337dce02e44628b620b39412d007eff162d907d37063c23986041d9b5c3558851d473c2fae92c1ccb0fde8864e36f9c55ac339fc469b517a2caa1b languageName: node linkType: hard "kleur@npm:^3.0.3": version: 3.0.3 resolution: "kleur@npm:3.0.3" - checksum: cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b languageName: node linkType: hard "language-subtag-registry@npm:^0.3.20": version: 0.3.22 resolution: "language-subtag-registry@npm:0.3.22" - checksum: d1e09971260a7cd3b9fdeb190d33af0b6e99c8697013537d9aaa15f7856d9d83aee128ba8078e219df0a7cf4b8dd18d1a0c188f6543b500d92a2689d2d114b70 + checksum: 10c0/d1e09971260a7cd3b9fdeb190d33af0b6e99c8697013537d9aaa15f7856d9d83aee128ba8078e219df0a7cf4b8dd18d1a0c188f6543b500d92a2689d2d114b70 languageName: node linkType: hard @@ -23171,7 +23171,7 @@ __metadata: resolution: "language-tags@npm:1.0.9" dependencies: language-subtag-registry: "npm:^0.3.20" - checksum: 9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff languageName: node linkType: hard @@ -23180,7 +23180,7 @@ __metadata: resolution: "latest-version@npm:5.1.0" dependencies: package-json: "npm:^6.3.0" - checksum: 6219631d8651467c54c58ef1b5d5c5c53e146f5ae2b0ecbb78b202da3eaad55b05b043db2d2d6f1d4230ee071b2ae8c2f85089e01377e4338bad97fa76a963b7 + checksum: 10c0/6219631d8651467c54c58ef1b5d5c5c53e146f5ae2b0ecbb78b202da3eaad55b05b043db2d2d6f1d4230ee071b2ae8c2f85089e01377e4338bad97fa76a963b7 languageName: node linkType: hard @@ -23190,21 +23190,21 @@ __metadata: dependencies: picocolors: "npm:^1.0.0" shell-quote: "npm:^1.7.3" - checksum: 4802b9569d8a1d477f8279a994094b415d89eb39dadbc568193bc366d64ac13827c8860539ee336fa6135a06596a9b8c8265cebac35c3fa36a2214d0eea38890 + checksum: 10c0/4802b9569d8a1d477f8279a994094b415d89eb39dadbc568193bc366d64ac13827c8860539ee336fa6135a06596a9b8c8265cebac35c3fa36a2214d0eea38890 languageName: node linkType: hard "lazy-ass@npm:^1.6.0": version: 1.6.0 resolution: "lazy-ass@npm:1.6.0" - checksum: 4af6cb9a333fbc811268c745f9173fba0f99ecb817cc9c0fae5dbf986b797b730ff525504128f6623b91aba32b02124553a34b0d14de3762b637b74d7233f3bd + checksum: 10c0/4af6cb9a333fbc811268c745f9173fba0f99ecb817cc9c0fae5dbf986b797b730ff525504128f6623b91aba32b02124553a34b0d14de3762b637b74d7233f3bd languageName: node linkType: hard "lazy-get-decorator@npm:2.2.1": version: 2.2.1 resolution: "lazy-get-decorator@npm:2.2.1" - checksum: 58d6e3d82293a70c6d14d5648ff6d9acd8d3d67ab0a3205b5e6f24aef55094737a71ee3d4ea7950e57be3eadaee91faee960ee3fa14daede119ea93ebf625396 + checksum: 10c0/58d6e3d82293a70c6d14d5648ff6d9acd8d3d67ab0a3205b5e6f24aef55094737a71ee3d4ea7950e57be3eadaee91faee960ee3fa14daede119ea93ebf625396 languageName: node linkType: hard @@ -23215,7 +23215,7 @@ __metadata: app-root-dir: "npm:^1.0.2" dotenv: "npm:^16.0.0" dotenv-expand: "npm:^10.0.0" - checksum: 3bc4fe649c46c4a20561ca1fd10cd1df641d2c6c42c61af6c65a5fe0546cb548f449e13e6c7440be445c9fe5b4973c25f499e7d899b8704b7b9bd0ec85bbfe2d + checksum: 10c0/3bc4fe649c46c4a20561ca1fd10cd1df641d2c6c42c61af6c65a5fe0546cb548f449e13e6c7440be445c9fe5b4973c25f499e7d899b8704b7b9bd0ec85bbfe2d languageName: node linkType: hard @@ -23224,14 +23224,14 @@ __metadata: resolution: "lazystream@npm:1.0.1" dependencies: readable-stream: "npm:^2.0.5" - checksum: ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 + checksum: 10c0/ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 languageName: node linkType: hard "leac@npm:^0.6.0": version: 0.6.0 resolution: "leac@npm:0.6.0" - checksum: 5257781e10791ef8462eb1cbe5e48e3cda7692486f2a775265d6f5216cc088960c62f138163b8df0dcf2119d18673bfe7b050d6b41543d92a7b7ac90e4eb1e8b + checksum: 10c0/5257781e10791ef8462eb1cbe5e48e3cda7692486f2a775265d6f5216cc088960c62f138163b8df0dcf2119d18673bfe7b050d6b41543d92a7b7ac90e4eb1e8b languageName: node linkType: hard @@ -23315,14 +23315,14 @@ __metadata: yargs-parser: "npm:21.1.1" bin: lerna: dist/cli.js - checksum: 0b9eee6c962a6fe242ee9c7d0fd4f5a65206c9102a7f44cb862c7a2b8f269f0736b7abfdbf5b07b72335a7c429278f78550bbabb35c91b9b78ea6f22c78c2466 + checksum: 10c0/0b9eee6c962a6fe242ee9c7d0fd4f5a65206c9102a7f44cb862c7a2b8f269f0736b7abfdbf5b07b72335a7c429278f78550bbabb35c91b9b78ea6f22c78c2466 languageName: node linkType: hard "leven@npm:^3.1.0": version: 3.1.0 resolution: "leven@npm:3.1.0" - checksum: cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df languageName: node linkType: hard @@ -23332,7 +23332,7 @@ __metadata: dependencies: prelude-ls: "npm:^1.2.1" type-check: "npm:~0.4.0" - checksum: effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e languageName: node linkType: hard @@ -23342,7 +23342,7 @@ __metadata: dependencies: prelude-ls: "npm:~1.1.2" type-check: "npm:~0.3.2" - checksum: e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 + checksum: 10c0/e440df9de4233da0b389cd55bd61f0f6aaff766400bebbccd1231b81801f6dbc1d816c676ebe8d70566394b749fa624b1ed1c68070e9c94999f0bdecc64cb676 languageName: node linkType: hard @@ -23352,7 +23352,7 @@ __metadata: dependencies: npm-package-arg: "npm:^10.1.0" npm-registry-fetch: "npm:^14.0.3" - checksum: 311f064016a75b73de547724c4b532d5fec5da283a3982c9442b00675eedc2ea4aae99184f963799c6a29639dbdf04d947f7f62dae51209f45acfd4972aa8c0f + checksum: 10c0/311f064016a75b73de547724c4b532d5fec5da283a3982c9442b00675eedc2ea4aae99184f963799c6a29639dbdf04d947f7f62dae51209f45acfd4972aa8c0f languageName: node linkType: hard @@ -23368,7 +23368,7 @@ __metadata: semver: "npm:^7.3.7" sigstore: "npm:^1.4.0" ssri: "npm:^10.0.1" - checksum: 4f93a2c7bd0722afc9bd875a4153e6fc7b92e48a49b8d287f869529c8eaa9caa4107d289fe5786f506ce612b72c8809974b4e62b393b8449df401f8bba992b66 + checksum: 10c0/4f93a2c7bd0722afc9bd875a4153e6fc7b92e48a49b8d287f869529c8eaa9caa4107d289fe5786f506ce612b72c8809974b4e62b393b8449df401f8bba992b66 languageName: node linkType: hard @@ -23379,21 +23379,21 @@ __metadata: cookie: "npm:^0.5.0" process-warning: "npm:^2.0.0" set-cookie-parser: "npm:^2.4.1" - checksum: ad5512b5216f2095409b54daf901f714f76004e4c8acdaa1ec3aa2ffde7ddf11ac249f02a87344d766bbad59eb2732acfe3ee5bb7e8ad5fc71057ef0d4d3be25 + checksum: 10c0/ad5512b5216f2095409b54daf901f714f76004e4c8acdaa1ec3aa2ffde7ddf11ac249f02a87344d766bbad59eb2732acfe3ee5bb7e8ad5fc71057ef0d4d3be25 languageName: node linkType: hard "lilconfig@npm:^2.1.0": version: 2.1.0 resolution: "lilconfig@npm:2.1.0" - checksum: 64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 + checksum: 10c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 languageName: node linkType: hard "limiter@npm:^1.1.5": version: 1.1.5 resolution: "limiter@npm:1.1.5" - checksum: ebe2b20a820d1f67b8e1724051246434c419b2da041a7e9cd943f6daf113b8d17a52a1bd88fb79be5b624c10283ecb737f50edb5c1c88c71f4cd367108c97300 + checksum: 10c0/ebe2b20a820d1f67b8e1724051246434c419b2da041a7e9cd943f6daf113b8d17a52a1bd88fb79be5b624c10283ecb737f50edb5c1c88c71f4cd367108c97300 languageName: node linkType: hard @@ -23403,21 +23403,21 @@ __metadata: dependencies: isarray: "npm:^1.0.0" isobject: "npm:^2.0.0" - checksum: 75aa918a9791362a3369c7222689350dc6df5b040314525ba79c3682f1386e13a3ceddd6b2584b8cb5c3ab3a5b3c50c940a182772dbb6361303bf6ef65fc2d64 + checksum: 10c0/75aa918a9791362a3369c7222689350dc6df5b040314525ba79c3682f1386e13a3ceddd6b2584b8cb5c3ab3a5b3c50c940a182772dbb6361303bf6ef65fc2d64 languageName: node linkType: hard "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" - checksum: 3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d languageName: node linkType: hard "lines-and-columns@npm:~2.0.3": version: 2.0.3 resolution: "lines-and-columns@npm:2.0.3" - checksum: 09525c10010a925b7efe858f1dd3184eeac34f0a9bc34993075ec490efad71e948147746b18e9540279cc87cd44085b038f986903db3de65ffe96d38a7b91c4c + checksum: 10c0/09525c10010a925b7efe858f1dd3184eeac34f0a9bc34993075ec490efad71e948147746b18e9540279cc87cd44085b038f986903db3de65ffe96d38a7b91c4c languageName: node linkType: hard @@ -23426,7 +23426,7 @@ __metadata: resolution: "linkify-it@npm:3.0.3" dependencies: uc.micro: "npm:^1.0.1" - checksum: 468cb4954f85cdfc16e169db89a42d65287e3f121a9448b29c3c00d64c6f5a8f4367bea3978ba9109a0e3a10b19d50632b983639f91b9be9f20d1f63a5ff5bc1 + checksum: 10c0/468cb4954f85cdfc16e169db89a42d65287e3f121a9448b29c3c00d64c6f5a8f4367bea3978ba9109a0e3a10b19d50632b983639f91b9be9f20d1f63a5ff5bc1 languageName: node linkType: hard @@ -23445,7 +23445,7 @@ __metadata: peerDependenciesMeta: enquirer: optional: true - checksum: 2abfcd4346b8208e8d406cfe7a058cd10e3238f60de1ee53fa108a507b45b853ceb87e0d1d4ff229bbf6dd6e896262352e0c7a8895b8511cd55fe94304d3921e + checksum: 10c0/2abfcd4346b8208e8d406cfe7a058cd10e3238f60de1ee53fa108a507b45b853ceb87e0d1d4ff229bbf6dd6e896262352e0c7a8895b8511cd55fe94304d3921e languageName: node linkType: hard @@ -23466,7 +23466,7 @@ __metadata: peerDependenciesMeta: enquirer: optional: true - checksum: 8301703876ad6bf50cd769e9c1169c2aa435951d69d4f54fc202a13c1b6006a9b3afbcf9842440eb22f08beec4d311d365e31d4ed2e0fcabf198d8085b06a421 + checksum: 10c0/8301703876ad6bf50cd769e9c1169c2aa435951d69d4f54fc202a13c1b6006a9b3afbcf9842440eb22f08beec4d311d365e31d4ed2e0fcabf198d8085b06a421 languageName: node linkType: hard @@ -23487,7 +23487,7 @@ __metadata: peerDependenciesMeta: enquirer: optional: true - checksum: 0e64dc5e66fbd4361f6b35c49489ed842a1d7de30cf2b5c06bf4569669449288698b8ea93f7842aaf3c510963a1e554bca31376b9054d1521445d1ce4c917ea1 + checksum: 10c0/0e64dc5e66fbd4361f6b35c49489ed842a1d7de30cf2b5c06bf4569669449288698b8ea93f7842aaf3c510963a1e554bca31376b9054d1521445d1ce4c917ea1 languageName: node linkType: hard @@ -23499,7 +23499,7 @@ __metadata: parse-json: "npm:^5.0.0" strip-bom: "npm:^4.0.0" type-fest: "npm:^0.6.0" - checksum: fcb46ef75bab917f37170ba76781a1690bf67144bb53931cb0ed8e4aa20ca439e9c354fcf3594aed531f47dbeb4a49800acab7fdffd553c402ac40c987706d7b + checksum: 10c0/fcb46ef75bab917f37170ba76781a1690bf67144bb53931cb0ed8e4aa20ca439e9c354fcf3594aed531f47dbeb4a49800acab7fdffd553c402ac40c987706d7b languageName: node linkType: hard @@ -23511,21 +23511,21 @@ __metadata: parse-json: "npm:^4.0.0" pify: "npm:^3.0.0" strip-bom: "npm:^3.0.0" - checksum: 6b48f6a0256bdfcc8970be2c57f68f10acb2ee7e63709b386b2febb6ad3c86198f840889cdbe71d28f741cbaa2f23a7771206b138cd1bdd159564511ca37c1d5 + checksum: 10c0/6b48f6a0256bdfcc8970be2c57f68f10acb2ee7e63709b386b2febb6ad3c86198f840889cdbe71d28f741cbaa2f23a7771206b138cd1bdd159564511ca37c1d5 languageName: node linkType: hard "loader-runner@npm:^2.4.0": version: 2.4.0 resolution: "loader-runner@npm:2.4.0" - checksum: 1f723bd8318453c2d073d7befbf891ba6d2a02f22622688bf7d22e7ba527a0f9476c7fdfedc6bfa2b55c0389d9f406f3a5239ed1b33c9088d77cfed085086a1e + checksum: 10c0/1f723bd8318453c2d073d7befbf891ba6d2a02f22622688bf7d22e7ba527a0f9476c7fdfedc6bfa2b55c0389d9f406f3a5239ed1b33c9088d77cfed085086a1e languageName: node linkType: hard "loader-runner@npm:^4.2.0": version: 4.3.0 resolution: "loader-runner@npm:4.3.0" - checksum: a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 languageName: node linkType: hard @@ -23536,7 +23536,7 @@ __metadata: big.js: "npm:^5.2.2" emojis-list: "npm:^3.0.0" json5: "npm:^1.0.1" - checksum: 2b726088b5526f7605615e3e28043ae9bbd2453f4a85898e1151f3c39dbf7a2b65d09f3996bc588d92ac7e717ded529d3e1ea3ea42c433393be84a58234a2f53 + checksum: 10c0/2b726088b5526f7605615e3e28043ae9bbd2453f4a85898e1151f3c39dbf7a2b65d09f3996bc588d92ac7e717ded529d3e1ea3ea42c433393be84a58234a2f53 languageName: node linkType: hard @@ -23547,7 +23547,7 @@ __metadata: big.js: "npm:^5.2.2" emojis-list: "npm:^3.0.0" json5: "npm:^2.1.2" - checksum: d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 languageName: node linkType: hard @@ -23557,7 +23557,7 @@ __metadata: dependencies: mlly: "npm:^1.4.2" pkg-types: "npm:^1.0.3" - checksum: f61cbd00d7689f275558b1a45c7ff2a3ddf8472654123ed880215677b9adfa729f1081e50c27ffb415cdb9fa706fb755fec5e23cdd965be375c8059e87ff1cc9 + checksum: 10c0/f61cbd00d7689f275558b1a45c7ff2a3ddf8472654123ed880215677b9adfa729f1081e50c27ffb415cdb9fa706fb755fec5e23cdd965be375c8059e87ff1cc9 languageName: node linkType: hard @@ -23567,7 +23567,7 @@ __metadata: dependencies: p-locate: "npm:^2.0.0" path-exists: "npm:^3.0.0" - checksum: 24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 + checksum: 10c0/24efa0e589be6aa3c469b502f795126b26ab97afa378846cb508174211515633b770aa0ba610cab113caedab8d2a4902b061a08aaed5297c12ab6f5be4df0133 languageName: node linkType: hard @@ -23577,7 +23577,7 @@ __metadata: dependencies: p-locate: "npm:^3.0.0" path-exists: "npm:^3.0.0" - checksum: 3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b languageName: node linkType: hard @@ -23586,7 +23586,7 @@ __metadata: resolution: "locate-path@npm:5.0.0" dependencies: p-locate: "npm:^4.1.0" - checksum: 33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 languageName: node linkType: hard @@ -23595,7 +23595,7 @@ __metadata: resolution: "locate-path@npm:6.0.0" dependencies: p-locate: "npm:^5.0.0" - checksum: d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 languageName: node linkType: hard @@ -23604,7 +23604,7 @@ __metadata: resolution: "locate-path@npm:7.2.0" dependencies: p-locate: "npm:^6.0.0" - checksum: 139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 languageName: node linkType: hard @@ -23615,189 +23615,189 @@ __metadata: tslib: "npm:^1.9.2" peerDependencies: lodash: 4.x - checksum: 02881ae6e595245badbc29f4b4bc57f6fbab45ed5d7117c269b9a3c5efa57726670028074c989bd8b0a587211fa6d9447ac6124fb9e887c0571b307e1746bac8 + checksum: 10c0/02881ae6e595245badbc29f4b4bc57f6fbab45ed5d7117c269b9a3c5efa57726670028074c989bd8b0a587211fa6d9447ac6124fb9e887c0571b307e1746bac8 languageName: node linkType: hard "lodash.camelcase@npm:^4.3.0": version: 4.3.0 resolution: "lodash.camelcase@npm:4.3.0" - checksum: fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 + checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432 languageName: node linkType: hard "lodash.chunk@npm:^4.2.0": version: 4.2.0 resolution: "lodash.chunk@npm:4.2.0" - checksum: f9f99969561ad2f62af1f9a96c5bd0af776f000292b0d8db3126c28eb3b32e210d7c31b49c18d0d7901869bd769057046dc134b60cfa0c2c4ce017823a26bb23 + checksum: 10c0/f9f99969561ad2f62af1f9a96c5bd0af776f000292b0d8db3126c28eb3b32e210d7c31b49c18d0d7901869bd769057046dc134b60cfa0c2c4ce017823a26bb23 languageName: node linkType: hard "lodash.clonedeep@npm:^4.5.0": version: 4.5.0 resolution: "lodash.clonedeep@npm:4.5.0" - checksum: 2caf0e4808f319d761d2939ee0642fa6867a4bbf2cfce43276698828380756b99d4c4fa226d881655e6ac298dd453fe12a5ec8ba49861777759494c534936985 + checksum: 10c0/2caf0e4808f319d761d2939ee0642fa6867a4bbf2cfce43276698828380756b99d4c4fa226d881655e6ac298dd453fe12a5ec8ba49861777759494c534936985 languageName: node linkType: hard "lodash.debounce@npm:^4.0.8": version: 4.0.8 resolution: "lodash.debounce@npm:4.0.8" - checksum: 762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 languageName: node linkType: hard "lodash.defaults@npm:^4.2.0": version: 4.2.0 resolution: "lodash.defaults@npm:4.2.0" - checksum: d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 + checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 languageName: node linkType: hard "lodash.escape@npm:^4.0.1": version: 4.0.1 resolution: "lodash.escape@npm:4.0.1" - checksum: 90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b + checksum: 10c0/90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b languageName: node linkType: hard "lodash.flatten@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flatten@npm:4.4.0" - checksum: 97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a + checksum: 10c0/97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a languageName: node linkType: hard "lodash.includes@npm:^4.3.0": version: 4.3.0 resolution: "lodash.includes@npm:4.3.0" - checksum: 7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b + checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b languageName: node linkType: hard "lodash.invokemap@npm:^4.6.0": version: 4.6.0 resolution: "lodash.invokemap@npm:4.6.0" - checksum: 2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 + checksum: 10c0/2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 languageName: node linkType: hard "lodash.isarguments@npm:^3.1.0": version: 3.1.0 resolution: "lodash.isarguments@npm:3.1.0" - checksum: 5e8f95ba10975900a3920fb039a3f89a5a79359a1b5565e4e5b4310ed6ebe64011e31d402e34f577eca983a1fc01ff86c926e3cbe602e1ddfc858fdd353e62d8 + checksum: 10c0/5e8f95ba10975900a3920fb039a3f89a5a79359a1b5565e4e5b4310ed6ebe64011e31d402e34f577eca983a1fc01ff86c926e3cbe602e1ddfc858fdd353e62d8 languageName: node linkType: hard "lodash.isboolean@npm:^3.0.3": version: 3.0.3 resolution: "lodash.isboolean@npm:3.0.3" - checksum: 0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 + checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 languageName: node linkType: hard "lodash.isinteger@npm:^4.0.4": version: 4.0.4 resolution: "lodash.isinteger@npm:4.0.4" - checksum: 4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 + checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 languageName: node linkType: hard "lodash.ismatch@npm:^4.4.0": version: 4.4.0 resolution: "lodash.ismatch@npm:4.4.0" - checksum: 8f96a5dc4b8d3fc5a033dcb259d0c3148a1044fa4d02b4a0e8dce0fa1f2ef3ec4ac131e20b5cb2c985a4e9bcb1c37c0aa5af2cef70094959389617347b8fc645 + checksum: 10c0/8f96a5dc4b8d3fc5a033dcb259d0c3148a1044fa4d02b4a0e8dce0fa1f2ef3ec4ac131e20b5cb2c985a4e9bcb1c37c0aa5af2cef70094959389617347b8fc645 languageName: node linkType: hard "lodash.isnumber@npm:^3.0.3": version: 3.0.3 resolution: "lodash.isnumber@npm:3.0.3" - checksum: 2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d + checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d languageName: node linkType: hard "lodash.isplainobject@npm:^4.0.6": version: 4.0.6 resolution: "lodash.isplainobject@npm:4.0.6" - checksum: afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb languageName: node linkType: hard "lodash.isstring@npm:^4.0.1": version: 4.0.1 resolution: "lodash.isstring@npm:4.0.1" - checksum: 09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 languageName: node linkType: hard "lodash.kebabcase@npm:^4.1.1": version: 4.1.1 resolution: "lodash.kebabcase@npm:4.1.1" - checksum: da5d8f41dbb5bc723d4bf9203d5096ca8da804d6aec3d2b56457156ba6c8d999ff448d347ebd97490da853cb36696ea4da09a431499f1ee8deb17b094ecf4e33 + checksum: 10c0/da5d8f41dbb5bc723d4bf9203d5096ca8da804d6aec3d2b56457156ba6c8d999ff448d347ebd97490da853cb36696ea4da09a431499f1ee8deb17b094ecf4e33 languageName: node linkType: hard "lodash.memoize@npm:^4.1.2": version: 4.1.2 resolution: "lodash.memoize@npm:4.1.2" - checksum: c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 languageName: node linkType: hard "lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" - checksum: 402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 languageName: node linkType: hard "lodash.mergewith@npm:^4.6.2": version: 4.6.2 resolution: "lodash.mergewith@npm:4.6.2" - checksum: 4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5 + checksum: 10c0/4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5 languageName: node linkType: hard "lodash.once@npm:^4.0.0, lodash.once@npm:^4.1.1": version: 4.1.1 resolution: "lodash.once@npm:4.1.1" - checksum: 46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 + checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 languageName: node linkType: hard "lodash.pullall@npm:^4.2.0": version: 4.2.0 resolution: "lodash.pullall@npm:4.2.0" - checksum: b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c + checksum: 10c0/b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c languageName: node linkType: hard "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" - checksum: fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 + checksum: 10c0/fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 languageName: node linkType: hard "lodash.uniq@npm:^4.5.0": version: 4.5.0 resolution: "lodash.uniq@npm:4.5.0" - checksum: 262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e + checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e languageName: node linkType: hard "lodash.uniqby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.uniqby@npm:4.7.0" - checksum: c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 + checksum: 10c0/c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 languageName: node linkType: hard "lodash@npm:4.17.21, lodash@npm:^4.11.2, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": version: 4.17.21 resolution: "lodash@npm:4.17.21" - checksum: d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c languageName: node linkType: hard @@ -23807,7 +23807,7 @@ __metadata: dependencies: chalk: "npm:^4.1.0" is-unicode-supported: "npm:^0.1.0" - checksum: 67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 languageName: node linkType: hard @@ -23817,7 +23817,7 @@ __metadata: dependencies: chalk: "npm:^5.0.0" is-unicode-supported: "npm:^1.1.0" - checksum: c14f8567c6618a7f96209c4c4b9fb3b794187116904712f7b526e465a5c9535728aec983735a5bef919247d0e54b9b72b6680a7fb9fc72d76b945dac4865e669 + checksum: 10c0/c14f8567c6618a7f96209c4c4b9fb3b794187116904712f7b526e465a5c9535728aec983735a5bef919247d0e54b9b72b6680a7fb9fc72d76b945dac4865e669 languageName: node linkType: hard @@ -23829,7 +23829,7 @@ __metadata: cli-cursor: "npm:^3.1.0" slice-ansi: "npm:^4.0.0" wrap-ansi: "npm:^6.2.0" - checksum: 18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 languageName: node linkType: hard @@ -23842,21 +23842,21 @@ __metadata: slice-ansi: "npm:^5.0.0" strip-ansi: "npm:^7.0.1" wrap-ansi: "npm:^8.0.1" - checksum: 1050ea2027e80f32e132aace909987cb00c2719368c78b82ffca681a5b3f4020eeb5f4b4e310c47c35c6c36aff258c1d1bc51485ac44d6fdac9eb0a4275c539f + checksum: 10c0/1050ea2027e80f32e132aace909987cb00c2719368c78b82ffca681a5b3f4020eeb5f4b4e310c47c35c6c36aff258c1d1bc51485ac44d6fdac9eb0a4275c539f languageName: node linkType: hard "logical-not@npm:^1.0.1": version: 1.0.9 resolution: "logical-not@npm:1.0.9" - checksum: 5428321fc786efd1a74822864f20ada974160e70277825ab191137c7e7447a3951a20fffdfec5f2333de4fc8ea5dd2b3383f7227c4ab258c8c33396af08545d1 + checksum: 10c0/5428321fc786efd1a74822864f20ada974160e70277825ab191137c7e7447a3951a20fffdfec5f2333de4fc8ea5dd2b3383f7227c4ab258c8c33396af08545d1 languageName: node linkType: hard "long@npm:^5.0.0": version: 5.2.3 resolution: "long@npm:5.2.3" - checksum: 6a0da658f5ef683b90330b1af76f06790c623e148222da9d75b60e266bbf88f803232dd21464575681638894a84091616e7f89557aa087fd14116c0f4e0e43d9 + checksum: 10c0/6a0da658f5ef683b90330b1af76f06790c623e148222da9d75b60e266bbf88f803232dd21464575681638894a84091616e7f89557aa087fd14116c0f4e0e43d9 languageName: node linkType: hard @@ -23867,7 +23867,7 @@ __metadata: js-tokens: "npm:^3.0.0 || ^4.0.0" bin: loose-envify: cli.js - checksum: 655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e languageName: node linkType: hard @@ -23876,7 +23876,7 @@ __metadata: resolution: "loupe@npm:2.3.7" dependencies: get-func-name: "npm:^2.0.1" - checksum: 71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 + checksum: 10c0/71a781c8fc21527b99ed1062043f1f2bb30bdaf54fa4cf92463427e1718bc6567af2988300bc243c1f276e4f0876f29e3cbf7b58106fdc186915687456ce5bf4 languageName: node linkType: hard @@ -23885,14 +23885,14 @@ __metadata: resolution: "lower-case-first@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 22253389fa0693ec1ba09b9394be3a8228304bf21d074703db2eef97c16cda9c66462d88f9b91d4ad0186493d23cad99c63d38ebc13f9a808bc83aad539ff404 + checksum: 10c0/22253389fa0693ec1ba09b9394be3a8228304bf21d074703db2eef97c16cda9c66462d88f9b91d4ad0186493d23cad99c63d38ebc13f9a808bc83aad539ff404 languageName: node linkType: hard "lower-case@npm:^1.1.1": version: 1.1.4 resolution: "lower-case@npm:1.1.4" - checksum: 2153ae5490d655a63addc8e7d2f848c6c94803b342ed2d177f75e8073e9fbb50a733d1432c82e1cb8425fa6eae14b2877bf5bbdcb93ab93bb982fb5c3962c57b + checksum: 10c0/2153ae5490d655a63addc8e7d2f848c6c94803b342ed2d177f75e8073e9fbb50a733d1432c82e1cb8425fa6eae14b2877bf5bbdcb93ab93bb982fb5c3962c57b languageName: node linkType: hard @@ -23901,35 +23901,35 @@ __metadata: resolution: "lower-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b languageName: node linkType: hard "lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": version: 1.0.1 resolution: "lowercase-keys@npm:1.0.1" - checksum: 56776a8e1ef1aca98ecf6c19b30352ae1cf257b65b8ac858b7d8a0e8b348774d12a9b41aa7f59bfea51bff44bc7a198ab63ba4406bfba60dba008799618bef66 + checksum: 10c0/56776a8e1ef1aca98ecf6c19b30352ae1cf257b65b8ac858b7d8a0e8b348774d12a9b41aa7f59bfea51bff44bc7a198ab63ba4406bfba60dba008799618bef66 languageName: node linkType: hard "lowercase-keys@npm:^2.0.0": version: 2.0.0 resolution: "lowercase-keys@npm:2.0.0" - checksum: f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 + checksum: 10c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 languageName: node linkType: hard "lru-cache@npm:*, lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": version: 10.1.0 resolution: "lru-cache@npm:10.1.0" - checksum: 778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e + checksum: 10c0/778bc8b2626daccd75f24c4b4d10632496e21ba064b126f526c626fbdbc5b28c472013fccd45d7646b9e1ef052444824854aed617b59cd570d01a8b7d651fc1e languageName: node linkType: hard "lru-cache@npm:7.18.3, lru-cache@npm:^7.5.1, lru-cache@npm:^7.7.1": version: 7.18.3 resolution: "lru-cache@npm:7.18.3" - checksum: b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed languageName: node linkType: hard @@ -23938,7 +23938,7 @@ __metadata: resolution: "lru-cache@npm:5.1.1" dependencies: yallist: "npm:^3.0.2" - checksum: 89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 languageName: node linkType: hard @@ -23947,7 +23947,7 @@ __metadata: resolution: "lru-cache@npm:6.0.0" dependencies: yallist: "npm:^4.0.0" - checksum: cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 languageName: node linkType: hard @@ -23957,7 +23957,7 @@ __metadata: dependencies: pseudomap: "npm:^1.0.1" yallist: "npm:^2.0.0" - checksum: 92ff839ef07632d35f6bddd870909ae49edc1956b409b6a6db342e6d92bbea4aa4f7107dae35db7d5dd59cf27d5a43bbd335f26e2458d1b8860783f68fc1a0af + checksum: 10c0/92ff839ef07632d35f6bddd870909ae49edc1956b409b6a6db342e6d92bbea4aa4f7107dae35db7d5dd59cf27d5a43bbd335f26e2458d1b8860783f68fc1a0af languageName: node linkType: hard @@ -23967,7 +23967,7 @@ __metadata: dependencies: lodash.clonedeep: "npm:^4.5.0" lru-cache: "npm:~4.0.0" - checksum: b2d38600f8f5b936c9e54fd3459aac8d2d3872920bce231a22cffb3b44521ccdfca9df11c8d5b091c8764e0cb2560fd5fc440acadddcec102e2ba03f6fa2c282 + checksum: 10c0/b2d38600f8f5b936c9e54fd3459aac8d2d3872920bce231a22cffb3b44521ccdfca9df11c8d5b091c8764e0cb2560fd5fc440acadddcec102e2ba03f6fa2c282 languageName: node linkType: hard @@ -23976,7 +23976,7 @@ __metadata: resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js - checksum: 36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b + checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b languageName: node linkType: hard @@ -23985,7 +23985,7 @@ __metadata: resolution: "magic-string@npm:0.30.5" dependencies: "@jridgewell/sourcemap-codec": "npm:^1.4.15" - checksum: 38ac220ca7539e96da7ea2f38d85796bdf5c69b6bcae728c4bc2565084e6dc326b9174ee9770bea345cf6c9b3a24041b767167874fab5beca874d2356a9d1520 + checksum: 10c0/38ac220ca7539e96da7ea2f38d85796bdf5c69b6bcae728c4bc2565084e6dc326b9174ee9770bea345cf6c9b3a24041b767167874fab5beca874d2356a9d1520 languageName: node linkType: hard @@ -23997,7 +23997,7 @@ __metadata: meow: "npm:^10.0.0" bin: make-dir: cli.js - checksum: cc5e80aae516eda06eae8a4f0976a4e20125cee4c828b193f1eee05d925aa6c6abb5a233427ecfe4216881f58c65b9fa4c7deff9dd4de9c259098de0acdd7279 + checksum: 10c0/cc5e80aae516eda06eae8a4f0976a4e20125cee4c828b193f1eee05d925aa6c6abb5a233427ecfe4216881f58c65b9fa4c7deff9dd4de9c259098de0acdd7279 languageName: node linkType: hard @@ -24006,7 +24006,7 @@ __metadata: resolution: "make-dir@npm:4.0.0" dependencies: semver: "npm:^7.5.3" - checksum: 69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 languageName: node linkType: hard @@ -24015,7 +24015,7 @@ __metadata: resolution: "make-dir@npm:1.3.0" dependencies: pify: "npm:^3.0.0" - checksum: 5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 + checksum: 10c0/5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 languageName: node linkType: hard @@ -24025,7 +24025,7 @@ __metadata: dependencies: pify: "npm:^4.0.1" semver: "npm:^5.6.0" - checksum: ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 languageName: node linkType: hard @@ -24034,14 +24034,14 @@ __metadata: resolution: "make-dir@npm:3.1.0" dependencies: semver: "npm:^6.0.0" - checksum: 56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa + checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa languageName: node linkType: hard "make-error@npm:^1.1.1": version: 1.3.6 resolution: "make-error@npm:1.3.6" - checksum: 171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f languageName: node linkType: hard @@ -24064,7 +24064,7 @@ __metadata: promise-retry: "npm:^2.0.1" socks-proxy-agent: "npm:^7.0.0" ssri: "npm:^10.0.0" - checksum: c161bde51dbc03382f9fac091734526a64dd6878205db6c338f70d2133df797b5b5166bff3091cf7d4785869d4b21e99a58139c1790c2fb1b5eec00f528f5f0b + checksum: 10c0/c161bde51dbc03382f9fac091734526a64dd6878205db6c338f70d2133df797b5b5166bff3091cf7d4785869d4b21e99a58139c1790c2fb1b5eec00f528f5f0b languageName: node linkType: hard @@ -24083,7 +24083,7 @@ __metadata: negotiator: "npm:^0.6.3" promise-retry: "npm:^2.0.1" ssri: "npm:^10.0.0" - checksum: 43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 languageName: node linkType: hard @@ -24092,49 +24092,49 @@ __metadata: resolution: "makeerror@npm:1.0.12" dependencies: tmpl: "npm:1.0.5" - checksum: b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c languageName: node linkType: hard "map-cache@npm:^0.2.0, map-cache@npm:^0.2.2": version: 0.2.2 resolution: "map-cache@npm:0.2.2" - checksum: 05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 + checksum: 10c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 languageName: node linkType: hard "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" - checksum: ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52 + checksum: 10c0/ccca88395e7d38671ed9f5652ecf471ecd546924be2fb900836b9da35e068a96687d96a5f93dcdfa94d9a27d649d2f10a84595590f89a347fb4dda47629dcc52 languageName: node linkType: hard "map-obj@npm:^4.0.0, map-obj@npm:^4.1.0": version: 4.3.0 resolution: "map-obj@npm:4.3.0" - checksum: 1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b + checksum: 10c0/1c19e1c88513c8abdab25c316367154c6a0a6a0f77e3e8c391bb7c0e093aefed293f539d026dc013d86219e5e4c25f23b0003ea588be2101ccd757bacc12d43b languageName: node linkType: hard "map-or-similar@npm:^1.5.0": version: 1.5.0 resolution: "map-or-similar@npm:1.5.0" - checksum: 33c6ccfdc272992e33e4e99a69541a3e7faed9de3ac5bc732feb2500a9ee71d3f9d098980a70b7746e7eeb7f859ff7dfb8aa9b5ecc4e34170a32ab78cfb18def + checksum: 10c0/33c6ccfdc272992e33e4e99a69541a3e7faed9de3ac5bc732feb2500a9ee71d3f9d098980a70b7746e7eeb7f859ff7dfb8aa9b5ecc4e34170a32ab78cfb18def languageName: node linkType: hard "map-stream@npm:~0.1.0": version: 0.1.0 resolution: "map-stream@npm:0.1.0" - checksum: 7dd6debe511c1b55d9da75e1efa65a28b1252a2d8357938d2e49b412713c478efbaefb0cdf0ee0533540c3bf733e8f9f71e1a15aa0fe74bf71b64e75bf1576bd + checksum: 10c0/7dd6debe511c1b55d9da75e1efa65a28b1252a2d8357938d2e49b412713c478efbaefb0cdf0ee0533540c3bf733e8f9f71e1a15aa0fe74bf71b64e75bf1576bd languageName: node linkType: hard "map-values@npm:^1.0.1": version: 1.0.1 resolution: "map-values@npm:1.0.1" - checksum: a1e2a4fe64f60e43c6f6508e872a081651544fd654b643ffcbdd2cae72611af1f6e4dfb51484fe3e802db4eb5f340cab4022b9b86075136801e9d1db45053b40 + checksum: 10c0/a1e2a4fe64f60e43c6f6508e872a081651544fd654b643ffcbdd2cae72611af1f6e4dfb51484fe3e802db4eb5f340cab4022b9b86075136801e9d1db45053b40 languageName: node linkType: hard @@ -24143,7 +24143,7 @@ __metadata: resolution: "map-visit@npm:1.0.0" dependencies: object-visit: "npm:^1.0.0" - checksum: fb3475e5311939a6147e339999113db607adc11c7c3cd3103e5e9dbf502898416ecba6b1c7c649c6d4d12941de00cee58b939756bdf20a9efe7d4fa5a5738b73 + checksum: 10c0/fb3475e5311939a6147e339999113db607adc11c7c3cd3103e5e9dbf502898416ecba6b1c7c649c6d4d12941de00cee58b939756bdf20a9efe7d4fa5a5738b73 languageName: node linkType: hard @@ -24153,7 +24153,7 @@ __metadata: peerDependencies: "@types/markdown-it": "*" markdown-it: "*" - checksum: f117866488013b7e4085a6b59d12bf62879181aef65ea2851f01ed1b763b8c052580c2c27fa8bd009421886220c6beeb373a65af9e885ce63a36ee9f8dcd0e89 + checksum: 10c0/f117866488013b7e4085a6b59d12bf62879181aef65ea2851f01ed1b763b8c052580c2c27fa8bd009421886220c6beeb373a65af9e885ce63a36ee9f8dcd0e89 languageName: node linkType: hard @@ -24168,7 +24168,7 @@ __metadata: uc.micro: "npm:^1.0.5" bin: markdown-it: bin/markdown-it.js - checksum: 7f97b924e6f90e2c5ccdfb486a19bd7885b938f568a86b527bf6f916a16b01a298e6739f86a99e77acb5e7c020f6c8b34bd726364179b3f820e48b2971a6450c + checksum: 10c0/7f97b924e6f90e2c5ccdfb486a19bd7885b938f568a86b527bf6f916a16b01a298e6739f86a99e77acb5e7c020f6c8b34bd726364179b3f820e48b2971a6450c languageName: node linkType: hard @@ -24177,7 +24177,7 @@ __metadata: resolution: "markdown-to-jsx@npm:7.2.1" peerDependencies: react: ">= 0.14.0" - checksum: 002ba7c723853c456a4902976d5f5a15d9585bd75dc6ab3add783b4a346e3372327c4fffd7843f30fd5b6550c5fd97e7142330521a5886f8b770db4c61558d61 + checksum: 10c0/002ba7c723853c456a4902976d5f5a15d9585bd75dc6ab3add783b4a346e3372327c4fffd7843f30fd5b6550c5fd97e7142330521a5886f8b770db4c61558d61 languageName: node linkType: hard @@ -24186,7 +24186,7 @@ __metadata: resolution: "marked@npm:4.3.0" bin: marked: bin/marked.js - checksum: 0013463855e31b9c88d8bb2891a611d10ef1dc79f2e3cbff1bf71ba389e04c5971298c886af0be799d7fa9aa4593b086a136062d59f1210b0480b026a8c5dc47 + checksum: 10c0/0013463855e31b9c88d8bb2891a611d10ef1dc79f2e3cbff1bf71ba389e04c5971298c886af0be799d7fa9aa4593b086a136062d59f1210b0480b026a8c5dc47 languageName: node linkType: hard @@ -24197,7 +24197,7 @@ __metadata: hash-base: "npm:^3.0.0" inherits: "npm:^2.0.1" safe-buffer: "npm:^5.1.2" - checksum: b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 languageName: node linkType: hard @@ -24208,7 +24208,7 @@ __metadata: charenc: "npm:0.0.2" crypt: "npm:0.0.2" is-buffer: "npm:~1.1.6" - checksum: 14a21d597d92e5b738255fbe7fe379905b8cb97e0a49d44a20b58526a646ec5518c337b817ce0094ca94d3e81a3313879c4c7b510d250c282d53afbbdede9110 + checksum: 10c0/14a21d597d92e5b738255fbe7fe379905b8cb97e0a49d44a20b58526a646ec5518c337b817ce0094ca94d3e81a3313879c4c7b510d250c282d53afbbdede9110 languageName: node linkType: hard @@ -24217,42 +24217,42 @@ __metadata: resolution: "mdast-util-definitions@npm:4.0.0" dependencies: unist-util-visit: "npm:^2.0.0" - checksum: d81bb0b702f99878c8e8e4f66dd7f6f673ab341f061b3d9487ba47dad28b584e02f16b4c42df23714eaac8a7dd8544ba7d77308fad8d4a9fd0ac92e2a7f56be9 + checksum: 10c0/d81bb0b702f99878c8e8e4f66dd7f6f673ab341f061b3d9487ba47dad28b584e02f16b4c42df23714eaac8a7dd8544ba7d77308fad8d4a9fd0ac92e2a7f56be9 languageName: node linkType: hard "mdast-util-to-string@npm:^1.0.0": version: 1.1.0 resolution: "mdast-util-to-string@npm:1.1.0" - checksum: 5dad9746ec0839792a8a35f504564e8d2b8c30013652410306c111963d33f1ee7b5477aa64ed77b64e13216363a29395809875ffd80e2031a08614657628a121 + checksum: 10c0/5dad9746ec0839792a8a35f504564e8d2b8c30013652410306c111963d33f1ee7b5477aa64ed77b64e13216363a29395809875ffd80e2031a08614657628a121 languageName: node linkType: hard "mdn-data@npm:2.0.28": version: 2.0.28 resolution: "mdn-data@npm:2.0.28" - checksum: 20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b + checksum: 10c0/20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b languageName: node linkType: hard "mdn-data@npm:2.0.30": version: 2.0.30 resolution: "mdn-data@npm:2.0.30" - checksum: a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 + checksum: 10c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 languageName: node linkType: hard "mdurl@npm:^1.0.1": version: 1.0.1 resolution: "mdurl@npm:1.0.1" - checksum: ea8534341eb002aaa532a722daef6074cd8ca66202e10a2b4cda46722c1ebdb1da92197ac300bc953d3ef1bf41cd6561ef2cc69d82d5d0237dae00d4a61a4eee + checksum: 10c0/ea8534341eb002aaa532a722daef6074cd8ca66202e10a2b4cda46722c1ebdb1da92197ac300bc953d3ef1bf41cd6561ef2cc69d82d5d0237dae00d4a61a4eee languageName: node linkType: hard "media-typer@npm:0.3.0": version: 0.3.0 resolution: "media-typer@npm:0.3.0" - checksum: d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 languageName: node linkType: hard @@ -24264,7 +24264,7 @@ __metadata: thingies: "npm:^1.11.1" peerDependencies: tslib: 2 - checksum: 370a70ff9156aaf5a75bfeca265d66b08795bf736c5ad0c1a597e489864d4f031f424b320ef3f331a99f0fa36ad90688ab28859b7c647ee3b473d4ee1fdd8d95 + checksum: 10c0/370a70ff9156aaf5a75bfeca265d66b08795bf736c5ad0c1a597e489864d4f031f424b320ef3f331a99f0fa36ad90688ab28859b7c647ee3b473d4ee1fdd8d95 languageName: node linkType: hard @@ -24273,14 +24273,14 @@ __metadata: resolution: "memfs@npm:3.5.3" dependencies: fs-monkey: "npm:^1.0.4" - checksum: 038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 + checksum: 10c0/038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 languageName: node linkType: hard "memjs@npm:1.3.1": version: 1.3.1 resolution: "memjs@npm:1.3.1" - checksum: 1d77b54335fb234378d7be31c6a9c2e219797b4913b893bb85b67fc25112073ff4c6e7c84f59d31e0fa3a62c0320219c90a7bda65e53ff9792679af036290961 + checksum: 10c0/1d77b54335fb234378d7be31c6a9c2e219797b4913b893bb85b67fc25112073ff4c6e7c84f59d31e0fa3a62c0320219c90a7bda65e53ff9792679af036290961 languageName: node linkType: hard @@ -24289,7 +24289,7 @@ __metadata: resolution: "memoizerific@npm:1.11.3" dependencies: map-or-similar: "npm:^1.5.0" - checksum: 661bf69b7afbfad57f0208f0c63324f4c96087b480708115b78ee3f0237d86c7f91347f6db31528740b2776c2e34c709bcb034e1e910edee2270c9603a0a469e + checksum: 10c0/661bf69b7afbfad57f0208f0c63324f4c96087b480708115b78ee3f0237d86c7f91347f6db31528740b2776c2e34c709bcb034e1e910edee2270c9603a0a469e languageName: node linkType: hard @@ -24299,7 +24299,7 @@ __metadata: dependencies: errno: "npm:^0.1.3" readable-stream: "npm:^2.0.1" - checksum: f114c44ad8285103cb0e71420cf5bb628d3eb6cbd918197f5951590ff56ba2072f4a97924949c170320cdf180d2da4e8d16a0edd92ba0ca2d2de51dc932841e2 + checksum: 10c0/f114c44ad8285103cb0e71420cf5bb628d3eb6cbd918197f5951590ff56ba2072f4a97924949c170320cdf180d2da4e8d16a0edd92ba0ca2d2de51dc932841e2 languageName: node linkType: hard @@ -24309,14 +24309,14 @@ __metadata: dependencies: errno: "npm:^0.1.3" readable-stream: "npm:^2.0.1" - checksum: 2737a27b14a9e8b8cd757be2ad99e8cc504b78a78aba9d6aa18ff1ef528e2223a433413d2df6ab5332997a5a8ccf075e6c6e90e31ab732a55455ca620e4a720b + checksum: 10c0/2737a27b14a9e8b8cd757be2ad99e8cc504b78a78aba9d6aa18ff1ef528e2223a433413d2df6ab5332997a5a8ccf075e6c6e90e31ab732a55455ca620e4a720b languageName: node linkType: hard "mensch@npm:^0.3.4": version: 0.3.4 resolution: "mensch@npm:0.3.4" - checksum: 177f9c1cb1acd93da98a971288a5da99f819ac06de19ca450040b18ddf8728c7ae0ce22309fadbbfd4ceb773bc5c03bf1cb93ceb91441da9e76e010d314da2ea + checksum: 10c0/177f9c1cb1acd93da98a971288a5da99f819ac06de19ca450040b18ddf8728c7ae0ce22309fadbbfd4ceb773bc5c03bf1cb93ceb91441da9e76e010d314da2ea languageName: node linkType: hard @@ -24336,7 +24336,7 @@ __metadata: trim-newlines: "npm:^4.0.2" type-fest: "npm:^1.2.2" yargs-parser: "npm:^20.2.9" - checksum: a513849022edd5ddcc41d28c679d31978abe414d9db5bc457e95e537a4327b2910fd2f699cdd883293f9a5da8951a50939bf60fbd62f7fe12b9ddf96a84b1b27 + checksum: 10c0/a513849022edd5ddcc41d28c679d31978abe414d9db5bc457e95e537a4327b2910fd2f699cdd883293f9a5da8951a50939bf60fbd62f7fe12b9ddf96a84b1b27 languageName: node linkType: hard @@ -24355,28 +24355,28 @@ __metadata: trim-newlines: "npm:^3.0.0" type-fest: "npm:^0.18.0" yargs-parser: "npm:^20.2.3" - checksum: 9a8d90e616f783650728a90f4ea1e5f763c1c5260369e6596b52430f877f4af8ecbaa8c9d952c93bbefd6d5bda4caed6a96a20ba7d27b511d2971909b01922a2 + checksum: 10c0/9a8d90e616f783650728a90f4ea1e5f763c1c5260369e6596b52430f877f4af8ecbaa8c9d952c93bbefd6d5bda4caed6a96a20ba7d27b511d2971909b01922a2 languageName: node linkType: hard "merge-descriptors@npm:1.0.1, merge-descriptors@npm:~1.0.0": version: 1.0.1 resolution: "merge-descriptors@npm:1.0.1" - checksum: b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec + checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec languageName: node linkType: hard "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" - checksum: 867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 languageName: node linkType: hard "merge2@npm:^1.3.0, merge2@npm:^1.4.1": version: 1.4.1 resolution: "merge2@npm:1.4.1" - checksum: 254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb languageName: node linkType: hard @@ -24388,14 +24388,14 @@ __metadata: peerDependenciesMeta: "@types/node": optional: true - checksum: 2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 + checksum: 10c0/2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 languageName: node linkType: hard "methods@npm:~1.1.2": version: 1.1.2 resolution: "methods@npm:1.1.2" - checksum: bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 languageName: node linkType: hard @@ -24416,7 +24416,7 @@ __metadata: regex-not: "npm:^1.0.0" snapdragon: "npm:^0.8.1" to-regex: "npm:^3.0.2" - checksum: 531a32e7ac92bef60657820202be71b63d0f945c08a69cc4c239c0b19372b751483d464a850a2e3a5ff6cc9060641e43d44c303af104c1a27493d137d8af017f + checksum: 10c0/531a32e7ac92bef60657820202be71b63d0f945c08a69cc4c239c0b19372b751483d464a850a2e3a5ff6cc9060641e43d44c303af104c1a27493d137d8af017f languageName: node linkType: hard @@ -24426,7 +24426,7 @@ __metadata: dependencies: braces: "npm:^3.0.2" picomatch: "npm:^2.3.1" - checksum: 3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff languageName: node linkType: hard @@ -24438,14 +24438,14 @@ __metadata: brorand: "npm:^1.0.1" bin: miller-rabin: bin/miller-rabin - checksum: 26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 languageName: node linkType: hard "mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": version: 1.52.0 resolution: "mime-db@npm:1.52.0" - checksum: 0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa languageName: node linkType: hard @@ -24454,7 +24454,7 @@ __metadata: resolution: "mime-types@npm:2.1.35" dependencies: mime-db: "npm:1.52.0" - checksum: 82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 languageName: node linkType: hard @@ -24463,7 +24463,7 @@ __metadata: resolution: "mime@npm:1.6.0" bin: mime: cli.js - checksum: b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 languageName: node linkType: hard @@ -24472,7 +24472,7 @@ __metadata: resolution: "mime@npm:2.6.0" bin: mime: cli.js - checksum: a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c + checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c languageName: node linkType: hard @@ -24481,35 +24481,35 @@ __metadata: resolution: "mime@npm:3.0.0" bin: mime: cli.js - checksum: 402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 languageName: node linkType: hard "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" - checksum: b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 languageName: node linkType: hard "mimic-fn@npm:^4.0.0": version: 4.0.0 resolution: "mimic-fn@npm:4.0.0" - checksum: de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf + checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf languageName: node linkType: hard "mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" - checksum: c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + checksum: 10c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa languageName: node linkType: hard "min-indent@npm:^1.0.0, min-indent@npm:^1.0.1": version: 1.0.1 resolution: "min-indent@npm:1.0.1" - checksum: 7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c languageName: node linkType: hard @@ -24520,21 +24520,21 @@ __metadata: schema-utils: "npm:^4.0.0" peerDependencies: webpack: ^5.0.0 - checksum: 4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 + checksum: 10c0/4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 languageName: node linkType: hard "minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-assert@npm:1.0.1" - checksum: 96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd languageName: node linkType: hard "minimalistic-crypto-utils@npm:^1.0.1": version: 1.0.1 resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 languageName: node linkType: hard @@ -24543,7 +24543,7 @@ __metadata: resolution: "minimatch@npm:3.0.5" dependencies: brace-expansion: "npm:^1.1.7" - checksum: f398652d0d260137c289c270a4ac98ebe0a27cd316fa0fac72b096e96cbdc89f71d80d47ac7065c716ba3b0b730783b19180bd85a35f9247535d2adfe96bba76 + checksum: 10c0/f398652d0d260137c289c270a4ac98ebe0a27cd316fa0fac72b096e96cbdc89f71d80d47ac7065c716ba3b0b730783b19180bd85a35f9247535d2adfe96bba76 languageName: node linkType: hard @@ -24552,7 +24552,7 @@ __metadata: resolution: "minimatch@npm:4.2.3" dependencies: brace-expansion: "npm:^1.1.7" - checksum: ce19d52a4692037aa7768bfcdca0cef3eb3975ab8e3aaf32ab0a3d23863fca94ba7555d1ca67893320076efe8376e61bf7cc6fa82161a3c1127f0d0b9b06b666 + checksum: 10c0/ce19d52a4692037aa7768bfcdca0cef3eb3975ab8e3aaf32ab0a3d23863fca94ba7555d1ca67893320076efe8376e61bf7cc6fa82161a3c1127f0d0b9b06b666 languageName: node linkType: hard @@ -24561,7 +24561,7 @@ __metadata: resolution: "minimatch@npm:9.0.1" dependencies: brace-expansion: "npm:^2.0.1" - checksum: aa043eb8822210b39888a5d0d28df0017b365af5add9bd522f180d2a6962de1cbbf1bdeacdb1b17f410dc3336bc8d76fb1d3e814cdc65d00c2f68e01f0010096 + checksum: 10c0/aa043eb8822210b39888a5d0d28df0017b365af5add9bd522f180d2a6962de1cbbf1bdeacdb1b17f410dc3336bc8d76fb1d3e814cdc65d00c2f68e01f0010096 languageName: node linkType: hard @@ -24570,7 +24570,7 @@ __metadata: resolution: "minimatch@npm:3.1.2" dependencies: brace-expansion: "npm:^1.1.7" - checksum: 0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 languageName: node linkType: hard @@ -24579,7 +24579,7 @@ __metadata: resolution: "minimatch@npm:5.1.6" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 languageName: node linkType: hard @@ -24588,7 +24588,7 @@ __metadata: resolution: "minimatch@npm:7.4.6" dependencies: brace-expansion: "npm:^2.0.1" - checksum: e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 + checksum: 10c0/e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 languageName: node linkType: hard @@ -24597,7 +24597,7 @@ __metadata: resolution: "minimatch@npm:8.0.4" dependencies: brace-expansion: "npm:^2.0.1" - checksum: a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca + checksum: 10c0/a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca languageName: node linkType: hard @@ -24606,7 +24606,7 @@ __metadata: resolution: "minimatch@npm:9.0.3" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac languageName: node linkType: hard @@ -24617,14 +24617,14 @@ __metadata: arrify: "npm:^1.0.1" is-plain-obj: "npm:^1.1.0" kind-of: "npm:^6.0.3" - checksum: 7871f9cdd15d1e7374e5b013e2ceda3d327a06a8c7b38ae16d9ef941e07d985e952c589e57213f7aa90a8744c60aed9524c0d85e501f5478382d9181f2763f54 + checksum: 10c0/7871f9cdd15d1e7374e5b013e2ceda3d327a06a8c7b38ae16d9ef941e07d985e952c589e57213f7aa90a8744c60aed9524c0d85e501f5478382d9181f2763f54 languageName: node linkType: hard "minimist@npm:^1.2.0, minimist@npm:^1.2.5, minimist@npm:^1.2.6, minimist@npm:^1.2.8": version: 1.2.8 resolution: "minimist@npm:1.2.8" - checksum: 19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 languageName: node linkType: hard @@ -24633,7 +24633,7 @@ __metadata: resolution: "minipass-collect@npm:1.0.2" dependencies: minipass: "npm:^3.0.0" - checksum: 8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 + checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 languageName: node linkType: hard @@ -24642,7 +24642,7 @@ __metadata: resolution: "minipass-collect@npm:2.0.1" dependencies: minipass: "npm:^7.0.3" - checksum: 5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e languageName: node linkType: hard @@ -24657,7 +24657,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 12e0fde7e8fdb1bd923b9243b4788e7d3df305c6ddb3b79ab2da4587fa608c126157c7f6dd43746e8063ee99ec5abbb898d0426c812e9c9b68260c4fea9b279a + checksum: 10c0/12e0fde7e8fdb1bd923b9243b4788e7d3df305c6ddb3b79ab2da4587fa608c126157c7f6dd43746e8063ee99ec5abbb898d0426c812e9c9b68260c4fea9b279a languageName: node linkType: hard @@ -24666,7 +24666,7 @@ __metadata: resolution: "minipass-flush@npm:1.0.5" dependencies: minipass: "npm:^3.0.0" - checksum: 2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd languageName: node linkType: hard @@ -24676,7 +24676,7 @@ __metadata: dependencies: jsonparse: "npm:^1.3.1" minipass: "npm:^3.0.0" - checksum: 9285cbbea801e7bd6a923e7fb66d9c47c8bad880e70b29f0b8ba220c283d065f47bfa887ef87fd1b735d39393ecd53bb13d40c260354e8fcf93d47cf4bf64e9c + checksum: 10c0/9285cbbea801e7bd6a923e7fb66d9c47c8bad880e70b29f0b8ba220c283d065f47bfa887ef87fd1b735d39393ecd53bb13d40c260354e8fcf93d47cf4bf64e9c languageName: node linkType: hard @@ -24685,7 +24685,7 @@ __metadata: resolution: "minipass-pipeline@npm:1.2.4" dependencies: minipass: "npm:^3.0.0" - checksum: cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 languageName: node linkType: hard @@ -24694,7 +24694,7 @@ __metadata: resolution: "minipass-sized@npm:1.0.3" dependencies: minipass: "npm:^3.0.0" - checksum: 298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb languageName: node linkType: hard @@ -24703,28 +24703,28 @@ __metadata: resolution: "minipass@npm:3.3.6" dependencies: yallist: "npm:^4.0.0" - checksum: a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c languageName: node linkType: hard "minipass@npm:^4.2.4": version: 4.2.8 resolution: "minipass@npm:4.2.8" - checksum: 4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce + checksum: 10c0/4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce languageName: node linkType: hard "minipass@npm:^5.0.0": version: 5.0.0 resolution: "minipass@npm:5.0.0" - checksum: a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 languageName: node linkType: hard "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": version: 7.0.4 resolution: "minipass@npm:7.0.4" - checksum: 6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 languageName: node linkType: hard @@ -24734,7 +24734,7 @@ __metadata: dependencies: minipass: "npm:^3.0.0" yallist: "npm:^4.0.0" - checksum: 64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 languageName: node linkType: hard @@ -24752,7 +24752,7 @@ __metadata: pumpify: "npm:^1.3.3" stream-each: "npm:^1.1.0" through2: "npm:^2.0.0" - checksum: 97424a331ce1b9f789a0d3fa47d725dad9adfe5e0ead8bc458ba9fb51c4d2630df6b0966ca9dcbb4c90db48737d58126cbf0e3c170697bf41c265606efa91103 + checksum: 10c0/97424a331ce1b9f789a0d3fa47d725dad9adfe5e0ead8bc458ba9fb51c4d2630df6b0966ca9dcbb4c90db48737d58126cbf0e3c170697bf41c265606efa91103 languageName: node linkType: hard @@ -24762,7 +24762,7 @@ __metadata: dependencies: for-in: "npm:^1.0.2" is-extendable: "npm:^1.0.1" - checksum: cb39ffb73c377222391af788b4c83d1a6cecb2d9fceb7015384f8deb46e151a9b030c21ef59a79cb524d4557e3f74c7248ab948a62a6e7e296b42644863d183b + checksum: 10c0/cb39ffb73c377222391af788b4c83d1a6cecb2d9fceb7015384f8deb46e151a9b030c21ef59a79cb524d4557e3f74c7248ab948a62a6e7e296b42644863d183b languageName: node linkType: hard @@ -24773,7 +24773,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: b9ca754c4c99aa68316ad6bf9dc6aec99a81e94cadc8dfe9918d82ab8f7cbe9c65ed5834846122afa295cf45d3ae53b5975df055b28a51cc347cfa2fad015b5a + checksum: 10c0/b9ca754c4c99aa68316ad6bf9dc6aec99a81e94cadc8dfe9918d82ab8f7cbe9c65ed5834846122afa295cf45d3ae53b5975df055b28a51cc347cfa2fad015b5a languageName: node linkType: hard @@ -24784,7 +24784,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 30b385d42cdb3bdc41c8b8c48fca05a2b58429559e036ecb5a43404a2d408082e12b09cbc078c8f00e6350bd07abef2a11fbe3b386525566836ef86b9b638c00 + checksum: 10c0/30b385d42cdb3bdc41c8b8c48fca05a2b58429559e036ecb5a43404a2d408082e12b09cbc078c8f00e6350bd07abef2a11fbe3b386525566836ef86b9b638c00 languageName: node linkType: hard @@ -24795,7 +24795,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: b5994bb5a3cfdb29a026a93ea512cc398ddf84458b1ceadc63cbbcdab3af9524f049f2264583dca4aec3325dc8a1610ce985b5ed5f4d0a3aa24358bd3b4f4c62 + checksum: 10c0/b5994bb5a3cfdb29a026a93ea512cc398ddf84458b1ceadc63cbbcdab3af9524f049f2264583dca4aec3325dc8a1610ce985b5ed5f4d0a3aa24358bd3b4f4c62 languageName: node linkType: hard @@ -24806,7 +24806,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: eae142007e693e462bc7771a9245c36be9644d93f3d43e3d9803f596f2e4a7039e80f00f71f3d70126fe1768e4f0adc529d5f7c6d22114ce5eda16075e65e330 + checksum: 10c0/eae142007e693e462bc7771a9245c36be9644d93f3d43e3d9803f596f2e4a7039e80f00f71f3d70126fe1768e4f0adc529d5f7c6d22114ce5eda16075e65e330 languageName: node linkType: hard @@ -24827,7 +24827,7 @@ __metadata: yargs: "npm:^16.1.0" bin: mjml-cli: bin/mjml - checksum: cde48a8d28b0b618a3deafc7616096e83c31f15c78a3e168d8fa318798731a83610cb1210f9b2627ece0dfcf013562ebbe9665071bfa6138854f83e8373c2b3f + checksum: 10c0/cde48a8d28b0b618a3deafc7616096e83c31f15c78a3e168d8fa318798731a83610cb1210f9b2627ece0dfcf013562ebbe9665071bfa6138854f83e8373c2b3f languageName: node linkType: hard @@ -24838,7 +24838,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: b00a1889a93ef84cabb93051bca6bd4edde2933c8c0dcce9410d8a5cb1bc941a9fa7dd16e73532b7414cd314f432ffabe30ae6e33bd39f1c6945e0f3823fc3d1 + checksum: 10c0/b00a1889a93ef84cabb93051bca6bd4edde2933c8c0dcce9410d8a5cb1bc941a9fa7dd16e73532b7414cd314f432ffabe30ae6e33bd39f1c6945e0f3823fc3d1 languageName: node linkType: hard @@ -24856,7 +24856,7 @@ __metadata: mjml-migrate: "npm:4.14.1" mjml-parser-xml: "npm:4.14.1" mjml-validator: "npm:4.13.0" - checksum: 623ede77cef2add44da3357b1ffd46b9d7d47e2b9a5f015a398984e6cdbf6fc895753c5dae3bf21849d020b395dd53813fc4fdfc8ae8ea6c10a16a66bafecaa2 + checksum: 10c0/623ede77cef2add44da3357b1ffd46b9d7d47e2b9a5f015a398984e6cdbf6fc895753c5dae3bf21849d020b395dd53813fc4fdfc8ae8ea6c10a16a66bafecaa2 languageName: node linkType: hard @@ -24867,7 +24867,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: d44bd5e7d2e93d4c016f0316f6f0ee6eb40158b64a038c440a37bb66a7324c13c2f2a06d4a0f99412b21891d37130df53bee8b2aa706258d89877941ca283f20 + checksum: 10c0/d44bd5e7d2e93d4c016f0316f6f0ee6eb40158b64a038c440a37bb66a7324c13c2f2a06d4a0f99412b21891d37130df53bee8b2aa706258d89877941ca283f20 languageName: node linkType: hard @@ -24878,7 +24878,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: c7192ed8ab0befdab0af750e305e101301fcf55bbb429ad17dcce31f65f71d05b1bcc8ce64792d7b5e794349430e145ec211d52f6d5d1adf24c16157b56a4916 + checksum: 10c0/c7192ed8ab0befdab0af750e305e101301fcf55bbb429ad17dcce31f65f71d05b1bcc8ce64792d7b5e794349430e145ec211d52f6d5d1adf24c16157b56a4916 languageName: node linkType: hard @@ -24889,7 +24889,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 0ea53546736ebe83a00dc1c71b5628658ea735cbcea76cce565af1a3a80808a6eb01757af8626fc4af60f79463bd6ae437738e2b660d6663a74e945f0245310b + checksum: 10c0/0ea53546736ebe83a00dc1c71b5628658ea735cbcea76cce565af1a3a80808a6eb01757af8626fc4af60f79463bd6ae437738e2b660d6663a74e945f0245310b languageName: node linkType: hard @@ -24900,7 +24900,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: fa0cd93a9b1ff9e468066f513a07ce50df3afc1a2fd9a3912ae81d083fbb0d6c47bbdf85578c4584f3b3a842cf5b4d7f15d8e4e13fc96c29123b725c642dd760 + checksum: 10c0/fa0cd93a9b1ff9e468066f513a07ce50df3afc1a2fd9a3912ae81d083fbb0d6c47bbdf85578c4584f3b3a842cf5b4d7f15d8e4e13fc96c29123b725c642dd760 languageName: node linkType: hard @@ -24911,7 +24911,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 2c4a8c5a64e8d063100c0b66fed57f490ed47172d8cc70f175680549d72276a096a44b82556cd0ebb3c5a08229a82835fbb65431a01614f64ea5734e868ba975 + checksum: 10c0/2c4a8c5a64e8d063100c0b66fed57f490ed47172d8cc70f175680549d72276a096a44b82556cd0ebb3c5a08229a82835fbb65431a01614f64ea5734e868ba975 languageName: node linkType: hard @@ -24922,7 +24922,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 55a2b34820db39dc60d29a5391e89eb568db5cd6d6831f8acdf870a162fd29b7a4b154d0ee0f8329ffd6d23a7b775ddc987cc6e6ca65a99e4499b4bc88dcd045 + checksum: 10c0/55a2b34820db39dc60d29a5391e89eb568db5cd6d6831f8acdf870a162fd29b7a4b154d0ee0f8329ffd6d23a7b775ddc987cc6e6ca65a99e4499b4bc88dcd045 languageName: node linkType: hard @@ -24933,7 +24933,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 30af0910656d1ef61821e81b89f6a02f3bae8cd16bbfb841cd59bc46314c9da89d27e156fcb02d484b5012fee64e8b3a2d4cbb2c1c30da6a4913649690c34b6f + checksum: 10c0/30af0910656d1ef61821e81b89f6a02f3bae8cd16bbfb841cd59bc46314c9da89d27e156fcb02d484b5012fee64e8b3a2d4cbb2c1c30da6a4913649690c34b6f languageName: node linkType: hard @@ -24944,7 +24944,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 081f6fe146d6e15b87d9f810516d05cb1727d01b0c4618a2810abeed9f144379018fefbf73c878eb7adb3993252ea9dc0ed317fe158e7c0aee6430df12ff49aa + checksum: 10c0/081f6fe146d6e15b87d9f810516d05cb1727d01b0c4618a2810abeed9f144379018fefbf73c878eb7adb3993252ea9dc0ed317fe158e7c0aee6430df12ff49aa languageName: node linkType: hard @@ -24955,7 +24955,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: ca5620e027f846e47685679c854a6b9bb176bbbe5029e193d5d2eca9b535692e71fac2d3e9fe5a9113443671e5d747d897afd3e38aeada101c15bc73b15f636f + checksum: 10c0/ca5620e027f846e47685679c854a6b9bb176bbbe5029e193d5d2eca9b535692e71fac2d3e9fe5a9113443671e5d747d897afd3e38aeada101c15bc73b15f636f languageName: node linkType: hard @@ -24966,7 +24966,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: e6f67aa89a85cadc9ef83eaefc5003d20f54650200f2cf1fec3c442916e0ed41fff553f81413a51ab67e0425139c165a07301bae2f65541c3133a907afae58a2 + checksum: 10c0/e6f67aa89a85cadc9ef83eaefc5003d20f54650200f2cf1fec3c442916e0ed41fff553f81413a51ab67e0425139c165a07301bae2f65541c3133a907afae58a2 languageName: node linkType: hard @@ -24977,7 +24977,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 202e0a2b91b64eae139f4891e179c81aa53ffc5642b1285051c294a1d6e4b93d3480df77592acd791262cdce0e94d853a07427cb7444d36a889fdb1bef9a506b + checksum: 10c0/202e0a2b91b64eae139f4891e179c81aa53ffc5642b1285051c294a1d6e4b93d3480df77592acd791262cdce0e94d853a07427cb7444d36a889fdb1bef9a506b languageName: node linkType: hard @@ -24988,7 +24988,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 018a101cbeb9e216978f0e027f6e3c68a8f0eff6d27ae436ecb5719cdc831724187ac8751f4f94a0925945d01e1991d7ddf5feaed1fc8b0f461dbd15dd5c7086 + checksum: 10c0/018a101cbeb9e216978f0e027f6e3c68a8f0eff6d27ae436ecb5719cdc831724187ac8751f4f94a0925945d01e1991d7ddf5feaed1fc8b0f461dbd15dd5c7086 languageName: node linkType: hard @@ -25004,7 +25004,7 @@ __metadata: yargs: "npm:^16.1.0" bin: migrate: lib/cli.js - checksum: 35af701e4745b7395de9cdc3b2695070818572ac113090b878534d04ae20737111fd7310ad2f44ab160e967def43dd1188efda888691d9858f7b60be58c75ad1 + checksum: 10c0/35af701e4745b7395de9cdc3b2695070818572ac113090b878534d04ae20737111fd7310ad2f44ab160e967def43dd1188efda888691d9858f7b60be58c75ad1 languageName: node linkType: hard @@ -25015,7 +25015,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 8a1c5953457665c4e67cc7558c5a61ac51ea8c8d2643efaa8ed18a34ddf060b7dbd7f3fb24bc3b31d932c450df839dcb84711372772af0dc541ebaaa87ca0505 + checksum: 10c0/8a1c5953457665c4e67cc7558c5a61ac51ea8c8d2643efaa8ed18a34ddf060b7dbd7f3fb24bc3b31d932c450df839dcb84711372772af0dc541ebaaa87ca0505 languageName: node linkType: hard @@ -25027,7 +25027,7 @@ __metadata: detect-node: "npm:2.0.4" htmlparser2: "npm:^8.0.1" lodash: "npm:^4.17.15" - checksum: 332a4984747e8e87492116bb0f0a2a09b0f3093476846f4b5108ec65657067c9e78da16635f1213f1efbeecd1c30ffe3f1bf7dca373529e3a2309c02ac420714 + checksum: 10c0/332a4984747e8e87492116bb0f0a2a09b0f3093476846f4b5108ec65657067c9e78da16635f1213f1efbeecd1c30ffe3f1bf7dca373529e3a2309c02ac420714 languageName: node linkType: hard @@ -25061,7 +25061,7 @@ __metadata: mjml-table: "npm:4.14.1" mjml-text: "npm:4.14.1" mjml-wrapper: "npm:4.14.1" - checksum: dd6f538de0f0b0966ec5495762129e6e4ac893798332dd40f0afa74757a84c2c2fd2e68547f11dd45d38c96683a4a18c3fa77b8b391c2aeb498f3fb33154ad54 + checksum: 10c0/dd6f538de0f0b0966ec5495762129e6e4ac893798332dd40f0afa74757a84c2c2fd2e68547f11dd45d38c96683a4a18c3fa77b8b391c2aeb498f3fb33154ad54 languageName: node linkType: hard @@ -25072,7 +25072,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: ca48ce34672e90c8aace01a01c3f7598048e10a9982a0e5090f3ab102177f9f8d3983071c1aa17df9054fd8155103888c6d2c19829e161394aacfe0b4cce98c1 + checksum: 10c0/ca48ce34672e90c8aace01a01c3f7598048e10a9982a0e5090f3ab102177f9f8d3983071c1aa17df9054fd8155103888c6d2c19829e161394aacfe0b4cce98c1 languageName: node linkType: hard @@ -25083,7 +25083,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 8c8bffdaaeb3e37cfdfb29918ac44a1749ebb90959e063be011b39abc3531784b139d25b3b7c754b2c4c3007c7a0fe28f4a75334b8b06eecbffe0120c0a89269 + checksum: 10c0/8c8bffdaaeb3e37cfdfb29918ac44a1749ebb90959e063be011b39abc3531784b139d25b3b7c754b2c4c3007c7a0fe28f4a75334b8b06eecbffe0120c0a89269 languageName: node linkType: hard @@ -25094,7 +25094,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: b5593f14969c1ca240db99e13b2331a63d705af1c90c4e8bb3b221b8896478c828c106b184556acf671997fdeaacc568cfd5c888f913a07af5127d29b9ce264b + checksum: 10c0/b5593f14969c1ca240db99e13b2331a63d705af1c90c4e8bb3b221b8896478c828c106b184556acf671997fdeaacc568cfd5c888f913a07af5127d29b9ce264b languageName: node linkType: hard @@ -25105,7 +25105,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 7806794a3906eb8e904893952fa56cde7f7f6712d4e26d4b1f2df8718be706712828c9ed7da8ef3c6f96c92b0d9765305115a25ff0cce4f74aeb59eed5522d48 + checksum: 10c0/7806794a3906eb8e904893952fa56cde7f7f6712d4e26d4b1f2df8718be706712828c9ed7da8ef3c6f96c92b0d9765305115a25ff0cce4f74aeb59eed5522d48 languageName: node linkType: hard @@ -25116,7 +25116,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: d9d878448e3054a8e5d88ef834442a30a22eeaf3a8a24338509515fc51db4015d35f8d1644163cd371e86d228d1587e3529e52e5a2e042668f61ed0648f85c7d + checksum: 10c0/d9d878448e3054a8e5d88ef834442a30a22eeaf3a8a24338509515fc51db4015d35f8d1644163cd371e86d228d1587e3529e52e5a2e042668f61ed0648f85c7d languageName: node linkType: hard @@ -25127,7 +25127,7 @@ __metadata: "@babel/runtime": "npm:^7.14.6" lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" - checksum: 16b074875faa314bc77ef4b662b461f34e344e7492f11b7d2dae775a0356cef63495c838ba79db1ded9a87c86d305f589ed96d9a756b9ce087a25d76367362e0 + checksum: 10c0/16b074875faa314bc77ef4b662b461f34e344e7492f11b7d2dae775a0356cef63495c838ba79db1ded9a87c86d305f589ed96d9a756b9ce087a25d76367362e0 languageName: node linkType: hard @@ -25136,7 +25136,7 @@ __metadata: resolution: "mjml-validator@npm:4.13.0" dependencies: "@babel/runtime": "npm:^7.14.6" - checksum: cd573d7b9360f18ef6a8a56b2a8e359daa717873a92fc5f4d148375ce11e006f5656959d4a414d96b055095c9bc04c58b30cc59b41b75b32798140913a6d32c6 + checksum: 10c0/cd573d7b9360f18ef6a8a56b2a8e359daa717873a92fc5f4d148375ce11e006f5656959d4a414d96b055095c9bc04c58b30cc59b41b75b32798140913a6d32c6 languageName: node linkType: hard @@ -25148,7 +25148,7 @@ __metadata: lodash: "npm:^4.17.21" mjml-core: "npm:4.14.1" mjml-section: "npm:4.14.1" - checksum: d053a212074f05fbf2fbcb13d47fd2ab87a22d95cd19beefc05932baad40ac8a45e4b6d1938cf648522745858a2fe6e4810ef9be799c56a5511aa266bf8ce33e + checksum: 10c0/d053a212074f05fbf2fbcb13d47fd2ab87a22d95cd19beefc05932baad40ac8a45e4b6d1938cf648522745858a2fe6e4810ef9be799c56a5511aa266bf8ce33e languageName: node linkType: hard @@ -25164,14 +25164,14 @@ __metadata: mjml-validator: "npm:4.13.0" bin: mjml: bin/mjml - checksum: 31e5488ee8dbbdd832e5c76abf340f002c468644e417324c20ef9ed75e6025c503fee0f1f3f2a8ab376426019713e2fe9f455c58df87651ddea16f3d0f23d2ba + checksum: 10c0/31e5488ee8dbbdd832e5c76abf340f002c468644e417324c20ef9ed75e6025c503fee0f1f3f2a8ab376426019713e2fe9f455c58df87651ddea16f3d0f23d2ba languageName: node linkType: hard "mkdirp-classic@npm:^0.5.2": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" - checksum: 95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 + checksum: 10c0/95371d831d196960ddc3833cc6907e6b8f67ac5501a6582f47dfae5eb0f092e9f8ce88e0d83afcae95d6e2b61a01741ba03714eeafb6f7a6e9dcc158ac85b168 languageName: node linkType: hard @@ -25182,7 +25182,7 @@ __metadata: minimist: "npm:^1.2.6" bin: mkdirp: bin/cmd.js - checksum: e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 languageName: node linkType: hard @@ -25191,7 +25191,7 @@ __metadata: resolution: "mkdirp@npm:1.0.4" bin: mkdirp: bin/cmd.js - checksum: 46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf languageName: node linkType: hard @@ -25200,7 +25200,7 @@ __metadata: resolution: "mkdirp@npm:2.1.6" bin: mkdirp: dist/cjs/src/bin.js - checksum: 96f551c651dd8f5f9435d53df1a7b9bfc553be769ee6da5192c37c1f303a376ef1c6996f96913d4a8d357060451d4526a346031d1919f92c58806a5fa3cd8dfe + checksum: 10c0/96f551c651dd8f5f9435d53df1a7b9bfc553be769ee6da5192c37c1f303a376ef1c6996f96913d4a8d357060451d4526a346031d1919f92c58806a5fa3cd8dfe languageName: node linkType: hard @@ -25212,21 +25212,21 @@ __metadata: pathe: "npm:^1.1.2" pkg-types: "npm:^1.0.3" ufo: "npm:^1.3.2" - checksum: 0861d64f13e8e6f99e4897b652b553ded4d4b9e7b011d6afd7141e013b77ed9b9be0cd76e60c46c60c56cc9b8e27061165e5696179ba9f4161c24d162db7b621 + checksum: 10c0/0861d64f13e8e6f99e4897b652b553ded4d4b9e7b011d6afd7141e013b77ed9b9be0cd76e60c46c60c56cc9b8e27061165e5696179ba9f4161c24d162db7b621 languageName: node linkType: hard "modify-values@npm:^1.0.1": version: 1.0.1 resolution: "modify-values@npm:1.0.1" - checksum: 6acb1b82aaf7a02f9f7b554b20cbfc159f223a79c66b0a257511c5933d50b85e12ea1220b0a90a2af6f80bc29ff784f929a52a51881867a93ae6a12ce87a729a + checksum: 10c0/6acb1b82aaf7a02f9f7b554b20cbfc159f223a79c66b0a257511c5933d50b85e12ea1220b0a90a2af6f80bc29ff784f929a52a51881867a93ae6a12ce87a729a languageName: node linkType: hard "module-not-found-error@npm:^1.0.1": version: 1.0.1 resolution: "module-not-found-error@npm:1.0.1" - checksum: e57250016b320ef9d0e0037fdb63fb279ca93100a0cee3ef6e90139cbec734215be4a70857dfc0d62ee353d9f8126d2882aa0a80dba49b69292901263a21ea69 + checksum: 10c0/e57250016b320ef9d0e0037fdb63fb279ca93100a0cee3ef6e90139cbec734215be4a70857dfc0d62ee353d9f8126d2882aa0a80dba49b69292901263a21ea69 languageName: node linkType: hard @@ -25240,42 +25240,42 @@ __metadata: mkdirp: "npm:^0.5.1" rimraf: "npm:^2.5.4" run-queue: "npm:^1.0.3" - checksum: 0fe81acf3bbbc322013c2f4ee4a48cf8d180a7d925fb9284c0f1f444e862d7eb0421ee074b68d35357a12f0d5e94a322049dc9da480672331b5b8895743eb66a + checksum: 10c0/0fe81acf3bbbc322013c2f4ee4a48cf8d180a7d925fb9284c0f1f444e862d7eb0421ee074b68d35357a12f0d5e94a322049dc9da480672331b5b8895743eb66a languageName: node linkType: hard "mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" - checksum: a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 + checksum: 10c0/a3d32379c2554cf7351db6237ddc18dc9e54e4214953f3da105b97dc3babe0deb3ffe99cf409b38ea47cc29f9430561ba6b53b24ab8f9ce97a4b50409e4a50e7 languageName: node linkType: hard "mrmime@npm:^1.0.0": version: 1.0.1 resolution: "mrmime@npm:1.0.1" - checksum: ab071441da76fd23b3b0d1823d77aacf8679d379a4a94cacd83e487d3d906763b277f3203a594c613602e31ab5209c26a8119b0477c4541ef8555b293a9db6d3 + checksum: 10c0/ab071441da76fd23b3b0d1823d77aacf8679d379a4a94cacd83e487d3d906763b277f3203a594c613602e31ab5209c26a8119b0477c4541ef8555b293a9db6d3 languageName: node linkType: hard "ms@npm:2.0.0": version: 2.0.0 resolution: "ms@npm:2.0.0" - checksum: f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d languageName: node linkType: hard "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" - checksum: a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc languageName: node linkType: hard "ms@npm:2.1.3, ms@npm:^2.0.0, ms@npm:^2.1.1": version: 2.1.3 resolution: "ms@npm:2.1.3" - checksum: d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 languageName: node linkType: hard @@ -25309,7 +25309,7 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: c644d8e80b12b15c7b366aa6e0b39442f3ffd3b94824171e562066d8535c720fd824d84986d738a427720e59228660c11991bf724e4dd9face00b0b0f2af8f0d + checksum: 10c0/c644d8e80b12b15c7b366aa6e0b39442f3ffd3b94824171e562066d8535c720fd824d84986d738a427720e59228660c11991bf724e4dd9face00b0b0f2af8f0d languageName: node linkType: hard @@ -25321,7 +25321,7 @@ __metadata: thunky: "npm:^1.0.2" bin: multicast-dns: cli.js - checksum: 5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 + checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 languageName: node linkType: hard @@ -25334,7 +25334,7 @@ __metadata: array-union: "npm:^2.1.0" arrify: "npm:^2.0.1" minimatch: "npm:^3.0.4" - checksum: 252ffae6d19491c169c22fc30cf8a99f6031f94a3495f187d3430b06200e9f05a7efae90ab9d834f090834e0d9c979ab55e7ad21f61a37995d807b4b0ccdcbd1 + checksum: 10c0/252ffae6d19491c169c22fc30cf8a99f6031f94a3495f187d3430b06200e9f05a7efae90ab9d834f090834e0d9c979ab55e7ad21f61a37995d807b4b0ccdcbd1 languageName: node linkType: hard @@ -25347,21 +25347,21 @@ __metadata: array-union: "npm:^2.1.0" arrify: "npm:^2.0.1" minimatch: "npm:^3.0.4" - checksum: 08e6b71ea2eee2feba17bb4159d247b78d26f9a9b556abddc136c05baa5eba9d80717986e494972284947e9c0e26a19eba3fe20851463fa3dbb770e289f7a0b8 + checksum: 10c0/08e6b71ea2eee2feba17bb4159d247b78d26f9a9b556abddc136c05baa5eba9d80717986e494972284947e9c0e26a19eba3fe20851463fa3dbb770e289f7a0b8 languageName: node linkType: hard "mute-stream@npm:0.0.8": version: 0.0.8 resolution: "mute-stream@npm:0.0.8" - checksum: 18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 languageName: node linkType: hard "mute-stream@npm:~1.0.0": version: 1.0.0 resolution: "mute-stream@npm:1.0.0" - checksum: dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c + checksum: 10c0/dce2a9ccda171ec979a3b4f869a102b1343dee35e920146776780de182f16eae459644d187e38d59a3d37adf85685e1c17c38cf7bfda7e39a9880f7a1d10a74c languageName: node linkType: hard @@ -25370,7 +25370,7 @@ __metadata: resolution: "nan@npm:2.17.0" dependencies: node-gyp: "npm:latest" - checksum: 4a231a62dba025f4c4fa814c1e6ffeb450c5cd0852b780f19fe4ea22b86ba0f1f394406dfd628c67fb7f0987e982fa230da1fbd3632258f927b8defd7046c1ad + checksum: 10c0/4a231a62dba025f4c4fa814c1e6ffeb450c5cd0852b780f19fe4ea22b86ba0f1f394406dfd628c67fb7f0987e982fa230da1fbd3632258f927b8defd7046c1ad languageName: node linkType: hard @@ -25379,7 +25379,7 @@ __metadata: resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 languageName: node linkType: hard @@ -25398,21 +25398,21 @@ __metadata: regex-not: "npm:^1.0.0" snapdragon: "npm:^0.8.1" to-regex: "npm:^3.0.1" - checksum: 0f5cefa755ca2e20c86332821995effb24acb79551ddaf51c1b9112628cad234a0d8fd9ac6aa56ad1f8bfad6ff6ae86e851acb960943249d9fa44b091479953a + checksum: 10c0/0f5cefa755ca2e20c86332821995effb24acb79551ddaf51c1b9112628cad234a0d8fd9ac6aa56ad1f8bfad6ff6ae86e851acb960943249d9fa44b091479953a languageName: node linkType: hard "natural-compare-lite@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare-lite@npm:1.4.0" - checksum: f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 + checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 languageName: node linkType: hard "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" - checksum: f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 languageName: node linkType: hard @@ -25421,28 +25421,28 @@ __metadata: resolution: "ncp@npm:2.0.0" bin: ncp: ./bin/ncp - checksum: d515babf9d3205ab9252e7d640af7c3e1a880317016d41f2fce2e6b9c8f60eb8bb6afde30e8c4f8e1e3fa551465f094433c3f364b25a85d6a28ec52c1ad6e067 + checksum: 10c0/d515babf9d3205ab9252e7d640af7c3e1a880317016d41f2fce2e6b9c8f60eb8bb6afde30e8c4f8e1e3fa551465f094433c3f364b25a85d6a28ec52c1ad6e067 languageName: node linkType: hard "negotiator@npm:0.6.3, negotiator@npm:^0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" - checksum: 3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 languageName: node linkType: hard "neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" - checksum: c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d languageName: node linkType: hard "next-tick@npm:^1.1.0": version: 1.1.0 resolution: "next-tick@npm:1.1.0" - checksum: 3ba80dd805fcb336b4f52e010992f3e6175869c8d88bf4ff0a81d5d66e6049f89993463b28211613e58a6b7fe93ff5ccbba0da18d4fa574b96289e8f0b577f28 + checksum: 10c0/3ba80dd805fcb336b4f52e010992f3e6175869c8d88bf4ff0a81d5d66e6049f89993463b28211613e58a6b7fe93ff5ccbba0da18d4fa574b96289e8f0b577f28 languageName: node linkType: hard @@ -25451,7 +25451,7 @@ __metadata: resolution: "no-case@npm:2.3.2" dependencies: lower-case: "npm:^1.1.1" - checksum: 63f306e83c18efa0bb37f1c23a25baf4ccf5ebaec70b482fa04d4c5bf8bbb8bcc9a8fbcd818af828ab69f2b602153daf81ec26e448b2bda2d704b8d0c7eec8fa + checksum: 10c0/63f306e83c18efa0bb37f1c23a25baf4ccf5ebaec70b482fa04d4c5bf8bbb8bcc9a8fbcd818af828ab69f2b602153daf81ec26e448b2bda2d704b8d0c7eec8fa languageName: node linkType: hard @@ -25461,14 +25461,14 @@ __metadata: dependencies: lower-case: "npm:^2.0.2" tslib: "npm:^2.0.3" - checksum: 8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 languageName: node linkType: hard "node-abort-controller@npm:^3.0.1": version: 3.1.1 resolution: "node-abort-controller@npm:3.1.1" - checksum: f7ad0e7a8e33809d4f3a0d1d65036a711c39e9d23e0319d80ebe076b9a3b4432b4d6b86a7fab65521de3f6872ffed36fc35d1327487c48eb88c517803403eda3 + checksum: 10c0/f7ad0e7a8e33809d4f3a0d1d65036a711c39e9d23e0319d80ebe076b9a3b4432b4d6b86a7fab65521de3f6872ffed36fc35d1327487c48eb88c517803403eda3 languageName: node linkType: hard @@ -25477,7 +25477,7 @@ __metadata: resolution: "node-addon-api@npm:7.0.0" dependencies: node-gyp: "npm:latest" - checksum: 3d5a15ee434e122b345e614db122a63f30194c298104c3d8a0fa9f68707abb278af27b45222602456a131890a59b4a92291ff5b4b7938ff282168e9ad1bf7103 + checksum: 10c0/3d5a15ee434e122b345e614db122a63f30194c298104c3d8a0fa9f68707abb278af27b45222602456a131890a59b4a92291ff5b4b7938ff282168e9ad1bf7103 languageName: node linkType: hard @@ -25486,14 +25486,14 @@ __metadata: resolution: "node-dir@npm:0.1.17" dependencies: minimatch: "npm:^3.0.2" - checksum: 16222e871708c405079ff8122d4a7e1d522c5b90fc8f12b3112140af871cfc70128c376e845dcd0044c625db0d2efebd2d852414599d240564db61d53402b4c1 + checksum: 10c0/16222e871708c405079ff8122d4a7e1d522c5b90fc8f12b3112140af871cfc70128c376e845dcd0044c625db0d2efebd2d852414599d240564db61d53402b4c1 languageName: node linkType: hard "node-domexception@npm:^1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" - checksum: 5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b + checksum: 10c0/5e5d63cda29856402df9472335af4bb13875e1927ad3be861dc5ebde38917aecbf9ae337923777af52a48c426b70148815e890a5d72760f1b4d758cc671b1a2b languageName: node linkType: hard @@ -25503,21 +25503,21 @@ __metadata: dependencies: object.getownpropertydescriptors: "npm:^2.0.3" semver: "npm:^5.7.0" - checksum: 8be86f294f8b065a1e126e9ceb7a4b38b75eb7ec6391060e6e093ab9649e5c1fa977f2a5fe799b6ada862d65ce8259d1b7eabf2057774d641306e467d58cb96b + checksum: 10c0/8be86f294f8b065a1e126e9ceb7a4b38b75eb7ec6391060e6e093ab9649e5c1fa977f2a5fe799b6ada862d65ce8259d1b7eabf2057774d641306e467d58cb96b languageName: node linkType: hard "node-fetch-native@npm:1.0.1": version: 1.0.1 resolution: "node-fetch-native@npm:1.0.1" - checksum: 27841116388ea5309037400de7fa1003712e974dc57a048f78e5fc659fa80095403f34051c069096a9bd705c7445876d88624121365847f617520325693d67c8 + checksum: 10c0/27841116388ea5309037400de7fa1003712e974dc57a048f78e5fc659fa80095403f34051c069096a9bd705c7445876d88624121365847f617520325693d67c8 languageName: node linkType: hard "node-fetch-native@npm:^1.0.2": version: 1.2.0 resolution: "node-fetch-native@npm:1.2.0" - checksum: 85faa0b7af6884fd615ddc05ec70f05d3818bef8ece43952c49dd849885b21fe7cef54f62cf17b9c0faadfe13498f667a996070d386918ab7017b46c725c5ff6 + checksum: 10c0/85faa0b7af6884fd615ddc05ec70f05d3818bef8ece43952c49dd849885b21fe7cef54f62cf17b9c0faadfe13498f667a996070d386918ab7017b46c725c5ff6 languageName: node linkType: hard @@ -25531,7 +25531,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 + checksum: 10c0/fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 languageName: node linkType: hard @@ -25542,7 +25542,7 @@ __metadata: data-uri-to-buffer: "npm:^4.0.0" fetch-blob: "npm:^3.1.4" formdata-polyfill: "npm:^4.0.10" - checksum: 78671bffed741a2f3ccb15588a42fd7e9db2bdc9f99f9f584e0c749307f9603d961692f0877d853b28a4d1375ab2253b19978dd3bfc0c3189b42adc340bef927 + checksum: 10c0/78671bffed741a2f3ccb15588a42fd7e9db2bdc9f99f9f584e0c749307f9603d961692f0877d853b28a4d1375ab2253b19978dd3bfc0c3189b42adc340bef927 languageName: node linkType: hard @@ -25556,14 +25556,14 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 languageName: node linkType: hard "node-forge@npm:^1, node-forge@npm:^1.3.1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" - checksum: e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 languageName: node linkType: hard @@ -25574,7 +25574,7 @@ __metadata: node-gyp-build-optional-packages: bin.js node-gyp-build-optional-packages-optional: optional.js node-gyp-build-optional-packages-test: build-test.js - checksum: 334336bdefb398469a115a2c9d4c141d28e093fd703be7adc1448f9dd3e1b5525281a789be8a60a778c91212daaa310155b1908b1fb9a987cec61a9fe04d774a + checksum: 10c0/334336bdefb398469a115a2c9d4c141d28e093fd703be7adc1448f9dd3e1b5525281a789be8a60a778c91212daaa310155b1908b1fb9a987cec61a9fe04d774a languageName: node linkType: hard @@ -25585,7 +25585,7 @@ __metadata: node-gyp-build: bin.js node-gyp-build-optional: optional.js node-gyp-build-test: build-test.js - checksum: 147add65942acd3cf641d11d9becd030128c7298a5b4aec4ebf3ad4afcc3d0298ad2562afba3e7b2bf70160c5e2e82235e3bc043ff9c52dc68bdd36c856764fe + checksum: 10c0/147add65942acd3cf641d11d9becd030128c7298a5b4aec4ebf3ad4afcc3d0298ad2562afba3e7b2bf70160c5e2e82235e3bc043ff9c52dc68bdd36c856764fe languageName: node linkType: hard @@ -25605,7 +25605,7 @@ __metadata: which: "npm:^4.0.0" bin: node-gyp: bin/node-gyp.js - checksum: abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa languageName: node linkType: hard @@ -25626,14 +25626,14 @@ __metadata: which: "npm:^2.0.2" bin: node-gyp: bin/node-gyp.js - checksum: e8dfbe2b02f23d056f69e01c409381963e92c71cafba6c9cfbf63b038f65ca19ab8183bb6891d080e59c4eb2cc425fc736f42e90afc0f0030ecd97bfc64fb7ad + checksum: 10c0/e8dfbe2b02f23d056f69e01c409381963e92c71cafba6c9cfbf63b038f65ca19ab8183bb6891d080e59c4eb2cc425fc736f42e90afc0f0030ecd97bfc64fb7ad languageName: node linkType: hard "node-int64@npm:^0.4.0": version: 0.4.0 resolution: "node-int64@npm:0.4.0" - checksum: a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a languageName: node linkType: hard @@ -25664,28 +25664,28 @@ __metadata: url: "npm:^0.11.0" util: "npm:^0.11.0" vm-browserify: "npm:^1.0.1" - checksum: 0e05321a6396408903ed642231d2bca7dd96492d074c7af161ba06a63c95378bd3de50b4105eccbbc02d93ba3da69f0ff5e624bc2a8c92ca462ceb6a403e7986 + checksum: 10c0/0e05321a6396408903ed642231d2bca7dd96492d074c7af161ba06a63c95378bd3de50b4105eccbbc02d93ba3da69f0ff5e624bc2a8c92ca462ceb6a403e7986 languageName: node linkType: hard "node-machine-id@npm:1.1.12": version: 1.1.12 resolution: "node-machine-id@npm:1.1.12" - checksum: ab2fea5f75a6f1ce3c76c5e0ae3903b631230e0a99b003d176568fff8ddbdf7b2943be96cd8d220c497ca0f6149411831f8a450601929f326781cb1b59bab7f8 + checksum: 10c0/ab2fea5f75a6f1ce3c76c5e0ae3903b631230e0a99b003d176568fff8ddbdf7b2943be96cd8d220c497ca0f6149411831f8a450601929f326781cb1b59bab7f8 languageName: node linkType: hard "node-releases@npm:^2.0.14": version: 2.0.14 resolution: "node-releases@npm:2.0.14" - checksum: 199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 + checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 languageName: node linkType: hard "nodemailer@npm:6.9.9": version: 6.9.9 resolution: "nodemailer@npm:6.9.9" - checksum: ba72da4ca8a003921c86f3d132d64d9bb86c1a3d79d248664b3de28f6a7a621f0476273ad7cf3ecc48d3b78a66ae4ec62b7c4c8ab6f07d9ca26d4bad4d08802e + checksum: 10c0/ba72da4ca8a003921c86f3d132d64d9bb86c1a3d79d248664b3de28f6a7a621f0476273ad7cf3ecc48d3b78a66ae4ec62b7c4c8ab6f07d9ca26d4bad4d08802e languageName: node linkType: hard @@ -25705,7 +25705,7 @@ __metadata: undefsafe: "npm:^2.0.5" bin: nodemon: bin/nodemon.js - checksum: 65837603fa790d723f8d59e1f098342ed5a5517c3a38ea3b52ca3d532ed21924ecd43fbaceadb458472ae0a8ae6b8395bda22ccd062709ad50c5c4537a625c9d + checksum: 10c0/65837603fa790d723f8d59e1f098342ed5a5517c3a38ea3b52ca3d532ed21924ecd43fbaceadb458472ae0a8ae6b8395bda22ccd062709ad50c5c4537a625c9d languageName: node linkType: hard @@ -25716,7 +25716,7 @@ __metadata: abbrev: "npm:^1.0.0" bin: nopt: bin/nopt.js - checksum: 837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 + checksum: 10c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 languageName: node linkType: hard @@ -25727,7 +25727,7 @@ __metadata: abbrev: "npm:^2.0.0" bin: nopt: bin/nopt.js - checksum: 9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff languageName: node linkType: hard @@ -25738,7 +25738,7 @@ __metadata: abbrev: "npm:1" bin: nopt: ./bin/nopt.js - checksum: ddfbd892116a125fd68849ef564dd5b1f0a5ba0dbbf18782e9499e2efad8f4d3790635b47c6b5d3f7e014069e7b3ce5b8112687e9ae093fcd2678188c866fe28 + checksum: 10c0/ddfbd892116a125fd68849ef564dd5b1f0a5ba0dbbf18782e9499e2efad8f4d3790635b47c6b5d3f7e014069e7b3ce5b8112687e9ae093fcd2678188c866fe28 languageName: node linkType: hard @@ -25750,7 +25750,7 @@ __metadata: resolve: "npm:^1.10.0" semver: "npm:2 || 3 || 4 || 5" validate-npm-package-license: "npm:^3.0.1" - checksum: 357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 + checksum: 10c0/357cb1646deb42f8eb4c7d42c4edf0eec312f3628c2ef98501963cc4bbe7277021b2b1d977f982b2edce78f5a1014613ce9cf38085c3df2d76730481357ca504 languageName: node linkType: hard @@ -25762,7 +25762,7 @@ __metadata: is-core-module: "npm:^2.5.0" semver: "npm:^7.3.4" validate-npm-package-license: "npm:^3.0.1" - checksum: e5d0f739ba2c465d41f77c9d950e291ea4af78f8816ddb91c5da62257c40b76d8c83278b0d08ffbcd0f187636ebddad20e181e924873916d03e6e5ea2ef026be + checksum: 10c0/e5d0f739ba2c465d41f77c9d950e291ea4af78f8816ddb91c5da62257c40b76d8c83278b0d08ffbcd0f187636ebddad20e181e924873916d03e6e5ea2ef026be languageName: node linkType: hard @@ -25774,7 +25774,7 @@ __metadata: is-core-module: "npm:^2.8.1" semver: "npm:^7.3.5" validate-npm-package-license: "npm:^3.0.4" - checksum: 705fe66279edad2f93f6e504d5dc37984e404361a3df921a76ab61447eb285132d20ff261cc0bee9566b8ce895d75fcfec913417170add267e2873429fe38392 + checksum: 10c0/705fe66279edad2f93f6e504d5dc37984e404361a3df921a76ab61447eb285132d20ff261cc0bee9566b8ce895d75fcfec913417170add267e2873429fe38392 languageName: node linkType: hard @@ -25786,7 +25786,7 @@ __metadata: is-core-module: "npm:^2.8.1" semver: "npm:^7.3.5" validate-npm-package-license: "npm:^3.0.4" - checksum: dbd7c712c1e016a4b682640a53b44e9290c9db7b94355c71234bafee1534bef4c5dc3970c30c7ee2c4990a3c07e963e15e211b61624d58eb857d867ec71d3bb6 + checksum: 10c0/dbd7c712c1e016a4b682640a53b44e9290c9db7b94355c71234bafee1534bef4c5dc3970c30c7ee2c4990a3c07e963e15e211b61624d58eb857d867ec71d3bb6 languageName: node linkType: hard @@ -25795,21 +25795,21 @@ __metadata: resolution: "normalize-path@npm:2.1.1" dependencies: remove-trailing-separator: "npm:^1.0.1" - checksum: db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b + checksum: 10c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b languageName: node linkType: hard "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" - checksum: e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 languageName: node linkType: hard "normalize-url@npm:^4.1.0": version: 4.5.1 resolution: "normalize-url@npm:4.5.1" - checksum: 6362e9274fdcc310f8b17e20de29754c94e1820d864114f03d3bfd6286a0028fc51705fb3fd4e475013357b5cd7421fc17f3aba93f2289056779a9bb23bccf59 + checksum: 10c0/6362e9274fdcc310f8b17e20de29754c94e1820d864114f03d3bfd6286a0028fc51705fb3fd4e475013357b5cd7421fc17f3aba93f2289056779a9bb23bccf59 languageName: node linkType: hard @@ -25818,7 +25818,7 @@ __metadata: resolution: "npm-bundled@npm:1.1.2" dependencies: npm-normalize-package-bin: "npm:^1.0.1" - checksum: 3f2337789afc8cb608a0dd71cefe459531053d48a5497db14b07b985c4cab15afcae88600db9f92eae072c89b982eeeec8e4463e1d77bc03a7e90f5dacf29769 + checksum: 10c0/3f2337789afc8cb608a0dd71cefe459531053d48a5497db14b07b985c4cab15afcae88600db9f92eae072c89b982eeeec8e4463e1d77bc03a7e90f5dacf29769 languageName: node linkType: hard @@ -25827,7 +25827,7 @@ __metadata: resolution: "npm-bundled@npm:3.0.0" dependencies: npm-normalize-package-bin: "npm:^3.0.0" - checksum: 65fcc621ba6e183be2715e3bbbf29d85e65e986965f06ee5e96a293d62dfad59ee57a9dcdd1c591eab156e03d58b3c35926b4211ce792d683458e15bb9f642c7 + checksum: 10c0/65fcc621ba6e183be2715e3bbbf29d85e65e986965f06ee5e96a293d62dfad59ee57a9dcdd1c591eab156e03d58b3c35926b4211ce792d683458e15bb9f642c7 languageName: node linkType: hard @@ -25836,21 +25836,21 @@ __metadata: resolution: "npm-install-checks@npm:6.3.0" dependencies: semver: "npm:^7.1.1" - checksum: b046ef1de9b40f5d3a9831ce198e1770140a1c3f253dae22eb7b06045191ef79f18f1dcc15a945c919b3c161426861a28050abd321bf439190185794783b6452 + checksum: 10c0/b046ef1de9b40f5d3a9831ce198e1770140a1c3f253dae22eb7b06045191ef79f18f1dcc15a945c919b3c161426861a28050abd321bf439190185794783b6452 languageName: node linkType: hard "npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" - checksum: b0c8c05fe419a122e0ff970ccbe7874ae24b4b4b08941a24d18097fe6e1f4b93e3f6abfb5512f9c5488827a5592f2fb3ce2431c41d338802aed24b9a0c160551 + checksum: 10c0/b0c8c05fe419a122e0ff970ccbe7874ae24b4b4b08941a24d18097fe6e1f4b93e3f6abfb5512f9c5488827a5592f2fb3ce2431c41d338802aed24b9a0c160551 languageName: node linkType: hard "npm-normalize-package-bin@npm:^3.0.0": version: 3.0.1 resolution: "npm-normalize-package-bin@npm:3.0.1" - checksum: f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 + checksum: 10c0/f1831a7f12622840e1375c785c3dab7b1d82dd521211c17ee5e9610cd1a34d8b232d3fdeebf50c170eddcb321d2c644bf73dbe35545da7d588c6b3fa488db0a5 languageName: node linkType: hard @@ -25861,7 +25861,7 @@ __metadata: hosted-git-info: "npm:^3.0.6" semver: "npm:^7.0.0" validate-npm-package-name: "npm:^3.0.0" - checksum: 833f1f6b730649a4f19b5a8491f4e640f31940aa907ec86ed58d7b3ebe48bf528ad4d3f6151199944cb5a60c24e810d75e0e0ee3226af80026f91d34619b49f8 + checksum: 10c0/833f1f6b730649a4f19b5a8491f4e640f31940aa907ec86ed58d7b3ebe48bf528ad4d3f6151199944cb5a60c24e810d75e0e0ee3226af80026f91d34619b49f8 languageName: node linkType: hard @@ -25873,7 +25873,7 @@ __metadata: proc-log: "npm:^3.0.0" semver: "npm:^7.3.5" validate-npm-package-name: "npm:^5.0.0" - checksum: ab56ed775b48e22755c324536336e3749b6a17763602bc0fb0d7e8b298100c2de8b5e2fb1d4fb3f451e9e076707a27096782e9b3a8da0c5b7de296be184b5a90 + checksum: 10c0/ab56ed775b48e22755c324536336e3749b6a17763602bc0fb0d7e8b298100c2de8b5e2fb1d4fb3f451e9e076707a27096782e9b3a8da0c5b7de296be184b5a90 languageName: node linkType: hard @@ -25885,7 +25885,7 @@ __metadata: proc-log: "npm:^3.0.0" semver: "npm:^7.3.5" validate-npm-package-name: "npm:^5.0.0" - checksum: f5bc4056ffe46497847fb31e349c834efe01d36d170926d1032443e183219d5e6ce75a49c1d398caf2236d3a69180597d255bff685c68d6a81f2eac96262b94d + checksum: 10c0/f5bc4056ffe46497847fb31e349c834efe01d36d170926d1032443e183219d5e6ce75a49c1d398caf2236d3a69180597d255bff685c68d6a81f2eac96262b94d languageName: node linkType: hard @@ -25899,7 +25899,7 @@ __metadata: npm-normalize-package-bin: "npm:^1.0.1" bin: npm-packlist: bin/index.js - checksum: 8d9845883722931576e8eb10ef779407ecfe7d3aec696af76fb3ccbee776560c214ef87bad3615f98bdf0bab759a3a0e5667932cd2c29e14d2a37de22ddf601c + checksum: 10c0/8d9845883722931576e8eb10ef779407ecfe7d3aec696af76fb3ccbee776560c214ef87bad3615f98bdf0bab759a3a0e5667932cd2c29e14d2a37de22ddf601c languageName: node linkType: hard @@ -25908,7 +25908,7 @@ __metadata: resolution: "npm-packlist@npm:8.0.1" dependencies: ignore-walk: "npm:^6.0.4" - checksum: 40a61e7c4ee3d7ae29314b554cba00d8ce7f934c2949043fe137b48a69f8c6dbec222b45bc3176667ea78aae275764e0e2d659017833f47673324ddc2abfd50e + checksum: 10c0/40a61e7c4ee3d7ae29314b554cba00d8ce7f934c2949043fe137b48a69f8c6dbec222b45bc3176667ea78aae275764e0e2d659017833f47673324ddc2abfd50e languageName: node linkType: hard @@ -25920,7 +25920,7 @@ __metadata: npm-normalize-package-bin: "npm:^3.0.0" npm-package-arg: "npm:^11.0.0" semver: "npm:^7.3.5" - checksum: 930859b70fb7b8cd8aee1c9819c2fbe95db5ae246398fbd6eaa819793675e36be97da2b4d19e1b56a913a016f7a0a33070cd3ed363ad522d5dbced9c0d94d037 + checksum: 10c0/930859b70fb7b8cd8aee1c9819c2fbe95db5ae246398fbd6eaa819793675e36be97da2b4d19e1b56a913a016f7a0a33070cd3ed363ad522d5dbced9c0d94d037 languageName: node linkType: hard @@ -25935,7 +25935,7 @@ __metadata: minizlib: "npm:^2.1.2" npm-package-arg: "npm:^10.0.0" proc-log: "npm:^3.0.0" - checksum: 6f556095feb20455d6dc3bb2d5f602df9c5725ab49bca8570135e2900d0ccd0a619427bb668639d94d42651fab0a9e8e234f5381767982a1af17d721799cfc2d + checksum: 10c0/6f556095feb20455d6dc3bb2d5f602df9c5725ab49bca8570135e2900d0ccd0a619427bb668639d94d42651fab0a9e8e234f5381767982a1af17d721799cfc2d languageName: node linkType: hard @@ -25950,7 +25950,7 @@ __metadata: minizlib: "npm:^2.1.2" npm-package-arg: "npm:^11.0.0" proc-log: "npm:^3.0.0" - checksum: b1108c256a95ed8cb57710a4c8970cf5814c6f00fbf51b045d53ad75a6fc00793ac6c1de1134bb0f35fa53d6f26a0ff29098d67c48ad7656451bc75f1f5e3c8c + checksum: 10c0/b1108c256a95ed8cb57710a4c8970cf5814c6f00fbf51b045d53ad75a6fc00793ac6c1de1134bb0f35fa53d6f26a0ff29098d67c48ad7656451bc75f1f5e3c8c languageName: node linkType: hard @@ -25959,7 +25959,7 @@ __metadata: resolution: "npm-run-path@npm:4.0.1" dependencies: path-key: "npm:^3.0.0" - checksum: 6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac languageName: node linkType: hard @@ -25968,7 +25968,7 @@ __metadata: resolution: "npm-run-path@npm:5.2.0" dependencies: path-key: "npm:^4.0.0" - checksum: 7963c1f98e42afebe9524a08b0881477ec145aab34f6018842a315422b25ad40e015bdee709b697571e5efda2ecfa2640ee917d92674e4de1166fa3532a211b1 + checksum: 10c0/7963c1f98e42afebe9524a08b0881477ec145aab34f6018842a315422b25ad40e015bdee709b697571e5efda2ecfa2640ee917d92674e4de1166fa3532a211b1 languageName: node linkType: hard @@ -25980,7 +25980,7 @@ __metadata: console-control-strings: "npm:^1.1.0" gauge: "npm:^4.0.3" set-blocking: "npm:^2.0.0" - checksum: 0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 + checksum: 10c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 languageName: node linkType: hard @@ -25992,7 +25992,7 @@ __metadata: console-control-strings: "npm:^1.1.0" gauge: "npm:^5.0.0" set-blocking: "npm:^2.0.0" - checksum: d4e6a2aaa7b5b5d2e2ed8f8ac3770789ca0691a49f3576b6a8c97d560a4c3305d2c233a9173d62be737e6e4506bf9e89debd6120a3843c1d37315c34f90fef71 + checksum: 10c0/d4e6a2aaa7b5b5d2e2ed8f8ac3770789ca0691a49f3576b6a8c97d560a4c3305d2c233a9173d62be737e6e4506bf9e89debd6120a3843c1d37315c34f90fef71 languageName: node linkType: hard @@ -26001,7 +26001,7 @@ __metadata: resolution: "nth-check@npm:2.1.1" dependencies: boolbase: "npm:^1.0.0" - checksum: 5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 + checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 languageName: node linkType: hard @@ -26013,21 +26013,21 @@ __metadata: schema-utils: "npm:^3.0.0" peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: fe9a74a928c9ddc1eab7be0e4322516439562d6efd6feeb0f7c61777d4b79a6a8e5a6bc8133deb59408f3f423bdf84c154a88168154a583154e9e33d544b4d42 + checksum: 10c0/fe9a74a928c9ddc1eab7be0e4322516439562d6efd6feeb0f7c61777d4b79a6a8e5a6bc8133deb59408f3f423bdf84c154a88168154a583154e9e33d544b4d42 languageName: node linkType: hard "nullthrows@npm:^1.1.1": version: 1.1.1 resolution: "nullthrows@npm:1.1.1" - checksum: 56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 + checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 languageName: node linkType: hard "nwsapi@npm:^2.2.2": version: 2.2.7 resolution: "nwsapi@npm:2.2.7" - checksum: 44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db + checksum: 10c0/44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db languageName: node linkType: hard @@ -26111,14 +26111,14 @@ __metadata: bin: nx: bin/nx.js nx-cloud: bin/nx-cloud.js - checksum: 5438bd50e19a6fab01f4f08847045f4d9f67d446eed279027ca7de11a2f20ca9ad0a7e2ec195d8422d2c1f9e401eb3bb7bfd01e97c7c4cd933ed763949f6dbd4 + checksum: 10c0/5438bd50e19a6fab01f4f08847045f4d9f67d446eed279027ca7de11a2f20ca9ad0a7e2ec195d8422d2c1f9e401eb3bb7bfd01e97c7c4cd933ed763949f6dbd4 languageName: node linkType: hard "object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" - checksum: 1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 languageName: node linkType: hard @@ -26129,28 +26129,28 @@ __metadata: copy-descriptor: "npm:^0.1.0" define-property: "npm:^0.2.5" kind-of: "npm:^3.0.3" - checksum: 79314b05e9d626159a04f1d913f4c4aba9eae8848511cf5f4c8e3b04bb3cc313b65f60357f86462c959a14c2d58380fedf89b6b32ecec237c452a5ef3900a293 + checksum: 10c0/79314b05e9d626159a04f1d913f4c4aba9eae8848511cf5f4c8e3b04bb3cc313b65f60357f86462c959a14c2d58380fedf89b6b32ecec237c452a5ef3900a293 languageName: node linkType: hard "object-filter@npm:^1.0.2": version: 1.0.2 resolution: "object-filter@npm:1.0.2" - checksum: 15ce6852c1826db20b7c65ddc7519ce76f9cf06b1cf5140b49a2d06b265ab897692cfc90627c0a907f4d1e8fd0c1fe6d36e20931d4ced5e2e30c49451b7d4b70 + checksum: 10c0/15ce6852c1826db20b7c65ddc7519ce76f9cf06b1cf5140b49a2d06b265ab897692cfc90627c0a907f4d1e8fd0c1fe6d36e20931d4ced5e2e30c49451b7d4b70 languageName: node linkType: hard "object-hash@npm:^3.0.0": version: 3.0.0 resolution: "object-hash@npm:3.0.0" - checksum: a06844537107b960c1c8b96cd2ac8592a265186bfa0f6ccafe0d34eabdb526f6fa81da1f37c43df7ed13b12a4ae3457a16071603bcd39d8beddb5f08c37b0f47 + checksum: 10c0/a06844537107b960c1c8b96cd2ac8592a265186bfa0f6ccafe0d34eabdb526f6fa81da1f37c43df7ed13b12a4ae3457a16071603bcd39d8beddb5f08c37b0f47 languageName: node linkType: hard "object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": version: 1.13.1 resolution: "object-inspect@npm:1.13.1" - checksum: fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d + checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d languageName: node linkType: hard @@ -26160,14 +26160,14 @@ __metadata: dependencies: call-bind: "npm:^1.0.2" define-properties: "npm:^1.1.3" - checksum: 8c263fb03fc28f1ffb54b44b9147235c5e233dc1ca23768e7d2569740b5d860154d7cc29a30220fe28ed6d8008e2422aefdebfe987c103e1c5d190cf02d9d886 + checksum: 10c0/8c263fb03fc28f1ffb54b44b9147235c5e233dc1ca23768e7d2569740b5d860154d7cc29a30220fe28ed6d8008e2422aefdebfe987c103e1c5d190cf02d9d886 languageName: node linkType: hard "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" - checksum: b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d languageName: node linkType: hard @@ -26176,7 +26176,7 @@ __metadata: resolution: "object-visit@npm:1.0.1" dependencies: isobject: "npm:^3.0.0" - checksum: 086b475bda24abd2318d2b187c3e928959b89f5cb5883d6fe5a42d03719b61fc18e765f658de9ac8730e67ba9ff26d61e73d991215948ff9ecefe771e0071029 + checksum: 10c0/086b475bda24abd2318d2b187c3e928959b89f5cb5883d6fe5a42d03719b61fc18e765f658de9ac8730e67ba9ff26d61e73d991215948ff9ecefe771e0071029 languageName: node linkType: hard @@ -26188,7 +26188,7 @@ __metadata: define-properties: "npm:^1.1.4" has-symbols: "npm:^1.0.3" object-keys: "npm:^1.1.1" - checksum: 2f286118c023e557757620e647b02e7c88d3d417e0c568fca0820de8ec9cca68928304854d5b03e99763eddad6e78a6716e2930f7e6372e4b9b843f3fd3056f3 + checksum: 10c0/2f286118c023e557757620e647b02e7c88d3d417e0c568fca0820de8ec9cca68928304854d5b03e99763eddad6e78a6716e2930f7e6372e4b9b843f3fd3056f3 languageName: node linkType: hard @@ -26199,7 +26199,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - checksum: 3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 + checksum: 10c0/3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 languageName: node linkType: hard @@ -26210,7 +26210,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - checksum: 071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b + checksum: 10c0/071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b languageName: node linkType: hard @@ -26223,7 +26223,7 @@ __metadata: define-properties: "npm:^1.2.0" es-abstract: "npm:^1.21.2" safe-array-concat: "npm:^1.0.0" - checksum: 9c401557a1cd47d873810b8df61dba350bc39848753180a2c7bdc8b9a67907b7c12e5aa9318fde7fe68d3b62c88b9cbd729b3cc8bbdf02655619b9d2a99b5c2a + checksum: 10c0/9c401557a1cd47d873810b8df61dba350bc39848753180a2c7bdc8b9a67907b7c12e5aa9318fde7fe68d3b62c88b9cbd729b3cc8bbdf02655619b9d2a99b5c2a languageName: node linkType: hard @@ -26235,7 +26235,7 @@ __metadata: define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" get-intrinsic: "npm:^1.2.1" - checksum: 61e41fbf08cc04ed860363db9629eedeaa590fce243c0960e948fd7b11f78a9d4350065c339936d118a2dd8775d7259e26207340cc8ce688bec66cb615fec6fe + checksum: 10c0/61e41fbf08cc04ed860363db9629eedeaa590fce243c0960e948fd7b11f78a9d4350065c339936d118a2dd8775d7259e26207340cc8ce688bec66cb615fec6fe languageName: node linkType: hard @@ -26245,7 +26245,7 @@ __metadata: dependencies: define-properties: "npm:^1.1.4" es-abstract: "npm:^1.20.4" - checksum: 419fc1c74a2aea7ebb4d49b79d5b1599a010b26c18eae35bd061ccdd013ccb749c499d8dd6ee21a91e6d7264ccc592573d0f13562970f76e25fc844d8c1b02ce + checksum: 10c0/419fc1c74a2aea7ebb4d49b79d5b1599a010b26c18eae35bd061ccdd013ccb749c499d8dd6ee21a91e6d7264ccc592573d0f13562970f76e25fc844d8c1b02ce languageName: node linkType: hard @@ -26254,7 +26254,7 @@ __metadata: resolution: "object.pick@npm:1.3.0" dependencies: isobject: "npm:^3.0.1" - checksum: cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e + checksum: 10c0/cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e languageName: node linkType: hard @@ -26265,21 +26265,21 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - checksum: e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b + checksum: 10c0/e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b languageName: node linkType: hard "objectorarray@npm:^1.0.5": version: 1.0.5 resolution: "objectorarray@npm:1.0.5" - checksum: 3d3db66e2052df85617ac31b98f8e51a7a883ebce24123018dacf286712aa513a0a84e82b4a6bef68889d5fc39cf08e630ee78df013023fc5161e1fdf3eaaa5a + checksum: 10c0/3d3db66e2052df85617ac31b98f8e51a7a883ebce24123018dacf286712aa513a0a84e82b4a6bef68889d5fc39cf08e630ee78df013023fc5161e1fdf3eaaa5a languageName: node linkType: hard "obuf@npm:^1.0.0, obuf@npm:^1.1.2": version: 1.1.2 resolution: "obuf@npm:1.1.2" - checksum: 520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 languageName: node linkType: hard @@ -26297,14 +26297,14 @@ __metadata: "@octokit/plugin-throttling": "npm:^8.0.0" "@octokit/request-error": "npm:^5.0.0" "@octokit/types": "npm:^12.0.0" - checksum: 8d9b1847c1c5295fed2b9ea574213ae55f9a12d75913bc77575f48382b8d1998446adeea32095d4866591b224678b0ffa4b6c8ccdb2c4dcd2ec679033a1dc696 + checksum: 10c0/8d9b1847c1c5295fed2b9ea574213ae55f9a12d75913bc77575f48382b8d1998446adeea32095d4866591b224678b0ffa4b6c8ccdb2c4dcd2ec679033a1dc696 languageName: node linkType: hard "on-exit-leak-free@npm:^2.1.0": version: 2.1.0 resolution: "on-exit-leak-free@npm:2.1.0" - checksum: 66cf10b270ffd4df593efd75f9122a16980672cb583380440e44f96db1c41607c42b8986e96f1563c769daed3af270c240e1195fc6e6393da1da5c36233d848b + checksum: 10c0/66cf10b270ffd4df593efd75f9122a16980672cb583380440e44f96db1c41607c42b8986e96f1563c769daed3af270c240e1195fc6e6393da1da5c36233d848b languageName: node linkType: hard @@ -26313,14 +26313,14 @@ __metadata: resolution: "on-finished@npm:2.4.1" dependencies: ee-first: "npm:1.1.1" - checksum: 46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 languageName: node linkType: hard "on-headers@npm:~1.0.2": version: 1.0.2 resolution: "on-headers@npm:1.0.2" - checksum: f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f + checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f languageName: node linkType: hard @@ -26329,7 +26329,7 @@ __metadata: resolution: "once@npm:1.4.0" dependencies: wrappy: "npm:1" - checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 languageName: node linkType: hard @@ -26338,7 +26338,7 @@ __metadata: resolution: "onetime@npm:5.1.2" dependencies: mimic-fn: "npm:^2.1.0" - checksum: ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f languageName: node linkType: hard @@ -26347,7 +26347,7 @@ __metadata: resolution: "onetime@npm:6.0.0" dependencies: mimic-fn: "npm:^4.0.0" - checksum: 4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c + checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c languageName: node linkType: hard @@ -26358,7 +26358,7 @@ __metadata: define-lazy-prop: "npm:^2.0.0" is-docker: "npm:^2.1.1" is-wsl: "npm:^2.2.0" - checksum: bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 languageName: node linkType: hard @@ -26367,7 +26367,7 @@ __metadata: resolution: "opener@npm:1.5.2" bin: opener: bin/opener-bin.js - checksum: dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 languageName: node linkType: hard @@ -26379,7 +26379,7 @@ __metadata: "@wry/context": "npm:^0.7.0" "@wry/trie": "npm:^0.4.3" tslib: "npm:^2.3.0" - checksum: 8e97c6d660cb80cf5f444209b9dd29ee6951fa7b344d4c4fc6d4aaf0ad0710dddaf834d0f5d7211b3658b15ef6c6a22cbcb98c7a8121e3fee9666fe0fd62d876 + checksum: 10c0/8e97c6d660cb80cf5f444209b9dd29ee6951fa7b344d4c4fc6d4aaf0ad0710dddaf834d0f5d7211b3658b15ef6c6a22cbcb98c7a8121e3fee9666fe0fd62d876 languageName: node linkType: hard @@ -26393,7 +26393,7 @@ __metadata: prelude-ls: "npm:~1.1.2" type-check: "npm:~0.3.2" word-wrap: "npm:~1.2.3" - checksum: ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 + checksum: 10c0/ad7000ea661792b3ec5f8f86aac28895850988926f483b5f308f59f4607dfbe24c05df2d049532ee227c040081f39401a268cf7bbf3301512f74c4d760dc6dd8 languageName: node linkType: hard @@ -26407,7 +26407,7 @@ __metadata: levn: "npm:^0.4.1" prelude-ls: "npm:^1.2.1" type-check: "npm:^0.4.0" - checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c languageName: node linkType: hard @@ -26424,7 +26424,7 @@ __metadata: stdin-discarder: "npm:^0.1.0" string-width: "npm:^6.1.0" strip-ansi: "npm:^7.1.0" - checksum: 9412cd96436b94738f9d11a00dba3654d3cb6d91dfbcca71554fbcb76dc897145fa4ba0d2009e492256a21228ab565512e5e93a36a205ccd38f9e99a417358cb + checksum: 10c0/9412cd96436b94738f9d11a00dba3654d3cb6d91dfbcca71554fbcb76dc897145fa4ba0d2009e492256a21228ab565512e5e93a36a205ccd38f9e99a417358cb languageName: node linkType: hard @@ -26441,49 +26441,49 @@ __metadata: log-symbols: "npm:^4.1.0" strip-ansi: "npm:^6.0.0" wcwidth: "npm:^1.0.1" - checksum: 10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 languageName: node linkType: hard "os-browserify@npm:^0.3.0": version: 0.3.0 resolution: "os-browserify@npm:0.3.0" - checksum: 6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 + checksum: 10c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 languageName: node linkType: hard "os-tmpdir@npm:~1.0.2": version: 1.0.2 resolution: "os-tmpdir@npm:1.0.2" - checksum: f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 languageName: node linkType: hard "ospath@npm:^1.2.2": version: 1.2.2 resolution: "ospath@npm:1.2.2" - checksum: e485a6ca91964f786163408b093860bf26a9d9704d83ec39ccf463b9f11ea712b780b23b73d1f64536de62c5f66244dd94ed83fc9ffe3c1564dd1eed5cdae923 + checksum: 10c0/e485a6ca91964f786163408b093860bf26a9d9704d83ec39ccf463b9f11ea712b780b23b73d1f64536de62c5f66244dd94ed83fc9ffe3c1564dd1eed5cdae923 languageName: node linkType: hard "outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": version: 1.4.0 resolution: "outvariant@npm:1.4.0" - checksum: 502d075509fe9709a376cdf9a3eccbd9599fe0c42ed8c723e8c95d4856fa80154e1e957ea0d0d6bb9e0c33352086a6a623803fb5f16775322ede4b9354635bb5 + checksum: 10c0/502d075509fe9709a376cdf9a3eccbd9599fe0c42ed8c723e8c95d4856fa80154e1e957ea0d0d6bb9e0c33352086a6a623803fb5f16775322ede4b9354635bb5 languageName: node linkType: hard "p-cancelable@npm:^1.0.0": version: 1.1.0 resolution: "p-cancelable@npm:1.1.0" - checksum: 9f16d7d58897edb07b1a9234b2bfce3665c747f0f13886e25e2144ecab4595412017cc8cc3b0042f89864b997d6dba76c130724e1c0923fc41ff3c9399b87449 + checksum: 10c0/9f16d7d58897edb07b1a9234b2bfce3665c747f0f13886e25e2144ecab4595412017cc8cc3b0042f89864b997d6dba76c130724e1c0923fc41ff3c9399b87449 languageName: node linkType: hard "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" - checksum: 6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 + checksum: 10c0/6b8552339a71fe7bd424d01d8451eea92d379a711fc62f6b2fe64cad8a472c7259a236c9a22b4733abca0b5666ad503cb497792a0478c5af31ded793d00937e7 languageName: node linkType: hard @@ -26492,7 +26492,7 @@ __metadata: resolution: "p-limit@npm:3.1.0" dependencies: yocto-queue: "npm:^0.1.0" - checksum: 9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a languageName: node linkType: hard @@ -26501,7 +26501,7 @@ __metadata: resolution: "p-limit@npm:1.3.0" dependencies: p-try: "npm:^1.0.0" - checksum: 5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee + checksum: 10c0/5c1b1d53d180b2c7501efb04b7c817448e10efe1ba46f4783f8951994d5027e4cd88f36ad79af50546682594c4ebd11702ac4b9364c47f8074890e2acad0edee languageName: node linkType: hard @@ -26510,7 +26510,7 @@ __metadata: resolution: "p-limit@npm:2.3.0" dependencies: p-try: "npm:^2.0.0" - checksum: 8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 languageName: node linkType: hard @@ -26519,7 +26519,7 @@ __metadata: resolution: "p-limit@npm:4.0.0" dependencies: yocto-queue: "npm:^1.0.0" - checksum: a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad languageName: node linkType: hard @@ -26528,7 +26528,7 @@ __metadata: resolution: "p-limit@npm:5.0.0" dependencies: yocto-queue: "npm:^1.0.0" - checksum: 574e93b8895a26e8485eb1df7c4b58a1a6e8d8ae41b1750cc2cc440922b3d306044fc6e9a7f74578a883d46802d9db72b30f2e612690fcef838c173261b1ed83 + checksum: 10c0/574e93b8895a26e8485eb1df7c4b58a1a6e8d8ae41b1750cc2cc440922b3d306044fc6e9a7f74578a883d46802d9db72b30f2e612690fcef838c173261b1ed83 languageName: node linkType: hard @@ -26537,7 +26537,7 @@ __metadata: resolution: "p-locate@npm:2.0.0" dependencies: p-limit: "npm:^1.1.0" - checksum: 82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 + checksum: 10c0/82da4be88fb02fd29175e66021610c881938d3cc97c813c71c1a605fac05617d57fd5d3b337494a6106c0edb2a37c860241430851411f1b265108cead34aee67 languageName: node linkType: hard @@ -26546,7 +26546,7 @@ __metadata: resolution: "p-locate@npm:3.0.0" dependencies: p-limit: "npm:^2.0.0" - checksum: 7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 languageName: node linkType: hard @@ -26555,7 +26555,7 @@ __metadata: resolution: "p-locate@npm:4.1.0" dependencies: p-limit: "npm:^2.2.0" - checksum: 1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 languageName: node linkType: hard @@ -26564,7 +26564,7 @@ __metadata: resolution: "p-locate@npm:5.0.0" dependencies: p-limit: "npm:^3.0.2" - checksum: 2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a languageName: node linkType: hard @@ -26573,14 +26573,14 @@ __metadata: resolution: "p-locate@npm:6.0.0" dependencies: p-limit: "npm:^4.0.0" - checksum: d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 languageName: node linkType: hard "p-map-series@npm:2.1.0": version: 2.1.0 resolution: "p-map-series@npm:2.1.0" - checksum: 302ca686a61c498b227fc45d4e2b2e5bfd20a03f4156a976d94c4ff7decf9cd5a815fa6846b43b37d587ffa8d4671ff2bd596fa83fe8b9113b5102da94940e2a + checksum: 10c0/302ca686a61c498b227fc45d4e2b2e5bfd20a03f4156a976d94c4ff7decf9cd5a815fa6846b43b37d587ffa8d4671ff2bd596fa83fe8b9113b5102da94940e2a languageName: node linkType: hard @@ -26589,14 +26589,14 @@ __metadata: resolution: "p-map@npm:4.0.0" dependencies: aggregate-error: "npm:^3.0.0" - checksum: 592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 languageName: node linkType: hard "p-pipe@npm:3.1.0": version: 3.1.0 resolution: "p-pipe@npm:3.1.0" - checksum: 9b3076828ea7e9469c0f92c78fa44096726208d547efdb2d6148cbe135d1a70bd449de5be13e234dd669d9515343bd68527b316bf9d5639cee639e2fdde20aaf + checksum: 10c0/9b3076828ea7e9469c0f92c78fa44096726208d547efdb2d6148cbe135d1a70bd449de5be13e234dd669d9515343bd68527b316bf9d5639cee639e2fdde20aaf languageName: node linkType: hard @@ -26606,14 +26606,14 @@ __metadata: dependencies: eventemitter3: "npm:^4.0.4" p-timeout: "npm:^3.2.0" - checksum: 5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e + checksum: 10c0/5739ecf5806bbeadf8e463793d5e3004d08bb3f6177bd1a44a005da8fd81bb90f80e4633e1fb6f1dfd35ee663a5c0229abe26aebb36f547ad5a858347c7b0d3e languageName: node linkType: hard "p-reduce@npm:2.1.0, p-reduce@npm:^2.0.0, p-reduce@npm:^2.1.0": version: 2.1.0 resolution: "p-reduce@npm:2.1.0" - checksum: 27b8ff0fb044995507a06cd6357dffba0f2b98862864745972562a21885d7906ce5c794036d2aaa63ef6303158e41e19aed9f19651dfdafb38548ecec7d0de15 + checksum: 10c0/27b8ff0fb044995507a06cd6357dffba0f2b98862864745972562a21885d7906ce5c794036d2aaa63ef6303158e41e19aed9f19651dfdafb38548ecec7d0de15 languageName: node linkType: hard @@ -26623,7 +26623,7 @@ __metadata: dependencies: "@types/retry": "npm:0.12.0" retry: "npm:^0.13.1" - checksum: d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 + checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 languageName: node linkType: hard @@ -26632,21 +26632,21 @@ __metadata: resolution: "p-timeout@npm:3.2.0" dependencies: p-finally: "npm:^1.0.0" - checksum: 524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 + checksum: 10c0/524b393711a6ba8e1d48137c5924749f29c93d70b671e6db761afa784726572ca06149c715632da8f70c090073afb2af1c05730303f915604fd38ee207b70a61 languageName: node linkType: hard "p-try@npm:^1.0.0": version: 1.0.0 resolution: "p-try@npm:1.0.0" - checksum: 757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a + checksum: 10c0/757ba31de5819502b80c447826fac8be5f16d3cb4fbf9bc8bc4971dba0682e84ac33e4b24176ca7058c69e29f64f34d8d9e9b08e873b7b7bb0aa89d620fa224a languageName: node linkType: hard "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" - checksum: c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f languageName: node linkType: hard @@ -26655,7 +26655,7 @@ __metadata: resolution: "p-waterfall@npm:2.1.1" dependencies: p-reduce: "npm:^2.0.0" - checksum: ccae582b75a3597018a375f8eac32b93e8bfb9fc22a8e5037787ef4ebf5958d7465c2d3cbe26443971fbbfda2bcb7b645f694b91f928fc9a71fa5031e6e33f85 + checksum: 10c0/ccae582b75a3597018a375f8eac32b93e8bfb9fc22a8e5037787ef4ebf5958d7465c2d3cbe26443971fbbfda2bcb7b645f694b91f928fc9a71fa5031e6e33f85 languageName: node linkType: hard @@ -26667,7 +26667,7 @@ __metadata: registry-auth-token: "npm:^4.0.0" registry-url: "npm:^5.0.0" semver: "npm:^6.2.0" - checksum: 60c29fe357af43f96c92c334aa0160cebde44e8e65c1e5f9b065efb3f501af812f268ec967a07757b56447834ef7f71458ebbab94425a9f09c271f348f9b764f + checksum: 10c0/60c29fe357af43f96c92c334aa0160cebde44e8e65c1e5f9b065efb3f501af812f268ec967a07757b56447834ef7f71458ebbab94425a9f09c271f348f9b764f languageName: node linkType: hard @@ -26695,21 +26695,21 @@ __metadata: tar: "npm:^6.1.11" bin: pacote: lib/bin.js - checksum: d8fc116cb91d453d2a42493ea5ced3ff57dbfdb6e5b9b514f1d0465422e80042c69013fb4f77be5f27751185c6b174a40d8a53debdfb57cc4ba82a9650d970db + checksum: 10c0/d8fc116cb91d453d2a42493ea5ced3ff57dbfdb6e5b9b514f1d0465422e80042c69013fb4f77be5f27751185c6b174a40d8a53debdfb57cc4ba82a9650d970db languageName: node linkType: hard "pako@npm:~0.2.0": version: 0.2.9 resolution: "pako@npm:0.2.9" - checksum: 79c1806ebcf325b60ae599e4d7227c2e346d7b829dc20f5cf24cef07c934079dc3a61c5b3c8278a2f7a190c4a613e343ea11e5302dbe252efd11712df4b6b041 + checksum: 10c0/79c1806ebcf325b60ae599e4d7227c2e346d7b829dc20f5cf24cef07c934079dc3a61c5b3c8278a2f7a190c4a613e343ea11e5302dbe252efd11712df4b6b041 languageName: node linkType: hard "pako@npm:~1.0.5": version: 1.0.11 resolution: "pako@npm:1.0.11" - checksum: 86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe + checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe languageName: node linkType: hard @@ -26720,7 +26720,7 @@ __metadata: cyclist: "npm:^1.0.1" inherits: "npm:^2.0.3" readable-stream: "npm:^2.1.5" - checksum: ab0e58569e73681ca4b9c9228189bdb6cbea535295fae344cf0d8342fd33a950961914f3c414f81894c1498fb9ad1c079b4625d2b7ceae9e6ab812f22e3bea3f + checksum: 10c0/ab0e58569e73681ca4b9c9228189bdb6cbea535295fae344cf0d8342fd33a950961914f3c414f81894c1498fb9ad1c079b4625d2b7ceae9e6ab812f22e3bea3f languageName: node linkType: hard @@ -26730,7 +26730,7 @@ __metadata: dependencies: dot-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 + checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 languageName: node linkType: hard @@ -26739,7 +26739,7 @@ __metadata: resolution: "param-case@npm:2.1.1" dependencies: no-case: "npm:^2.2.0" - checksum: 8ea1b8472fd51d5f50b28d1d754899713805d05f2241e9b8c4acafa2c500b3f47457a3b4932ab75220f14d2c69180bb7338b78a45576e2b4d90da1e6f0285833 + checksum: 10c0/8ea1b8472fd51d5f50b28d1d754899713805d05f2241e9b8c4acafa2c500b3f47457a3b4932ab75220f14d2c69180bb7338b78a45576e2b4d90da1e6f0285833 languageName: node linkType: hard @@ -26748,7 +26748,7 @@ __metadata: resolution: "parent-module@npm:1.0.1" dependencies: callsites: "npm:^3.0.0" - checksum: c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 languageName: node linkType: hard @@ -26761,7 +26761,7 @@ __metadata: evp_bytestokey: "npm:^1.0.0" pbkdf2: "npm:^3.0.3" safe-buffer: "npm:^5.1.1" - checksum: 4ed1d9b9e120c5484d29d67bb90171aac0b73422bc016d6294160aea983275c28a27ab85d862059a36a86a97dd31b7ddd97486802ca9fac67115fe3409e9dcbd + checksum: 10c0/4ed1d9b9e120c5484d29d67bb90171aac0b73422bc016d6294160aea983275c28a27ab85d862059a36a86a97dd31b7ddd97486802ca9fac67115fe3409e9dcbd languageName: node linkType: hard @@ -26772,7 +26772,7 @@ __metadata: json-parse-even-better-errors: "npm:^3.0.0" just-diff: "npm:^6.0.0" just-diff-apply: "npm:^5.2.0" - checksum: 610b37181229ce3e945125c3a9548ec24d1de2d697a7ea3ef0f2660cccc6613715c2ba4bdbaf37c565133d6b61758703618a2c63d1ee29f97fd33c70a8aae323 + checksum: 10c0/610b37181229ce3e945125c3a9548ec24d1de2d697a7ea3ef0f2660cccc6613715c2ba4bdbaf37c565133d6b61758703618a2c63d1ee29f97fd33c70a8aae323 languageName: node linkType: hard @@ -26783,7 +26783,7 @@ __metadata: is-absolute: "npm:^1.0.0" map-cache: "npm:^0.2.0" path-root: "npm:^0.1.1" - checksum: 37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 + checksum: 10c0/37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 languageName: node linkType: hard @@ -26793,7 +26793,7 @@ __metadata: dependencies: error-ex: "npm:^1.3.1" json-parse-better-errors: "npm:^1.0.1" - checksum: 8d80790b772ccb1bcea4e09e2697555e519d83d04a77c2b4237389b813f82898943a93ffff7d0d2406203bdd0c30dcf95b1661e3a53f83d0e417f053957bef32 + checksum: 10c0/8d80790b772ccb1bcea4e09e2697555e519d83d04a77c2b4237389b813f82898943a93ffff7d0d2406203bdd0c30dcf95b1661e3a53f83d0e417f053957bef32 languageName: node linkType: hard @@ -26805,21 +26805,21 @@ __metadata: error-ex: "npm:^1.3.1" json-parse-even-better-errors: "npm:^2.3.0" lines-and-columns: "npm:^1.1.6" - checksum: 77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 languageName: node linkType: hard "parse-ms@npm:^2.1.0": version: 2.1.0 resolution: "parse-ms@npm:2.1.0" - checksum: 9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 + checksum: 10c0/9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 languageName: node linkType: hard "parse-passwd@npm:^1.0.0": version: 1.0.0 resolution: "parse-passwd@npm:1.0.0" - checksum: 1c05c05f95f184ab9ca604841d78e4fe3294d46b8e3641d305dcc28e930da0e14e602dbda9f3811cd48df5b0e2e27dbef7357bf0d7c40e41b18c11c3a8b8d17b + checksum: 10c0/1c05c05f95f184ab9ca604841d78e4fe3294d46b8e3641d305dcc28e930da0e14e602dbda9f3811cd48df5b0e2e27dbef7357bf0d7c40e41b18c11c3a8b8d17b languageName: node linkType: hard @@ -26828,7 +26828,7 @@ __metadata: resolution: "parse-path@npm:7.0.0" dependencies: protocols: "npm:^2.0.0" - checksum: e7646f6b998b083bbd40102643d803557ce4ae18ae1704e6cc7ae2525ea7c5400f4a3635aca3244cfe65ce4dd0ff77db1142dde4d080e8a80c364c4b3e8fe8d2 + checksum: 10c0/e7646f6b998b083bbd40102643d803557ce4ae18ae1704e6cc7ae2525ea7c5400f4a3635aca3244cfe65ce4dd0ff77db1142dde4d080e8a80c364c4b3e8fe8d2 languageName: node linkType: hard @@ -26837,7 +26837,7 @@ __metadata: resolution: "parse-url@npm:8.1.0" dependencies: parse-path: "npm:^7.0.0" - checksum: 68b95afdf4bbf72e57c7ab66f8757c935fff888f7e2b0f1e06098b4faa19e06b6b743bddaed5bc8df4f0c2de6fc475355d787373b2fdd40092be9e4e4b996648 + checksum: 10c0/68b95afdf4bbf72e57c7ab66f8757c935fff888f7e2b0f1e06098b4faa19e06b6b743bddaed5bc8df4f0c2de6fc475355d787373b2fdd40092be9e4e4b996648 languageName: node linkType: hard @@ -26847,7 +26847,7 @@ __metadata: dependencies: domhandler: "npm:^5.0.2" parse5: "npm:^7.0.0" - checksum: e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 + checksum: 10c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 languageName: node linkType: hard @@ -26856,7 +26856,7 @@ __metadata: resolution: "parse5@npm:7.1.2" dependencies: entities: "npm:^4.4.0" - checksum: 297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 languageName: node linkType: hard @@ -26866,7 +26866,7 @@ __metadata: dependencies: leac: "npm:^0.6.0" peberminta: "npm:^0.8.0" - checksum: ec25f79cf6ca7721feb1803f84a7ee152c7ddcde00baefc188093e41b3639b756915527c490b12128cece970e361d31c9027436c1052115e67c4da79e9031446 + checksum: 10c0/ec25f79cf6ca7721feb1803f84a7ee152c7ddcde00baefc188093e41b3639b756915527c490b12128cece970e361d31c9027436c1052115e67c4da79e9031446 languageName: node linkType: hard @@ -26876,14 +26876,14 @@ __metadata: dependencies: leac: "npm:^0.6.0" peberminta: "npm:^0.9.0" - checksum: df3de74172b72305b867298a71e5882c413df75d30f2bafb5fb70779dfd349c5e4db03441fbf8ca83da8e4aa72bd0ef2b5c73086c4825d27d1c649d61bc0bcc0 + checksum: 10c0/df3de74172b72305b867298a71e5882c413df75d30f2bafb5fb70779dfd349c5e4db03441fbf8ca83da8e4aa72bd0ef2b5c73086c4825d27d1c649d61bc0bcc0 languageName: node linkType: hard "parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": version: 1.3.3 resolution: "parseurl@npm:1.3.3" - checksum: 90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 languageName: node linkType: hard @@ -26893,35 +26893,35 @@ __metadata: dependencies: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: 05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 + checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 languageName: node linkType: hard "pascalcase@npm:1.0.0": version: 1.0.0 resolution: "pascalcase@npm:1.0.0" - checksum: 5fac7a6346b23307664f020cdd42d245a3189bf3b9b21cd167ea5e28a17b403e6670c60a3055d9c7d56ec00ffab446f862ff8148add23cd2c5a035c4d07efa26 + checksum: 10c0/5fac7a6346b23307664f020cdd42d245a3189bf3b9b21cd167ea5e28a17b403e6670c60a3055d9c7d56ec00ffab446f862ff8148add23cd2c5a035c4d07efa26 languageName: node linkType: hard "pascalcase@npm:^0.1.1": version: 0.1.1 resolution: "pascalcase@npm:0.1.1" - checksum: 48dfe90618e33810bf58211d8f39ad2c0262f19ad6354da1ba563935b5f429f36409a1fb9187c220328f7a4dc5969917f8e3e01ee089b5f1627b02aefe39567b + checksum: 10c0/48dfe90618e33810bf58211d8f39ad2c0262f19ad6354da1ba563935b5f429f36409a1fb9187c220328f7a4dc5969917f8e3e01ee089b5f1627b02aefe39567b languageName: node linkType: hard "path-browserify@npm:0.0.1": version: 0.0.1 resolution: "path-browserify@npm:0.0.1" - checksum: 3d59710cddeea06509d91935196185900f3d9d29376dff68ff0e146fbd41d0fb304e983d0158f30cabe4dd2ffcc6a7d3d977631994ee984c88e66aed50a1ccd3 + checksum: 10c0/3d59710cddeea06509d91935196185900f3d9d29376dff68ff0e146fbd41d0fb304e983d0158f30cabe4dd2ffcc6a7d3d977631994ee984c88e66aed50a1ccd3 languageName: node linkType: hard "path-browserify@npm:^1.0.1": version: 1.0.1 resolution: "path-browserify@npm:1.0.1" - checksum: 8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 languageName: node linkType: hard @@ -26931,70 +26931,70 @@ __metadata: dependencies: dot-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 + checksum: 10c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 languageName: node linkType: hard "path-dirname@npm:^1.0.0": version: 1.0.2 resolution: "path-dirname@npm:1.0.2" - checksum: 71e59be2bada7c91f62b976245fd421b7cb01fde3207fe53a82d8880621ad04fd8b434e628c9cf4e796259fc168a107d77cd56837725267c5b2c58cefe2c4e1b + checksum: 10c0/71e59be2bada7c91f62b976245fd421b7cb01fde3207fe53a82d8880621ad04fd8b434e628c9cf4e796259fc168a107d77cd56837725267c5b2c58cefe2c4e1b languageName: node linkType: hard "path-exists@npm:^3.0.0": version: 3.0.0 resolution: "path-exists@npm:3.0.0" - checksum: 17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 languageName: node linkType: hard "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" - checksum: 8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b languageName: node linkType: hard "path-exists@npm:^5.0.0": version: 5.0.0 resolution: "path-exists@npm:5.0.0" - checksum: b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a languageName: node linkType: hard "path-is-absolute@npm:^1.0.0": version: 1.0.1 resolution: "path-is-absolute@npm:1.0.1" - checksum: 127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 languageName: node linkType: hard "path-key@npm:^3.0.0, path-key@npm:^3.1.0": version: 3.1.1 resolution: "path-key@npm:3.1.1" - checksum: 748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c languageName: node linkType: hard "path-key@npm:^4.0.0": version: 4.0.0 resolution: "path-key@npm:4.0.0" - checksum: 794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 + checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3 languageName: node linkType: hard "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" - checksum: 11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 languageName: node linkType: hard "path-root-regex@npm:^0.1.0": version: 0.1.2 resolution: "path-root-regex@npm:0.1.2" - checksum: 27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 + checksum: 10c0/27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 languageName: node linkType: hard @@ -27003,7 +27003,7 @@ __metadata: resolution: "path-root@npm:0.1.1" dependencies: path-root-regex: "npm:^0.1.0" - checksum: aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 + checksum: 10c0/aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 languageName: node linkType: hard @@ -27013,21 +27013,21 @@ __metadata: dependencies: lru-cache: "npm:^9.1.1 || ^10.0.0" minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" - checksum: e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e languageName: node linkType: hard "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" - checksum: 50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 + checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 languageName: node linkType: hard "path-to-regexp@npm:^6.2.0": version: 6.2.1 resolution: "path-to-regexp@npm:6.2.1" - checksum: 7a73811ca703e5c199e5b50b9649ab8f6f7b458a37f7dff9ea338815203f5b1f95fe8cb24d4fdfe2eab5d67ce43562d92534330babca35cdf3231f966adb9360 + checksum: 10c0/7a73811ca703e5c199e5b50b9649ab8f6f7b458a37f7dff9ea338815203f5b1f95fe8cb24d4fdfe2eab5d67ce43562d92534330babca35cdf3231f966adb9360 languageName: node linkType: hard @@ -27036,28 +27036,28 @@ __metadata: resolution: "path-type@npm:3.0.0" dependencies: pify: "npm:^3.0.0" - checksum: 1332c632f1cac15790ebab8dd729b67ba04fc96f81647496feb1c2975d862d046f41e4b975dbd893048999b2cc90721f72924ad820acc58c78507ba7141a8e56 + checksum: 10c0/1332c632f1cac15790ebab8dd729b67ba04fc96f81647496feb1c2975d862d046f41e4b975dbd893048999b2cc90721f72924ad820acc58c78507ba7141a8e56 languageName: node linkType: hard "path-type@npm:^4.0.0": version: 4.0.0 resolution: "path-type@npm:4.0.0" - checksum: 666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c languageName: node linkType: hard "pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" - checksum: 64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 + checksum: 10c0/64ee0a4e587fb0f208d9777a6c56e4f9050039268faaaaecd50e959ef01bf847b7872785c36483fa5cdcdbdfdb31fef2ff222684d4fc21c330ab60395c681897 languageName: node linkType: hard "pathval@npm:^1.1.1": version: 1.1.1 resolution: "pathval@npm:1.1.1" - checksum: f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc + checksum: 10c0/f63e1bc1b33593cdf094ed6ff5c49c1c0dc5dc20a646ca9725cc7fe7cd9995002d51d5685b9b2ec6814342935748b711bafa840f84c0bb04e38ff40a335c94dc languageName: node linkType: hard @@ -27066,7 +27066,7 @@ __metadata: resolution: "pause-stream@npm:0.0.11" dependencies: through: "npm:~2.3" - checksum: 86f12c64cdaaa8e45ebaca4e39a478e1442db8b4beabc280b545bfaf79c0e2f33c51efb554aace5c069cc441c7b924ba484837b345eaa4ba6fc940d62f826802 + checksum: 10c0/86f12c64cdaaa8e45ebaca4e39a478e1442db8b4beabc280b545bfaf79c0e2f33c51efb554aace5c069cc441c7b924ba484837b345eaa4ba6fc940d62f826802 languageName: node linkType: hard @@ -27079,21 +27079,21 @@ __metadata: ripemd160: "npm:^2.0.1" safe-buffer: "npm:^5.0.1" sha.js: "npm:^2.4.8" - checksum: 5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd + checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd languageName: node linkType: hard "peberminta@npm:^0.8.0": version: 0.8.0 resolution: "peberminta@npm:0.8.0" - checksum: 12e650795c39bc916324005bc9acca954471182492146cdf10dddc6da08229de287e1375201a2f2b53d5a5383be706aad29056470c6b099696b2c4867d673b03 + checksum: 10c0/12e650795c39bc916324005bc9acca954471182492146cdf10dddc6da08229de287e1375201a2f2b53d5a5383be706aad29056470c6b099696b2c4867d673b03 languageName: node linkType: hard "peberminta@npm:^0.9.0": version: 0.9.0 resolution: "peberminta@npm:0.9.0" - checksum: 59c2c39269d9f7f559cf44582f1c0503524c6a9bc3478e0309adba2b41c71ab98745a239a4e6f98f46105291256e6d8f12ae9860d9f016b1c9a6f52c0b63bfe7 + checksum: 10c0/59c2c39269d9f7f559cf44582f1c0503524c6a9bc3478e0309adba2b41c71ab98745a239a4e6f98f46105291256e6d8f12ae9860d9f016b1c9a6f52c0b63bfe7 languageName: node linkType: hard @@ -27104,7 +27104,7 @@ __metadata: buffer-from: "npm:^1.0.0" duplexify: "npm:^3.5.0" through2: "npm:^2.0.3" - checksum: 3c35d1951b8640036f93b1b5628a90f849e49ca4f2e6aba393ff4978413931d9c491c83f71a92f878d5ea4c670af0bba04dfcfb79b310ead22601db7c1420e36 + checksum: 10c0/3c35d1951b8640036f93b1b5628a90f849e49ca4f2e6aba393ff4978413931d9c491c83f71a92f878d5ea4c670af0bba04dfcfb79b310ead22601db7c1420e36 languageName: node linkType: hard @@ -27113,70 +27113,70 @@ __metadata: resolution: "pegjs@npm:0.10.0" bin: pegjs: bin/pegjs - checksum: 51f2aee312cd506c37c21a88fee2d921ccae81697c7aa3e61f0ad8e370d8c37e2a86680993fce405f53337a56ad471f9e7f4377b2eb3c780d5cf6ae8a16ce0a5 + checksum: 10c0/51f2aee312cd506c37c21a88fee2d921ccae81697c7aa3e61f0ad8e370d8c37e2a86680993fce405f53337a56ad471f9e7f4377b2eb3c780d5cf6ae8a16ce0a5 languageName: node linkType: hard "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" - checksum: 8a87e63f7a4afcfb0f9f77b39bb92374afc723418b9cb716ee4257689224171002e07768eeade4ecd0e86f1fa3d8f022994219fb45634f2dbd78c6803e452458 + checksum: 10c0/8a87e63f7a4afcfb0f9f77b39bb92374afc723418b9cb716ee4257689224171002e07768eeade4ecd0e86f1fa3d8f022994219fb45634f2dbd78c6803e452458 languageName: node linkType: hard "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" - checksum: 22c54de06f269e29f640e0e075207af57de5052a3d15e360c09b9a8663f393f6f45902006c1e71aa8a5a1cdfb1a47fe268826f8496d6425c362f00f5bc3e85d9 + checksum: 10c0/22c54de06f269e29f640e0e075207af57de5052a3d15e360c09b9a8663f393f6f45902006c1e71aa8a5a1cdfb1a47fe268826f8496d6425c362f00f5bc3e85d9 languageName: node linkType: hard "picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" - checksum: 20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 languageName: node linkType: hard "picomatch@npm:3.0.1": version: 3.0.1 resolution: "picomatch@npm:3.0.1" - checksum: 70ec738569f1864658378b7abdab8939d15dae0718c1df994eae3346fd33daf6a3c1ff4e0c1a0cd1e2c0319130985b63a2cff34d192f2f2acbb78aca76111736 + checksum: 10c0/70ec738569f1864658378b7abdab8939d15dae0718c1df994eae3346fd33daf6a3c1ff4e0c1a0cd1e2c0319130985b63a2cff34d192f2f2acbb78aca76111736 languageName: node linkType: hard "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" - checksum: 26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be languageName: node linkType: hard "pify@npm:5.0.0, pify@npm:^5.0.0": version: 5.0.0 resolution: "pify@npm:5.0.0" - checksum: 9f6f3cd1f159652692f514383efe401a06473af35a699962230ad1c4c9796df5999961461fc1a3b81eed8e3e74adb8bd032474fb3f93eb6bdbd9f33328da1ed2 + checksum: 10c0/9f6f3cd1f159652692f514383efe401a06473af35a699962230ad1c4c9796df5999961461fc1a3b81eed8e3e74adb8bd032474fb3f93eb6bdbd9f33328da1ed2 languageName: node linkType: hard "pify@npm:^2.2.0, pify@npm:^2.3.0": version: 2.3.0 resolution: "pify@npm:2.3.0" - checksum: 551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc + checksum: 10c0/551ff8ab830b1052633f59cb8adc9ae8407a436e06b4a9718bcb27dc5844b83d535c3a8512b388b6062af65a98c49bdc0dd523d8b2617b188f7c8fee457158dc languageName: node linkType: hard "pify@npm:^3.0.0": version: 3.0.0 resolution: "pify@npm:3.0.0" - checksum: fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 languageName: node linkType: hard "pify@npm:^4.0.1": version: 4.0.1 resolution: "pify@npm:4.0.1" - checksum: 6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf languageName: node linkType: hard @@ -27186,14 +27186,14 @@ __metadata: dependencies: readable-stream: "npm:^4.0.0" split2: "npm:^4.0.0" - checksum: 6e9b9d5a2c0a37f91ecaf224d335daae1ae682b1c79a05b06ef9e0f0a5d289f8e597992217efc857796dae6f1067e9b4882f95c6228ff433ddc153532cae8aca + checksum: 10c0/6e9b9d5a2c0a37f91ecaf224d335daae1ae682b1c79a05b06ef9e0f0a5d289f8e597992217efc857796dae6f1067e9b4882f95c6228ff433ddc153532cae8aca languageName: node linkType: hard "pino-std-serializers@npm:^6.0.0": version: 6.2.2 resolution: "pino-std-serializers@npm:6.2.2" - checksum: 8f1c7f0f0d8f91e6c6b5b2a6bfb48f06441abeb85f1c2288319f736f9c6d814fbeebe928d2314efc2ba6018fa7db9357a105eca9fc99fc1f28945a8a8b28d3d5 + checksum: 10c0/8f1c7f0f0d8f91e6c6b5b2a6bfb48f06441abeb85f1c2288319f736f9c6d814fbeebe928d2314efc2ba6018fa7db9357a105eca9fc99fc1f28945a8a8b28d3d5 languageName: node linkType: hard @@ -27214,7 +27214,7 @@ __metadata: thread-stream: "npm:^2.0.0" bin: pino: bin.js - checksum: ea1b2f426985a442b65566a75e3f20eed47c1f51f3aea9a10fc16a452feb339cde4d5439d724c822408fce6a8bfcf6d24f61421547f4cc718f44a6eb47921293 + checksum: 10c0/ea1b2f426985a442b65566a75e3f20eed47c1f51f3aea9a10fc16a452feb339cde4d5439d724c822408fce6a8bfcf6d24f61421547f4cc718f44a6eb47921293 languageName: node linkType: hard @@ -27235,14 +27235,14 @@ __metadata: thread-stream: "npm:^2.0.0" bin: pino: bin.js - checksum: 9e55af6cd9d1833a4dbe64924fc73163295acd3c988a9c7db88926669f2574ab7ec607e8487b6dd71dbdad2d7c1c1aac439f37e59233f37220b1a9d88fa2ce01 + checksum: 10c0/9e55af6cd9d1833a4dbe64924fc73163295acd3c988a9c7db88926669f2574ab7ec607e8487b6dd71dbdad2d7c1c1aac439f37e59233f37220b1a9d88fa2ce01 languageName: node linkType: hard "pirates@npm:^4.0.4, pirates@npm:^4.0.6": version: 4.0.6 resolution: "pirates@npm:4.0.6" - checksum: 00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 languageName: node linkType: hard @@ -27251,7 +27251,7 @@ __metadata: resolution: "pkg-dir@npm:3.0.0" dependencies: find-up: "npm:^3.0.0" - checksum: 902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 + checksum: 10c0/902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 languageName: node linkType: hard @@ -27260,7 +27260,7 @@ __metadata: resolution: "pkg-dir@npm:4.2.0" dependencies: find-up: "npm:^4.0.0" - checksum: c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 languageName: node linkType: hard @@ -27269,7 +27269,7 @@ __metadata: resolution: "pkg-dir@npm:5.0.0" dependencies: find-up: "npm:^5.0.0" - checksum: 793a496d685dc55bbbdbbb22d884535c3b29241e48e3e8d37e448113a71b9e42f5481a61fdc672d7322de12fbb2c584dd3a68bf89b18fffce5c48a390f911bc5 + checksum: 10c0/793a496d685dc55bbbdbbb22d884535c3b29241e48e3e8d37e448113a71b9e42f5481a61fdc672d7322de12fbb2c584dd3a68bf89b18fffce5c48a390f911bc5 languageName: node linkType: hard @@ -27278,7 +27278,7 @@ __metadata: resolution: "pkg-dir@npm:7.0.0" dependencies: find-up: "npm:^6.3.0" - checksum: 1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 languageName: node linkType: hard @@ -27289,7 +27289,7 @@ __metadata: jsonc-parser: "npm:^3.2.0" mlly: "npm:^1.2.0" pathe: "npm:^1.1.0" - checksum: 7f692ff2005f51b8721381caf9bdbc7f5461506ba19c34f8631660a215c8de5e6dca268f23a319dd180b8f7c47a0dc6efea14b376c485ff99e98d810b8f786c4 + checksum: 10c0/7f692ff2005f51b8721381caf9bdbc7f5461506ba19c34f8631660a215c8de5e6dca268f23a319dd180b8f7c47a0dc6efea14b376c485ff99e98d810b8f786c4 languageName: node linkType: hard @@ -27298,7 +27298,7 @@ __metadata: resolution: "pkg-up@npm:3.1.0" dependencies: find-up: "npm:^3.0.0" - checksum: ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab + checksum: 10c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab languageName: node linkType: hard @@ -27307,7 +27307,7 @@ __metadata: resolution: "playwright-core@npm:1.41.1" bin: playwright-core: cli.js - checksum: cdd91267ca23e3f65d519100e956859c70e3e9ca29e3fe00e700b457903129e41dfa17752f1ea37ad0a8a7c6330baf9f3be503e4cbfa3e8833e80a037f899aee + checksum: 10c0/cdd91267ca23e3f65d519100e956859c70e3e9ca29e3fe00e700b457903129e41dfa17752f1ea37ad0a8a7c6330baf9f3be503e4cbfa3e8833e80a037f899aee languageName: node linkType: hard @@ -27322,14 +27322,14 @@ __metadata: optional: true bin: playwright: cli.js - checksum: 32d48c1f8ff881770a19c9245fb4191fc36b5e97ab5f48effa0b1cf5e83fa958f6fdd7e4268dd984aa306ac5fe9e4324510211910751fb52cebb9bae819d13ca + checksum: 10c0/32d48c1f8ff881770a19c9245fb4191fc36b5e97ab5f48effa0b1cf5e83fa958f6fdd7e4268dd984aa306ac5fe9e4324510211910751fb52cebb9bae819d13ca languageName: node linkType: hard "pluralize@npm:8.0.0": version: 8.0.0 resolution: "pluralize@npm:8.0.0" - checksum: 2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 + checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 languageName: node linkType: hard @@ -27338,7 +27338,7 @@ __metadata: resolution: "polished@npm:4.2.2" dependencies: "@babel/runtime": "npm:^7.17.8" - checksum: 1d054d1fea18ac7d921ca91504ffcf1ef0f505eda6acbfec6e205a98ebfea80b658664995deb35907dabc5f75f287dc2894812503a8aed28285bb91f25cf7400 + checksum: 10c0/1d054d1fea18ac7d921ca91504ffcf1ef0f505eda6acbfec6e205a98ebfea80b658664995deb35907dabc5f75f287dc2894812503a8aed28285bb91f25cf7400 languageName: node linkType: hard @@ -27349,14 +27349,14 @@ __metadata: async: "npm:^2.6.4" debug: "npm:^3.2.7" mkdirp: "npm:^0.5.6" - checksum: cef8b567b78aabccc59fe8e103bac8b394bb45a6a69be626608f099f454124c775aaf47b274c006332c07ab3f501cde55e49aaeb9d49d78d90362d776a565cbf + checksum: 10c0/cef8b567b78aabccc59fe8e103bac8b394bb45a6a69be626608f099f454124c775aaf47b274c006332c07ab3f501cde55e49aaeb9d49d78d90362d776a565cbf languageName: node linkType: hard "posix-character-classes@npm:^0.1.0": version: 0.1.1 resolution: "posix-character-classes@npm:0.1.1" - checksum: cce88011548a973b4af58361cd8f5f7b5a6faff8eef0901565802f067bcabf82597e920d4c97c22068464be3cbc6447af589f6cc8a7d813ea7165be60a0395bc + checksum: 10c0/cce88011548a973b4af58361cd8f5f7b5a6faff8eef0901565802f067bcabf82597e920d4c97c22068464be3cbc6447af589f6cc8a7d813ea7165be60a0395bc languageName: node linkType: hard @@ -27368,7 +27368,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.2 - checksum: e0df07337162dbcaac5d6e030c7fd289e21da8766a9daca5d6b2b3c8094bb524ae5d74c70048ea7fe5fe4960ce048c60ac97922d917c3bbff34f58e9d2b0eb0e + checksum: 10c0/e0df07337162dbcaac5d6e030c7fd289e21da8766a9daca5d6b2b3c8094bb524ae5d74c70048ea7fe5fe4960ce048c60ac97922d917c3bbff34f58e9d2b0eb0e languageName: node linkType: hard @@ -27382,7 +27382,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: b05763b68f7f23333f408734f13be4bde641934ecbde25ac7d7fa648ab5e826716bffac0193067b317e861c6dabad81db9c012e865a83f81b6bce5c7e25c0fdd + checksum: 10c0/b05763b68f7f23333f408734f13be4bde641934ecbde25ac7d7fa648ab5e826716bffac0193067b317e861c6dabad81db9c012e865a83f81b6bce5c7e25c0fdd languageName: node linkType: hard @@ -27394,7 +27394,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8c20d31a39e0ddf7db4fde0da62e293279b5ee84c36919f2e5760650fa6f2984f1a40bfdbe8d1f7829bd37b17e5e589535f0aaaf71d4df29ad203cef830b9d7a + checksum: 10c0/8c20d31a39e0ddf7db4fde0da62e293279b5ee84c36919f2e5760650fa6f2984f1a40bfdbe8d1f7829bd37b17e5e589535f0aaaf71d4df29ad203cef830b9d7a languageName: node linkType: hard @@ -27403,7 +27403,7 @@ __metadata: resolution: "postcss-discard-comments@npm:6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: c8792cd99c7696b21917d55937e02fb854a82ee308edf7564f18ad19bec4abf4756ba234e17f7d129d6b0dbaf6253bcddc435b1aeee190d4d26dcc2448f5453a + checksum: 10c0/c8792cd99c7696b21917d55937e02fb854a82ee308edf7564f18ad19bec4abf4756ba234e17f7d129d6b0dbaf6253bcddc435b1aeee190d4d26dcc2448f5453a languageName: node linkType: hard @@ -27412,7 +27412,7 @@ __metadata: resolution: "postcss-discard-duplicates@npm:6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 5fb0de3b187b09538a8c10f25bcc3e7b0865337a96a0599f8213864f0d52812f6c90142d170258293a30484b95e096dee28fc8fddb302016f93d4a8d269bb18f + checksum: 10c0/5fb0de3b187b09538a8c10f25bcc3e7b0865337a96a0599f8213864f0d52812f6c90142d170258293a30484b95e096dee28fc8fddb302016f93d4a8d269bb18f languageName: node linkType: hard @@ -27421,7 +27421,7 @@ __metadata: resolution: "postcss-discard-empty@npm:6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 5dfe01f93ee2bb85e71f7832498bd051b772b9c724a5630f749237b07a14b47c2b2800b4215ab4cf0d8cba29552725b40334f3ef9d349f7aacf410ad351715dc + checksum: 10c0/5dfe01f93ee2bb85e71f7832498bd051b772b9c724a5630f749237b07a14b47c2b2800b4215ab4cf0d8cba29552725b40334f3ef9d349f7aacf410ad351715dc languageName: node linkType: hard @@ -27430,7 +27430,7 @@ __metadata: resolution: "postcss-discard-overridden@npm:6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 3a0c91241a95a887ef10227c761fb2c48870966bda5530de635002e485abc2743dfbfdc96e3b6a21f10c6231f0cfbe1a0eae0a01a89629d64a711eab3ee008c6 + checksum: 10c0/3a0c91241a95a887ef10227c761fb2c48870966bda5530de635002e485abc2743dfbfdc96e3b6a21f10c6231f0cfbe1a0eae0a01a89629d64a711eab3ee008c6 languageName: node linkType: hard @@ -27442,7 +27442,7 @@ __metadata: stylehacks: "npm:^6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 0b67c590d301ab7f087ea7421e1eac0cccd2ff1c146a2dfa16d3f32b770d12a5999b8c6ea177efc443f4fb9df13b941c401365c634533878eef1982ad9d0bb98 + checksum: 10c0/0b67c590d301ab7f087ea7421e1eac0cccd2ff1c146a2dfa16d3f32b770d12a5999b8c6ea177efc443f4fb9df13b941c401365c634533878eef1982ad9d0bb98 languageName: node linkType: hard @@ -27456,7 +27456,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: b6a2a196905cd170757aa7b8bc74dab1fc7e2b2ca6a19c6d355fb7c41ff736023b4176c1008a7049f6a1b24a94a30d066c4e51229c1282a941f7fd6056085af7 + checksum: 10c0/b6a2a196905cd170757aa7b8bc74dab1fc7e2b2ca6a19c6d355fb7c41ff736023b4176c1008a7049f6a1b24a94a30d066c4e51229c1282a941f7fd6056085af7 languageName: node linkType: hard @@ -27467,7 +27467,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 6b74b1ec19bf76dcae7947c42145cb200b38767680512728f76168ae246db453798760e56111bd28ade9011d3655a79da4b33a93e5349f98fb0c1b22cc65ff36 + checksum: 10c0/6b74b1ec19bf76dcae7947c42145cb200b38767680512728f76168ae246db453798760e56111bd28ade9011d3655a79da4b33a93e5349f98fb0c1b22cc65ff36 languageName: node linkType: hard @@ -27480,7 +27480,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 59046acd470bee151291ba99421846d776c4ed243acb05a005e74f64f92b968d712d35e727f5e4a90e632d6d6aeb3a01083469f50bfdf1fb9ecae7f4ae52d9b8 + checksum: 10c0/59046acd470bee151291ba99421846d776c4ed243acb05a005e74f64f92b968d712d35e727f5e4a90e632d6d6aeb3a01083469f50bfdf1fb9ecae7f4ae52d9b8 languageName: node linkType: hard @@ -27493,7 +27493,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: d4d1469b7ad7fe53900eb19c156ec6dcfeaf71641d29ba4df31f47d8fa8ac700df5b8d3e3768e66d695d5356ed348cea901314653046c8e48422962f165a1933 + checksum: 10c0/d4d1469b7ad7fe53900eb19c156ec6dcfeaf71641d29ba4df31f47d8fa8ac700df5b8d3e3768e66d695d5356ed348cea901314653046c8e48422962f165a1933 languageName: node linkType: hard @@ -27504,7 +27504,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 1cdd3bd231cf25f54ab370d959f727dfcbe839a1d97bcfd65add9df73747a45d299a009ff16111bbe78943e8f81dcf5f84ae4106847b23dd3652de7aadc0b297 + checksum: 10c0/1cdd3bd231cf25f54ab370d959f727dfcbe839a1d97bcfd65add9df73747a45d299a009ff16111bbe78943e8f81dcf5f84ae4106847b23dd3652de7aadc0b297 languageName: node linkType: hard @@ -27513,7 +27513,7 @@ __metadata: resolution: "postcss-modules-extract-imports@npm:3.0.0" peerDependencies: postcss: ^8.1.0 - checksum: f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 + checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 languageName: node linkType: hard @@ -27526,7 +27526,7 @@ __metadata: postcss-value-parser: "npm:^4.1.0" peerDependencies: postcss: ^8.1.0 - checksum: be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 + checksum: 10c0/be49b86efbfb921f42287e227584aac91af9826fc1083db04958ae283dfe215ca539421bfba71f9da0f0b10651f28e95a64b5faca7166f578a1933b8646051f7 languageName: node linkType: hard @@ -27537,7 +27537,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.1.0 - checksum: 60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a + checksum: 10c0/60af503910363689568c2c3701cb019a61b58b3d739391145185eec211bea5d50ccb6ecbe6955b39d856088072fd50ea002e40a52b50e33b181ff5c41da0308a languageName: node linkType: hard @@ -27548,7 +27548,7 @@ __metadata: icss-utils: "npm:^5.0.0" peerDependencies: postcss: ^8.1.0 - checksum: dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc + checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc languageName: node linkType: hard @@ -27557,7 +27557,7 @@ __metadata: resolution: "postcss-normalize-charset@npm:6.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 5232eac7f62097b1d349546182af2db7db34989867c147517cd407ab23c8450558a7f858eb8dac130959dae2d02d3460c5afa510e0ffe22221cb218f2bd79adb + checksum: 10c0/5232eac7f62097b1d349546182af2db7db34989867c147517cd407ab23c8450558a7f858eb8dac130959dae2d02d3460c5afa510e0ffe22221cb218f2bd79adb languageName: node linkType: hard @@ -27568,7 +27568,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 58163258a52610fa0d2b61bd6e872b9a2b25da1f2209cbf34fad3b62a4139fff9e0e6b298dcd1adfe6ac556098aad8b79c387280f3a949180f8fb12e6b41fecf + checksum: 10c0/58163258a52610fa0d2b61bd6e872b9a2b25da1f2209cbf34fad3b62a4139fff9e0e6b298dcd1adfe6ac556098aad8b79c387280f3a949180f8fb12e6b41fecf languageName: node linkType: hard @@ -27579,7 +27579,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: de2ced6cfdf2931d7cbc8f9c96bb12487119dba1b454c7ac01fd19f7afdaa9bf6c63f59624281293379ead5a3d5e883007a3f192f02c40ab41528ccc5a399f5c + checksum: 10c0/de2ced6cfdf2931d7cbc8f9c96bb12487119dba1b454c7ac01fd19f7afdaa9bf6c63f59624281293379ead5a3d5e883007a3f192f02c40ab41528ccc5a399f5c languageName: node linkType: hard @@ -27590,7 +27590,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 1643132094067709ca7d1fa2beededd28565c83bc8a6c2a4dec879a97e1d425ca1293a8832a45732eef12b52960f024330cfb654a8a222fb7ea768a75989c31e + checksum: 10c0/1643132094067709ca7d1fa2beededd28565c83bc8a6c2a4dec879a97e1d425ca1293a8832a45732eef12b52960f024330cfb654a8a222fb7ea768a75989c31e languageName: node linkType: hard @@ -27601,7 +27601,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: d586ce274451229c6a3d625edef882b342ab7702babb632845c8c201c7bcc08481f282000d19d17edb7b5ef0b1982e715a16ab60990d124e937c4aef3304151e + checksum: 10c0/d586ce274451229c6a3d625edef882b342ab7702babb632845c8c201c7bcc08481f282000d19d17edb7b5ef0b1982e715a16ab60990d124e937c4aef3304151e languageName: node linkType: hard @@ -27612,7 +27612,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: a70742648cec15eea031096f2ad99c21c79228ce4c4ccc9f63c277c07e9e3add96298cc67b0b1797896507248153e0a662f85f490f53147ded7008b459dd5ba3 + checksum: 10c0/a70742648cec15eea031096f2ad99c21c79228ce4c4ccc9f63c277c07e9e3add96298cc67b0b1797896507248153e0a662f85f490f53147ded7008b459dd5ba3 languageName: node linkType: hard @@ -27624,7 +27624,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: cd9b06ed09c29ccc0b2cb222044d7ec49fb710fdd6f0878b26d7f3324478d8271a555ba3d82fc8d9fdcf8671a83c499cdfa09c0e73d4dee928adff4042ed8b22 + checksum: 10c0/cd9b06ed09c29ccc0b2cb222044d7ec49fb710fdd6f0878b26d7f3324478d8271a555ba3d82fc8d9fdcf8671a83c499cdfa09c0e73d4dee928adff4042ed8b22 languageName: node linkType: hard @@ -27635,7 +27635,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 719a7feee4adf638cc0b4bc204d89485388ca81f0ad0a181a225122f488f956abd29f429d69e5a57fffe93fbd2a22eab7737bd8b55b19979efba26e008b2ec11 + checksum: 10c0/719a7feee4adf638cc0b4bc204d89485388ca81f0ad0a181a225122f488f956abd29f429d69e5a57fffe93fbd2a22eab7737bd8b55b19979efba26e008b2ec11 languageName: node linkType: hard @@ -27646,7 +27646,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 8421dd5813c1e555d7c2847dd8b71a5138ee2091341ebd1ea686d5b00cd46d249a29027e142289f873ca7f5fc995b51eb68f9693fec6d61cf951c759d109c37d + checksum: 10c0/8421dd5813c1e555d7c2847dd8b71a5138ee2091341ebd1ea686d5b00cd46d249a29027e142289f873ca7f5fc995b51eb68f9693fec6d61cf951c759d109c37d languageName: node linkType: hard @@ -27658,7 +27658,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: b01352b0ea014e0037a5b8b3bd866696924bfb2cf3b47b73547786a1954e6771c04790fbe4c651bf029bafdbfde70f49e611f9ef309e945f753425841f343017 + checksum: 10c0/b01352b0ea014e0037a5b8b3bd866696924bfb2cf3b47b73547786a1954e6771c04790fbe4c651bf029bafdbfde70f49e611f9ef309e945f753425841f343017 languageName: node linkType: hard @@ -27670,7 +27670,7 @@ __metadata: caniuse-api: "npm:^3.0.0" peerDependencies: postcss: ^8.2.15 - checksum: 7cf6340bde9f70c7d9b20bc3ee53e883bf27ed56fcc3bb2a2c736b311d977098a7c3a6b9e4be4d2c159d0042bf7742bb5af59628cd89cf838968dacc5ae15c80 + checksum: 10c0/7cf6340bde9f70c7d9b20bc3ee53e883bf27ed56fcc3bb2a2c736b311d977098a7c3a6b9e4be4d2c159d0042bf7742bb5af59628cd89cf838968dacc5ae15c80 languageName: node linkType: hard @@ -27681,7 +27681,7 @@ __metadata: postcss-value-parser: "npm:^4.2.0" peerDependencies: postcss: ^8.2.15 - checksum: 6da900d22dd8760b8a2ace32013036e3c4c4d9d560c31255eceea54563e3ddb2ca830bc9072fe2a1abacb8c48a008656887fc2f6ba1873e590342ad8e6bc269d + checksum: 10c0/6da900d22dd8760b8a2ace32013036e3c4c4d9d560c31255eceea54563e3ddb2ca830bc9072fe2a1abacb8c48a008656887fc2f6ba1873e590342ad8e6bc269d languageName: node linkType: hard @@ -27691,7 +27691,7 @@ __metadata: dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 51f099b27f7c7198ea1826470ef0adfa58b3bd3f59b390fda123baa0134880a5fa9720137b6009c4c1373357b144f700b0edac73335d0067422063129371444e + checksum: 10c0/51f099b27f7c7198ea1826470ef0adfa58b3bd3f59b390fda123baa0134880a5fa9720137b6009c4c1373357b144f700b0edac73335d0067422063129371444e languageName: node linkType: hard @@ -27703,7 +27703,7 @@ __metadata: svgo: "npm:^3.0.2" peerDependencies: postcss: ^8.2.15 - checksum: ec567cd5e982e3c0393695628bc508b87dcfe4e4b2049930e79e6c629c349fad19403f0d39d76ceda3e0f15ffd065304e76152f397fae2f3f848cdb847a0b564 + checksum: 10c0/ec567cd5e982e3c0393695628bc508b87dcfe4e4b2049930e79e6c629c349fad19403f0d39d76ceda3e0f15ffd065304e76152f397fae2f3f848cdb847a0b564 languageName: node linkType: hard @@ -27714,14 +27714,14 @@ __metadata: postcss-selector-parser: "npm:^6.0.5" peerDependencies: postcss: ^8.2.15 - checksum: 63e81a7965ff8874fdf39ef0ae0f12cc21352548733538f52eda73f0ed5a7fab7fda9090facf50395d07873c5a6f02d31a6171fd476c80858b03090ec4c61d31 + checksum: 10c0/63e81a7965ff8874fdf39ef0ae0f12cc21352548733538f52eda73f0ed5a7fab7fda9090facf50395d07873c5a6f02d31a6171fd476c80858b03090ec4c61d31 languageName: node linkType: hard "postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" - checksum: f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 languageName: node linkType: hard @@ -27732,28 +27732,28 @@ __metadata: nanoid: "npm:^3.3.7" picocolors: "npm:^1.0.0" source-map-js: "npm:^1.0.2" - checksum: 16eda83458fcd8a91bece287b5920c7f57164c3ea293e6c80d0ea71ce7843007bcd8592260a5160b9a7f02693e6ac93e2495b02d8c7596d3f3f72c1447e3ba79 + checksum: 10c0/16eda83458fcd8a91bece287b5920c7f57164c3ea293e6c80d0ea71ce7843007bcd8592260a5160b9a7f02693e6ac93e2495b02d8c7596d3f3f72c1447e3ba79 languageName: node linkType: hard "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" - checksum: b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd languageName: node linkType: hard "prelude-ls@npm:~1.1.2": version: 1.1.2 resolution: "prelude-ls@npm:1.1.2" - checksum: 7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 + checksum: 10c0/7284270064f74e0bb7f04eb9bff7be677e4146417e599ccc9c1200f0f640f8b11e592d94eb1b18f7aa9518031913bb42bea9c86af07ba69902864e61005d6f18 languageName: node linkType: hard "prepend-http@npm:^2.0.0": version: 2.0.0 resolution: "prepend-http@npm:2.0.0" - checksum: b023721ffd967728e3a25e3a80dd73827e9444e586800ab90a21b3a8e67f362d28023085406ad53a36db1e4d98cb10e43eb37d45c6b733140a9165ead18a0987 + checksum: 10c0/b023721ffd967728e3a25e3a80dd73827e9444e586800ab90a21b3a8e67f362d28023085406ad53a36db1e4d98cb10e43eb37d45c6b733140a9165ead18a0987 languageName: node linkType: hard @@ -27762,7 +27762,7 @@ __metadata: resolution: "prettier-linter-helpers@npm:1.0.0" dependencies: fast-diff: "npm:^1.1.2" - checksum: 81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab languageName: node linkType: hard @@ -27771,14 +27771,14 @@ __metadata: resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js - checksum: 463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a languageName: node linkType: hard "pretty-bytes@npm:5.6.0, pretty-bytes@npm:^5.6.0": version: 5.6.0 resolution: "pretty-bytes@npm:5.6.0" - checksum: f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 + checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 languageName: node linkType: hard @@ -27788,7 +27788,7 @@ __metadata: dependencies: lodash: "npm:^4.17.20" renderkid: "npm:^3.0.0" - checksum: dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 + checksum: 10c0/dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 languageName: node linkType: hard @@ -27799,7 +27799,7 @@ __metadata: ansi-regex: "npm:^5.0.1" ansi-styles: "npm:^5.0.0" react-is: "npm:^17.0.1" - checksum: 0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed languageName: node linkType: hard @@ -27810,14 +27810,14 @@ __metadata: "@jest/schemas": "npm:^29.6.3" ansi-styles: "npm:^5.0.0" react-is: "npm:^18.0.0" - checksum: edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f languageName: node linkType: hard "pretty-hrtime@npm:^1.0.3": version: 1.0.3 resolution: "pretty-hrtime@npm:1.0.3" - checksum: 67cb3fc283a72252b49ac488647e6a01b78b7aa1b8f2061834aa1650691229081518ef3ca940f77f41cc8a8f02ba9eeb74b843481596670209e493062f2e89e0 + checksum: 10c0/67cb3fc283a72252b49ac488647e6a01b78b7aa1b8f2061834aa1650691229081518ef3ca940f77f41cc8a8f02ba9eeb74b843481596670209e493062f2e89e0 languageName: node linkType: hard @@ -27826,7 +27826,7 @@ __metadata: resolution: "pretty-ms@npm:7.0.1" dependencies: parse-ms: "npm:^2.1.0" - checksum: 069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c + checksum: 10c0/069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c languageName: node linkType: hard @@ -27837,14 +27837,14 @@ __metadata: condense-newlines: "npm:^0.2.1" extend-shallow: "npm:^2.0.1" js-beautify: "npm:^1.6.12" - checksum: 2fcd72f331d0afae3893ba88a5c05f6fdd62b059cb309028aa3309fc8a90410d81dfe66ae95677bc6d6d4a68f3cc1a247c13e5872bd35686f99acb33acc51164 + checksum: 10c0/2fcd72f331d0afae3893ba88a5c05f6fdd62b059cb309028aa3309fc8a90410d81dfe66ae95677bc6d6d4a68f3cc1a247c13e5872bd35686f99acb33acc51164 languageName: node linkType: hard "printable-characters@npm:^1.0.42": version: 1.0.42 resolution: "printable-characters@npm:1.0.42" - checksum: 7c94d94c6041a37c385af770c7402ad5a2e8a3429ca4d2505a9f19fde39bac9a8fd1edfbfa02f1eae5b4b0f3536b6b8ee6c84621f7c0fcb41476b2df6ee20e4b + checksum: 10c0/7c94d94c6041a37c385af770c7402ad5a2e8a3429ca4d2505a9f19fde39bac9a8fd1edfbfa02f1eae5b4b0f3536b6b8ee6c84621f7c0fcb41476b2df6ee20e4b languageName: node linkType: hard @@ -27855,70 +27855,70 @@ __metadata: "@prisma/engines": "npm:5.9.1" bin: prisma: build/index.js - checksum: f934bd94bea6863902d8abe2711fd7655ed25da267f92f33eef763a20c325e98e63111613b645ba6ae241e8add652aa598dd61ada560a40dcc47572229bb9960 + checksum: 10c0/f934bd94bea6863902d8abe2711fd7655ed25da267f92f33eef763a20c325e98e63111613b645ba6ae241e8add652aa598dd61ada560a40dcc47572229bb9960 languageName: node linkType: hard "proc-log@npm:^3.0.0": version: 3.0.0 resolution: "proc-log@npm:3.0.0" - checksum: f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc languageName: node linkType: hard "process-nextick-args@npm:~2.0.0": version: 2.0.1 resolution: "process-nextick-args@npm:2.0.1" - checksum: bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 languageName: node linkType: hard "process-warning@npm:^2.0.0": version: 2.3.2 resolution: "process-warning@npm:2.3.2" - checksum: 6bccf187f604dd63067ae8b5a08f658d1cc5df4948a51525691a564ad9250575802c094dd5d1b69f015934fe5df6d925f2e607d7a589918069129b07a777aa7b + checksum: 10c0/6bccf187f604dd63067ae8b5a08f658d1cc5df4948a51525691a564ad9250575802c094dd5d1b69f015934fe5df6d925f2e607d7a589918069129b07a777aa7b languageName: node linkType: hard "process-warning@npm:^3.0.0": version: 3.0.0 resolution: "process-warning@npm:3.0.0" - checksum: 60f3c8ddee586f0706c1e6cb5aa9c86df05774b9330d792d7c8851cf0031afd759d665404d07037e0b4901b55c44a423f07bdc465c63de07d8d23196bb403622 + checksum: 10c0/60f3c8ddee586f0706c1e6cb5aa9c86df05774b9330d792d7c8851cf0031afd759d665404d07037e0b4901b55c44a423f07bdc465c63de07d8d23196bb403622 languageName: node linkType: hard "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" - checksum: 40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 languageName: node linkType: hard "progress@npm:^2.0.1": version: 2.0.3 resolution: "progress@npm:2.0.3" - checksum: 1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c + checksum: 10c0/1697e07cb1068055dbe9fe858d242368ff5d2073639e652b75a7eb1f2a1a8d4afd404d719de23c7b48481a6aa0040686310e2dac2f53d776daa2176d3f96369c languageName: node linkType: hard "promise-all-reject-late@npm:^1.0.0": version: 1.0.1 resolution: "promise-all-reject-late@npm:1.0.1" - checksum: f1af0c7b0067e84d64751148ee5bb6c3e84f4a4d1316d6fe56261e1d2637cf71b49894bcbd2c6daf7d45afb1bc99efc3749be277c3e0518b70d0c5a29d037011 + checksum: 10c0/f1af0c7b0067e84d64751148ee5bb6c3e84f4a4d1316d6fe56261e1d2637cf71b49894bcbd2c6daf7d45afb1bc99efc3749be277c3e0518b70d0c5a29d037011 languageName: node linkType: hard "promise-call-limit@npm:^1.0.2": version: 1.0.2 resolution: "promise-call-limit@npm:1.0.2" - checksum: 500aed321d7b9212da403db369551d7190c96c8937c3b2d15c6097d1037b17fb802c7decfbc8ba6bb937f1cc1ea291e5eba10ed9ea76adc0f398ab9f7d174a58 + checksum: 10c0/500aed321d7b9212da403db369551d7190c96c8937c3b2d15c6097d1037b17fb802c7decfbc8ba6bb937f1cc1ea291e5eba10ed9ea76adc0f398ab9f7d174a58 languageName: node linkType: hard "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" - checksum: d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc languageName: node linkType: hard @@ -27928,7 +27928,7 @@ __metadata: dependencies: err-code: "npm:^2.0.2" retry: "npm:^0.12.0" - checksum: 9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 languageName: node linkType: hard @@ -27937,7 +27937,7 @@ __metadata: resolution: "promise@npm:7.3.1" dependencies: asap: "npm:~2.0.3" - checksum: 742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f + checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f languageName: node linkType: hard @@ -27947,7 +27947,7 @@ __metadata: dependencies: kleur: "npm:^3.0.3" sisteransi: "npm:^1.0.5" - checksum: 16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 languageName: node linkType: hard @@ -27956,7 +27956,7 @@ __metadata: resolution: "promzard@npm:1.0.0" dependencies: read: "npm:^2.0.0" - checksum: b86458738f308cc6fb04f1091479d4b5f03da5f8b43aa9c78134e6305461c4c6407766aeb1d427de614b1dc54d2e661dbbf12b2bfbdd74770d990d09707c498c + checksum: 10c0/b86458738f308cc6fb04f1091479d4b5f03da5f8b43aa9c78134e6305461c4c6407766aeb1d427de614b1dc54d2e661dbbf12b2bfbdd74770d990d09707c498c languageName: node linkType: hard @@ -27967,14 +27967,14 @@ __metadata: loose-envify: "npm:^1.4.0" object-assign: "npm:^4.1.1" react-is: "npm:^16.13.1" - checksum: 59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 languageName: node linkType: hard "proto-list@npm:~1.2.1": version: 1.2.4 resolution: "proto-list@npm:1.2.4" - checksum: b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 + checksum: 10c0/b9179f99394ec8a68b8afc817690185f3b03933f7b46ce2e22c1930dc84b60d09f5ad222beab4e59e58c6c039c7f7fcf620397235ef441a356f31f9744010e12 languageName: node linkType: hard @@ -27983,7 +27983,7 @@ __metadata: resolution: "proto3-json-serializer@npm:1.1.1" dependencies: protobufjs: "npm:^7.0.0" - checksum: bc8de2a4798bd344084a7e710421ffd9a4c6b909e8f724b213b7a93d7818c98beed03a93d3e40f9897609e4390d3e47129ae5a2a1c0908e7167a4d34d52b960b + checksum: 10c0/bc8de2a4798bd344084a7e710421ffd9a4c6b909e8f724b213b7a93d7818c98beed03a93d3e40f9897609e4390d3e47129ae5a2a1c0908e7167a4d34d52b960b languageName: node linkType: hard @@ -28006,7 +28006,7 @@ __metadata: bin: pbjs: bin/pbjs pbts: bin/pbts - checksum: 50ab15abf741e7008d2bd88881ac5760d33c07bbe1b28f5460bf74722c2f152c35671b77b5365fc3e6b83e392b44c2e354b227c307fdd870598d7220214b5f87 + checksum: 10c0/50ab15abf741e7008d2bd88881ac5760d33c07bbe1b28f5460bf74722c2f152c35671b77b5365fc3e6b83e392b44c2e354b227c307fdd870598d7220214b5f87 languageName: node linkType: hard @@ -28026,7 +28026,7 @@ __metadata: "@protobufjs/utf8": "npm:^1.1.0" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: 7610b4e3b961e7637e8f61099931161af7f47f8b88b4a0d55124158f9b7fbe6e8fdfe551803b0c65fefad9d58d49332f0b5b4aa5826d8dcd8b062c351cbe2ebb + checksum: 10c0/7610b4e3b961e7637e8f61099931161af7f47f8b88b4a0d55124158f9b7fbe6e8fdfe551803b0c65fefad9d58d49332f0b5b4aa5826d8dcd8b062c351cbe2ebb languageName: node linkType: hard @@ -28046,14 +28046,14 @@ __metadata: "@protobufjs/utf8": "npm:^1.1.0" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: e164855536a43aa7941c7d95a2342e466f599d2e033ed89c5f5582fb0e3affeec702810091b850f3b700bfd646260b07bb4d8bb94c107cddcecd92de4d1d62fd + checksum: 10c0/e164855536a43aa7941c7d95a2342e466f599d2e033ed89c5f5582fb0e3affeec702810091b850f3b700bfd646260b07bb4d8bb94c107cddcecd92de4d1d62fd languageName: node linkType: hard "protocols@npm:^2.0.0, protocols@npm:^2.0.1": version: 2.0.1 resolution: "protocols@npm:2.0.1" - checksum: 016cc58a596e401004a028a2f7005e3444bf89ee8f606409c411719374d1e8bba0464fc142a065cce0d19f41669b2f7ffe25a8bde4f16ce3b6eb01fabc51f2e7 + checksum: 10c0/016cc58a596e401004a028a2f7005e3444bf89ee8f606409c411719374d1e8bba0464fc142a065cce0d19f41669b2f7ffe25a8bde4f16ce3b6eb01fabc51f2e7 languageName: node linkType: hard @@ -28063,21 +28063,21 @@ __metadata: dependencies: forwarded: "npm:0.2.0" ipaddr.js: "npm:1.9.1" - checksum: c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 languageName: node linkType: hard "proxy-from-env@npm:1.0.0": version: 1.0.0 resolution: "proxy-from-env@npm:1.0.0" - checksum: c64df9b21f7f820dc882cd6f7f81671840acd28b9688ee3e3e6af47a56ec7f0edcabe5bc96b32b26218b35eeff377bcc27ac27f89b6b21401003e187ff13256f + checksum: 10c0/c64df9b21f7f820dc882cd6f7f81671840acd28b9688ee3e3e6af47a56ec7f0edcabe5bc96b32b26218b35eeff377bcc27ac27f89b6b21401003e187ff13256f languageName: node linkType: hard "proxy-from-env@npm:^1.0.0, proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" - checksum: fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b + checksum: 10c0/fe7dd8b1bdbbbea18d1459107729c3e4a2243ca870d26d34c2c1bcd3e4425b7bcc5112362df2d93cc7fb9746f6142b5e272fd1cc5c86ddf8580175186f6ad42b languageName: node linkType: hard @@ -28088,14 +28088,14 @@ __metadata: fill-keys: "npm:^1.0.2" module-not-found-error: "npm:^1.0.1" resolve: "npm:^1.11.1" - checksum: f2e57670ed57ef047720516f0ad2f88bfdba4aaa54139bf5d7fe6ec84bf91ec932f402c56439b44d3596743fd9405be4aac99a924eb897e3396c5be1a81672b0 + checksum: 10c0/f2e57670ed57ef047720516f0ad2f88bfdba4aaa54139bf5d7fe6ec84bf91ec932f402c56439b44d3596743fd9405be4aac99a924eb897e3396c5be1a81672b0 languageName: node linkType: hard "prr@npm:~1.0.1": version: 1.0.1 resolution: "prr@npm:1.0.1" - checksum: 5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f + checksum: 10c0/5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f languageName: node linkType: hard @@ -28106,28 +28106,28 @@ __metadata: event-stream: "npm:=3.3.4" bin: ps-tree: ./bin/ps-tree.js - checksum: 9d1c159e0890db5aa05f84d125193c2190a6c4ecd457596fd25e7611f8f747292a846459dcc0244e27d45529d4cea6d1010c3a2a087fad02624d12fdb7d97c22 + checksum: 10c0/9d1c159e0890db5aa05f84d125193c2190a6c4ecd457596fd25e7611f8f747292a846459dcc0244e27d45529d4cea6d1010c3a2a087fad02624d12fdb7d97c22 languageName: node linkType: hard "pseudomap@npm:^1.0.1": version: 1.0.2 resolution: "pseudomap@npm:1.0.2" - checksum: 5a91ce114c64ed3a6a553aa7d2943868811377388bb31447f9d8028271bae9b05b340fe0b6961a64e45b9c72946aeb0a4ab635e8f7cb3715ffd0ff2beeb6a679 + checksum: 10c0/5a91ce114c64ed3a6a553aa7d2943868811377388bb31447f9d8028271bae9b05b340fe0b6961a64e45b9c72946aeb0a4ab635e8f7cb3715ffd0ff2beeb6a679 languageName: node linkType: hard "psl@npm:^1.1.33": version: 1.9.0 resolution: "psl@npm:1.9.0" - checksum: 6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab languageName: node linkType: hard "pstree.remy@npm:^1.1.8": version: 1.1.8 resolution: "pstree.remy@npm:1.1.8" - checksum: 30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 + checksum: 10c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 languageName: node linkType: hard @@ -28141,7 +28141,7 @@ __metadata: parse-asn1: "npm:^5.0.0" randombytes: "npm:^2.0.1" safe-buffer: "npm:^5.1.2" - checksum: 6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 languageName: node linkType: hard @@ -28151,7 +28151,7 @@ __metadata: dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: f1fe8960f44d145f8617ea4c67de05392da4557052980314c8f85081aee26953bdcab64afad58a2b1df0e8ff7203e3710e848cbe81a01027978edc6e264db355 + checksum: 10c0/f1fe8960f44d145f8617ea4c67de05392da4557052980314c8f85081aee26953bdcab64afad58a2b1df0e8ff7203e3710e848cbe81a01027978edc6e264db355 languageName: node linkType: hard @@ -28161,7 +28161,7 @@ __metadata: dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 + checksum: 10c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 languageName: node linkType: hard @@ -28172,28 +28172,28 @@ __metadata: duplexify: "npm:^3.6.0" inherits: "npm:^2.0.3" pump: "npm:^2.0.0" - checksum: 0bcabf9e3dbf2d0cc1f9b84ac80d3c75386111caf8963bfd98817a1e2192000ac0ccc804ca6ccd5b2b8430fdb71347b20fb2f014fe3d41adbacb1b502a841c45 + checksum: 10c0/0bcabf9e3dbf2d0cc1f9b84ac80d3c75386111caf8963bfd98817a1e2192000ac0ccc804ca6ccd5b2b8430fdb71347b20fb2f014fe3d41adbacb1b502a841c45 languageName: node linkType: hard "punycode@npm:1.3.2": version: 1.3.2 resolution: "punycode@npm:1.3.2" - checksum: 281fd20eaf4704f79d80cb0dc65065bf6452ee67989b3e8941aed6360a5a9a8a01d3e2ed71d0bde3cd74fb5a5dd9db4160bed5a8c20bed4b6764c24ce4c7d2d2 + checksum: 10c0/281fd20eaf4704f79d80cb0dc65065bf6452ee67989b3e8941aed6360a5a9a8a01d3e2ed71d0bde3cd74fb5a5dd9db4160bed5a8c20bed4b6764c24ce4c7d2d2 languageName: node linkType: hard "punycode@npm:^1.2.4, punycode@npm:^1.3.2, punycode@npm:^1.4.1": version: 1.4.1 resolution: "punycode@npm:1.4.1" - checksum: 354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 languageName: node linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.0 resolution: "punycode@npm:2.3.0" - checksum: 8e6f7abdd3a6635820049e3731c623bbef3fedbf63bbc696b0d7237fdba4cefa069bc1fa62f2938b0fbae057550df7b5318f4a6bcece27f1907fc75c54160bee + checksum: 10c0/8e6f7abdd3a6635820049e3731c623bbef3fedbf63bbc696b0d7237fdba4cefa069bc1fa62f2938b0fbae057550df7b5318f4a6bcece27f1907fc75c54160bee languageName: node linkType: hard @@ -28211,14 +28211,14 @@ __metadata: proxy-from-env: "npm:^1.0.0" rimraf: "npm:^2.6.1" ws: "npm:^6.1.0" - checksum: 29a73c2327e208e6528bac05f841b3340ee1a8d7bd59e7b235c9d8b3c0bf266804ad1aa901a0e4a1d66ce4202646f242988c3c5c4dfb105e9ad082bf4aae69be + checksum: 10c0/29a73c2327e208e6528bac05f841b3340ee1a8d7bd59e7b235c9d8b3c0bf266804ad1aa901a0e4a1d66ce4202646f242988c3c5c4dfb105e9ad082bf4aae69be languageName: node linkType: hard "pure-rand@npm:^6.0.0": version: 6.0.2 resolution: "pure-rand@npm:6.0.2" - checksum: 0556bee2e16a8d081a2b7630d9cb4e5dafd4e6bd6e4c61de1cf1ef5974f127847523e3d0e62884f6f5d64b66a5e93b05bd8f37ed009f3a4fe5089899e05914aa + checksum: 10c0/0556bee2e16a8d081a2b7630d9cb4e5dafd4e6bd6e4c61de1cf1ef5974f127847523e3d0e62884f6f5d64b66a5e93b05bd8f37ed009f3a4fe5089899e05914aa languageName: node linkType: hard @@ -28227,14 +28227,14 @@ __metadata: resolution: "pvtsutils@npm:1.3.2" dependencies: tslib: "npm:^2.4.0" - checksum: bb10fd980841134835878eac56acbc082d05371c8cd9a1c3f7fc8831a22022fc34fa60e3a1a0bc3bdcb5c26f42fa4f9723be1b7bb7077a74fcb350444cf5e883 + checksum: 10c0/bb10fd980841134835878eac56acbc082d05371c8cd9a1c3f7fc8831a22022fc34fa60e3a1a0bc3bdcb5c26f42fa4f9723be1b7bb7077a74fcb350444cf5e883 languageName: node linkType: hard "pvutils@npm:^1.1.3": version: 1.1.3 resolution: "pvutils@npm:1.1.3" - checksum: 23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac + checksum: 10c0/23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac languageName: node linkType: hard @@ -28243,7 +28243,7 @@ __metadata: resolution: "qs@npm:6.10.4" dependencies: side-channel: "npm:^1.0.4" - checksum: 7a8c9d77968aeccb769aedd7e047c0e0109dad0cfa57cab1ad906f4069fd58f361b80abd2de5854ba9a09b4c5d06d6a2c82108766f1f1527572fe6130deaa471 + checksum: 10c0/7a8c9d77968aeccb769aedd7e047c0e0109dad0cfa57cab1ad906f4069fd58f361b80abd2de5854ba9a09b4c5d06d6a2c82108766f1f1527572fe6130deaa471 languageName: node linkType: hard @@ -28252,7 +28252,7 @@ __metadata: resolution: "qs@npm:6.11.0" dependencies: side-channel: "npm:^1.0.4" - checksum: 4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f + checksum: 10c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f languageName: node linkType: hard @@ -28261,70 +28261,70 @@ __metadata: resolution: "qs@npm:6.11.2" dependencies: side-channel: "npm:^1.0.4" - checksum: 4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 + checksum: 10c0/4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 languageName: node linkType: hard "querystring-es3@npm:^0.2.0": version: 0.2.1 resolution: "querystring-es3@npm:0.2.1" - checksum: 476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 + checksum: 10c0/476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 languageName: node linkType: hard "querystring@npm:0.2.0": version: 0.2.0 resolution: "querystring@npm:0.2.0" - checksum: 2036c9424beaacd3978bac9e4ba514331cc73163bea7bf3ad7e2c7355e55501938ec195312c607753f9c6e70b1bf9dfcda38db6241bd299c034e27ac639d64ed + checksum: 10c0/2036c9424beaacd3978bac9e4ba514331cc73163bea7bf3ad7e2c7355e55501938ec195312c607753f9c6e70b1bf9dfcda38db6241bd299c034e27ac639d64ed languageName: node linkType: hard "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" - checksum: 3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa languageName: node linkType: hard "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" - checksum: 900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 languageName: node linkType: hard "queue-tick@npm:^1.0.1": version: 1.0.1 resolution: "queue-tick@npm:1.0.1" - checksum: 0db998e2c9b15215317dbcf801e9b23e6bcde4044e115155dae34f8e7454b9a783f737c9a725528d677b7a66c775eb7a955cf144fe0b87f62b575ce5bfd515a9 + checksum: 10c0/0db998e2c9b15215317dbcf801e9b23e6bcde4044e115155dae34f8e7454b9a783f737c9a725528d677b7a66c775eb7a955cf144fe0b87f62b575ce5bfd515a9 languageName: node linkType: hard "quick-format-unescaped@npm:^4.0.3": version: 4.0.4 resolution: "quick-format-unescaped@npm:4.0.4" - checksum: fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 languageName: node linkType: hard "quick-lru@npm:^4.0.1": version: 4.0.1 resolution: "quick-lru@npm:4.0.1" - checksum: f9b1596fa7595a35c2f9d913ac312fede13d37dc8a747a51557ab36e11ce113bbe88ef4c0154968845559a7709cb6a7e7cbe75f7972182451cd45e7f057a334d + checksum: 10c0/f9b1596fa7595a35c2f9d913ac312fede13d37dc8a747a51557ab36e11ce113bbe88ef4c0154968845559a7709cb6a7e7cbe75f7972182451cd45e7f057a334d languageName: node linkType: hard "quick-lru@npm:^5.1.1": version: 5.1.1 resolution: "quick-lru@npm:5.1.1" - checksum: a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da + checksum: 10c0/a24cba5da8cec30d70d2484be37622580f64765fb6390a928b17f60cd69e8dbd32a954b3ff9176fa1b86d86ff2ba05252fae55dc4d40d0291c60412b0ad096da languageName: node linkType: hard "ramda@npm:0.29.0": version: 0.29.0 resolution: "ramda@npm:0.29.0" - checksum: b00eaaf1c62b06a99affa1d583e256bd65ad27ab9d0ef512f55d7d93b842e7cd244a4a09179f61fdd8548362e409323867a2b0477cbd0626b5644eb6ac7c53da + checksum: 10c0/b00eaaf1c62b06a99affa1d583e256bd65ad27ab9d0ef512f55d7d93b842e7cd244a4a09179f61fdd8548362e409323867a2b0477cbd0626b5644eb6ac7c53da languageName: node linkType: hard @@ -28333,7 +28333,7 @@ __metadata: resolution: "randombytes@npm:2.1.0" dependencies: safe-buffer: "npm:^5.1.0" - checksum: 50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 languageName: node linkType: hard @@ -28343,14 +28343,14 @@ __metadata: dependencies: randombytes: "npm:^2.0.5" safe-buffer: "npm:^5.1.0" - checksum: 11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c languageName: node linkType: hard "range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" - checksum: 96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 languageName: node linkType: hard @@ -28362,7 +28362,7 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" unpipe: "npm:1.0.0" - checksum: 5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 + checksum: 10c0/5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 languageName: node linkType: hard @@ -28374,7 +28374,7 @@ __metadata: http-errors: "npm:2.0.0" iconv-lite: "npm:0.4.24" unpipe: "npm:1.0.0" - checksum: b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 + checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 languageName: node linkType: hard @@ -28388,7 +28388,7 @@ __metadata: strip-json-comments: "npm:~2.0.1" bin: rc: ./cli.js - checksum: 24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 languageName: node linkType: hard @@ -28398,7 +28398,7 @@ __metadata: peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 48eb73cf71e10841c2a61b6b06ab81da9fffa9876134c239bfdebcf348ce2a47e56b146338e35dfb03512c85966bfc9a53844fc56bc50154e71f8daee59ff6f0 + checksum: 10c0/48eb73cf71e10841c2a61b6b06ab81da9fffa9876134c239bfdebcf348ce2a47e56b146338e35dfb03512c85966bfc9a53844fc56bc50154e71f8daee59ff6f0 languageName: node linkType: hard @@ -28407,7 +28407,7 @@ __metadata: resolution: "react-docgen-typescript@npm:2.2.2" peerDependencies: typescript: ">= 4.3.x" - checksum: d31a061a21b5d4b67d4af7bc742541fd9e16254bd32861cd29c52565bc2175f40421a3550d52b6a6b0d0478e7cc408558eb0060a0bdd2957b02cfceeb0ee1e88 + checksum: 10c0/d31a061a21b5d4b67d4af7bc742541fd9e16254bd32861cd29c52565bc2175f40421a3550d52b6a6b0d0478e7cc408558eb0060a0bdd2957b02cfceeb0ee1e88 languageName: node linkType: hard @@ -28425,7 +28425,7 @@ __metadata: doctrine: "npm:^3.0.0" resolve: "npm:^1.22.1" strip-indent: "npm:^4.0.0" - checksum: 870c1193211f14497bf7a96137f96840dc058842ca75ff7251d91e88c3c71d7a41d5f1a124cc1b53bfbf1f2b6b58bfccc4dd6e22592814a5155d3894953274be + checksum: 10c0/870c1193211f14497bf7a96137f96840dc058842ca75ff7251d91e88c3c71d7a41d5f1a124cc1b53bfbf1f2b6b58bfccc4dd6e22592814a5155d3894953274be languageName: node linkType: hard @@ -28437,7 +28437,7 @@ __metadata: scheduler: "npm:^0.23.0" peerDependencies: react: ^18.2.0 - checksum: 66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a languageName: node linkType: hard @@ -28451,14 +28451,14 @@ __metadata: peerDependencies: react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 - checksum: 0d60a0ea758529c32a706d0c69d70b69fb94de3c46442fffdee34f08f51ffceddbb5395b41dfd1565895653e9f60f98ca525835be9d5db1f16d6b22be12f4cd4 + checksum: 10c0/0d60a0ea758529c32a706d0c69d70b69fb94de3c46442fffdee34f08f51ffceddbb5395b41dfd1565895653e9f60f98ca525835be9d5db1f16d6b22be12f4cd4 languageName: node linkType: hard "react-fast-compare@npm:^3.2.2": version: 3.2.2 resolution: "react-fast-compare@npm:3.2.2" - checksum: 0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 + checksum: 10c0/0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 languageName: node linkType: hard @@ -28472,7 +28472,7 @@ __metadata: peerDependencies: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - checksum: 3ac58fac566e3f4951c3853975afd57dbc3af1442a897391a226fb1a54cc757506912d13485e897c61ecefe5d97e673ee91688b11ff20eb769b172c0309514ee + checksum: 10c0/3ac58fac566e3f4951c3853975afd57dbc3af1442a897391a226fb1a54cc757506912d13485e897c61ecefe5d97e673ee91688b11ff20eb769b172c0309514ee languageName: node linkType: hard @@ -28481,7 +28481,7 @@ __metadata: resolution: "react-hook-form@npm:7.49.3" peerDependencies: react: ^16.8.0 || ^17 || ^18 - checksum: f8e5b2dcc3d97c820b4fbac262d7e914d74f385f26f34da31b8efc6c0f32ba995f2a2330bdfd3d8b7c8b56a52349a0cbc0c0dbe9053b3971e5e0c78003dfb7f0 + checksum: 10c0/f8e5b2dcc3d97c820b4fbac262d7e914d74f385f26f34da31b8efc6c0f32ba995f2a2330bdfd3d8b7c8b56a52349a0cbc0c0dbe9053b3971e5e0c78003dfb7f0 languageName: node linkType: hard @@ -28493,42 +28493,42 @@ __metadata: peerDependencies: react: ">=16" react-dom: ">=16" - checksum: 591ecec3c6adc1cdb70f00165a57baa3d7f75d0d30fa767213c36496bdcc6be2b2e6a3edbf7c04f7d726a1b17dcfb5e7feb2136b04b17c9ccb769894b970f365 + checksum: 10c0/591ecec3c6adc1cdb70f00165a57baa3d7f75d0d30fa767213c36496bdcc6be2b2e6a3edbf7c04f7d726a1b17dcfb5e7feb2136b04b17c9ccb769894b970f365 languageName: node linkType: hard "react-is@npm:18.1.0": version: 18.1.0 resolution: "react-is@npm:18.1.0" - checksum: 558874e4c3bd9805a9294426e090919ee6901be3ab07f80b997c36b5a01a8d691112802e7438d146f6c82fd6495d8c030f276ef05ec3410057f8740a8d723f8c + checksum: 10c0/558874e4c3bd9805a9294426e090919ee6901be3ab07f80b997c36b5a01a8d691112802e7438d146f6c82fd6495d8c030f276ef05ec3410057f8740a8d723f8c languageName: node linkType: hard "react-is@npm:^16.13.1, react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" - checksum: 33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 languageName: node linkType: hard "react-is@npm:^17.0.1": version: 17.0.2 resolution: "react-is@npm:17.0.2" - checksum: 2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 languageName: node linkType: hard "react-is@npm:^18.0.0": version: 18.2.0 resolution: "react-is@npm:18.2.0" - checksum: 6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 languageName: node linkType: hard "react-refresh@npm:0.14.0, react-refresh@npm:^0.14.0": version: 0.14.0 resolution: "react-refresh@npm:0.14.0" - checksum: b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d + checksum: 10c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d languageName: node linkType: hard @@ -28544,7 +28544,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 2262750dc1022c56d2c79e8d865c00045881c57bcaca74810ae8adac35cfdf723ff7d6b3b0e95c85eb9a0cff90bb4b1e0af801bd703ce8c0a2e35ab14ff1babb + checksum: 10c0/2262750dc1022c56d2c79e8d865c00045881c57bcaca74810ae8adac35cfdf723ff7d6b3b0e95c85eb9a0cff90bb4b1e0af801bd703ce8c0a2e35ab14ff1babb languageName: node linkType: hard @@ -28563,7 +28563,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 4952657e6a7b9d661d4ad4dfcef81b9c7fa493e35164abff99c35c0b27b3d172ef7ad70c09416dc44dd14ff2e6b38a5ec7da27e27e90a15cbad36b8fd2fd8054 + checksum: 10c0/4952657e6a7b9d661d4ad4dfcef81b9c7fa493e35164abff99c35c0b27b3d172ef7ad70c09416dc44dd14ff2e6b38a5ec7da27e27e90a15cbad36b8fd2fd8054 languageName: node linkType: hard @@ -28580,7 +28580,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad + checksum: 10c0/6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad languageName: node linkType: hard @@ -28589,14 +28589,14 @@ __metadata: resolution: "react@npm:18.2.0" dependencies: loose-envify: "npm:^1.1.0" - checksum: b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 languageName: node linkType: hard "read-cmd-shim@npm:4.0.0, read-cmd-shim@npm:^4.0.0": version: 4.0.0 resolution: "read-cmd-shim@npm:4.0.0" - checksum: e62db17ec9708f1e7c6a31f0a46d43df2069d85cf0df3b9d1d99e5ed36e29b1e8b2f8a427fd8bbb9bc40829788df1471794f9b01057e4b95ed062806e4df5ba9 + checksum: 10c0/e62db17ec9708f1e7c6a31f0a46d43df2069d85cf0df3b9d1d99e5ed36e29b1e8b2f8a427fd8bbb9bc40829788df1471794f9b01057e4b95ed062806e4df5ba9 languageName: node linkType: hard @@ -28606,7 +28606,7 @@ __metadata: dependencies: json-parse-even-better-errors: "npm:^3.0.0" npm-normalize-package-bin: "npm:^3.0.0" - checksum: 37787e075f0260a92be0428687d9020eecad7ece3bda37461c2219e50d1ec183ab6ba1d9ada193691435dfe119a42c8a5b5b5463f08c8ddbc3d330800b265318 + checksum: 10c0/37787e075f0260a92be0428687d9020eecad7ece3bda37461c2219e50d1ec183ab6ba1d9ada193691435dfe119a42c8a5b5b5463f08c8ddbc3d330800b265318 languageName: node linkType: hard @@ -28618,7 +28618,7 @@ __metadata: json-parse-even-better-errors: "npm:^3.0.0" normalize-package-data: "npm:^5.0.0" npm-normalize-package-bin: "npm:^3.0.0" - checksum: 0eb1110b35bc109a8d2789358a272c66b0fb8fd335a98df2ea9ff3423be564e2908f27d98f3f4b41da35495e04dc1763b33aad7cc24bfd58dfc6d60cca7d70c9 + checksum: 10c0/0eb1110b35bc109a8d2789358a272c66b0fb8fd335a98df2ea9ff3423be564e2908f27d98f3f4b41da35495e04dc1763b33aad7cc24bfd58dfc6d60cca7d70c9 languageName: node linkType: hard @@ -28630,7 +28630,7 @@ __metadata: json-parse-even-better-errors: "npm:^3.0.0" normalize-package-data: "npm:^6.0.0" npm-normalize-package-bin: "npm:^3.0.0" - checksum: a2d373d0f87613fe86ec49c7e4bcdaf2a14967c258c6ccfd9585dec8b21e3d5bfe422c460648fb30e8c93fc13579da0d9c9c65adc5ec4e95ec888d99e4bccc79 + checksum: 10c0/a2d373d0f87613fe86ec49c7e4bcdaf2a14967c258c6ccfd9585dec8b21e3d5bfe422c460648fb30e8c93fc13579da0d9c9c65adc5ec4e95ec888d99e4bccc79 languageName: node linkType: hard @@ -28640,7 +28640,7 @@ __metadata: dependencies: find-up: "npm:^2.0.0" read-pkg: "npm:^3.0.0" - checksum: 2cd0a180260b0d235990e6e9c8c2330a03882d36bc2eba8930e437ef23ee52a68a894e7e1ccb1c33f03bcceb270a861ee5f7eac686f238857755e2cddfb48ffd + checksum: 10c0/2cd0a180260b0d235990e6e9c8c2330a03882d36bc2eba8930e437ef23ee52a68a894e7e1ccb1c33f03bcceb270a861ee5f7eac686f238857755e2cddfb48ffd languageName: node linkType: hard @@ -28651,7 +28651,7 @@ __metadata: find-up: "npm:^4.1.0" read-pkg: "npm:^5.2.0" type-fest: "npm:^0.8.1" - checksum: 82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385 + checksum: 10c0/82b3ac9fd7c6ca1bdc1d7253eb1091a98ff3d195ee0a45386582ce3e69f90266163c34121e6a0a02f1630073a6c0585f7880b3865efcae9c452fa667f02ca385 languageName: node linkType: hard @@ -28662,7 +28662,7 @@ __metadata: find-up: "npm:^5.0.0" read-pkg: "npm:^6.0.0" type-fest: "npm:^1.0.1" - checksum: cf3905ccbe5cd602f23192cc7ca65ed17561bab117eadb9aed817441d5bfc6b9a11215c2a3e9505f501d046818f3c4180dbea61fa83c42083e0b4e407d5cc745 + checksum: 10c0/cf3905ccbe5cd602f23192cc7ca65ed17561bab117eadb9aed817441d5bfc6b9a11215c2a3e9505f501d046818f3c4180dbea61fa83c42083e0b4e407d5cc745 languageName: node linkType: hard @@ -28673,7 +28673,7 @@ __metadata: load-json-file: "npm:^4.0.0" normalize-package-data: "npm:^2.3.2" path-type: "npm:^3.0.0" - checksum: 65acf2df89fbcd506b48b7ced56a255ba00adf7ecaa2db759c86cc58212f6fd80f1f0b7a85c848551a5d0685232e9b64f45c1fd5b48d85df2761a160767eeb93 + checksum: 10c0/65acf2df89fbcd506b48b7ced56a255ba00adf7ecaa2db759c86cc58212f6fd80f1f0b7a85c848551a5d0685232e9b64f45c1fd5b48d85df2761a160767eeb93 languageName: node linkType: hard @@ -28685,7 +28685,7 @@ __metadata: normalize-package-data: "npm:^2.5.0" parse-json: "npm:^5.0.0" type-fest: "npm:^0.6.0" - checksum: b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb + checksum: 10c0/b51a17d4b51418e777029e3a7694c9bd6c578a5ab99db544764a0b0f2c7c0f58f8a6bc101f86a6fceb8ba6d237d67c89acf6170f6b98695d0420ddc86cf109fb languageName: node linkType: hard @@ -28697,7 +28697,7 @@ __metadata: normalize-package-data: "npm:^3.0.2" parse-json: "npm:^5.2.0" type-fest: "npm:^1.0.1" - checksum: b51ee5eed75324f4fac34c9a40b5e4b403de4c532242be01959c9bbdb1ff9db1c6c2aefaba569622fec49d1ead866e97ba856ab145f6e11039b11f7bec1318ba + checksum: 10c0/b51ee5eed75324f4fac34c9a40b5e4b403de4c532242be01959c9bbdb1ff9db1c6c2aefaba569622fec49d1ead866e97ba856ab145f6e11039b11f7bec1318ba languageName: node linkType: hard @@ -28706,7 +28706,7 @@ __metadata: resolution: "read@npm:2.1.0" dependencies: mute-stream: "npm:~1.0.0" - checksum: 9139804be064ba4a4ac97a4f9ad75ea22fc7b92f15737b21e99cdc3beaea0bc29db8e234a57a57bd52f17ad09d659fec114fd64dc34ac979a53892366b83dddc + checksum: 10c0/9139804be064ba4a4ac97a4f9ad75ea22fc7b92f15737b21e99cdc3beaea0bc29db8e234a57a57bd52f17ad09d659fec114fd64dc34ac979a53892366b83dddc languageName: node linkType: hard @@ -28721,7 +28721,7 @@ __metadata: safe-buffer: "npm:~5.1.1" string_decoder: "npm:~1.1.1" util-deprecate: "npm:~1.0.1" - checksum: 7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa languageName: node linkType: hard @@ -28732,7 +28732,7 @@ __metadata: inherits: "npm:^2.0.3" string_decoder: "npm:^1.1.1" util-deprecate: "npm:^1.0.1" - checksum: e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 languageName: node linkType: hard @@ -28745,7 +28745,7 @@ __metadata: events: "npm:^3.3.0" process: "npm:^0.11.10" string_decoder: "npm:^1.3.0" - checksum: cf7cc8daa2b57872d120945a20a1458c13dcb6c6f352505421115827b18ac4df0e483ac1fe195cb1f5cd226e1073fc55b92b569269d8299e8530840bcdbba40c + checksum: 10c0/cf7cc8daa2b57872d120945a20a1458c13dcb6c6f352505421115827b18ac4df0e483ac1fe195cb1f5cd226e1073fc55b92b569269d8299e8530840bcdbba40c languageName: node linkType: hard @@ -28754,7 +28754,7 @@ __metadata: resolution: "readdir-glob@npm:1.1.3" dependencies: minimatch: "npm:^5.1.0" - checksum: a37e0716726650845d761f1041387acd93aa91b28dd5381950733f994b6c349ddc1e21e266ec7cc1f9b92e205a7a972232f9b89d5424d07361c2c3753d5dbace + checksum: 10c0/a37e0716726650845d761f1041387acd93aa91b28dd5381950733f994b6c349ddc1e21e266ec7cc1f9b92e205a7a972232f9b89d5424d07361c2c3753d5dbace languageName: node linkType: hard @@ -28765,7 +28765,7 @@ __metadata: graceful-fs: "npm:^4.1.11" micromatch: "npm:^3.1.10" readable-stream: "npm:^2.0.2" - checksum: 770d177372ff2212d382d425d55ca48301fcbf3231ab3827257bbcca7ff44fb51fe4af6acc2dda8512dc7f29da390e9fbea5b2b3fc724b86e85cc828395b7797 + checksum: 10c0/770d177372ff2212d382d425d55ca48301fcbf3231ab3827257bbcca7ff44fb51fe4af6acc2dda8512dc7f29da390e9fbea5b2b3fc724b86e85cc828395b7797 languageName: node linkType: hard @@ -28774,14 +28774,14 @@ __metadata: resolution: "readdirp@npm:3.6.0" dependencies: picomatch: "npm:^2.2.1" - checksum: 6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b languageName: node linkType: hard "real-require@npm:^0.2.0": version: 0.2.0 resolution: "real-require@npm:0.2.0" - checksum: 23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0 + checksum: 10c0/23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0 languageName: node linkType: hard @@ -28793,7 +28793,7 @@ __metadata: esprima: "npm:~4.0.0" source-map: "npm:~0.6.1" tslib: "npm:^2.0.1" - checksum: 7810216ff36c7376eddd66d3ce6b2df421305fdc983f2122711837911712177d52d804419655e1f29d4bb93016c178cffe442af410bdcf726050ca19af6fed32 + checksum: 10c0/7810216ff36c7376eddd66d3ce6b2df421305fdc983f2122711837911712177d52d804419655e1f29d4bb93016c178cffe442af410bdcf726050ca19af6fed32 languageName: node linkType: hard @@ -28806,7 +28806,7 @@ __metadata: esprima: "npm:~4.0.0" source-map: "npm:~0.6.1" tslib: "npm:^2.0.1" - checksum: d719633be8029e28f23b8191d4a525c5dbdac721792ab3cb5e9dfcf1694fb93f3c147b186916195a9c7fa0711f1e4990ba457cdcee02faed3899d4a80da1bd1f + checksum: 10c0/d719633be8029e28f23b8191d4a525c5dbdac721792ab3cb5e9dfcf1694fb93f3c147b186916195a9c7fa0711f1e4990ba457cdcee02faed3899d4a80da1bd1f languageName: node linkType: hard @@ -28815,7 +28815,7 @@ __metadata: resolution: "rechoir@npm:0.8.0" dependencies: resolve: "npm:^1.20.0" - checksum: 1a30074124a22abbd5d44d802dac26407fa72a0a95f162aa5504ba8246bc5452f8b1a027b154d9bdbabcd8764920ff9333d934c46a8f17479c8912e92332f3ff + checksum: 10c0/1a30074124a22abbd5d44d802dac26407fa72a0a95f162aa5504ba8246bc5452f8b1a027b154d9bdbabcd8764920ff9333d934c46a8f17479c8912e92332f3ff languageName: node linkType: hard @@ -28825,7 +28825,7 @@ __metadata: dependencies: indent-string: "npm:^4.0.0" strip-indent: "npm:^3.0.0" - checksum: d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae languageName: node linkType: hard @@ -28835,14 +28835,14 @@ __metadata: dependencies: indent-string: "npm:^5.0.0" strip-indent: "npm:^4.0.0" - checksum: a9b640c8f4b2b5b26a1a908706475ff404dd50a97d6f094bc3c59717be922622927cc7d601d4ae2857d897ad243fd979bd76d751a0481cee8be7024e5fb4c662 + checksum: 10c0/a9b640c8f4b2b5b26a1a908706475ff404dd50a97d6f094bc3c59717be922622927cc7d601d4ae2857d897ad243fd979bd76d751a0481cee8be7024e5fb4c662 languageName: node linkType: hard "redis-errors@npm:^1.0.0, redis-errors@npm:^1.2.0": version: 1.2.0 resolution: "redis-errors@npm:1.2.0" - checksum: 5b316736e9f532d91a35bff631335137a4f974927bb2fb42bf8c2f18879173a211787db8ac4c3fde8f75ed6233eb0888e55d52510b5620e30d69d7d719c8b8a7 + checksum: 10c0/5b316736e9f532d91a35bff631335137a4f974927bb2fb42bf8c2f18879173a211787db8ac4c3fde8f75ed6233eb0888e55d52510b5620e30d69d7d719c8b8a7 languageName: node linkType: hard @@ -28851,7 +28851,7 @@ __metadata: resolution: "redis-parser@npm:3.0.0" dependencies: redis-errors: "npm:^1.0.0" - checksum: ee16ac4c7b2a60b1f42a2cdaee22b005bd4453eb2d0588b8a4939718997ae269da717434da5d570fe0b05030466eeb3f902a58cf2e8e1ca058bf6c9c596f632f + checksum: 10c0/ee16ac4c7b2a60b1f42a2cdaee22b005bd4453eb2d0588b8a4939718997ae269da717434da5d570fe0b05030466eeb3f902a58cf2e8e1ca058bf6c9c596f632f languageName: node linkType: hard @@ -28865,7 +28865,7 @@ __metadata: "@redis/json": "npm:1.0.4" "@redis/search": "npm:1.1.3" "@redis/time-series": "npm:1.0.4" - checksum: 8f9a1b622509be305dd7ff2c94c338dd8ed809b407c465e9faf5cf6b79827f92cbe82d6f08e549c59d1d331a7657fd1f202954bee20a06c0afd60d976ce6b679 + checksum: 10c0/8f9a1b622509be305dd7ff2c94c338dd8ed809b407c465e9faf5cf6b79827f92cbe82d6f08e549c59d1d331a7657fd1f202954bee20a06c0afd60d976ce6b679 languageName: node linkType: hard @@ -28879,7 +28879,7 @@ __metadata: get-intrinsic: "npm:^1.2.1" globalthis: "npm:^1.0.3" which-builtin-type: "npm:^1.1.3" - checksum: 02104cdd22658b637efe6b1df73658edab539268347327c8250a72d0cb273dcdf280c284e2d94155d22601d022d16be1a816a8616d679e447cbcbde9860d15cb + checksum: 10c0/02104cdd22658b637efe6b1df73658edab539268347327c8250a72d0cb273dcdf280c284e2d94155d22601d022d16be1a816a8616d679e447cbcbde9860d15cb languageName: node linkType: hard @@ -28888,21 +28888,21 @@ __metadata: resolution: "regenerate-unicode-properties@npm:10.1.0" dependencies: regenerate: "npm:^1.4.2" - checksum: 17818ea6f67c5a4884b9e18842edc4b3838a12f62e24f843e80fbb6d8cb649274b5b86d98bb02075074e02021850e597a92ff6b58bbe5caba4bf5fd8e4e38b56 + checksum: 10c0/17818ea6f67c5a4884b9e18842edc4b3838a12f62e24f843e80fbb6d8cb649274b5b86d98bb02075074e02021850e597a92ff6b58bbe5caba4bf5fd8e4e38b56 languageName: node linkType: hard "regenerate@npm:^1.4.2": version: 1.4.2 resolution: "regenerate@npm:1.4.2" - checksum: f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 languageName: node linkType: hard "regenerator-runtime@npm:^0.14.0": version: 0.14.0 resolution: "regenerator-runtime@npm:0.14.0" - checksum: e25f062c1a183f81c99681691a342760e65c55e8d3a4d4fe347ebe72433b123754b942b70b622959894e11f8a9131dc549bd3c9a5234677db06a4af42add8d12 + checksum: 10c0/e25f062c1a183f81c99681691a342760e65c55e8d3a4d4fe347ebe72433b123754b942b70b622959894e11f8a9131dc549bd3c9a5234677db06a4af42add8d12 languageName: node linkType: hard @@ -28911,7 +28911,7 @@ __metadata: resolution: "regenerator-transform@npm:0.15.2" dependencies: "@babel/runtime": "npm:^7.8.4" - checksum: 7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 languageName: node linkType: hard @@ -28921,21 +28921,21 @@ __metadata: dependencies: extend-shallow: "npm:^3.0.2" safe-regex: "npm:^1.1.0" - checksum: a0f8d6045f63b22e9759db10e248369c443b41cedd7dba0922d002b66c2734bc2aef0d98c4d45772d1f756245f4c5203856b88b9624bba2a58708858a8d485d6 + checksum: 10c0/a0f8d6045f63b22e9759db10e248369c443b41cedd7dba0922d002b66c2734bc2aef0d98c4d45772d1f756245f4c5203856b88b9624bba2a58708858a8d485d6 languageName: node linkType: hard "regex-parser@npm:^2.2.11": version: 2.2.11 resolution: "regex-parser@npm:2.2.11" - checksum: 6572acbd46b5444215a73cf164f3c6fdbd73b8a2cde6a31a97307e514d20f5cbb8609f9e4994a7744207f2d1bf9e6fca4bbc0c9854f2b3da77ae0063efdc3f98 + checksum: 10c0/6572acbd46b5444215a73cf164f3c6fdbd73b8a2cde6a31a97307e514d20f5cbb8609f9e4994a7744207f2d1bf9e6fca4bbc0c9854f2b3da77ae0063efdc3f98 languageName: node linkType: hard "regexp-to-ast@npm:0.5.0": version: 0.5.0 resolution: "regexp-to-ast@npm:0.5.0" - checksum: 16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 + checksum: 10c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 languageName: node linkType: hard @@ -28944,7 +28944,7 @@ __metadata: resolution: "regexp-tree@npm:0.1.27" bin: regexp-tree: bin/regexp-tree - checksum: f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c + checksum: 10c0/f636f44b4a0d93d7d6926585ecd81f63e4ce2ac895bc417b2ead0874cd36b337dcc3d0fedc63f69bf5aaeaa4340f36ca7e750c9687cceaf8087374e5284e843c languageName: node linkType: hard @@ -28955,7 +28955,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" set-function-name: "npm:^2.0.0" - checksum: 1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8 + checksum: 10c0/1de7d214c0a726c7c874a7023e47b0e27b9f7fdb64175bfe1861189de1704aaeca05c3d26c35aa375432289b99946f3cf86651a92a8f7601b90d8c226a23bcd8 languageName: node linkType: hard @@ -28969,7 +28969,7 @@ __metadata: regjsparser: "npm:^0.9.1" unicode-match-property-ecmascript: "npm:^2.0.0" unicode-match-property-value-ecmascript: "npm:^2.1.0" - checksum: 7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 + checksum: 10c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 languageName: node linkType: hard @@ -28978,7 +28978,7 @@ __metadata: resolution: "registry-auth-token@npm:4.2.2" dependencies: rc: "npm:1.2.8" - checksum: 1d0000b8b65e7141a4cc4594926e2551607f48596e01326e7aa2ba2bc688aea86b2aa0471c5cb5de7acc9a59808a3a1ddde9084f974da79bfc67ab67aa48e003 + checksum: 10c0/1d0000b8b65e7141a4cc4594926e2551607f48596e01326e7aa2ba2bc688aea86b2aa0471c5cb5de7acc9a59808a3a1ddde9084f974da79bfc67ab67aa48e003 languageName: node linkType: hard @@ -28987,7 +28987,7 @@ __metadata: resolution: "registry-url@npm:5.1.0" dependencies: rc: "npm:^1.2.8" - checksum: c2c455342b5836cbed5162092eba075c7a02c087d9ce0fde8aeb4dc87a8f4a34a542e58bf4d8ec2d4cb73f04408cb3148ceb1f76647f76b978cfec22047dc6d6 + checksum: 10c0/c2c455342b5836cbed5162092eba075c7a02c087d9ce0fde8aeb4dc87a8f4a34a542e58bf4d8ec2d4cb73f04408cb3148ceb1f76647f76b978cfec22047dc6d6 languageName: node linkType: hard @@ -28998,14 +28998,14 @@ __metadata: jsesc: "npm:~0.5.0" bin: regjsparser: bin/parser - checksum: fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 + checksum: 10c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 languageName: node linkType: hard "relateurl@npm:^0.2.7": version: 0.2.7 resolution: "relateurl@npm:0.2.7" - checksum: c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a + checksum: 10c0/c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a languageName: node linkType: hard @@ -29016,7 +29016,7 @@ __metadata: "@babel/runtime": "npm:^7.0.0" fbjs: "npm:^3.0.0" invariant: "npm:^2.2.4" - checksum: f5d29b5c2f3c8a3438d43dcbc3022bd454c4ecbd4f0b10616df08bedc62d8aaa84f155f23e374053cf9f4a8238b93804e37a5b37ed9dc7ad01436d62d1b01d53 + checksum: 10c0/f5d29b5c2f3c8a3438d43dcbc3022bd454c4ecbd4f0b10616df08bedc62d8aaa84f155f23e374053cf9f4a8238b93804e37a5b37ed9dc7ad01436d62d1b01d53 languageName: node linkType: hard @@ -29029,7 +29029,7 @@ __metadata: mdast-util-definitions: "npm:^4.0.0" space-separated-tokens: "npm:^1.0.0" unist-util-visit: "npm:^2.0.0" - checksum: 5f0affc97e18ad3247e3b29449f4df98be5a75950cf0f0f13dd1755c4ef1065f9ab44626bba34d913d32bb92afd6f06a8e2f8068e83b48337f0b7a5d1f0cecfe + checksum: 10c0/5f0affc97e18ad3247e3b29449f4df98be5a75950cf0f0f13dd1755c4ef1065f9ab44626bba34d913d32bb92afd6f06a8e2f8068e83b48337f0b7a5d1f0cecfe languageName: node linkType: hard @@ -29040,28 +29040,28 @@ __metadata: github-slugger: "npm:^1.0.0" mdast-util-to-string: "npm:^1.0.0" unist-util-visit: "npm:^2.0.0" - checksum: 7cc2857936fce9c9c00b9c7d70de46d594cedf93bd8560fd006164dee7aacccdf472654ee35b33f4fb4bd0af882d89998c6d0c9088c2e95702a9fc15ebae002a + checksum: 10c0/7cc2857936fce9c9c00b9c7d70de46d594cedf93bd8560fd006164dee7aacccdf472654ee35b33f4fb4bd0af882d89998c6d0c9088c2e95702a9fc15ebae002a languageName: node linkType: hard "remedial@npm:^1.0.7": version: 1.0.8 resolution: "remedial@npm:1.0.8" - checksum: ca1e22d2958e3f0f2fdb5f1c23fecadab5d83a0b1e291c67474c806ce07801212f1d2006995bdcfb592803ead7666e2b1fbb9281b3f32d4a87ff2335b3777725 + checksum: 10c0/ca1e22d2958e3f0f2fdb5f1c23fecadab5d83a0b1e291c67474c806ce07801212f1d2006995bdcfb592803ead7666e2b1fbb9281b3f32d4a87ff2335b3777725 languageName: node linkType: hard "remove-trailing-separator@npm:^1.0.1": version: 1.1.0 resolution: "remove-trailing-separator@npm:1.1.0" - checksum: 3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc + checksum: 10c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc languageName: node linkType: hard "remove-trailing-spaces@npm:^1.0.6": version: 1.0.8 resolution: "remove-trailing-spaces@npm:1.0.8" - checksum: b9a4d74fd77e4a81b83cd19152abe1d658e5ecf13bc9b789c2699d7166d3879258a61625f8fc0274ef5719ab70e514ae86234fee481f6b41b50729949b837c1b + checksum: 10c0/b9a4d74fd77e4a81b83cd19152abe1d658e5ecf13bc9b789c2699d7166d3879258a61625f8fc0274ef5719ab70e514ae86234fee481f6b41b50729949b837c1b languageName: node linkType: hard @@ -29074,21 +29074,21 @@ __metadata: htmlparser2: "npm:^6.1.0" lodash: "npm:^4.17.21" strip-ansi: "npm:^6.0.1" - checksum: 24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 + checksum: 10c0/24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 languageName: node linkType: hard "repeat-element@npm:^1.1.2": version: 1.1.4 resolution: "repeat-element@npm:1.1.4" - checksum: 81aa8d82bc845780803ef52df3533fa399974b99df571d0bb86e91f0ffca9ee4b9c4e8e5e72af087938cc28d2aef93d106a6d01da685d72ce96455b90a9f9f69 + checksum: 10c0/81aa8d82bc845780803ef52df3533fa399974b99df571d0bb86e91f0ffca9ee4b9c4e8e5e72af087938cc28d2aef93d106a6d01da685d72ce96455b90a9f9f69 languageName: node linkType: hard "repeat-string@npm:^1.6.1": version: 1.6.1 resolution: "repeat-string@npm:1.6.1" - checksum: 87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d + checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d languageName: node linkType: hard @@ -29097,42 +29097,42 @@ __metadata: resolution: "request-progress@npm:3.0.0" dependencies: throttleit: "npm:^1.0.0" - checksum: d5dcb7155a738572c8781436f6b418e866066a30eea0f99a9ab26b6f0ed6c13637462bba736357de3899b8d30431ee9202ac956a5f8ccdd0d9d1ed0962000d14 + checksum: 10c0/d5dcb7155a738572c8781436f6b418e866066a30eea0f99a9ab26b6f0ed6c13637462bba736357de3899b8d30431ee9202ac956a5f8ccdd0d9d1ed0962000d14 languageName: node linkType: hard "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" - checksum: 83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 languageName: node linkType: hard "require-from-string@npm:^2.0.2": version: 2.0.2 resolution: "require-from-string@npm:2.0.2" - checksum: aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 languageName: node linkType: hard "require-main-filename@npm:^2.0.0": version: 2.0.0 resolution: "require-main-filename@npm:2.0.0" - checksum: db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 languageName: node linkType: hard "requireindex@npm:^1.2.0": version: 1.2.0 resolution: "requireindex@npm:1.2.0" - checksum: 7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 + checksum: 10c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 languageName: node linkType: hard "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" - checksum: b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 languageName: node linkType: hard @@ -29141,14 +29141,14 @@ __metadata: resolution: "requizzle@npm:0.2.4" dependencies: lodash: "npm:^4.17.21" - checksum: ad138f987943aeda5f96cd1ccba9752c96352a729a7e3c3e2545568703f7fc9b978d9b46715803408ef178b0d61d36a4b1b506b367b7e78fe6d041fa5bfa5e06 + checksum: 10c0/ad138f987943aeda5f96cd1ccba9752c96352a729a7e3c3e2545568703f7fc9b978d9b46715803408ef178b0d61d36a4b1b506b367b7e78fe6d041fa5bfa5e06 languageName: node linkType: hard "reselect@npm:^4.1.7": version: 4.1.8 resolution: "reselect@npm:4.1.8" - checksum: 06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 + checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 languageName: node linkType: hard @@ -29158,7 +29158,7 @@ __metadata: dependencies: "@react-email/render": "npm:0.0.7" type-fest: "npm:3.13.0" - checksum: fb06554c1bd115a101e0b9bcca6d09b4594589c9d8783ca5b83d6f24a7db88e1339a5a913df0b1d8c84e486e8977929e19e39a85a7a172d9ff19ed2294bc8351 + checksum: 10c0/fb06554c1bd115a101e0b9bcca6d09b4594589c9d8783ca5b83d6f24a7db88e1339a5a913df0b1d8c84e486e8977929e19e39a85a7a172d9ff19ed2294bc8351 languageName: node linkType: hard @@ -29167,28 +29167,28 @@ __metadata: resolution: "resolve-cwd@npm:3.0.0" dependencies: resolve-from: "npm:^5.0.0" - checksum: e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 languageName: node linkType: hard "resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" - checksum: b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 languageName: node linkType: hard "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" - checksum: 8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 languageName: node linkType: hard "resolve-pkg-maps@npm:^1.0.0": version: 1.0.0 resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab + checksum: 10c0/fb8f7bbe2ca281a73b7ef423a1cbc786fb244bd7a95cbe5c3fba25b27d327150beca8ba02f622baea65919a57e061eb5005204daa5f93ed590d9b77463a567ab languageName: node linkType: hard @@ -29201,21 +29201,21 @@ __metadata: loader-utils: "npm:^2.0.0" postcss: "npm:^8.2.14" source-map: "npm:0.6.1" - checksum: 53eef3620332f2fc35a4deffaa4395064b2ffd1bc28be380faa3f1e99c2fb7bbf0f705700b4539387d5b6c39586df54a92cd5d031606f19de4bf9e0ff1b6a522 + checksum: 10c0/53eef3620332f2fc35a4deffaa4395064b2ffd1bc28be380faa3f1e99c2fb7bbf0f705700b4539387d5b6c39586df54a92cd5d031606f19de4bf9e0ff1b6a522 languageName: node linkType: hard "resolve-url@npm:^0.2.1": version: 0.2.1 resolution: "resolve-url@npm:0.2.1" - checksum: c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54 + checksum: 10c0/c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54 languageName: node linkType: hard "resolve.exports@npm:^2.0.0": version: 2.0.2 resolution: "resolve.exports@npm:2.0.2" - checksum: cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 + checksum: 10c0/cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 languageName: node linkType: hard @@ -29228,7 +29228,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a languageName: node linkType: hard @@ -29241,7 +29241,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 1de92669e7c46cfe125294c66d5405e13288bb87b97e9bdab71693ceebbcc0255c789bde30e2834265257d330d8ff57414d7d88e3097d8f69951f3ce978bf045 + checksum: 10c0/1de92669e7c46cfe125294c66d5405e13288bb87b97e9bdab71693ceebbcc0255c789bde30e2834265257d330d8ff57414d7d88e3097d8f69951f3ce978bf045 languageName: node linkType: hard @@ -29254,7 +29254,7 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 languageName: node linkType: hard @@ -29267,14 +29267,14 @@ __metadata: supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: ed2bb51d616b9cd30fe85cf49f7a2240094d9fa01a221d361918462be81f683d1855b7f192391d2ab5325245b42464ca59690db5bd5dad0a326fc0de5974dd10 + checksum: 10c0/ed2bb51d616b9cd30fe85cf49f7a2240094d9fa01a221d361918462be81f683d1855b7f192391d2ab5325245b42464ca59690db5bd5dad0a326fc0de5974dd10 languageName: node linkType: hard "response-iterator@npm:^0.2.6": version: 0.2.6 resolution: "response-iterator@npm:0.2.6" - checksum: 60e6b552cd610643269d5d916d270cc8a4bea978cbe4779d6ef8083ac6b89006795508034e4c4ebe204eded75ac32bf243589ba82c1184591dde0674f6db785e + checksum: 10c0/60e6b552cd610643269d5d916d270cc8a4bea978cbe4779d6ef8083ac6b89006795508034e4c4ebe204eded75ac32bf243589ba82c1184591dde0674f6db785e languageName: node linkType: hard @@ -29283,7 +29283,7 @@ __metadata: resolution: "responselike@npm:1.0.2" dependencies: lowercase-keys: "npm:^1.0.0" - checksum: 1c2861d1950790da96159ca490eda645130eaf9ccc4d76db20f685ba944feaf30f45714b4318f550b8cd72990710ad68355ff15c41da43ed9a93c102c0ffa403 + checksum: 10c0/1c2861d1950790da96159ca490eda645130eaf9ccc4d76db20f685ba944feaf30f45714b4318f550b8cd72990710ad68355ff15c41da43ed9a93c102c0ffa403 languageName: node linkType: hard @@ -29293,7 +29293,7 @@ __metadata: dependencies: onetime: "npm:^5.1.0" signal-exit: "npm:^3.0.2" - checksum: 8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f languageName: node linkType: hard @@ -29303,21 +29303,21 @@ __metadata: dependencies: onetime: "npm:^5.1.0" signal-exit: "npm:^3.0.2" - checksum: 6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 + checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 languageName: node linkType: hard "ret@npm:~0.1.10": version: 0.1.15 resolution: "ret@npm:0.1.15" - checksum: 01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f + checksum: 10c0/01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f languageName: node linkType: hard "ret@npm:~0.2.0": version: 0.2.2 resolution: "ret@npm:0.2.2" - checksum: 1a41e543913cda851abb1dae4852efa97bb693ce58fde3b51cc1cae94e2599dd70b91ad6268a4a07fc238305be06fed91723ef6d08863c48a0d02e0a74b943cd + checksum: 10c0/1a41e543913cda851abb1dae4852efa97bb693ce58fde3b51cc1cae94e2599dd70b91ad6268a4a07fc238305be06fed91723ef6d08863c48a0d02e0a74b943cd languageName: node linkType: hard @@ -29327,35 +29327,35 @@ __metadata: dependencies: debug: "npm:^4.1.1" extend: "npm:^3.0.2" - checksum: 06de24fd2f08a3d7985ad12d5993a5772dd0a4e0a079577ad63c0ce9b4005fcf464c8b0b215b732bede995f326ac0408c0fa04658736c8ffae5adde5b0194ed9 + checksum: 10c0/06de24fd2f08a3d7985ad12d5993a5772dd0a4e0a079577ad63c0ce9b4005fcf464c8b0b215b732bede995f326ac0408c0fa04658736c8ffae5adde5b0194ed9 languageName: node linkType: hard "retry@npm:0.13.1, retry@npm:^0.13.1": version: 0.13.1 resolution: "retry@npm:0.13.1" - checksum: 9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 languageName: node linkType: hard "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" - checksum: 59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe languageName: node linkType: hard "reusify@npm:^1.0.4": version: 1.0.4 resolution: "reusify@npm:1.0.4" - checksum: c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 languageName: node linkType: hard "rfdc@npm:^1.2.0, rfdc@npm:^1.3.0": version: 1.3.0 resolution: "rfdc@npm:1.3.0" - checksum: a17fd7b81f42c7ae4cb932abd7b2f677b04cc462a03619fb46945ae1ccae17c3bc87c020ffdde1751cbfa8549860a2883486fdcabc9b9de3f3108af32b69a667 + checksum: 10c0/a17fd7b81f42c7ae4cb932abd7b2f677b04cc462a03619fb46945ae1ccae17c3bc87c020ffdde1751cbfa8549860a2883486fdcabc9b9de3f3108af32b69a667 languageName: node linkType: hard @@ -29366,7 +29366,7 @@ __metadata: glob: "npm:^10.3.7" bin: rimraf: dist/esm/bin.mjs - checksum: d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 + checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 languageName: node linkType: hard @@ -29377,7 +29377,7 @@ __metadata: glob: "npm:^7.1.3" bin: rimraf: ./bin.js - checksum: 4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 + checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 languageName: node linkType: hard @@ -29388,7 +29388,7 @@ __metadata: glob: "npm:^7.1.3" bin: rimraf: bin.js - checksum: 9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 languageName: node linkType: hard @@ -29399,7 +29399,7 @@ __metadata: glob: "npm:^9.2.0" bin: rimraf: dist/cjs/src/bin.js - checksum: 8c5e142d26d8b222be9dc9a1a41ba48e95d8f374e813e66a8533e87c6180174fcb3f573b9b592eca12740ebf8b78526d136acd971d4a790763d6f2232c34fa24 + checksum: 10c0/8c5e142d26d8b222be9dc9a1a41ba48e95d8f374e813e66a8533e87c6180174fcb3f573b9b592eca12740ebf8b78526d136acd971d4a790763d6f2232c34fa24 languageName: node linkType: hard @@ -29410,7 +29410,7 @@ __metadata: glob: "npm:^7.1.3" bin: rimraf: ./bin.js - checksum: f1e646f8c567795f2916aef7aadf685b543da6b9a53e482bb04b07472c7eef2b476045ba1e29f401c301c66b630b22b815ab31fdd60c5e1ae6566ff523debf45 + checksum: 10c0/f1e646f8c567795f2916aef7aadf685b543da6b9a53e482bb04b07472c7eef2b476045ba1e29f401c301c66b630b22b815ab31fdd60c5e1ae6566ff523debf45 languageName: node linkType: hard @@ -29420,7 +29420,7 @@ __metadata: dependencies: hash-base: "npm:^3.0.0" inherits: "npm:^2.0.1" - checksum: f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a languageName: node linkType: hard @@ -29434,7 +29434,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 65eddf84bf389ea8e4d4c1614b1c6a298d08f8ae785c0c087e723a879190c8aaddbab4aa3b8a0524551b9036750c9f8bfea27b377798accfd2ba5084ceff5aaa + checksum: 10c0/65eddf84bf389ea8e4d4c1614b1c6a298d08f8ae785c0c087e723a879190c8aaddbab4aa3b8a0524551b9036750c9f8bfea27b377798accfd2ba5084ceff5aaa languageName: node linkType: hard @@ -29488,7 +29488,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 7f241ad4028f32c1300eb8391493f192f622ed7e9564f993d8f3862be32dd995c8237f4691ea76327a323ef62808495a497eabf0c8fb0c6fa6556a69653a449f + checksum: 10c0/7f241ad4028f32c1300eb8391493f192f622ed7e9564f993d8f3862be32dd995c8237f4691ea76327a323ef62808495a497eabf0c8fb0c6fa6556a69653a449f languageName: node linkType: hard @@ -29568,7 +29568,7 @@ __metadata: "run-async@npm:^2.4.0": version: 2.4.1 resolution: "run-async@npm:2.4.1" - checksum: 35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 languageName: node linkType: hard @@ -29577,7 +29577,7 @@ __metadata: resolution: "run-parallel@npm:1.2.0" dependencies: queue-microtask: "npm:^1.2.2" - checksum: 200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 languageName: node linkType: hard @@ -29586,7 +29586,7 @@ __metadata: resolution: "run-queue@npm:1.0.3" dependencies: aproba: "npm:^1.1.1" - checksum: 4e8964279d8f160f9ffaabe82eaad11a1d4c0db596a0f2b5257ae9d2b900c7e1ffcece3e5719199436f50718e1e7f45bb4bf7a82e331a4e734d67c2588a90cbb + checksum: 10c0/4e8964279d8f160f9ffaabe82eaad11a1d4c0db596a0f2b5257ae9d2b900c7e1ffcece3e5719199436f50718e1e7f45bb4bf7a82e331a4e734d67c2588a90cbb languageName: node linkType: hard @@ -29595,7 +29595,7 @@ __metadata: resolution: "rxjs@npm:6.6.7" dependencies: tslib: "npm:^1.9.0" - checksum: e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe + checksum: 10c0/e556a13a9aa89395e5c9d825eabcfa325568d9c9990af720f3f29f04a888a3b854f25845c2b55875d875381abcae2d8100af9cacdc57576e7ed6be030a01d2fe languageName: node linkType: hard @@ -29604,7 +29604,7 @@ __metadata: resolution: "rxjs@npm:7.8.1" dependencies: tslib: "npm:^2.1.0" - checksum: 3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 languageName: node linkType: hard @@ -29616,21 +29616,21 @@ __metadata: get-intrinsic: "npm:^1.2.1" has-symbols: "npm:^1.0.3" isarray: "npm:^2.0.5" - checksum: 4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8 + checksum: 10c0/4b15ce5fce5ce4d7e744a63592cded88d2f27806ed229eadb2e42629cbcd40e770f7478608e75f455e7fe341acd8c0a01bdcd7146b10645ea7411c5e3c1d1dd8 languageName: node linkType: hard "safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": version: 5.1.2 resolution: "safe-buffer@npm:5.1.2" - checksum: 780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 languageName: node linkType: hard "safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" - checksum: 6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 languageName: node linkType: hard @@ -29641,7 +29641,7 @@ __metadata: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.1.3" is-regex: "npm:^1.1.4" - checksum: 14a81a7e683f97b2d6e9c8be61fddcf8ed7a02f4e64a825515f96bb1738eb007145359313741d2704d28b55b703a0f6300c749dde7c1dbc13952a2b85048ede2 + checksum: 10c0/14a81a7e683f97b2d6e9c8be61fddcf8ed7a02f4e64a825515f96bb1738eb007145359313741d2704d28b55b703a0f6300c749dde7c1dbc13952a2b85048ede2 languageName: node linkType: hard @@ -29650,7 +29650,7 @@ __metadata: resolution: "safe-regex2@npm:2.0.0" dependencies: ret: "npm:~0.2.0" - checksum: f499e4fc69caafd7dd8023759e69a32991baa66e90bec5e2a7777b907943b27068dbff4e7a32cc8231f1354fcb779142f419e85498ae1e37384dc60619509c27 + checksum: 10c0/f499e4fc69caafd7dd8023759e69a32991baa66e90bec5e2a7777b907943b27068dbff4e7a32cc8231f1354fcb779142f419e85498ae1e37384dc60619509c27 languageName: node linkType: hard @@ -29659,7 +29659,7 @@ __metadata: resolution: "safe-regex@npm:2.1.1" dependencies: regexp-tree: "npm:~0.1.1" - checksum: 53eb5d3ecf4b3c0954dff465eb179af4d2f5f77f74ba7b57489adbc4fa44454c3d391f37379cd28722d9ac6fa5b70be3f4645d4bd25df395fd99b934f6ec9265 + checksum: 10c0/53eb5d3ecf4b3c0954dff465eb179af4d2f5f77f74ba7b57489adbc4fa44454c3d391f37379cd28722d9ac6fa5b70be3f4645d4bd25df395fd99b934f6ec9265 languageName: node linkType: hard @@ -29668,35 +29668,35 @@ __metadata: resolution: "safe-regex@npm:1.1.0" dependencies: ret: "npm:~0.1.10" - checksum: 547d58aa5184cbef368fd5ed5f28d20f911614748c5da6b35f53fd6626396707587251e6e3d1e3010fd3ff1212e413841b8825eaa5f317017ca62a30899af31a + checksum: 10c0/547d58aa5184cbef368fd5ed5f28d20f911614748c5da6b35f53fd6626396707587251e6e3d1e3010fd3ff1212e413841b8825eaa5f317017ca62a30899af31a languageName: node linkType: hard "safe-stable-stringify@npm:^2.3.1": version: 2.4.3 resolution: "safe-stable-stringify@npm:2.4.3" - checksum: 81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 + checksum: 10c0/81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 languageName: node linkType: hard "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" - checksum: 7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 languageName: node linkType: hard "sax@npm:1.2.1": version: 1.2.1 resolution: "sax@npm:1.2.1" - checksum: 1ae269cfde0b3774b4c92eb744452b6740bde5c5744fe5cadef6f496e42d9b632f483fb6aff9a23c0749c94c6951b06b0c5a90a5e99c879d3401cfd5ba61dc02 + checksum: 10c0/1ae269cfde0b3774b4c92eb744452b6740bde5c5744fe5cadef6f496e42d9b632f483fb6aff9a23c0749c94c6951b06b0c5a90a5e99c879d3401cfd5ba61dc02 languageName: node linkType: hard "sax@npm:>=0.6.0": version: 1.2.4 resolution: "sax@npm:1.2.4" - checksum: 6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 + checksum: 10c0/6e9b05ff443ee5e5096ce92d31c0740a20d33002fad714ebcb8fc7a664d9ee159103ebe8f7aef0a1f7c5ecacdd01f177f510dff95611c589399baf76437d3fe3 languageName: node linkType: hard @@ -29705,7 +29705,7 @@ __metadata: resolution: "saxes@npm:6.0.0" dependencies: xmlchars: "npm:^2.2.0" - checksum: 3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 languageName: node linkType: hard @@ -29714,7 +29714,7 @@ __metadata: resolution: "scheduler@npm:0.23.0" dependencies: loose-envify: "npm:^1.1.0" - checksum: b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd languageName: node linkType: hard @@ -29725,7 +29725,7 @@ __metadata: ajv: "npm:^6.1.0" ajv-errors: "npm:^1.0.0" ajv-keywords: "npm:^3.1.0" - checksum: 670e22d7f0ff0b6f4514a4d6fb27c359101b44b7dbfd9563af201af72eb4a9ff06144020cab5f85b16e88821fd09b97cbdae6c893721c6528c8cb704124e6a2f + checksum: 10c0/670e22d7f0ff0b6f4514a4d6fb27c359101b44b7dbfd9563af201af72eb4a9ff06144020cab5f85b16e88821fd09b97cbdae6c893721c6528c8cb704124e6a2f languageName: node linkType: hard @@ -29736,7 +29736,7 @@ __metadata: "@types/json-schema": "npm:^7.0.5" ajv: "npm:^6.12.4" ajv-keywords: "npm:^3.5.2" - checksum: f484f34464edd8758712d5d3ba25a306e367dac988aecaf4ce112e99baae73f33a807b5cf869240bb6648c80720b36af2d7d72be3a27faa49a2d4fc63fa3f85f + checksum: 10c0/f484f34464edd8758712d5d3ba25a306e367dac988aecaf4ce112e99baae73f33a807b5cf869240bb6648c80720b36af2d7d72be3a27faa49a2d4fc63fa3f85f languageName: node linkType: hard @@ -29747,7 +29747,7 @@ __metadata: "@types/json-schema": "npm:^7.0.8" ajv: "npm:^6.12.5" ajv-keywords: "npm:^3.5.2" - checksum: fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 languageName: node linkType: hard @@ -29759,21 +29759,21 @@ __metadata: ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 languageName: node linkType: hard "scuid@npm:^1.1.0": version: 1.1.0 resolution: "scuid@npm:1.1.0" - checksum: 01c6bd2657ceaa148ead0c836df6251f561166142059261022a38dba429b30141e27ab3c0eca1012b88912f51a9e848e475fe1b6259ef1c61a0a7f6eb54fb261 + checksum: 10c0/01c6bd2657ceaa148ead0c836df6251f561166142059261022a38dba429b30141e27ab3c0eca1012b88912f51a9e848e475fe1b6259ef1c61a0a7f6eb54fb261 languageName: node linkType: hard "secure-json-parse@npm:^2.4.0, secure-json-parse@npm:^2.7.0": version: 2.7.0 resolution: "secure-json-parse@npm:2.7.0" - checksum: f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4 + checksum: 10c0/f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4 languageName: node linkType: hard @@ -29782,7 +29782,7 @@ __metadata: resolution: "selderee@npm:0.10.0" dependencies: parseley: "npm:^0.11.0" - checksum: 9d54c73139f1ff84d4f773bc8aa9ce529c7f38266470f3fd55e1879cf5f898a292bf02228695fddc5291e08cd832fef92b8d187841d43c609c8cef50d1db3ffa + checksum: 10c0/9d54c73139f1ff84d4f773bc8aa9ce529c7f38266470f3fd55e1879cf5f898a292bf02228695fddc5291e08cd832fef92b8d187841d43c609c8cef50d1db3ffa languageName: node linkType: hard @@ -29791,14 +29791,14 @@ __metadata: resolution: "selderee@npm:0.11.0" dependencies: parseley: "npm:^0.12.0" - checksum: c2ad8313a0dbf3c0b74752a8d03cfbc0931ae77a36679cdb64733eb732c1762f95a5174249bf7e8b8103874cb0e013a030f9c8b72f5d41e62f1d847d4a845d39 + checksum: 10c0/c2ad8313a0dbf3c0b74752a8d03cfbc0931ae77a36679cdb64733eb732c1762f95a5174249bf7e8b8103874cb0e013a030f9c8b72f5d41e62f1d847d4a845d39 languageName: node linkType: hard "select-hose@npm:^2.0.0": version: 2.0.0 resolution: "select-hose@npm:2.0.0" - checksum: 01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 + checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 languageName: node linkType: hard @@ -29807,7 +29807,7 @@ __metadata: resolution: "selfsigned@npm:2.1.1" dependencies: node-forge: "npm:^1" - checksum: 4a2509c8a5bd49c3630a799de66b317352b52746bec981133d4f8098365da35d2344f0fbedf14aacf2cd1e88682048e2df11ad9dc59331d3b1c0a5ec3e6e16ad + checksum: 10c0/4a2509c8a5bd49c3630a799de66b317352b52746bec981133d4f8098365da35d2344f0fbedf14aacf2cd1e88682048e2df11ad9dc59331d3b1c0a5ec3e6e16ad languageName: node linkType: hard @@ -29816,7 +29816,7 @@ __metadata: resolution: "semver-try-require@npm:6.2.3" dependencies: semver: "npm:^7.5.3" - checksum: a2ceb988a6a10e912b9677e3f6c21af5af0eefbd3e0512116a6d37a0f27d806b9610fabd51ced0e283d02154f18298b683575c166beedfd7db21579b9c4a32ad + checksum: 10c0/a2ceb988a6a10e912b9677e3f6c21af5af0eefbd3e0512116a6d37a0f27d806b9610fabd51ced0e283d02154f18298b683575c166beedfd7db21579b9c4a32ad languageName: node linkType: hard @@ -29825,7 +29825,7 @@ __metadata: resolution: "semver@npm:5.7.1" bin: semver: ./bin/semver - checksum: d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 + checksum: 10c0/d4884f2aeca28bff35d0bd40ff0a9b2dfc4b36a883bf0ea5dc15d10d9a01bdc9041035b05f825d4b5ac8a56e490703dbf0d986d054de82cc5e9bad3f02ca6e00 languageName: node linkType: hard @@ -29836,7 +29836,7 @@ __metadata: lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: 4cf3bab7e8cf8c2ae521fc4bcc50a4d6912a836360796b23b9f1c26f45d27a73f870e47664df4770bde0dd60dc4d4781a05fd49fe91d72376ea5519b9e791459 + checksum: 10c0/4cf3bab7e8cf8c2ae521fc4bcc50a4d6912a836360796b23b9f1c26f45d27a73f870e47664df4770bde0dd60dc4d4781a05fd49fe91d72376ea5519b9e791459 languageName: node linkType: hard @@ -29847,7 +29847,7 @@ __metadata: lru-cache: "npm:^6.0.0" bin: semver: bin/semver.js - checksum: 5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e languageName: node linkType: hard @@ -29856,7 +29856,7 @@ __metadata: resolution: "semver@npm:6.3.1" bin: semver: bin/semver.js - checksum: e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d languageName: node linkType: hard @@ -29877,7 +29877,7 @@ __metadata: on-finished: "npm:2.4.1" range-parser: "npm:~1.2.1" statuses: "npm:2.0.1" - checksum: 0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a + checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a languageName: node linkType: hard @@ -29888,7 +29888,7 @@ __metadata: no-case: "npm:^3.0.4" tslib: "npm:^2.0.3" upper-case-first: "npm:^2.0.2" - checksum: 9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 + checksum: 10c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 languageName: node linkType: hard @@ -29897,7 +29897,7 @@ __metadata: resolution: "serialize-javascript@npm:4.0.0" dependencies: randombytes: "npm:^2.1.0" - checksum: 510dfe7f0311c0b2f7ab06311afa1668ba2969ab2f1faaac0a4924ede76b7f22ba85cfdeaa0052ec5a047bca42c8cd8ac8df8f0efe52f9bd290b3a39ae69fe9d + checksum: 10c0/510dfe7f0311c0b2f7ab06311afa1668ba2969ab2f1faaac0a4924ede76b7f22ba85cfdeaa0052ec5a047bca42c8cd8ac8df8f0efe52f9bd290b3a39ae69fe9d languageName: node linkType: hard @@ -29906,7 +29906,7 @@ __metadata: resolution: "serialize-javascript@npm:6.0.1" dependencies: randombytes: "npm:^2.1.0" - checksum: 1af427f4fee3fee051f54ffe15f77068cff78a3c96d20f5c1178d20630d3ab122d8350e639d5e13cde8111ef9db9439b871305ffb185e24be0a2149cec230988 + checksum: 10c0/1af427f4fee3fee051f54ffe15f77068cff78a3c96d20f5c1178d20630d3ab122d8350e639d5e13cde8111ef9db9439b871305ffb185e24be0a2149cec230988 languageName: node linkType: hard @@ -29921,7 +29921,7 @@ __metadata: http-errors: "npm:~1.6.2" mime-types: "npm:~2.1.17" parseurl: "npm:~1.3.2" - checksum: a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c + checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c languageName: node linkType: hard @@ -29933,21 +29933,21 @@ __metadata: escape-html: "npm:~1.0.3" parseurl: "npm:~1.3.3" send: "npm:0.18.0" - checksum: fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba + checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba languageName: node linkType: hard "set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" - checksum: 9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 languageName: node linkType: hard "set-cookie-parser@npm:^2.4.1, set-cookie-parser@npm:^2.4.6": version: 2.6.0 resolution: "set-cookie-parser@npm:2.6.0" - checksum: 739da029f0e56806a103fcd5501d9c475e19e77bd8274192d7ae5c374ae714a82bba9a7ac00b0330a18227c5644b08df9e442240527be578f5a6030f9bb2bb80 + checksum: 10c0/739da029f0e56806a103fcd5501d9c475e19e77bd8274192d7ae5c374ae714a82bba9a7ac00b0330a18227c5644b08df9e442240527be578f5a6030f9bb2bb80 languageName: node linkType: hard @@ -29959,7 +29959,7 @@ __metadata: get-intrinsic: "npm:^1.2.1" gopd: "npm:^1.0.1" has-property-descriptors: "npm:^1.0.0" - checksum: a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95 + checksum: 10c0/a29e255c116c29e3323b851c4f46c58c91be9bb8b065f191e2ea1807cb2c839df56e3175732a498e0c6d54626ba6b6fef896bf699feb7ab70c42dc47eb247c95 languageName: node linkType: hard @@ -29970,7 +29970,7 @@ __metadata: define-data-property: "npm:^1.0.1" functions-have-names: "npm:^1.2.3" has-property-descriptors: "npm:^1.0.0" - checksum: 6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a + checksum: 10c0/6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a languageName: node linkType: hard @@ -29982,28 +29982,28 @@ __metadata: is-extendable: "npm:^0.1.1" is-plain-object: "npm:^2.0.3" split-string: "npm:^3.0.1" - checksum: 4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b + checksum: 10c0/4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b languageName: node linkType: hard "setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" - checksum: 5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 + checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 languageName: node linkType: hard "setprototypeof@npm:1.1.0": version: 1.1.0 resolution: "setprototypeof@npm:1.1.0" - checksum: a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 languageName: node linkType: hard "setprototypeof@npm:1.2.0": version: 1.2.0 resolution: "setprototypeof@npm:1.2.0" - checksum: 68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc languageName: node linkType: hard @@ -30015,7 +30015,7 @@ __metadata: safe-buffer: "npm:^5.0.1" bin: sha.js: ./bin.js - checksum: b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 languageName: node linkType: hard @@ -30024,14 +30024,14 @@ __metadata: resolution: "shallow-clone@npm:3.0.1" dependencies: kind-of: "npm:^6.0.2" - checksum: 7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e languageName: node linkType: hard "shallowequal@npm:^1.1.0": version: 1.1.0 resolution: "shallowequal@npm:1.1.0" - checksum: b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c + checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c languageName: node linkType: hard @@ -30040,28 +30040,28 @@ __metadata: resolution: "shebang-command@npm:2.0.0" dependencies: shebang-regex: "npm:^3.0.0" - checksum: a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e languageName: node linkType: hard "shebang-regex@npm:^3.0.0": version: 3.0.0 resolution: "shebang-regex@npm:3.0.0" - checksum: 1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 languageName: node linkType: hard "shell-exec@npm:1.0.2": version: 1.0.2 resolution: "shell-exec@npm:1.0.2" - checksum: 3733ed251bc025340a373da151c44d36e69d37f570e94f5dd6a968427e8d9f751a58dd87c5a01bf0ad1289ad1de963a425aaf14ad3a06f8aee56f776462b63ca + checksum: 10c0/3733ed251bc025340a373da151c44d36e69d37f570e94f5dd6a968427e8d9f751a58dd87c5a01bf0ad1289ad1de963a425aaf14ad3a06f8aee56f776462b63ca languageName: node linkType: hard "shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" - checksum: 8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a languageName: node linkType: hard @@ -30072,35 +30072,35 @@ __metadata: call-bind: "npm:^1.0.0" get-intrinsic: "npm:^1.0.2" object-inspect: "npm:^1.9.0" - checksum: 054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 + checksum: 10c0/054a5d23ee35054b2c4609b9fd2a0587760737782b5d765a9c7852264710cc39c6dcb56a9bbd6c12cd84071648aea3edb2359d2f6e560677eedadce511ac1da5 languageName: node linkType: hard "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" - checksum: 3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34 + checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34 languageName: node linkType: hard "signal-exit@npm:3.0.7, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" - checksum: 25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 languageName: node linkType: hard "signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" - checksum: 41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 languageName: node linkType: hard "signedsource@npm:^1.0.0": version: 1.0.0 resolution: "signedsource@npm:1.0.0" - checksum: dbb4ade9c94888e83c16d23ef1a43195799de091d366d130be286415e8aeb97b3f25b14fd26fc5888e1335d703ad561374fddee32e43b7cea04751b93d178a47 + checksum: 10c0/dbb4ade9c94888e83c16d23ef1a43195799de091d366d130be286415e8aeb97b3f25b14fd26fc5888e1335d703ad561374fddee32e43b7cea04751b93d178a47 languageName: node linkType: hard @@ -30113,7 +30113,7 @@ __metadata: make-fetch-happen: "npm:^11.0.1" bin: sigstore: bin/sigstore.js - checksum: 2cf2b7fe40323ef7a664627ac9e862cad985685bbc14528355d7a0813916dd4c96d94ffd3149de08d2ea33a86dfd4b073908d995cfcedba510cdb5073a49382c + checksum: 10c0/2cf2b7fe40323ef7a664627ac9e862cad985685bbc14528355d7a0813916dd4c96d94ffd3149de08d2ea33a86dfd4b073908d995cfcedba510cdb5073a49382c languageName: node linkType: hard @@ -30127,7 +30127,7 @@ __metadata: "@sigstore/sign": "npm:^2.2.1" "@sigstore/tuf": "npm:^2.3.0" "@sigstore/verify": "npm:^0.1.0" - checksum: 0e4d0f4301ecab3d176b6fc528368a360bb6d9a3916bfd6ed26c3a3e815ac3aa160044eb2024c38270275cdeb1025df3cd3e90af977dd305204510daa0fb0de0 + checksum: 10c0/0e4d0f4301ecab3d176b6fc528368a360bb6d9a3916bfd6ed26c3a3e815ac3aa160044eb2024c38270275cdeb1025df3cd3e90af977dd305204510daa0fb0de0 languageName: node linkType: hard @@ -30136,7 +30136,7 @@ __metadata: resolution: "simple-update-notifier@npm:2.0.0" dependencies: semver: "npm:^7.5.3" - checksum: 2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c + checksum: 10c0/2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c languageName: node linkType: hard @@ -30147,42 +30147,42 @@ __metadata: "@polka/url": "npm:^1.0.0-next.20" mrmime: "npm:^1.0.0" totalist: "npm:^3.0.0" - checksum: 333bd665ee5ac3805047ea47757e04e2b18ca562749b9a07f5bbbee6dabd99ff00011604689b1ada3d22e46a4198c61e05e2d1abd5454d94da483ce3a3813205 + checksum: 10c0/333bd665ee5ac3805047ea47757e04e2b18ca562749b9a07f5bbbee6dabd99ff00011604689b1ada3d22e46a4198c61e05e2d1abd5454d94da483ce3a3813205 languageName: node linkType: hard "sisteransi@npm:^1.0.5": version: 1.0.5 resolution: "sisteransi@npm:1.0.5" - checksum: 230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 languageName: node linkType: hard "slash@npm:3.0.0, slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" - checksum: e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b languageName: node linkType: hard "slash@npm:^2.0.0": version: 2.0.0 resolution: "slash@npm:2.0.0" - checksum: f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 languageName: node linkType: hard "slash@npm:^4.0.0": version: 4.0.0 resolution: "slash@npm:4.0.0" - checksum: b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 languageName: node linkType: hard "slash@npm:^5.0.0": version: 5.1.0 resolution: "slash@npm:5.1.0" - checksum: eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 + checksum: 10c0/eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 languageName: node linkType: hard @@ -30193,7 +30193,7 @@ __metadata: ansi-styles: "npm:^4.0.0" astral-regex: "npm:^2.0.0" is-fullwidth-code-point: "npm:^3.0.0" - checksum: 88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c languageName: node linkType: hard @@ -30204,7 +30204,7 @@ __metadata: ansi-styles: "npm:^4.0.0" astral-regex: "npm:^2.0.0" is-fullwidth-code-point: "npm:^3.0.0" - checksum: 6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 languageName: node linkType: hard @@ -30214,21 +30214,21 @@ __metadata: dependencies: ansi-styles: "npm:^6.0.0" is-fullwidth-code-point: "npm:^4.0.0" - checksum: 2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f + checksum: 10c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f languageName: node linkType: hard "slick@npm:^1.12.2": version: 1.12.2 resolution: "slick@npm:1.12.2" - checksum: fea97c36b2bdcd1b80caea150cd8135dc9d3ffe659bbe04fa6f4b4dff373f5d5aef09a8ef384b331c3fdd9567faf447b75b850ab35d2c69ff8a8a92def3d49e1 + checksum: 10c0/fea97c36b2bdcd1b80caea150cd8135dc9d3ffe659bbe04fa6f4b4dff373f5d5aef09a8ef384b331c3fdd9567faf447b75b850ab35d2c69ff8a8a92def3d49e1 languageName: node linkType: hard "smart-buffer@npm:^4.2.0": version: 4.2.0 resolution: "smart-buffer@npm:4.2.0" - checksum: a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 languageName: node linkType: hard @@ -30238,7 +30238,7 @@ __metadata: dependencies: dot-case: "npm:^3.0.4" tslib: "npm:^2.0.3" - checksum: ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd + checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd languageName: node linkType: hard @@ -30248,7 +30248,7 @@ __metadata: dependencies: map-obj: "npm:^4.1.0" to-snake-case: "npm:^1.0.0" - checksum: ead9fda98fe2ff2ec03b2169867a695c4c8cd2d624025fcaa24df68733c92a6de0a1e070e2b6b490b41ced7f2e0ad47256245c6f05e045acba7e76061731198c + checksum: 10c0/ead9fda98fe2ff2ec03b2169867a695c4c8cd2d624025fcaa24df68733c92a6de0a1e070e2b6b490b41ced7f2e0ad47256245c6f05e045acba7e76061731198c languageName: node linkType: hard @@ -30259,7 +30259,7 @@ __metadata: map-obj: "npm:^4.1.0" snake-case: "npm:^3.0.4" type-fest: "npm:^2.5.2" - checksum: 72afc51818d9f8cee00b4ccdc3b83bb26e48de21c4ef77d28d0d70b431bec17e48aa3e64c2c418fd9f2b70ac0a8afce24b4e615238877c4ee451b5212b983fb0 + checksum: 10c0/72afc51818d9f8cee00b4ccdc3b83bb26e48de21c4ef77d28d0d70b431bec17e48aa3e64c2c418fd9f2b70ac0a8afce24b4e615238877c4ee451b5212b983fb0 languageName: node linkType: hard @@ -30270,7 +30270,7 @@ __metadata: define-property: "npm:^1.0.0" isobject: "npm:^3.0.0" snapdragon-util: "npm:^3.0.1" - checksum: 7616e6a1ca054afe3ad8defda17ebe4c73b0800d2e0efd635c44ee1b286f8ac7900517314b5330862ce99b28cd2782348ee78bae573ff0f55832ad81d9657f3f + checksum: 10c0/7616e6a1ca054afe3ad8defda17ebe4c73b0800d2e0efd635c44ee1b286f8ac7900517314b5330862ce99b28cd2782348ee78bae573ff0f55832ad81d9657f3f languageName: node linkType: hard @@ -30279,7 +30279,7 @@ __metadata: resolution: "snapdragon-util@npm:3.0.1" dependencies: kind-of: "npm:^3.2.0" - checksum: 4441856d343399ba7f37f79681949d51b922e290fcc07e7bc94655a50f584befa4fb08f40c3471cd160e004660161964d8ff140cba49baa59aa6caba774240e3 + checksum: 10c0/4441856d343399ba7f37f79681949d51b922e290fcc07e7bc94655a50f584befa4fb08f40c3471cd160e004660161964d8ff140cba49baa59aa6caba774240e3 languageName: node linkType: hard @@ -30295,7 +30295,7 @@ __metadata: source-map: "npm:^0.5.6" source-map-resolve: "npm:^0.5.0" use: "npm:^3.1.0" - checksum: dfdac1f73d47152d72fc07f4322da09bbddfa31c1c9c3ae7346f252f778c45afa5b03e90813332f02f04f6de8003b34a168c456f8bb719024d092f932520ffca + checksum: 10c0/dfdac1f73d47152d72fc07f4322da09bbddfa31c1c9c3ae7346f252f778c45afa5b03e90813332f02f04f6de8003b34a168c456f8bb719024d092f932520ffca languageName: node linkType: hard @@ -30306,7 +30306,7 @@ __metadata: faye-websocket: "npm:^0.11.3" uuid: "npm:^8.3.2" websocket-driver: "npm:^0.7.4" - checksum: aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 languageName: node linkType: hard @@ -30317,7 +30317,7 @@ __metadata: agent-base: "npm:^6.0.2" debug: "npm:^4.3.3" socks: "npm:^2.6.2" - checksum: b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 + checksum: 10c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 languageName: node linkType: hard @@ -30328,7 +30328,7 @@ __metadata: agent-base: "npm:^7.0.2" debug: "npm:^4.3.4" socks: "npm:^2.7.1" - checksum: a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 languageName: node linkType: hard @@ -30338,7 +30338,7 @@ __metadata: dependencies: ip: "npm:^2.0.0" smart-buffer: "npm:^4.2.0" - checksum: 43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130 + checksum: 10c0/43f69dbc9f34fc8220bc51c6eea1c39715ab3cfdb115d6e3285f6c7d1a603c5c75655668a5bbc11e3c7e2c99d60321fb8d7ab6f38cda6a215fadd0d6d0b52130 languageName: node linkType: hard @@ -30347,7 +30347,7 @@ __metadata: resolution: "sonic-boom@npm:3.7.0" dependencies: atomic-sleep: "npm:^1.0.0" - checksum: 57a3d560efb77f4576db111168ee2649c99e7869fda6ce0ec2a4e5458832d290ba58d74b073ddb5827d9a30f96d23cff79157993d919e1a6d5f28d8b6391c7f0 + checksum: 10c0/57a3d560efb77f4576db111168ee2649c99e7869fda6ce0ec2a4e5458832d290ba58d74b073ddb5827d9a30f96d23cff79157993d919e1a6d5f28d8b6391c7f0 languageName: node linkType: hard @@ -30356,21 +30356,21 @@ __metadata: resolution: "sort-keys@npm:2.0.0" dependencies: is-plain-obj: "npm:^1.0.0" - checksum: c11a6313995cb67ccf35fed4b1f6734176cc1d1e350ee311c061a2340ada4f7e23b046db064d518b63adba98c0f763739920c59fb4659a0b8482ec7a1f255081 + checksum: 10c0/c11a6313995cb67ccf35fed4b1f6734176cc1d1e350ee311c061a2340ada4f7e23b046db064d518b63adba98c0f763739920c59fb4659a0b8482ec7a1f255081 languageName: node linkType: hard "source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": version: 2.0.1 resolution: "source-list-map@npm:2.0.1" - checksum: 2e5e421b185dcd857f46c3c70e2e711a65d717b78c5f795e2e248c9d67757882ea989b80ebc08cf164eeeda5f4be8aa95d3b990225070b2daaaf3257c5958149 + checksum: 10c0/2e5e421b185dcd857f46c3c70e2e711a65d717b78c5f795e2e248c9d67757882ea989b80ebc08cf164eeeda5f4be8aa95d3b990225070b2daaaf3257c5958149 languageName: node linkType: hard "source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" - checksum: 32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 + checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 languageName: node linkType: hard @@ -30383,7 +30383,7 @@ __metadata: resolve-url: "npm:^0.2.1" source-map-url: "npm:^0.4.0" urix: "npm:^0.1.0" - checksum: 410acbe93882e058858d4c1297be61da3e1533f95f25b95903edddc1fb719654e705663644677542d1fb78a66390238fad1a57115fc958a0724cf9bb509caf57 + checksum: 10c0/410acbe93882e058858d4c1297be61da3e1533f95f25b95903edddc1fb719654e705663644677542d1fb78a66390238fad1a57115fc958a0724cf9bb509caf57 languageName: node linkType: hard @@ -30393,7 +30393,7 @@ __metadata: dependencies: buffer-from: "npm:^1.0.0" source-map: "npm:^0.6.0" - checksum: 137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e languageName: node linkType: hard @@ -30403,49 +30403,49 @@ __metadata: dependencies: buffer-from: "npm:^1.0.0" source-map: "npm:^0.6.0" - checksum: 9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d languageName: node linkType: hard "source-map-url@npm:^0.4.0": version: 0.4.1 resolution: "source-map-url@npm:0.4.1" - checksum: f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 + checksum: 10c0/f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 languageName: node linkType: hard "source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" - checksum: ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 languageName: node linkType: hard "source-map@npm:0.7.4, source-map@npm:^0.7.3": version: 0.7.4 resolution: "source-map@npm:0.7.4" - checksum: dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc languageName: node linkType: hard "source-map@npm:^0.5.6": version: 0.5.7 resolution: "source-map@npm:0.5.7" - checksum: 904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 languageName: node linkType: hard "space-separated-tokens@npm:^1.0.0": version: 1.1.5 resolution: "space-separated-tokens@npm:1.1.5" - checksum: 3ee0a6905f89e1ffdfe474124b1ade9fe97276a377a0b01350bc079b6ec566eb5b219e26064cc5b7f3899c05bde51ffbc9154290b96eaf82916a1e2c2c13ead9 + checksum: 10c0/3ee0a6905f89e1ffdfe474124b1ade9fe97276a377a0b01350bc079b6ec566eb5b219e26064cc5b7f3899c05bde51ffbc9154290b96eaf82916a1e2c2c13ead9 languageName: node linkType: hard "spawn-command@npm:0.0.2": version: 0.0.2 resolution: "spawn-command@npm:0.0.2" - checksum: b22f2d71239e6e628a400831861ba747750bbb40c0a53323754cf7b84330b73d81e40ff1f9055e6d1971818679510208a9302e13d9ff3b32feb67e74d7a1b3ef + checksum: 10c0/b22f2d71239e6e628a400831861ba747750bbb40c0a53323754cf7b84330b73d81e40ff1f9055e6d1971818679510208a9302e13d9ff3b32feb67e74d7a1b3ef languageName: node linkType: hard @@ -30455,14 +30455,14 @@ __metadata: dependencies: spdx-expression-parse: "npm:^3.0.0" spdx-license-ids: "npm:^3.0.0" - checksum: 49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 + checksum: 10c0/49208f008618b9119208b0dadc9208a3a55053f4fd6a0ae8116861bd22696fc50f4142a35ebfdb389e05ccf2de8ad142573fefc9e26f670522d899f7b2fe7386 languageName: node linkType: hard "spdx-exceptions@npm:^2.1.0": version: 2.3.0 resolution: "spdx-exceptions@npm:2.3.0" - checksum: 83089e77d2a91cb6805a5c910a2bedb9e50799da091f532c2ba4150efdef6e53f121523d3e2dc2573a340dc0189e648b03157097f65465b3a0c06da1f18d7e8a + checksum: 10c0/83089e77d2a91cb6805a5c910a2bedb9e50799da091f532c2ba4150efdef6e53f121523d3e2dc2573a340dc0189e648b03157097f65465b3a0c06da1f18d7e8a languageName: node linkType: hard @@ -30472,14 +30472,14 @@ __metadata: dependencies: spdx-exceptions: "npm:^2.1.0" spdx-license-ids: "npm:^3.0.0" - checksum: 6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 + checksum: 10c0/6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171 languageName: node linkType: hard "spdx-license-ids@npm:^3.0.0": version: 3.0.13 resolution: "spdx-license-ids@npm:3.0.13" - checksum: a5cb77ea7be86d574c8876970920e34d9b37f2fb6e361e6b732b61267afbc63dd37831160b731f85c1478f5ba95ae00369742555920e3c694f047f7068d33318 + checksum: 10c0/a5cb77ea7be86d574c8876970920e34d9b37f2fb6e361e6b732b61267afbc63dd37831160b731f85c1478f5ba95ae00369742555920e3c694f047f7068d33318 languageName: node linkType: hard @@ -30493,7 +30493,7 @@ __metadata: obuf: "npm:^1.1.2" readable-stream: "npm:^3.0.6" wbuf: "npm:^1.7.3" - checksum: eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb + checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb languageName: node linkType: hard @@ -30506,7 +30506,7 @@ __metadata: http-deceiver: "npm:^1.2.7" select-hose: "npm:^2.0.0" spdy-transport: "npm:^3.0.0" - checksum: 983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf + checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf languageName: node linkType: hard @@ -30515,14 +30515,14 @@ __metadata: resolution: "split-string@npm:3.1.0" dependencies: extend-shallow: "npm:^3.0.0" - checksum: 72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70 + checksum: 10c0/72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70 languageName: node linkType: hard "split2@npm:4.2.0, split2@npm:^4.0.0": version: 4.2.0 resolution: "split2@npm:4.2.0" - checksum: b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 languageName: node linkType: hard @@ -30531,7 +30531,7 @@ __metadata: resolution: "split2@npm:3.2.2" dependencies: readable-stream: "npm:^3.0.0" - checksum: 2dad5603c52b353939befa3e2f108f6e3aff42b204ad0f5f16dd12fd7c2beab48d117184ce6f7c8854f9ee5ffec6faae70d243711dd7d143a9f635b4a285de4e + checksum: 10c0/2dad5603c52b353939befa3e2f108f6e3aff42b204ad0f5f16dd12fd7c2beab48d117184ce6f7c8854f9ee5ffec6faae70d243711dd7d143a9f635b4a285de4e languageName: node linkType: hard @@ -30540,7 +30540,7 @@ __metadata: resolution: "split@npm:0.3.3" dependencies: through: "npm:2" - checksum: 88c09b1b4de84953bf5d6c153123a1fbb20addfea9381f70d27b4eb6b2bfbadf25d313f8f5d3fd727d5679b97bfe54da04766b91010f131635bf49e51d5db3fc + checksum: 10c0/88c09b1b4de84953bf5d6c153123a1fbb20addfea9381f70d27b4eb6b2bfbadf25d313f8f5d3fd727d5679b97bfe54da04766b91010f131635bf49e51d5db3fc languageName: node linkType: hard @@ -30549,7 +30549,7 @@ __metadata: resolution: "split@npm:1.0.1" dependencies: through: "npm:2" - checksum: 7f489e7ed5ff8a2e43295f30a5197ffcb2d6202c9cf99357f9690d645b19c812bccf0be3ff336fea5054cda17ac96b91d67147d95dbfc31fbb5804c61962af85 + checksum: 10c0/7f489e7ed5ff8a2e43295f30a5197ffcb2d6202c9cf99357f9690d645b19c812bccf0be3ff336fea5054cda17ac96b91d67147d95dbfc31fbb5804c61962af85 languageName: node linkType: hard @@ -30558,14 +30558,14 @@ __metadata: resolution: "sponge-case@npm:1.0.1" dependencies: tslib: "npm:^2.0.3" - checksum: dbe42f300ae9f7fbd83c40f71c2a61ecf9c86b927b5668bae067d1e516e314671cc85166f87017e51b56938409b1fc042719eb46a6d5bb30cc1cf23252a82761 + checksum: 10c0/dbe42f300ae9f7fbd83c40f71c2a61ecf9c86b927b5668bae067d1e516e314671cc85166f87017e51b56938409b1fc042719eb46a6d5bb30cc1cf23252a82761 languageName: node linkType: hard "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" - checksum: ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb languageName: node linkType: hard @@ -30586,7 +30586,7 @@ __metadata: sshpk-conv: bin/sshpk-conv sshpk-sign: bin/sshpk-sign sshpk-verify: bin/sshpk-verify - checksum: cf5e7f4c72e8a505ef41daac9f9ca26da365cfe26ae265a01ce98a8868991943857a8526c1cf98a42ef0dc4edf1dbe4e77aeea378cfeb58054beb78505e85402 + checksum: 10c0/cf5e7f4c72e8a505ef41daac9f9ca26da365cfe26ae265a01ce98a8868991943857a8526c1cf98a42ef0dc4edf1dbe4e77aeea378cfeb58054beb78505e85402 languageName: node linkType: hard @@ -30595,7 +30595,7 @@ __metadata: resolution: "ssri@npm:10.0.5" dependencies: minipass: "npm:^7.0.3" - checksum: b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 languageName: node linkType: hard @@ -30604,7 +30604,7 @@ __metadata: resolution: "ssri@npm:6.0.2" dependencies: figgy-pudding: "npm:^3.5.1" - checksum: e6f18c57dc9fed69343db5c59f95ef334e9664bfbdbad686c190ef2c6ad6b35e9b56cb203f3e4eb7eee6cb7bb602daa26dab6685e3847f0b5c464cdf7d9c2cee + checksum: 10c0/e6f18c57dc9fed69343db5c59f95ef334e9664bfbdbad686c190ef2c6ad6b35e9b56cb203f3e4eb7eee6cb7bb602daa26dab6685e3847f0b5c464cdf7d9c2cee languageName: node linkType: hard @@ -30613,7 +30613,7 @@ __metadata: resolution: "ssri@npm:9.0.1" dependencies: minipass: "npm:^3.1.1" - checksum: c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 + checksum: 10c0/c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 languageName: node linkType: hard @@ -30622,21 +30622,21 @@ __metadata: resolution: "stack-utils@npm:2.0.6" dependencies: escape-string-regexp: "npm:^2.0.0" - checksum: 651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a languageName: node linkType: hard "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" - checksum: 89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983 + checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983 languageName: node linkType: hard "stackframe@npm:^1.3.4": version: 1.3.4 resolution: "stackframe@npm:1.3.4" - checksum: 18410f7a1e0c5d211a4effa83bdbf24adbe8faa8c34db52e1cd3e89837518c592be60b60d8b7270ac53eeeb8b807cd11b399a41667f6c9abb41059c3ccc8a989 + checksum: 10c0/18410f7a1e0c5d211a4effa83bdbf24adbe8faa8c34db52e1cd3e89837518c592be60b60d8b7270ac53eeeb8b807cd11b399a41667f6c9abb41059c3ccc8a989 languageName: node linkType: hard @@ -30646,14 +30646,14 @@ __metadata: dependencies: as-table: "npm:^1.0.36" get-source: "npm:^2.0.12" - checksum: e17357d0a532d303138899b910ab660572009a1f4cde1cbf73b99416957a2378e6e1c791b3c31b043cf7c5f37647da1dd114e66c9203f23c65b34f783665405b + checksum: 10c0/e17357d0a532d303138899b910ab660572009a1f4cde1cbf73b99416957a2378e6e1c791b3c31b043cf7c5f37647da1dd114e66c9203f23c65b34f783665405b languageName: node linkType: hard "standard-as-callback@npm:^2.1.0": version: 2.1.0 resolution: "standard-as-callback@npm:2.1.0" - checksum: 012677236e3d3fdc5689d29e64ea8a599331c4babe86956bf92fc5e127d53f85411c5536ee0079c52c43beb0026b5ce7aa1d834dd35dd026e82a15d1bcaead1f + checksum: 10c0/012677236e3d3fdc5689d29e64ea8a599331c4babe86956bf92fc5e127d53f85411c5536ee0079c52c43beb0026b5ce7aa1d834dd35dd026e82a15d1bcaead1f languageName: node linkType: hard @@ -30663,28 +30663,28 @@ __metadata: dependencies: define-property: "npm:^0.2.5" object-copy: "npm:^0.1.0" - checksum: 284f5865a9e19d079f1badbcd70d5f9f82e7a08393f818a220839cd5f71729e89105e1c95322bd28e833161d484cee671380ca443869ae89578eef2bf55c0653 + checksum: 10c0/284f5865a9e19d079f1badbcd70d5f9f82e7a08393f818a220839cd5f71729e89105e1c95322bd28e833161d484cee671380ca443869ae89578eef2bf55c0653 languageName: node linkType: hard "statuses@npm:2.0.1": version: 2.0.1 resolution: "statuses@npm:2.0.1" - checksum: 34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 languageName: node linkType: hard "statuses@npm:>= 1.4.0 < 2": version: 1.5.0 resolution: "statuses@npm:1.5.0" - checksum: e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 languageName: node linkType: hard "std-env@npm:^3.5.0": version: 3.7.0 resolution: "std-env@npm:3.7.0" - checksum: 60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e + checksum: 10c0/60edf2d130a4feb7002974af3d5a5f3343558d1ccf8d9b9934d225c638606884db4a20d2fe6440a09605bca282af6b042ae8070a10490c0800d69e82e478f41e languageName: node linkType: hard @@ -30693,7 +30693,7 @@ __metadata: resolution: "stdin-discarder@npm:0.1.0" dependencies: bl: "npm:^5.0.0" - checksum: 3bbf7f8107e49c05b4a46bd739afdd34605cf1f06a038c8b2a33d034bf146344fc0ebc5149df1e6422510dd219971a220f25b1102413ef5128fe267683fbef9d + checksum: 10c0/3bbf7f8107e49c05b4a46bd739afdd34605cf1f06a038c8b2a33d034bf146344fc0ebc5149df1e6422510dd219971a220f25b1102413ef5128fe267683fbef9d languageName: node linkType: hard @@ -30705,7 +30705,7 @@ __metadata: ansi-styles: "npm:^5.2.0" string-width: "npm:^4.2.2" strip-ansi: "npm:^6.0.0" - checksum: 2435eba195367cde1bb4f4ae19af3f9a7d38f240bfa05c9f562c0feb8e6f46fd83f78e928b3025f105e6b3baefcca693009cc46b7065679ca0edaec2e223f193 + checksum: 10c0/2435eba195367cde1bb4f4ae19af3f9a7d38f240bfa05c9f562c0feb8e6f46fd83f78e928b3025f105e6b3baefcca693009cc46b7065679ca0edaec2e223f193 languageName: node linkType: hard @@ -30714,14 +30714,14 @@ __metadata: resolution: "stop-iteration-iterator@npm:1.0.0" dependencies: internal-slot: "npm:^1.0.4" - checksum: c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 languageName: node linkType: hard "store2@npm:^2.14.2": version: 2.14.2 resolution: "store2@npm:2.14.2" - checksum: 2f27c3eaa7207b81410e170e7c41379816d22c1566308a9d97fbf853c4facff531fcb2a85f085c7503c578736570972f747c26018ebeaba7d1341fb82a7b6d52 + checksum: 10c0/2f27c3eaa7207b81410e170e7c41379816d22c1566308a9d97fbf853c4facff531fcb2a85f085c7503c578736570972f747c26018ebeaba7d1341fb82a7b6d52 languageName: node linkType: hard @@ -30733,7 +30733,7 @@ __metadata: bin: sb: ./index.js storybook: ./index.js - checksum: 1bfa9f355ff45755153b8edeb31917469cd765961b4a2213432934118c5199b30e01673b264601077758f7a886e62cb56aa1e73ee9901aeaf2fcca190e093a04 + checksum: 10c0/1bfa9f355ff45755153b8edeb31917469cd765961b4a2213432934118c5199b30e01673b264601077758f7a886e62cb56aa1e73ee9901aeaf2fcca190e093a04 languageName: node linkType: hard @@ -30743,7 +30743,7 @@ __metadata: dependencies: inherits: "npm:~2.0.1" readable-stream: "npm:^2.0.2" - checksum: 485562bd5d962d633ae178449029c6fa2611052e356bdb5668f768544aa4daa94c4f9a97de718f3f30ad98f3cb98a5f396252bb3855aff153c138f79c0e8f6ac + checksum: 10c0/485562bd5d962d633ae178449029c6fa2611052e356bdb5668f768544aa4daa94c4f9a97de718f3f30ad98f3cb98a5f396252bb3855aff153c138f79c0e8f6ac languageName: node linkType: hard @@ -30752,7 +30752,7 @@ __metadata: resolution: "stream-combiner@npm:0.0.4" dependencies: duplexer: "npm:~0.1.1" - checksum: 8075a94c0eb0f20450a8236cb99d4ce3ea6e6a4b36d8baa7440b1a08cde6ffd227debadffaecd80993bd334282875d0e927ab5b88484625e01970dd251004ff5 + checksum: 10c0/8075a94c0eb0f20450a8236cb99d4ce3ea6e6a4b36d8baa7440b1a08cde6ffd227debadffaecd80993bd334282875d0e927ab5b88484625e01970dd251004ff5 languageName: node linkType: hard @@ -30762,7 +30762,7 @@ __metadata: dependencies: end-of-stream: "npm:^1.1.0" stream-shift: "npm:^1.0.0" - checksum: 7ed229d3b7c24373058b5742b00066da8d3122d1487c8219a025ed53a8978545c77654a529a8e9c62ba83ae80c424cbb0204776b49abf72270d2e8154831dd5f + checksum: 10c0/7ed229d3b7c24373058b5742b00066da8d3122d1487c8219a025ed53a8978545c77654a529a8e9c62ba83ae80c424cbb0204776b49abf72270d2e8154831dd5f languageName: node linkType: hard @@ -30771,7 +30771,7 @@ __metadata: resolution: "stream-events@npm:1.0.5" dependencies: stubs: "npm:^3.0.0" - checksum: 5d235a5799a483e94ea8829526fe9d95d76460032d5e78555fe4f801949ac6a27ea2212e4e0827c55f78726b3242701768adf2d33789465f51b31ed8ebd6b086 + checksum: 10c0/5d235a5799a483e94ea8829526fe9d95d76460032d5e78555fe4f801949ac6a27ea2212e4e0827c55f78726b3242701768adf2d33789465f51b31ed8ebd6b086 languageName: node linkType: hard @@ -30784,21 +30784,21 @@ __metadata: readable-stream: "npm:^2.3.6" to-arraybuffer: "npm:^1.0.0" xtend: "npm:^4.0.0" - checksum: fbe7d327a29216bbabe88d3819bb8f7a502f11eeacf3212579e5af1f76fa7283f6ffa66134ab7d80928070051f571d1029e85f65ce3369fffd4c4df3669446c4 + checksum: 10c0/fbe7d327a29216bbabe88d3819bb8f7a502f11eeacf3212579e5af1f76fa7283f6ffa66134ab7d80928070051f571d1029e85f65ce3369fffd4c4df3669446c4 languageName: node linkType: hard "stream-shift@npm:^1.0.0": version: 1.0.1 resolution: "stream-shift@npm:1.0.1" - checksum: b63a0d178cde34b920ad93e2c0c9395b840f408d36803b07c61416edac80ef9e480a51910e0ceea0d679cec90921bcd2cccab020d3a9fa6c73a98b0fbec132fd + checksum: 10c0/b63a0d178cde34b920ad93e2c0c9395b840f408d36803b07c61416edac80ef9e480a51910e0ceea0d679cec90921bcd2cccab020d3a9fa6c73a98b0fbec132fd languageName: node linkType: hard "streamsearch@npm:^1.1.0": version: 1.1.0 resolution: "streamsearch@npm:1.1.0" - checksum: fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab languageName: node linkType: hard @@ -30808,7 +30808,7 @@ __metadata: dependencies: fast-fifo: "npm:^1.1.0" queue-tick: "npm:^1.0.1" - checksum: 878aeea3a82dc2cdfe74055279cea49ac94daebc5abd46468f29ce001bbcd4c9a0cf5bae771971f6abc73e1e3d3156b609cf1702bd63f97eaa7216386a975ef7 + checksum: 10c0/878aeea3a82dc2cdfe74055279cea49ac94daebc5abd46468f29ce001bbcd4c9a0cf5bae771971f6abc73e1e3d3156b609cf1702bd63f97eaa7216386a975ef7 languageName: node linkType: hard @@ -30817,21 +30817,21 @@ __metadata: resolution: "strict-event-emitter@npm:0.2.8" dependencies: events: "npm:^3.3.0" - checksum: 6891e19fea4f0289e4da2fe7050d85906eaca7f774aa38fe674f0e58fdece1b63b868614fa23974c4cb862aa99358caa987523b705fdfff4639231c62e384394 + checksum: 10c0/6891e19fea4f0289e4da2fe7050d85906eaca7f774aa38fe674f0e58fdece1b63b868614fa23974c4cb862aa99358caa987523b705fdfff4639231c62e384394 languageName: node linkType: hard "strict-event-emitter@npm:^0.4.3": version: 0.4.6 resolution: "strict-event-emitter@npm:0.4.6" - checksum: d0231ef081cb1937b1445da59a1ec202d1c097d825c504f398600532490a4104e200b0dce4137467a8eaac5f8f9718d01c99869687afad78cad3b14c4b2e6a39 + checksum: 10c0/d0231ef081cb1937b1445da59a1ec202d1c097d825c504f398600532490a4104e200b0dce4137467a8eaac5f8f9718d01c99869687afad78cad3b14c4b2e6a39 languageName: node linkType: hard "string-env-interpolation@npm:1.0.1, string-env-interpolation@npm:^1.0.1": version: 1.0.1 resolution: "string-env-interpolation@npm:1.0.1" - checksum: 410046e621e71678e71816377d799b40ba88d236708c0ad015114137fa3575f1b3cf14bfd63ec5eaa35ea43ac582308e60a8e1a3839a10f475b8db73470105bc + checksum: 10c0/410046e621e71678e71816377d799b40ba88d236708c0ad015114137fa3575f1b3cf14bfd63ec5eaa35ea43ac582308e60a8e1a3839a10f475b8db73470105bc languageName: node linkType: hard @@ -30841,7 +30841,7 @@ __metadata: dependencies: char-regex: "npm:^1.0.2" strip-ansi: "npm:^6.0.0" - checksum: 1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c languageName: node linkType: hard @@ -30851,7 +30851,7 @@ __metadata: dependencies: char-regex: "npm:^2.0.0" strip-ansi: "npm:^7.0.1" - checksum: 311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 + checksum: 10c0/311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 languageName: node linkType: hard @@ -30862,7 +30862,7 @@ __metadata: emoji-regex: "npm:^8.0.0" is-fullwidth-code-point: "npm:^3.0.0" strip-ansi: "npm:^6.0.1" - checksum: 1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b languageName: node linkType: hard @@ -30873,7 +30873,7 @@ __metadata: eastasianwidth: "npm:^0.2.0" emoji-regex: "npm:^9.2.2" strip-ansi: "npm:^7.0.1" - checksum: ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca languageName: node linkType: hard @@ -30884,7 +30884,7 @@ __metadata: eastasianwidth: "npm:^0.2.0" emoji-regex: "npm:^10.2.1" strip-ansi: "npm:^7.0.1" - checksum: 7b2991ea7c946a43042070787b85af454079116dfd6d853aab4ff8a6d4ac717cdc18656cfee15b7a7a78286669202a4a56385728f0740cb1e15001c71807b361 + checksum: 10c0/7b2991ea7c946a43042070787b85af454079116dfd6d853aab4ff8a6d4ac717cdc18656cfee15b7a7a78286669202a4a56385728f0740cb1e15001c71807b361 languageName: node linkType: hard @@ -30895,7 +30895,7 @@ __metadata: emoji-regex: "npm:^10.3.0" get-east-asian-width: "npm:^1.0.0" strip-ansi: "npm:^7.1.0" - checksum: 8ffaeeccf4a56ccce5b6235d0b99ee3a581e3e3e5d453708efe7aa8e264fa3a858b4fe2244310cb71c6a20d8c05921cedc8b2ccd88cbaad9f5c92051ff68edc6 + checksum: 10c0/8ffaeeccf4a56ccce5b6235d0b99ee3a581e3e3e5d453708efe7aa8e264fa3a858b4fe2244310cb71c6a20d8c05921cedc8b2ccd88cbaad9f5c92051ff68edc6 languageName: node linkType: hard @@ -30911,7 +30911,7 @@ __metadata: internal-slot: "npm:^1.0.3" regexp.prototype.flags: "npm:^1.4.3" side-channel: "npm:^1.0.4" - checksum: 644523d05c1ee93bab7474e999a5734ee5f6ad2d7ad24ed6ea8706c270dc92b352bde0f2a5420bfbeed54e28cb6a770c3800e1988a5267a70fd5e677c7750abc + checksum: 10c0/644523d05c1ee93bab7474e999a5734ee5f6ad2d7ad24ed6ea8706c270dc92b352bde0f2a5420bfbeed54e28cb6a770c3800e1988a5267a70fd5e677c7750abc languageName: node linkType: hard @@ -30922,7 +30922,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - checksum: 4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 + checksum: 10c0/4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 languageName: node linkType: hard @@ -30933,7 +30933,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - checksum: 53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 + checksum: 10c0/53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 languageName: node linkType: hard @@ -30944,7 +30944,7 @@ __metadata: call-bind: "npm:^1.0.2" define-properties: "npm:^1.2.0" es-abstract: "npm:^1.22.1" - checksum: 0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f + checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f languageName: node linkType: hard @@ -30953,7 +30953,7 @@ __metadata: resolution: "string_decoder@npm:1.3.0" dependencies: safe-buffer: "npm:~5.2.0" - checksum: 810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d languageName: node linkType: hard @@ -30962,7 +30962,7 @@ __metadata: resolution: "string_decoder@npm:1.1.1" dependencies: safe-buffer: "npm:~5.1.0" - checksum: b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e languageName: node linkType: hard @@ -30971,7 +30971,7 @@ __metadata: resolution: "strip-ansi@npm:6.0.1" dependencies: ansi-regex: "npm:^5.0.1" - checksum: 1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 languageName: node linkType: hard @@ -30980,35 +30980,35 @@ __metadata: resolution: "strip-ansi@npm:7.1.0" dependencies: ansi-regex: "npm:^6.0.1" - checksum: a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 languageName: node linkType: hard "strip-bom@npm:^3.0.0": version: 3.0.0 resolution: "strip-bom@npm:3.0.0" - checksum: 51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 languageName: node linkType: hard "strip-bom@npm:^4.0.0": version: 4.0.0 resolution: "strip-bom@npm:4.0.0" - checksum: 26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef languageName: node linkType: hard "strip-final-newline@npm:^2.0.0": version: 2.0.0 resolution: "strip-final-newline@npm:2.0.0" - checksum: bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f languageName: node linkType: hard "strip-final-newline@npm:^3.0.0": version: 3.0.0 resolution: "strip-final-newline@npm:3.0.0" - checksum: a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce + checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce languageName: node linkType: hard @@ -31017,7 +31017,7 @@ __metadata: resolution: "strip-indent@npm:3.0.0" dependencies: min-indent: "npm:^1.0.0" - checksum: ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 languageName: node linkType: hard @@ -31026,21 +31026,21 @@ __metadata: resolution: "strip-indent@npm:4.0.0" dependencies: min-indent: "npm:^1.0.1" - checksum: 6b1fb4e22056867f5c9e7a6f3f45922d9a2436cac758607d58aeaac0d3b16ec40b1c43317de7900f1b8dd7a4107352fa47fb960f2c23566538c51e8585c8870e + checksum: 10c0/6b1fb4e22056867f5c9e7a6f3f45922d9a2436cac758607d58aeaac0d3b16ec40b1c43317de7900f1b8dd7a4107352fa47fb960f2c23566538c51e8585c8870e languageName: node linkType: hard "strip-json-comments@npm:^3.0.1, strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" - checksum: 9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd languageName: node linkType: hard "strip-json-comments@npm:~2.0.1": version: 2.0.1 resolution: "strip-json-comments@npm:2.0.1" - checksum: b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 languageName: node linkType: hard @@ -31049,7 +31049,7 @@ __metadata: resolution: "strip-literal@npm:1.3.0" dependencies: acorn: "npm:^8.10.0" - checksum: 3c0c9ee41eb346e827eede61ef288457f53df30e3e6ff8b94fa81b636933b0c13ca4ea5c97d00a10d72d04be326da99ac819f8769f0c6407ba8177c98344a916 + checksum: 10c0/3c0c9ee41eb346e827eede61ef288457f53df30e3e6ff8b94fa81b636933b0c13ca4ea5c97d00a10d72d04be326da99ac819f8769f0c6407ba8177c98344a916 languageName: node linkType: hard @@ -31062,14 +31062,14 @@ __metadata: through: "npm:^2.3.4" bin: sl-log-transformer: bin/sl-log-transformer.js - checksum: 3c3b8aa8f34d661910563ff996412e2f527fc814e699a376854b554d4a4294ab7e285b4e2c08a080a7b19c5600a9b93a98798d3ac600fe3de545ca6605c07829 + checksum: 10c0/3c3b8aa8f34d661910563ff996412e2f527fc814e699a376854b554d4a4294ab7e285b4e2c08a080a7b19c5600a9b93a98798d3ac600fe3de545ca6605c07829 languageName: node linkType: hard "stubs@npm:^3.0.0": version: 3.0.0 resolution: "stubs@npm:3.0.0" - checksum: 841a4ab8c76795d34aefe129185763b55fbf2e4693208215627caea4dd62e1299423dcd96f708d3128e3dfa0e669bae2cb912e6e906d7d81eaf6493196570923 + checksum: 10c0/841a4ab8c76795d34aefe129185763b55fbf2e4693208215627caea4dd62e1299423dcd96f708d3128e3dfa0e669bae2cb912e6e906d7d81eaf6493196570923 languageName: node linkType: hard @@ -31078,7 +31078,7 @@ __metadata: resolution: "style-loader@npm:3.3.3" peerDependencies: webpack: ^5.0.0 - checksum: 104bae8abd0627579dc14f3917cf65f1117e8098e3529872f09c26b5eee07933567b7be5c8ebf94d16e322b6e726dc569c5787111bf3786915850db4e351ef33 + checksum: 10c0/104bae8abd0627579dc14f3917cf65f1117e8098e3529872f09c26b5eee07933567b7be5c8ebf94d16e322b6e726dc569c5787111bf3786915850db4e351ef33 languageName: node linkType: hard @@ -31090,7 +31090,7 @@ __metadata: postcss-selector-parser: "npm:^6.0.4" peerDependencies: postcss: ^8.2.15 - checksum: 6ce277c816dd826fdc765258d612a160bad03dae52ab51ef1676efae07e96923ebeb6880d6522eefc50d2e81cb90b632615120c73aed190f345e8d836def67b6 + checksum: 10c0/6ce277c816dd826fdc765258d612a160bad03dae52ab51ef1676efae07e96923ebeb6880d6522eefc50d2e81cb90b632615120c73aed190f345e8d836def67b6 languageName: node linkType: hard @@ -31105,14 +31105,14 @@ __metadata: react: ">=16.8.0" react-dom: ">=16.8.0" supertokens-web-js: ^0.7.0 - checksum: a6f6470e3a19a898a3c4f1c2815e13b01527cfde63beb56a43e8028acb4b7ef2710b7f53aa9a21688239b57929cf2358e44f857cb98740cb54224e61e06cfbd3 + checksum: 10c0/a6f6470e3a19a898a3c4f1c2815e13b01527cfde63beb56a43e8028acb4b7ef2710b7f53aa9a21688239b57929cf2358e44f857cb98740cb54224e61e06cfbd3 languageName: node linkType: hard "supertokens-js-override@npm:^0.0.4": version: 0.0.4 resolution: "supertokens-js-override@npm:0.0.4" - checksum: 75468560e2f9fa0386e38d22f80aea705342f728db877b069623d3cfe070d85977b257508a2c8d3c6439280bfd6f1c7448ba8ac312b9abba6c8927428330028e + checksum: 10c0/75468560e2f9fa0386e38d22f80aea705342f728db877b069623d3cfe070d85977b257508a2c8d3c6439280bfd6f1c7448ba8ac312b9abba6c8927428330028e languageName: node linkType: hard @@ -31121,7 +31121,7 @@ __metadata: resolution: "supports-color@npm:5.5.0" dependencies: has-flag: "npm:^3.0.0" - checksum: 6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 languageName: node linkType: hard @@ -31130,7 +31130,7 @@ __metadata: resolution: "supports-color@npm:7.2.0" dependencies: has-flag: "npm:^4.0.0" - checksum: afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 languageName: node linkType: hard @@ -31139,7 +31139,7 @@ __metadata: resolution: "supports-color@npm:8.1.1" dependencies: has-flag: "npm:^4.0.0" - checksum: ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 languageName: node linkType: hard @@ -31149,21 +31149,21 @@ __metadata: dependencies: has-flag: "npm:^4.0.0" supports-color: "npm:^7.0.0" - checksum: 4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 languageName: node linkType: hard "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" - checksum: 6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 languageName: node linkType: hard "svg-parser@npm:^2.0.4": version: 2.0.4 resolution: "svg-parser@npm:2.0.4" - checksum: 02f6cb155dd7b63ebc2f44f36365bc294543bebb81b614b7628f1af3c54ab64f7e1cec20f06e252bf95bdde78441ae295a412c68ad1678f16a6907d924512b7a + checksum: 10c0/02f6cb155dd7b63ebc2f44f36365bc294543bebb81b614b7628f1af3c54ab64f7e1cec20f06e252bf95bdde78441ae295a412c68ad1678f16a6907d924512b7a languageName: node linkType: hard @@ -31179,7 +31179,7 @@ __metadata: picocolors: "npm:^1.0.0" bin: svgo: bin/svgo - checksum: d682d416dd68cdcbab5e1e77b93d621325480e97dfe87777e845ea9a0ce05d03fc837ce17080af67e787f6b24430b805ff79f4591dda30a0ab4060b6a3ac2adf + checksum: 10c0/d682d416dd68cdcbab5e1e77b93d621325480e97dfe87777e845ea9a0ce05d03fc837ce17080af67e787f6b24430b805ff79f4591dda30a0ab4060b6a3ac2adf languageName: node linkType: hard @@ -31188,7 +31188,7 @@ __metadata: resolution: "swap-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 6a47c1926e06395ead750905e103be388aeec8c9697f20b14bc3e1e86fcb4fc78e5033197afe6cc8bbed80f0a4ee1f184b0fa22eec7f4a767bdfd278683d52eb + checksum: 10c0/6a47c1926e06395ead750905e103be388aeec8c9697f20b14bc3e1e86fcb4fc78e5033197afe6cc8bbed80f0a4ee1f184b0fa22eec7f4a767bdfd278683d52eb languageName: node linkType: hard @@ -31198,7 +31198,7 @@ __metadata: peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: cb3f9b116fbd292b881e804a4fe66cd6d543a7de2572f5a68e067e4780ee2d59a8da87a90736ba6e8e286e4368c98214ae3486b1b872080292814e5d3062f09c + checksum: 10c0/cb3f9b116fbd292b881e804a4fe66cd6d543a7de2572f5a68e067e4780ee2d59a8da87a90736ba6e8e286e4368c98214ae3486b1b872080292814e5d3062f09c languageName: node linkType: hard @@ -31209,28 +31209,28 @@ __metadata: use-sync-external-store: "npm:^1.2.0" peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 - checksum: f631dfd206a989313cd82e7d9477b11af08496000c339752c745e8b42ba58667528ee0c70ea529910a7b6dee9b4085e8a2cd622efb70b9709883211111e0d756 + checksum: 10c0/f631dfd206a989313cd82e7d9477b11af08496000c339752c745e8b42ba58667528ee0c70ea529910a7b6dee9b4085e8a2cd622efb70b9709883211111e0d756 languageName: node linkType: hard "symbol-observable@npm:^4.0.0": version: 4.0.0 resolution: "symbol-observable@npm:4.0.0" - checksum: 5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d + checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d languageName: node linkType: hard "symbol-tree@npm:^3.2.4": version: 3.2.4 resolution: "symbol-tree@npm:3.2.4" - checksum: dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 languageName: node linkType: hard "synchronous-promise@npm:^2.0.15": version: 2.0.17 resolution: "synchronous-promise@npm:2.0.17" - checksum: 1babe643d8417789ef6e5a2f3d4b8abcda2de236acd09bbe2c98f6be82c0a2c92ed21a6e4f934845fa8de18b1435a9cba1e8c3d945032e8a532f076224c024b1 + checksum: 10c0/1babe643d8417789ef6e5a2f3d4b8abcda2de236acd09bbe2c98f6be82c0a2c92ed21a6e4f934845fa8de18b1435a9cba1e8c3d945032e8a532f076224c024b1 languageName: node linkType: hard @@ -31239,7 +31239,7 @@ __metadata: resolution: "systeminformation@npm:5.21.20" bin: systeminformation: lib/cli.js - checksum: 4d7ea2b0df75f122854cc964926dfb8f8fbe9297afcbf2fad1218cfb684163e9486f5c6032814fe528d5d39585b43f33c4af11e0ea07b8b591f18c27f791fbba + checksum: 10c0/4d7ea2b0df75f122854cc964926dfb8f8fbe9297afcbf2fad1218cfb684163e9486f5c6032814fe528d5d39585b43f33c4af11e0ea07b8b591f18c27f791fbba conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) languageName: node linkType: hard @@ -31247,14 +31247,14 @@ __metadata: "tapable@npm:^1.0.0, tapable@npm:^1.1.3": version: 1.1.3 resolution: "tapable@npm:1.1.3" - checksum: c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 + checksum: 10c0/c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 languageName: node linkType: hard "tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0, tapable@npm:^2.2.1": version: 2.2.1 resolution: "tapable@npm:2.2.1" - checksum: bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 languageName: node linkType: hard @@ -31266,7 +31266,7 @@ __metadata: mkdirp-classic: "npm:^0.5.2" pump: "npm:^3.0.0" tar-stream: "npm:^2.1.4" - checksum: 871d26a934bfb7beeae4c4d8a09689f530b565f79bd0cf489823ff0efa3705da01278160da10bb006d1a793fa0425cf316cec029b32a9159eacbeaff4965fb6d + checksum: 10c0/871d26a934bfb7beeae4c4d8a09689f530b565f79bd0cf489823ff0efa3705da01278160da10bb006d1a793fa0425cf316cec029b32a9159eacbeaff4965fb6d languageName: node linkType: hard @@ -31279,7 +31279,7 @@ __metadata: fs-constants: "npm:^1.0.0" inherits: "npm:^2.0.3" readable-stream: "npm:^3.1.1" - checksum: 2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 + checksum: 10c0/2f4c910b3ee7196502e1ff015a7ba321ec6ea837667220d7bcb8d0852d51cb04b87f7ae471008a6fb8f5b1a1b5078f62f3a82d30c706f20ada1238ac797e7692 languageName: node linkType: hard @@ -31290,7 +31290,7 @@ __metadata: b4a: "npm:^1.6.4" fast-fifo: "npm:^1.2.0" streamx: "npm:^2.15.0" - checksum: 7d52d1a56eb25b8434c9544becb737eb6c4f0ed19d205e739fdd2537ad8d1d623a6c93f7f8e58d9028cb0cdf86c0d8b67164e070cd1702cc78b8ab7cba0f3702 + checksum: 10c0/7d52d1a56eb25b8434c9544becb737eb6c4f0ed19d205e739fdd2537ad8d1d623a6c93f7f8e58d9028cb0cdf86c0d8b67164e070cd1702cc78b8ab7cba0f3702 languageName: node linkType: hard @@ -31304,7 +31304,7 @@ __metadata: minizlib: "npm:^2.1.1" mkdirp: "npm:^1.0.3" yallist: "npm:^4.0.0" - checksum: 5a016f5330f43815420797b87ade578e2ea60affd47439c988a3fc8f7bb6b36450d627c31ba6a839346fae248b4c8c12bb06bb0716211f37476838c7eff91f05 + checksum: 10c0/5a016f5330f43815420797b87ade578e2ea60affd47439c988a3fc8f7bb6b36450d627c31ba6a839346fae248b4c8c12bb06bb0716211f37476838c7eff91f05 languageName: node linkType: hard @@ -31318,7 +31318,7 @@ __metadata: minizlib: "npm:^2.1.1" mkdirp: "npm:^1.0.3" yallist: "npm:^4.0.0" - checksum: bb2babe7b14442f690d83c2b2c571c9dd0bf802314773e05f4a3e4a241fdecd7fb560b8e4e7d6ea34533c8cd692e1b8418a3b8ba3b9687fe78a683dfbad7f82d + checksum: 10c0/bb2babe7b14442f690d83c2b2c571c9dd0bf802314773e05f4a3e4a241fdecd7fb560b8e4e7d6ea34533c8cd692e1b8418a3b8ba3b9687fe78a683dfbad7f82d languageName: node linkType: hard @@ -31327,14 +31327,14 @@ __metadata: resolution: "tasuku@npm:2.0.1" dependencies: yoga-layout-prebuilt: "npm:1.10.0" - checksum: 0c28c9c9b836826d2858b92d69a2d5125c89cacd1f856159dad567fdbdc85b21e6fc2876dfce65dc698b47791bc8c553687eaab922355b9c331875786b86e7fc + checksum: 10c0/0c28c9c9b836826d2858b92d69a2d5125c89cacd1f856159dad567fdbdc85b21e6fc2876dfce65dc698b47791bc8c553687eaab922355b9c331875786b86e7fc languageName: node linkType: hard "teamcity-service-messages@npm:0.1.14": version: 0.1.14 resolution: "teamcity-service-messages@npm:0.1.14" - checksum: e2e45647861f898428f20315f8172f1c6c24d688db0a77d7638ab5c0dace53e703c11ca5e0eed6f6b905ec9860b8e012b006790d82ddad250ba20429e5097d1b + checksum: 10c0/e2e45647861f898428f20315f8172f1c6c24d688db0a77d7638ab5c0dace53e703c11ca5e0eed6f6b905ec9860b8e012b006790d82ddad250ba20429e5097d1b languageName: node linkType: hard @@ -31347,7 +31347,7 @@ __metadata: node-fetch: "npm:^2.6.1" stream-events: "npm:^1.0.5" uuid: "npm:^9.0.0" - checksum: d3f60db26aa314ed64776c89255abc2d2cfb264656921c952781b27c314e2d157134ad0c514ce170eb9c0c5443e7e2dbfe221310ade6c5b1badbc980184e6b57 + checksum: 10c0/d3f60db26aa314ed64776c89255abc2d2cfb264656921c952781b27c314e2d157134ad0c514ce170eb9c0c5443e7e2dbfe221310ade6c5b1badbc980184e6b57 languageName: node linkType: hard @@ -31356,21 +31356,21 @@ __metadata: resolution: "telejson@npm:7.2.0" dependencies: memoizerific: "npm:^1.11.3" - checksum: d26e6cc93e54bfdcdb207b49905508c5db45862e811a2e2193a735409e47b14530e1c19351618a3e03ad2fd4ffc3759364fcd72851aba2df0300fab574b6151c + checksum: 10c0/d26e6cc93e54bfdcdb207b49905508c5db45862e811a2e2193a735409e47b14530e1c19351618a3e03ad2fd4ffc3759364fcd72851aba2df0300fab574b6151c languageName: node linkType: hard "temp-dir@npm:1.0.0": version: 1.0.0 resolution: "temp-dir@npm:1.0.0" - checksum: 648669d5e154d1961217784c786acadccf0156519c19e0aceda7edc76f5bdfa32a40dd7f88ebea9238ed6e3dedf08b846161916c8947058c384761351be90a8e + checksum: 10c0/648669d5e154d1961217784c786acadccf0156519c19e0aceda7edc76f5bdfa32a40dd7f88ebea9238ed6e3dedf08b846161916c8947058c384761351be90a8e languageName: node linkType: hard "temp-dir@npm:^2.0.0": version: 2.0.0 resolution: "temp-dir@npm:2.0.0" - checksum: b1df969e3f3f7903f3426861887ed76ba3b495f63f6d0c8e1ce22588679d9384d336df6064210fda14e640ed422e2a17d5c40d901f60e161c99482d723f4d309 + checksum: 10c0/b1df969e3f3f7903f3426861887ed76ba3b495f63f6d0c8e1ce22588679d9384d336df6064210fda14e640ed422e2a17d5c40d901f60e161c99482d723f4d309 languageName: node linkType: hard @@ -31379,7 +31379,7 @@ __metadata: resolution: "temp@npm:0.8.4" dependencies: rimraf: "npm:~2.6.2" - checksum: 7f071c963031bfece37e13c5da11e9bb451e4ddfc4653e23e327a2f91594102dc826ef6a693648e09a6e0eb856f507967ec759ae55635e0878091eccf411db37 + checksum: 10c0/7f071c963031bfece37e13c5da11e9bb451e4ddfc4653e23e327a2f91594102dc826ef6a693648e09a6e0eb856f507967ec759ae55635e0878091eccf411db37 languageName: node linkType: hard @@ -31392,7 +31392,7 @@ __metadata: temp-dir: "npm:^2.0.0" type-fest: "npm:^0.16.0" unique-string: "npm:^2.0.0" - checksum: 864a1cf1b5536dc21e84ae45dbbc3ba4dd2c7ec1674d895f99c349cf209df959a53d797ca38d0b2cf69c7684d565fde5cfc67faaa63b7208ffb21d454b957472 + checksum: 10c0/864a1cf1b5536dc21e84ae45dbbc3ba4dd2c7ec1674d895f99c349cf209df959a53d797ca38d0b2cf69c7684d565fde5cfc67faaa63b7208ffb21d454b957472 languageName: node linkType: hard @@ -31402,7 +31402,7 @@ __metadata: dependencies: ansi-escapes: "npm:^4.2.1" supports-hyperlinks: "npm:^2.0.0" - checksum: 947458a5cd5408d2ffcdb14aee50bec8fb5022ae683b896b2f08ed6db7b2e7d42780d5c8b51e930e9c322bd7c7a517f4fa7c76983d0873c83245885ac5ee13e3 + checksum: 10c0/947458a5cd5408d2ffcdb14aee50bec8fb5022ae683b896b2f08ed6db7b2e7d42780d5c8b51e930e9c322bd7c7a517f4fa7c76983d0873c83245885ac5ee13e3 languageName: node linkType: hard @@ -31421,7 +31421,7 @@ __metadata: worker-farm: "npm:^1.7.0" peerDependencies: webpack: ^4.0.0 - checksum: 97164cfa383cf988832427e912cd9606471452f15f8bfb905ae51f1a42561f90ea541141e1e530e59f8307639fed7dfdbd626aec8390acd6ad80e58ea3fcf6df + checksum: 10c0/97164cfa383cf988832427e912cd9606471452f15f8bfb905ae51f1a42561f90ea541141e1e530e59f8307639fed7dfdbd626aec8390acd6ad80e58ea3fcf6df languageName: node linkType: hard @@ -31443,7 +31443,7 @@ __metadata: optional: true uglify-js: optional: true - checksum: 66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 + checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 languageName: node linkType: hard @@ -31456,7 +31456,7 @@ __metadata: source-map-support: "npm:~0.5.12" bin: terser: bin/terser - checksum: 1ec2620e58df0ea787ac579daf097df0fee2dd402f37acb4de0df1135f0598a29212e5f03042a9c2dc7e1bf1248b1dd9d9ea0724d34331a2017f32da8783b3d7 + checksum: 10c0/1ec2620e58df0ea787ac579daf097df0fee2dd402f37acb4de0df1135f0598a29212e5f03042a9c2dc7e1bf1248b1dd9d9ea0724d34331a2017f32da8783b3d7 languageName: node linkType: hard @@ -31470,7 +31470,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: bed0d39d9a7f2b82c87173e48081c46426a8820ba1dcb864bbfccd2df2b7fb8498a7ea4c8ef045ccce5713b23a6b4c3a784967f1b9f3115adaa7f51712f6e6ae + checksum: 10c0/bed0d39d9a7f2b82c87173e48081c46426a8820ba1dcb864bbfccd2df2b7fb8498a7ea4c8ef045ccce5713b23a6b4c3a784967f1b9f3115adaa7f51712f6e6ae languageName: node linkType: hard @@ -31481,28 +31481,28 @@ __metadata: "@istanbuljs/schema": "npm:^0.1.2" glob: "npm:^7.1.4" minimatch: "npm:^3.0.4" - checksum: 019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 languageName: node linkType: hard "text-decoding@npm:^1.0.0": version: 1.0.0 resolution: "text-decoding@npm:1.0.0" - checksum: 290dbd6111f39a4020b3e2384de614f90051eff3cd11176329fda0a40ac0b0a07e6820b9aeb4b0b7c2cc7869b62cd3b25944c71e9e16b628bcf57299ab84e311 + checksum: 10c0/290dbd6111f39a4020b3e2384de614f90051eff3cd11176329fda0a40ac0b0a07e6820b9aeb4b0b7c2cc7869b62cd3b25944c71e9e16b628bcf57299ab84e311 languageName: node linkType: hard "text-extensions@npm:^1.0.0": version: 1.9.0 resolution: "text-extensions@npm:1.9.0" - checksum: 9ad5a9f723a871e2d884e132d7e93f281c60b5759c95f3f6b04704856548715d93a36c10dbaf5f12b91bf405f0cf3893bf169d4d143c0f5509563b992d385443 + checksum: 10c0/9ad5a9f723a871e2d884e132d7e93f281c60b5759c95f3f6b04704856548715d93a36c10dbaf5f12b91bf405f0cf3893bf169d4d143c0f5509563b992d385443 languageName: node linkType: hard "text-table@npm:^0.2.0": version: 0.2.0 resolution: "text-table@npm:0.2.0" - checksum: 02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c languageName: node linkType: hard @@ -31511,7 +31511,7 @@ __metadata: resolution: "thingies@npm:1.12.0" peerDependencies: tslib: ^2 - checksum: d21518fd69cb406e1fdab8331000c2163df0fab39080039d1c9bfd901cc15b8dede45110fb4801dbc4a88f57bac60cab514019edb585c7a90c018623acf4effd + checksum: 10c0/d21518fd69cb406e1fdab8331000c2163df0fab39080039d1c9bfd901cc15b8dede45110fb4801dbc4a88f57bac60cab514019edb585c7a90c018623acf4effd languageName: node linkType: hard @@ -31520,14 +31520,14 @@ __metadata: resolution: "thread-stream@npm:2.3.0" dependencies: real-require: "npm:^0.2.0" - checksum: 06f60892adab3f3b5b8930857a0049d29b89cbb95581b079274c87ee0aea718d12d8d56e8ad3aafa5ded3321aaf51a4e1b1ce70340d650fbfa1cdd6d0d399bc2 + checksum: 10c0/06f60892adab3f3b5b8930857a0049d29b89cbb95581b079274c87ee0aea718d12d8d56e8ad3aafa5ded3321aaf51a4e1b1ce70340d650fbfa1cdd6d0d399bc2 languageName: node linkType: hard "throttleit@npm:^1.0.0": version: 1.0.0 resolution: "throttleit@npm:1.0.0" - checksum: e7c82628e5d7e3bf377878481203702a735e4310bb0c35f563a18c10ba291562332a6b61c57120c6445da1e17e7b0ff52f014b9dd310793843d4d92fa92baf2c + checksum: 10c0/e7c82628e5d7e3bf377878481203702a735e4310bb0c35f563a18c10ba291562332a6b61c57120c6445da1e17e7b0ff52f014b9dd310793843d4d92fa92baf2c languageName: node linkType: hard @@ -31537,21 +31537,21 @@ __metadata: dependencies: readable-stream: "npm:~2.3.6" xtend: "npm:~4.0.1" - checksum: cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade + checksum: 10c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade languageName: node linkType: hard "through@npm:2, through@npm:>=2.2.7 <3, through@npm:^2.3.4, through@npm:^2.3.6, through@npm:^2.3.8, through@npm:~2.3, through@npm:~2.3.1": version: 2.3.8 resolution: "through@npm:2.3.8" - checksum: 4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc languageName: node linkType: hard "thunky@npm:^1.0.2": version: 1.1.0 resolution: "thunky@npm:1.1.0" - checksum: 369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 + checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 languageName: node linkType: hard @@ -31560,42 +31560,42 @@ __metadata: resolution: "timers-browserify@npm:2.0.12" dependencies: setimmediate: "npm:^1.0.4" - checksum: 98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 + checksum: 10c0/98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 languageName: node linkType: hard "tiny-invariant@npm:^1.3.1": version: 1.3.1 resolution: "tiny-invariant@npm:1.3.1" - checksum: 5b87c1d52847d9452b60d0dcb77011b459044e0361ca8253bfe7b43d6288106e12af926adb709a6fc28900e3864349b91dad9a4ac93c39aa15f360b26c2ff4db + checksum: 10c0/5b87c1d52847d9452b60d0dcb77011b459044e0361ca8253bfe7b43d6288106e12af926adb709a6fc28900e3864349b91dad9a4ac93c39aa15f360b26c2ff4db languageName: node linkType: hard "tiny-lru@npm:^11.0.0": version: 11.2.5 resolution: "tiny-lru@npm:11.2.5" - checksum: bda6de074035ca108ce179ba4ceb02a3eca6aab78b5cf161736035f2af562644594435d8fa4c07f098eee96e1a483992025af72f25e6033d54a66cf270fa8372 + checksum: 10c0/bda6de074035ca108ce179ba4ceb02a3eca6aab78b5cf161736035f2af562644594435d8fa4c07f098eee96e1a483992025af72f25e6033d54a66cf270fa8372 languageName: node linkType: hard "tinybench@npm:^2.5.1": version: 2.6.0 resolution: "tinybench@npm:2.6.0" - checksum: 60ea35699bf8bac9bc8cf279fa5877ab5b335b4673dcd07bf0fbbab9d7953a02c0ccded374677213eaa13aa147f54eb75d3230139ddbeec3875829ebe73db310 + checksum: 10c0/60ea35699bf8bac9bc8cf279fa5877ab5b335b4673dcd07bf0fbbab9d7953a02c0ccded374677213eaa13aa147f54eb75d3230139ddbeec3875829ebe73db310 languageName: node linkType: hard "tinypool@npm:^0.8.2": version: 0.8.2 resolution: "tinypool@npm:0.8.2" - checksum: 8998626614172fc37c394e9a14e701dc437727fc6525488a4d4fd42044a4b2b59d6f076d750cbf5c699f79c58dd4e40599ab09e2f1ae0df4b23516b98c9c3055 + checksum: 10c0/8998626614172fc37c394e9a14e701dc437727fc6525488a4d4fd42044a4b2b59d6f076d750cbf5c699f79c58dd4e40599ab09e2f1ae0df4b23516b98c9c3055 languageName: node linkType: hard "tinyspy@npm:^2.2.0": version: 2.2.0 resolution: "tinyspy@npm:2.2.0" - checksum: 8c7b70748dd8590e85d52741db79243746c15bc03c92d75c23160a762142db577e7f53e360ba7300e321b12bca5c42dd2522a8dbeec6ba3830302573dd8516bc + checksum: 10c0/8c7b70748dd8590e85d52741db79243746c15bc03c92d75c23160a762142db577e7f53e360ba7300e321b12bca5c42dd2522a8dbeec6ba3830302573dd8516bc languageName: node linkType: hard @@ -31604,7 +31604,7 @@ __metadata: resolution: "title-case@npm:3.0.3" dependencies: tslib: "npm:^2.0.3" - checksum: face56f686060f777b43a180d371407124d201eb4238c19d9e97030fd54859696ca4e2ca499cc232f8700f24f2414cc08aab9fdf6d39acff055dd825a4d86d6a + checksum: 10c0/face56f686060f777b43a180d371407124d201eb4238c19d9e97030fd54859696ca4e2ca499cc232f8700f24f2414cc08aab9fdf6d39acff055dd825a4d86d6a languageName: node linkType: hard @@ -31613,7 +31613,7 @@ __metadata: resolution: "tmp@npm:0.0.33" dependencies: os-tmpdir: "npm:~1.0.2" - checksum: 69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 languageName: node linkType: hard @@ -31622,35 +31622,35 @@ __metadata: resolution: "tmp@npm:0.2.1" dependencies: rimraf: "npm:^3.0.0" - checksum: 67607aa012059c9ce697bee820ee51bc0f39b29a8766def4f92d3f764d67c7cf9205d537d24e0cb1ce9685c40d4c628ead010910118ea18348666b5c46ed9123 + checksum: 10c0/67607aa012059c9ce697bee820ee51bc0f39b29a8766def4f92d3f764d67c7cf9205d537d24e0cb1ce9685c40d4c628ead010910118ea18348666b5c46ed9123 languageName: node linkType: hard "tmpl@npm:1.0.5": version: 1.0.5 resolution: "tmpl@npm:1.0.5" - checksum: f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 languageName: node linkType: hard "to-arraybuffer@npm:^1.0.0": version: 1.0.1 resolution: "to-arraybuffer@npm:1.0.1" - checksum: 2460bd95524f4845a751e4f8bf9937f9f3dcd1651f104e1512868782f858f8302c1cf25bbc30794bc1b3ff65c4e135158377302f2abaff43a2d8e3c38dfe098c + checksum: 10c0/2460bd95524f4845a751e4f8bf9937f9f3dcd1651f104e1512868782f858f8302c1cf25bbc30794bc1b3ff65c4e135158377302f2abaff43a2d8e3c38dfe098c languageName: node linkType: hard "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" - checksum: b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 languageName: node linkType: hard "to-no-case@npm:^1.0.0": version: 1.0.2 resolution: "to-no-case@npm:1.0.2" - checksum: c035b04e1042ed67ceb23dc5c7c20ccde11a83ab1d2b3947c17918472b5d26dd4ffdb4cf9464752e7707ab9f3af4a106f9b61244c724bc6810422acd5984da3d + checksum: 10c0/c035b04e1042ed67ceb23dc5c7c20ccde11a83ab1d2b3947c17918472b5d26dd4ffdb4cf9464752e7707ab9f3af4a106f9b61244c724bc6810422acd5984da3d languageName: node linkType: hard @@ -31659,14 +31659,14 @@ __metadata: resolution: "to-object-path@npm:0.3.0" dependencies: kind-of: "npm:^3.0.2" - checksum: 731832a977614c03a770363ad2bd9e9c82f233261861724a8e612bb90c705b94b1a290a19f52958e8e179180bb9b71121ed65e245691a421467726f06d1d7fc3 + checksum: 10c0/731832a977614c03a770363ad2bd9e9c82f233261861724a8e612bb90c705b94b1a290a19f52958e8e179180bb9b71121ed65e245691a421467726f06d1d7fc3 languageName: node linkType: hard "to-readable-stream@npm:^1.0.0": version: 1.0.0 resolution: "to-readable-stream@npm:1.0.0" - checksum: 79cb836e2fb4f2885745a8c212eab7ebc52e93758ff0737feceaed96df98e4d04b8903fe8c27f2e9f3f856a5068ac332918b235c5d801b3efe02a51a3fa0eb36 + checksum: 10c0/79cb836e2fb4f2885745a8c212eab7ebc52e93758ff0737feceaed96df98e4d04b8903fe8c27f2e9f3f856a5068ac332918b235c5d801b3efe02a51a3fa0eb36 languageName: node linkType: hard @@ -31676,7 +31676,7 @@ __metadata: dependencies: is-number: "npm:^3.0.0" repeat-string: "npm:^1.6.1" - checksum: 440d82dbfe0b2e24f36dd8a9467240406ad1499fc8b2b0f547372c22ed1d092ace2a3eb522bb09bfd9c2f39bf1ca42eb78035cf6d2b8c9f5c78da3abc96cd949 + checksum: 10c0/440d82dbfe0b2e24f36dd8a9467240406ad1499fc8b2b0f547372c22ed1d092ace2a3eb522bb09bfd9c2f39bf1ca42eb78035cf6d2b8c9f5c78da3abc96cd949 languageName: node linkType: hard @@ -31685,7 +31685,7 @@ __metadata: resolution: "to-regex-range@npm:5.0.1" dependencies: is-number: "npm:^7.0.0" - checksum: 487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 languageName: node linkType: hard @@ -31697,7 +31697,7 @@ __metadata: extend-shallow: "npm:^3.0.2" regex-not: "npm:^1.0.2" safe-regex: "npm:^1.1.0" - checksum: 99d0b8ef397b3f7abed4bac757b0f0bb9f52bfd39167eb7105b144becfaa9a03756892352d01ac6a911f0c1ceef9f81db68c46899521a3eed054082042796120 + checksum: 10c0/99d0b8ef397b3f7abed4bac757b0f0bb9f52bfd39167eb7105b144becfaa9a03756892352d01ac6a911f0c1ceef9f81db68c46899521a3eed054082042796120 languageName: node linkType: hard @@ -31706,7 +31706,7 @@ __metadata: resolution: "to-snake-case@npm:1.0.0" dependencies: to-space-case: "npm:^1.0.0" - checksum: 46abf18ca90441c7dd6138e1db3169f66ab1311b36930a2daa96289c3ad49e568de7de8b1ddea971c4fbb4a3a7cde1d08aefa0fe41d5e917e6d69eaf1075faba + checksum: 10c0/46abf18ca90441c7dd6138e1db3169f66ab1311b36930a2daa96289c3ad49e568de7de8b1ddea971c4fbb4a3a7cde1d08aefa0fe41d5e917e6d69eaf1075faba languageName: node linkType: hard @@ -31715,35 +31715,35 @@ __metadata: resolution: "to-space-case@npm:1.0.0" dependencies: to-no-case: "npm:^1.0.0" - checksum: b99e1b5d0f3c90a8d47fa3b155d515027bd83a370740e82ee7cb064f86e3655f030f068bddcb8d18239e7408761b4376d89ab91e5ccdb17dc859d8fd4f570ac5 + checksum: 10c0/b99e1b5d0f3c90a8d47fa3b155d515027bd83a370740e82ee7cb064f86e3655f030f068bddcb8d18239e7408761b4376d89ab91e5ccdb17dc859d8fd4f570ac5 languageName: node linkType: hard "toad-cache@npm:^3.3.0": version: 3.3.0 resolution: "toad-cache@npm:3.3.0" - checksum: df2e7fef3991e238197796d3ddd548e1a6b8cb569de8ee053949dcebb689a5ffdbaf2c2642c035768c00d114eb5d4db96925247cc9ccec9d88a6e6d58c95c76a + checksum: 10c0/df2e7fef3991e238197796d3ddd548e1a6b8cb569de8ee053949dcebb689a5ffdbaf2c2642c035768c00d114eb5d4db96925247cc9ccec9d88a6e6d58c95c76a languageName: node linkType: hard "tocbot@npm:^4.20.1": version: 4.21.0 resolution: "tocbot@npm:4.21.0" - checksum: 877d99df40c07ec5e5c2259b820be9c8af9a9f52d582a61b7bed3d43daff820f23031bc613a5cc3bb14ecc34b79c1a45349dcbae8f3a79de7ecc127f366ed3c6 + checksum: 10c0/877d99df40c07ec5e5c2259b820be9c8af9a9f52d582a61b7bed3d43daff820f23031bc613a5cc3bb14ecc34b79c1a45349dcbae8f3a79de7ecc127f366ed3c6 languageName: node linkType: hard "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" - checksum: 93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 languageName: node linkType: hard "totalist@npm:^3.0.0": version: 3.0.1 resolution: "totalist@npm:3.0.1" - checksum: 4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 languageName: node linkType: hard @@ -31754,7 +31754,7 @@ __metadata: nopt: "npm:~1.0.10" bin: nodetouch: ./bin/nodetouch.js - checksum: dacb4a639401b83b0a40b56c0565e01096e5ecf38b22a4840d9eeb642a5bea136c6a119e4543f9b172349a5ee343b10cda0880eb47f7d7ddfd6eac59dcf53244 + checksum: 10c0/dacb4a639401b83b0a40b56c0565e01096e5ecf38b22a4840d9eeb642a5bea136c6a119e4543f9b172349a5ee343b10cda0880eb47f7d7ddfd6eac59dcf53244 languageName: node linkType: hard @@ -31766,7 +31766,7 @@ __metadata: punycode: "npm:^2.1.1" universalify: "npm:^0.2.0" url-parse: "npm:^1.5.3" - checksum: 4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 + checksum: 10c0/4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 languageName: node linkType: hard @@ -31775,14 +31775,14 @@ __metadata: resolution: "tr46@npm:3.0.0" dependencies: punycode: "npm:^2.1.1" - checksum: cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b + checksum: 10c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b languageName: node linkType: hard "tr46@npm:~0.0.3": version: 0.0.3 resolution: "tr46@npm:0.0.3" - checksum: 047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 languageName: node linkType: hard @@ -31791,35 +31791,35 @@ __metadata: resolution: "tree-kill@npm:1.2.2" bin: tree-kill: cli.js - checksum: 7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 + checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 languageName: node linkType: hard "treeverse@npm:^3.0.0": version: 3.0.0 resolution: "treeverse@npm:3.0.0" - checksum: 286479b9c05a8fb0538ee7d67a5502cea7704f258057c784c9c1118a2f598788b2c0f7a8d89e74648af88af0225b31766acecd78e6060736f09b21dd3fa255db + checksum: 10c0/286479b9c05a8fb0538ee7d67a5502cea7704f258057c784c9c1118a2f598788b2c0f7a8d89e74648af88af0225b31766acecd78e6060736f09b21dd3fa255db languageName: node linkType: hard "trim-newlines@npm:^3.0.0": version: 3.0.1 resolution: "trim-newlines@npm:3.0.1" - checksum: 03cfefde6c59ff57138412b8c6be922ecc5aec30694d784f2a65ef8dcbd47faef580b7de0c949345abdc56ec4b4abf64dd1e5aea619b200316e471a3dd5bf1f6 + checksum: 10c0/03cfefde6c59ff57138412b8c6be922ecc5aec30694d784f2a65ef8dcbd47faef580b7de0c949345abdc56ec4b4abf64dd1e5aea619b200316e471a3dd5bf1f6 languageName: node linkType: hard "trim-newlines@npm:^4.0.2": version: 4.1.1 resolution: "trim-newlines@npm:4.1.1" - checksum: 70e60e652305efd0dda1f2bce1a5edc9bb5834a2e00d05dfde178715ec48faa8264a2bc1a7efc593b7936d03f6d42c398616329eef44b7bd5070180a02056981 + checksum: 10c0/70e60e652305efd0dda1f2bce1a5edc9bb5834a2e00d05dfde178715ec48faa8264a2bc1a7efc593b7936d03f6d42c398616329eef44b7bd5070180a02056981 languageName: node linkType: hard "ts-dedent@npm:^2.0.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" - checksum: 175adea838468cc2ff7d5e97f970dcb798bbcb623f29c6088cb21aa2880d207c5784be81ab1741f56b9ac37840cbaba0c0d79f7f8b67ffe61c02634cafa5c303 + checksum: 10c0/175adea838468cc2ff7d5e97f970dcb798bbcb623f29c6088cb21aa2880d207c5784be81ab1741f56b9ac37840cbaba0c0d79f7f8b67ffe61c02634cafa5c303 languageName: node linkType: hard @@ -31828,14 +31828,14 @@ __metadata: resolution: "ts-invariant@npm:0.10.3" dependencies: tslib: "npm:^2.1.0" - checksum: 2fbc178d5903d325ee0b87fad38827eac11888b6e86979b06754fd4bcdcf44c2a99b8bcd5d59d149c0464ede55ae810b02a2aee6835ad10efe4dd0e22efd68c0 + checksum: 10c0/2fbc178d5903d325ee0b87fad38827eac11888b6e86979b06754fd4bcdcf44c2a99b8bcd5d59d149c0464ede55ae810b02a2aee6835ad10efe4dd0e22efd68c0 languageName: node linkType: hard "ts-log@npm:^2.2.3": version: 2.2.5 resolution: "ts-log@npm:2.2.5" - checksum: bbc45faa97d47238b896e85e9e0fc12e3d2d72b56755fba305290489532319c83bae82e282b92a5469f432f2dfa365da7ee0469d6d528ce04cd9dd75d4e2a147 + checksum: 10c0/bbc45faa97d47238b896e85e9e0fc12e3d2d72b56755fba305290489532319c83bae82e282b92a5469f432f2dfa365da7ee0469d6d528ce04cd9dd75d4e2a147 languageName: node linkType: hard @@ -31845,7 +31845,7 @@ __metadata: dependencies: "@ts-morph/common": "npm:~0.16.0" code-block-writer: "npm:^11.0.0" - checksum: ef72fe65e5837afb49f11a67f98922687c92653a3391a258448d36b2d2a16d82487a8de93c0e61f7f79151539f2b6e46fa1ef8cb17f1e1bc9317f3d6819c0655 + checksum: 10c0/ef72fe65e5837afb49f11a67f98922687c92653a3391a258448d36b2d2a16d82487a8de93c0e61f7f79151539f2b6e46fa1ef8cb17f1e1bc9317f3d6819c0655 languageName: node linkType: hard @@ -31855,7 +31855,7 @@ __metadata: dependencies: "@ts-morph/common": "npm:~0.19.0" code-block-writer: "npm:^12.0.0" - checksum: 6ea3259bf46a786eb446f75586aaa3a23715529889069e28e7bbd57e85e21585097559ec5b94e1b99cd6e6e9097d644d71e4a1e3274499f46b1cafd6a009b534 + checksum: 10c0/6ea3259bf46a786eb446f75586aaa3a23715529889069e28e7bbd57e85e21585097559ec5b94e1b99cd6e6e9097d644d71e4a1e3274499f46b1cafd6a009b534 languageName: node linkType: hard @@ -31893,14 +31893,14 @@ __metadata: ts-node-script: dist/bin-script.js ts-node-transpile-only: dist/bin-transpile.js ts-script: dist/bin-script-deprecated.js - checksum: 95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d + checksum: 10c0/95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d languageName: node linkType: hard "ts-toolbelt@npm:9.6.0": version: 9.6.0 resolution: "ts-toolbelt@npm:9.6.0" - checksum: 838f9a2f0fe881d5065257a23b402c41315b33ff987b73db3e2b39fcb70640c4c7220e1ef118ed5676763543724fdbf4eda7b0e2c17acb667ed1401336af9f8c + checksum: 10c0/838f9a2f0fe881d5065257a23b402c41315b33ff987b73db3e2b39fcb70640c4c7220e1ef118ed5676763543724fdbf4eda7b0e2c17acb667ed1401336af9f8c languageName: node linkType: hard @@ -31911,7 +31911,7 @@ __metadata: chalk: "npm:^4.1.0" enhanced-resolve: "npm:^5.7.0" tsconfig-paths: "npm:^4.1.2" - checksum: c030e867e70a3f6d1799fdffa209c3a35e1435ad99aac01946b9ebb0fa8208b7b508c1dfe8c8e13d6a2ef70c75b4db062fbfd3c1f3362c69b6c65ffd4a50e226 + checksum: 10c0/c030e867e70a3f6d1799fdffa209c3a35e1435ad99aac01946b9ebb0fa8208b7b508c1dfe8c8e13d6a2ef70c75b4db062fbfd3c1f3362c69b6c65ffd4a50e226 languageName: node linkType: hard @@ -31923,7 +31923,7 @@ __metadata: json5: "npm:^1.0.2" minimist: "npm:^1.2.6" strip-bom: "npm:^3.0.0" - checksum: fdc92bb7b18b31c0e76f8ec4f98d07236b09590fd6578e587ad024792c8b2235d65125a8fd007fa47a84400f84ceccbf33f24e5198d953249e7204f4cef3517c + checksum: 10c0/fdc92bb7b18b31c0e76f8ec4f98d07236b09590fd6578e587ad024792c8b2235d65125a8fd007fa47a84400f84ceccbf33f24e5198d953249e7204f4cef3517c languageName: node linkType: hard @@ -31934,35 +31934,35 @@ __metadata: json5: "npm:^2.2.2" minimist: "npm:^1.2.6" strip-bom: "npm:^3.0.0" - checksum: 09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea + checksum: 10c0/09a5877402d082bb1134930c10249edeebc0211f36150c35e1c542e5b91f1047b1ccf7da1e59babca1ef1f014c525510f4f870de7c9bda470c73bb4e2721b3ea languageName: node linkType: hard "tslib@npm:2.4.1, tslib@npm:~2.4.0": version: 2.4.1 resolution: "tslib@npm:2.4.1" - checksum: 9ac0e4fd1033861f0b4f0d848dc3009ebcc3aa4757a06e8602a2d8a7aed252810e3540e54e70709f06c0f95311faa8584f769bcbede48aff785eb7e4d399b9ec + checksum: 10c0/9ac0e4fd1033861f0b4f0d848dc3009ebcc3aa4757a06e8602a2d8a7aed252810e3540e54e70709f06c0f95311faa8584f769bcbede48aff785eb7e4d399b9ec languageName: node linkType: hard "tslib@npm:^1.10.0, tslib@npm:^1.13.0, tslib@npm:^1.8.1, tslib@npm:^1.9.0, tslib@npm:^1.9.2": version: 1.14.1 resolution: "tslib@npm:1.14.1" - checksum: 69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 languageName: node linkType: hard "tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.5.2": version: 2.6.0 resolution: "tslib@npm:2.6.0" - checksum: 8d18020a8b9e70ecc529a744c883c095f177805efdbc9786bd50bd82a46c17547923133c5444fbcaf1f7f1c44e0e29c89f73ecf6d8fd1039668024a073a81dc6 + checksum: 10c0/8d18020a8b9e70ecc529a744c883c095f177805efdbc9786bd50bd82a46c17547923133c5444fbcaf1f7f1c44e0e29c89f73ecf6d8fd1039668024a073a81dc6 languageName: node linkType: hard "tslib@npm:~2.5.0": version: 2.5.3 resolution: "tslib@npm:2.5.3" - checksum: 4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 + checksum: 10c0/4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 languageName: node linkType: hard @@ -31976,7 +31976,7 @@ __metadata: optional: true bin: tstyche: ./build/bin.js - checksum: 2682c3f7e2d83fa0af795ba14e1c83873e3f8c31f761a8af10512c3476cf824b7ef096ba9deec3fc0e12356beaf2a20abfafcb73202db4f14c7c2877db2c5a87 + checksum: 10c0/2682c3f7e2d83fa0af795ba14e1c83873e3f8c31f761a8af10512c3476cf824b7ef096ba9deec3fc0e12356beaf2a20abfafcb73202db4f14c7c2877db2c5a87 languageName: node linkType: hard @@ -31987,7 +31987,7 @@ __metadata: tslib: "npm:^1.8.1" 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" - checksum: 02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 languageName: node linkType: hard @@ -32003,14 +32003,14 @@ __metadata: optional: true bin: tsx: dist/cli.mjs - checksum: df47757e1df80bdd425be220636d4ba1da1e512dc14837573576a4d68cf93e36626862f69085ac29b04c127a74e0084939be1f15189a12e26480131176693d61 + checksum: 10c0/df47757e1df80bdd425be220636d4ba1da1e512dc14837573576a4d68cf93e36626862f69085ac29b04c127a74e0084939be1f15189a12e26480131176693d61 languageName: node linkType: hard "tty-browserify@npm:0.0.0": version: 0.0.0 resolution: "tty-browserify@npm:0.0.0" - checksum: c0c68206565f1372e924d5cdeeff1a0d9cc729833f1da98c03d78be8f939e5f61a107bd0ab77d1ef6a47d62bb0e48b1081fbea273acf404959e22fd3891439c5 + checksum: 10c0/c0c68206565f1372e924d5cdeeff1a0d9cc729833f1da98c03d78be8f939e5f61a107bd0ab77d1ef6a47d62bb0e48b1081fbea273acf404959e22fd3891439c5 languageName: node linkType: hard @@ -32021,7 +32021,7 @@ __metadata: "@tufjs/models": "npm:1.0.4" debug: "npm:^4.3.4" make-fetch-happen: "npm:^11.1.1" - checksum: 7c4980ada7a55f2670b895e8d9345ef2eec4a471c47f6127543964a12a8b9b69f16002990e01a138cd775aa954880b461186a6eaf7b86633d090425b4273375b + checksum: 10c0/7c4980ada7a55f2670b895e8d9345ef2eec4a471c47f6127543964a12a8b9b69f16002990e01a138cd775aa954880b461186a6eaf7b86633d090425b4273375b languageName: node linkType: hard @@ -32032,7 +32032,7 @@ __metadata: "@tufjs/models": "npm:2.0.0" debug: "npm:^4.3.4" make-fetch-happen: "npm:^13.0.0" - checksum: 9a11793feed2aa798c1a50107a0f031034b4a670016684e0d0b7d97be3fff7f98f53783c30120bce795c16d58f1b951410bb673aae92cc2437d641cc7457e215 + checksum: 10c0/9a11793feed2aa798c1a50107a0f031034b4a670016684e0d0b7d97be3fff7f98f53783c30120bce795c16d58f1b951410bb673aae92cc2437d641cc7457e215 languageName: node linkType: hard @@ -32041,21 +32041,21 @@ __metadata: resolution: "tunnel-agent@npm:0.6.0" dependencies: safe-buffer: "npm:^5.0.1" - checksum: 4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a + checksum: 10c0/4c7a1b813e7beae66fdbf567a65ec6d46313643753d0beefb3c7973d66fcec3a1e7f39759f0a0b4465883499c6dc8b0750ab8b287399af2e583823e40410a17a languageName: node linkType: hard "tunnel@npm:0.0.6, tunnel@npm:^0.0.6": version: 0.0.6 resolution: "tunnel@npm:0.0.6" - checksum: e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + checksum: 10c0/e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 languageName: node linkType: hard "tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": version: 0.14.5 resolution: "tweetnacl@npm:0.14.5" - checksum: 4612772653512c7bc19e61923fbf42903f5e0389ec76a4a1f17195859d114671ea4aa3b734c2029ce7e1fa7e5cc8b80580f67b071ecf0b46b5636d030a0102a2 + checksum: 10c0/4612772653512c7bc19e61923fbf42903f5e0389ec76a4a1f17195859d114671ea4aa3b734c2029ce7e1fa7e5cc8b80580f67b071ecf0b46b5636d030a0102a2 languageName: node linkType: hard @@ -32064,7 +32064,7 @@ __metadata: resolution: "type-check@npm:0.4.0" dependencies: prelude-ls: "npm:^1.2.1" - checksum: 7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 languageName: node linkType: hard @@ -32073,91 +32073,91 @@ __metadata: resolution: "type-check@npm:0.3.2" dependencies: prelude-ls: "npm:~1.1.2" - checksum: 776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 + checksum: 10c0/776217116b2b4e50e368c7ee0c22c0a85e982881c16965b90d52f216bc296d6a52ef74f9202d22158caacc092a7645b0b8d5fe529a96e3fe35d0fb393966c875 languageName: node linkType: hard "type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" - checksum: 8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd languageName: node linkType: hard "type-fest@npm:3.13.0": version: 3.13.0 resolution: "type-fest@npm:3.13.0" - checksum: 8d3f7ab432685a661b22484d64b4b1083a85c3db3eb01fee25cf4aa558b07bf2d6a42bbd072a4941da43072688f982ebb8b10b9f4444b3cb260d960f4ccf5c5c + checksum: 10c0/8d3f7ab432685a661b22484d64b4b1083a85c3db3eb01fee25cf4aa558b07bf2d6a42bbd072a4941da43072688f982ebb8b10b9f4444b3cb260d960f4ccf5c5c languageName: node linkType: hard "type-fest@npm:^0.16.0": version: 0.16.0 resolution: "type-fest@npm:0.16.0" - checksum: 6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 + checksum: 10c0/6b4d846534e7bcb49a6160b068ffaed2b62570d989d909ac3f29df5ef1e993859f890a4242eebe023c9e923f96adbcb3b3e88a198c35a1ee9a731e147a6839c3 languageName: node linkType: hard "type-fest@npm:^0.18.0": version: 0.18.1 resolution: "type-fest@npm:0.18.1" - checksum: 303f5ecf40d03e1d5b635ce7660de3b33c18ed8ebc65d64920c02974d9e684c72483c23f9084587e9dd6466a2ece1da42ddc95b412a461794dd30baca95e2bac + checksum: 10c0/303f5ecf40d03e1d5b635ce7660de3b33c18ed8ebc65d64920c02974d9e684c72483c23f9084587e9dd6466a2ece1da42ddc95b412a461794dd30baca95e2bac languageName: node linkType: hard "type-fest@npm:^0.20.2": version: 0.20.2 resolution: "type-fest@npm:0.20.2" - checksum: dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 languageName: node linkType: hard "type-fest@npm:^0.21.3": version: 0.21.3 resolution: "type-fest@npm:0.21.3" - checksum: 902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 languageName: node linkType: hard "type-fest@npm:^0.4.1": version: 0.4.1 resolution: "type-fest@npm:0.4.1" - checksum: 2e65f43209492638244842f70d86e7325361c92dd1cc8e3bf5728c96b980305087fa5ba60652e9053d56c302ef4f1beb9652a91b72a50da0ea66c6b851f3b9cb + checksum: 10c0/2e65f43209492638244842f70d86e7325361c92dd1cc8e3bf5728c96b980305087fa5ba60652e9053d56c302ef4f1beb9652a91b72a50da0ea66c6b851f3b9cb languageName: node linkType: hard "type-fest@npm:^0.6.0": version: 0.6.0 resolution: "type-fest@npm:0.6.0" - checksum: 0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 + checksum: 10c0/0c585c26416fce9ecb5691873a1301b5aff54673c7999b6f925691ed01f5b9232db408cdbb0bd003d19f5ae284322523f44092d1f81ca0a48f11f7cf0be8cd38 languageName: node linkType: hard "type-fest@npm:^0.8.1": version: 0.8.1 resolution: "type-fest@npm:0.8.1" - checksum: dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 + checksum: 10c0/dffbb99329da2aa840f506d376c863bd55f5636f4741ad6e65e82f5ce47e6914108f44f340a0b74009b0cb5d09d6752ae83203e53e98b1192cf80ecee5651636 languageName: node linkType: hard "type-fest@npm:^1.0.1, type-fest@npm:^1.0.2, type-fest@npm:^1.2.1, type-fest@npm:^1.2.2": version: 1.4.0 resolution: "type-fest@npm:1.4.0" - checksum: a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 + checksum: 10c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 languageName: node linkType: hard "type-fest@npm:^2.19.0, type-fest@npm:^2.5.2, type-fest@npm:~2.19": version: 2.19.0 resolution: "type-fest@npm:2.19.0" - checksum: a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb languageName: node linkType: hard "type-fest@npm:^3.0.0": version: 3.13.1 resolution: "type-fest@npm:3.13.1" - checksum: 547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 languageName: node linkType: hard @@ -32167,21 +32167,21 @@ __metadata: dependencies: media-typer: "npm:0.3.0" mime-types: "npm:~2.1.24" - checksum: a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d languageName: node linkType: hard "type@npm:^1.0.1": version: 1.2.0 resolution: "type@npm:1.2.0" - checksum: 444660849aaebef8cbb9bc43b28ec2068952064cfce6a646f88db97aaa2e2d6570c5629cd79238b71ba23aa3f75146a0b96e24e198210ee0089715a6f8889bf7 + checksum: 10c0/444660849aaebef8cbb9bc43b28ec2068952064cfce6a646f88db97aaa2e2d6570c5629cd79238b71ba23aa3f75146a0b96e24e198210ee0089715a6f8889bf7 languageName: node linkType: hard "type@npm:^2.7.2": version: 2.7.2 resolution: "type@npm:2.7.2" - checksum: 84c2382788fe24e0bc3d64c0c181820048f672b0f06316aa9c7bdb373f8a09f8b5404f4e856bc4539fb931f2f08f2adc4c53f6c08c9c0314505d70c29a1289e1 + checksum: 10c0/84c2382788fe24e0bc3d64c0c181820048f672b0f06316aa9c7bdb373f8a09f8b5404f4e856bc4539fb931f2f08f2adc4c53f6c08c9c0314505d70c29a1289e1 languageName: node linkType: hard @@ -32192,7 +32192,7 @@ __metadata: call-bind: "npm:^1.0.2" get-intrinsic: "npm:^1.2.1" is-typed-array: "npm:^1.1.10" - checksum: ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c + checksum: 10c0/ebad66cdf00c96b1395dffc7873169cf09801fca5954507a484f41f253feb1388d815db297b0b3bb8ce7421eac6f7ff45e2ec68450a3d68408aa4ae02fcf3a6c languageName: node linkType: hard @@ -32204,7 +32204,7 @@ __metadata: for-each: "npm:^0.3.3" has-proto: "npm:^1.0.1" is-typed-array: "npm:^1.1.10" - checksum: 6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + checksum: 10c0/6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 languageName: node linkType: hard @@ -32217,7 +32217,7 @@ __metadata: for-each: "npm:^0.3.3" has-proto: "npm:^1.0.1" is-typed-array: "npm:^1.1.10" - checksum: 4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 + checksum: 10c0/4036ce007ae9752931bed3dd61e0d6de2a3e5f6a5a85a05f3adb35388d2c0728f9b1a1e638d75579f168e49c289bfb5417f00e96d4ab081f38b647fc854ff7a5 languageName: node linkType: hard @@ -32228,7 +32228,7 @@ __metadata: call-bind: "npm:^1.0.2" for-each: "npm:^0.3.3" is-typed-array: "npm:^1.1.9" - checksum: c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 + checksum: 10c0/c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 languageName: node linkType: hard @@ -32237,14 +32237,14 @@ __metadata: resolution: "typedarray-to-buffer@npm:3.1.5" dependencies: is-typedarray: "npm:^1.0.0" - checksum: 4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 + checksum: 10c0/4ac5b7a93d604edabf3ac58d3a2f7e07487e9f6e98195a080e81dbffdc4127817f470f219d794a843b87052cedef102b53ac9b539855380b8c2172054b7d5027 languageName: node linkType: hard "typedarray@npm:^0.0.6": version: 0.0.6 resolution: "typedarray@npm:0.0.6" - checksum: 6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 + checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 languageName: node linkType: hard @@ -32254,7 +32254,7 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f languageName: node linkType: hard @@ -32264,28 +32264,28 @@ __metadata: bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 languageName: node linkType: hard "ua-parser-js@npm:^1.0.35": version: 1.0.35 resolution: "ua-parser-js@npm:1.0.35" - checksum: 4641332fdf163ecdec4810cc2335932754f1b71527097f06005a658de256e22f5836a4a7860619c9e611d578e0451ff39dbff1a9b83c6615e3b0b3dd29588c30 + checksum: 10c0/4641332fdf163ecdec4810cc2335932754f1b71527097f06005a658de256e22f5836a4a7860619c9e611d578e0451ff39dbff1a9b83c6615e3b0b3dd29588c30 languageName: node linkType: hard "uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": version: 1.0.6 resolution: "uc.micro@npm:1.0.6" - checksum: 9bde2afc6f2e24b899db6caea47dae778b88862ca76688d844ef6e6121dec0679c152893a74a6cfbd2e6fde34654e6bd8424fee8e0166cdfa6c9ae5d42b8a17b + checksum: 10c0/9bde2afc6f2e24b899db6caea47dae778b88862ca76688d844ef6e6121dec0679c152893a74a6cfbd2e6fde34654e6bd8424fee8e0166cdfa6c9ae5d42b8a17b languageName: node linkType: hard "ufo@npm:^1.3.2": version: 1.3.2 resolution: "ufo@npm:1.3.2" - checksum: 180f3dfcdf319b54fe0272780841c93cb08a024fc2ee5f95e63285c2a3c42d8b671cd3641e9a53aafccf100cf8466aa8c040ddfa0efea1fc1968c9bfb250a661 + checksum: 10c0/180f3dfcdf319b54fe0272780841c93cb08a024fc2ee5f95e63285c2a3c42d8b671cd3641e9a53aafccf100cf8466aa8c040ddfa0efea1fc1968c9bfb250a661 languageName: node linkType: hard @@ -32294,7 +32294,7 @@ __metadata: resolution: "uglify-js@npm:3.17.4" bin: uglifyjs: bin/uglifyjs - checksum: 8b7fcdca69deb284fed7d2025b73eb747ce37f9aca6af53422844f46427152d5440601b6e2a033e77856a2f0591e4167153d5a21b68674ad11f662034ec13ced + checksum: 10c0/8b7fcdca69deb284fed7d2025b73eb747ce37f9aca6af53422844f46427152d5440601b6e2a033e77856a2f0591e4167153d5a21b68674ad11f662034ec13ced languageName: node linkType: hard @@ -32306,35 +32306,35 @@ __metadata: has-bigints: "npm:^1.0.2" has-symbols: "npm:^1.0.3" which-boxed-primitive: "npm:^1.0.2" - checksum: 81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 languageName: node linkType: hard "unc-path-regex@npm:^0.1.2": version: 0.1.2 resolution: "unc-path-regex@npm:0.1.2" - checksum: bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 + checksum: 10c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 languageName: node linkType: hard "undefsafe@npm:^2.0.5": version: 2.0.5 resolution: "undefsafe@npm:2.0.5" - checksum: 96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 + checksum: 10c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 languageName: node linkType: hard "underscore@npm:~1.13.2": version: 1.13.6 resolution: "underscore@npm:1.13.6" - checksum: 5f57047f47273044c045fddeb8b141dafa703aa487afd84b319c2495de2e685cecd0b74abec098292320d518b267c0c4598e45aa47d4c3628d0d4020966ba521 + checksum: 10c0/5f57047f47273044c045fddeb8b141dafa703aa487afd84b319c2495de2e685cecd0b74abec098292320d518b267c0c4598e45aa47d4c3628d0d4020966ba521 languageName: node linkType: hard "undici-types@npm:~5.26.4": version: 5.26.5 resolution: "undici-types@npm:5.26.5" - checksum: bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 languageName: node linkType: hard @@ -32343,7 +32343,7 @@ __metadata: resolution: "undici@npm:5.26.5" dependencies: "@fastify/busboy": "npm:^2.0.0" - checksum: fb4147129abc097a8c7098bb7a29e1026c09c281967efb044041d403985423d09d2b8241e8635b7860f05d8c75565946d8dcc839a3b42804509a3ee56d958716 + checksum: 10c0/fb4147129abc097a8c7098bb7a29e1026c09c281967efb044041d403985423d09d2b8241e8635b7860f05d8c75565946d8dcc839a3b42804509a3ee56d958716 languageName: node linkType: hard @@ -32352,14 +32352,14 @@ __metadata: resolution: "undici@npm:5.27.2" dependencies: "@fastify/busboy": "npm:^2.0.0" - checksum: 0cb62c57edc938f242c116e41fb2a74f81ed20e7e2e554cf1ceae548520df0592385b53d444f8cf59e1e10e6b27acd153198d8a2353b3040d0a778a099aac92c + checksum: 10c0/0cb62c57edc938f242c116e41fb2a74f81ed20e7e2e554cf1ceae548520df0592385b53d444f8cf59e1e10e6b27acd153198d8a2353b3040d0a778a099aac92c languageName: node linkType: hard "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.0 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" - checksum: 0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de + checksum: 10c0/0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de languageName: node linkType: hard @@ -32369,21 +32369,21 @@ __metadata: dependencies: unicode-canonical-property-names-ecmascript: "npm:^2.0.0" unicode-property-aliases-ecmascript: "npm:^2.0.0" - checksum: 4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec languageName: node linkType: hard "unicode-match-property-value-ecmascript@npm:^2.1.0": version: 2.1.0 resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" - checksum: f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 + checksum: 10c0/f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 languageName: node linkType: hard "unicode-property-aliases-ecmascript@npm:^2.0.0": version: 2.1.0 resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" - checksum: 50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 languageName: node linkType: hard @@ -32395,7 +32395,7 @@ __metadata: get-value: "npm:^2.0.6" is-extendable: "npm:^0.1.1" set-value: "npm:^2.0.1" - checksum: 8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592 + checksum: 10c0/8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592 languageName: node linkType: hard @@ -32404,7 +32404,7 @@ __metadata: resolution: "unique-filename@npm:1.1.1" dependencies: unique-slug: "npm:^2.0.0" - checksum: d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 + checksum: 10c0/d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 languageName: node linkType: hard @@ -32413,7 +32413,7 @@ __metadata: resolution: "unique-filename@npm:3.0.0" dependencies: unique-slug: "npm:^4.0.0" - checksum: 6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f languageName: node linkType: hard @@ -32422,7 +32422,7 @@ __metadata: resolution: "unique-slug@npm:2.0.2" dependencies: imurmurhash: "npm:^0.1.4" - checksum: 9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 + checksum: 10c0/9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 languageName: node linkType: hard @@ -32431,7 +32431,7 @@ __metadata: resolution: "unique-slug@npm:4.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 languageName: node linkType: hard @@ -32440,7 +32440,7 @@ __metadata: resolution: "unique-string@npm:1.0.0" dependencies: crypto-random-string: "npm:^1.0.0" - checksum: 79cc2a6515a51e6350c74f65c92246511966c47528f1119318cbe8d68a508842f4e5a2a81857a65f3919629397a525f820505116dd89cac425294598e35ca12c + checksum: 10c0/79cc2a6515a51e6350c74f65c92246511966c47528f1119318cbe8d68a508842f4e5a2a81857a65f3919629397a525f820505116dd89cac425294598e35ca12c languageName: node linkType: hard @@ -32449,14 +32449,14 @@ __metadata: resolution: "unique-string@npm:2.0.0" dependencies: crypto-random-string: "npm:^2.0.0" - checksum: 11820db0a4ba069d174bedfa96c588fc2c96b083066fafa186851e563951d0de78181ac79c744c1ed28b51f9d82ac5b8196ff3e4560d0178046ef455d8c2244b + checksum: 10c0/11820db0a4ba069d174bedfa96c588fc2c96b083066fafa186851e563951d0de78181ac79c744c1ed28b51f9d82ac5b8196ff3e4560d0178046ef455d8c2244b languageName: node linkType: hard "unist-util-is@npm:^4.0.0": version: 4.1.0 resolution: "unist-util-is@npm:4.1.0" - checksum: 21ca3d7bacc88853b880b19cb1b133a056c501617d7f9b8cce969cd8b430ed7e1bc416a3a11b02540d5de6fb86807e169d00596108a459d034cf5faec97c055e + checksum: 10c0/21ca3d7bacc88853b880b19cb1b133a056c501617d7f9b8cce969cd8b430ed7e1bc416a3a11b02540d5de6fb86807e169d00596108a459d034cf5faec97c055e languageName: node linkType: hard @@ -32466,7 +32466,7 @@ __metadata: dependencies: "@types/unist": "npm:^2.0.0" unist-util-is: "npm:^4.0.0" - checksum: 231c80c5ba8e79263956fcaa25ed2a11ad7fe77ac5ba0d322e9d51bbc4238501e3bb52f405e518bcdc5471e27b33eff520db0aa4a3b1feb9fb6e2de6ae385d49 + checksum: 10c0/231c80c5ba8e79263956fcaa25ed2a11ad7fe77ac5ba0d322e9d51bbc4238501e3bb52f405e518bcdc5471e27b33eff520db0aa4a3b1feb9fb6e2de6ae385d49 languageName: node linkType: hard @@ -32477,7 +32477,7 @@ __metadata: "@types/unist": "npm:^2.0.0" unist-util-is: "npm:^4.0.0" unist-util-visit-parents: "npm:^3.0.0" - checksum: 7b11303d82271ca53a2ced2d56c87a689dd518596c99ff4a11cdff750f5cc5c0e4b64b146bd2363557cb29443c98713bfd1e8dc6d1c3f9d474b9eb1f23a60888 + checksum: 10c0/7b11303d82271ca53a2ced2d56c87a689dd518596c99ff4a11cdff750f5cc5c0e4b64b146bd2363557cb29443c98713bfd1e8dc6d1c3f9d474b9eb1f23a60888 languageName: node linkType: hard @@ -32487,28 +32487,28 @@ __metadata: dependencies: "@types/jsonwebtoken": "npm:^9.0.0" jsonwebtoken: "npm:^9.0.0" - checksum: f735a3fa0c9156898d128f45237eefa598edfab2424428ccc12e4b7dd9d217ff91b5a2b7a9a1ed6a16fd7985723f0ae34d5efbd3f81ab203c83184b7675c970a + checksum: 10c0/f735a3fa0c9156898d128f45237eefa598edfab2424428ccc12e4b7dd9d217ff91b5a2b7a9a1ed6a16fd7985723f0ae34d5efbd3f81ab203c83184b7675c970a languageName: node linkType: hard "universal-user-agent@npm:^6.0.0": version: 6.0.0 resolution: "universal-user-agent@npm:6.0.0" - checksum: ebeb0206963666c13bcf9ebc86d0577c7daed5870c05cd34d4972ee7a43b9ef20679baf2a8c83bf1b71d899bae67243ac4982d84ddaf9ba0355ff76595819961 + checksum: 10c0/ebeb0206963666c13bcf9ebc86d0577c7daed5870c05cd34d4972ee7a43b9ef20679baf2a8c83bf1b71d899bae67243ac4982d84ddaf9ba0355ff76595819961 languageName: node linkType: hard "universalify@npm:^0.2.0": version: 0.2.0 resolution: "universalify@npm:0.2.0" - checksum: cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe languageName: node linkType: hard "universalify@npm:^2.0.0": version: 2.0.0 resolution: "universalify@npm:2.0.0" - checksum: 07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 + checksum: 10c0/07092b9f46df61b823d8ab5e57f0ee5120c178b39609a95e4a15a98c42f6b0b8e834e66fbb47ff92831786193be42f1fd36347169b88ce8639d0f9670af24a71 languageName: node linkType: hard @@ -32517,14 +32517,14 @@ __metadata: resolution: "unixify@npm:1.0.0" dependencies: normalize-path: "npm:^2.1.1" - checksum: 8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e + checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e languageName: node linkType: hard "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" - checksum: 193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c languageName: node linkType: hard @@ -32536,7 +32536,7 @@ __metadata: chokidar: "npm:^3.5.3" webpack-sources: "npm:^3.2.3" webpack-virtual-modules: "npm:^0.5.0" - checksum: d006fe3ddfcd6578e36f2951f6a21419af2ba8812bc16681876a725a0981b339c920e6afb2cd222d74ca5943e0aa41260cff8fb3528dae12e66419369ae616fc + checksum: 10c0/d006fe3ddfcd6578e36f2951f6a21419af2ba8812bc16681876a725a0981b339c920e6afb2cd222d74ca5943e0aa41260cff8fb3528dae12e66419369ae616fc languageName: node linkType: hard @@ -32546,28 +32546,28 @@ __metadata: dependencies: has-value: "npm:^0.3.1" isobject: "npm:^3.0.0" - checksum: 68a796dde4a373afdbf017de64f08490a3573ebee549136da0b3a2245299e7f65f647ef70dc13c4ac7f47b12fba4de1646fa0967a365638578fedce02b9c0b1f + checksum: 10c0/68a796dde4a373afdbf017de64f08490a3573ebee549136da0b3a2245299e7f65f647ef70dc13c4ac7f47b12fba4de1646fa0967a365638578fedce02b9c0b1f languageName: node linkType: hard "untildify@npm:4.0.0, untildify@npm:^4.0.0": version: 4.0.0 resolution: "untildify@npm:4.0.0" - checksum: d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a + checksum: 10c0/d758e624c707d49f76f7511d75d09a8eda7f2020d231ec52b67ff4896bcf7013be3f9522d8375f57e586e9a2e827f5641c7e06ee46ab9c435fc2b2b2e9de517a languageName: node linkType: hard "upath@npm:2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" - checksum: 79e8e1296b00e24a093b077cfd7a238712d09290c850ce59a7a01458ec78c8d26dcc2ab50b1b9d6a84dabf6511fb4969afeb8a5c9a001aa7272b9cc74c34670f + checksum: 10c0/79e8e1296b00e24a093b077cfd7a238712d09290c850ce59a7a01458ec78c8d26dcc2ab50b1b9d6a84dabf6511fb4969afeb8a5c9a001aa7272b9cc74c34670f languageName: node linkType: hard "upath@npm:^1.1.1": version: 1.2.0 resolution: "upath@npm:1.2.0" - checksum: 3746f24099bf69dbf8234cecb671e1016e1f6b26bd306de4ff8966fb0bc463fa1014ffc48646b375de1ab573660e3a0256f6f2a87218b2dfa1779a84ef6992fa + checksum: 10c0/3746f24099bf69dbf8234cecb671e1016e1f6b26bd306de4ff8966fb0bc463fa1014ffc48646b375de1ab573660e3a0256f6f2a87218b2dfa1779a84ef6992fa languageName: node linkType: hard @@ -32581,7 +32581,7 @@ __metadata: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 + checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 languageName: node linkType: hard @@ -32590,14 +32590,14 @@ __metadata: resolution: "upper-case-first@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 + checksum: 10c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 languageName: node linkType: hard "upper-case@npm:^1.1.1": version: 1.1.3 resolution: "upper-case@npm:1.1.3" - checksum: 3e4d3a90519915bb591db84d72610392518806d8287b8f7541d87642d30388f42b2def1ed2f687e5792ee025e8f7e17d3a0dcbd5b3b59e306ceb1f3b8121ef54 + checksum: 10c0/3e4d3a90519915bb591db84d72610392518806d8287b8f7541d87642d30388f42b2def1ed2f687e5792ee025e8f7e17d3a0dcbd5b3b59e306ceb1f3b8121ef54 languageName: node linkType: hard @@ -32606,7 +32606,7 @@ __metadata: resolution: "upper-case@npm:2.0.2" dependencies: tslib: "npm:^2.0.3" - checksum: 5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 + checksum: 10c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 languageName: node linkType: hard @@ -32615,14 +32615,14 @@ __metadata: resolution: "uri-js@npm:4.4.1" dependencies: punycode: "npm:^2.1.0" - checksum: 4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c languageName: node linkType: hard "urix@npm:^0.1.0": version: 0.1.0 resolution: "urix@npm:0.1.0" - checksum: 264f1b29360c33c0aec5fb9819d7e28f15d1a3b83175d2bcc9131efe8583f459f07364957ae3527f1478659ec5b2d0f1ad401dfb625f73e4d424b3ae35fc5fc0 + checksum: 10c0/264f1b29360c33c0aec5fb9819d7e28f15d1a3b83175d2bcc9131efe8583f459f07364957ae3527f1478659ec5b2d0f1ad401dfb625f73e4d424b3ae35fc5fc0 languageName: node linkType: hard @@ -32639,7 +32639,7 @@ __metadata: peerDependenciesMeta: file-loader: optional: true - checksum: 71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 + checksum: 10c0/71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 languageName: node linkType: hard @@ -32648,7 +32648,7 @@ __metadata: resolution: "url-parse-lax@npm:3.0.0" dependencies: prepend-http: "npm:^2.0.0" - checksum: 16f918634d41a4fab9e03c5f9702968c9930f7c29aa1a8c19a6dc01f97d02d9b700ab9f47f8da0b9ace6e0c0e99c27848994de1465b494bced6940c653481e55 + checksum: 10c0/16f918634d41a4fab9e03c5f9702968c9930f7c29aa1a8c19a6dc01f97d02d9b700ab9f47f8da0b9ace6e0c0e99c27848994de1465b494bced6940c653481e55 languageName: node linkType: hard @@ -32658,7 +32658,7 @@ __metadata: dependencies: querystringify: "npm:^2.1.1" requires-port: "npm:^1.0.0" - checksum: bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 languageName: node linkType: hard @@ -32668,7 +32668,7 @@ __metadata: dependencies: punycode: "npm:1.3.2" querystring: "npm:0.2.0" - checksum: f0a1c7d99ac35dd68a8962bc7b3dd38f08d457387fc686f0669ff881b00a68eabd9cb3aded09dfbe25401d7b632fc4a9c074cb373f6a4bd1d8b5324d1d442a0d + checksum: 10c0/f0a1c7d99ac35dd68a8962bc7b3dd38f08d457387fc686f0669ff881b00a68eabd9cb3aded09dfbe25401d7b632fc4a9c074cb373f6a4bd1d8b5324d1d442a0d languageName: node linkType: hard @@ -32678,21 +32678,21 @@ __metadata: dependencies: punycode: "npm:^1.4.1" qs: "npm:^6.11.0" - checksum: 9e18c57b854d6a8e0288c4ddf21f9e30273a0ef2efb28a7e3e3d6eac392637dbdecce0d8f616586d58ff43154997150ecc2c9873e6c845d1e742e24c940b6e12 + checksum: 10c0/9e18c57b854d6a8e0288c4ddf21f9e30273a0ef2efb28a7e3e3d6eac392637dbdecce0d8f616586d58ff43154997150ecc2c9873e6c845d1e742e24c940b6e12 languageName: node linkType: hard "urlpattern-polyfill@npm:^8.0.0": version: 8.0.2 resolution: "urlpattern-polyfill@npm:8.0.2" - checksum: 5388bbe8459dbd8861ee7cb97904be915dd863a9789c2191c528056f16adad7836ec22762ed002fed44e8995d0f98bdfb75a606466b77233e70d0f61b969aaf9 + checksum: 10c0/5388bbe8459dbd8861ee7cb97904be915dd863a9789c2191c528056f16adad7836ec22762ed002fed44e8995d0f98bdfb75a606466b77233e70d0f61b969aaf9 languageName: node linkType: hard "urlpattern-polyfill@npm:^9.0.0": version: 9.0.0 resolution: "urlpattern-polyfill@npm:9.0.0" - checksum: 1fecb4a7695ad7917b02193896ec7b5773bb730ee3fbbb583cfaf134cc99da054c18560a35e7e901ad4e2f7a6035b6754313a2bb84126a7f118201427d465185 + checksum: 10c0/1fecb4a7695ad7917b02193896ec7b5773bb730ee3fbbb583cfaf134cc99da054c18560a35e7e901ad4e2f7a6035b6754313a2bb84126a7f118201427d465185 languageName: node linkType: hard @@ -32707,7 +32707,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 8a0867ffd441f358c66d79567970a745cc78ac2f98840a81c1fa749a525e8716116c645497d886a815e1dcf40ad81a107ebd6a7d15fd9ab5925c44a994a1d89a + checksum: 10c0/8a0867ffd441f358c66d79567970a745cc78ac2f98840a81c1fa749a525e8716116c645497d886a815e1dcf40ad81a107ebd6a7d15fd9ab5925c44a994a1d89a languageName: node linkType: hard @@ -32719,7 +32719,7 @@ __metadata: peerDependencies: react: 16.8.0 - 18 react-dom: 16.8.0 - 18 - checksum: 6ccdeb09fe20566ec182b1635a22f189e13d46226b74610432590e69b31ef5d05d069badc3306ebd0d2bb608743b17981fb535763a1d7dc2c8ae462ee8e5999c + checksum: 10c0/6ccdeb09fe20566ec182b1635a22f189e13d46226b74610432590e69b31ef5d05d069badc3306ebd0d2bb608743b17981fb535763a1d7dc2c8ae462ee8e5999c languageName: node linkType: hard @@ -32735,7 +32735,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 + checksum: 10c0/89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 languageName: node linkType: hard @@ -32744,14 +32744,14 @@ __metadata: resolution: "use-sync-external-store@npm:1.2.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: ac4814e5592524f242921157e791b022efe36e451fe0d4fd4d204322d5433a4fc300d63b0ade5185f8e0735ded044c70bcf6d2352db0f74d097a238cebd2da02 + checksum: 10c0/ac4814e5592524f242921157e791b022efe36e451fe0d4fd4d204322d5433a4fc300d63b0ade5185f8e0735ded044c70bcf6d2352db0f74d097a238cebd2da02 languageName: node linkType: hard "use@npm:^3.1.0": version: 3.1.1 resolution: "use@npm:3.1.1" - checksum: 75b48673ab80d5139c76922630d5a8a44e72ed58dbaf54dee1b88352d10e1c1c1fc332066c782d8ae9a56503b85d3dc67ff6d2ffbd9821120466d1280ebb6d6e + checksum: 10c0/75b48673ab80d5139c76922630d5a8a44e72ed58dbaf54dee1b88352d10e1c1c1fc332066c782d8ae9a56503b85d3dc67ff6d2ffbd9821120466d1280ebb6d6e languageName: node linkType: hard @@ -32761,14 +32761,14 @@ __metadata: dependencies: node-gyp: "npm:latest" node-gyp-build: "npm:^4.3.0" - checksum: 23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f + checksum: 10c0/23cd6adc29e6901aa37ff97ce4b81be9238d0023c5e217515b34792f3c3edb01470c3bd6b264096dd73d0b01a1690b57468de3a24167dd83004ff71c51cc025f languageName: node linkType: hard "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" - checksum: 41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard @@ -32777,7 +32777,7 @@ __metadata: resolution: "util@npm:0.10.3" dependencies: inherits: "npm:2.0.1" - checksum: 88bb58fec3b1f5f43dea27795f61f24b3b505bbba6f3ad6e91b32db0cd0928b2acb54ebe21603a75743c6e21a52f954cd2ffb6cddafed5a01169dd1287db3ff3 + checksum: 10c0/88bb58fec3b1f5f43dea27795f61f24b3b505bbba6f3ad6e91b32db0cd0928b2acb54ebe21603a75743c6e21a52f954cd2ffb6cddafed5a01169dd1287db3ff3 languageName: node linkType: hard @@ -32786,7 +32786,7 @@ __metadata: resolution: "util@npm:0.11.1" dependencies: inherits: "npm:2.0.3" - checksum: 8e9d1a85e661c8a8d9883d821aedbff3f8d9c3accd85357020905386ada5653b20389fc3591901e2a0bde64f8dc86b28c3f990114aa5a38eaaf30b455fa3cdf6 + checksum: 10c0/8e9d1a85e661c8a8d9883d821aedbff3f8d9c3accd85357020905386ada5653b20389fc3591901e2a0bde64f8dc86b28c3f990114aa5a38eaaf30b455fa3cdf6 languageName: node linkType: hard @@ -32799,21 +32799,21 @@ __metadata: is-generator-function: "npm:^1.0.7" is-typed-array: "npm:^1.1.3" which-typed-array: "npm:^1.1.2" - checksum: c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 languageName: node linkType: hard "utila@npm:~0.4": version: 0.4.0 resolution: "utila@npm:0.4.0" - checksum: 2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e + checksum: 10c0/2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e languageName: node linkType: hard "utils-merge@npm:1.0.1": version: 1.0.1 resolution: "utils-merge@npm:1.0.1" - checksum: 02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 languageName: node linkType: hard @@ -32822,7 +32822,7 @@ __metadata: resolution: "uuid@npm:8.0.0" bin: uuid: dist/bin/uuid - checksum: e62301a1c6102da5ce9a147b492a4b5cfa14d2e8fdf4a6ebfda7929cb72d186f84173815ec18fa4160a03bf9724b16ece3737b3ac6701815bc965f8fa4279298 + checksum: 10c0/e62301a1c6102da5ce9a147b492a4b5cfa14d2e8fdf4a6ebfda7929cb72d186f84173815ec18fa4160a03bf9724b16ece3737b3ac6701815bc965f8fa4279298 languageName: node linkType: hard @@ -32831,7 +32831,7 @@ __metadata: resolution: "uuid@npm:9.0.1" bin: uuid: dist/bin/uuid - checksum: 1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b languageName: node linkType: hard @@ -32840,7 +32840,7 @@ __metadata: resolution: "uuid@npm:3.4.0" bin: uuid: ./bin/uuid - checksum: 1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 + checksum: 10c0/1c13950df865c4f506ebfe0a24023571fa80edf2e62364297a537c80af09c618299797bbf2dbac6b1f8ae5ad182ba474b89db61e0e85839683991f7e08795347 languageName: node linkType: hard @@ -32849,14 +32849,14 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" - checksum: bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 languageName: node linkType: hard @@ -32867,7 +32867,7 @@ __metadata: "@jridgewell/trace-mapping": "npm:^0.3.12" "@types/istanbul-lib-coverage": "npm:^2.0.1" convert-source-map: "npm:^1.6.0" - checksum: 657ef7c52a514c1a0769663f96dd6f2cd11d2d3f6c8272d1035f4a543dca0b52c84b005beb7f0ca215eb98425c8bc4aa92a62826b1fc76abc1f7228d33ccbc60 + checksum: 10c0/657ef7c52a514c1a0769663f96dd6f2cd11d2d3f6c8272d1035f4a543dca0b52c84b005beb7f0ca215eb98425c8bc4aa92a62826b1fc76abc1f7228d33ccbc60 languageName: node linkType: hard @@ -32876,14 +32876,14 @@ __metadata: resolution: "v8flags@npm:3.2.0" dependencies: homedir-polyfill: "npm:^1.0.1" - checksum: aa0149384c1b75eee60f9e4339dbcc891d5a2154f51dbe41feb35a2227e88c0f30701234676c47b7887414c6a95bce23783931eeed52126842b7ba3a75984da7 + checksum: 10c0/aa0149384c1b75eee60f9e4339dbcc891d5a2154f51dbe41feb35a2227e88c0f30701234676c47b7887414c6a95bce23783931eeed52126842b7ba3a75984da7 languageName: node linkType: hard "valid-data-url@npm:^3.0.0": version: 3.0.1 resolution: "valid-data-url@npm:3.0.1" - checksum: ffc7cac681976ca2db01003dc14286f75241309e90d96e505580469125c83c2de6b5203f0222226cb08f6daf0aff7de9855655c28a64e8590e7b58c01694a896 + checksum: 10c0/ffc7cac681976ca2db01003dc14286f75241309e90d96e505580469125c83c2de6b5203f0222226cb08f6daf0aff7de9855655c28a64e8590e7b58c01694a896 languageName: node linkType: hard @@ -32893,7 +32893,7 @@ __metadata: dependencies: spdx-correct: "npm:^3.0.0" spdx-expression-parse: "npm:^3.0.0" - checksum: 7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f + checksum: 10c0/7b91e455a8de9a0beaa9fe961e536b677da7f48c9a493edf4d4d4a87fd80a7a10267d438723364e432c2fcd00b5650b5378275cded362383ef570276e6312f4f languageName: node linkType: hard @@ -32902,7 +32902,7 @@ __metadata: resolution: "validate-npm-package-name@npm:5.0.0" dependencies: builtins: "npm:^5.0.0" - checksum: 36a9067650f5b90c573a0d394b89ddffb08fe58a60507d7938ad7c38f25055cc5c6bf4a10fbd604abe1f4a31062cbe0dfa8e7ccad37b249da32e7b71889c079e + checksum: 10c0/36a9067650f5b90c573a0d394b89ddffb08fe58a60507d7938ad7c38f25055cc5c6bf4a10fbd604abe1f4a31062cbe0dfa8e7ccad37b249da32e7b71889c079e languageName: node linkType: hard @@ -32911,21 +32911,21 @@ __metadata: resolution: "validate-npm-package-name@npm:3.0.0" dependencies: builtins: "npm:^1.0.3" - checksum: 064f21f59aefae6cc286dd4a50b15d14adb0227e0facab4316197dfb8d06801669e997af5081966c15f7828a5e6ff1957bd20886aeb6b9d0fa430e4cb5db9c4a + checksum: 10c0/064f21f59aefae6cc286dd4a50b15d14adb0227e0facab4316197dfb8d06801669e997af5081966c15f7828a5e6ff1957bd20886aeb6b9d0fa430e4cb5db9c4a languageName: node linkType: hard "value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": version: 1.0.12 resolution: "value-or-promise@npm:1.0.12" - checksum: b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262 + checksum: 10c0/b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262 languageName: node linkType: hard "vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" - checksum: f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f languageName: node linkType: hard @@ -32936,7 +32936,7 @@ __metadata: assert-plus: "npm:^1.0.0" core-util-is: "npm:1.0.2" extsprintf: "npm:^1.2.0" - checksum: 37ccdf8542b5863c525128908ac80f2b476eed36a32cb944de930ca1e2e78584cc435c4b9b4c68d0fc13a47b45ff364b4be43aa74f8804f9050140f660fb660d + checksum: 10c0/37ccdf8542b5863c525128908ac80f2b476eed36a32cb944de930ca1e2e78584cc435c4b9b4c68d0fc13a47b45ff364b4be43aa74f8804f9050140f660fb660d languageName: node linkType: hard @@ -32951,7 +32951,7 @@ __metadata: vite: "npm:^5.0.0" bin: vite-node: vite-node.mjs - checksum: 39a5b9d9c806a012aab208eee0f59e4e12446ec19a4cf149a6459e7ff86491c289e189fda4f55a63b7e37d713f5edbda0e9efed95af4f7ebefa6d39eee093c0b + checksum: 10c0/39a5b9d9c806a012aab208eee0f59e4e12446ec19a4cf149a6459e7ff86491c289e189fda4f55a63b7e37d713f5edbda0e9efed95af4f7ebefa6d39eee093c0b languageName: node linkType: hard @@ -32991,7 +32991,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 68969ccf72ad2078aec7d9e023fce6de03746a4761f9308924212fff7bd42487145b270166cec66cddacfd7b1315ec5aa39ead174fbd7fcd463637a96ff4c9d1 + checksum: 10c0/68969ccf72ad2078aec7d9e023fce6de03746a4761f9308924212fff7bd42487145b270166cec66cddacfd7b1315ec5aa39ead174fbd7fcd463637a96ff4c9d1 languageName: node linkType: hard @@ -33031,7 +33031,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: c51b8e458851943c903fddde6973e720099ef8a5f364fb107cddade59c9e90f6d9ad98b61a7419cdfa0c6374236e10bff965d0c2d9e7b1790c68b874e5e7950c + checksum: 10c0/c51b8e458851943c903fddde6973e720099ef8a5f364fb107cddade59c9e90f6d9ad98b61a7419cdfa0c6374236e10bff965d0c2d9e7b1790c68b874e5e7950c languageName: node linkType: hard @@ -33082,21 +33082,21 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 085cb62146191b32dc98fac1a5b0de6d1c63c44cc1e7946a7d38309dd4135539432ec27b4bfad38ce79736688a0ce20d9b93f58de4ce4a41677cb3c5ca6ad980 + checksum: 10c0/085cb62146191b32dc98fac1a5b0de6d1c63c44cc1e7946a7d38309dd4135539432ec27b4bfad38ce79736688a0ce20d9b93f58de4ce4a41677cb3c5ca6ad980 languageName: node linkType: hard "vm-browserify@npm:^1.0.1": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" - checksum: 0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b + checksum: 10c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b languageName: node linkType: hard "vscode-jsonrpc@npm:^5.0.1": version: 5.0.1 resolution: "vscode-jsonrpc@npm:5.0.1" - checksum: 365dc54648247f0eb31ffdeb45b67c17f2cfac6cf55810b52376bad0becc7ee029dbe722e8d94fc779217e012466e8f7c7360749667946ff4e1156731abe1941 + checksum: 10c0/365dc54648247f0eb31ffdeb45b67c17f2cfac6cf55810b52376bad0becc7ee029dbe722e8d94fc779217e012466e8f7c7360749667946ff4e1156731abe1941 languageName: node linkType: hard @@ -33106,21 +33106,21 @@ __metadata: dependencies: vscode-jsonrpc: "npm:^5.0.1" vscode-languageserver-types: "npm:3.15.1" - checksum: 2facc23c351e7a3e1e402d6ccbd32c3e75e9e6474ac954edb68fdedc798e42575fd6830d04015e820733c585b7ef269008a4353558aa7a67b512acf03dfbc0f0 + checksum: 10c0/2facc23c351e7a3e1e402d6ccbd32c3e75e9e6474ac954edb68fdedc798e42575fd6830d04015e820733c585b7ef269008a4353558aa7a67b512acf03dfbc0f0 languageName: node linkType: hard "vscode-languageserver-textdocument@npm:1.0.8": version: 1.0.8 resolution: "vscode-languageserver-textdocument@npm:1.0.8" - checksum: 2981b4d0935c47d76fda9d80840b71de414990a2976840106a462277a26002c7abe2453ab872a00861803cf62ed6b340c6ecbc7a3549788309e28096b73a4d52 + checksum: 10c0/2981b4d0935c47d76fda9d80840b71de414990a2976840106a462277a26002c7abe2453ab872a00861803cf62ed6b340c6ecbc7a3549788309e28096b73a4d52 languageName: node linkType: hard "vscode-languageserver-types@npm:3.17.3": version: 3.17.3 resolution: "vscode-languageserver-types@npm:3.17.3" - checksum: a70d4ac0dbc08ba425b97e329e6a5696dabc6a264415bacb861e10d859b224f1b46d1fb41c17b6fdd31b32749d3bdfc819cb1b8a57dbe0d1e70e661ba8cfa397 + checksum: 10c0/a70d4ac0dbc08ba425b97e329e6a5696dabc6a264415bacb861e10d859b224f1b46d1fb41c17b6fdd31b32749d3bdfc819cb1b8a57dbe0d1e70e661ba8cfa397 languageName: node linkType: hard @@ -33131,7 +33131,7 @@ __metadata: vscode-languageserver-protocol: "npm:^3.15.3" bin: installServerIntoExtension: ./bin/installServerIntoExtension - checksum: 90d7a6a3d3428a381d84a563299ebb59cec3f534ec78b76f6444f79da514380088b7bab2f2c428e15f071afa0b75aaf30a97e644f314e00753231870e8ead204 + checksum: 10c0/90d7a6a3d3428a381d84a563299ebb59cec3f534ec78b76f6444f79da514380088b7bab2f2c428e15f071afa0b75aaf30a97e644f314e00753231870e8ead204 languageName: node linkType: hard @@ -33140,14 +33140,14 @@ __metadata: resolution: "w3c-xmlserializer@npm:4.0.0" dependencies: xml-name-validator: "npm:^4.0.0" - checksum: 02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 + checksum: 10c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 languageName: node linkType: hard "walk-up-path@npm:^3.0.1": version: 3.0.1 resolution: "walk-up-path@npm:3.0.1" - checksum: 3184738e0cf33698dd58b0ee4418285b9c811e58698f52c1f025435a85c25cbc5a63fee599f1a79cb29ca7ef09a44ec9417b16bfd906b1a37c305f7aa20ee5bc + checksum: 10c0/3184738e0cf33698dd58b0ee4418285b9c811e58698f52c1f025435a85c25cbc5a63fee599f1a79cb29ca7ef09a44ec9417b16bfd906b1a37c305f7aa20ee5bc languageName: node linkType: hard @@ -33156,7 +33156,7 @@ __metadata: resolution: "walker@npm:1.0.8" dependencies: makeerror: "npm:1.0.12" - checksum: a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e languageName: node linkType: hard @@ -33165,7 +33165,7 @@ __metadata: resolution: "watchpack-chokidar2@npm:2.0.1" dependencies: chokidar: "npm:^2.1.8" - checksum: 9b8d880ae2543dd4f26a69f6b7f881119494f6b772b7431027a06a5cf963e0ebc1cac91a3ef479365c358b693c65fa80a1f8297427fa11fd4c080c3d6408c372 + checksum: 10c0/9b8d880ae2543dd4f26a69f6b7f881119494f6b772b7431027a06a5cf963e0ebc1cac91a3ef479365c358b693c65fa80a1f8297427fa11fd4c080c3d6408c372 languageName: node linkType: hard @@ -33182,7 +33182,7 @@ __metadata: optional: true watchpack-chokidar2: optional: true - checksum: 53e3b112064f5de9edbb2a14973fb3901d9697b24cc70f8531a143eaace2353a273ca25c0ba21def8d3803cfedb8f6861ca1e49e9782257e40d5b5f8f5365c86 + checksum: 10c0/53e3b112064f5de9edbb2a14973fb3901d9697b24cc70f8531a143eaace2353a273ca25c0ba21def8d3803cfedb8f6861ca1e49e9782257e40d5b5f8f5365c86 languageName: node linkType: hard @@ -33192,7 +33192,7 @@ __metadata: dependencies: glob-to-regexp: "npm:^0.4.1" graceful-fs: "npm:^4.1.2" - checksum: c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 + checksum: 10c0/c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 languageName: node linkType: hard @@ -33201,7 +33201,7 @@ __metadata: resolution: "watskeburt@npm:2.0.2" bin: watskeburt: dist/run-cli.js - checksum: 7f6d01d395d4b05cd1e66925da9073c73d5b0f91600924cb9bd183ab37d571c90b7372e382b1fb8063f8aaf325ab9e72b2456ca76626d2690bbc4ef4768ff23d + checksum: 10c0/7f6d01d395d4b05cd1e66925da9073c73d5b0f91600924cb9bd183ab37d571c90b7372e382b1fb8063f8aaf325ab9e72b2456ca76626d2690bbc4ef4768ff23d languageName: node linkType: hard @@ -33210,7 +33210,7 @@ __metadata: resolution: "wbuf@npm:1.7.3" dependencies: minimalistic-assert: "npm:^1.0.0" - checksum: 56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 + checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 languageName: node linkType: hard @@ -33219,7 +33219,7 @@ __metadata: resolution: "wcwidth@npm:1.0.1" dependencies: defaults: "npm:^1.0.3" - checksum: 5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 languageName: node linkType: hard @@ -33232,7 +33232,7 @@ __metadata: dependenciesMeta: "@zxing/text-encoding": optional: true - checksum: 59d5413338ec0894c690006f5d8508b0c88cae1d8c78606c3f326e351c672196461ed808b849fe08d0900fa56a61fcacb9ff576499068d2ead0a7bc04afa7d34 + checksum: 10c0/59d5413338ec0894c690006f5d8508b0c88cae1d8c78606c3f326e351c672196461ed808b849fe08d0900fa56a61fcacb9ff576499068d2ead0a7bc04afa7d34 languageName: node linkType: hard @@ -33246,14 +33246,14 @@ __metadata: mime: "npm:^2.4.6" node-fetch: "npm:^2.6.0" valid-data-url: "npm:^3.0.0" - checksum: b4b457de2448255100797b1eaefa0f62a8846b2452de8495b9ec17d3e223ebb4848a31b11a645e3541a5b114eb9f201219cda2f99d1b513631777f8c89d1c8a6 + checksum: 10c0/b4b457de2448255100797b1eaefa0f62a8846b2452de8495b9ec17d3e223ebb4848a31b11a645e3541a5b114eb9f201219cda2f99d1b513631777f8c89d1c8a6 languageName: node linkType: hard "web-streams-polyfill@npm:^3.0.3, web-streams-polyfill@npm:^3.2.1": version: 3.2.1 resolution: "web-streams-polyfill@npm:3.2.1" - checksum: 70ed6b5708e14afa2ab699221ea197d7c68ec0c8274bbe0181aecc5ba636ca27cbd383d2049f0eb9d529e738f5c088825502b317f3df24d18a278e4cc9a10e8b + checksum: 10c0/70ed6b5708e14afa2ab699221ea197d7c68ec0c8274bbe0181aecc5ba636ca27cbd383d2049f0eb9d529e738f5c088825502b317f3df24d18a278e4cc9a10e8b languageName: node linkType: hard @@ -33266,21 +33266,21 @@ __metadata: asn1js: "npm:^3.0.1" pvtsutils: "npm:^1.3.2" tslib: "npm:^2.4.0" - checksum: 57f0bee4e6c39f04fe5fc5fa615f245b3a9d41b330855cd1c525b96e9124d94e6cd06a174cbe1ff63dcb3b296995ae516e3ff02bad94baddd2a4e1060a854282 + checksum: 10c0/57f0bee4e6c39f04fe5fc5fa615f245b3a9d41b330855cd1c525b96e9124d94e6cd06a174cbe1ff63dcb3b296995ae516e3ff02bad94baddd2a4e1060a854282 languageName: node linkType: hard "webidl-conversions@npm:^3.0.0": version: 3.0.1 resolution: "webidl-conversions@npm:3.0.1" - checksum: 5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db languageName: node linkType: hard "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" - checksum: 228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 languageName: node linkType: hard @@ -33307,7 +33307,7 @@ __metadata: ws: "npm:^7.3.1" bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 + checksum: 10c0/dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 languageName: node linkType: hard @@ -33339,7 +33339,7 @@ __metadata: optional: true bin: webpack-cli: bin/cli.js - checksum: 4266909ae5e2e662c8790ac286e965b2c7fd5a4a2f07f48e28576234c9a5f631847ccddc18e1b3281c7b4be04a7ff4717d2636033a322dde13ac995fd0d9de10 + checksum: 10c0/4266909ae5e2e662c8790ac286e965b2c7fd5a4a2f07f48e28576234c9a5f631847ccddc18e1b3281c7b4be04a7ff4717d2636033a322dde13ac995fd0d9de10 languageName: node linkType: hard @@ -33354,7 +33354,7 @@ __metadata: schema-utils: "npm:^4.0.0" peerDependencies: webpack: ^4.0.0 || ^5.0.0 - checksum: 378ceed430b61c0b0eccdbb55a97173aa36231bb88e20ad12bafb3d553e542708fa31f08474b9c68d4ac95174a047def9e426e193b7134be3736afa66a0d1708 + checksum: 10c0/378ceed430b61c0b0eccdbb55a97173aa36231bb88e20ad12bafb3d553e542708fa31f08474b9c68d4ac95174a047def9e426e193b7134be3736afa66a0d1708 languageName: node linkType: hard @@ -33372,7 +33372,7 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: f8f5b7f7591fa3e4d4008b28ab2b5c13367a24587257e3e37cff31e2d8a6c859de5294af83c79e8faf3137db194377f392fffacdf5010b5c1311eba6f9b71568 + checksum: 10c0/f8f5b7f7591fa3e4d4008b28ab2b5c13367a24587257e3e37cff31e2d8a6c859de5294af83c79e8faf3137db194377f392fffacdf5010b5c1311eba6f9b71568 languageName: node linkType: hard @@ -33419,7 +33419,7 @@ __metadata: optional: true bin: webpack-dev-server: bin/webpack-dev-server.js - checksum: 2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 + checksum: 10c0/2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 languageName: node linkType: hard @@ -33430,7 +33430,7 @@ __metadata: ansi-html-community: "npm:0.0.8" html-entities: "npm:^2.1.0" strip-ansi: "npm:^6.0.0" - checksum: c0702d308a39bdbc9277d66df50272e8c358c2238cecb0881df57136f54cb7a3d8291320b13075325b58f7a3cbf7a1ef10829554a5bc2ddfa3effbf416dc8e8c + checksum: 10c0/c0702d308a39bdbc9277d66df50272e8c358c2238cecb0881df57136f54cb7a3d8291320b13075325b58f7a3cbf7a1ef10829554a5bc2ddfa3effbf416dc8e8c languageName: node linkType: hard @@ -33442,7 +33442,7 @@ __metadata: webpack-sources: "npm:^2.2.0" peerDependencies: webpack: ^5.47.0 - checksum: c6baed67855c48363a7bd677bc05ac532e2d817370894ec5a785524c1df08859330198eda419efb17d0e4233dc74d194f423a4ac5d34ab5521ba2617d14ea572 + checksum: 10c0/c6baed67855c48363a7bd677bc05ac532e2d817370894ec5a785524c1df08859330198eda419efb17d0e4233dc74d194f423a4ac5d34ab5521ba2617d14ea572 languageName: node linkType: hard @@ -33453,7 +33453,7 @@ __metadata: clone-deep: "npm:^4.0.1" flat: "npm:^5.0.2" wildcard: "npm:^2.0.0" - checksum: b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b + checksum: 10c0/b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b languageName: node linkType: hard @@ -33464,7 +33464,7 @@ __metadata: prettier: "npm:^2.6.2" peerDependencies: webpack: ">=5.0.0" - checksum: 62a4eda6a8d4c3a1169d41fd7d69902f06b4c39c76019f897ac3cb6958ecba5591c37386e303e7495859602386a61ac597fa970937099bcfc4f4b9a1027cece8 + checksum: 10c0/62a4eda6a8d4c3a1169d41fd7d69902f06b4c39c76019f897ac3cb6958ecba5591c37386e303e7495859602386a61ac597fa970937099bcfc4f4b9a1027cece8 languageName: node linkType: hard @@ -33474,7 +33474,7 @@ __metadata: dependencies: source-list-map: "npm:^2.0.0" source-map: "npm:~0.6.1" - checksum: 78dafb3e1e297d3f4eb6204311e8c64d28cd028f82887ba33aaf03fffc82482d8e1fdf6de25a60f4dde621d3565f4c3b1bfb350f09add8f4e54e00279ff3db5e + checksum: 10c0/78dafb3e1e297d3f4eb6204311e8c64d28cd028f82887ba33aaf03fffc82482d8e1fdf6de25a60f4dde621d3565f4c3b1bfb350f09add8f4e54e00279ff3db5e languageName: node linkType: hard @@ -33484,21 +33484,21 @@ __metadata: dependencies: source-list-map: "npm:^2.0.1" source-map: "npm:^0.6.1" - checksum: caf56a9a478eca7e77feca2b6ddc7673f1384eb870280014b300c40cf42abca656f639ff58a8d55a889a92a810ae3c22e71e578aa38fde416e8c2e6827a6ddfd + checksum: 10c0/caf56a9a478eca7e77feca2b6ddc7673f1384eb870280014b300c40cf42abca656f639ff58a8d55a889a92a810ae3c22e71e578aa38fde416e8c2e6827a6ddfd languageName: node linkType: hard "webpack-sources@npm:^3.2.3": version: 3.2.3 resolution: "webpack-sources@npm:3.2.3" - checksum: 2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e languageName: node linkType: hard "webpack-virtual-modules@npm:^0.5.0": version: 0.5.0 resolution: "webpack-virtual-modules@npm:0.5.0" - checksum: 0742e069cd49d91ccd0b59431b3666903d321582c1b1062fa6bdae005c3538af55ff8787ea5eafbf72662f3496d3a879e2c705d55ca0af8283548a925be18484 + checksum: 10c0/0742e069cd49d91ccd0b59431b3666903d321582c1b1062fa6bdae005c3538af55ff8787ea5eafbf72662f3496d3a879e2c705d55ca0af8283548a925be18484 languageName: node linkType: hard @@ -33535,7 +33535,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 4acec1a719a9c5b890a30a9fb18519e671e55382f2c51120b76a2c1c1c521285b6510327faf79f85a4b11c7a2c5c01e1d2e7bf73e5cddbada1503f4d51a63441 + checksum: 10c0/4acec1a719a9c5b890a30a9fb18519e671e55382f2c51120b76a2c1c1c521285b6510327faf79f85a4b11c7a2c5c01e1d2e7bf73e5cddbada1503f4d51a63441 languageName: node linkType: hard @@ -33573,7 +33573,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 3451b48b926d7c295a4eba65bb7ff9a7d2d49a848014ea0945f446ebf4c1ca5bdd15681b444f5dfd8bbc4856afda55211d30a173ae721b8108f229792e6fb509 + checksum: 10c0/3451b48b926d7c295a4eba65bb7ff9a7d2d49a848014ea0945f446ebf4c1ca5bdd15681b444f5dfd8bbc4856afda55211d30a173ae721b8108f229792e6fb509 languageName: node linkType: hard @@ -33582,7 +33582,7 @@ __metadata: resolution: "webpod@npm:0.0.2" bin: webpod: dist/index.js - checksum: 92b5920be7a8a080839221ce70e5d18f5cac86455af9ee20a54e77ee5c577746981c6d70afc2510df15061d3e3ea8c47f9fc36c2be01f47fd7630db1c9e5cba0 + checksum: 10c0/92b5920be7a8a080839221ce70e5d18f5cac86455af9ee20a54e77ee5c577746981c6d70afc2510df15061d3e3ea8c47f9fc36c2be01f47fd7630db1c9e5cba0 languageName: node linkType: hard @@ -33593,14 +33593,14 @@ __metadata: http-parser-js: "npm:>=0.5.1" safe-buffer: "npm:>=5.1.0" websocket-extensions: "npm:>=0.1.1" - checksum: 5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 + checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 languageName: node linkType: hard "websocket-extensions@npm:>=0.1.1": version: 0.1.4 resolution: "websocket-extensions@npm:0.1.4" - checksum: bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 + checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 languageName: node linkType: hard @@ -33614,7 +33614,7 @@ __metadata: typedarray-to-buffer: "npm:^3.1.5" utf-8-validate: "npm:^5.0.2" yaeti: "npm:^0.0.6" - checksum: a7e17d24edec685fdf055940ff9c6a15e726df5bb5e537382390bd1ab978fc8c0d71cd2842bb628e361d823aafd43934cc56aa5b979d08e52461be7da8d01eee + checksum: 10c0/a7e17d24edec685fdf055940ff9c6a15e726df5bb5e537382390bd1ab978fc8c0d71cd2842bb628e361d823aafd43934cc56aa5b979d08e52461be7da8d01eee languageName: node linkType: hard @@ -33623,21 +33623,21 @@ __metadata: resolution: "whatwg-encoding@npm:2.0.0" dependencies: iconv-lite: "npm:0.6.3" - checksum: 91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e + checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e languageName: node linkType: hard "whatwg-fetch@npm:3.6.19": version: 3.6.19 resolution: "whatwg-fetch@npm:3.6.19" - checksum: 01dd755492d594c8d71d47811bb3886cdb7d566684daff5ec658cf148fa2418de6b562a94ff8cceaf1cf277bfb99fa6b61258cc20de5053f5817a4d419b5d293 + checksum: 10c0/01dd755492d594c8d71d47811bb3886cdb7d566684daff5ec658cf148fa2418de6b562a94ff8cceaf1cf277bfb99fa6b61258cc20de5053f5817a4d419b5d293 languageName: node linkType: hard "whatwg-mimetype@npm:^3.0.0": version: 3.0.0 resolution: "whatwg-mimetype@npm:3.0.0" - checksum: 323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f + checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f languageName: node linkType: hard @@ -33647,7 +33647,7 @@ __metadata: dependencies: tr46: "npm:^3.0.0" webidl-conversions: "npm:^7.0.0" - checksum: f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 + checksum: 10c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 languageName: node linkType: hard @@ -33657,7 +33657,7 @@ __metadata: dependencies: tr46: "npm:~0.0.3" webidl-conversions: "npm:^3.0.0" - checksum: 1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 languageName: node linkType: hard @@ -33670,7 +33670,7 @@ __metadata: is-number-object: "npm:^1.0.4" is-string: "npm:^1.0.5" is-symbol: "npm:^1.0.3" - checksum: 0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e languageName: node linkType: hard @@ -33690,7 +33690,7 @@ __metadata: which-boxed-primitive: "npm:^1.0.2" which-collection: "npm:^1.0.1" which-typed-array: "npm:^1.1.9" - checksum: 2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 + checksum: 10c0/2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 languageName: node linkType: hard @@ -33702,14 +33702,14 @@ __metadata: is-set: "npm:^2.0.1" is-weakmap: "npm:^2.0.1" is-weakset: "npm:^2.0.1" - checksum: 249f913e1758ed2f06f00706007d87dc22090a80591a56917376e70ecf8fc9ab6c41d98e1c87208bb9648676f65d4b09c0e4d23c56c7afb0f0a73a27d701df5d + checksum: 10c0/249f913e1758ed2f06f00706007d87dc22090a80591a56917376e70ecf8fc9ab6c41d98e1c87208bb9648676f65d4b09c0e4d23c56c7afb0f0a73a27d701df5d languageName: node linkType: hard "which-module@npm:^2.0.0": version: 2.0.1 resolution: "which-module@npm:2.0.1" - checksum: 087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e languageName: node linkType: hard @@ -33722,7 +33722,7 @@ __metadata: for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" has-tostringtag: "npm:^1.0.0" - checksum: 9f5f1c42918df3d5b91c4315ed0051d5d874370998bf095c9ae0df374f0881f85094e3c384b8fb08ab7b4d4f54ba81c0aff75da6226e7c0589b83dfbec1cd4c9 + checksum: 10c0/9f5f1c42918df3d5b91c4315ed0051d5d874370998bf095c9ae0df374f0881f85094e3c384b8fb08ab7b4d4f54ba81c0aff75da6226e7c0589b83dfbec1cd4c9 languageName: node linkType: hard @@ -33733,7 +33733,7 @@ __metadata: isexe: "npm:^2.0.0" bin: node-which: ./bin/node-which - checksum: 66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f languageName: node linkType: hard @@ -33744,7 +33744,7 @@ __metadata: isexe: "npm:^2.0.0" bin: node-which: bin/which.js - checksum: 15263b06161a7c377328fd2066cb1f093f5e8a8f429618b63212b5b8847489be7bcab0ab3eb07f3ecc0eda99a5a7ea52105cf5fa8266bedd083cc5a9f6da24f1 + checksum: 10c0/15263b06161a7c377328fd2066cb1f093f5e8a8f429618b63212b5b8847489be7bcab0ab3eb07f3ecc0eda99a5a7ea52105cf5fa8266bedd083cc5a9f6da24f1 languageName: node linkType: hard @@ -33755,7 +33755,7 @@ __metadata: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a languageName: node linkType: hard @@ -33767,7 +33767,7 @@ __metadata: stackback: "npm:0.0.2" bin: why-is-node-running: cli.js - checksum: 805d57eb5d33f0fb4e36bae5dceda7fd8c6932c2aeb705e30003970488f1a2bc70029ee64be1a0e1531e2268b11e65606e88e5b71d667ea745e6dc48fc9014bd + checksum: 10c0/805d57eb5d33f0fb4e36bae5dceda7fd8c6932c2aeb705e30003970488f1a2bc70029ee64be1a0e1531e2268b11e65606e88e5b71d667ea745e6dc48fc9014bd languageName: node linkType: hard @@ -33776,7 +33776,7 @@ __metadata: resolution: "wide-align@npm:1.1.5" dependencies: string-width: "npm:^1.0.2 || 2 || 3 || 4" - checksum: 1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 + checksum: 10c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 languageName: node linkType: hard @@ -33785,28 +33785,28 @@ __metadata: resolution: "widest-line@npm:3.1.0" dependencies: string-width: "npm:^4.0.0" - checksum: b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f + checksum: 10c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f languageName: node linkType: hard "wildcard@npm:^2.0.0": version: 2.0.1 resolution: "wildcard@npm:2.0.1" - checksum: 08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 + checksum: 10c0/08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 languageName: node linkType: hard "word-wrap@npm:~1.2.3": version: 1.2.4 resolution: "word-wrap@npm:1.2.4" - checksum: a71416c2019981fb7a55e2beb1706990d8fd087b7ad8234bd10c2aad5e7939eef3d88f0206ac781435c4f46125c94a6b33fe2afc234daf48c5d912409dad4f24 + checksum: 10c0/a71416c2019981fb7a55e2beb1706990d8fd087b7ad8234bd10c2aad5e7939eef3d88f0206ac781435c4f46125c94a6b33fe2afc234daf48c5d912409dad4f24 languageName: node linkType: hard "wordwrap@npm:^1.0.0": version: 1.0.0 resolution: "wordwrap@npm:1.0.0" - checksum: 7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 + checksum: 10c0/7ed2e44f3c33c5c3e3771134d2b0aee4314c9e49c749e37f464bf69f2bcdf0cbf9419ca638098e2717cff4875c47f56a007532f6111c3319f557a2ca91278e92 languageName: node linkType: hard @@ -33815,7 +33815,7 @@ __metadata: resolution: "worker-farm@npm:1.7.0" dependencies: errno: "npm:~0.1.7" - checksum: 069a032f9198a07273a7608dc0c23d7288c1c25256b66008e1ae95838cda6fa2c7aefb3b7ba760f975c8d18120ca54eb193afb66d7237b2a05e5da12c1c961f7 + checksum: 10c0/069a032f9198a07273a7608dc0c23d7288c1c25256b66008e1ae95838cda6fa2c7aefb3b7ba760f975c8d18120ca54eb193afb66d7237b2a05e5da12c1c961f7 languageName: node linkType: hard @@ -33826,7 +33826,7 @@ __metadata: ansi-styles: "npm:^4.0.0" string-width: "npm:^4.1.0" strip-ansi: "npm:^6.0.0" - checksum: d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da languageName: node linkType: hard @@ -33837,7 +33837,7 @@ __metadata: ansi-styles: "npm:^6.2.1" string-width: "npm:^7.0.0" strip-ansi: "npm:^7.1.0" - checksum: a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066 + checksum: 10c0/a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066 languageName: node linkType: hard @@ -33848,7 +33848,7 @@ __metadata: ansi-styles: "npm:^4.0.0" string-width: "npm:^4.1.0" strip-ansi: "npm:^6.0.0" - checksum: baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c languageName: node linkType: hard @@ -33859,14 +33859,14 @@ __metadata: ansi-styles: "npm:^6.1.0" string-width: "npm:^5.0.1" strip-ansi: "npm:^7.0.1" - checksum: 138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" - checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 languageName: node linkType: hard @@ -33876,7 +33876,7 @@ __metadata: dependencies: imurmurhash: "npm:^0.1.4" signal-exit: "npm:^4.0.1" - checksum: e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d + checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d languageName: node linkType: hard @@ -33887,7 +33887,7 @@ __metadata: graceful-fs: "npm:^4.1.11" imurmurhash: "npm:^0.1.4" signal-exit: "npm:^3.0.2" - checksum: 8cb4bba0c1ab814a9b127844da0db4fb8c5e06ddbe6317b8b319377c73b283673036c8b9360120062898508b9428d81611cf7fa97584504a00bc179b2a580b92 + checksum: 10c0/8cb4bba0c1ab814a9b127844da0db4fb8c5e06ddbe6317b8b319377c73b283673036c8b9360120062898508b9428d81611cf7fa97584504a00bc179b2a580b92 languageName: node linkType: hard @@ -33897,7 +33897,7 @@ __metadata: dependencies: imurmurhash: "npm:^0.1.4" signal-exit: "npm:^3.0.7" - checksum: a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 languageName: node linkType: hard @@ -33911,7 +33911,7 @@ __metadata: pify: "npm:^4.0.1" sort-keys: "npm:^2.0.0" write-file-atomic: "npm:^2.4.2" - checksum: 3eadcb6e832ac34dbba37d4eea8871d9fef0e0d77c486b13ed5f81d84a8fcecd9e1a04277e2691eb803c2bed39c2a315e98b96f492c271acee2836acc6276043 + checksum: 10c0/3eadcb6e832ac34dbba37d4eea8871d9fef0e0d77c486b13ed5f81d84a8fcecd9e1a04277e2691eb803c2bed39c2a315e98b96f492c271acee2836acc6276043 languageName: node linkType: hard @@ -33922,7 +33922,7 @@ __metadata: sort-keys: "npm:^2.0.0" type-fest: "npm:^0.4.1" write-json-file: "npm:^3.2.0" - checksum: 8e20db5fa444dad04e3703c18d8e0f89679caa60accbee5da9ea3aa076430b3f32d99f50d8860d29044245775795455c62d12d16a7856d407e30df7b79f39505 + checksum: 10c0/8e20db5fa444dad04e3703c18d8e0f89679caa60accbee5da9ea3aa076430b3f32d99f50d8860d29044245775795455c62d12d16a7856d407e30df7b79f39505 languageName: node linkType: hard @@ -33937,7 +33937,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + checksum: 10c0/579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d languageName: node linkType: hard @@ -33946,7 +33946,7 @@ __metadata: resolution: "ws@npm:6.2.2" dependencies: async-limiter: "npm:~1.0.0" - checksum: d628a1e95668a296644b4f51ce5debb43d9f1d89ebb2e32fef205a685b9439378eb824d60ce3a40bbc3bad0e887d84a56b343f2076f48d74f17c4c0800c42967 + checksum: 10c0/d628a1e95668a296644b4f51ce5debb43d9f1d89ebb2e32fef205a685b9439378eb824d60ce3a40bbc3bad0e887d84a56b343f2076f48d74f17c4c0800c42967 languageName: node linkType: hard @@ -33961,21 +33961,21 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 + checksum: 10c0/aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 languageName: node linkType: hard "xdg-basedir@npm:^3.0.0": version: 3.0.0 resolution: "xdg-basedir@npm:3.0.0" - checksum: c3be36400d8a69c9154ce6ccff98832dae0d04f8bacda806f609d3955beb23dc7c9dde724438b81e6128bf253d440a2bfe0239dd37d70333ab625c4e170b77b2 + checksum: 10c0/c3be36400d8a69c9154ce6ccff98832dae0d04f8bacda806f609d3955beb23dc7c9dde724438b81e6128bf253d440a2bfe0239dd37d70333ab625c4e170b77b2 languageName: node linkType: hard "xml-name-validator@npm:^4.0.0": version: 4.0.0 resolution: "xml-name-validator@npm:4.0.0" - checksum: c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd + checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd languageName: node linkType: hard @@ -33985,112 +33985,112 @@ __metadata: dependencies: sax: "npm:>=0.6.0" xmlbuilder: "npm:~11.0.0" - checksum: c9cd07cd19c5e41c740913bbbf16999a37a204488e11f86eddc2999707d43967197e257014d7ed72c8fc4348c192fa47eb352d1d9d05637cefd0d2e24e9aa4c8 + checksum: 10c0/c9cd07cd19c5e41c740913bbbf16999a37a204488e11f86eddc2999707d43967197e257014d7ed72c8fc4348c192fa47eb352d1d9d05637cefd0d2e24e9aa4c8 languageName: node linkType: hard "xmlbuilder@npm:~11.0.0": version: 11.0.1 resolution: "xmlbuilder@npm:11.0.1" - checksum: 74b979f89a0a129926bc786b913459bdbcefa809afaa551c5ab83f89b1915bdaea14c11c759284bb9b931e3b53004dbc2181e21d3ca9553eeb0b2a7b4e40c35b + checksum: 10c0/74b979f89a0a129926bc786b913459bdbcefa809afaa551c5ab83f89b1915bdaea14c11c759284bb9b931e3b53004dbc2181e21d3ca9553eeb0b2a7b4e40c35b languageName: node linkType: hard "xmlchars@npm:^2.2.0": version: 2.2.0 resolution: "xmlchars@npm:2.2.0" - checksum: b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 languageName: node linkType: hard "xmlcreate@npm:^2.0.4": version: 2.0.4 resolution: "xmlcreate@npm:2.0.4" - checksum: fc4234e2d1942877d761d4f3d64410b54633d2ec60b13a5d56a6a06545aba39a0df8ed7ded10785a302f632eb4f0a4fedbf4bf10e17892e11d5075244b9e5705 + checksum: 10c0/fc4234e2d1942877d761d4f3d64410b54633d2ec60b13a5d56a6a06545aba39a0df8ed7ded10785a302f632eb4f0a4fedbf4bf10e17892e11d5075244b9e5705 languageName: node linkType: hard "xregexp@npm:4.0.0": version: 4.0.0 resolution: "xregexp@npm:4.0.0" - checksum: cc7f49f03b999013544ce9d58ffc356f71c95c21b5e0478386f2c639fb2a89adf02cf9dbe25e9262e1e336d7b812c220aa3a644a4ac39020747ddb6773b6284f + checksum: 10c0/cc7f49f03b999013544ce9d58ffc356f71c95c21b5e0478386f2c639fb2a89adf02cf9dbe25e9262e1e336d7b812c220aa3a644a4ac39020747ddb6773b6284f languageName: node linkType: hard "xtend@npm:^4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" - checksum: 366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e languageName: node linkType: hard "y18n@npm:^4.0.0": version: 4.0.3 resolution: "y18n@npm:4.0.3" - checksum: 308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 languageName: node linkType: hard "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" - checksum: 4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 languageName: node linkType: hard "yaeti@npm:^0.0.6": version: 0.0.6 resolution: "yaeti@npm:0.0.6" - checksum: 4e88702d8b34d7b61c1c4ec674422b835d453b8f8a6232be41e59fc98bc4d9ab6d5abd2da55bab75dfc07ae897fdc0c541f856ce3ab3b17de1630db6161aa3f6 + checksum: 10c0/4e88702d8b34d7b61c1c4ec674422b835d453b8f8a6232be41e59fc98bc4d9ab6d5abd2da55bab75dfc07ae897fdc0c541f856ce3ab3b17de1630db6161aa3f6 languageName: node linkType: hard "yallist@npm:4.0.0, yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" - checksum: 2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a languageName: node linkType: hard "yallist@npm:^2.0.0": version: 2.1.2 resolution: "yallist@npm:2.1.2" - checksum: 0b9e25aa00adf19e01d2bcd4b208aee2b0db643d9927131797b7af5ff69480fc80f1c3db738cbf3946f0bddf39d8f2d0a5709c644fd42d4aa3a4e6e786c087b5 + checksum: 10c0/0b9e25aa00adf19e01d2bcd4b208aee2b0db643d9927131797b7af5ff69480fc80f1c3db738cbf3946f0bddf39d8f2d0a5709c644fd42d4aa3a4e6e786c087b5 languageName: node linkType: hard "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" - checksum: c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 languageName: node linkType: hard "yaml-ast-parser@npm:^0.0.43": version: 0.0.43 resolution: "yaml-ast-parser@npm:0.0.43" - checksum: 4d2f1e761067b2c6abdd882279a406f879258787af470a6d4a659cb79cb2ab056b870b25f1f80f46ed556e8b499d611d247806376f53edf3412f72c0a8ea2e98 + checksum: 10c0/4d2f1e761067b2c6abdd882279a406f879258787af470a6d4a659cb79cb2ab056b870b25f1f80f46ed556e8b499d611d247806376f53edf3412f72c0a8ea2e98 languageName: node linkType: hard "yaml@npm:^1.10.0": version: 1.10.2 resolution: "yaml@npm:1.10.2" - checksum: 5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f languageName: node linkType: hard "yaml@npm:^2.2.2": version: 2.3.1 resolution: "yaml@npm:2.3.1" - checksum: ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3 + checksum: 10c0/ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3 languageName: node linkType: hard "yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" - checksum: f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 languageName: node linkType: hard @@ -34100,14 +34100,14 @@ __metadata: dependencies: camelcase: "npm:^5.0.0" decamelize: "npm:^1.2.0" - checksum: 25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 + checksum: 10c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 languageName: node linkType: hard "yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3, yargs-parser@npm:^20.2.9": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" - checksum: 0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 + checksum: 10c0/0685a8e58bbfb57fab6aefe03c6da904a59769bd803a722bb098bd5b0f29d274a1357762c7258fb487512811b8063fb5d2824a3415a0a4540598335b3b086c72 languageName: node linkType: hard @@ -34122,7 +34122,7 @@ __metadata: string-width: "npm:^4.2.3" y18n: "npm:^5.0.5" yargs-parser: "npm:^21.1.1" - checksum: ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 languageName: node linkType: hard @@ -34141,7 +34141,7 @@ __metadata: which-module: "npm:^2.0.0" y18n: "npm:^4.0.0" yargs-parser: "npm:^18.1.2" - checksum: f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d + checksum: 10c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d languageName: node linkType: hard @@ -34156,7 +34156,7 @@ __metadata: string-width: "npm:^4.2.0" y18n: "npm:^5.0.5" yargs-parser: "npm:^20.2.2" - checksum: b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 + checksum: 10c0/b1dbfefa679848442454b60053a6c95d62f2d2e21dd28def92b647587f415969173c6e99a0f3bab4f1b67ee8283bf735ebe3544013f09491186ba9e8a9a2b651 languageName: node linkType: hard @@ -34166,28 +34166,28 @@ __metadata: dependencies: buffer-crc32: "npm:~0.2.3" fd-slicer: "npm:~1.1.0" - checksum: f265002af7541b9ec3589a27f5fb8f11cf348b53cc15e2751272e3c062cd73f3e715bc72d43257de71bbaecae446c3f1b14af7559e8ab0261625375541816422 + checksum: 10c0/f265002af7541b9ec3589a27f5fb8f11cf348b53cc15e2751272e3c062cd73f3e715bc72d43257de71bbaecae446c3f1b14af7559e8ab0261625375541816422 languageName: node linkType: hard "yn@npm:3.1.1": version: 3.1.1 resolution: "yn@npm:3.1.1" - checksum: 0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 languageName: node linkType: hard "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0" - checksum: dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f languageName: node linkType: hard "yocto-queue@npm:^1.0.0": version: 1.0.0 resolution: "yocto-queue@npm:1.0.0" - checksum: 856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + checksum: 10c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 languageName: node linkType: hard @@ -34196,7 +34196,7 @@ __metadata: resolution: "yoga-layout-prebuilt@npm:1.10.0" dependencies: "@types/yoga-layout": "npm:1.9.2" - checksum: e83b6b7078faf4d0472461b53e92bf9cae655de3d896aee5f79b5ba5a960e507bbf8e671b261db13137bf18711686969f19fd1d9c4669beb1d70754b83c5879d + checksum: 10c0/e83b6b7078faf4d0472461b53e92bf9cae655de3d896aee5f79b5ba5a960e507bbf8e671b261db13137bf18711686969f19fd1d9c4669beb1d70754b83c5879d languageName: node linkType: hard @@ -34205,14 +34205,14 @@ __metadata: resolution: "zen-observable-ts@npm:1.2.5" dependencies: zen-observable: "npm:0.8.15" - checksum: 21d586f3d0543e1d6f05d9333a137b407dbf337907c1ee1c2fa7a7da044f7e1262e4baf4ef8902f230c6f5acb561047659eb7df73df33307233cc451efe46db1 + checksum: 10c0/21d586f3d0543e1d6f05d9333a137b407dbf337907c1ee1c2fa7a7da044f7e1262e4baf4ef8902f230c6f5acb561047659eb7df73df33307233cc451efe46db1 languageName: node linkType: hard "zen-observable@npm:0.8.15": version: 0.8.15 resolution: "zen-observable@npm:0.8.15" - checksum: 71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8 + checksum: 10c0/71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8 languageName: node linkType: hard @@ -34223,7 +34223,7 @@ __metadata: archiver-utils: "npm:^4.0.1" compress-commons: "npm:^5.0.1" readable-stream: "npm:^3.6.0" - checksum: 18b4ecf28824bd165709de5056d53cf611f07e0b7578508fa94c497f17164722dc19a0739ea8b2c1a296de7d3f70f7ad558e7a3a4929240fb2730afc5fd60679 + checksum: 10c0/18b4ecf28824bd165709de5056d53cf611f07e0b7578508fa94c497f17164722dc19a0739ea8b2c1a296de7d3f70f7ad558e7a3a4929240fb2730afc5fd60679 languageName: node linkType: hard @@ -34248,6 +34248,6 @@ __metadata: yaml: "npm:^2.2.2" bin: zx: build/cli.js - checksum: 9a90886e4e923263aa363c1b5193d5ef0db23b7debe69d4f267b594c33748b234234ceb4fa984c38487255c3801e748237bb857859f066ba90503935a61bdba7 + checksum: 10c0/9a90886e4e923263aa363c1b5193d5ef0db23b7debe69d4f267b594c33748b234234ceb4fa984c38487255c3801e748237bb857859f066ba90503935a61bdba7 languageName: node linkType: hard From c88b79ae9b1d0ed8c7283dd7f3da9cbf1c45ee7d Mon Sep 17 00:00:00 2001 From: Jason Curtis Date: Wed, 14 Feb 2024 10:54:01 -0800 Subject: [PATCH 095/119] Typos in realtime.md (#10010) Fixing 2 minor typos --- docs/docs/realtime.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/realtime.md b/docs/docs/realtime.md index f56b2880c48a..a1259ad769c1 100644 --- a/docs/docs/realtime.md +++ b/docs/docs/realtime.md @@ -33,7 +33,7 @@ There are times where subscriptions are well-suited for a realtime problem — a ### Defer and Stream -[Stream and defer](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending data the most important data as soon as it's ready. +[Stream and defer](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending the most important data as soon as it's ready. As applications grow, the GraphQL operation documents can get bigger. The server will only send the response back once all the data requested in the query is ready. However, not all requested data is of equal importance, and the client may not need all of the data at once. @@ -699,7 +699,7 @@ context.pubSub.publish('newStory', id, story) Mashup some of your favorite movies to create something new and Netflix-worthy to watch. -Powered by OpenAI, this movie tagline and treatment updates on each stream content delta via a Live Query bui invalidating the `MovieMashup key. +Powered by OpenAI, this movie tagline and treatment updates on each stream content delta via a Live Query by invalidating the `MovieMashup key. ```ts context.liveQueryStore.invalidate(`MovieMashup:${id}`) From 6d43d1318c339f6cc526999a7b7bf936ed0b1e80 Mon Sep 17 00:00:00 2001 From: Jason Curtis Date: Wed, 14 Feb 2024 11:05:11 -0800 Subject: [PATCH 096/119] Spelling fix in what-is-redwood.md (#10011) --- docs/docs/tutorial/chapter0/what-is-redwood.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/tutorial/chapter0/what-is-redwood.md b/docs/docs/tutorial/chapter0/what-is-redwood.md index 9b29b208c03e..cae5b7f0565f 100644 --- a/docs/docs/tutorial/chapter0/what-is-redwood.md +++ b/docs/docs/tutorial/chapter0/what-is-redwood.md @@ -275,7 +275,7 @@ There's even an interactive console that lets you, for example, execute Prisma q ## Jest -Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicty. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). +Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicity. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). Redwood includes several Jest helpers and matchers, allowing you to mock out GraphQL requests, database data, logged in users, and more. From 9d88acc89537d61bc4d61500ab4e4e106349f4bc Mon Sep 17 00:00:00 2001 From: Rob Cameron Date: Wed, 14 Feb 2024 15:10:42 -0800 Subject: [PATCH 097/119] 7.0 RC: Remove hardcoded check for `session.id` (#10013) Fixes bug when User table had a primary key other than `id`. Shout out to @will-ks for finding this! ### Impact For apps which had a primary key other than `id`, all users will be logged out on their next request after this is deployed. Not sure if we consider that breaking? But it is 7.0 so anything goes! Closes #10005 --- .../dbAuth/api/src/DbAuthHandler.ts | 18 ++++---- .../src/__tests__/DbAuthHandler.fetch.test.js | 42 +++++++++++++++++++ .../api/src/__tests__/DbAuthHandler.test.js | 40 ++++++++++++++++++ 3 files changed, 91 insertions(+), 9 deletions(-) diff --git a/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts b/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts index 772f49e60ab0..bbdb52b55c2d 100644 --- a/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts +++ b/packages/auth-providers/dbAuth/api/src/DbAuthHandler.ts @@ -295,15 +295,12 @@ type Params = AuthenticationResponseJSON & transports?: string // used by webAuthN for something } -interface DbAuthSession { - id: TIdType -} +type DbAuthSession = Record const DEFAULT_ALLOWED_USER_FIELDS = ['id', 'email'] export class DbAuthHandler< TUser extends UserType, - TIdType = any, TUserAttributes = Record > { event: Request | APIGatewayProxyEvent @@ -316,7 +313,7 @@ export class DbAuthHandler< dbCredentialAccessor: any allowedUserFields: string[] hasInvalidSession: boolean - session: DbAuthSession | undefined + session: DbAuthSession | undefined sessionCsrfToken: string | undefined corsContext: CorsContext | undefined sessionExpiresDate: string @@ -1208,8 +1205,8 @@ export class DbAuthHandler< // returns the set-cookie header to be returned in the request (effectively // creates the session) - _createSessionHeader( - data: DbAuthSession, + _createSessionHeader( + data: DbAuthSession, csrfToken: string ): SetCookieHeader { const session = JSON.stringify(data) + ';' + csrfToken @@ -1384,7 +1381,7 @@ export class DbAuthHandler< // gets the user from the database and returns only its ID async _getCurrentUser() { - if (!this.session?.id) { + if (!this.session?.[this.options.authFields.id]) { throw new DbAuthError.NotLoggedInError() } @@ -1401,7 +1398,10 @@ export class DbAuthHandler< try { user = await this.dbAccessor.findUnique({ - where: { [this.options.authFields.id]: this.session?.id }, + where: { + [this.options.authFields.id]: + this.session?.[this.options.authFields.id], + }, select, }) } catch (e: any) { diff --git a/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.fetch.test.js b/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.fetch.test.js index 7f78bd11097f..82116c9f2eb6 100644 --- a/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.fetch.test.js +++ b/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.fetch.test.js @@ -2944,6 +2944,48 @@ describe('dbAuth', () => { expect(user.id).toEqual(dbUser.id) }) + + it('returns the user when id field is other than `id`', async () => { + const randomId = Math.floor(Math.random() * 1000000) + const dbUser = await createDbUser({ userId: randomId }) + const options = { + authFields: { + id: 'userId', + }, + authModelAccessor: 'user', + db: db, + forgotPassword: { + handler: () => {}, + }, + login: { + handler: () => {}, + expires: 1, + }, + resetPassword: { + handler: () => {}, + }, + signup: { + handler: () => {}, + }, + } + const headers = { + cookie: encryptToCookie( + JSON.stringify({ userId: dbUser.userId }) + ';' + 'token' + ), + } + + const req = new Request('http://localhost:8910/_rw_mw', { + method: 'POST', + headers, + }) + + const dbAuth = new DbAuthHandler(req, context, options) + await dbAuth.init() + + const user = await dbAuth._getCurrentUser() + + expect(user.userId).toEqual(dbUser.userId) + }) }) describe('_createUser()', () => { diff --git a/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.test.js b/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.test.js index 72ba44f25e9e..4eb2c75dd6da 100644 --- a/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.test.js +++ b/packages/auth-providers/dbAuth/api/src/__tests__/DbAuthHandler.test.js @@ -2651,6 +2651,46 @@ describe('dbAuth', () => { expect(user.id).toEqual(dbUser.id) }) + + it('returns the user when id field is other than `id`', async () => { + const randomId = Math.floor(Math.random() * 1000000) + const dbUser = await createDbUser({ userId: randomId }) + + const event = { + headers: { + cookie: encryptToCookie( + JSON.stringify({ userId: dbUser.userId }) + ';' + 'token' + ), + }, + } + const context = { foo: 'bar' } + const options = { + authFields: { + id: 'userId', + }, + authModelAccessor: 'user', + db: db, + forgotPassword: { + handler: () => {}, + }, + login: { + handler: () => {}, + expires: 1, + }, + resetPassword: { + handler: () => {}, + }, + signup: { + handler: () => {}, + }, + } + const dbAuth = new DbAuthHandler(event, context, options) + await dbAuth.init() + + const user = await dbAuth._getCurrentUser() + + expect(user.userId).toEqual(dbUser.userId) + }) }) describe('_createUser()', () => { From 74b5a3bb82f59c2a0dcd32c6db7c770c66991ae3 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 15 Feb 2024 16:30:27 -0800 Subject: [PATCH 098/119] fix(deps): remove react types packages from `@redwoodjs/testing` dependencies (#10020) Have been thinking about this one on and off for a while now and I don't think any of our packages should have the react types packages as dependencies if the web workspace in apps is going to have them. More generally, if a Redwood app is going to explicitly depend on a package that one of our framework packages also depends on, one of them should go or use the `'*'` specifier. I ran into an issue related to this a day or two ago with the deploy target CI providers. It was easily fixed if you knew what to look for. Unpinning them was a step forward cause yarn can sometimes make it work if you run dedupe or at worst edit or regenerate the lock file. But most people don't know what to look for and we shouldn't expect them to. The reason we didn't do this before (see the original comment in https://github.com/redwoodjs/redwood/pull/9727) was that the mailer depends on the react types packages but doesn't explicitly list them as dependencies. Well, it can still get the react types packages implicitly from node_modules anyway cause the web workspace puts them there. --- packages/testing/package.json | 2 -- yarn.lock | 2 -- 2 files changed, 4 deletions(-) diff --git a/packages/testing/package.json b/packages/testing/package.json index 12f8bb0c4ed7..ef123e11a124 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -43,8 +43,6 @@ "@types/babel-core": "6.25.10", "@types/jest": "29.5.8", "@types/node": "20.11.10", - "@types/react": "^18.2.55", - "@types/react-dom": "^18.2.19", "@types/webpack": "5.28.5", "@types/webpack-env": "1.18.4", "babel-jest": "^29.7.0", diff --git a/yarn.lock b/yarn.lock index b404cbb67bf5..8de99613f0f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8680,8 +8680,6 @@ __metadata: "@types/babel-core": "npm:6.25.10" "@types/jest": "npm:29.5.8" "@types/node": "npm:20.11.10" - "@types/react": "npm:^18.2.55" - "@types/react-dom": "npm:^18.2.19" "@types/webpack": "npm:5.28.5" "@types/webpack-env": "npm:1.18.4" babel-jest: "npm:^29.7.0" From bbcfd11ab377848f588c44b5e8461324aa1c5222 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Thu, 15 Feb 2024 17:14:34 -0800 Subject: [PATCH 099/119] fix(server): fix env var loading in `createServer` (#10021) Running the server file via node means `RWJS_CWD` will never be set so we can't rely on it to load env files. I seemed to have gotten this right for the web server in https://github.com/redwoodjs/redwood/pull/9948 but missed it here in the api server. --- packages/api-server/src/__tests__/createServer.test.ts | 10 ++++++++-- packages/api-server/src/createServer.ts | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index 4b13650af801..463acbc48068 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -15,7 +15,6 @@ import type { MockInstance } from 'vitest' import { getConfig } from '@redwoodjs/project-config' -import { createServer } from '../createServer' import { resolveOptions, DEFAULT_CREATE_SERVER_OPTIONS, @@ -24,9 +23,16 @@ import { // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined -beforeAll(() => { +// We have to asynchronously import the module because it relies on RWJS_CWD being set. +// TODO(jtoar): The lint rule below is complaining about the import, +// but I'm not sure what else to do at the moment. Happy to take suggestions! +// eslint-disable-next-line @typescript-eslint/consistent-type-imports +let createServer: typeof import('../createServer.js').createServer + +beforeAll(async () => { original_RWJS_CWD = process.env.RWJS_CWD process.env.RWJS_CWD = path.join(__dirname, './fixtures/redwood-app') + createServer = (await import('../createServer.js')).createServer }) afterAll(() => { diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 5eabb4322a88..286aed7d6d81 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -29,7 +29,7 @@ interface Server extends FastifyInstance { // ``` // // We do it here and not in the function below so that users can access env vars before calling `createServer` -if (process.env.RWJS_CWD && !process.env.REDWOOD_ENV_FILES_LOADED) { +if (!process.env.REDWOOD_ENV_FILES_LOADED) { config({ path: path.join(getPaths().base, '.env'), defaults: path.join(getPaths().base, '.env.defaults'), From f3724a53fc0db276d1a11865d3266c98308bb290 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Fri, 16 Feb 2024 19:50:02 +0100 Subject: [PATCH 100/119] fix(types): Fix TS type in createServer.test.ts (#10023) Because it's only a type import it's safe to do this. All type imports are removed when building/running. They're just there for TS's sake. --- packages/api-server/src/__tests__/createServer.test.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index 463acbc48068..b70b6b6921a7 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -15,6 +15,7 @@ import type { MockInstance } from 'vitest' import { getConfig } from '@redwoodjs/project-config' +import type { createServer as tCreateServer } from '../createServer.js' import { resolveOptions, DEFAULT_CREATE_SERVER_OPTIONS, @@ -23,11 +24,7 @@ import { // Set up RWJS_CWD. let original_RWJS_CWD: string | undefined -// We have to asynchronously import the module because it relies on RWJS_CWD being set. -// TODO(jtoar): The lint rule below is complaining about the import, -// but I'm not sure what else to do at the moment. Happy to take suggestions! -// eslint-disable-next-line @typescript-eslint/consistent-type-imports -let createServer: typeof import('../createServer.js').createServer +let createServer: typeof tCreateServer beforeAll(async () => { original_RWJS_CWD = process.env.RWJS_CWD From ea6c7c7d3412aa6ea7ee6f4f3c7631b484f0abd7 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 16 Feb 2024 11:52:30 -0800 Subject: [PATCH 101/119] feat(server): add docs on the server file (#10019) This PR adds docs for the server file. I opted to add them to the Docker doc since that's where the idea originated from and most serverful deploys that aren't serverless are Docker-based (the only one that I can think of that isn't is baremetal). I also updated the app configuration and realtime docs. It seems like the realtime setup command should update the graphql function, but that was out of scope for this PR. --- docs/docs/app-configuration-redwood-toml.md | 280 ++++---------------- docs/docs/docker.md | 214 ++++++++++++++- docs/docs/realtime.md | 125 ++++----- docs/netlify.toml | 19 +- 4 files changed, 324 insertions(+), 314 deletions(-) diff --git a/docs/docs/app-configuration-redwood-toml.md b/docs/docs/app-configuration-redwood-toml.md index fee88a7b9cdc..4439e88ea3db 100644 --- a/docs/docs/app-configuration-redwood-toml.md +++ b/docs/docs/app-configuration-redwood-toml.md @@ -5,7 +5,7 @@ description: Configure your app with redwood.toml # App Configuration: redwood.toml -You can configure your Redwood app in `redwood.toml`. By default, `redwood.toml` lists the following configuration options: +One of the premier places you can configure your Redwood app is `redwood.toml`. By default, `redwood.toml` lists the following configuration options: ```toml title="redwood.toml" [web] @@ -23,36 +23,30 @@ You can configure your Redwood app in `redwood.toml`. By default, `redwood.toml` These are listed by default because they're the ones that you're most likely to configure, but there are plenty more available. -The options and their structure are based on Redwood's notion of sides and targets. Right now, Redwood has two sides, api and web, that target Node.js Lambdas and browsers respectively. In the future, we'll add support for more sides and targets, and as we do, you'll see them reflected in `redwood.toml`. - -> For the difference between a side and a target, see [Redwood File Structure](tutorial/chapter1/file-structure.md). - You can think of `redwood.toml` as a frontend for configuring Redwood's build tools. -For certain options, instead of having to deal with build tools configuration directly, there's quick access via `redwood.toml`. +For certain options, instead of having to configure build tools directly, there's quick access via `redwood.toml`. ## [web] | Key | Description | Default | | :---------------------------- | :--------------------------------------------------------- | :---------------------- | -| `apiUrl` | The path or URL to your api-server | `"/.redwood/functions"` | -| `apiGraphQLUrl` | The path or URL to your GraphQL function | `"${apiUrl}/graphql"` | -| `apiDbAuthUrl` | The path or URL to your dbAuth function | `"${apiUrl}/auth"` | -| `a11y` | Enable storybook `addon-a11y` and `eslint-plugin-jsx-a11y` | `true` | -| `host` | Hostname to listen on | `"localhost"` | -| `includeEnvironmentVariables` | Environment variables to include | `[]` | -| `path` | Path to the web side | `"./web"` | -| `port` | Port to listen on | `8910` | +| `title` | Title of your Redwood app | `'Redwood App'` | +| `port` | Port for the web server to listen at | `8910` | +| `apiUrl` | URL to your api server. This can be a relative URL in which case it acts like a proxy, or a fully-qualified URL | `'/.redwood/functions'` | +| `includeEnvironmentVariables` | Environment variables made available to the web side during dev and build | `[]` | +| `host` | Hostname for the web server to listen at | Defaults to `'0.0.0.0'` in production and `'::'` in development | +| `apiGraphQLUrl` | URL to your GraphQL function | `'${apiUrl}/graphql'` | +| `apiDbAuthUrl` | URL to your dbAuth function | `'${apiUrl}/auth'` | | `sourceMap` | Enable source maps for production builds | `false` | -| `target` | Target for the web side | `"browser"` | -| `title` | Title of your Redwood app | `"Redwood App"` | +| `a11y` | Enable storybook `addon-a11y` and `eslint-plugin-jsx-a11y` | `true` | ### Customizing the GraphQL Endpoint -By default, Redwood derives the GraphQL endpoint from `apiUrl` such that `./redwood/functions/graphql` ends up being the default graphql endpoint. -But sometimes you want to host your api side somewhere else, or even on a different domain. +By default, Redwood derives the GraphQL endpoint from `apiUrl` such that it's `${apiUrl}/graphql`, (with the default `apiUrl`, `./redwood/functions/graphql`). +But sometimes you want to host your api side somewhere else. There's two ways you can do this: -1. Change `apiUrl` to a different domain: +1. Change `apiUrl`: ```toml title="redwood.toml" [web] @@ -61,32 +55,36 @@ There's two ways you can do this: Now the GraphQL endpoint is at `https://api.coolredwoodapp.com/graphql`. -2. Only change the GraphQL endpoint: +2. Change `apiGraphQLUrl`: ```diff title="redwood.toml" -[web] - apiUrl = "/.redwood/functions" -+ apiGraphqlEndpoint = "https://coolrwapp.mycdn.com" + [web] + apiUrl = "/.redwood/functions" ++ apiGraphQLUrl = "https://api.coolredwoodapp.com/graphql" ``` ### Customizing the dbAuth Endpoint -If you're using dbAuth, you may decide to point its function at a different host. -To do this without affecting your GraphQL endpoint, you can add `apiDbAuthUrl` to your `redwood.toml`: +Similarly, if you're using dbAuth, you may decide to host it somewhere else. +To do this without affecting your other endpoints, you can add `apiDbAuthUrl` to your `redwood.toml`: ```diff title="redwood.toml" -[web] - apiUrl = "/.redwood/functions" -+ apiDbAuthUrl = "https://api.mycoolapp.com/auth" + [web] + apiUrl = "/.redwood/functions" ++ apiDbAuthUrl = "https://api.coolredwoodapp.com/auth" ``` -> If you point your web side to a different domain, please make sure you have [CORS headers](cors.md) configured. -> Otherwise browser security features may block requests from the client. +:::tip + +If you host your web and api sides at different domains and don't use a proxy, make sure you have [CORS](./cors.md) configured. +Otherwise browser security features may block client requests. + +::: ### includeEnvironmentVariables -`includeEnvironmentVariables` is the set of environment variables to include in the web side. -Use it to include environment variables you've defined in `.env`: +`includeEnvironmentVariables` is the set of environment variables that should be available to your web side during dev and build. +Use it to include env vars like public keys for third-party services you've defined in your `.env` file: ```toml title="redwood.toml" [web] @@ -99,203 +97,20 @@ PUBLIC_KEY=... Instead of including them in `includeEnvironmentVariables`, you can also prefix them with `REDWOOD_ENV_` (see [Environment Variables](environment-variables.md#web)). -## [api] - -| Key | Description | Default | -| :------------- | :---------------------------------- | :------------------------- | -| `debugPort` | Port to expose for the debugger | `18911` | -| `host` | Hostname to listen on | `"localhost"` | -| `path` | Path to the api side | `"./api"` | -| `port` | Port to listen on | `8911` | -| `serverConfig` | Path to the `server.config.js` file | `"./api/server.config.js"` | -| `target` | Target for the api side | `"node"` | - -### Configure Fastify - -You can configure the Fastify server instance in `api/server.config.js`. -For all the configuration options, see [Fastify's docs](https://www.fastify.io/docs/latest/Reference/Server/#factory). +:::caution `includeEnvironmentVariables` isn't for secrets -:::info Where does this configuration apply? - -This configuration does **not** apply in a serverless deploy. -Typically when you deploy to a serverless provider like Netlify or Vercel, your project's web side is served from a CDN, and functions are invoked directly. -But this configuration does apply when running: - -| Command | api | web | -| :-------------- | :--- | :--- | -| `yarn rw dev` | ✅ | ❌ | -| `yarn rw serve` | ✅ | ✅ | +Don't make secrets available to your web side. Everything in `includeEnvironmentVariables` is included in the bundle. ::: -Using redwood.toml's [env var interpolation](#using-environment-variables-in-redwoodtoml), you can change the server config used based on your deployment environment: - -```toml title="redwood.toml" -[api] - serverConfig = "./api/${DEPLOY_ENVIRONMENT}-server.config.js" -``` - -### Register Custom Fastify Plugins - -You can register Fastify plugins for the api and web sides using the `configureFastify` function. -This function has access to the Fastify server instance and options, such as the side that's being configured. - -:::warning Reminder - -This configuration does **not** apply in a serverless deploy. - -::: - -```js -/** @type {import('@redwoodjs/api-server/dist/fastify').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - } - - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - } - - return fastify -} -``` - -#### How to configure a Fastify plugin for the api side - -Let's say that you want to compress payloads and rate limit your API. -You can leverage two Fastify ecosystem plugins, [@fastify/compress](https://github.com/fastify/fastify-compress) and [@fastify/rate-limit](https://github.com/fastify/fastify-rate-limit) respectively. - -Here, we configure compression so that it handles all requests, compresses responses only if they're larger than 1K, and to prefer the `deflate` method over `gzip`. -Using @fastify/rate-limit, we allow an IP address to only make 100 requests in a five minute window. - -:::important Plugins need to be installed - -You'll need to install plugin packages in your project's `api` workspace: - -``` -yarn workspace api add @fastify/rate-limit @fastify/compress -``` - -::: - -```js -/** @type {import('@redwoodjs/api-server/dist/fastify').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - - await fastify.register(import('@fastify/compress'), { - global: true, - threshold: 1_024, - encodings: ['deflate', 'gzip'], - }) - - await fastify.register(import('@fastify/rate-limit'), { - max: 100, - timeWindow: '5 minutes', - }) - } - - return fastify -} -``` - -#### How to Configure a Fastify plugin for the web side - -If you're running the web side using `yarn rw serve`, you can configure plugins like [@fastify/etag](https://github.com/fastify/fastify-etag) to register HTTP Etags. - -:::important Plugins need to be installed - -You'll need to install plugin packages in your project's `api` workspace. -This may seem counter-intuitive, since you're configuring the `web` side, but the `api-server` gets configured in your project's `api` side and that's what's serving web assets. - -::: - -```js -/** @type {import('@redwoodjs/api-server/dist/fastify').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'web') { - fastify.log.trace({ custom: { options } }, 'Configuring web side') - - fastify.register(import('@fastify/etag')) - } - - return fastify -} -``` - -#### Troubleshooting Custom Fastify Configuration - -There are a few important things to consider when configuring Fastify. - -If running via `yarn rw serve`, only register a plugin once either in `api` or in `web`. Registering the same plugin in both sides will error saying that it has already been registered. - -Running via `yarn rw serve` uses a single Fastify instance to serve both api functions and web assets, so registering the plugin in a single side applies it to that instance. - -### How to Configure Fastify to Accept File Uploads - -If you try to POST file content to the api server such as images or PDFs, you may see the following error from Fastify: - -```json -{ - "statusCode": 400, - "code": "FST_ERR_CTP_INVALID_CONTENT_LENGTH", - "error": "Bad Request", - "message": "Request body size did not match Content-Length" -} -``` - -This's because Fastify [only supports `application/json` and `text/plain` content types natively](https://www.fastify.io/docs/latest/Reference/ContentTypeParser/). -While Redwood configures the api server to also accept `application/x-www-form-urlencoded` and `multipart/form-data`, if you want to support other content or MIME types (likes images or PDFs), you'll need to configure them yourself. - -You can use Fastify's `addContentTypeParser` function to allow uploads of the content types your application needs. -For example, to support image file uploads you'd tell Fastify to allow `/^image\/.*/` content types: - -```js -/** @type {import('@redwoodjs/api-server/dist/fastify').FastifySideConfigFn} */ -const configureFastify = async (fastify, options) => { - if (options.side === 'api') { - fastify.log.trace({ custom: { options } }, 'Configuring api side') - - fastify.addContentTypeParser(/^image\/.*/, (req, payload, done) => { - payload.on('end', () => { - done() - }) - }) - } - - return fastify -} -``` - -:::note - -The above regular expression (`/^image\/.*/`) allows all image content or MIME types because [they start with "image"](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types). - -::: - -Now, when you POST those content types to a function served by the api server, you can access the file content on `event.body`: - -```bash -curl --location --request POST 'http://localhost:8911/upload' \ - --form 'image=@"/path/to/my/image/web/public/favicon.png"' \ - --header 'Content-Type: image/png' -``` - -```terminal -api | 17:38:49 🌲 request completed 0ms -api | 17:38:49 🐛 body -api | 🗒 Custom -api | "--------------------------e66d9a27b7c2b271\r\nContent-Disposition: attachment; name=\"image\"; filename=\"favicon.png\"\r\nContent-Type: image/png\r\n\r\n�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000 \u0000\u0000\u0000`�\r\n--------------------------e66d9a27b7c2b271--\r\n" -``` - -:::warning File uploads only work in a serverful deploy - -Serverless functions on Netlify or Vercel do not use this Fastify configuration. -They also have memory and execution time limits that don't lend themselves to handling file uploads of any practical size. +## [api] -::: +| Key | Description | Default | +| :------------- | :---------------------------------- | :------------------------- | +| `port` | Port for the api server to listen at | `8911` | +| `host` | Hostname for the api server to listen at | Defaults to `'0.0.0.0'` in production and `'::'` in development | +| `debugPort` | Port for the debugger to listen at | `18911` | +| `serverConfig` | [Deprecated; use the [server file](./docker.md#using-the-server-file) instead] Path to the `server.config.js` file | `'./api/server.config.js'` | ## [browser] @@ -304,11 +119,11 @@ They also have memory and execution time limits that don't lend themselves to ha open = true ``` -Setting `open` to `true` opens your browser to `${host}:${port}` (by default, `localhost:8910`) after the dev server starts. -If you want your browser to stop opening when you `yarn rw dev`, set this to false. +Setting `open` to `true` opens your browser to `http://${web.host}:${web.port}` (by default, `http://localhost:8910`) after the dev server starts. +If you want your browser to stop opening when you run `yarn rw dev`, set this to `false`. (Or just remove it entirely.) -There's actually a lot more you can do here. For more, see Vite's docs on [preview.open](https://vitejs.dev/config/preview-options.html#preview-open). +There's actually a lot more you can do here. For more, see Vite's docs on [`preview.open`](https://vitejs.dev/config/preview-options.html#preview-open). ## [generate] @@ -318,9 +133,9 @@ There's actually a lot more you can do here. For more, see Vite's docs on [previ stories = true ``` -Many of Redwood's generators create Jest test or Storybook files. +Many of Redwood's generators create Jest tests or Storybook stories. Understandably, this can be lot of files, and sometimes you don't want all of them, either because you don't plan on using Jest or Storybook, or are just getting started and don't want the overhead. -These toml keys allows you to toggle the generation of test or story files. +These options allows you to disable the generation of test and story files. ## [cli] @@ -329,10 +144,10 @@ These toml keys allows you to toggle the generation of test or story files. versionUpdates = ["latest"] ``` -There's new versions of the framework all the time—a major every couple months, a minor every week or two, and patches when appropriate. +There are new versions of the framework all the time—a major every couple months, a minor every week or two, and patches when appropriate. And if you're on an experimental release line, like canary, there's new versions every day, multiple times. -If you'd like to get notified (at most, once a day) when there's a new version, set `versionUpdates` to include the version tags you're interested in within `redwood.toml`'s `notifications` table. +If you'd like to get notified (at most, once a day) when there's a new version, set `versionUpdates` to include the version tags you're interested in. ## Using Environment Variables in `redwood.toml` @@ -374,3 +189,6 @@ To run a Redwood app in a container or VM, you'll want to set both the web and a [api] host = '0.0.0.0' ``` + +You can also configure these values via `REDWOOD_WEB_HOST` and `REDWOOD_API_HOST`. +And if you set `NODE_ENV` to production, these will be the defaults anyway. diff --git a/docs/docs/docker.md b/docs/docs/docker.md index 664d0d72087b..33c2e65bd711 100644 --- a/docs/docs/docker.md +++ b/docs/docs/docker.md @@ -261,7 +261,7 @@ We need to grab it too. ```Dockerfile ENV NODE_ENV=production -CMD [ "node_modules/.bin/rw-server", "api", "--load-env-files" ] +CMD [ "node_modules/.bin/rw-server", "api" ] ``` Lastly, the default command is to start the api server using the bin from the `@redwoodjs/api-server` package. @@ -466,3 +466,215 @@ yarn why @supabase/supabase-js ``` In this case, it looks like it's ultimately because of our auth provider, `@supabase/supabase-js`. + +## Using the Server File + +Redwood v7 introduced a new entry point to Redwood's api server: the server file at `api/src/server.ts`. +The server file was made with Docker in mind. It allows you to + +1. have control over how the api server starts, +2. customize the server as much as you want, and +3. minimize the number of dependencies needed to start the api server process (all you need is Node.js!) + +Get started by running the setup command: + +``` +yarn rw setup server-file +``` + +This should give you a new file at `api/src/server.ts`: + +```typescript title="api/src/server.ts" +import { createServer } from '@redwoodjs/api-server' + +import { logger } from 'src/lib/logger' + +async function main() { + const server = await createServer({ + logger, + }) + + await server.start() +} + +main() +``` + +Without the server file, to start the api side, you'd use binaries provided by `@redwoodjs/api-server` such as `yarn rw-server api` (you may also see this as `./node_modules/.bin/rw-server api`). + +With the server file, there's no indirection. Just use `node`: + +``` +yarn node api/dist/server.js +``` + +:::info You have to build first + +You can't run the server file directly with Node.js; it has to be built first: + +``` +yarn rw build api +``` + +The api serve stage in the Dockerfile pulls from the api build stage, so things are already in the right order there. Similarly, for `yarn rw dev`, the dev server will build and reload the server file for you. + +::: + +That means you can swap the `CMD` instruction in the api server stage: + +```diff + ENV NODE_ENV=production + +- CMD [ "node_modules/.bin/rw-server", "api" ] ++ CMD [ "yarn", "node", "api/dist/server.js" ] +``` + +### Configuring the server + +There's two ways you can configure the server. + +First, you can configure how the underlying Fastify server is instantiated via the`fastifyServerOptions` passed to the `createServer` function: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, + // highlight-start + fastifyServerOptions: { + // ... + } + // highlight-end +}) +``` + +For the complete list of options, see [Fastify's documentation](https://fastify.dev/docs/latest/Reference/Server/#factory). + +Second, you can register Fastify plugins on the server instance: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, +}) + +// highlight-next-line +server.register(myFastifyPlugin) +``` + +#### Example: Compressing Payloads and Rate Limiting + +Let's say that we want to compress payloads and add rate limiting. +We want to compress payloads only if they're larger than 1KB, preferring deflate to gzip, +and we want to limit IP addresses to 100 requests in a five minute window. +We can leverage two Fastify ecosystem plugins, [@fastify/compress](https://github.com/fastify/fastify-compress) and [@fastify/rate-limit](https://github.com/fastify/fastify-rate-limit) respectively. + +First, you'll need to install these packages: + +``` +yarn workspace api add @fastify/compress @fastify/rate-limit +``` + +Then register them with the appropriate config: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, +}) + +await server.register(import('@fastify/compress'), { + global: true, + threshold: 1024, + encodings: ['deflate', 'gzip'], +}) + +await server.register(import('@fastify/rate-limit'), { + max: 100, + timeWindow: '5 minutes', +}) +``` + +#### Example: File Uploads + +If you try to POST file content to the api server such as images or PDFs, you may see the following error from Fastify: + +```json +{ + "statusCode": 400, + "code": "FST_ERR_CTP_INVALID_CONTENT_LENGTH", + "error": "Bad Request", + "message": "Request body size did not match Content-Length" +} +``` + +This's because Fastify [only supports `application/json` and `text/plain` content types natively](https://www.fastify.io/docs/latest/Reference/ContentTypeParser/). +While Redwood configures the api server to also accept `application/x-www-form-urlencoded` and `multipart/form-data`, if you want to support other content or MIME types (likes images or PDFs), you'll need to configure them here in the server file. + +You can use Fastify's `addContentTypeParser` function to allow uploads of the content types your application needs. +For example, to support image file uploads you'd tell Fastify to allow `/^image\/.*/` content types: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, +}) + +server.addContentTypeParser(/^image\/.*/, (req, payload, done) => { + payload.on('end', () => { + done() + }) +}) +``` + +The regular expression (`/^image\/.*/`) above allows all image content or MIME types because [they start with "image"](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types). + +Now, when you POST those content types to a function served by the api server, you can access the file content on `event.body`. + +### The `start` method + +Since there's a few different ways to configure the host and port the server listens at, the server instance returned by `createServer` has a special `start` method: + +```ts title="api/src/server.ts" +await server.start() +``` + +`start` is a thin wrapper around [`listen`](https://fastify.dev/docs/latest/Reference/Server/#listen). +It takes the same arguments as `listen`, except for host and port. It computes those in the following way, in order of precedence: + +1. `--host` or `--port` flags: + + ``` + yarn node api/dist/server.js --host 0.0.0.0 --port 8913 + ``` + +2. `REDWOOD_API_HOST` or `REDWOOD_API_PORT` env vars: + + ``` + export REDWOOD_API_HOST='0.0.0.0' + export REDWOOD_API_PORT='8913' + yarn node api/dist/server.js + ``` + +3. `[api].host` and `[api].port` in `redwood.toml`: + + ```toml title="redwood.toml" + [api] + host = '0.0.0.0' + port = 8913 + ``` + +If you'd rather not have `createServer` parsing `process.argv`, you can disable it via `parseArgv`: + +```ts title="api/src/server.ts" +await createServer({ + parseArgv: false, +}) +``` + +And if you'd rather it do none of this, just change `start` to `listen` and specify the host and port inline: + +```ts title="api/src/server.ts" +await server.listen({ + host: '0.0.0.0', + port: 8913, +}) +``` + +If you don't specify a host, `createServer` uses `NODE_ENV` to set it. If `NODE_ENV` is production, it defaults to `'0.0.0.0'` and `'::'` otherwise. +The Dockerfile sets `NODE_ENV` to production so that things work out of the box. diff --git a/docs/docs/realtime.md b/docs/docs/realtime.md index a1259ad769c1..3a247671160e 100644 --- a/docs/docs/realtime.md +++ b/docs/docs/realtime.md @@ -1,20 +1,22 @@ # Realtime -One of the most often asked questions of RedwoodJS before and after the launch of V1 was, “When will RedwoodJS support a realtime solution?” +One of the most often-asked questions of Redwood before and after the launch of V1 was, “When will Redwood support a realtime solution?” The answer is: **now**. ## What is Realtime? -RedwoodJS's initial real-time solution leverages GraphQL and relies on a serverful deployment to maintain a long-running connection between the client and server. +Redwood's initial realtime solution leverages GraphQL and relies on a serverful deployment to maintain a long-running connection between the client and server. -:::note -This means that your cannot currently use RedwoodJS Realtime when deployed to Netlify or Vercel. +:::info + +This means that your cannot use Realtime when deploying to Netlify or Vercel. + +See one of Redwood's many [other Deploy providers](./deploy/introduction.md), and the [Docker setup](./docker.md) for good measure. -**More information about deploying a serverful RedwoodJS application is forthcoming.** ::: -RedwoodJS's GraphQL Server uses [GraphQL over Server-Sent Events](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#distinct-connections-mode) spec "distinct connections mode" for subscriptions. +Redwood's GraphQL server uses the [GraphQL over Server-Sent Events](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#distinct-connections-mode) spec's "distinct connections mode" for subscriptions. Advantages of SSE over WebSockets include: @@ -29,21 +31,21 @@ In GraphQL, there are two options for real-time updates: **live queries** and ** Subscriptions are part of the GraphQL specification, whereas live queries are not. -There are times where subscriptions are well-suited for a realtime problem — and in some cases live queries may be a better fit. Later we’ll explore the pros and cons of each approach and how best to decide that to use and when. +There are times where subscriptions are well-suited for a realtime problem and in some cases live queries may be a better fit. Later we’ll explore the pros and cons of each approach and how best to decide which to use and when. ### Defer and Stream -[Stream and defer](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending the most important data as soon as it's ready. +[Defer and stream](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending the most important data as soon as it's ready. -As applications grow, the GraphQL operation documents can get bigger. The server will only send the response back once all the data requested in the query is ready. However, not all requested data is of equal importance, and the client may not need all of the data at once. +As applications grow, the GraphQL operation documents can get bigger. The server will only send the response back once all the data requested in the query is ready. But not all requested data is of equal importance, and the client may not need all of the data at once. #### Using Defer -The `@defer`` directive allows you to post-pone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. +The `@defer` directive allows you to postpone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. #### Using Stream -The '@stream' directive allows you to stream the individual items of a field of the list type as the items are available. +The `@stream` directive allows you to stream the individual items of a field of the list type as the items are available. :::info The `@stream` directive is currently **not** supported by Apollo GraphQL client. @@ -51,15 +53,15 @@ The `@stream` directive is currently **not** supported by Apollo GraphQL client. ## Features -RedwoodJS Realtime handles the hard parts of a GraphQL Realtime implementation by automatically: +Realtime handles the hard parts of a GraphQL realtime implementation by automatically: - allowing GraphQL Subscription operations to be handled -- merging in your subscriptions types and mapping their handler functions (subscribe, and resolve) to your GraphQL schema letting you keep your subscription logic organized and apart from services (your subscription my use a service to respond to an event) +- merging in your subscriptions types and mapping their handler functions (subscribe and resolve) to your GraphQL schema letting you keep your subscription logic organized and apart from services (your subscription may use a service to respond to an event) - authenticating subscription requests using the same `@requireAuth` directives already protecting other queries and mutations (or you can implement your own validator directive) - adding in the `@live` query directive to your GraphQL schema and setting up the `useLiveQuery` envelop plugin to handle requests, invalidation, and managing the storage mechanism needed -- creating and configuring in-memory and persisted Redis stores uses by the PubSub transport for subscriptions and Live Queries (and letting you switch between them in development and production) +- creating and configuring in-memory and persisted Redis stores used by the PubSub transport for subscriptions and Live Queries (and letting you switch between them in development and production) - placing the pubSub transport and stores into the GraphQL context so you can use them in services, subscription resolvers, or elsewhere (like a webhook, function, or job) to publish an event or invalidate data -- typing you subscription channel event payloads +- typing your subscription channel event payloads - support `@defer` and `@stream` directives It provides a first-class developer experience for real-time updates with GraphQL so you can easily @@ -69,36 +71,32 @@ It provides a first-class developer experience for real-time updates with GraphQ and have the latest data reflected in your app. -Lastly, the Redwood CLI has commands to - -- generate a boilerplate implementation and sample code needed to create your custom - - subscriptions - - live Queries +Lastly, the Redwood CLI has commands to generate a boilerplate implementation and sample code needed to create your custom subscriptions and Live Queries. -Regardless of the implementation chosen, **a stateful server and store are needed** to track changes, invalidation, or who wants to be informed about the change. +Regardless of the implementation chosen, **a stateful server and store are needed** to track changes, invalidation, and who wants to be informed about changes. ### What can I build with Realtime? -- Application Alerts and Messages -- User Notifications -- Live Charts +- Application alerts and messages +- User notifications +- Live charts - Location updates - Auction bid updates - Messaging - OpenAI streaming responses -## RedwoodJS Realtime Setup +## Redwood Realtime Setup -To setup Realtime in an existing RedwoodJS project, run the following commands: +To setup realtime in an existing Redwood project, run the following commands: -* `yarn rw exp setup-server-file` -* `yarn rw exp setup-realtime` +* `yarn rw setup server-file` +* `yarn rw setup realtime` -You will get: +You'll get: -* `api/server.ts` where you configure your Fastify server and GraphQL +* `api/server.ts` where you can configure your Fastify server * `api/lib/realtime.ts` where you consume your subscriptions and configure realtime with an in-memory or Redis store -* Usage examples for live queries, subscriptions, defer, and stream. You'll get sdl, services/subscriptions for each. +* Usage examples for live queries, subscriptions, defer, and stream. You'll get sdl, services/subscriptions for each * The [`auction` live query](#auction-live-query-example) example * The [`countdown timer` subscription](#countdown-timer-example) example * The [`chat` subscription](#chatnew-message-example) examples @@ -106,49 +104,23 @@ You will get: * The [`slow and fast` field defer](#slow-and-fast-field-defer-example) example :::note -There is no UI setup for these examples. You can find information on how to try them out using the GraphiQL playground. +There is no UI set up for these examples. You can find information on how to try them out using the GraphiQL playground. ::: -### GraphQL Configuration - -Now that how have a serverful project, you will configure your GraphQL server in the `api/server.ts` file. +Just add the realtime configuration to your GraphQL handler in `api/src/functions/graphql.ts` and you're good to go: -:::important -That means you **must** manually configure your GraphQL server accordingly -::: - -For example, you will have to setup any authentication and the realtime config: +```diff title="api/src/functions/graphql.ts" ++ import { realtime } from 'src/lib/realtime' -```ts - await fastify.register(redwoodFastifyGraphQLServer, { - // If authenticating, be sure to import and add in - // authDecoder, - // getCurrentUser, - loggerConfig: { - logger: logger, - options: { - query: true, - data: true, - operationName: true, - requestId: true, - }, - }, - graphiQLEndpoint: enableWeb ? '/.redwood/functions/graphql' : '/graphql', - sdls, - services, - directives, - allowIntrospection: true, - allowGraphiQL: true, - // Configure if using RedwoodJS Realtime - realtime, + export const handler = createGraphQLHandler({ + // ... ++ realtime, }) ``` -You can now remove the GraphQL handler function that resides in `api/functions/graphql.ts`. - ### Realtime Configuration -By default, RedwoodJS realtime configures an in-memory store for the Pub Sub client used with subscriptions and live query invalidation. +By default, Redwood's realtime configures an in-memory store for the Pub Sub client used with subscriptions and live query invalidation. Realtime supports in-memory and Redis stores: @@ -159,8 +131,7 @@ To enable defer and streaming, set `enableDeferStream` to true. Configure a Redis store and defer and stream in: -```ts -// api/lib/realtime.ts +```ts title="api/lib/realtime.ts" import { RedwoodRealtimeOptions } from '@redwoodjs/realtime' import subscriptions from 'src/subscriptions/**/*.{js,ts}' @@ -208,7 +179,7 @@ export const realtime: RedwoodRealtimeOptions = { #### PubSub and LiveQueryStore -By setting up RedwoodJS Realtime, the GraphQL server adds two helpers on the context: +By setting up realtime, the GraphQL server adds two helpers on the context: * pubSub * liveQueryStory @@ -229,7 +200,7 @@ When the query is: `auctions: [Auction!]! @requireAuth`: ## Subscriptions -RedwoodJS has a first-class developer experience for GraphQL subscriptions. +Redwood has a first-class developer experience for GraphQL subscriptions. #### Subscribe to Events @@ -264,7 +235,7 @@ This example showcases how a subscription yields its own response. ## Live Queries -RedwoodJS has made it super easy to add live queries to your GraphQL server! You can push new data to your clients automatically once the data selected by a GraphQL operation becomes stale by annotating your query operation with the `@live` directive. +Redwood has made it super easy to add live queries to your GraphQL server! You can push new data to your clients automatically once the data selected by a GraphQL operation becomes stale by annotating your query operation with the `@live` directive. The invalidation mechanism is based on GraphQL ID fields and schema coordinates. Once a query operation has been invalidated, the query is re-executed, and the result is pushed to the client. @@ -305,11 +276,11 @@ mutation MakeBid { ## Defer Directive -The `@defer` directive allows you to post-pone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. +The `@defer` directive allows you to postpone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. ### Slow and Fast Field Defer Example -Here, the GraphQL schema defines two queries for a "fast" and a "slow" (ie, delayed) information. +Here, the GraphQL schema defines two queries for a "fast" and a "slow" (i.e., delayed) information. ```graphql export const schema = gql` @@ -451,9 +422,7 @@ curl -g -X POST \ ``` Here you see the initial response has `[]` for alphabet data. - -Then on each push to the Repeater, an incremental update the the list of letters is sent. - +Then on each push to the Repeater, an incremental update to the list of letters is sent. The stream ends when `hasNext` is false: ```bash @@ -525,14 +494,14 @@ Content-Length: 17 ![image](https://github.com/ahaywood/redwoodjs-streaming-realtime-demos/assets/1051633/e3c51908-434c-4396-856a-8bee7329bcdd) -When deciding on how to offer realtime data updates in your RedwoodJS app, you’ll want to consider: +When deciding on how to offer realtime data updates, you’ll want to consider: - How frequently do your users require information updates? - Determine the value of "real-time" versus "near real-time" to your users. Do they need to know in less than 1-2 seconds, or is 10, 30, or 60 seconds acceptable for them to receive updates? - Consider the criticality of the data update. Is it low, such as a change in shipment status, or higher, such as a change in stock price for an investment app? - Consider the cost of maintaining connections and tracking updates across your user base. Is the infrastructure cost justifiable? - If you don't require "real" real-time, consider polling for data updates on a reasonable interval. According to Apollo, [in most cases](https://www.apollographql.com/docs/react/data/subscriptions/), your client should not use subscriptions to stay up to date with your backend. Instead, you should poll intermittently with queries or re-execute queries on demand when a user performs a relevant action, such as clicking a button. -- How are you deploying? Serverless or Serverful? +- How are you deploying? Serverless or serverful? - Real-time options depend on your deployment method. - If you are using a serverless architecture, your application cannot maintain a stateful connection to your users' applications. Therefore, it's not easy to "push," "publish," or "stream" data updates to the web client. - In this case, you may need to look for third-party solutions that manage the infrastructure to maintain such stateful connections to your web client, such as [Supabase Realtime](https://supabase.com/realtime), [SendBird](https://sendbird.com/), [Pusher](https://pusher.com/), or consider creating your own [AWS SNS-based](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) functionality. @@ -541,7 +510,7 @@ When deciding on how to offer realtime data updates in your RedwoodJS app, you ## Showcase Demos -Please see our [showcase RedwoodJS Realtime app](https://realtime-demo.fly.dev) for exampes of subscriptions and live queries. It also demonstrates how you can handle streaming responses, like those used by OpenAI chat completions. +Please see our [showcase realtime app](https://realtime-demo.fly.dev) for examples of subscriptions and live queries. It also demonstrates how you can handle streaming responses, like those used by OpenAI chat completions. ### Chat Room (Subscription) diff --git a/docs/netlify.toml b/docs/netlify.toml index 63dafd244adf..2f07a9e47bc2 100644 --- a/docs/netlify.toml +++ b/docs/netlify.toml @@ -280,8 +280,19 @@ to = "/docs/3.x/:splat" status = 301 -[[plugins]] - package = "@algolia/netlify-plugin-crawler" +# Redirects for "Configuring Fastify" after the server file was released in v7 - [plugins.inputs] - branches = ['next'] +[[redirects]] + from = "/docs/app-configuration-redwood-toml#configure-fastify" + to = "/docs/docker#using-the-server-file" + status = 301 + +[[redirects]] + from = "/docs/app-configuration-redwood-toml#register-custom-fastify-plugins" + to = "/docs/docker#configuring-the-server" + status = 301 + +[[redirects]] + from = "/docs/app-configuration-redwood-toml#how-to-configure-fastify-to-accept-file-uploads" + to = "/docs/docker#configuring-the-server" + status = 301 From d520c49d8770d51426b4e3d1419a036747a4fa3b Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 16 Feb 2024 11:52:49 -0800 Subject: [PATCH 102/119] chore(k6 tests): update entry point (#10024) Ran the k6 tests with @Josh-Walker-GM and we noticed that I forgot to update one of the entry points in my api server PRs (see https://github.com/redwoodjs/redwood/pull/9948). --- tasks/k6-test/run-k6-tests.mts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/k6-test/run-k6-tests.mts b/tasks/k6-test/run-k6-tests.mts index a6cf749849f9..0a177fae6654 100755 --- a/tasks/k6-test/run-k6-tests.mts +++ b/tasks/k6-test/run-k6-tests.mts @@ -49,7 +49,7 @@ const API_SERVER_COMMANDS = [ host: 'http://localhost:8911', }, { - cmd: `node ${path.resolve(REDWOOD_PROJECT_DIRECTORY, 'node_modules/@redwoodjs/api-server/dist/index.js')} api`, + cmd: `node ${path.resolve(REDWOOD_PROJECT_DIRECTORY, 'node_modules/@redwoodjs/api-server/dist/bin.js')} api`, host: 'http://localhost:8911' }, ] From d454a5c99c5bb708af4f2131e5f7d9a1bfc2ce7b Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 16 Feb 2024 13:04:09 -0800 Subject: [PATCH 103/119] fix(realtime): update logic for including sseLink (#10025) Since realtime went out of experimental, the logic for including the SSE Link in the bundle needs to be updated. We can't just use TOML config anymore as a tell since there's none. Right now all I can think of as a real source of truth is if the user has the realtime package on the api side. --- packages/vite/src/index.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/vite/src/index.ts b/packages/vite/src/index.ts index d145e036cc96..8786cfc8bde7 100644 --- a/packages/vite/src/index.ts +++ b/packages/vite/src/index.ts @@ -1,4 +1,4 @@ -import { existsSync } from 'fs' +import fs from 'fs' import path from 'path' import react from '@vitejs/plugin-react' @@ -28,6 +28,12 @@ export default function redwoodPluginVite(): PluginOption[] { const relativeEntryPath = path.relative(rwPaths.web.src, clientEntryPath) + // If realtime is enabled, we want to include the sseLink in the bundle. + // Right now the only way we have of telling is if the package is installed on the api side. + const realtimeEnabled = fs + .readFileSync(path.join(rwPaths.api.base, 'package.json'), 'utf-8') + .includes('@redwoodjs/realtime') + return [ { name: 'redwood-plugin-vite-html-env', @@ -81,7 +87,7 @@ export default function redwoodPluginVite(): PluginOption[] { // So we inject the entrypoint with the correct extension .tsx vs .jsx // And then inject the entry - if (existsSync(clientEntryPath)) { + if (fs.existsSync(clientEntryPath)) { return html.replace( '', // @NOTE the slash in front, for windows compatibility and for pages in subdirectories @@ -97,7 +103,7 @@ export default function redwoodPluginVite(): PluginOption[] { // but note index.html does not come through as an id during dev transform: (code: string, id: string) => { if ( - existsSync(clientEntryPath) && + fs.existsSync(clientEntryPath) && normalizePath(id) === normalizePath(rwPaths.web.html) ) { return { @@ -274,7 +280,7 @@ export default function redwoodPluginVite(): PluginOption[] { id: /@redwoodjs\/router\/dist\/splash-page/, }, ]), - !rwConfig.experimental.realtime.enabled && + !realtimeEnabled && removeFromBundle([ { id: /@redwoodjs\/web\/dist\/apollo\/sseLink/, From 2836bde761cad91edce39b90b017a5da811eeda0 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 16 Feb 2024 15:21:38 -0800 Subject: [PATCH 104/119] chore(ci): add changelog check to ci (#9989) This PR is a spike on improving the Changelog in our release process. It adds a workflow to our CI that checks to see if a PR updated the CHANGELOG.md file. In pairing on release, the hardest part is the release notes. If release is going to be more approachable and sustainable, we need to spread the burden of writing release notes, and the best person to write the release notes for a particular PR is the person who wrote it or the person who reviewed it. And the best time to do it is before it's merged! (Not weeks or months after.) I like reading [esbuild's release notes](https://github.com/evanw/esbuild/blob/main/CHANGELOG.md) and tried to find out how Evan Wallace writes them. It seems like he just adds a bullet point to the CHANGELOG.md file as the last commit before merging a PR he writes or reviews. I'm not sure if it gets much simpler than that, so I thought we could start there. - If a user doesn't update the changelog: Failing run: https://github.com/redwoodjs/redwood/actions/runs/7850731400/job/21426621517?pr=9989 Failing check: image Instructions in the check: image Some feedback I'm anticipating is: those instructions are hard to find, this check should comment in the PR. Agree that if you don't know where to look, you won't find them. But commenting in the PR complicates the logic and get noisy fast (we've disabled every bot that comments in threads). One more point: I think updating the Changelog should be on the burden of maintainers, so as long as we know the process it should work out. But happy for any feedback or ideas! --- .github/actions/check_changelog/action.yml | 10 + .../check_changelog/check_changelog.mjs | 68 +++++ .github/actions/check_changelog/package.json | 10 + .github/actions/check_changelog/yarn.lock | 237 ++++++++++++++++++ .github/workflows/check-changelog.yml | 33 +++ CHANGELOG.md | 35 +-- 6 files changed, 361 insertions(+), 32 deletions(-) create mode 100644 .github/actions/check_changelog/action.yml create mode 100644 .github/actions/check_changelog/check_changelog.mjs create mode 100644 .github/actions/check_changelog/package.json create mode 100644 .github/actions/check_changelog/yarn.lock create mode 100644 .github/workflows/check-changelog.yml diff --git a/.github/actions/check_changelog/action.yml b/.github/actions/check_changelog/action.yml new file mode 100644 index 000000000000..8364b63124fb --- /dev/null +++ b/.github/actions/check_changelog/action.yml @@ -0,0 +1,10 @@ +name: Check CHANGELOG.md +description: Checks if CHANGELOG.md has been updated + +runs: + using: node20 + main: check_changelog.mjs + +inputs: + labels: + required: true diff --git a/.github/actions/check_changelog/check_changelog.mjs b/.github/actions/check_changelog/check_changelog.mjs new file mode 100644 index 000000000000..47d4c5be5bba --- /dev/null +++ b/.github/actions/check_changelog/check_changelog.mjs @@ -0,0 +1,68 @@ +import { getInput } from '@actions/core' +import { exec, getExecOutput } from '@actions/exec' +import github from '@actions/github' + +async function main() { + // If the PR has the "changelog-ok" label, just pass. + const { labels } = JSON.parse(getInput('labels')) + const hasChangelogOkLabel = labels.some((label) => label.name === 'changelog-ok') + if (hasChangelogOkLabel) { + console.log('Skipping check because of the "changelog-ok" label') + return + } + + // Check if the PR updates the Changelog. + await exec('git fetch origin main', [], { silent: true }) + const { stdout } = await getExecOutput('git diff origin/main --name-only', [], { silent: true }) + const changedFiles = stdout.toString().trim().split('\n').filter(Boolean) + const didUpdateChangelog = changedFiles.some((file) => file === 'CHANGELOG.md') + if (didUpdateChangelog) { + // Empty space here (and in subsequent `console.log`s) for formatting in the action. + console.log( + [ + '', + "CHANGELOG.md was updated", + ].join('\n') + ) + + return + } + + const pr = github.context.payload.pull_request + + // The lines here are long but it's about how they look in GitHub actions, not here. + // So if you make changes, cross check them with how they actually look in the action. + console.log( + [ + '', + '📝 Update the Changelog', + '=======================', + '', + 'Before this PR can be merged, you need to update the Changelog at CHANGELOG.md. Add a bullet point to the Unreleased section at the top of the file in the following format', + '', + '```', + "## Unreleased", + '', + " - PR title (#PR number)", + '', + " Body...", + '```', + '', + `"PR title" and "PR number" should be the title and number of the PR you're working on verbatim. But "Body" shouldn't necessarily be the same. Feel free to use it as a starting point though.`, + '', + 'In writing the body, explain what this PR means for Redwood users. The more detail the better. E.g., is it a new feature? How do they use it? Code examples go a long way!', + '', + "Here are your PR's title, number, and body as a starting point:", + '', + '```', + `- ${pr.title} (#${pr.number})`, + '', + ` ${pr.body}`, + '```', + ].join('\n') + ) + + process.exitCode = 1 +} + +main() diff --git a/.github/actions/check_changelog/package.json b/.github/actions/check_changelog/package.json new file mode 100644 index 000000000000..b5e5ad3213e5 --- /dev/null +++ b/.github/actions/check_changelog/package.json @@ -0,0 +1,10 @@ +{ + "name": "check_changelog", + "private": true, + "dependencies": { + "@actions/core": "1.10.1", + "@actions/exec": "1.1.1", + "@actions/github": "6.0.0" + }, + "packageManager": "yarn@4.0.2" +} diff --git a/.github/actions/check_changelog/yarn.lock b/.github/actions/check_changelog/yarn.lock new file mode 100644 index 000000000000..1a564f5c72f8 --- /dev/null +++ b/.github/actions/check_changelog/yarn.lock @@ -0,0 +1,237 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@actions/core@npm:1.10.1": + version: 1.10.1 + resolution: "@actions/core@npm:1.10.1" + dependencies: + "@actions/http-client": "npm:^2.0.1" + uuid: "npm:^8.3.2" + checksum: 7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 + languageName: node + linkType: hard + +"@actions/exec@npm:1.1.1": + version: 1.1.1 + resolution: "@actions/exec@npm:1.1.1" + dependencies: + "@actions/io": "npm:^1.0.1" + checksum: 4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a + languageName: node + linkType: hard + +"@actions/github@npm:6.0.0": + version: 6.0.0 + resolution: "@actions/github@npm:6.0.0" + dependencies: + "@actions/http-client": "npm:^2.2.0" + "@octokit/core": "npm:^5.0.1" + "@octokit/plugin-paginate-rest": "npm:^9.0.0" + "@octokit/plugin-rest-endpoint-methods": "npm:^10.0.0" + checksum: 6f86f564e6ec5873c69ff23bed308cef5f964dbdb559c5415c1ba479517bf18352713a2a757c27f8f67a3d675fdd78446cf142b27762489f697edf9c58e72378 + languageName: node + linkType: hard + +"@actions/http-client@npm:^2.0.1, @actions/http-client@npm:^2.2.0": + version: 2.2.0 + resolution: "@actions/http-client@npm:2.2.0" + dependencies: + tunnel: "npm:^0.0.6" + undici: "npm:^5.25.4" + checksum: 868fe8529d78beb72f84ea2486e232fa6f66abe00d6ec4591b98c37e762c3d812868a3548638d75b49917961fd10ba1556916b47b1e9e4b55c266e2013c3ae8e + languageName: node + linkType: hard + +"@actions/io@npm:^1.0.1": + version: 1.1.3 + resolution: "@actions/io@npm:1.1.3" + checksum: 5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.0 + resolution: "@fastify/busboy@npm:2.1.0" + checksum: 7bb641080aac7cf01d88749ad331af10ba9ec3713ec07cabbe833908c75df21bd56249bb6173bdec07f5a41896b21e3689316f86684c06635da45f91ff4565a2 + languageName: node + linkType: hard + +"@octokit/auth-token@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/auth-token@npm:4.0.0" + checksum: 57acaa6c394c5abab2f74e8e1dcf4e7a16b236f713c77a54b8f08e2d14114de94b37946259e33ec2aab0566b26f724c2b71d2602352b59e541a9854897618f3c + languageName: node + linkType: hard + +"@octokit/core@npm:^5.0.1": + version: 5.1.0 + resolution: "@octokit/core@npm:5.1.0" + dependencies: + "@octokit/auth-token": "npm:^4.0.0" + "@octokit/graphql": "npm:^7.0.0" + "@octokit/request": "npm:^8.0.2" + "@octokit/request-error": "npm:^5.0.0" + "@octokit/types": "npm:^12.0.0" + before-after-hook: "npm:^2.2.0" + universal-user-agent: "npm:^6.0.0" + checksum: a1d2882373b4a33cd9f6e56d76bcc82e5589a477829fc3491b1ef471a8a83fa437b339a2c76d97d9e8ea4ca12bf3ebf32e66119ba16977e542d98f1f5dd3c994 + languageName: node + linkType: hard + +"@octokit/endpoint@npm:^9.0.0": + version: 9.0.4 + resolution: "@octokit/endpoint@npm:9.0.4" + dependencies: + "@octokit/types": "npm:^12.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: f1c857c5d85afa9d7e8857f7f97dbec28d3b6ab1dc21fe35172f1bc9e5512c8a3a26edabf6b2d83bb60d700f7ad290c96be960496aa83606095630edfad06db4 + languageName: node + linkType: hard + +"@octokit/graphql@npm:^7.0.0": + version: 7.0.2 + resolution: "@octokit/graphql@npm:7.0.2" + dependencies: + "@octokit/request": "npm:^8.0.1" + "@octokit/types": "npm:^12.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 96e5d6b970be60877134cc147b9249534f3a79d691b9932d731d453426fa1e1a0a36111a1b0a6ab43d61309c630903a65db5559b5c800300dc26cf588f50fea8 + languageName: node + linkType: hard + +"@octokit/openapi-types@npm:^19.1.0": + version: 19.1.0 + resolution: "@octokit/openapi-types@npm:19.1.0" + checksum: ae8081f52b797b91a12d4f6cddc475699c9d34b06645b337adc77d30b583d8fe8506597a45c42f8f1a96bfb2a9d092cee257d8a65d718bfeed23a0d153448eea + languageName: node + linkType: hard + +"@octokit/plugin-paginate-rest@npm:^9.0.0": + version: 9.1.5 + resolution: "@octokit/plugin-paginate-rest@npm:9.1.5" + dependencies: + "@octokit/types": "npm:^12.4.0" + peerDependencies: + "@octokit/core": ">=5" + checksum: a17055dff8fde5ebc03bf935294ffa4605ed714cb15252f0fa63cda1b95e738fafb5ab9748b18fbdfa5615d5f6686cbf193c6d6426e7dc4fd1dda91c87263f3b + languageName: node + linkType: hard + +"@octokit/plugin-rest-endpoint-methods@npm:^10.0.0": + version: 10.2.0 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:10.2.0" + dependencies: + "@octokit/types": "npm:^12.3.0" + peerDependencies: + "@octokit/core": ">=5" + checksum: 4d00a2334753955f0c3841ba8fc0880c093b94838e011864ee737d958d2d64e3d45d34fa4c8b64bccf9e13c6de81318cbd6e2b24df37992941d12f54def28432 + languageName: node + linkType: hard + +"@octokit/request-error@npm:^5.0.0": + version: 5.0.1 + resolution: "@octokit/request-error@npm:5.0.1" + dependencies: + "@octokit/types": "npm:^12.0.0" + deprecation: "npm:^2.0.0" + once: "npm:^1.4.0" + checksum: e72a4627120de345b54876a1f007664095e5be9d624fce2e14fccf7668cd8f5e4929d444d8fc085d48e1fb5cd548538453974aab129a669101110d6679dce6c6 + languageName: node + linkType: hard + +"@octokit/request@npm:^8.0.1, @octokit/request@npm:^8.0.2": + version: 8.2.0 + resolution: "@octokit/request@npm:8.2.0" + dependencies: + "@octokit/endpoint": "npm:^9.0.0" + "@octokit/request-error": "npm:^5.0.0" + "@octokit/types": "npm:^12.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 0789edd3b600c5b7ca74089e2842b7bb679a0ad1ec56e5dda54f052d2dd266ac8e6e2eb3c34ba57962066f0770444bf1e99805fd2d762a47776f567beafcf038 + languageName: node + linkType: hard + +"@octokit/types@npm:^12.0.0, @octokit/types@npm:^12.3.0, @octokit/types@npm:^12.4.0": + version: 12.4.0 + resolution: "@octokit/types@npm:12.4.0" + dependencies: + "@octokit/openapi-types": "npm:^19.1.0" + checksum: b52b3fd8af307a1868846991f8376548a790814b20639dee1110271a768c0489081970df893ca2230f6285066003230d22f5877eeac90418971a475c79808241 + languageName: node + linkType: hard + +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c + languageName: node + linkType: hard + +"check_changelog@workspace:.": + version: 0.0.0-use.local + resolution: "check_changelog@workspace:." + dependencies: + "@actions/core": "npm:1.10.1" + "@actions/exec": "npm:1.1.1" + "@actions/github": "npm:6.0.0" + languageName: unknown + linkType: soft + +"deprecation@npm:^2.0.0": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: 23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 + languageName: node + linkType: hard + +"once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + languageName: node + linkType: hard + +"undici@npm:^5.25.4": + version: 5.28.3 + resolution: "undici@npm:5.28.3" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 3c559ae50ef3104b7085251445dda6f4de871553b9e290845649d2f80b06c0c9cfcdf741b0029c6b20d36c82e6a74dc815b139fa9a26757d70728074ca6d6f5c + languageName: node + linkType: hard + +"universal-user-agent@npm:^6.0.0": + version: 6.0.1 + resolution: "universal-user-agent@npm:6.0.1" + checksum: 5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187 + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard diff --git a/.github/workflows/check-changelog.yml b/.github/workflows/check-changelog.yml new file mode 100644 index 000000000000..eabf6b71b921 --- /dev/null +++ b/.github/workflows/check-changelog.yml @@ -0,0 +1,33 @@ +name: 📝 Check CHANGELOG.md + +on: + pull_request: + types: [opened, synchronize, reopened, labeled, unlabeled] + +# Cancel in-progress runs of this workflow. +# See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + check-changelog: + name: 📝 Check CHANGELOG.md + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Enable Corepack + run: corepack enable + + - uses: actions/setup-node@v4 + with: + node-version: 20 + + - run: yarn install + working-directory: ./.github/actions/check_changelog + + - name: Check CHANGELOG.md + uses: ./.github/actions/check_changelog + with: + labels: '{ "labels": ${{ toJSON(github.event.pull_request.labels) }} }' diff --git a/CHANGELOG.md b/CHANGELOG.md index e6fdcbefa749..e49237d033e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,36 +1,7 @@ # CHANGELOG -## Current and Previous Versions -For all changelog information since v0.0.1: -- [GitHub Releases](https://github.com/redwoodjs/redwood/releases) - -## [0.0.1-alpha.15] - 2020-01-04 - -### Changed - -- Renamed `hammerframework` to `redwoodjs` - -## [0.0.1-alpha.10.1] - 2019-10-23 - -### Added - -- `WithCell` and `useCell` query resolvers. -- Typescript support in our ESLint configuration. +## Unreleased -### Changed - -- `hammer-api` now exports submodules, so all graphql things are - available in `@hammerframework/hammer-api/graphql`. -- `hammer-dev-server` no longer clears the screen. - -## [0.0.1-alpha.9] - 2019-09-29 - -### Changed - -- ESLint configuration errors on import ordering, with the idea that - fix on save sorts the imports automatically. - -### Added +## Current and Previous Versions -- `hammer-web` package. -- `hammer-api` package. +For all changelog information since v7.0.0, see [GitHub Releases](https://github.com/redwoodjs/redwood/releases). From 6adaaeff2fe66c6bb836073322ba7fca3b218141 Mon Sep 17 00:00:00 2001 From: Dominic Saadi Date: Fri, 16 Feb 2024 17:18:06 -0800 Subject: [PATCH 105/119] chore(release): link to previous releases and upgrade guides in the changelog (#10026) Follow up to https://github.com/redwoodjs/redwood/pull/9989. Adds links to Redwood's previous releases' release notes and upgrade guides. --- CHANGELOG.md | 468 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 466 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e49237d033e2..0f6f436c42bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,470 @@ ## Unreleased -## Current and Previous Versions +## v6.6.4 -For all changelog information since v7.0.0, see [GitHub Releases](https://github.com/redwoodjs/redwood/releases). +- See https://github.com/redwoodjs/redwood/releases/tag/v6.6.4 + +## v6.6.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.6.3 + +## v6.6.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.6.2 + +## v6.6.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.6.1 + +## v6.6.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.6.0 + +## v6.5.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.5.1 + +## v6.5.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.5.0 + +## v6.4.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.4.2 + +## v6.4.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.4.1 + +## v6.4.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.4.0 + +## v6.3.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.3.3 + +## v6.3.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.3.2 + +## v6.3.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.3.1 + +## v6.3.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.3.0 + +## v6.2.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.2.3 + +## v6.2.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.2.2 + +## v6.2.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.2.1 + +## v6.2.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.2.0 + +## v6.1.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.1.1 + +## v6.1.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.1.0 + +## v6.0.7 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.7 + +## v6.0.6 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.6 + +## v6.0.5 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.5 + +## v6.0.4 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.4 + +## v6.0.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.3 + +## v6.0.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.2 + +## v6.0.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.1 + +## v6.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v6.0.0 for the release notes and https://community.redwoodjs.com/t/redwood-v6-0-0-upgrade-guide/5044 for the upgrade guide + +## v5.4.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.4.3 + +## v5.4.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.4.2 + +## v5.4.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.4.1 + +## v5.4.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.4.0 + +## v5.3.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.3.2 + +## v5.3.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.3.1 + +## v5.3.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.3.0 + +## v5.2.4 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.2.4 + +## v5.2.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.2.3 + +## v5.2.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.2.2 + +## v5.2.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.2.1 + +## v5.2.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.2.0 + +## v5.1.5 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.1.5 + +## v5.1.4 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.1.4 + +## v5.1.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.1.3 + +## v5.1.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.1.2 + +## v5.1.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.1.1 + +## v5.1.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.1.0 + +## v5.0.6 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.6 + +## v5.0.5 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.5 + +## v5.0.4 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.4 + +## v5.0.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.3 + +## v5.0.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.2 + +## v5.0.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.1 + +## v5.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v5.0.0 for the release notes and https://community.redwoodjs.com/t/redwood-v5-0-0-upgrade-guide/4715 for the upgrade guide + +## v4.5.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.5.0 + +## v4.4.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.4.3 + +## v4.4.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.4.2 + +## v4.4.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.4.1 + +## v4.4.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.4.0 + +## v4.3.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.3.1 + +## v4.3.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.3.0 + +## v4.2.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.2.2 + +## v4.2.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.2.1 + +## v4.2.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.2.0 + +## v4.1.4 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.1.4 + +## v4.1.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.1.3 + +## v4.1.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.1.2 + +## v4.1.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.1.1 + +## v4.1.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.1.0 + +## v4.0.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.0.1 + +## v4.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v4.0.0 for the release notes and https://community.redwoodjs.com/t/redwood-v4-0-0-upgrade-guide/4412 for the upgrade guide + +## v3.8.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.8.0 + +## v3.7.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.7.1 + +## v3.7.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.7.0 + +## v3.6.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.6.1 + +## v3.6.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.6.0 + +## v3.5.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.5.0 + +## v3.4.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.4.0 + +## v3.3.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.3.2 + +## v3.3.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.3.1 + +## v3.3.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.3.0 + +## v3.2.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.2.2 + +## v3.2.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.2.1 + +## v3.2.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.2.0 + +## v3.1.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.1.2 + +## v3.1.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.1.1 + +## v3.1.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.1.0 + +## v3.0.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.0.3 + +## v3.0.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.0.2 + +## v3.0.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.0.1 + +## v3.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v3.0.0 for the release notes and https://community.redwoodjs.com/t/pending-redwood-3-0-0-is-now-available/3989 for the upgrade guide + +## v2.2.5 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.2.5 + +## v2.2.4 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.2.4 + +## v2.2.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.2.3 + +## v2.2.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.2.2 + +## v2.2.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.2.1 + +## v2.2.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.2.0 + +## v2.1.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.1.1 + +## v2.1.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.1.0 + +## v2.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v2.0.0 for the release notes and upgrade guide + +## v1.5.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.5.2 + +## v1.5.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.5.1 + +## v1.5.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.5.0 + +## v1.4.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.4.3 + +## v1.4.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.4.2 + +## v1.4.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.4.1 + +## v1.4.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.4.0 + +## v1.3.3 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.3.3 + +## v1.3.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.3.2 + +## v1.3.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.3.1 + +## v1.3.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.3.0 + +## v1.2.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.2.1 + +## v1.2.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.2.0 + +## v1.1.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.1.1 + +## v1.1.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.1.0 + +## v1.0.2 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.0.2 + +## v1.0.1 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.0.1 + +## v1.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v1.0.0-rc.final.1 From 53ab2ded677aaedcd39a4bbb1c69f25e4cc94566 Mon Sep 17 00:00:00 2001 From: Tobbe Lundberg Date: Sat, 17 Feb 2024 11:43:27 +0100 Subject: [PATCH 106/119] docs(metadata): Fix spelling/typos (#10027) --- docs/docs/seo-head.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/seo-head.md b/docs/docs/seo-head.md index 63d2fb01a6af..7cb5772edd62 100644 --- a/docs/docs/seo-head.md +++ b/docs/docs/seo-head.md @@ -8,7 +8,7 @@ Search Engine Optimization is a dark art that some folks dedicate their entire l ## Adding a Title -You certainly want to change the title of your Redwood app from the default of "Redwood App." You can start by adding or modifing `title` inside of `/redwood.toml` +You certainly want to change the title of your Redwood app from the default of "Redwood App." You can start by adding or modifying `title` inside of `/redwood.toml` ```diff title=redwood.toml [web] @@ -227,7 +227,7 @@ If you define _any_ `og` prop, we will copy any `title` and `description` to an ``` -You can override this behavior by explictly setting `og:title` or `og:description` to `null`: +You can override this behavior by explicitly setting `og:title` or `og:description` to `null`: ```jsx @@ -272,7 +272,7 @@ If you define a `charSet` prop we will create a `` tag with the `charset` ``` -We simplifed some of the examples above by excluding the generated `` and `og:type` tags, so here's the real output if you included `title` and `og` props: +We simplified some of the examples above by excluding the generated `<title>` and `og:type` tags, so here's the real output if you included `title` and `og` props: ```jsx <Metadata title="My Website" og /> From d56cd2c122066b450d7fb7f2e69676526129ae79 Mon Sep 17 00:00:00 2001 From: Amy Haywood Dutton <me@amyhaywood.com> Date: Mon, 19 Feb 2024 12:39:14 -0600 Subject: [PATCH 107/119] docs: Within describeScenario documentation, change optimisation to use American English (#10032) Changed the heading `describeScenario - a performance optimization` to use American English (was optimisation) --- docs/docs/testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/testing.md b/docs/docs/testing.md index ea0f30d55173..46304dbaa622 100644 --- a/docs/docs/testing.md +++ b/docs/docs/testing.md @@ -1696,7 +1696,7 @@ Only the posts scenarios will be present in the database when running the `posts During the run of any single test, there is only ever one scenario's worth of data present in the database: users.standard *or* users.incomplete. -### describeScenario - a performance optimisation +### describeScenario - a performance optimization The scenario feature described above should be the base starting point for setting up test that depend on the database. The scenario sets up the database before each scenario _test_, runs the test, and then tears down (deletes) the database scenario. This ensures that each of your tests are isolated, and that they do not affect each other. From 3e1f89c7fe48807a26b0e51ad0fbb212d64f2288 Mon Sep 17 00:00:00 2001 From: Amy Haywood Dutton <me@amyhaywood.com> Date: Mon, 19 Feb 2024 12:41:38 -0600 Subject: [PATCH 108/119] docs: Removes warning within Mailer documentation about Studio being experimental (#10033) Currently, there's a warning within the Mailer docs about Studio being an experimental feature: ![CleanShot 2024-02-19 at 12 39 06](https://github.com/redwoodjs/redwood/assets/212300/46b3163f-c1ed-4517-94b4-a964d4e95805) With the release of Redwood v7, Studio is no longer experimental. I removed this warning from the documentation. --- docs/docs/mailer.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/docs/mailer.md b/docs/docs/mailer.md index 0707e9b5bc85..923077849f7f 100644 --- a/docs/docs/mailer.md +++ b/docs/docs/mailer.md @@ -274,12 +274,6 @@ You can have a preview of what your mail templates will look like. These will re When running in development mode, using the default `@redwoodjs/mailer-handler-studio` development handler, your mail will be sent to a local SMTP inbox running inside of Studio. This allows you to use your app and have full emails sent without worrying about setting up a local inbox yourself or using some other online temporary inbox service. -:::warning - -Redwood Studio is an experimental feature and is still in development. Some of the UI shown above might look slightly different and the functionality may be tweaked over time to provide you with a better experience. - -::: - ## Need a Renderer or Handler? If the Mailer does not currenly provide a [handler](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#handlers) or [renderer](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#renderers) for the service or technology you wish to use, this doesn't prevent you from using the Mailer. Instead, you can create your own handler or renderer which you can then open source to the wider RedwoodJS community. From 4b5f0243354553d59e744574f09803e3f42a17ba Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 17:54:18 -0800 Subject: [PATCH 109/119] fix(server): prefix port/host with api, fix logging (#10035) Last fix for v7 I noticed while trying to get https://github.com/redwoodjs/redwood/pull/10034 done. In talking to Josh about his experiences deploying to Fly etc and some of the pain points around that, I may introduce a `createServer` for the web side in a minor. If they're in the same file (which they will be for now), parsing argv with just port and host will be a problem. So to avoid that I've made it so that it's apiPort and apiHost. --- docs/docs/docker.md | 4 +-- .../src/__tests__/createServer.test.ts | 18 +++++------ .../api-server/src/apiCLIConfigHandler.ts | 4 +++ packages/api-server/src/createServer.ts | 10 +++--- .../api-server/src/createServerHelpers.ts | 31 ++++++++++--------- packages/api-server/src/watch.ts | 2 +- packages/cli/src/commands/serve.js | 2 +- packages/cli/src/commands/serveApiHandler.js | 25 ++++++--------- packages/cli/src/commands/serveBothHandler.js | 4 +-- 9 files changed, 51 insertions(+), 49 deletions(-) diff --git a/docs/docs/docker.md b/docs/docs/docker.md index 33c2e65bd711..53a1c3aa0a38 100644 --- a/docs/docs/docker.md +++ b/docs/docs/docker.md @@ -637,10 +637,10 @@ await server.start() `start` is a thin wrapper around [`listen`](https://fastify.dev/docs/latest/Reference/Server/#listen). It takes the same arguments as `listen`, except for host and port. It computes those in the following way, in order of precedence: -1. `--host` or `--port` flags: +1. `--apiHost` or `--apiPort` flags: ``` - yarn node api/dist/server.js --host 0.0.0.0 --port 8913 + yarn node api/dist/server.js --apiHost 0.0.0.0 --apiPort 8913 ``` 2. `REDWOOD_API_HOST` or `REDWOOD_API_PORT` env vars: diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index b70b6b6921a7..d58ae2eb6d3c 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -239,8 +239,8 @@ describe('resolveOptions', () => { DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout, logger: DEFAULT_CREATE_SERVER_OPTIONS.logger, }, - port: 65501, - host: '::', + apiPort: 65501, + apiHost: '::', }) }) @@ -309,17 +309,17 @@ describe('resolveOptions', () => { }) }) - it('parses `--port`', () => { + it('parses `--apiPort`', () => { expect( - resolveOptions({ parseArgs: true }, ['--port', '8930']).port + resolveOptions({ parseArgs: true }, ['--apiPort', '8930']).apiPort ).toEqual(8930) }) - it("throws if `--port` can't be converted to an integer", () => { + it("throws if `--apiPort` can't be converted to an integer", () => { expect(() => { - resolveOptions({ parseArgs: true }, ['--port', 'eight-nine-ten']) + resolveOptions({ parseArgs: true }, ['--apiPort', 'eight-nine-ten']) }).toThrowErrorMatchingInlineSnapshot( - `[Error: \`port\` must be an integer]` + `[Error: \`apiPort\` must be an integer]` ) }) @@ -338,9 +338,9 @@ describe('resolveOptions', () => { ).toEqual('/bar/') }) - it('parses `--host`', () => { + it('parses `--apiHost`', () => { expect( - resolveOptions({ parseArgs: true }, ['--host', '127.0.0.1']).host + resolveOptions({ parseArgs: true }, ['--apiHost', '127.0.0.1']).apiHost ).toEqual('127.0.0.1') }) }) diff --git a/packages/api-server/src/apiCLIConfigHandler.ts b/packages/api-server/src/apiCLIConfigHandler.ts index 8b586ab97db3..28a101445824 100644 --- a/packages/api-server/src/apiCLIConfigHandler.ts +++ b/packages/api-server/src/apiCLIConfigHandler.ts @@ -1,5 +1,7 @@ import chalk from 'chalk' +import { coerceRootPath } from '@redwoodjs/fastify-web' + import { getAPIPort, getAPIHost } from './cliHelpers' import createFastifyInstance from './fastify' import { redwoodFastifyAPI } from './plugins/api' @@ -9,6 +11,8 @@ export async function handler(options: APIParsedOptions) { const timeStart = Date.now() console.log(chalk.dim.italic('Starting API Server...')) + options.apiRootPath = coerceRootPath(options.apiRootPath ?? '/') + const fastify = await createFastifyInstance() fastify.register(redwoodFastifyAPI, { redwood: { diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 286aed7d6d81..925750bae893 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -64,7 +64,7 @@ if (!process.env.REDWOOD_ENV_FILES_LOADED) { * ``` */ export async function createServer(options: CreateServerOptions = {}) { - const { apiRootPath, fastifyServerOptions, port, host } = + const { apiRootPath, fastifyServerOptions, apiPort, apiHost } = resolveOptions(options) // Warn about `api/server.config.js` @@ -154,18 +154,18 @@ export async function createServer(options: CreateServerOptions = {}) { }) /** - * A wrapper around `fastify.listen` that handles `--port`, `REDWOOD_API_PORT` and [api].port in redwood.toml + * A wrapper around `fastify.listen` that handles `--apiPort`, `REDWOOD_API_PORT` and [api].port in redwood.toml (same for host) * * The order of precedence is: - * - `--port` + * - `--apiPort` * - `REDWOOD_API_PORT` * - [api].port in redwood.toml */ server.start = (options: StartOptions = {}) => { return server.listen({ ...options, - port, - host, + port: apiPort, + host: apiHost, }) } diff --git a/packages/api-server/src/createServerHelpers.ts b/packages/api-server/src/createServerHelpers.ts index a295f63c7495..fa6e2602f972 100644 --- a/packages/api-server/src/createServerHelpers.ts +++ b/packages/api-server/src/createServerHelpers.ts @@ -51,8 +51,8 @@ export const DEFAULT_CREATE_SERVER_OPTIONS: DefaultCreateServerOptions = { type ResolvedOptions = Required< Omit<CreateServerOptions, 'logger' | 'fastifyServerOptions' | 'parseArgs'> & { fastifyServerOptions: FastifyServerOptions - port: number - host: string + apiPort: number + apiHost: string } > @@ -60,6 +60,8 @@ export function resolveOptions( options: CreateServerOptions = {}, args?: string[] ) { + options.parseArgs ??= true + options.logger ??= DEFAULT_CREATE_SERVER_OPTIONS.logger // Set defaults. @@ -73,8 +75,8 @@ export function resolveOptions( logger: options.logger ?? DEFAULT_CREATE_SERVER_OPTIONS.logger, }, - host: getAPIHost(), - port: getAPIPort(), + apiHost: getAPIHost(), + apiPort: getAPIPort(), } // Merge fastifyServerOptions. @@ -85,10 +87,10 @@ export function resolveOptions( if (options.parseArgs) { const { values } = parseArgs({ options: { - host: { + apiHost: { type: 'string', }, - port: { + apiPort: { type: 'string', short: 'p', }, @@ -96,21 +98,22 @@ export function resolveOptions( type: 'string', }, }, + strict: false, ...(args && { args }), }) - if (values.host && typeof values.host !== 'string') { - throw new Error('`host` must be a string') + if (values.apiHost && typeof values.apiHost !== 'string') { + throw new Error('`apiHost` must be a string') } - if (values.host) { - resolvedOptions.host = values.host + if (values.apiHost) { + resolvedOptions.apiHost = values.apiHost } - if (values.port) { - resolvedOptions.port = +values.port + if (values.apiPort) { + resolvedOptions.apiPort = +values.apiPort - if (isNaN(resolvedOptions.port)) { - throw new Error('`port` must be an integer') + if (isNaN(resolvedOptions.apiPort)) { + throw new Error('`apiPort` must be an integer') } } diff --git a/packages/api-server/src/watch.ts b/packages/api-server/src/watch.ts index d1d52046b346..bad8c36b43e9 100644 --- a/packages/api-server/src/watch.ts +++ b/packages/api-server/src/watch.ts @@ -138,7 +138,7 @@ const buildAndRestart = async ({ if (serverFile) { httpServerProcess = fork( serverFile, - ['--port', port.toString()], + ['--apiPort', port.toString()], forkOpts ) } else { diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index 5c9071bf7691..1696b66865cd 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -27,7 +27,7 @@ export const builder = async (yargs) => { .command({ command: '$0', description: bothServerCLIConfig.description, - builder: bothServerCLIConfig.builder(yargs), + builder: bothServerCLIConfig.builder, handler: async (argv) => { recordTelemetryAttributes({ command: 'serve', diff --git a/packages/cli/src/commands/serveApiHandler.js b/packages/cli/src/commands/serveApiHandler.js index 19cd3e03b37f..0c2bc6510c15 100644 --- a/packages/cli/src/commands/serveApiHandler.js +++ b/packages/cli/src/commands/serveApiHandler.js @@ -3,19 +3,14 @@ import execa from 'execa' import { getPaths } from '@redwoodjs/project-config' export const apiServerFileHandler = async (argv) => { - await execa( - 'yarn', - [ - 'node', - 'server.js', - '--port', - argv.port, - '--apiRootPath', - argv.apiRootPath, - ], - { - cwd: getPaths().api.dist, - stdio: 'inherit', - } - ) + const args = ['node', 'server.js', '--apiRootPath', argv.apiRootPath] + + if (argv.port) { + args.push('--apiPort', argv.port) + } + + await execa('yarn', args, { + cwd: getPaths().api.dist, + stdio: 'inherit', + }) } diff --git a/packages/cli/src/commands/serveBothHandler.js b/packages/cli/src/commands/serveBothHandler.js index 2f3e32f78956..8fdc57c7e88d 100644 --- a/packages/cli/src/commands/serveBothHandler.js +++ b/packages/cli/src/commands/serveBothHandler.js @@ -45,9 +45,9 @@ export const bothServerFileHandler = async (argv) => { [ { name: 'api', - command: `yarn node ${path.join('dist', 'server.js')} --port ${ + command: `yarn node ${path.join('dist', 'server.js')} --apiPort ${ argv.apiPort - } --host ${argv.apiHost} --api-root-path ${argv.apiRootPath}`, + } --apiHost ${argv.apiHost} --apiRootPath ${argv.apiRootPath}`, cwd: getPaths().api.base, prefixColor: 'cyan', }, From 5b2e74a43ae85ee7b33a0685c39f38bd2a8f3b74 Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 17:54:18 -0800 Subject: [PATCH 110/119] fix(server): prefix port/host with api, fix logging (#10035) Last fix for v7 I noticed while trying to get https://github.com/redwoodjs/redwood/pull/10034 done. In talking to Josh about his experiences deploying to Fly etc and some of the pain points around that, I may introduce a `createServer` for the web side in a minor. If they're in the same file (which they will be for now), parsing argv with just port and host will be a problem. So to avoid that I've made it so that it's apiPort and apiHost. --- docs/docs/docker.md | 4 +-- .../src/__tests__/createServer.test.ts | 18 +++++------ .../api-server/src/apiCLIConfigHandler.ts | 4 +++ packages/api-server/src/createServer.ts | 10 +++--- .../api-server/src/createServerHelpers.ts | 31 ++++++++++--------- packages/api-server/src/watch.ts | 2 +- packages/cli/src/commands/serve.js | 2 +- packages/cli/src/commands/serveHandler.js | 29 +++++++---------- 8 files changed, 51 insertions(+), 49 deletions(-) diff --git a/docs/docs/docker.md b/docs/docs/docker.md index 33c2e65bd711..53a1c3aa0a38 100644 --- a/docs/docs/docker.md +++ b/docs/docs/docker.md @@ -637,10 +637,10 @@ await server.start() `start` is a thin wrapper around [`listen`](https://fastify.dev/docs/latest/Reference/Server/#listen). It takes the same arguments as `listen`, except for host and port. It computes those in the following way, in order of precedence: -1. `--host` or `--port` flags: +1. `--apiHost` or `--apiPort` flags: ``` - yarn node api/dist/server.js --host 0.0.0.0 --port 8913 + yarn node api/dist/server.js --apiHost 0.0.0.0 --apiPort 8913 ``` 2. `REDWOOD_API_HOST` or `REDWOOD_API_PORT` env vars: diff --git a/packages/api-server/src/__tests__/createServer.test.ts b/packages/api-server/src/__tests__/createServer.test.ts index b70b6b6921a7..d58ae2eb6d3c 100644 --- a/packages/api-server/src/__tests__/createServer.test.ts +++ b/packages/api-server/src/__tests__/createServer.test.ts @@ -239,8 +239,8 @@ describe('resolveOptions', () => { DEFAULT_CREATE_SERVER_OPTIONS.fastifyServerOptions.requestTimeout, logger: DEFAULT_CREATE_SERVER_OPTIONS.logger, }, - port: 65501, - host: '::', + apiPort: 65501, + apiHost: '::', }) }) @@ -309,17 +309,17 @@ describe('resolveOptions', () => { }) }) - it('parses `--port`', () => { + it('parses `--apiPort`', () => { expect( - resolveOptions({ parseArgs: true }, ['--port', '8930']).port + resolveOptions({ parseArgs: true }, ['--apiPort', '8930']).apiPort ).toEqual(8930) }) - it("throws if `--port` can't be converted to an integer", () => { + it("throws if `--apiPort` can't be converted to an integer", () => { expect(() => { - resolveOptions({ parseArgs: true }, ['--port', 'eight-nine-ten']) + resolveOptions({ parseArgs: true }, ['--apiPort', 'eight-nine-ten']) }).toThrowErrorMatchingInlineSnapshot( - `[Error: \`port\` must be an integer]` + `[Error: \`apiPort\` must be an integer]` ) }) @@ -338,9 +338,9 @@ describe('resolveOptions', () => { ).toEqual('/bar/') }) - it('parses `--host`', () => { + it('parses `--apiHost`', () => { expect( - resolveOptions({ parseArgs: true }, ['--host', '127.0.0.1']).host + resolveOptions({ parseArgs: true }, ['--apiHost', '127.0.0.1']).apiHost ).toEqual('127.0.0.1') }) }) diff --git a/packages/api-server/src/apiCLIConfigHandler.ts b/packages/api-server/src/apiCLIConfigHandler.ts index 8b586ab97db3..28a101445824 100644 --- a/packages/api-server/src/apiCLIConfigHandler.ts +++ b/packages/api-server/src/apiCLIConfigHandler.ts @@ -1,5 +1,7 @@ import chalk from 'chalk' +import { coerceRootPath } from '@redwoodjs/fastify-web' + import { getAPIPort, getAPIHost } from './cliHelpers' import createFastifyInstance from './fastify' import { redwoodFastifyAPI } from './plugins/api' @@ -9,6 +11,8 @@ export async function handler(options: APIParsedOptions) { const timeStart = Date.now() console.log(chalk.dim.italic('Starting API Server...')) + options.apiRootPath = coerceRootPath(options.apiRootPath ?? '/') + const fastify = await createFastifyInstance() fastify.register(redwoodFastifyAPI, { redwood: { diff --git a/packages/api-server/src/createServer.ts b/packages/api-server/src/createServer.ts index 286aed7d6d81..925750bae893 100644 --- a/packages/api-server/src/createServer.ts +++ b/packages/api-server/src/createServer.ts @@ -64,7 +64,7 @@ if (!process.env.REDWOOD_ENV_FILES_LOADED) { * ``` */ export async function createServer(options: CreateServerOptions = {}) { - const { apiRootPath, fastifyServerOptions, port, host } = + const { apiRootPath, fastifyServerOptions, apiPort, apiHost } = resolveOptions(options) // Warn about `api/server.config.js` @@ -154,18 +154,18 @@ export async function createServer(options: CreateServerOptions = {}) { }) /** - * A wrapper around `fastify.listen` that handles `--port`, `REDWOOD_API_PORT` and [api].port in redwood.toml + * A wrapper around `fastify.listen` that handles `--apiPort`, `REDWOOD_API_PORT` and [api].port in redwood.toml (same for host) * * The order of precedence is: - * - `--port` + * - `--apiPort` * - `REDWOOD_API_PORT` * - [api].port in redwood.toml */ server.start = (options: StartOptions = {}) => { return server.listen({ ...options, - port, - host, + port: apiPort, + host: apiHost, }) } diff --git a/packages/api-server/src/createServerHelpers.ts b/packages/api-server/src/createServerHelpers.ts index a295f63c7495..fa6e2602f972 100644 --- a/packages/api-server/src/createServerHelpers.ts +++ b/packages/api-server/src/createServerHelpers.ts @@ -51,8 +51,8 @@ export const DEFAULT_CREATE_SERVER_OPTIONS: DefaultCreateServerOptions = { type ResolvedOptions = Required< Omit<CreateServerOptions, 'logger' | 'fastifyServerOptions' | 'parseArgs'> & { fastifyServerOptions: FastifyServerOptions - port: number - host: string + apiPort: number + apiHost: string } > @@ -60,6 +60,8 @@ export function resolveOptions( options: CreateServerOptions = {}, args?: string[] ) { + options.parseArgs ??= true + options.logger ??= DEFAULT_CREATE_SERVER_OPTIONS.logger // Set defaults. @@ -73,8 +75,8 @@ export function resolveOptions( logger: options.logger ?? DEFAULT_CREATE_SERVER_OPTIONS.logger, }, - host: getAPIHost(), - port: getAPIPort(), + apiHost: getAPIHost(), + apiPort: getAPIPort(), } // Merge fastifyServerOptions. @@ -85,10 +87,10 @@ export function resolveOptions( if (options.parseArgs) { const { values } = parseArgs({ options: { - host: { + apiHost: { type: 'string', }, - port: { + apiPort: { type: 'string', short: 'p', }, @@ -96,21 +98,22 @@ export function resolveOptions( type: 'string', }, }, + strict: false, ...(args && { args }), }) - if (values.host && typeof values.host !== 'string') { - throw new Error('`host` must be a string') + if (values.apiHost && typeof values.apiHost !== 'string') { + throw new Error('`apiHost` must be a string') } - if (values.host) { - resolvedOptions.host = values.host + if (values.apiHost) { + resolvedOptions.apiHost = values.apiHost } - if (values.port) { - resolvedOptions.port = +values.port + if (values.apiPort) { + resolvedOptions.apiPort = +values.apiPort - if (isNaN(resolvedOptions.port)) { - throw new Error('`port` must be an integer') + if (isNaN(resolvedOptions.apiPort)) { + throw new Error('`apiPort` must be an integer') } } diff --git a/packages/api-server/src/watch.ts b/packages/api-server/src/watch.ts index d1d52046b346..bad8c36b43e9 100644 --- a/packages/api-server/src/watch.ts +++ b/packages/api-server/src/watch.ts @@ -138,7 +138,7 @@ const buildAndRestart = async ({ if (serverFile) { httpServerProcess = fork( serverFile, - ['--port', port.toString()], + ['--apiPort', port.toString()], forkOpts ) } else { diff --git a/packages/cli/src/commands/serve.js b/packages/cli/src/commands/serve.js index f0d5f84b7a83..653c511a6114 100644 --- a/packages/cli/src/commands/serve.js +++ b/packages/cli/src/commands/serve.js @@ -25,7 +25,7 @@ export const builder = async (yargs) => { .command({ command: '$0', description: bothServerCLIConfig.description, - builder: bothServerCLIConfig.builder(yargs), + builder: bothServerCLIConfig.builder, handler: async (argv) => { recordTelemetryAttributes({ command: 'serve', diff --git a/packages/cli/src/commands/serveHandler.js b/packages/cli/src/commands/serveHandler.js index 301fe8b24861..f5d19b6114ab 100644 --- a/packages/cli/src/commands/serveHandler.js +++ b/packages/cli/src/commands/serveHandler.js @@ -32,9 +32,9 @@ export const bothServerFileHandler = async (options) => { [ { name: 'api', - command: `yarn node ${path.join('dist', 'server.js')} --port ${ + command: `yarn node ${path.join('dist', 'server.js')} --apiPort ${ options.apiPort - } --host ${options.apiHost} --api-root-path ${options.apiRootPath}`, + } --apiHost ${options.apiHost} --apiRootPath ${options.apiRootPath}`, cwd: getPaths().api.base, prefixColor: 'cyan', }, @@ -66,19 +66,14 @@ export const bothServerFileHandler = async (options) => { } export const apiServerFileHandler = async (options) => { - await execa( - 'yarn', - [ - 'node', - 'server.js', - '--port', - options.port, - '--apiRootPath', - options.apiRootPath, - ], - { - cwd: getPaths().api.dist, - stdio: 'inherit', - } - ) + const args = ['node', 'server.js', '--apiRootPath', options.apiRootPath] + + if (options.port) { + args.push('--apiPort', options.port) + } + + await execa('yarn', args, { + cwd: getPaths().api.dist, + stdio: 'inherit', + }) } From 8b467685a7cdce55f8be6424793bc5e6ad450c0a Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 18:48:25 -0800 Subject: [PATCH 111/119] chore(docs): align v6 docs with the next branch (#10034) This PR checks out the v6.x docs from the next branch and deletes the v6.0 docs on this branch. This is just standard procedure when we release a major. The next branch has the latest v6 docs (before it was v6.0 to v6.4, but they've been compressed to v6.x), while the main branch has the latest canary docs. Before we release a major and make a new next branch, we want the latest version of the v6 docs so that we can continue serving them under that tag on the docs site. Most of the file changes are just moves because most docs received zero edits in minors 6.1 to 6.4. This is accomplished via `git checkout next -- docs/docs` and then undoing some changes, especially those to files in `docs/docs`. --- docs/docs/authentication.md | 23 +- docs/docs/router.md | 18 +- .../docs/tutorial/chapter0/what-is-redwood.md | 2 +- docs/docs/tutorial/chapter4/authentication.md | 4 +- docs/docs/tutorial/chapter7/rbac.md | 10 +- docs/docusaurus.config.ts | 2 +- docs/netlify.toml | 109 ++- docs/versioned_docs/version-6.0/seo-head.md | 152 ---- .../version-6.0/toast-notifications.md | 66 -- .../{version-6.0 => version-6.x}/a11y.md | 0 .../app-configuration-redwood-toml.md | 2 +- .../assets-and-files.md | 0 .../auth/auth0.md | 2 +- .../auth/azure.md | 0 .../auth/clerk.md | 16 +- .../auth/custom.md | 0 .../auth/dbauth.md | 4 +- .../auth/firebase.md | 0 .../auth/netlify.md | 0 .../auth/supabase.md | 0 .../auth/supertokens.md | 60 +- .../authentication.md | 12 +- .../{version-6.0 => version-6.x}/builds.md | 0 .../{version-6.0 => version-6.x}/cells.md | 2 +- .../cli-commands.md | 52 +- .../connection-pooling.md | 0 .../contributing-overview.md | 0 .../contributing-walkthrough.md | 0 .../{version-6.0 => version-6.x}/cors.md | 0 .../create-redwood-app.md | 2 +- .../custom-web-index.md | 2 +- .../data-migrations.md | 0 .../deploy/baremetal.md | 10 +- .../deploy/coherence.md | 2 +- .../deploy/edgio.md | 0 .../deploy/flightcontrol.md | 0 .../deploy/introduction.md | 0 .../deploy/netlify.md | 2 +- .../deploy/render.md | 0 .../deploy/serverless.md | 0 .../deploy/vercel.md | 15 + .../directives.md | 0 docs/versioned_docs/version-6.x/docker.md | 468 ++++++++++++ .../environment-variables.md | 0 .../{version-6.0 => version-6.x}/forms.md | 0 .../{version-6.0 => version-6.x}/graphql.md | 18 +- .../how-to/background-worker.md | 0 .../build-dashboards-fast-with-tremor.md | 0 .../how-to/custom-function.md | 0 .../how-to/dbauth-passwordless.md | 2 +- .../how-to/disable-api-database.md | 0 .../how-to/file-uploads.md | 0 .../how-to/gotrue-auth.md | 0 .../how-to/mocking-graphql-in-storybook.md | 0 .../how-to/oauth.md | 138 ++-- .../how-to/pagination.md | 0 .../how-to/role-based-access-control.md | 8 +- .../how-to/self-hosting-redwood.md | 2 +- .../how-to/sending-emails.md | 0 .../how-to/supabase-auth.md | 0 .../how-to/test-in-github-actions.md | 2 +- .../how-to/using-a-third-party-api.md | 0 .../how-to/using-nvm.md | 4 +- .../how-to/using-yarn.md | 2 +- .../how-to/windows-development-setup.md | 0 .../intro-to-servers.md | 2 +- .../introduction.md | 5 +- .../local-postgres-setup.md | 0 .../{version-6.0 => version-6.x}/logger.md | 0 docs/versioned_docs/version-6.x/mailer.md | 289 +++++++ .../mocking-graphql-requests.md | 0 .../{version-6.0 => version-6.x}/prerender.md | 4 +- .../project-configuration-dev-test-build.mdx | 63 +- .../quick-start.md | 2 +- docs/versioned_docs/version-6.x/realtime.md | 706 ++++++++++++++++++ .../redwoodrecord.md | 0 .../{version-6.0 => version-6.x}/router.md | 39 +- .../schema-relations.md | 2 +- .../{version-6.0 => version-6.x}/security.md | 0 docs/versioned_docs/version-6.x/seo-head.md | 356 +++++++++ .../serverless-functions.md | 17 +- .../{version-6.0 => version-6.x}/services.md | 12 +- .../{version-6.0 => version-6.x}/storybook.md | 0 .../{version-6.0 => version-6.x}/testing.md | 41 +- .../version-6.x/toast-notifications.md | 133 ++++ .../tutorial/afterword.md | 0 .../tutorial/chapter0/what-is-redwood.md | 24 +- .../tutorial/chapter1/file-structure.md | 0 .../tutorial/chapter1/first-page.md | 0 .../tutorial/chapter1/installation.md | 1 + .../tutorial/chapter1/layouts.md | 0 .../tutorial/chapter1/prerequisites.md | 17 +- .../tutorial/chapter1/second-page.md | 0 .../tutorial/chapter2/cells.md | 0 .../tutorial/chapter2/getting-dynamic.md | 2 +- .../tutorial/chapter2/routing-params.md | 4 +- .../tutorial/chapter2/side-quest.md | 0 .../tutorial/chapter3/forms.md | 0 .../tutorial/chapter3/saving-data.md | 2 +- .../tutorial/chapter4/authentication.md | 4 +- .../tutorial/chapter4/deployment.md | 2 +- .../tutorial/chapter5/first-story.md | 0 .../tutorial/chapter5/first-test.md | 0 .../tutorial/chapter5/storybook.md | 0 .../tutorial/chapter5/testing.md | 0 .../tutorial/chapter6/comment-form.md | 0 .../tutorial/chapter6/comments-schema.md | 2 +- .../tutorial/chapter6/multiple-comments.md | 0 .../tutorial/chapter6/the-redwood-way.md | 0 .../tutorial/chapter7/api-side-currentuser.md | 4 +- .../tutorial/chapter7/rbac.md | 8 +- .../tutorial/foreword.md | 2 +- .../tutorial/intermission.md | 4 +- .../typescript/generated-types.md | 33 +- .../typescript/introduction.md | 0 .../typescript/strict-mode.md | 0 .../typescript/utility-types.md | 0 .../vite-configuration.md | 0 .../{version-6.0 => version-6.x}/webhooks.md | 8 + ...idebars.json => version-6.x-sidebars.json} | 3 + docs/versions.json | 2 +- 121 files changed, 2518 insertions(+), 488 deletions(-) delete mode 100644 docs/versioned_docs/version-6.0/seo-head.md delete mode 100644 docs/versioned_docs/version-6.0/toast-notifications.md rename docs/versioned_docs/{version-6.0 => version-6.x}/a11y.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/app-configuration-redwood-toml.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/assets-and-files.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/auth0.md (94%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/azure.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/clerk.md (93%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/custom.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/dbauth.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/firebase.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/netlify.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/supabase.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/supertokens.md (58%) rename docs/versioned_docs/{version-6.0 => version-6.x}/authentication.md (96%) rename docs/versioned_docs/{version-6.0 => version-6.x}/builds.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/cells.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/cli-commands.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/connection-pooling.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/contributing-overview.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/contributing-walkthrough.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/cors.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/create-redwood-app.md (95%) rename docs/versioned_docs/{version-6.0 => version-6.x}/custom-web-index.md (96%) rename docs/versioned_docs/{version-6.0 => version-6.x}/data-migrations.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/baremetal.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/coherence.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/edgio.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/flightcontrol.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/introduction.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/netlify.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/render.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/serverless.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/vercel.md (88%) rename docs/versioned_docs/{version-6.0 => version-6.x}/directives.md (100%) create mode 100644 docs/versioned_docs/version-6.x/docker.md rename docs/versioned_docs/{version-6.0 => version-6.x}/environment-variables.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/forms.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/graphql.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/background-worker.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/build-dashboards-fast-with-tremor.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/custom-function.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/dbauth-passwordless.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/disable-api-database.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/file-uploads.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/gotrue-auth.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/mocking-graphql-in-storybook.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/oauth.md (91%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/pagination.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/role-based-access-control.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/self-hosting-redwood.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/sending-emails.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/supabase-auth.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/test-in-github-actions.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/using-a-third-party-api.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/using-nvm.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/using-yarn.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/windows-development-setup.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/intro-to-servers.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/introduction.md (91%) rename docs/versioned_docs/{version-6.0 => version-6.x}/local-postgres-setup.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/logger.md (100%) create mode 100644 docs/versioned_docs/version-6.x/mailer.md rename docs/versioned_docs/{version-6.0 => version-6.x}/mocking-graphql-requests.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/prerender.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/project-configuration-dev-test-build.mdx (84%) rename docs/versioned_docs/{version-6.0 => version-6.x}/quick-start.md (99%) create mode 100644 docs/versioned_docs/version-6.x/realtime.md rename docs/versioned_docs/{version-6.0 => version-6.x}/redwoodrecord.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/router.md (94%) rename docs/versioned_docs/{version-6.0 => version-6.x}/schema-relations.md (95%) rename docs/versioned_docs/{version-6.0 => version-6.x}/security.md (100%) create mode 100644 docs/versioned_docs/version-6.x/seo-head.md rename docs/versioned_docs/{version-6.0 => version-6.x}/serverless-functions.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/services.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/storybook.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/testing.md (98%) create mode 100644 docs/versioned_docs/version-6.x/toast-notifications.md rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/afterword.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter0/what-is-redwood.md (91%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/file-structure.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/first-page.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/installation.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/layouts.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/prerequisites.md (89%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/second-page.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/cells.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/getting-dynamic.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/routing-params.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/side-quest.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter3/forms.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter3/saving-data.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter4/authentication.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter4/deployment.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/first-story.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/first-test.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/storybook.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/testing.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/comment-form.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/comments-schema.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/multiple-comments.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/the-redwood-way.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter7/api-side-currentuser.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter7/rbac.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/foreword.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/intermission.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/generated-types.md (84%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/introduction.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/strict-mode.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/utility-types.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/vite-configuration.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/webhooks.md (98%) rename docs/versioned_sidebars/{version-6.0-sidebars.json => version-6.x-sidebars.json} (99%) diff --git a/docs/docs/authentication.md b/docs/docs/authentication.md index cef3754ea978..88506057eb2f 100644 --- a/docs/docs/authentication.md +++ b/docs/docs/authentication.md @@ -5,7 +5,7 @@ description: Set up an authentication provider # Authentication Redwood has integrated auth end to end, from the web side to the api side. -On the web side, the router can protect pages via the `Private` component (or the `Set` component via the `private` prop), and even restrict access at the role-level. +On the web side, the router can protect pages via the `PrivateSet` component, and even restrict access at the role-level. And if you'd prefer to work with the primitives, the `useAuth` hook exposes all the pieces to build the experience you want. Likewise, the api side is locked down by default: all SDLs are generated with the `@requireAuth` directive, ensuring that making things publicly available is something that you opt in to rather than out of. @@ -117,11 +117,11 @@ Much of what the functions it returns do is self explanatory, but the options th ### Protecting routes -You can require that a user be authenticated to navigate to a route by wrapping it in the `Private` component or the `Set` component with the `private` prop set to `true`. +You can require that a user be authenticated to navigate to a route by wrapping it in the `PrivateSet` component. An unauthenticated user will be redirected to the route specified in either component's `unauthenticated` prop: ```tsx title="web/src/Routes.tsx" -import { Router, Route, Private } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -129,21 +129,20 @@ const Routes = () => { <Route path="/" page={HomePage} name="home" /> <Route path="/login" page={LoginPage} name="login" /> - // highlight-start + // highlight-next-line <PrivateSet unauthenticated="login"> - // highlight-end <Route path="/admin" page={AdminPage} name="admin" /> <Route path="/secret-page" page={SecretPage} name="secret" /> - <PrivateSet> + </PrivateSet> </Router> ) } ``` -You can also restrict access by role by passing a role or an array of roles to the `Private` or `Set` component's `hasRole` prop: +You can also restrict access by role by passing a role or an array of roles to the `PrivateSet` component's `hasRole` prop: ```tsx title="web/src/Routes.tsx" -import { Router, Route, Private, Set } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -154,17 +153,17 @@ const Routes = () => { <PrivateSet unauthenticated="login"> <Route path="/secret-page" page={SecretPage} name="secret" /> - <PrivateSet> + </PrivateSet> // highlight-next-line - <Set private unauthenticated="forbidden" hasRole="admin"> + <PrivateSet unauthenticated="forbidden" hasRole="admin"> <Route path="/admin" page={AdminPage} name="admin" /> - </Set> + </PrivateSet> // highlight-next-line <PrivateSet unauthenticated="forbidden" hasRole={['author', 'editor']}> <Route path="/posts" page={PostsPage} name="posts" /> - <PrivateSet> + </PrivateSet> </Router> ) } diff --git a/docs/docs/router.md b/docs/docs/router.md index f07df829f4ff..aa606ac91909 100644 --- a/docs/docs/router.md +++ b/docs/docs/router.md @@ -44,7 +44,7 @@ The `path` prop specifies the URL path to match, starting with the beginning sla ## Private Routes -Some pages should only be visible to authenticated users. +Some pages should only be visible to authenticated users. We support this using the `PrivateSet` component. Read more [further down](#privateset). ## Sets of Routes @@ -87,7 +87,7 @@ Conceptually, this fits with how we think about Context and Layouts as things th There's a lot of flexibility here. You can even nest `Sets` to great effect: ```jsx title="Routes.js" -import { Router, Route, Set, Private } from '@redwoodjs/router' +import { Router, Route, Set } from '@redwoodjs/router' import BlogContext from 'src/contexts/BlogContext' import BlogLayout from 'src/layouts/BlogLayout' import BlogNavLayout from 'src/layouts/BlogNavLayout' @@ -132,7 +132,7 @@ becomes... A `PrivateSet` makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the `PrivateSet`, they'll be redirected to the Route passed as the `PrivateSet`'s `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. -Here's an example of how you'd use a private set: +Here's an example of how you'd use a `PrivateSet`: ```jsx title="Routes.js" <Router> @@ -145,7 +145,7 @@ Here's an example of how you'd use a private set: For more fine-grained control, you can specify `roles` (which takes a string for a single role or an array of roles), and the router will check to see that the current user is authorized before giving them access to the Route. If they're not, they will be redirected to the page specified in the `unauthenticated` prop, such as a "forbidden" page. Read more about Role-based Access Control in Redwood [here](how-to/role-based-access-control.md). -To protect `Private` routes for access by a single role: +To protect private routes for access by a single role: ```jsx title="Routes.js" <Router> @@ -157,7 +157,7 @@ To protect `Private` routes for access by a single role: </Router> ``` -To protect `Private` routes for access by multiple roles: +To protect private routes for access by multiple roles: ```jsx title="Routes.js" <Router> @@ -613,7 +613,7 @@ Redwood will detect your explicit import and refrain from splitting that page in Because lazily-loaded pages can take a non-negligible amount of time to load (depending on bundle size and network connection), you may want to show a loading indicator to signal to the user that something is happening after they click a link. -In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `Private` component. +In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `PrivateSet` component. ```jsx title="Routes.js" import SkeletonLoader from 'src/components/SkeletonLoader' @@ -659,7 +659,7 @@ When the lazy-loaded page is loading, `PageLoadingContext.Consumer` will pass `{ Let's say you have a dashboard area on your Redwood app, which can only be accessed after logging in. When Redwood Router renders your private page, it will first fetch the user's details, and only render the page if it determines the user is indeed logged in. -In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your private `<Route>` or `<PrivateSet>` component: +In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your `PrivateSet` component: ```jsx //Routes.js @@ -675,7 +675,7 @@ In order to display a loader while auth details are being retrieved you can add <Route path="/dashboard" page={DashboardHomePage} name="dashboard" /> {/* other routes */} - <PrivateSet> + </PrivateSet> </Router> ``` @@ -762,7 +762,7 @@ Note that if you're copy-pasting this example, it uses [Tailwind CSS](https://ta :::note Can I customize the development one? -As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page - but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). +As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page, but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). ::: diff --git a/docs/docs/tutorial/chapter0/what-is-redwood.md b/docs/docs/tutorial/chapter0/what-is-redwood.md index cae5b7f0565f..e779cafefdf2 100644 --- a/docs/docs/tutorial/chapter0/what-is-redwood.md +++ b/docs/docs/tutorial/chapter0/what-is-redwood.md @@ -31,7 +31,7 @@ You can start them both with a single command: `yarn redwood dev` When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declarative Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: ```jsx -import { Set, Router, Route } from '@redwoodjs/router' +import { Route, Router, Set, PrivateSet } from '@redwoodjs/router' import ApplicationLayout from 'src/layouts/ApplicationLayout' import { useAuth } from './auth' diff --git a/docs/docs/tutorial/chapter4/authentication.md b/docs/docs/tutorial/chapter4/authentication.md index 08bcc2228812..c42b3fb7d393 100644 --- a/docs/docs/tutorial/chapter4/authentication.md +++ b/docs/docs/tutorial/chapter4/authentication.md @@ -202,7 +202,7 @@ Going to the admin section now prevents a non-logged in user from seeing posts, ```jsx title="web/src/Routes.jsx" // highlight-next-line -import { Private, Router, Route, Set } from '@redwoodjs/router' +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' import ScaffoldLayout from 'src/layouts/ScaffoldLayout' import BlogLayout from 'src/layouts/BlogLayout' @@ -241,7 +241,7 @@ export default Routes ```jsx title="web/src/Routes.tsx" // highlight-next-line -import { Private, Router, Route, Set } from '@redwoodjs/router' +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' import ScaffoldLayout from 'src/layouts/ScaffoldLayout' import BlogLayout from 'src/layouts/BlogLayout' diff --git a/docs/docs/tutorial/chapter7/rbac.md b/docs/docs/tutorial/chapter7/rbac.md index 605409e86f0c..490b98a4d5ac 100644 --- a/docs/docs/tutorial/chapter7/rbac.md +++ b/docs/docs/tutorial/chapter7/rbac.md @@ -156,21 +156,21 @@ export const hasRole = (roles: AllowedRoles): boolean => { ### Restricting Access via Routes -The easiest way to prevent access to an entire URL is via the Router. The `<Private>` component takes a prop `roles` in which you can give a list of only those role(s) that should have access: +The easiest way to prevent access to an entire URL is via the Router. The `<PrivateSet>` component takes a prop `roles` in which you can give a list of only those role(s) that should have access: <Tabs groupId="js-ts"> <TabItem value="js" label="JavaScript"> ```jsx title="web/src/Routes.jsx" // highlight-next-line -<Private unauthenticated="home" roles="admin"> +<PrivateSet unauthenticated="home" roles="admin"> <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> <Route path="/admin/posts" page={PostPostsPage} name="posts" /> </Set> -</Private> +</PrivateSet> ``` </TabItem> @@ -178,14 +178,14 @@ The easiest way to prevent access to an entire URL is via the Router. The `<Priv ```tsx title="web/src/Routes.tsx" // highlight-next-line -<Private unauthenticated="home" roles="admin"> +<PrivateSet unauthenticated="home" roles="admin"> <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> <Route path="/admin/posts" page={PostPostsPage} name="posts" /> </Set> -</Private> +</PrivateSet> ``` </TabItem> diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 2ec259ca2192..ff65baf284ae 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -34,7 +34,7 @@ const config: Config = { indexName: 'learn-redwood', contextualSearch: true, searchParameters: {}, - externalUrlRegex: 'https://learn-redwood.netlify.app', + // externalUrlRegex: 'https://learn-redwood.netlify.app', }, navbar: { title: 'RedwoodJS', diff --git a/docs/netlify.toml b/docs/netlify.toml index 2f07a9e47bc2..760ef715d5ad 100644 --- a/docs/netlify.toml +++ b/docs/netlify.toml @@ -214,7 +214,7 @@ to = "/docs/authentication#self-hosted-auth-installation-and-setup" status = 301 -# v1.0-v1.5 redirects (to v1.x) +# v1.0-v1.5 redirects [[redirects]] from = "/docs/1.0/*" @@ -246,7 +246,7 @@ to = "/docs/1.x/:splat" status = 301 -# v2.0-v2.2 redirects (to v2.x) +# v2.0-v2.2 redirects [[redirects]] from = "/docs/2.0/*" @@ -263,7 +263,7 @@ to = "/docs/2.x/:splat" status = 301 -# v3.0-v3.2 redirects (to v3.x) +# v3.0-v3.2 redirects [[redirects]] from = "/docs/3.0/*" @@ -280,6 +280,102 @@ to = "/docs/3.x/:splat" status = 301 +# v4 redirects + +[[redirects]] + from = "/docs/4.0/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.1/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.2/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.3/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.4/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.5/*" + to = "/docs/4.x/:splat" + status = 301 + +# v5 redirects + +[[redirects]] + from = "/docs/5.0/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.1/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.2/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.3/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.4/*" + to = "/docs/5.x/:splat" + status = 301 + +# v6.0-v6.6 redirects + +[[redirects]] + from = "/docs/6.0/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.1/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.2/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.3/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.4/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.5/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.6/*" + to = "/docs/:splat" + status = 301 + # Redirects for "Configuring Fastify" after the server file was released in v7 [[redirects]] @@ -296,3 +392,10 @@ from = "/docs/app-configuration-redwood-toml#how-to-configure-fastify-to-accept-file-uploads" to = "/docs/docker#configuring-the-server" status = 301 + +# This doc was moved in v7 as a part of https://github.com/redwoodjs/redwood/pull/9416. + +[[redirects]] + from = "/docs/mocking-graphql-requests" + to = "/docs/canary/graphql/mocking-graphql-requests" + status = 301 diff --git a/docs/versioned_docs/version-6.0/seo-head.md b/docs/versioned_docs/version-6.0/seo-head.md deleted file mode 100644 index 4b50350c6cdd..000000000000 --- a/docs/versioned_docs/version-6.0/seo-head.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -description: Use meta tags to set page info for SEO ---- - -# SEO & Meta tags - -## Add app title -You certainly want to change the title of your Redwood app. -You can start by adding or modify `title` inside `redwood.toml` - -```diff -[web] -- title = "Redwood App" -+ title = "My Cool App" - port = 8910 - apiUrl = "/.redwood/functions" -``` -This title (the app title) is used by default for all your pages if you don't define another one. -It will also be use for the title template ! -### Title template -Now that you have the app title set, you probably want some consistence with the page title, that's what the title template is for. - -Add `titleTemplate` as a prop for `RedwoodProvider` to have a title template for every pages - -In _web/src/App.\{tsx,js\}_ -```diff -- <RedwoodProvider> -+ <RedwoodProvider titleTemplate="%PageTitle | %AppTitle"> - /* ... */ - <RedwoodProvider /> -``` - -You can write the format you like. - -_Examples :_ -```jsx -"%PageTitle | %AppTitle" => "Home Page | Redwood App" - -"%AppTitle · %PageTitle" => "Redwood App · Home Page" - -"%PageTitle : %AppTitle" => "Home Page : Redwood App" -``` - -So now in your page you only need to write the title of the page. - -## Adding to page `<head>` -So you want to change the title of your page, or add elements to the `<head>` of the page? We've got you! - - -Let's say you want to change the title of your About page, -Redwood provides a built in `<Head>` component, which you can use like this - - -In _AboutPage/AboutPage.\{tsx,js\}_ -```diff -+import { Head } from '@redwoodjs/web' - -const AboutPage = () => { - return ( - <div> - <h2>AboutPage</h2> -+ <Head> -+ <title>About the team -+ -``` - -You can include any valid `` tag in here that you like, but just to make things easier we also have a utility component [MetaTags](#setting-meta-tags-open-graph-directives). - -### What about nested tags? -Redwood uses [react-helmet-async](https://github.com/staylor/react-helmet-async) underneath, which will use the tags furthest down your component tree. - -For example, if you set title in your Layout, and a title in your Page, it'll render the one in Page - this way you can override the tags you wish, while sharing the tags defined in Layout. - - -> **Side note** -> for these headers to appear to bots and scrapers e.g. for twitter to show your title, you have to make sure your page is prerendered -> If your content is static you can use Redwood's built in [Prerender](prerender.md). For dynamic tags, check the [Dynamic head tags](#dynamic-tags) - -## Setting meta tags / open graph directives -Often we want to set more than just the title - most commonly to set "og" headers. Og standing for -[open graph](https://ogp.me/) of course. - -Redwood provides a convenience component `` to help you get all the relevant tags with one go (but you can totally choose to do them yourself) - -Here's an example setting some common headers, including how to set an `og:image` -```jsx -import { MetaTags } from '@redwoodjs/web' - -const AboutPage = () => { - return ( -
-

AboutPage

- -

This is the about page!

-
- ) -} - -export default AboutPage -``` - -This is great not just for link unfurling on say Facebook or Slack, but also for SEO. Take a look at the [source](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/MetaTags.tsx#L83) if you're curious what tags get set here. - - -## Dynamic tags -Great - so far we can see the changes, and bots will pick up our tags if we've prerendered the page, but what if I want to set the header based on the output of the Cell? - -> **Prerendering cells**
-> As of v3.x, Redwood supports prerendering your [Cells](https://redwoodjs.com/docs/cells) with the data you were querying. For more information please refer [to this section](https://redwoodjs.com/docs/prerender#cell-prerendering). - - -Let's say in our PostCell, we want to set the title to match the Post. -```jsx -import Post from 'src/components/Post/Post' - -export const QUERY = gql` - query FindPostById($id: Int!) { - post: post(id: $id) { - title - snippet - author { - name - } - } - } -` - -export const Loading = /* ... */ - -export const Empty = /* ... */ - -export const Success = ({ post }) => { - return ( - <> - - - - ) -} -``` -Once the success component renders, it'll update your page's title and set the relevant meta tags for you! diff --git a/docs/versioned_docs/version-6.0/toast-notifications.md b/docs/versioned_docs/version-6.0/toast-notifications.md deleted file mode 100644 index 0dab206bd67b..000000000000 --- a/docs/versioned_docs/version-6.0/toast-notifications.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -description: Toast notifications with react-hot-toast ---- - -# Toast Notifications - -Did you know that those little popup notifications that you sometimes see at the top of a page after you've performed an action are affectionately known as "toast" notifications? -Because they pop up like a piece of toast from a toaster! - -![Example toast animation](https://user-images.githubusercontent.com/300/110032806-71024680-7ced-11eb-8d69-7f462929815e.gif) - -Redwood supports these notifications out of the box thanks to the [react-hot-toast](https://react-hot-toast.com/) package. -We'll refer you to their [docs](https://react-hot-toast.com/docs) since they're very thorough, but here's enough to get you going. - -### Add the `Toaster` Component - -To render toast notifications, start by adding the `Toaster` component. -It's usually better to add it at the App or Layout-level than the Page: - -```jsx title="web/src/layouts/MainLayout/MainLayout.js" -// highlight-next-line -import { Toaster } from '@redwoodjs/web/toast' - -const MainLayout = ({ children }) => { - return ( - <> - // highlight-next-line - -
{children}
- - ) -} - -export default MainLayout -``` - -### Call the `toast` function - -To render a toast notification, call the `toast` function or one of its methods: - -```jsx title="web/src/components/PostForm/PostForm.js" -// highlight-next-line -import { toast } from '@redwoodjs/web/toast' - -// ... - -const PostForm = () => { - const onSubmit = () => { - try { - // Code to save a record... - // highlight-next-line - toast('User created!') - } catch (e) { - // There's also methods for default styling: - // highlight-next-line - toast.error("Error creating post...") - } - } - - return ( - // JSX... - ) -}) - -export default PostForm -``` diff --git a/docs/versioned_docs/version-6.0/a11y.md b/docs/versioned_docs/version-6.x/a11y.md similarity index 100% rename from docs/versioned_docs/version-6.0/a11y.md rename to docs/versioned_docs/version-6.x/a11y.md diff --git a/docs/versioned_docs/version-6.0/app-configuration-redwood-toml.md b/docs/versioned_docs/version-6.x/app-configuration-redwood-toml.md similarity index 99% rename from docs/versioned_docs/version-6.0/app-configuration-redwood-toml.md rename to docs/versioned_docs/version-6.x/app-configuration-redwood-toml.md index c009b12d1ac1..fee88a7b9cdc 100644 --- a/docs/versioned_docs/version-6.0/app-configuration-redwood-toml.md +++ b/docs/versioned_docs/version-6.x/app-configuration-redwood-toml.md @@ -290,7 +290,7 @@ api | 🗒 Custom api | "--------------------------e66d9a27b7c2b271\r\nContent-Disposition: attachment; name=\"image\"; filename=\"favicon.png\"\r\nContent-Type: image/png\r\n\r\n�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000 \u0000\u0000\u0000`�\r\n--------------------------e66d9a27b7c2b271--\r\n" ``` -:::caution File uploads only work in a serverful deploy +:::warning File uploads only work in a serverful deploy Serverless functions on Netlify or Vercel do not use this Fastify configuration. They also have memory and execution time limits that don't lend themselves to handling file uploads of any practical size. diff --git a/docs/versioned_docs/version-6.0/assets-and-files.md b/docs/versioned_docs/version-6.x/assets-and-files.md similarity index 100% rename from docs/versioned_docs/version-6.0/assets-and-files.md rename to docs/versioned_docs/version-6.x/assets-and-files.md diff --git a/docs/versioned_docs/version-6.0/auth/auth0.md b/docs/versioned_docs/version-6.x/auth/auth0.md similarity index 94% rename from docs/versioned_docs/version-6.0/auth/auth0.md rename to docs/versioned_docs/version-6.x/auth/auth0.md index b7a47f6f1ae2..a028f9418152 100644 --- a/docs/versioned_docs/version-6.0/auth/auth0.md +++ b/docs/versioned_docs/version-6.x/auth/auth0.md @@ -28,7 +28,7 @@ But where in your Redwood app exactly? Auth0 needs to know, and this setting tells it. We'll keep things simple for now and make it "http://localhost:8910", but feel free to configure it as you wish. -Paste "http://localhost:8910" in the text area below "Allowed Callback URLs", then click "Save Changes" at the bottom of the page. +Paste "http://localhost:8910" in the text areas below "Allowed Callback URLs", "Allowed Logout URLs" and "Allowed Web Origins" then click "Save Changes" at the bottom of the page. Copy this one over to your project's `.env` file too, as `AUTH0_REDIRECT_URI`. Ok, just one more to go: under "Applications" in the nav on the left, click "APIs". diff --git a/docs/versioned_docs/version-6.0/auth/azure.md b/docs/versioned_docs/version-6.x/auth/azure.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/azure.md rename to docs/versioned_docs/version-6.x/auth/azure.md diff --git a/docs/versioned_docs/version-6.0/auth/clerk.md b/docs/versioned_docs/version-6.x/auth/clerk.md similarity index 93% rename from docs/versioned_docs/version-6.0/auth/clerk.md rename to docs/versioned_docs/version-6.x/auth/clerk.md index ed71df136f8e..06266d0b4774 100644 --- a/docs/versioned_docs/version-6.0/auth/clerk.md +++ b/docs/versioned_docs/version-6.x/auth/clerk.md @@ -4,7 +4,7 @@ sidebar_label: Clerk # Clerk Authentication -:::caution Did you set up Clerk a while ago? +:::warning Did you set up Clerk a while ago? If you set up Clerk a while ago, you may be using a deprecated `authDecoder` that's subject to rate limiting. This decoder will be removed in the next major. @@ -56,10 +56,15 @@ Lastly, in your project's `redwood.toml` file, include `CLERK_PUBLISHABLE_KEY` i ``` That should be enough; now, things should just work. -Let's make sure: if this is a brand new project, generate a home page. +Let's make sure: if this is a brand new project, generate a home page: + +```bash +yarn rw g page Home / +``` + There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: -```tsx title="web/src/pages/HomePage.tsx" +```tsx title="web/src/pages/HomePage/HomePage.tsx" import { useAuth } from 'src/auth' const HomePage = () => { @@ -76,11 +81,8 @@ const HomePage = () => { } ``` -Clicking sign up should open a sign-up box: - -image +Clicking sign up should open a sign-up box and after you sign up, you should see `{"isAuthenticated":true}` on the page. -After you sign up, you should see `{"isAuthenticated":true}` on the page. ## Customizing the session token diff --git a/docs/versioned_docs/version-6.0/auth/custom.md b/docs/versioned_docs/version-6.x/auth/custom.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/custom.md rename to docs/versioned_docs/version-6.x/auth/custom.md diff --git a/docs/versioned_docs/version-6.0/auth/dbauth.md b/docs/versioned_docs/version-6.x/auth/dbauth.md similarity index 99% rename from docs/versioned_docs/version-6.0/auth/dbauth.md rename to docs/versioned_docs/version-6.x/auth/dbauth.md index 01d8c1d28f1e..b87d4cf3a9f3 100644 --- a/docs/versioned_docs/version-6.0/auth/dbauth.md +++ b/docs/versioned_docs/version-6.x/auth/dbauth.md @@ -337,7 +337,7 @@ yarn rw g secret ``` Note that the secret that's output is _not_ appended to your `.env` file or anything else, it's merely output to the screen. You'll need to put it in the right place after that. -:::caution .env and Version Control +:::warning .env and Version Control The `.env` file is set to be ignored by git and not committed to version control. There is another file, `.env.defaults`, which is meant to be safe to commit and contain simple ENV vars that your dev team can share. The encryption key for the session cookie is NOT one of these shareable vars! @@ -475,7 +475,7 @@ model UserCredential { Run `yarn rw prisma migrate dev` to apply the changes to your database. -:::caution Do Not Allow GraphQL Access to `UserCredential` +:::warning Do Not Allow GraphQL Access to `UserCredential` As you can probably tell by the name, this new model contains secret credential info for the user. You **should not** make this data publicly available by adding an SDL file to `api/src/graphql`. diff --git a/docs/versioned_docs/version-6.0/auth/firebase.md b/docs/versioned_docs/version-6.x/auth/firebase.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/firebase.md rename to docs/versioned_docs/version-6.x/auth/firebase.md diff --git a/docs/versioned_docs/version-6.0/auth/netlify.md b/docs/versioned_docs/version-6.x/auth/netlify.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/netlify.md rename to docs/versioned_docs/version-6.x/auth/netlify.md diff --git a/docs/versioned_docs/version-6.0/auth/supabase.md b/docs/versioned_docs/version-6.x/auth/supabase.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/supabase.md rename to docs/versioned_docs/version-6.x/auth/supabase.md diff --git a/docs/versioned_docs/version-6.0/auth/supertokens.md b/docs/versioned_docs/version-6.x/auth/supertokens.md similarity index 58% rename from docs/versioned_docs/version-6.0/auth/supertokens.md rename to docs/versioned_docs/version-6.x/auth/supertokens.md index d7d37bd0d740..8b0b6b97ca8a 100644 --- a/docs/versioned_docs/version-6.0/auth/supertokens.md +++ b/docs/versioned_docs/version-6.x/auth/supertokens.md @@ -11,18 +11,49 @@ yarn rw setup auth supertokens ``` This installs all the packages, writes all the files, and makes all the code modifications you need. + +:::info + +You may have noticed that in `api/src/functions/auth.ts` there's an import from `'supertokens-node/framework/awsLambda'`. This is fine, even if your app isn't running in a serverless environment like AWS Lambda. In "serverful" environments, Redwood automatically handles the translation between Fastify's request and reply objects and functions' AWS Lambda signature. + +::: + For a detailed explanation of all the api- and web-side changes that aren't exclusive to SuperTokens, see the top-level [Authentication](../authentication.md) doc. For now, let's focus on SuperTokens's side of things. When you run the setup command it configures your app to support both email+password logins as well as social auth logins (Apple, GitHub and Google). Working with those social auth logins does require quite a few environment variables. And SuperTokens itself needs a couple variables too. Thankfully SuperTokens makes this very easy to setup as they provide values we can use for testing. -So just copy this to your project's `.env` file. +# Environment variables -```bash title=".env" +The environment variables have to be added either to your project's `.env` file (when running in development environment), or to the environment variables of your hosting provider (when running in production). + +## Base setup + +```bash +SUPERTOKENS_APP_NAME="Redwoodjs App" # this will be used in the email template for password reset or email verification emails. SUPERTOKENS_JWKS_URL=http://localhost:8910/.redwood/functions/auth/jwt/jwks.json +SUPERTOKENS_CONNECTION_URI=https://try.supertokens.io # set to the correct connection uri +``` + +## Production setup + +Assuming that your web side is hosted on `https://myapp.com`: + +```bash +SUPERTOKENS_WEBSITE_DOMAIN=https://myapp.com +SUPERTOKENS_JWKS_URL=https://myapp.com/.redwood/functions/auth/jwt/jwks.json +``` -SUPERTOKENS_CONNECTION_URI=https://try.supertokens.io +## Managed Supertokens service setup +```bash +SUPERTOKENS_API_KEY=your-api-key # The value can be omitted when self-hosting Supertokens +``` + +## Social login setup +The following environment variables have to be set up (depending on the social login options): + +```bash SUPERTOKENS_APPLE_CLIENT_ID=4398792-io.supertokens.example.service SUPERTOKENS_APPLE_SECRET_KEY_ID=7M48Y4RYDL SUPERTOKENS_APPLE_SECRET_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgu8gXs+XYkqXD6Ala9Sf/iJXzhbwcoG5dMh1OonpdJUmgCgYIKoZIzj0DAQehRANCAASfrvlFbFCYqn3I2zeknYXLwtH30JuOKestDbSfZYxZNMqhF/OzdZFTV0zc5u5s3eN+oCWbnvl0hM+9IW0UlkdA\n-----END PRIVATE KEY----- @@ -33,7 +64,24 @@ SUPERTOKENS_GOOGLE_CLIENT_ID=1060725074195-kmeum4crr01uirfl2op9kd5acmi9jutn.apps SUPERTOKENS_GOOGLE_CLIENT_SECRET=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 ``` -That should be enough; now, things should just work. +## `redwood.toml` setup + +Make sure to modify `redwood.toml` to pass the required environment variables to the web side: + +```toml +[web] +... +includeEnvironmentVariables = [ + 'SUPERTOKENS_WEBSITE_DOMAIN', + 'SUPERTOKENS_API_DOMAIN', + 'SUPERTOKENS_API_GATEWAY_PATH', + 'SUPERTOKENS_APP_NAME' +] +``` + + +# Page setup + Let's make sure: if this is a brand new project, generate a home page. There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: @@ -65,3 +113,7 @@ Clicking sign up should navigate you to `/auth` where SuperToken's default login SuperTokens default UI After you sign up, you should be redirected back to your Redwood app, and you should see `{"isAuthenticated":true}` on the page. + +## Troubleshooting + +If going to `http://localhost:8910/auth` results in the plain Javascript file being served instead of the expected auth page, rename the `web/src/auth.tsx` file to `web/src/authentication.tsx`, and update the imports (related to https://github.com/redwoodjs/redwood/issues/9740). diff --git a/docs/versioned_docs/version-6.0/authentication.md b/docs/versioned_docs/version-6.x/authentication.md similarity index 96% rename from docs/versioned_docs/version-6.0/authentication.md rename to docs/versioned_docs/version-6.x/authentication.md index d026aa91bb17..88506057eb2f 100644 --- a/docs/versioned_docs/version-6.0/authentication.md +++ b/docs/versioned_docs/version-6.x/authentication.md @@ -5,7 +5,7 @@ description: Set up an authentication provider # Authentication Redwood has integrated auth end to end, from the web side to the api side. -On the web side, the router can protect pages via the `Private` component (or the `Set` component via the `private` prop), and even restrict access at the role-level. +On the web side, the router can protect pages via the `PrivateSet` component, and even restrict access at the role-level. And if you'd prefer to work with the primitives, the `useAuth` hook exposes all the pieces to build the experience you want. Likewise, the api side is locked down by default: all SDLs are generated with the `@requireAuth` directive, ensuring that making things publicly available is something that you opt in to rather than out of. @@ -129,10 +129,8 @@ const Routes = () => { - // highlight-start + // highlight-next-line - {/* Or... */} - // highlight-end @@ -144,7 +142,7 @@ const Routes = () => { You can also restrict access by role by passing a role or an array of roles to the `PrivateSet` component's `hasRole` prop: ```tsx title="web/src/Routes.tsx" -import { Router, Route, PrivateSet, Set } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -158,9 +156,9 @@ const Routes = () => { // highlight-next-line - + - + // highlight-next-line diff --git a/docs/versioned_docs/version-6.0/builds.md b/docs/versioned_docs/version-6.x/builds.md similarity index 100% rename from docs/versioned_docs/version-6.0/builds.md rename to docs/versioned_docs/version-6.x/builds.md diff --git a/docs/versioned_docs/version-6.0/cells.md b/docs/versioned_docs/version-6.x/cells.md similarity index 98% rename from docs/versioned_docs/version-6.0/cells.md rename to docs/versioned_docs/version-6.x/cells.md index 20c92ace2f37..0a7377cd6b54 100644 --- a/docs/versioned_docs/version-6.0/cells.md +++ b/docs/versioned_docs/version-6.x/cells.md @@ -409,4 +409,4 @@ export const Cell = () => { That's a lot of code. A lot of imperative code too. -We're basically just dumping the contents of [createCell.tsx](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/createCell.tsx) into this file. Can you imagine having to do this every time you wanted to fetch data that might be delayed in responding? Yikes. +We're basically just dumping the contents of [createCell.tsx](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/cell/createCell.tsx) into this file. Can you imagine having to do this every time you wanted to fetch data that might be delayed in responding? Yikes. diff --git a/docs/versioned_docs/version-6.0/cli-commands.md b/docs/versioned_docs/version-6.x/cli-commands.md similarity index 97% rename from docs/versioned_docs/version-6.0/cli-commands.md rename to docs/versioned_docs/version-6.x/cli-commands.md index c6fa2b18688c..0215aaa8b2ea 100644 --- a/docs/versioned_docs/version-6.0/cli-commands.md +++ b/docs/versioned_docs/version-6.x/cli-commands.md @@ -290,7 +290,7 @@ The following command will build, apply Prisma DB migrations, and skip data migr yarn redwood deploy netlify --no-data-migrate ``` -:::caution +:::warning While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. @@ -771,7 +771,7 @@ $ /redwood-app/node_modules/.bin/redwood g layout user Done in 1.00s. ``` -A layout will just export it's children: +A layout will just export its children: ```jsx title="./web/src/layouts/UserLayout/UserLayout.test.js" const UserLayout = ({ children }) => { @@ -1722,6 +1722,7 @@ yarn redwood setup | `deploy` | Set up a deployment configuration for a provider | | `generator` | Copy default Redwood generator templates locally for customization | | `i18n` | Set up i18n | +| `package` | Peform setup actions by running a third-party npm package | | `tsconfig` | Add relevant tsconfig so you can start using TypeScript | | `ui` | Set up a UI design or style library | | `webpack` | Set up a webpack config file in your project so you can add custom config | @@ -1779,7 +1780,7 @@ yarn redwood setup cache ### setup custom-web-index -:::caution This command only applies to projects using Webpack +:::warning This command only applies to projects using Webpack As of v6, all Redwood projects use Vite by default. When switching projects to Vite, we made the decision to add the the entry file, `web/src/entry.client.{jsx,tsx}`, back to projects. @@ -1903,6 +1904,51 @@ In order to use [Netlify Dev](https://www.netlify.com/products/dev/) you need to > Note: To detect the RedwoodJS framework, please use netlify-cli v3.34.0 or greater. +### setup mailer + +This command adds the necessary packages and files to get started using the RedwoodJS mailer. By default it also creates an example mail template which can be skipped with the `--skip-examples` flag. + +``` +yarn redwood setup mailer +``` + +| Arguments & Options | Description | +| :---------------------- | :----------------------------- | +| `--force, -f` | Overwrite existing files | +| `--skip-examples` | Do not include example content, such as a React email template | + +### setup package + +This command takes a published npm package that you specify, performs some compatibility checks, and then executes its bin script. This allows you to use third-party packages that can provide you with an easy-to-use setup command for the particular functionality they provide. + +This command behaves similarly to `yarn dlx` but will attempt to confirm compatibility between the package you are attempting to run and the current version of Redwood you are running. You can bypass this check by passing the `--force` flag if you feel you understand any potential compatibility issues. + +``` +yarn redwood setup package +``` + +| Arguments & Options | Description | +| :------------------ | :----------------------- | +| `--force, -f` | Forgo compatibility checks | + +**Usage** + +Run the made up `@redwoodjs/setup-example` package: +```bash +~/redwood-app$ yarn rw setup package @redwoodjs/setup-example +``` + +Run the same package but using a particular npm tag and avoiding any compatibility checks: +```bash +~/redwood-app$ yarn rw setup package @redwoodjs/setup-example@beta --force +``` + +**Compatibility Checks** + +We perform a simple compatibility check in an attempt to make you aware of potential compatibility issues with setup packages you might wish to run. This works by examining the version of `@redwoodjs/core` you are using within your root `package.json`. We compare this value with a compatibility range the npm package specifies in the `engines.redwoodjs` field of its own `package.json`. If the version of `@redwoodjs/core` you are using falls outside of the compatibility range specified by the package you are attempting to run, we will warn you and ask you to confirm that you wish to continue. + +It's the author of the npm package's responsibility to specify the correct compatibility range, so **you should always research the packages you use with this command**. Especially since they will be executing code on your machine! + ### setup tsconfig Add a `tsconfig.json` to both the web and api sides so you can start using [TypeScript](typescript/index). diff --git a/docs/versioned_docs/version-6.0/connection-pooling.md b/docs/versioned_docs/version-6.x/connection-pooling.md similarity index 100% rename from docs/versioned_docs/version-6.0/connection-pooling.md rename to docs/versioned_docs/version-6.x/connection-pooling.md diff --git a/docs/versioned_docs/version-6.0/contributing-overview.md b/docs/versioned_docs/version-6.x/contributing-overview.md similarity index 100% rename from docs/versioned_docs/version-6.0/contributing-overview.md rename to docs/versioned_docs/version-6.x/contributing-overview.md diff --git a/docs/versioned_docs/version-6.0/contributing-walkthrough.md b/docs/versioned_docs/version-6.x/contributing-walkthrough.md similarity index 100% rename from docs/versioned_docs/version-6.0/contributing-walkthrough.md rename to docs/versioned_docs/version-6.x/contributing-walkthrough.md diff --git a/docs/versioned_docs/version-6.0/cors.md b/docs/versioned_docs/version-6.x/cors.md similarity index 100% rename from docs/versioned_docs/version-6.0/cors.md rename to docs/versioned_docs/version-6.x/cors.md diff --git a/docs/versioned_docs/version-6.0/create-redwood-app.md b/docs/versioned_docs/version-6.x/create-redwood-app.md similarity index 95% rename from docs/versioned_docs/version-6.0/create-redwood-app.md rename to docs/versioned_docs/version-6.x/create-redwood-app.md index 2f1e600f5eda..c6244ac0e837 100644 --- a/docs/versioned_docs/version-6.0/create-redwood-app.md +++ b/docs/versioned_docs/version-6.x/create-redwood-app.md @@ -24,7 +24,7 @@ node -v If you need to update your version of Node or run multiple versions of Node, we recommend installing nvm and have [documentation about how to get up and running.](./how-to/using-nvm) -You also need to have yarn version 1.15 or higher installed. To see what version of yarn you're running, you can run the following command in your terminal: +You also need to have yarn version 1.22.21 or higher installed. To see what version of yarn you're running, you can run the following command in your terminal: ```terminal yarn -v diff --git a/docs/versioned_docs/version-6.0/custom-web-index.md b/docs/versioned_docs/version-6.x/custom-web-index.md similarity index 96% rename from docs/versioned_docs/version-6.0/custom-web-index.md rename to docs/versioned_docs/version-6.x/custom-web-index.md index 775fa2c891a8..8fd30f548856 100644 --- a/docs/versioned_docs/version-6.0/custom-web-index.md +++ b/docs/versioned_docs/version-6.x/custom-web-index.md @@ -4,7 +4,7 @@ description: Change how App mounts to the DOM # Custom Web Index -:::caution This doc only applies to projects using Webpack +:::warning This doc only applies to projects using Webpack As of v6, all Redwood projects use Vite by default. When switching projects to Vite, we made the decision to add the the entry file, `web/src/entry.client.{jsx,tsx}`, back to projects. diff --git a/docs/versioned_docs/version-6.0/data-migrations.md b/docs/versioned_docs/version-6.x/data-migrations.md similarity index 100% rename from docs/versioned_docs/version-6.0/data-migrations.md rename to docs/versioned_docs/version-6.x/data-migrations.md diff --git a/docs/versioned_docs/version-6.0/deploy/baremetal.md b/docs/versioned_docs/version-6.x/deploy/baremetal.md similarity index 97% rename from docs/versioned_docs/version-6.0/deploy/baremetal.md rename to docs/versioned_docs/version-6.x/deploy/baremetal.md index 4703a7910a37..aec882f28381 100644 --- a/docs/versioned_docs/version-6.0/deploy/baremetal.md +++ b/docs/versioned_docs/version-6.x/deploy/baremetal.md @@ -22,7 +22,7 @@ Subsequent deploys: yarn rw deploy baremetal production ``` -:::caution Deploying to baremetal is an advanced topic +:::warning Deploying to baremetal is an advanced topic If you haven't done any kind of remote server work before, you may be in a little over your head to start with. But don't worry: until relatively recently (cloud computing, serverless, lambda functions) this is how all websites were deployed, so we've got a good 30 years of experience getting this working! @@ -173,7 +173,7 @@ This lists a single server, in the `production` environment, providing the hostn * `branch` - [optional] The branch to deploy (defaults to `main`) * `keepReleases` - [optional] The number of previous releases to keep on the server, including the one currently being served (defaults to 5) -The easiest connection method is generally to include your own public key in the server's `~/.ssh/authorized_keys` file, [enable agent forwarding](https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding), and then set `agentForward = true` in `deploy.toml`. This will allow you to use your own credentials when pulling code from GitHub (required for private repos). Otherwise you can create a [deploy key](https://docs.github.com/en/developers/overview/managing-deploy-keys) and keep it on the server. +The easiest connection method is generally to include your own public key in the server's `~/.ssh/authorized_keys` mannually or by running `ssh-copy-id user@server.com` from your local machine, [enable agent forwarding](https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding), and then set `agentForward = true` in `deploy.toml`. This will allow you to use your own credentials when pulling code from GitHub (required for private repos). Otherwise you can create a [deploy key](https://docs.github.com/en/developers/overview/managing-deploy-keys) and keep it on the server. #### Using Environment Variables in `deploy.toml` @@ -274,7 +274,7 @@ sudo chown deploy:deploy /var/www/myapp You'll want to create an `.env` file in this directory containing any environment variables that are needed by your app (like `DATABASE_URL` at a minimum). This will be symlinked to each release directory so that it's available as the app expects (in the root directory of the codebase). -:::caution SSH and Non-interactive Sessions +:::warning SSH and Non-interactive Sessions The deployment process uses a '[non-interactive](https://tldp.org/LDP/abs/html/intandnonint.html)' SSH session to run commands on the remote server. A non-interactive session will often load a minimal amount of settings for better compatibility and speed. In some versions of Linux `.bashrc` by default does not load (by design) from a non-interactive session. This can lead to `yarn` (or other commands) not being found by the deployment script, even though they are in your path, because additional ENV vars are set in `~/.bashrc` which provide things like NPM paths and setup. @@ -418,7 +418,7 @@ pm2 startup You will see some output similar to the output below. We care about the output after "copy/paste the following command:" You'll need to do just that: copy the command starting with `sudo` and then paste and execute it. *Note* this command uses `sudo` so you'll need the root password to the machine in order for it to complete successfully. -:::caution +:::warning The below text is *example* output, yours will be different, don't copy and paste ours! @@ -467,7 +467,7 @@ You can define your before/after commands in three different places: * Environment specific - runs for only a single environment * Server specific - runs for only a single server in a single environment -:::caution +:::warning Custom commands are run in the new **deploy** directory, not the root of your application directory. During a deploy the `current` symlink will point to the previous directory while your code is executed in the new one, before the `current` symlink location is updated. diff --git a/docs/versioned_docs/version-6.0/deploy/coherence.md b/docs/versioned_docs/version-6.x/deploy/coherence.md similarity index 97% rename from docs/versioned_docs/version-6.0/deploy/coherence.md rename to docs/versioned_docs/version-6.x/deploy/coherence.md index 970eaa98fa31..a2b9ec845d2a 100644 --- a/docs/versioned_docs/version-6.0/deploy/coherence.md +++ b/docs/versioned_docs/version-6.x/deploy/coherence.md @@ -17,7 +17,7 @@ To deploy to Coherence, your Redwood project needs to be hosted on GitHub and yo ## Coherence Deploy -:::caution Prerender doesn't work with Coherence yet +:::warning Prerender doesn't work with Coherence yet You can see its current status and follow updates here on GitHub: https://github.com/redwoodjs/redwood/issues/8333. diff --git a/docs/versioned_docs/version-6.0/deploy/edgio.md b/docs/versioned_docs/version-6.x/deploy/edgio.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/edgio.md rename to docs/versioned_docs/version-6.x/deploy/edgio.md diff --git a/docs/versioned_docs/version-6.0/deploy/flightcontrol.md b/docs/versioned_docs/version-6.x/deploy/flightcontrol.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/flightcontrol.md rename to docs/versioned_docs/version-6.x/deploy/flightcontrol.md diff --git a/docs/versioned_docs/version-6.0/deploy/introduction.md b/docs/versioned_docs/version-6.x/deploy/introduction.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/introduction.md rename to docs/versioned_docs/version-6.x/deploy/introduction.md diff --git a/docs/versioned_docs/version-6.0/deploy/netlify.md b/docs/versioned_docs/version-6.x/deploy/netlify.md similarity index 99% rename from docs/versioned_docs/version-6.0/deploy/netlify.md rename to docs/versioned_docs/version-6.x/deploy/netlify.md index 4f5c87e217bd..ad62b9b5d8f5 100644 --- a/docs/versioned_docs/version-6.0/deploy/netlify.md +++ b/docs/versioned_docs/version-6.x/deploy/netlify.md @@ -13,7 +13,7 @@ If you simply want to experience the Netlify deployment process without a databa 3. run the command `yarn rw setup deploy netlify` and commit and push changes 4. use the Netlify [Quick Start](https://app.netlify.com/signup) to deploy -:::caution +:::warning While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. diff --git a/docs/versioned_docs/version-6.0/deploy/render.md b/docs/versioned_docs/version-6.x/deploy/render.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/render.md rename to docs/versioned_docs/version-6.x/deploy/render.md diff --git a/docs/versioned_docs/version-6.0/deploy/serverless.md b/docs/versioned_docs/version-6.x/deploy/serverless.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/serverless.md rename to docs/versioned_docs/version-6.x/deploy/serverless.md diff --git a/docs/versioned_docs/version-6.0/deploy/vercel.md b/docs/versioned_docs/version-6.x/deploy/vercel.md similarity index 88% rename from docs/versioned_docs/version-6.0/deploy/vercel.md rename to docs/versioned_docs/version-6.x/deploy/vercel.md index 38beee72ec6d..5f4e6e33fe04 100644 --- a/docs/versioned_docs/version-6.0/deploy/vercel.md +++ b/docs/versioned_docs/version-6.x/deploy/vercel.md @@ -73,3 +73,18 @@ Go ahead, click that "Visit" button. You’ve earned it 🎉 From the Vercel Dashboard you can access the full settings and information for your Redwood App. The default settings seem to work just fine for most Redwood projects. Do take a look around, but be sure check out the [docs as well](https://vercel.com/docs). From now on, each time you push code to your git repo, Vercel will automatically trigger a deploy of the new code. You can also manually redeploy if you select "Deployments", then the specific deployment from the list, and finally the "Redeploy" option from the vertical dots menu next to "Visit". + +## vercel.json configuration + +By default, API requests in Vercel have a timeout limit of 15 seconds. To extend this duration, you can modify the vercel.json file by inserting the code snippet provided below. Please be aware that the ability to increase the timeout limit is exclusive to Pro plan subscribers. Additionally, it is important to note that the timeout can be increased up to a maximum of 300 seconds, which is equivalent to 5 minutes. + +``` +{ + "functions": { + "api/src/functions/graphql.*": { + "maxDuration": 120, + "runtime": "@vercel/redwood@2.0.5" + } + } +} +``` diff --git a/docs/versioned_docs/version-6.0/directives.md b/docs/versioned_docs/version-6.x/directives.md similarity index 100% rename from docs/versioned_docs/version-6.0/directives.md rename to docs/versioned_docs/version-6.x/directives.md diff --git a/docs/versioned_docs/version-6.x/docker.md b/docs/versioned_docs/version-6.x/docker.md new file mode 100644 index 000000000000..2a3587bba87a --- /dev/null +++ b/docs/versioned_docs/version-6.x/docker.md @@ -0,0 +1,468 @@ +--- +description: Redwood's Dockerfile +--- + +# Docker + +:::note The Dockerfile is experimental + +Redwood's Dockerfile is the collective effort of several hard-working community members. +We've worked hard to optimize it, but expect changes as we collaborate with users and deploy providers. + +::: + +If you're not familiar with Docker, we recommend going through their [getting started](https://docs.docker.com/get-started/) documentation. + +## Set up + +To get started, run the setup command: + +``` +yarn rw experimental setup-docker +``` + +The setup commands does several things: +- writes four files: `Dockerfile`, `.dockerignore`, `docker-compose.dev.yml`, and `docker-compose.prod.yml` +- adds the `@redwoodjs/api-server` and `@redwoodjs/web-server` packages to the api and web sides respectively +- edits the `browser.open` setting in the `redwood.toml` (right now, if it's set to `true`, it'll break the dev server when running the `docker-compose.dev.yml`) + +## Usage + +You can start the dev compose file with: + +``` +docker compose -f ./docker-compose.dev.yml up +``` + +And the prod compose file with: + +``` +docker compose -f ./docker-compose.prod.yml up +``` + +:::info make sure to specify build args + +If your api side or web side depend on env vars at build time, you may need to supply them as `--build-args`, or in the compose files. + +This is often the most tedious part of setting up Docker. Have ideas of how it could be better? Let us know on the [forums](https://community.redwoodjs.com/)! + +::: + +The first time you do this, you'll have to use the `console` stage to go in and migrate the database—just like you would with a Redwood app on your machine: + +``` +docker compose -f ./docker-compose.dev.yml run --rm -it console /bin/bash +root@...:/home/node/app# yarn rw prisma migrate dev +``` + +## The Dockerfile in detail + +The documentation here goes through and explains every line of Redwood's Dockerfile. +If you'd like to see the whole Dockerfile for reference, you can find it [here](https://github.com/redwoodjs/redwood/tree/main/packages/cli/src/commands/experimental/templates/docker/Dockerfile) or by setting it up in your project: `yarn rw experimental setup-docker`. + +Redwood takes advantage of [Docker's multi-stage build support](https://docs.docker.com/build/building/multi-stage/) to keep the final production images lean. + +### The `base` stage + +The `base` stage installs dependencies. +It's used as the base image for the build stages and the `console` stage. + +```Dockerfile +FROM node:18-bookworm-slim as base +``` + +We use a Node.js 18 image as the base image because that's the version Redwood targets. +"bookworm" is the codename for the current stable distribution of Debian (version 12). +Lastly, the "slim" variant of the `node:18-bookworm` image only includes what Node.js needs which reduces the image's size while making it more secure. + +:::tip Why not alpine? + +While alpine may be smaller, it uses musl, a different C standard library. +In developing this Dockerfile, we prioritized security over size. + +If you know what you're doing feel free to change this—it's your Dockerfile now! +Just remember to change the `apt-get` instructions further down too if needed. + +::: + +Moving on, next we have `corepack enable`: + +```Dockerfile +RUN corepack enable +``` + +[Corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html), Node's manager for package managers, needs to be enabled so that Yarn can use the `packageManager` field in your project's root `package.json` to pick the right version of itself. +If you'd rather check in the binary, you still can, but you'll need to remember to copy it over (i.e. `COPY --chown=node:node .yarn/releases .yarn/releases`). + +```Dockerfile +RUN apt-get update && apt-get install -y \ + openssl \ + # python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +The `node:18-bookworm-slim` image doesn't have [OpenSSL](https://www.openssl.org/), which [seems to be a bug](https://github.com/nodejs/docker-node/issues/1919). +(It was included in the "bullseye" image, the codename for Debian 11.) +On Linux, [Prisma needs OpenSSL](https://www.prisma.io/docs/reference/system-requirements#linux-runtime-dependencies), so we install it here via Ubuntu's package manager APT. +Python and its dependencies are there ready to be uncommented if you need them. See the [Troubleshooting](#python) section for more information. + +[It's recommended](https://docs.docker.com/develop/develop-images/instructions/#apt-get) to combine `apt-get update` and `apt-get install -y` in the same `RUN` statement for cache busting. +After installing, we clean up the apt cache to keep the layer lean. (Running `apt-get clean` isn't required—[official Debian images do it automatically](https://github.com/moby/moby/blob/03e2923e42446dbb830c654d0eec323a0b4ef02a/contrib/mkimage/debootstrap#L82-L105).) + +```Dockerfile +USER node +``` + +This and subsequent `chown` options in `COPY` instructions are for security. +[Services that can run without privileges should](https://docs.docker.com/develop/develop-images/instructions/#user). +The Node.js image includes a user, `node`, created with an explicit `uid` and `gid` (`1000`). +We reuse it. + +```Dockerfile +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml . +COPY --chown=node:node package.json . +COPY --chown=node:node api/package.json api/ +COPY --chown=node:node web/package.json web/ +COPY --chown=node:node yarn.lock . +``` + +Here we copy the minimum set of files that the `yarn install` step needs. +The order isn't completely arbitrary—it tries to maximize [Docker's layer caching](https://docs.docker.com/build/cache/). +We expect `yarn.lock` to change more than the `package.json`s and the `package.json`s to change more than `.yarnrc.yml`. +That said, it's hard to argue that these files couldn't be arranged differently, or that the `COPY` instructions couldn't be combined. +The important thing is that they're all here, before the `yarn install` step: + +```Dockerfile +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn install +``` + +This step installs all your project's dependencies—production and dev. +Since we use multi-stage builds, your production images won't pay for the dev dependencies installed in this step. +The build stages need the dev dependencies. + +The `mkdir` steps are a workaround for a permission error. We're working on removing them, but for now if you remove them the install step will probably fail. + +This step is a bit more involved than the others. +It uses a [cache mount](https://docs.docker.com/build/cache/#use-your-package-manager-wisely). +Yarn operates in three steps: resolution, fetch, and link. +If you're not careful, the cache for the fetch step basically doubles the number of `node_modules` installed on disk. +We could disable it all together, but by using a cache mount, we can still get the benefits without paying twice. +We set it to the default directory here, but you can change its location in `.yarnrc.yml`. +If you've done so you'll have to change it here too. + +One more thing to note: without setting `CI=1`, depending on the deploy provider, yarn may think it's in a TTY, making the logs difficult to read. With this set, yarn adapts accordingly. +Enabling CI enables [immutable installs](https://v3.yarnpkg.com/configuration/yarnrc#enableImmutableInstalls) and [inline builds](https://v3.yarnpkg.com/configuration/yarnrc#enableInlineBuilds), both of which are highly recommended. + +```Dockerfile +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults +``` + +We'll need these config files for the build and production stages. +The `redwood.toml` file is Redwood's de-facto config file. +Both the build and serve stages read it to enable and configure functionality. + +:::warning `.env.defaults` is ok to include but `.env` is not + +If you add a secret to the Dockerfile, it can be excavated. +While it's technically true that multi stage builds add a sort of security layer, it's not a best practice. +Leave them out and look to your deploy provider for further configuration. + +::: + +### The `api_build` stage + +The `api_build` stage builds the api side: + +```Dockerfile +FROM base as api_build + +# If your api side build relies on build-time environment variables, +# specify them here as ARGs. +# +# ARG MY_BUILD_TIME_ENV_VAR + +COPY --chown=node:node api api +RUN yarn rw build api +``` + +After the work we did in the base stage, building the api side amounts to copying in the api directory and running `yarn rw build api`. + +### The `api_serve` stage + +The `api_serve` stage serves your GraphQL api and functions: + +```Dockerfile +FROM node:18-bookworm-slim as api_serve + +RUN corepack enable + +RUN apt-get update && apt-get install -y \ + openssl \ + # python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +We don't start from the `base` stage, but begin anew with the `node:18-bookworm-slim` image. +Since this is a production stage, it's important for it to be as small as possible. +Docker's [multi-stage builds](https://docs.docker.com/build/building/multi-stage/) enables this. + +```Dockerfile +USER node +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml .yarnrc.yml +COPY --chown=node:node package.json . +COPY --chown=node:node api/package.json api/ +COPY --chown=node:node yarn.lock yarn.lock +``` + +Like other `COPY` instructions, ordering these files with care enables layering caching. + +```Dockerfile +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn workspaces focus api --production +``` + +This is a critical step for image size. +We don't use the regular `yarn install` command. +Using the [official workspaces plugin](https://github.com/yarnpkg/berry/tree/master/packages/plugin-workspace-tools)—which is included by default in yarn v4—we "focus" on the api workspace, only installing its production dependencies. + +The cache mount will be populated at this point from the install in the `base` stage, so the fetch step should fly by. + +```Dockerfile +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults + +COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/api/dist +COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db +COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /home/node/app/node_modules/.prisma +``` + +Here's where we really take advantage of multi-stage builds by copying from the `api_build` stage. +At this point all the building has been done. Now we can just grab the artifacts without having to lug around the dev dependencies. + +There's one more thing that was built: the prisma client in `node_modules/.prisma`. +We need to grab it too. + +```Dockerfile +ENV NODE_ENV=production + +CMD [ "node_modules/.bin/rw-server", "api", "--load-env-files" ] +``` + +Lastly, the default command is to start the api server using the bin from the `@redwoodjs/api-server` package. +You can override this command if you have more specific needs. + +Note that the Redwood CLI isn't available anymore. (It's a dev dependency.) +To access the server bin, we have to find its path in `node_modules`. +Though this is somewhat discouraged in modern yarn, since we're using the `node-modules` node linker, it's in `node_modules/.bin`. + +### The `web_build` stage + +This `web_build` builds the web side: + +```Dockerfile +FROM base as web_build + +COPY --chown=node:node web web +RUN yarn rw build web --no-prerender +``` + +After the work we did in the base stage, building the web side amounts to copying in the web directory and running `yarn rw build web`. + +This stage is a bit of a simplification. +It foregoes Redwood's prerendering (SSG) capability. +Prerendering is a little trickier; see [the `web_prerender_build` stage](#the-web_prerender_build-stage). + +If you've included environment variables in your `redwood.toml`'s `web.includeEnvironmentVariables` field, you'll want to specify them as ARGs here. +The setup command should've inlined them for you. + +### The `web_prerender_build` stage + +The `web_prerender_build` stage builds the web side with prerender. + +```Dockerfile +FROM api_build as web_build_with_prerender + +COPY --chown=node:node web web +RUN yarn rw build web +``` + +Building the web side with prerendering poses a challenge. +Prerender needs the api side around to get data for your Cells and route hooks. +The key line here is the first one—this stage uses the `api_build` stage as its base image. + +### The `web_serve` stage + +```Dockerfile +FROM node:18-bookworm-slim as web_serve + +RUN corepack enable + +USER node +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml . +COPY --chown=node:node package.json . +COPY --chown=node:node web/package.json web/ +COPY --chown=node:node yarn.lock . + +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn workspaces focus web --production + +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults + +COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist + +ENV NODE_ENV=production \ + API_HOST=http://api:8911 + +CMD "node_modules/.bin/rw-web-server" "--apiHost" "$API_HOST" +``` + +Most of this stage is similar to the `api_serve` stage, except that we're copying from the `web_build` stage instead of the `api_build`. +(If you're prerendering, you'll want to change the `--from=web_build` to `--from=web_prerender_build`.) + +The binary we're using here to serve the web side is `rw-web-server` which comes from the `@redwoodjs/web-server` package. +While this web server will be much more fully featured in the future, right now it's mostly just to get you going. +Ideally you want to put a web server like Nginx or Caddy in front of it. + +Lastly, note that we use the shell form of `CMD` here for its variable expansion. + +### The `console` stage + +The `console` stage is an optional stage for debugging: + +```Dockerfile +FROM base as console + +# To add more packages: +# +# ``` +# USER root +# +# RUN apt-get update && apt-get install -y \ +# curl +# +# USER node +# ``` + +COPY --chown=node:node api api +COPY --chown=node:node web web +COPY --chown=node:node scripts scripts +``` + +The console stage completes the base stage by copying in the rest of your Redwood app. +But then it pretty much leaves you to your own devices. +The intended way to use it is to create an ephemeral container by starting a shell like `/bin/bash` in the image built by targeting this stage: + +```bash +# Build the console image: +docker build . -t console --target console +# Start an ephemeral container from it: +docker run --rm -it console /bin/bash +``` + +As the comment says, feel free to add more packages. +We intentionally kept them to a minimum in the base stage, but you shouldn't worry about the size of the image here. + +## Troubleshooting + +### Python + +We tried to make the Dockerfile as lean as possible. +In some cases, that means we excluded a dependency your project needs. +And by far the most common is Python. + +During a stage's `yarn install` step (`RUN ... yarn install`), if you see an error like the following: + +``` +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Python is not set from command line or npm configuration +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Python is not set from environment variable PYTHON +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python checking if "python3" can be used +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - executable path is "" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - "" could not be run +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python checking if "python" can be used +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - executable path is "" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - "" could not be run +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python ********************************************************** +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python You need to install the latest version of Python. +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Node-gyp should be able to find and use Python. If not, +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python you can try one of the following options: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python (accepted by both node-gyp and npm) +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Set the environment variable PYTHON +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Set the npm configuration variable python: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python npm config set python "/path/to/pythonexecutable" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python For more information consult the documentation at: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python https://github.com/nodejs/node-gyp#installation +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python ********************************************************** +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +``` + +It's because your project depends on Python and the image doesn't provide it. + +It's easy to fix: just add `python3` and its dependencies (usually `make` and `gcc`): + +```diff + FROM node:18-bookworm-slim as base + + RUN apt-get update && apt-get install -y \ + openssl \ ++ python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +Not sure why your project depends on Python? `yarn why` is your friend. +From the error message, we know `bufferutil` couldn't build. +But why do we have `bufferutil`? + +``` +yarn why bufferutil +└─ websocket@npm:1.0.34 + └─ bufferutil@npm:4.0.8 (via npm:^4.0.1) +``` + +`websocket` needs `bufferutil`. But why do we have `websocket`? +Keep pulling the thread till you get to a top-level dependency: + +``` +yarn why websocket +└─ @supabase/realtime-js@npm:2.8.4 + └─ websocket@npm:1.0.34 (via npm:^1.0.34) + +yarn why @supabase/realtime-js +└─ @supabase/supabase-js@npm:2.38.4 + └─ @supabase/realtime-js@npm:2.8.4 (via npm:^2.8.4) + +yarn why @supabase/supabase-js +├─ api@workspace:api +│ └─ @supabase/supabase-js@npm:2.38.4 (via npm:^2.21.0) +│ +└─ web@workspace:web + └─ @supabase/supabase-js@npm:2.38.4 (via npm:^2.21.0) +``` + +In this case, it looks like it's ultimately because of our auth provider, `@supabase/supabase-js`. diff --git a/docs/versioned_docs/version-6.0/environment-variables.md b/docs/versioned_docs/version-6.x/environment-variables.md similarity index 100% rename from docs/versioned_docs/version-6.0/environment-variables.md rename to docs/versioned_docs/version-6.x/environment-variables.md diff --git a/docs/versioned_docs/version-6.0/forms.md b/docs/versioned_docs/version-6.x/forms.md similarity index 100% rename from docs/versioned_docs/version-6.0/forms.md rename to docs/versioned_docs/version-6.x/forms.md diff --git a/docs/versioned_docs/version-6.0/graphql.md b/docs/versioned_docs/version-6.x/graphql.md similarity index 98% rename from docs/versioned_docs/version-6.0/graphql.md rename to docs/versioned_docs/version-6.x/graphql.md index ff6e55044f86..b8afad901199 100644 --- a/docs/versioned_docs/version-6.0/graphql.md +++ b/docs/versioned_docs/version-6.x/graphql.md @@ -999,7 +999,7 @@ export const handler = createGraphQLHandler({ }) ``` -> Note: Check-out the [in-depth look at Redwood Directives](directives.md) that explains how to generate directives so you may use them to validate access and transform the response. +> Note: Check-out the [in-depth look at Redwood Directives](./directives.md) that explains how to generate directives so you may use them to validate access and transform the response. ### Logging Setup @@ -1014,9 +1014,9 @@ Logging is essential in production apps to be alerted about critical errors and We want to make logging simple when using RedwoodJS and therefore have configured the api-side GraphQL handler to log common information about your queries and mutations. Log statements also be optionally enriched with [operation names](https://graphql.org/learn/queries/#operation-name), user agents, request ids, and performance timings to give you more visibility into your GraphQL api. -By configuring the GraphQL handler to use your api side [RedwoodJS logger](logger.md), any errors and other log statements about the [GraphQL execution](https://graphql.org/learn/execution/) will be logged to the [destination](logger.md#destination-aka-where-to-log) you've set up: to standard output, file, or transport stream. +By configuring the GraphQL handler to use your api side [RedwoodJS logger](./logger.md), any errors and other log statements about the [GraphQL execution](https://graphql.org/learn/execution/) will be logged to the [destination](./logger.md#destination-aka-where-to-log) you've set up: to standard output, file, or transport stream. -You configure the logger using the `loggerConfig` that accepts a [`logger`](logger.md) and a set of [GraphQL Logger Options](#graphql-logger-options). +You configure the logger using the `loggerConfig` that accepts a [`logger`](./logger.md) and a set of [GraphQL Logger Options](#graphql-logger-options). ### Configure the GraphQL Logger @@ -1147,9 +1147,9 @@ export const post = async ({ id }) => { //... ``` -The GraphQL handler will then take care of logging your query and data -- as long as your logger is setup to log at the `info` [level](logger.md#log-level) and above. +The GraphQL handler will then take care of logging your query and data -- as long as your logger is setup to log at the `info` [level](./logger.md#log-level) and above. -> You can also disable the statements in production by just logging at the `warn` [level](logger.md#log-level) or above +> You can also disable the statements in production by just logging at the `warn` [level](./logger.md#log-level) or above This means that you can keep your services free of logger statements, but still see what's happening! @@ -1184,7 +1184,7 @@ Stream to third-party log and application monitoring services vital to productio Everyone has heard of reports that Company X logged emails, or passwords to files or systems that may not have been secured. While RedwoodJS logging won't necessarily prevent that, it does provide you with the mechanism to ensure that won't happen. -To redact sensitive information, you can supply paths to keys that hold sensitive data using the RedwoodJS logger [redact option](logger.md#redaction). +To redact sensitive information, you can supply paths to keys that hold sensitive data using the RedwoodJS logger [redact option](./logger.md#redaction). Because this logger is used with the GraphQL handler, it will respect any redaction paths setup. @@ -1291,7 +1291,7 @@ By default, your GraphQL endpoint is open to the world. That means anyone can request any query and invoke any Mutation. Whatever types and fields are defined in your SDL is data that anyone can access. -Redwood [encourages being secure by default](http://localhost:3000/docs/canary/directives#secure-by-default-with-built-in-directives) by defaulting all queries and mutations to have the `@requireAuth` directive when generating SDL or a service. +Redwood [encourages being secure by default](./directives.md#secure-by-default-with-built-in-directives) by defaulting all queries and mutations to have the `@requireAuth` directive when generating SDL or a service. When your app builds and your server starts up, Redwood checks that **all** queries and mutations have `@requireAuth`, `@skipAuth` or a custom directive applied. @@ -1417,7 +1417,7 @@ The `@requireAuth` directive lets you define roles that are permitted to perform ```ts type Mutation { createPost(input: CreatePostInput!): Post! @requireAuth(roles: ['AUTHOR', 'EDITOR']) - updatePost(id: Int!, input: UpdatePostInput!): Post! @@requireAuth(roles: ['EDITOR'] + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth(roles: ['EDITOR'] deletePost(id: Int!): Post! @requireAuth(roles: ['ADMIN'] } ``` @@ -1472,7 +1472,7 @@ export const handler = createGraphQLHandler({ }) ``` -:::caution +:::warning Enabling introspection in production may pose a security risk, as it allows users to access information about your schema, queries, and mutations. Use this option with caution and make sure to secure your GraphQL API properly. diff --git a/docs/versioned_docs/version-6.0/how-to/background-worker.md b/docs/versioned_docs/version-6.x/how-to/background-worker.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/background-worker.md rename to docs/versioned_docs/version-6.x/how-to/background-worker.md diff --git a/docs/versioned_docs/version-6.0/how-to/build-dashboards-fast-with-tremor.md b/docs/versioned_docs/version-6.x/how-to/build-dashboards-fast-with-tremor.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/build-dashboards-fast-with-tremor.md rename to docs/versioned_docs/version-6.x/how-to/build-dashboards-fast-with-tremor.md diff --git a/docs/versioned_docs/version-6.0/how-to/custom-function.md b/docs/versioned_docs/version-6.x/how-to/custom-function.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/custom-function.md rename to docs/versioned_docs/version-6.x/how-to/custom-function.md diff --git a/docs/versioned_docs/version-6.0/how-to/dbauth-passwordless.md b/docs/versioned_docs/version-6.x/how-to/dbauth-passwordless.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/dbauth-passwordless.md rename to docs/versioned_docs/version-6.x/how-to/dbauth-passwordless.md index d938e62e20cb..e07e0bcd4c05 100644 --- a/docs/versioned_docs/version-6.0/how-to/dbauth-passwordless.md +++ b/docs/versioned_docs/version-6.x/how-to/dbauth-passwordless.md @@ -637,4 +637,4 @@ const Routes = () => { ``` ## You did it! -Now that you did you can rest easy. You're authentication relies on just your database but also, if some bad actor got access to it the only user data you have is really the email address. +Now that you did you can rest easy. Your authentication relies on just your database but also, if some bad actor got access to it the only user data you have is really the email address. diff --git a/docs/versioned_docs/version-6.0/how-to/disable-api-database.md b/docs/versioned_docs/version-6.x/how-to/disable-api-database.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/disable-api-database.md rename to docs/versioned_docs/version-6.x/how-to/disable-api-database.md diff --git a/docs/versioned_docs/version-6.0/how-to/file-uploads.md b/docs/versioned_docs/version-6.x/how-to/file-uploads.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/file-uploads.md rename to docs/versioned_docs/version-6.x/how-to/file-uploads.md diff --git a/docs/versioned_docs/version-6.0/how-to/gotrue-auth.md b/docs/versioned_docs/version-6.x/how-to/gotrue-auth.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/gotrue-auth.md rename to docs/versioned_docs/version-6.x/how-to/gotrue-auth.md diff --git a/docs/versioned_docs/version-6.0/how-to/mocking-graphql-in-storybook.md b/docs/versioned_docs/version-6.x/how-to/mocking-graphql-in-storybook.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/mocking-graphql-in-storybook.md rename to docs/versioned_docs/version-6.x/how-to/mocking-graphql-in-storybook.md diff --git a/docs/versioned_docs/version-6.0/how-to/oauth.md b/docs/versioned_docs/version-6.x/how-to/oauth.md similarity index 91% rename from docs/versioned_docs/version-6.0/how-to/oauth.md rename to docs/versioned_docs/version-6.x/how-to/oauth.md index 7b7e6083985a..fb7449472c6c 100644 --- a/docs/versioned_docs/version-6.0/how-to/oauth.md +++ b/docs/versioned_docs/version-6.x/how-to/oauth.md @@ -133,7 +133,7 @@ Go ahead and click it, and you should be taken to GitHub to authorize your GitHu ![GitHub Oauth Access Page](https://user-images.githubusercontent.com/300/245899872-8ddd7e69-dbfa-4544-ab6f-78fd4ff02da8.png) -:::caution +:::warning If you get an error here that says "The redirect_uri MUST match the registered callback URL for this application" verify that the redirect URL you entered on GitHub and the one you put into the `GITHUB_OAUTH_REDIRECT_URL` ENV var are identical! @@ -390,8 +390,10 @@ Be sure to import `db` at the top of the file if you haven't already! ::: ```js title="/api/src/functions/oauth/oauth.js" -// highlight-next-line +// highlight-start import { db } from 'src/lib/db' +import { user, createUser } from 'src/services/users' +// highlight-end const callback = async (event) => { const { code } = event.queryStringParameters @@ -450,29 +452,27 @@ const findOrCreateUser = async (providerUser) => { if (identity) { // identity exists, return the user - const user = await db.user.findUnique({ where: { id: identity.userId }}) + const user = await user({ id: identity.userId }) return { user, identity } } // identity not found, need to create it and the user - return await db.$transaction(async (tx) => { - const user = await tx.user.create({ - data: { - email: providerUser.email, - fullName: providerUser.name, - }, - } - - const identity = await tx.identity.create({ - data: { - userId: user.id, - provider: 'github', - uid: providerUser.id.toString() - } - }) + const user = await createUser({ + input: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) - return { user, identity } + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString() + } }) + + return { user, identity } } // highlight-end ``` @@ -512,7 +512,7 @@ const findOrCreateUser = async (providerUser) => { }) if (identity) { - const user = await db.user.findUnique({ where: { id: identity.userId }}) + const user = await user({ id: identity.userId }) return { user, identity } } @@ -520,34 +520,32 @@ const findOrCreateUser = async (providerUser) => { } ``` -If the user already exists, great! Return it, and the attached `identity` so that we can update the details. If the user doesn't exist already: +Note we're using the `user()` function defined in our service, re-using any business logic you may have added around looking up a user. If the user already exists, great! Return it, and the attached `identity` so that we can update the details. If the user doesn't exist already: ```js const findOrCreateUser = async (providerUser) => { // ... - return await db.$transaction(async (tx) => { - const user = await tx.user.create({ - data: { - email: providerUser.email, - fullName: providerUser.name, - }, - } - - const identity = await tx.identity.create({ - data: { - userId: user.id, - provider: 'github', - uid: providerUser.id.toString() - } - }) + const user = await createUser({ + input: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) - return { user, identity } + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString() + } }) + + return { user, identity } } ``` -We create the `user` and the `identity` records inside a transaction so that if something goes wrong, both records fail to create. The error would bubble up to the try/catch inside `callback()`. (The Redwood test project has a required `fullName` field that we fill with the `name` attribute from GitHub.) +We create the `user` via the existing `createUser()` service, but the `identity` directly in the database. For this particular usecase we have no need of allowing access to the `Identity` data via GraphQL, so there's no reason to create and SDL or underlying service. If you did make them available via GraphQL, it would make sense to replace this create with the `createIdentity()` service. Any error raised during creation would bubble up to the try/catch inside `callback()`. (The Redwood test project has a required `fullName` field that we fill with the `name` attribute from GitHub.) :::info Don't forget the `toString()` calls whenever we read or write the `providerUser.id` since we made the `uid` of type `String`. @@ -573,11 +571,13 @@ In order to let dbAuth do the work of actually considering us logged in (and han Setting a cookie in the browser is a matter of returning a `Set-Cookie` header in the response from the server. We've been responding with a dump of the user object, but now we'll do a real return, including the cookie and a `Location` header to redirect us back to the site. -Don't forget the new `CryptoJS` import at the top! +Redwood provides the cookie encryption helper as a function that you can use in your own code, as well as the function that returns the cookie name based on what you set in your auth config: ```js title="/api/src/functions/oauth/oauth.js" -// highlight-next-line -import CryptoJS from 'crypto-js' +// highlight-start +import { cookieName, encryptSession } from '@redwoodjs/auth-dbauth-api' +import { cookieName as sessionCookieName } from 'src/lib/auth' +// highlight-end const callback = async (event) => { const { code } = event.queryStringParameters @@ -638,13 +638,11 @@ const secureCookie = (user) => { `Secure=${process.env.NODE_ENV !== 'development'}`, ] const data = JSON.stringify({ id: user.id }) + const encrypted = encryptSession(data) - const encrypted = CryptoJS.AES.encrypt( - data, - process.env.SESSION_SECRET - ).toString() - - return [`session=${encrypted}`, ...cookieAttrs].join('; ') + return [`${cookieName(sessionCookieName)}=${encrypted}`, ...cookieAttrs].join( + '; ' + ) } // highlight-end ``` @@ -660,8 +658,10 @@ Try it out, and as long as you have an indication on your site that a user is lo Here's the `oauth` function in its entirety: ```jsx title="/api/src/functions/oauth/oauth.js" -import CryptoJS from 'crypto-js' +import { cookieName, encryptSession } from '@redwoodjs/auth-dbauth-api' +import { cookieName as sessionCookieName } from 'src/lib/auth' +import { user, createUser } from 'src/services/users' import { db } from 'src/lib/db' export const handler = async (event, _context) => { @@ -732,13 +732,11 @@ const secureCookie = (user) => { `Secure=${process.env.NODE_ENV !== 'development'}`, ] const data = JSON.stringify({ id: user.id }) + const encrypted = encryptSession(data) - const encrypted = CryptoJS.AES.encrypt( - data, - process.env.SESSION_SECRET - ).toString() - - return [`session=${encrypted}`, ...cookieAttrs].join('; ') + return [`${cookieName(sessionCookieName)}=${encrypted}`, ...cookieAttrs].join( + '; ' + ) } const getProviderUser = async (token) => { @@ -768,29 +766,27 @@ const findOrCreateUser = async (providerUser) => { if (identity) { // identity exists, return the user - const user = await db.user.findUnique({ where: { id: identity.userId } }) + const user = await user({ id: identity.userId }) return { user, identity } } // identity not found, need to create it and the user - return await db.$transaction(async (tx) => { - const user = await tx.user.create({ - data: { - email: providerUser.email, - fullName: providerUser.name, - }, - }) - - const identity = await tx.identity.create({ - data: { - userId: user.id, - provider: 'github', - uid: providerUser.id.toString(), - }, - }) + const user = await createUser({ + input: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) - return { user, identity } + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString(), + }, }) + + return { user, identity } } ``` diff --git a/docs/versioned_docs/version-6.0/how-to/pagination.md b/docs/versioned_docs/version-6.x/how-to/pagination.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/pagination.md rename to docs/versioned_docs/version-6.x/how-to/pagination.md diff --git a/docs/versioned_docs/version-6.0/how-to/role-based-access-control.md b/docs/versioned_docs/version-6.x/how-to/role-based-access-control.md similarity index 98% rename from docs/versioned_docs/version-6.0/how-to/role-based-access-control.md rename to docs/versioned_docs/version-6.x/how-to/role-based-access-control.md index dbe467f68964..da138d62d71f 100644 --- a/docs/versioned_docs/version-6.0/how-to/role-based-access-control.md +++ b/docs/versioned_docs/version-6.x/how-to/role-based-access-control.md @@ -238,10 +238,10 @@ export const getCurrentUser = async (decoded) => { #### How to Protect a Route -To protect a `Private` route for access by a single role: +To protect a `PrivateSet` route for access by a single role: ```jsx -import { Router, Route, Private } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -254,10 +254,10 @@ const Routes = () => { } ``` -To protect a `Private` route for access by a multiple roles: +To protect a `PrivateSet` route for access by a multiple roles: ```jsx -import { Router, Route, Private } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( diff --git a/docs/versioned_docs/version-6.0/how-to/self-hosting-redwood.md b/docs/versioned_docs/version-6.x/how-to/self-hosting-redwood.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/self-hosting-redwood.md rename to docs/versioned_docs/version-6.x/how-to/self-hosting-redwood.md index 63a01b75e95e..870b61ef84a9 100644 --- a/docs/versioned_docs/version-6.0/how-to/self-hosting-redwood.md +++ b/docs/versioned_docs/version-6.x/how-to/self-hosting-redwood.md @@ -1,5 +1,5 @@ # Self-hosting Redwood (Serverful) -:::caution +:::warning This doc has been deprecated in favor of the [Baremetal](../deploy/baremetal.md) docs. diff --git a/docs/versioned_docs/version-6.0/how-to/sending-emails.md b/docs/versioned_docs/version-6.x/how-to/sending-emails.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/sending-emails.md rename to docs/versioned_docs/version-6.x/how-to/sending-emails.md diff --git a/docs/versioned_docs/version-6.0/how-to/supabase-auth.md b/docs/versioned_docs/version-6.x/how-to/supabase-auth.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/supabase-auth.md rename to docs/versioned_docs/version-6.x/how-to/supabase-auth.md diff --git a/docs/versioned_docs/version-6.0/how-to/test-in-github-actions.md b/docs/versioned_docs/version-6.x/how-to/test-in-github-actions.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/test-in-github-actions.md rename to docs/versioned_docs/version-6.x/how-to/test-in-github-actions.md index dc41fbecff2f..8064e49b681f 100644 --- a/docs/versioned_docs/version-6.0/how-to/test-in-github-actions.md +++ b/docs/versioned_docs/version-6.x/how-to/test-in-github-actions.md @@ -93,7 +93,7 @@ model UserExample { Then add your connection strings to your `.env` file: -:::caution +:::warning Make sure you don't commit this file to your repo since it contains sensitive information. diff --git a/docs/versioned_docs/version-6.0/how-to/using-a-third-party-api.md b/docs/versioned_docs/version-6.x/how-to/using-a-third-party-api.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/using-a-third-party-api.md rename to docs/versioned_docs/version-6.x/how-to/using-a-third-party-api.md diff --git a/docs/versioned_docs/version-6.0/how-to/using-nvm.md b/docs/versioned_docs/version-6.x/how-to/using-nvm.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/using-nvm.md rename to docs/versioned_docs/version-6.x/how-to/using-nvm.md index b7fb82ac43c7..05ed1f716bca 100644 --- a/docs/versioned_docs/version-6.0/how-to/using-nvm.md +++ b/docs/versioned_docs/version-6.x/how-to/using-nvm.md @@ -6,7 +6,7 @@ ## Installing nvm -:::caution +:::warning If you've already installed Node.js on your machine, uninstall Node.js before installing nvm. This will prevent any conflicts between the Node.js and nvm. ### If you're on a Mac @@ -77,7 +77,7 @@ To see all the versions of Node that you can install, run the following command: nvm ls-remote ``` -:::caution +:::warning You'll need to [install yarn](https://yarnpkg.com/getting-started/install) **for each version of Node that you install.** [Corepack](https://nodejs.org/dist/latest/docs/api/corepack.html) is included with all Node.js >=16.10 installs, but you must opt-in. To enable it, run the following command: diff --git a/docs/versioned_docs/version-6.0/how-to/using-yarn.md b/docs/versioned_docs/version-6.x/how-to/using-yarn.md similarity index 98% rename from docs/versioned_docs/version-6.0/how-to/using-yarn.md rename to docs/versioned_docs/version-6.x/how-to/using-yarn.md index 3c429e41a38c..5198209e6e85 100644 --- a/docs/versioned_docs/version-6.0/how-to/using-yarn.md +++ b/docs/versioned_docs/version-6.x/how-to/using-yarn.md @@ -22,7 +22,7 @@ To see the version of yarn that you have installed, run the following command: yarn --version ``` -**Redwood requires Yarn (>=1.15)** +**Redwood requires Yarn (>=1.22.21)** You can upgrade yarn by running the following command: diff --git a/docs/versioned_docs/version-6.0/how-to/windows-development-setup.md b/docs/versioned_docs/version-6.x/how-to/windows-development-setup.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/windows-development-setup.md rename to docs/versioned_docs/version-6.x/how-to/windows-development-setup.md diff --git a/docs/versioned_docs/version-6.0/intro-to-servers.md b/docs/versioned_docs/version-6.x/intro-to-servers.md similarity index 99% rename from docs/versioned_docs/version-6.0/intro-to-servers.md rename to docs/versioned_docs/version-6.x/intro-to-servers.md index b3d05cbfb941..121097e67e6f 100644 --- a/docs/versioned_docs/version-6.0/intro-to-servers.md +++ b/docs/versioned_docs/version-6.x/intro-to-servers.md @@ -63,7 +63,7 @@ If you're connecting to cloud-based servers, turning them on and off, and potent Once you're past that prompt you'll then either be prompted for your password, or logged in automatically (when using a private or public key). Let's look at each one in detail. -:::caution Baremetal First Deploy Woes? +:::warning Baremetal First Deploy Woes? If you're having trouble deploying to your server with Baremetal, and you've never connected to your server manually via SSH, this could be why: Baremetal provides no interactive prompt to accept this server fingerprint. You need to connect manually at least once before Baremetal can connect. diff --git a/docs/versioned_docs/version-6.0/introduction.md b/docs/versioned_docs/version-6.x/introduction.md similarity index 91% rename from docs/versioned_docs/version-6.0/introduction.md rename to docs/versioned_docs/version-6.x/introduction.md index 560cd1fce7d0..7a89099ca8d1 100644 --- a/docs/versioned_docs/version-6.0/introduction.md +++ b/docs/versioned_docs/version-6.x/introduction.md @@ -10,8 +10,9 @@ For full inspiration and vision, see Redwood's [README](https://github.com/redwo Development on Redwood happens in the [redwoodjs/redwood repo on GitHub](https://github.com/redwoodjs/redwood). The docs are [there too](https://github.com/redwoodjs/redwood/tree/main/docs). -While Redwood's [founders and core team](https://github.com/redwoodjs/redwood#core-team) handle most of the high-priority items and the day-to-day, -Redwood wouldn't be where it is without [all its contributors](https://github.com/redwoodjs/redwood#all-contributors)! +While Redwood's [leadership and maintainers](https://github.com/redwoodjs/redwood#core-team-leadership) +handle most of the high-priority items and the day-to-day, Redwood wouldn't be +where it is without [all its contributors](https://github.com/redwoodjs/redwood#all-contributors)! Feel free to reach out to us on the [forums](https://community.redwoodjs.com) or on [Discord](https://discord.gg/redwoodjs), and follow us on [Twitter](https://twitter.com/redwoodjs) for updates. ## Getting the Most out of Redwood diff --git a/docs/versioned_docs/version-6.0/local-postgres-setup.md b/docs/versioned_docs/version-6.x/local-postgres-setup.md similarity index 100% rename from docs/versioned_docs/version-6.0/local-postgres-setup.md rename to docs/versioned_docs/version-6.x/local-postgres-setup.md diff --git a/docs/versioned_docs/version-6.0/logger.md b/docs/versioned_docs/version-6.x/logger.md similarity index 100% rename from docs/versioned_docs/version-6.0/logger.md rename to docs/versioned_docs/version-6.x/logger.md diff --git a/docs/versioned_docs/version-6.x/mailer.md b/docs/versioned_docs/version-6.x/mailer.md new file mode 100644 index 000000000000..0707e9b5bc85 --- /dev/null +++ b/docs/versioned_docs/version-6.x/mailer.md @@ -0,0 +1,289 @@ +# Mailer + +RedwoodJS offers a convenient Mailer for sending emails to your users. It's not just about sending an email; delivery matters too. The way you deliver the feature requiring email is as significant as how you prepare the mail to be delivered by the infrastructure that sends emails over the internet. + +When designing the Mailer, it was crucial that mail could be: + +* sent by popular third-party services like [Resend](), [SendGrid](), [Postmark](), [Amazon SES](), and others. +* sent by [Nodemailer]() as a self-hosted OSS solution. +* use different providers depending on the use case. For instance, some transactional emails might be sent via Resend and some digest emails sent by SES. You should be able to choose the method for a specific email. +* send safely in both development and test environments in a "sandbox" without worrying that emails might accidentally leak. +* be sent as text and/or html and composed using templates by popular tools like [React Email]() or [MJML](), with support for more methods in the future. +* unit tested to set the proper to, from, cc, subject, body, and more. +* integrated with RedwoodJS Studio to help design and preview templates. + +The RedwoodJS Mailer does more than "just send an email". It is a complete end-to-end design, development, and testing package for emails. + +## Overview + +The RedwoodJS Mailer consists of [handlers](#handlers) and [renderers](#renderers), which carry out the core functionality of sending (handling) your emails and composing (rendering) your emails, respectively. This is combined with a few required files which define the necessary configuration. + +A high-level overview of the Mailer Flow is shown in the diagram below, and each case is covered in more detail below the diagram. +mailer-flow + +### Renderers + +A **renderer** transforms your React components into strings of text or HTML that can be sent as an email. + +Mailer currently offers the following renderers: +* [@redwoodjs/mailer-renderer-react-email]() based on [React Email]() +* [@redwoodjs/mailer-renderer-mjml-react]() based on [MJML]() + +You can find community-maintained renderers by searching across npm, our forums, and other community spaces. + +:::important + +Email clients are notoriously inconsistent in how they render HTML into the visual email content. Consider using a robust react library to help you write components that produce attractive emails, rendered consistently across email clients. + +::: + +### Handlers + +A **handler** is responsible for taking your rendered content and passing it on to a service that can send your email to the intended recipients, e.g., Nodemailer or Amazon SES. + +Mailer currently offers the following handlers: +* [@redwoodjs/mailer-handler-in-memory](), a simple in-memory handler typically used for testing. +* [@redwoodjs/mailer-handler-nodemailer](), which uses [Nodemailer](). +* [@redwoodjs/mailer-handler-studio](), which sends emails to the RedwoodJS Studio using nodemailer internally. +* [@redwoodjs/mailer-handler-resend](), which uses [Resend](). + +You can find community-maintained handlers by searching across npm, our forums, and other community spaces. + +### Files & Directories + +The core file for the Mailer functions is `api/src/lib/mailer.ts`. This file contains configuration defining which handlers and renderers to use and when. It starts out looking like this: +```ts title=api/src/lib/mailer.ts +import { Mailer } from '@redwoodjs/mailer-core' +import { NodemailerMailHandler } from '@redwoodjs/mailer-handler-nodemailer' +import { ReactEmailRenderer } from '@redwoodjs/mailer-renderer-react-email' + +import { logger } from 'src/lib/logger' + +export const mailer = new Mailer({ + handling: { + handlers: { + // TODO: Update this handler config or switch it out for a different handler completely + nodemailer: new NodemailerMailHandler({ + transport: { + host: 'localhost', + port: 4319, + secure: false, + }, + }), + }, + default: 'nodemailer', + }, + + rendering: { + renderers: { + reactEmail: new ReactEmailRenderer(), + }, + default: 'reactEmail', + }, + + logger, +}) +``` + +In the above, you can see how handlers and renderers are defined. Handlers are defined in the `handling` object where the keys are any name you wish to give, and the values are instances of the handler you want to use. Similarly for renderers, which are defined in the `rendering` object. Each must have a `default` provided, specifying which option to use by default in production. + +Mailer also expects you to put your mail react components inside the `api/src/mail` directory. For example, if you had a welcome email, it should be found in `api/src/mail/Welcome/Welcome.tsx`. + +## Setup + +The Mailer is not set up by default when you create a new RedwoodJS app, but it is easy to do so. Simply run the following CLI command: + +```bash title="RedwoodJS CLI" +yarn rw setup mailer +``` + +This command sets up the necessary files and dependencies. You can find more information on this command at [this](https://redwoodjs.com/docs/cli-commands#setup-mailer) specific section of our docs. + +## Usage + +### Example + +The best way to understand using the Mailer is with an example. + +In the tutorial, we built out a blog site. Let's say we have added a contact us functionality and the contact us form takes a name, email, and message and stores it in the database. + +For this example, suppose we want to also send an email to some internal inbox with this contact us submission. + +The service would be updated like so: + +```ts title=api/src/services/contacts.ts +import { mailer } from 'src/lib/mailer' +import { ContactUsEmail } from 'src/mail/Example/Example' + +// ... + +export const createContact: MutationResolvers['createContact'] = async ({ + input, +}) => { + const contact = await db.contact.create({ + data: input, + }) + + // Send email + await mailer.send( + ContactUsEmail({ + name: input.name, + email: input.email, + // Note the date is hardcoded here for the sake of test snapshot consistency + when: new Date(0).toLocaleString(), + }), + { + to: 'inbox@example.com', + subject: 'New Contact Us Submission', + replyTo: input.email, + from: 'contact-us@example.com', + } + ) + + return contact +} +``` + +In the code above, we do the following: + +- Import the Mailer and our mail template. +- Call the `mailer.send` function with: + - Our template, which we pass props into based on the user input. + - A set of send options to specify to, from, etc. + +In the example above, we specified a `replyTo` because that suited our business logic. However, we probably don't want to write `replyTo: 'no-reply@example.com'` in all our other emails where we might want that to be set. + +In that case, we can use the `defaults` property in our `api/src/lib/mailer.ts` config: + +```ts title=api/src/lib/mailer.ts +defaults: { + replyTo: 'no-reply@example.com', +}, +``` + +Now that we implemented our example, we might start to think about testing or how to try this out ourselves during development. + +The Mailer behaves slightly differently based on which environment you are running in. + +This helps improve your experience as you don't have to worry about sending real emails during testing or development. + +### Testing + +When your `NODE_ENV` is set to `test`, then the Mailer will start in test mode. In this mode, all mail will be sent using a test handler rather than the default production one or any specific one set when calling `send` or `sendWithoutRendering`. + +By default, when the Mailer is created, it will check if the `@redwoodjs/mailer-handler-in-memory` package is available. If it is, this will become the test handler; otherwise, the test handler will be a no-op that does nothing. The `yarn rw setup mailer` command adds this `@redwoodjs/mailer-handler-in-memory` package as a `devDependency` automatically for you. + +If you want control over this test mode behavior, you can include the following configuration in the `mailer.ts` file: + +```ts title=api/src/lib/mailer.ts +test: { + when: process.env.NODE_ENV === 'test', + handler: 'someOtherHandler', +} +``` + +The `when` property can either be a boolean or a function that returns a boolean. This decides if the Mailer starts in test mode when it is created. The `handler` property can specify a different handler to use in test mode. + +As an example of how this helps with testing, let's work off the example we created above. Let's now test our email functionality in the corresponding test file: + +```ts title=api/src/services/contacts/contacts.test.ts +describe('contacts', () => { + scenario('creates a contact', async () => { + const result = await createContact({ + input: { name: 'String', email: 'String', message: 'String' }, + }) + + expect(result.name).toEqual('String') + expect(result.email).toEqual('String') + expect(result.message).toEqual('String') + + // Mail + const testHandler = mailer.getTestHandler() as InMemoryMailHandler + expect(testHandler.inbox.length).toBe(1) + const sentMail = testHandler.inbox[0] + expect({ + ...sentMail, + htmlContent: undefined, + textContent: undefined, + }).toMatchInlineSnapshot(` + { + "attachments": [], + "bcc": [], + "cc": [], + "from": "contact-us@example.com", + "handler": "nodemailer", + "handlerOptions": undefined, + "headers": {}, + "htmlContent": undefined, + "renderer": "reactEmail", + "rendererOptions": {}, + "replyTo": "String", + "subject": "New Contact Us Submission", + "textContent": undefined, + "to": [ + "inbox@example.com", + ], + } + `) + expect(sentMail.htmlContent).toMatchSnapshot() + expect(sentMail.textContent).toMatchSnapshot() + }) +}) +``` + +Above we tested that our service did the following: + +- Sent one email. +- All the send options (such as to, from, what handler, etc.) match a set of expected values (the inline snapshot). +- The rendered text and HTML content match the expected value (the snapshots). + +### Development + +Similar to the test mode, the Mailer also has a development mode. This mode is selected automatically when the Mailer is created if `NODE_ENV` is **not** set to `production`. This mode behaves similarly to the test mode and by default will attempt to use the `@redwoodjs/mailer-handler-studio` package if it is available. + +You can control the development mode behavior with the following configuration in the `mailer.ts` file: + +```ts title=api/src/lib/mailer.ts +development: { + when: process.env.NODE_ENV !== 'production', + handler: 'someOtherHandler', +}, +``` + +:::tip + +The Mailer studio has some helpful features when it comes to using the Mailer during development. It can provide a mail inbox so that you can send mail to your local machine and see the results. It can also provide live previews of your rendered mail templates as a guide to what they will likely look like when sent to your end users. + +::: + +### Production + +If neither the test nor development mode conditions are met, the Mailer will start in production mode. In this mode, there is no rerouting of your mail to different handlers. Instead, your mail will go directly to your default handler unless you specifically state a different one in your send options. + +### Studio + +Redwood Studio is tightly integrated with the mailer. The goal is to provide you with not just the ability to send mail but also the development tools to make your experience easier and more enjoyable. + +#### Template Previews +mailer-template-preview + +You can have a preview of what your mail templates will look like. These will rerender live as you update your template code and you can even provide a JSON payload which will be used as the props to your template component. These previews are approximate but should easily get you 90% of the way there. + +#### Local Inbox +mailer-local-inbox + +When running in development mode, using the default `@redwoodjs/mailer-handler-studio` development handler, your mail will be sent to a local SMTP inbox running inside of Studio. This allows you to use your app and have full emails sent without worrying about setting up a local inbox yourself or using some other online temporary inbox service. + +:::warning + +Redwood Studio is an experimental feature and is still in development. Some of the UI shown above might look slightly different and the functionality may be tweaked over time to provide you with a better experience. + +::: + +## Need a Renderer or Handler? + +If the Mailer does not currenly provide a [handler](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#handlers) or [renderer](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#renderers) for the service or technology you wish to use, this doesn't prevent you from using the Mailer. Instead, you can create your own handler or renderer which you can then open source to the wider RedwoodJS community. + +To do this, read over the existing implementations for handlers [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/handlers) and renderers [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/renderers). You can also find the interfaces that a handler or mailer must satisfy [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/core) in the `@redwoodjs/mailer-core` package. + +Be sure to check out the community forum for people working on similar work, to document your own creations, or to get help on anything. diff --git a/docs/versioned_docs/version-6.0/mocking-graphql-requests.md b/docs/versioned_docs/version-6.x/mocking-graphql-requests.md similarity index 100% rename from docs/versioned_docs/version-6.0/mocking-graphql-requests.md rename to docs/versioned_docs/version-6.x/mocking-graphql-requests.md diff --git a/docs/versioned_docs/version-6.0/prerender.md b/docs/versioned_docs/version-6.x/prerender.md similarity index 98% rename from docs/versioned_docs/version-6.0/prerender.md rename to docs/versioned_docs/version-6.x/prerender.md index fa467aea495c..2ac27195086f 100644 --- a/docs/versioned_docs/version-6.0/prerender.md +++ b/docs/versioned_docs/version-6.x/prerender.md @@ -11,7 +11,7 @@ We thought a lot about what the developer experience should be for route-based p :::info How's Prerendering different from SSR/SSG/SWR/ISSG/...? As Danny said in his [Prerender demo](https://www.youtube.com/watch?v=iorKyMlASZc&t=2844s) at our Community Meetup, the thing all of these have in common is that they render your markup in a Node.js context to produce HTML. The difference is when (build or runtime) and how often. -Redwood currently supports prerendering at _build_ time. So before your deploy your web side, Redwood will render your pages into HTML, and once the JavaScript has been loaded on the browser, the page becomes dynamic. +Redwood currently supports prerendering at _build_ time. So before you deploy your web side, Redwood will render your pages into HTML, and once the JavaScript has been loaded on the browser, the page becomes dynamic. ::: @@ -56,7 +56,7 @@ This will prerender your NotFoundPage to `404.html` in your dist folder. Note th For Private Routes, Redwood prerenders your Private Routes' `whileLoadingAuth` prop: ```jsx - + // Loading is shown while we're checking to see if the user's logged in } prerender/> diff --git a/docs/versioned_docs/version-6.0/project-configuration-dev-test-build.mdx b/docs/versioned_docs/version-6.x/project-configuration-dev-test-build.mdx similarity index 84% rename from docs/versioned_docs/version-6.0/project-configuration-dev-test-build.mdx rename to docs/versioned_docs/version-6.x/project-configuration-dev-test-build.mdx index 3b78f9378183..37df966dafeb 100644 --- a/docs/versioned_docs/version-6.0/project-configuration-dev-test-build.mdx +++ b/docs/versioned_docs/version-6.x/project-configuration-dev-test-build.mdx @@ -85,7 +85,7 @@ const config = { module.exports = config ``` -> You can always see Redwood's latest configuration templates in the [create-redwood-app package](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/template/web/jest.config.js). +> You can always see Redwood's latest configuration templates in the [create-redwood-app package](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/web/jest.config.js). The preset includes all the setup required to test everything that's going on in web: rendering React components and transforming JSX, automatically mocking Cells, transpiling with Babel, mocking the Router and the GraphQL client—the list goes on! You can find all the details in the [source](https://github.com/redwoodjs/redwood/blob/main/packages/testing/config/jest/web/jest-preset.js). @@ -104,40 +104,28 @@ You can find all the details in the [source](https://github.com/redwoodjs/redwoo You can customize the types that Redwood generates from your project too! This is documented in a bit more detail in the [Generated Types](typescript/generated-types#customising-codegen-config) doc. -## Debugger configuration -The `yarn rw dev` command is configured by default to launch a debugger on the port `18911`, your Redwood app also ships with default configuration to attach a debugger from VSCode. - -Simply run your dev server, then attach the debugger from the "run and debug" panel. Quick demo below: - - +## Debug configurations +### Dev Server +The `yarn rw dev` command is configured by default to open a browser and a debugger on the port `18911` and your redwood app ships with several default configurations to debug with VSCode. -
- -> **ℹ️ Tip: Can't see the "Attach debugger" configuration?** In VSCode -> -> You can grab the latest launch.json from the Redwood template [here](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/.vscode/launch.json). Copy the contents into your project's `.vscode/launch.json` - - -#### Customizing the debug port -You can choose to use a different debug port in one of two ways: - +#### Customizing the configuration **a) Using the redwood.toml** -Add/change the `debugPort` under your api settings +Add/change the `debugPort` or `open` under your api settings ```toml title="redwood.toml" [web] # . - # . [api] - port = 8911 + # . + // highlight-next-line + debugPort = 18911 # change me! +[browser] // highlight-next-line - debugPort = 18911 # 👈 change me! + open = true # change me! ``` -If you set it to `false`, no debug port will be exposed. The `debugPort` is only ever used during development when running `yarn rw dev` - **b) Pass a flag to `rw dev` command** You can also pass a flag when you launch your dev servers, for example: @@ -149,6 +137,21 @@ The flag passed in the CLI will always take precedence over your setting in the Just remember to also change the port you are attaching to in your `./vscode/launch.json` +### API and Web Debuggers +Simply run your dev server, then attach the debugger from the "run and debug" panel. Quick demo below: + + + +### Compound Debugger +The compound configuration is a combination of the dev, api and web configurations. +It allows you to start all debugging configurations at once, facilitating simultaneous debugging of server and client-side code. + +
+ +> **ℹ️ Tip: Can't see the debug configurations?** In VSCode +> +> You can grab the latest launch.json from the Redwood template [here](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/.vscode/launch.json). Copy the contents into your project's `.vscode/launch.json` + ## Ignoring the `.yarn` folder The `.yarn` folder contains the most recent Yarn executable that Redwood supports @@ -219,3 +222,17 @@ Admittedly, the `.yarn` folder won't change that often, so this may not be the best example. But we thought we'd share this technique with you so that you'd know how to apply it to any folders that you know change very often, and how to tell VSCode not to bother wasting any CPU cycles on them. + +## Trailing whitespace + +If you're using VS Code, or another editor that supports +[EditorConfig](https://editorconfig.org), trailing whitespace will be trimmed +in source files, but preserved in html, markdown and mjml files when saving. + +This behavior is controlled by `.vscode/settings` or `.editorconfig` depending +on your editor. + +In JavaScript and TypeScript files trailing whitespace has no significance, +but for html, markdown and mjml it does. That's why the behavior is different +for those files. If you don't like the default behavior Redwood has configured +for you, you're free to change the settings in those two files. diff --git a/docs/versioned_docs/version-6.0/quick-start.md b/docs/versioned_docs/version-6.x/quick-start.md similarity index 99% rename from docs/versioned_docs/version-6.0/quick-start.md rename to docs/versioned_docs/version-6.x/quick-start.md index 40f35f9134bf..3fcf885a3324 100644 --- a/docs/versioned_docs/version-6.0/quick-start.md +++ b/docs/versioned_docs/version-6.x/quick-start.md @@ -6,7 +6,7 @@ description: Redwood quick start :::info Prerequisites -- Redwood requires [Node.js](https://nodejs.org/en/) (=18.x) and [Yarn](https://yarnpkg.com/) (>=1.15) +- Redwood requires [Node.js](https://nodejs.org/en/) (=18.x) and [Yarn](https://yarnpkg.com/) (>=1.22.21) - Are you on Windows? For best results, follow our [Windows development setup](how-to/windows-development-setup.md) guide ::: diff --git a/docs/versioned_docs/version-6.x/realtime.md b/docs/versioned_docs/version-6.x/realtime.md new file mode 100644 index 000000000000..39ef6fd5a2c9 --- /dev/null +++ b/docs/versioned_docs/version-6.x/realtime.md @@ -0,0 +1,706 @@ +# Realtime + +One of the most often asked questions of RedwoodJS before and after the launch of V1 was, “When will RedwoodJS support a realtime solution?” + +The answer is: **now**. + +## What is Realtime? + +RedwoodJS's initial real-time solution leverages GraphQL and relies on a serverful deployment to maintain a long-running connection between the client and server. + +:::note +This means that your cannot currently use RedwoodJS Realtime when deployed to Netlify or Vercel. + +**More information about deploying a serverful RedwoodJS application is forthcoming.** +::: + +RedwoodJS's GraphQL Server uses [GraphQL over Server-Sent Events](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#distinct-connections-mode) spec "distinct connections mode" for subscriptions. + +Advantages of SSE over WebSockets include: + +* Transported over simple HTTP instead of a custom protocol +* Built in support for re-connection and event-id +* Simpler protocol +* No trouble with corporate firewalls doing packet inspection + +### Subscriptions and Live Queries + +In GraphQL, there are two options for real-time updates: **live queries** and **subscriptions**. + +Subscriptions are part of the GraphQL specification, whereas live queries are not. + +There are times where subscriptions are well-suited for a realtime problem — and in some cases live queries may be a better fit. Later we’ll explore the pros and cons of each approach and how best to decide that to use and when. + +### Defer and Stream + +[Stream and defer](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending data the most important data as soon as it's ready. + +As applications grow, the GraphQL operation documents can get bigger. The server will only send the response back once all the data requested in the query is ready. However, not all requested data is of equal importance, and the client may not need all of the data at once. + +#### Using Defer + +The `@defer`` directive allows you to post-pone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. + +#### Using Stream + +The '@stream' directive allows you to stream the individual items of a field of the list type as the items are available. + +:::info +The `@stream` directive is currently **not** supported by Apollo GraphQL client. +::: + +## Features + +RedwoodJS Realtime handles the hard parts of a GraphQL Realtime implementation by automatically: + +- allowing GraphQL Subscription operations to be handled +- merging in your subscriptions types and mapping their handler functions (subscribe, and resolve) to your GraphQL schema letting you keep your subscription logic organized and apart from services (your subscription my use a service to respond to an event) +- authenticating subscription requests using the same `@requireAuth` directives already protecting other queries and mutations (or you can implement your own validator directive) +- adding in the `@live` query directive to your GraphQL schema and setting up the `useLiveQuery` envelop plugin to handle requests, invalidation, and managing the storage mechanism needed +- creating and configuring in-memory and persisted Redis stores uses by the PubSub transport for subscriptions and Live Queries (and letting you switch between them in development and production) +- placing the pubSub transport and stores into the GraphQL context so you can use them in services, subscription resolvers, or elsewhere (like a webhook, function, or job) to publish an event or invalidate data +- typing you subscription channel event payloads +- support `@defer` and `@stream` directives + +It provides a first-class developer experience for real-time updates with GraphQL so you can easily + +- respond to an event (e.g. NewPost, NewUserNotification) +- respond to a data change (e.g. Post 123's title updated) + +and have the latest data reflected in your app. + +Lastly, the Redwood CLI has commands to + +- generate a boilerplate implementation and sample code needed to create your custom + - subscriptions + - live Queries + +Regardless of the implementation chosen, **a stateful server and store are needed** to track changes, invalidation, or who wants to be informed about the change. + +### What can I build with Realtime? + +- Application Alerts and Messages +- User Notifications +- Live Charts +- Location updates +- Auction bid updates +- Messaging +- OpenAI streaming responses + +## RedwoodJS Realtime Setup + +To setup Realtime in an existing RedwoodJS project, run the following commands: + +* `yarn rw exp setup-server-file` +* `yarn rw exp setup-realtime` + +You will get: + +* `api/server.ts` where you configure your Fastify server and GraphQL +* `api/lib/realtime.ts` where you consume your subscriptions and configure realtime with an in-memory or Redis store +* Usage examples for live queries, subscriptions, defer, and stream. You'll get sdl, services/subscriptions for each. +* The [`auction` live query](#auction-live-query-example) example +* The [`countdown timer` subscription](#countdown-timer-example) example +* The [`chat` subscription](#chatnew-message-example) examples +* The [`alphabet` stream](#alphabet-stream-example) example +* The [`slow and fast` field defer](#slow-and-fast-field-defer-example) example + +:::note +There is no UI setup for these examples. You can find information on how to try them out using the GraphiQL playground. +::: + +### GraphQL Configuration + +Now that how have a serverful project, you will configure your GraphQL server in the `api/server.ts` file. + +:::important +That means you **must** manually configure your GraphQL server accordingly +::: + +For example, you will have to setup any authentication and the realtime config: + +```ts + await fastify.register(redwoodFastifyGraphQLServer, { + // If authenticating, be sure to import and add in + // authDecoder, + // getCurrentUser, + loggerConfig: { + logger: logger, + options: { + query: true, + data: true, + operationName: true, + requestId: true, + }, + }, + graphiQLEndpoint: enableWeb ? '/.redwood/functions/graphql' : '/graphql', + sdls, + services, + directives, + allowIntrospection: true, + allowGraphiQL: true, + // Configure if using RedwoodJS Realtime + realtime, + }) +``` + +You can now remove the GraphQL handler function that resides in `api/functions/graphql.ts`. + +### Realtime Configuration + +By default, RedwoodJS realtime configures an in-memory store for the Pub Sub client used with subscriptions and live query invalidation. + +Realtime supports in-memory and Redis stores: + +- In-memory stores are useful for development and testing. +- Redis stores are useful for production. + +To enable defer and streaming, set `enableDeferStream` to true. + +Configure a Redis store and defer and stream in: + +```ts +// api/lib/realtime.ts +import { RedwoodRealtimeOptions } from '@redwoodjs/realtime' + +import subscriptions from 'src/subscriptions/**/*.{js,ts}' + +// if using a Redis store +// import { Redis } from 'ioredis' +// const publishClient = new Redis() +// const subscribeClient = new Redis() + +/** + * Configure RedwoodJS Realtime + * + * See https://redwoodjs.com/docs/realtime + * + * Realtime supports Live Queries and Subscriptions over GraphQL SSE. + * + * Live Queries are GraphQL queries that are automatically re-run when the data they depend on changes. + * + * Subscriptions are GraphQL queries that are run when a client subscribes to a channel. + * + * Redwood Realtime + * - uses a publish/subscribe model to broadcast data to clients. + * - uses a store to persist Live Query and Subscription data. + * + * Redwood Realtime supports in-memory and Redis stores: + * - In-memory stores are useful for development and testing. + * - Redis stores are useful for production. + */ +export const realtime: RedwoodRealtimeOptions = { + subscriptions: { + subscriptions, + store: 'in-memory', + // if using a Redis store + // store: { redis: { publishClient, subscribeClient } }, + }, + liveQueries: { + store: 'in-memory', + // if using a Redis store + // store: { redis: { publishClient, subscribeClient } }, + }, + // To enable defer and streaming, set to true. + // enableDeferStream: true, +} +``` + +#### PubSub and LiveQueryStore + +By setting up RedwoodJS Realtime, the GraphQL server adds two helpers on the context: + +* pubSub +* liveQueryStory + +With `context.pubSub` you can subscribe to and publish messages via `context.pubSub.publish('the-topic', id, id2)`. + +With `context.liveQueryStore.` you can `context.liveQueryStore.invalidate(key)` where your key may be a reference or schema coordinate: + +##### Reference +Where the query is: `auction(id: ID!): Auction @requireAuth`: + +* `"Auction:123"` + +##### Schema Coordinate +When the query is: `auctions: [Auction!]! @requireAuth`: + +* `"Query.auctions"` + +## Subscriptions + +RedwoodJS has a first-class developer experience for GraphQL subscriptions. + +#### Subscribe to Events + +- Granular information on what data changed +- Why has the data changed? +- Spec compliant + +### Chat/New Message Example + +```graphql +type Subscription { + newMessage(roomId: ID!): Message! @requireAuth +} +``` + +1. I subscribed to a "newMessage” in room “2” +2. Someone added a message to room “2” with a from and body +3. A "NewMessage" event to Room 2 gets published +4. I find out and see who the message is from and what they messaged (the body) + +### Countdown Timer Example + +Counts down from a starting values by an interval. + +```graphql +subscription CountdownFromInterval { + countdown(from: 100, interval: 10) +} +``` + +This example showcases how a subscription can yields its own response. + +## Live Queries + +RedwoodJS has made it super easy to add live queries to your GraphQL server! You can push new data to your clients automatically once the data selected by a GraphQL operation becomes stale by annotating your query operation with the `@live` directive. + +The invalidation mechanism is based on GraphQL ID fields and schema coordinates. Once a query operation has been invalidated, the query is re-executed, and the result is pushed to the client. + +##### Listen for Data Changes + +- I'm not interested in what exactly changed it. +- Just give me the data. +- This is not part of the GraphQL specification. +- There can be multiple root fields. + +### Auction Live Query Example + +```graphql +query GetCurrentAuctionBids @live { + auction(id: "1") { + bids { + amount + } + highestBid { + amount + } + id + title + } +} + +mutation MakeBid { + bid(input: { auctionId: "1", amount: 10 }) { + amount + } +} +``` + +1. I listen for changes to Auction 1 by querying the auction. +2. A bid was placed on Auction 1. +3. The information for Auction 1 is no longer valid. +4. My query automatically refetches the latest Auction and Bid details. + +## Defer Directive + +The `@defer` directive allows you to post-pone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. + +### Slow and Fast Field Defer Example + +Here, the GraphQL schema defines two queries for a "fast" and a "slow" (ie, delayed) information. + +```graphql +export const schema = gql` + type Query { + """ + A field that resolves fast. + """ + fastField: String! @skipAuth + + """ + A field that resolves slowly. + Maybe you want to @defer this field ;) + """ + slowField(waitFor: Int! = 5000): String @skipAuth + } +` +``` + +The Redwood services for these queries return the `fastField` immediately and the `showField` after some delay. + +```ts +import { logger } from 'src/lib/logger' + +const wait = (time: number) => + new Promise((resolve) => setTimeout(resolve, time)) + +export const fastField = async () => { + return 'I am speedy' +} + +export const slowField = async (_, { waitFor = 5000 }) => { + logger.debug('deferring slowField until ...') + await wait(waitFor) + logger.debug('now!') + + return 'I am slow' +} +``` + +When making the query: + +```graphql +query SlowAndFastFieldWithDefer { + ... on Query @defer { + slowField + } + fastField +} +``` + +The response returns: + +```json +{ + "data": { + "fastField": "I am speedy" + } +} +``` + +and will await the deferred field to then present: + +```json +{ + "data": { + "fastField": "I am speedy", + "slowField": "I am slow" + } +} +``` + +## Stream Directive + +The `@stream` directive allows you to stream the individual items of a field of the list type as the items are available. + +### Alphabet Stream Example + +Here, the GraphQL schema defines a query to return the letters of the alphabet: + +```graphql +export const schema = gql` + type Query { + alphabet: [String!]! @skipAuth +` +``` + +The service uses `Repeater` to write a safe stream resolver. + +:::info +[AsyncGenerators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator) as declared via the `async *` keywords are prone to memory leaks and leaking timers. For real-world usage, use Repeater. +::: + +```ts +import { Repeater } from '@redwoodjs/realtime' + +import { logger } from 'src/lib/logger' + +export const alphabet = async () => { + return new Repeater(async (push, stop) => { + const values = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] + const publish = () => { + const value = values.shift() + + if (value) { + logger.debug({ value }, 'publishing') + + push(value) + } + + if (values.length === 0) { + stop() + } + } + + const interval = setInterval(publish, 1000) + + stop.then(() => { + logger.debug('cancel') + clearInterval(interval) + }) + + publish() + }) +} +``` + +### What does the incremental stream look like? + +Since Apollo Client does not yet support the `@stream` directive, you can use them in the GraphiQL Playground or see them in action via CURL. + +When making the request with the `@stream` directive: + +```bash +curl -g -X POST \ + -H "accept:multipart/mixed" \ + -H "content-type: application/json" \ + -d '{"query":"query StreamAlphabet { alphabet @stream }"}' \ + http://localhost:8911/graphql +``` + +Here you see the initial response has `[]` for alphabet data. + +Then on each push to the Repeater, an incremental update the the list of letters is sent. + +The stream ends when `hasNext` is false: + +```bash +* Connected to localhost (127.0.0.1) port 8911 (#0) +> POST /graphql HTTP/1.1 +> Host: localhost:8911 +> User-Agent: curl/8.1.2 +> accept:multipart/mixed +> content-type: application/json +> Content-Length: 53 +> +< HTTP/1.1 200 OK +< connection: keep-alive +< content-type: multipart/mixed; boundary="-" +< transfer-encoding: chunked +< +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 39 + +{"data":{"alphabet":[]},"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["a"],"path":["alphabet",0]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["b"],"path":["alphabet",1]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["c"],"path":["alphabet",2]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["d"],"path":["alphabet",3]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["e"],"path":["alphabet",4]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["f"],"path":["alphabet",5]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["g"],"path":["alphabet",6]}],"hasNext":true} +--- +... + +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 17 + +{"hasNext":false} +----- +``` + +## How do I choose Subscriptions or Live Queries? + +![image](https://github.com/ahaywood/redwoodjs-streaming-realtime-demos/assets/1051633/e3c51908-434c-4396-856a-8bee7329bcdd) + +When deciding on how to offer realtime data updates in your RedwoodJS app, you’ll want to consider: + +- How frequently do your users require information updates? + - Determine the value of "real-time" versus "near real-time" to your users. Do they need to know in less than 1-2 seconds, or is 10, 30, or 60 seconds acceptable for them to receive updates? + - Consider the criticality of the data update. Is it low, such as a change in shipment status, or higher, such as a change in stock price for an investment app? + - Consider the cost of maintaining connections and tracking updates across your user base. Is the infrastructure cost justifiable? + - If you don't require "real" real-time, consider polling for data updates on a reasonable interval. According to Apollo, [in most cases](https://www.apollographql.com/docs/react/data/subscriptions/), your client should not use subscriptions to stay up to date with your backend. Instead, you should poll intermittently with queries or re-execute queries on demand when a user performs a relevant action, such as clicking a button. +- How are you deploying? Serverless or Serverful? + - Real-time options depend on your deployment method. + - If you are using a serverless architecture, your application cannot maintain a stateful connection to your users' applications. Therefore, it's not easy to "push," "publish," or "stream" data updates to the web client. + - In this case, you may need to look for third-party solutions that manage the infrastructure to maintain such stateful connections to your web client, such as [Supabase Realtime](https://supabase.com/realtime), [SendBird](https://sendbird.com/), [Pusher](https://pusher.com/), or consider creating your own [AWS SNS-based](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) functionality. + + + +## Showcase Demos + +Please see our [showcase RedwoodJS Realtime app](https://realtime-demo.fly.dev) for exampes of subscriptions and live queries. It also demonstrates how you can handle streaming responses, like those used by OpenAI chat completions. + +### Chat Room (Subscription) + +Sends a message to one of four Chat Rooms. + +Each room subscribes to its new messages via the `NewMessage` channel aka topic. + +```ts +context.pubSub.publish('newMessage', roomId, { from, body }) +``` + +#### Simulate + +```bash +./scripts/simulate_chat.sh -h +Usage: ./scripts/simulate_chat.sh -r [roomId] -n [num_messages] + ./scripts/simulate_chat.sh -h + +Options: + -r roomId Specify the room ID (1-4) for sending chat messages. + -n num_messages Specify the number of chat messages to send. If not provided, the script will run with a random number of messages. +``` +#### Test + +```ts +/** + * To test this NewMessage subscription, run the following in one GraphQL Playground to subscribe: + * + * subscription ListenForNewMessagesInRoom { + * newMessage(roomId: "1") { + * body + * from + * } + * } + * + * + * And run the following in another GraphQL Playground to publish and send a message to the room: + * + * mutation SendMessageToRoom { + * sendMessage(input: {roomId: "1", from: "hello", body: "bob"}) { + * body + * from + * } + * } + */ + ``` + +### Auction Bids (Live Query) + +Bid on a fancy pair of new sneaks! + +When a bid is made, the auction updates via a Live Query due to the invalidation of the auction key. + +```ts + const key = `Auction:${auctionId}` + context.liveQueryStore.invalidate(key) + ``` + +#### Simulate + +```bash +./scripts/simulate_bids.sh -h +Usage: ./scripts/simulate_bids.sh [options] + +Options: + -a Specify the auction ID (1-5) for which to send bids (optional). + -n Specify the number of bids to send (optional). + -h, --help Display this help message. + ``` + +#### Test + +```ts +/** + * To test this live query, run the following in the GraphQL Playground: + * + * query GetCurrentAuctionBids @live { + * auction(id: "1") { + * bids { + * amount + * } + * highestBid { + * amount + * } + * id + * title + * } + * } + * + * And then make a bid with the following mutation: + * + * mutation MakeBid { + * bid(input: {auctionId: "1", amount: 10}) { + * amount + * } + * } + */ +``` + +### Countdown (Streaming Subscription) + +> It started slowly and I thought it was my heart +> But then I realised that this time it was for real + +Counts down from a starting values by an interval. + +This example showcases how a subscription can yields its own response. + +#### Test + +```ts +/** + * To test this Countdown subscription, run the following in the GraphQL Playground: + * + * subscription CountdownFromInterval { + * countdown(from: 100, interval: 10) + * } + */ +``` + +### Bedtime Story (Subscription with OpenAI Streaming) + +> Tell me a story about a happy, purple penguin that goes to a concert. + +Showcases how to use OpenAI to stream a chat completion via a prompt that writes a bedtime story: + +```ts +const PROMPT = `Write a short children's bedtime story about an Animal that is a given Color and that does a given Activity. + +Give the animal a cute descriptive and memorable name. + +The story should teach a lesson. + +The story should be told in a quality, style and feeling of the given Adjective. + +The story should be no longer than 3 paragraphs. + +Format the story using Markdown.` + +``` + +The story updates on each stream content delta via a `newStory` subscription topic event. + +```ts +context.pubSub.publish('newStory', id, story) +``` + +### Movie Mashup (Live Query with OpenAI Streaming) + +> It's Out of Africa meets Pretty Woman. + +> So it's a psychic, political, thriller comedy with a heart With a heart, not unlike Ghost meets Manchurian Candidate. + +-- The Player, 1992 + +Mashup some of your favorite movies to create something new and Netflix-worthy to watch. + +Powered by OpenAI, this movie tagline and treatment updates on each stream content delta via a Live Query bui invalidating the `MovieMashup key. + +```ts +context.liveQueryStore.invalidate(`MovieMashup:${id}`) +``` diff --git a/docs/versioned_docs/version-6.0/redwoodrecord.md b/docs/versioned_docs/version-6.x/redwoodrecord.md similarity index 100% rename from docs/versioned_docs/version-6.0/redwoodrecord.md rename to docs/versioned_docs/version-6.x/redwoodrecord.md diff --git a/docs/versioned_docs/version-6.0/router.md b/docs/versioned_docs/version-6.x/router.md similarity index 94% rename from docs/versioned_docs/version-6.0/router.md rename to docs/versioned_docs/version-6.x/router.md index 98d1493d9ab9..a4d48c6d0c56 100644 --- a/docs/versioned_docs/version-6.0/router.md +++ b/docs/versioned_docs/version-6.x/router.md @@ -44,9 +44,7 @@ The `path` prop specifies the URL path to match, starting with the beginning sla ## Private Routes -Some pages should only be visible to authenticated users. - -We support this using private `` component. Read more [further down](#private-set). +Some pages should only be visible to authenticated users. We support this using the `PrivateSet` component. Read more [further down](#privateset). ## Sets of Routes @@ -89,7 +87,7 @@ Conceptually, this fits with how we think about Context and Layouts as things th There's a lot of flexibility here. You can even nest `Sets` to great effect: ```jsx title="Routes.js" -import { Router, Route, Set, Private } from '@redwoodjs/router' +import { Router, Route, Set } from '@redwoodjs/router' import BlogContext from 'src/contexts/BlogContext' import BlogLayout from 'src/layouts/BlogLayout' import BlogNavLayout from 'src/layouts/BlogNavLayout' @@ -130,24 +128,11 @@ becomes... ``` -### `private` Set +### `PrivateSet` -Sets can take a `private` prop which makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the private Set, they'll be redirected to the Route passed as the Set's `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. +A `PrivateSet` makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the `PrivateSet`, they'll be redirected to the Route passed as the `PrivateSet`'s `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. -Here's an example of how you'd use a private set: - -```jsx title="Routes.js" - - - - - - -``` - -Private routes are important and should be easy to spot in your Routes file. The larger your Routes file gets, the more difficult it will probably become to find `` among your other Sets. So we also provide a `` component that's just an alias for ``. Most of our documentation uses ``. - -Here's the same example again, but now using `` +Here's an example of how you'd use a `PrivateSet`: ```jsx title="Routes.js" @@ -160,7 +145,7 @@ Here's the same example again, but now using `` For more fine-grained control, you can specify `roles` (which takes a string for a single role or an array of roles), and the router will check to see that the current user is authorized before giving them access to the Route. If they're not, they will be redirected to the page specified in the `unauthenticated` prop, such as a "forbidden" page. Read more about Role-based Access Control in Redwood [here](how-to/role-based-access-control.md). -To protect `PrivateSet` routes for access by a single role: +To protect private routes for access by a single role: ```jsx title="Routes.js" @@ -172,7 +157,7 @@ To protect `PrivateSet` routes for access by a single role: ``` -To protect `PrivateSet` routes for access by multiple roles: +To protect private routes for access by multiple roles: ```jsx title="Routes.js" @@ -261,7 +246,9 @@ More granular match, `page` key only and `tab=tutorial` activeMatchParams={[{ tab: 'tutorial' }, 'page' ]} ``` -You can `useMatch` to create your own component with active styles. +### useMatch + +You can use `useMatch` to create your own component with active styles. > `NavLink` uses it internally! @@ -528,7 +515,7 @@ Redwood will detect your explicit import and refrain from splitting that page in Because lazily-loaded pages can take a non-negligible amount of time to load (depending on bundle size and network connection), you may want to show a loading indicator to signal to the user that something is happening after they click a link. -In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `Private` component. +In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `PrivateSet` component. ```jsx title="Routes.js" import SkeletonLoader from 'src/components/SkeletonLoader' @@ -574,7 +561,7 @@ When the lazy-loaded page is loading, `PageLoadingContext.Consumer` will pass `{ Let's say you have a dashboard area on your Redwood app, which can only be accessed after logging in. When Redwood Router renders your private page, it will first fetch the user's details, and only render the page if it determines the user is indeed logged in. -In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your private ``, `` component: +In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your `PrivateSet` component: ```jsx //Routes.js @@ -677,7 +664,7 @@ Note that if you're copy-pasting this example, it uses [Tailwind CSS](https://ta :::note Can I customize the development one? -As it's part of the RedwoodJS framework, you can't. But if there's a feature you want to add, let us know on the [forums](https://community.redwoodjs.com/). +As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page, but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). ::: diff --git a/docs/versioned_docs/version-6.0/schema-relations.md b/docs/versioned_docs/version-6.x/schema-relations.md similarity index 95% rename from docs/versioned_docs/version-6.0/schema-relations.md rename to docs/versioned_docs/version-6.x/schema-relations.md index 8c5e65b71358..0d0b3add404b 100644 --- a/docs/versioned_docs/version-6.0/schema-relations.md +++ b/docs/versioned_docs/version-6.x/schema-relations.md @@ -39,7 +39,7 @@ model Tag { } ``` -These relationships can be [implicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations#implicit-many-to-many-relations) (as this diagram shows) or [explicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations#explicit-many-to-many-relations) (explained below). Redwood's SDL generator (which is also used by the scaffold generator) only supports an **explicit** many-to-many relationship when generating with the `--crud` flag. What's up with that? +These relationships can be [implicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#implicit-many-to-many-relations) (as this diagram shows) or [explicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#explicit-many-to-many-relations) (explained below). Redwood's SDL generator (which is also used by the scaffold generator) only supports an **explicit** many-to-many relationship when generating with the `--crud` flag. What's up with that? ## CRUD Requires an `@id` diff --git a/docs/versioned_docs/version-6.0/security.md b/docs/versioned_docs/version-6.x/security.md similarity index 100% rename from docs/versioned_docs/version-6.0/security.md rename to docs/versioned_docs/version-6.x/security.md diff --git a/docs/versioned_docs/version-6.x/seo-head.md b/docs/versioned_docs/version-6.x/seo-head.md new file mode 100644 index 000000000000..7cb5772edd62 --- /dev/null +++ b/docs/versioned_docs/version-6.x/seo-head.md @@ -0,0 +1,356 @@ +--- +description: Use meta tags to set page info for SEO +--- + +# SEO & `` tags + +Search Engine Optimization is a dark art that some folks dedicate their entire lives to. We've add a couple of features to Redwood to make HTML-based SEO fairly simple. + +## Adding a Title + +You certainly want to change the title of your Redwood app from the default of "Redwood App." You can start by adding or modifying `title` inside of `/redwood.toml` + +```diff title=redwood.toml +[web] +- title = "Redwood App" ++ title = "My Cool App" + port = 8910 + apiUrl = "/.redwood/functions" +``` + +This title (the app title) is used by default for all your pages if you don't define another one. +It will also be use for the title template. + +### Title Template + +Now that you have the app title set, you probably want some consistence with the page title, that's what the title template is for. + +Add `titleTemplate` as a prop for `RedwoodProvider` to have a title template for every pages + +```diff title=web/src/App.(tsx|jsx) +- ++ + /* ... */ + +``` + +You can use whatever formatting you'd like in here. Some examples: + +```jsx +"%PageTitle | %AppTitle" => "Home Page | Redwood App" + +"%AppTitle · %PageTitle" => "Redwood App · Home Page" + +"%PageTitle : %AppTitle" => "Home Page : Redwood App" +``` + +## Adding to Page `` + +So you want to change the title of your page, or add elements to the `` of the page? We've got you! + +Let's say you want to change the title of your About page, Redwood provides a built in `` component, which you can use like this: + +```diff title=web/src/pages/AboutPage/AboutPage.(tsx|jsx) ++import { Head } from '@redwoodjs/web' + +const AboutPage = () => { + return ( +
+

AboutPage

++ ++ About the team ++ +``` + +You can include any valid `` tag in here that you like. However, Redwood also provides a utility component [<Metadata>](#setting-meta-tags-and-opengraph-directives-with-metadata). + +:::caution `` Deprecation + +Prior to Redwood 6.6.0 this component was called `` and had several special hard-coded props like `ogContentUrl`, which didn't properly map to the OpenGraph spec. We'll still render `` for the foreseeable future, but it's deprecated and you should migrate to `` if you have an existing app. + +::: + +### What About Nested Tags? + +Redwood uses [react-helmet-async](https://github.com/staylor/react-helmet-async) underneath, which will use the tags furthest down your component tree. + +For example, if you set title in your Layout, and a title in your Page, it'll render the one in Page - this way you can override the tags you wish, while sharing the tags defined in Layout. + +:::info Bots & `` Tags + +For these headers to appear to bots and scrapers e.g. for twitter to show your title, you have to make sure your page is prerendered. If your content is static you can use Redwood's built in [Prerender](prerender.md). For dynamic tags, check the [Dynamic head tags](#dynamic-tags) + +::: + +## Setting `` Tags and OpenGraph Directives with `` + +Often we want to set more than just the title and description of the page—most commonly [OpenGraph](https://ogp.me/) headers. + +Redwood provides a convenience component `` to help you create most of these `` tags for you with a more concise syntax. But, you can also pass children and define any custom content that you want. + +Here's an example setting some common meta, including a page title, description, `og:image` and an `http-equiv`: + +```jsx +import { Metadata } from '@redwoodjs/web' + +const AboutPage = () => { + return ( +
+ + + + +

About Page

+

This is the about page!

+
+ ) +} + +export default AboutPage +``` + +This code would be transformed into this HTML and injected into the `` tag: + +```html +About page + + + + + + + + + +``` + +Setting an `og:image` is how sites like Facebook and Slack can show a preview of a URL when pasted into a post (also known as "unfurling"): + +![Typical URL unfurl](/img/facebook_unfurl.png) + +Sites like GitHub go a step farther than a generic image by actually creating an image for a repo on the fly, including details about the repo itself: + +![GitHub's og:image for the redwood repo](https://opengraph.githubassets.com/322ce8081bb85a86397a59494eab1c0fbe942b5104461f625e2c973c46ae4179/redwoodjs/redwood) + +If you want to write your own `` tags, skipping the interpolation that `` does for you, you can pass them as children to `` or just write them into the `` tag as normal. + +### `` Props + +For the most part `` creates simple `` tags based on the structure of the props you pass in. There are a couple of special behaviors described below. + +#### Plain Key/Value Props + +Any "plain" key/value prop will be turned into a `` tag with `name` and `content` attributes: + +```jsx + +// generates + +``` + +Child elements are just copied 1:1 to the resulting output: + +```jsx + + + +// generates + + +``` + +#### Passing Objects to Props + +Any props that contain an object will create a `` tag with `property` and `content` attributes, and the `property` being the names of the nested keys with a `:` between each: + +```jsx + +// generates + +``` + +This is most commonly used to create the "nested" structure that a spec like OpenGraph uses: + +```jsx + +// generates + +``` + +You can create multiple `` tags with the same name/property (allowed by the OpenGraph spec) by using an array: + +```jsx + +// generates + + +``` + +You can combine nested objects with strings to create any structure you like: + +```jsx + +// generates + + + + + + + +``` + +#### Special OpenGraph Helpers + +If you define _any_ `og` prop, we will copy any `title` and `description` to an `og:title` and `og:description`: + +```jsx + +// generates + + +``` + +You can override this behavior by explicitly setting `og:title` or `og:description` to `null`: + +```jsx + +// generates + +``` + +Of course, if you don't want any auto-generated `og` tags, then don't include any `og` prop at all! + +In addition to `og:title` and `og:description`, if you define _any_ `og` prop we will generate an `og:type` set to `website`: + +```jsx + +// generates + +``` + +You can override the `og:type` by setting it directly: + +```jsx + +// generates + +``` + +#### Other Special Cases + +If you define a `title` prop we will automatically prepend a `` tag to the output: + +```jsx +<Metadata title="My Website" /> +// generates +<title>My Website + +``` + +If you define a `charSet` prop we will create a `` tag with the `charset` attribute: + +```jsx + +// generates + +``` + +We simplified some of the examples above by excluding the generated `` and `og:type` tags, so here's the real output if you included `title` and `og` props: + +```jsx +<Metadata title="My Website" og /> +// generates +<title>My Website + + + + +``` + +:::info Do I need to apply these same tags over and over in every page? + +Some `` tags, like `charset` or `locale` are probably applicable to the entire site, in which case it would be simpler to just include these once in your `index.html` instead of having to set them manually on each and every page/cell of your site. + +::: + +This should allow you to create a fairly full-featured set of `` tags with minimal special syntax! A typical `` invocation could look like: + +```jsx + +``` + +## Dynamic tags + +Bots will pick up our tags if we've prerendered the page, but what if we want to set the `` based on the output of the Cell? + +:::info Prerendering + +As of v3.x, Redwood supports prerendering your [Cells](https://redwoodjs.com/docs/cells) with the data you were querying. For more information please refer [to this section](https://redwoodjs.com/docs/prerender#cell-prerendering). + +::: + +Let's say in our `PostCell`, we want to set the title to match the `Post`. + +```jsx +import { Metadata } from '@redwoodjs/web' + +import Post from 'src/components/Post/Post' + +export const QUERY = gql` + query FindPostById($id: Int!) { + post: post(id: $id) { + title + snippet + author { + name + } + } + } +` + +export const Loading = /* ... */ + +export const Empty = /* ... */ + +export const Success = ({ post }) => { + return ( + <> + + + + ) +} +``` + +Once the `Success` component renders, it will update your page's `` and set the relevant `<meta>` tags for you! diff --git a/docs/versioned_docs/version-6.0/serverless-functions.md b/docs/versioned_docs/version-6.x/serverless-functions.md similarity index 98% rename from docs/versioned_docs/version-6.0/serverless-functions.md rename to docs/versioned_docs/version-6.x/serverless-functions.md index fc327a39063e..c0c53fc8a846 100644 --- a/docs/versioned_docs/version-6.0/serverless-functions.md +++ b/docs/versioned_docs/version-6.x/serverless-functions.md @@ -2,10 +2,19 @@ description: Create, develop, and run serverless functions --- -# Serverless Functions +# Serverless Functions (API Endpoints) <!-- `redwood.toml`—`api/src/functions` by default. --> + +:::info + +You can think of serverless functions as API Endpoints, and in the future we'll update the terminology used. + +Originally, Redwood apps were intended to be deployed as serverless functions to AWS Lambda. Whenever a Redwood app is deployed to a "serverful" environment such as Fly or Render, a Fastify server is started and your Redwood app's functions in `api/src/functions` are automatically registered onto the server. Request adapters are also automatically configured to handle the translation between Fastify's request and reply objects to the functions' AWS Lambda signature. + +::: + Redwood looks for serverless functions in `api/src/functions`. Each function is mapped to a URI based on its filename. For example, you can find `api/src/functions/graphql.js` at `http://localhost:8911/graphql`. ## Creating Serverless Functions @@ -34,12 +43,6 @@ export const handler = async (event, context) => { } ``` -:::info - -We call them 'serverless' but they can also be used on 'serverful' hosted environments too, such as Render or Heroku. - -::: - ## The handler For a lambda function to be a lambda function, it must export a handler that returns a status code. The handler receives two arguments: `event` and `context`. Whatever it returns is the `response`, which should include a `statusCode` at the very least. diff --git a/docs/versioned_docs/version-6.0/services.md b/docs/versioned_docs/version-6.x/services.md similarity index 98% rename from docs/versioned_docs/version-6.0/services.md rename to docs/versioned_docs/version-6.x/services.md index eecf04215ded..52bb916f0a8a 100644 --- a/docs/versioned_docs/version-6.0/services.md +++ b/docs/versioned_docs/version-6.x/services.md @@ -618,7 +618,7 @@ validate(input.value, 'Value', { ``` ### validateWithSync() -`validateWith()` is simply given a function to execute. This function should throw with a message if there is a problem, otherwise do nothing. +`validateWithSync()` is simply given a function to execute. This function should throw with a message if there is a problem, otherwise do nothing. ```jsx validateWithSync(() => { @@ -636,14 +636,14 @@ validateWithSync(() => { Either of these errors will be caught and re-thrown as a `ServiceValidationError` with your text as the `message` of the error (although technically you should always throw errors with `new Error()` like in the second example). -You could just write your own function and throw whatever you like, without using `validateWith()`. But, when accessing your Service function through GraphQL, that error would be swallowed and the user would simply see "Something went wrong" for security reasons: error messages could reveal source code or other sensitive information so most are hidden. Errors thrown by Service Validations are considered "safe" and allowed to be shown to the client. +You could just write your own function and throw whatever you like, without using `validateWithSync()`. But, when accessing your Service function through GraphQL, that error would be swallowed and the user would simply see "Something went wrong" for security reasons: error messages could reveal source code or other sensitive information so most are hidden. Errors thrown by Service Validations are considered "safe" and allowed to be shown to the client. -### validateWithSync() +### validateWith() -The same behavior as `validateWithSync()` but works with Promises. +The same behavior as `validateWithSync()` but works with Promises. Remember to `await` the validation. ```jsx -validateWithSync(async () => { +await validateWith(async () => { if (await db.products.count() >= 100) { throw "There can only be a maximum of 100 products in your store" } @@ -1114,7 +1114,7 @@ const updateUser = async ({ id, input }) => { }) ``` -:::caution +:::warning When explicitly deleting cache keys like this you could find yourself going down a rabbit hole. What if there is another service somewhere that also updates user? Or another service that updates an organization, as well as all of its underlying child users at the same time? You'll need to be sure to call `deleteCacheKey()` in these places as well. As a general guideline, it's better to come up with a cache key that encapsulates any triggers for when the data has changed (like the `updatedAt` timestamp, which will change no matter who updates the user, anywhere in your codebase). diff --git a/docs/versioned_docs/version-6.0/storybook.md b/docs/versioned_docs/version-6.x/storybook.md similarity index 100% rename from docs/versioned_docs/version-6.0/storybook.md rename to docs/versioned_docs/version-6.x/storybook.md diff --git a/docs/versioned_docs/version-6.0/testing.md b/docs/versioned_docs/version-6.x/testing.md similarity index 98% rename from docs/versioned_docs/version-6.0/testing.md rename to docs/versioned_docs/version-6.x/testing.md index 426038a6b85a..13bebbcec89d 100644 --- a/docs/versioned_docs/version-6.0/testing.md +++ b/docs/versioned_docs/version-6.x/testing.md @@ -274,6 +274,7 @@ render(<Article article={ title: 'Foobar' } />, { }) ``` ::: + ### Mocking useLocation To mock `useLocation` in your component tests, wrap the component with `LocationProvider`: @@ -288,6 +289,22 @@ render( ) ``` +### Mocking useParams + +To mock `useParams` in your component tests, wrap the component with `ParamsProvider`: + +```jsx +import { ParamsProvider } from '@redwoodjs/router'; + +render( + <ParamsProvider allParams={{ param1: 'val1', param2: 'val2' }}> + <Component /> + </ParamsProvider> +) +``` + +The `allParams` argument accepts an object that will provide parameters as you expect them from the query parameters of a URL string. In the above example, we are assuming the URL looks like `/?param1=val1¶m2=val2`. + ### Queries In most cases you will want to exclude the design elements and structure of your components from your test. Then you're free to redesign the component all you want without also having to make the same changes to your test suite. Let's look at some of the functions that React Testing Library provides (they call them "[queries](https://testing-library.com/docs/queries/about/)") that let you check for *parts* of the rendered component, rather than a full string match. @@ -1131,9 +1148,9 @@ export default NameForm Now, we can extend the `test` file which Redwood generated. We're going to want to: -1) Import `waitFor` from the `@redwoodjs/testing/web` library. -2) Add an import to `@testing-library/user-event` for its `default`. -3) Provide an `onSubmit` prop to our "renders successfully" test. +1. Import `waitFor` from the `@redwoodjs/testing/web` library. +2. Add an import to `@testing-library/user-event` for its `default`. +3. Provide an `onSubmit` prop to our "renders successfully" test. ```jsx title="NameForm.test.js" import { render, screen, waitFor } from '@redwoodjs/testing/web' @@ -1154,9 +1171,9 @@ describe('NameForm', () => { Finally, we'll create three simple tests which ensure our form works as expected. -1) Does our component NOT submit when required fields are empty? -2) Does our component submit when required fields are populated? -3) Does our component submit, passing our (submit) handler the data we entered? +1. Does our component NOT submit when required fields are empty? +2. Does our component submit when required fields are populated? +3. Does our component submit, passing our (submit) handler the data we entered? The important takeaways are: @@ -1261,7 +1278,7 @@ Does anyone else find it confusing that the software itself is called a "databas When you start your test suite you may notice some output from Prisma talking about migrating the database. Redwood will automatically run `yarn rw prisma db push` against your test database to make sure it's up-to-date. -:::caution What if I have custom migration SQL? +:::warning What if I have custom migration SQL? The `prisma db push` command only restores a snapshot of the current database schema (so that it runs as fast as possible). **It does not actually run migrations in sequence.** This can cause a [problem](https://github.com/redwoodjs/redwood/issues/5818) if you have certain database configuration that *must* occur as a result of the SQL statements inside the migration files. @@ -1958,6 +1975,16 @@ console.log(testCacheClient.storage) This is mainly helpful when you are testing for a very specific value, or have edgecases in how the serialization/deserialization works in the cache. +## Testing Mailer + +If your project uses [RedwoodJS Mailer](./mailer.md) to send emails, you can [also write tests](./mailer.md#testing) to make sure that email: + +* is sent to an sandbox inbox +* renders properly +* sets the expected to, from, cc, bcc, subject attributes based on the email sending logic +* checks that the html and text content is set correctly + +Since these tests send mail to a sandbox inbox, you can be confident that no emails accidentally get sent into the wild as part of your test or CI runs. ## Wrapping Up diff --git a/docs/versioned_docs/version-6.x/toast-notifications.md b/docs/versioned_docs/version-6.x/toast-notifications.md new file mode 100644 index 000000000000..9b22ee524bd4 --- /dev/null +++ b/docs/versioned_docs/version-6.x/toast-notifications.md @@ -0,0 +1,133 @@ +--- +description: Toast notifications with react-hot-toast +--- + +# Toast Notifications + +Did you know that those little popup notifications that you sometimes see at the top of a page after you've performed an action are affectionately known as "toast" notifications? +Because they pop up like a piece of toast from a toaster! + +![Example toast animation](https://user-images.githubusercontent.com/300/110032806-71024680-7ced-11eb-8d69-7f462929815e.gif) + +Redwood supports these notifications out of the box thanks to the [react-hot-toast](https://react-hot-toast.com/) package. +We'll refer you to their [docs](https://react-hot-toast.com/docs) since they're very thorough, but here's enough to get you going. + +### Add the `Toaster` Component + +To render toast notifications, start by adding the `Toaster` component. +It's usually better to add it at the App or Layout-level than the Page: + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +// highlight-next-line +import { Toaster } from '@redwoodjs/web/toast' + +const MainLayout = ({ children }) => { + return ( + <> + // highlight-next-line + <Toaster /> + <main>{children}</main> + </> + ) +} + +export default MainLayout +``` + +### Call the `toast` function + +To render a basic toast notification with default styles, call the `toast` function: + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION) + + const onSubmit = async (data) => { + try { + await create({ variables: { input: data }}) + // highlight-next-line + toast('Post created') + } + catch (e) { + // highlight-next-line + toast('Error creating post') + } + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +### Call the `toast` variants + +To render a toast notification with default icons and default styles, call the `toast` variants: + +```jsx title="web/src/components/PostForm/PostForm.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION, { + onCompleted: () => { + // highlight-next-line + toast.success('Post created') + } + onError: () => { + // highlight-next-line + toast.error('Error creating post') + } + }) + + const onSubmit = (data) => { + create({ variables: { input: data }}) + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +or render an async toast by calling the `toast.promise` function: + +```jsx title="web/src/components/PostForm/PostForm.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION) + + const onSubmit = (data) => { + // highlight-next-line + toast.promise(create({ variables: { input: data }}), { + loading: 'Creating post...', + success: 'Post created', + error: 'Error creating post', + }) + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +:::warning + +You can't use the [onError](https://www.apollographql.com/docs/react/api/react/hooks/#onerror) callback in combination with the `toast.promise` function. + +::: diff --git a/docs/versioned_docs/version-6.0/tutorial/afterword.md b/docs/versioned_docs/version-6.x/tutorial/afterword.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/afterword.md rename to docs/versioned_docs/version-6.x/tutorial/afterword.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter0/what-is-redwood.md b/docs/versioned_docs/version-6.x/tutorial/chapter0/what-is-redwood.md similarity index 91% rename from docs/versioned_docs/version-6.0/tutorial/chapter0/what-is-redwood.md rename to docs/versioned_docs/version-6.x/tutorial/chapter0/what-is-redwood.md index 652f36148400..e779cafefdf2 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter0/what-is-redwood.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter0/what-is-redwood.md @@ -28,10 +28,10 @@ You can start them both with a single command: `yarn redwood dev` ### The Router -When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declaritive Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: +When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declarative Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: ```jsx -import { Set, Router, Route } from '@redwoodjs/router' +import { Route, Router, Set, PrivateSet } from '@redwoodjs/router' import ApplicationLayout from 'src/layouts/ApplicationLayout' import { useAuth } from './auth' @@ -41,10 +41,10 @@ const Routes = () => { <Set wrap={ApplicationLayout}> <Route path="/login" page={LoginPage} name="login" /> <Route path="/signup" page={SignupPage} name="signup" /> - <Private unauthenticated="login"> + <PrivateSet unauthenticated="login"> <Route path="/dashboard" page={DashboardPage} name="dashboard" /> <Route path="/products/{sku}" page={ProductsPage} name="products" /> - </Private> + </PrivateSet> </Set> <Route path="/" page={HomePage} name="home" /> @@ -54,7 +54,7 @@ const Routes = () => { } ``` -You can probably get a sense of how all of this works without ever having seen a Redwood route before! Some routes can be marked as `<Private>` and will not be accessible without being logged in. Others can be wrapped in a "layout" (again, just a React component) to provide common styling shared between pages in your app. +You can probably get a sense of how all of this works without ever having seen a Redwood route before! Some routes can be marked as `<PrivateSet>` and will not be accessible without being logged in. Others can be wrapped in a "layout" (again, just a React component) to provide common styling shared between pages in your app. #### Prerender @@ -66,7 +66,7 @@ This is Redwood's version of static site generation, aka SSG. ### Authentication -The `<Private>` route limits access to users that are authenticated, but how do they authenticate? Redwood includes integrations to many popular third party authentication hosts (including [Auth0](https://auth0.com/), [Supabase](https://supabase.com/docs/guides/auth) and [Clerk](https://clerk.com/)). You can also [host your own auth](https://redwoodjs.com/docs/auth/dbauth), or write your own [custom authentication](https://redwoodjs.com/docs/auth/custom) option. If going self-hosted, we include login, signup, and reset password pages, as well as the option to include TouchID/FaceID and third party biometric readers! +The `<PrivateSet>` route limits access to users that are authenticated, but how do they authenticate? Redwood includes integrations to many popular third party authentication hosts (including [Auth0](https://auth0.com/), [Supabase](https://supabase.com/docs/guides/auth) and [Clerk](https://clerk.com/)). You can also [host your own auth](https://redwoodjs.com/docs/auth/dbauth), or write your own [custom authentication](https://redwoodjs.com/docs/auth/custom) option. If going self-hosted, we include login, signup, and reset password pages, as well as the option to include TouchID/FaceID and third party biometric readers! Once authenticated, how do you know what a user is allowed to do or not do? Redwood includes helpers for [role-based access control](https://redwoodjs.com/docs/how-to/role-based-access-control-rbac) that integrates on both the front- and backend. @@ -99,7 +99,7 @@ Going back to our testimonals hypothetical, a cell to fetch and display them may ```js export const QUERY = gql` query GetTestimonials { - testimonals { + testimonials { id author quote @@ -122,11 +122,11 @@ export const Success = ({ testimonials }) => { } ``` -(In this case we don't export `Empty` so that if there aren't any, that section of the final page won't render anything, not even indicating to the user that something is missing.) +(In this case we don't export `Empty` so that if there aren't any testimonials, that section of the final page won't render anything, not even indicating to the user that something is missing.) If you ever create additional clients for your server (a mobile app, perhaps) you'll be giving yourself a huge advantage by using GraphQL from the start. -Oh, and prerendering also works with cells! At build time, Redwood will start up the GraphQL server and make requests, just as if a user was access the pages, rendering the result to plain HTML, ready to be loaded instantly by the browser. +Oh, and prerendering also works with cells! At build time, Redwood will start up the GraphQL server and make requests, just as if a user was accessing the pages, rendering the result to plain HTML, ready to be loaded instantly by the browser. ### Apollo Cache @@ -170,7 +170,7 @@ model Testimonial { } ``` -Prisma has a couple command line tools that take changes to this file and turn them into [SQL DDL commands](https://www.sqlshack.com/sql-ddl-getting-started-with-sql-ddl-commands-in-sql-server/) which are executed against your database to update its structure to match. +Prisma has a couple of command line tools that take changes to this file and turn them into [SQL DDL commands](https://www.sqlshack.com/sql-ddl-getting-started-with-sql-ddl-commands-in-sql-server/) which are executed against your database to update its structure to match. #### GraphQL @@ -234,7 +234,7 @@ export const schema = gql` ` ``` -The `testimonials` query is marked with the [GraphQL directive](../../directives.md) `@skipAuth` meaning that requests here should *not* be limited to authenticated users. However, the critical `createTestimonail` and `deleteTestimonial` mutations are marked `@requireAuth`, and so can only be called by a logged in user. +The `testimonials` query is marked with the [GraphQL directive](../../directives.md) `@skipAuth` meaning that requests here should *not* be limited to authenticated users. However, the critical `createTestimonial` and `deleteTestimonial` mutations are marked `@requireAuth`, and so can only be called by a logged in user. Redwood's backend GraphQL server is powered by [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server) and so you have access to everything that makes Yoga secure and performant: rate and depth limiting, logging, directives, and a ton more. @@ -275,7 +275,7 @@ There's even an interactive console that lets you, for example, execute Prisma q ## Jest -Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicty. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). +Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicity. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). Redwood includes several Jest helpers and matchers, allowing you to mock out GraphQL requests, database data, logged in users, and more. diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/file-structure.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/file-structure.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/file-structure.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/file-structure.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/first-page.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/first-page.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/first-page.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/first-page.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/installation.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/installation.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/installation.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/installation.md index 26df59ca3c32..266664f74687 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter1/installation.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter1/installation.md @@ -24,6 +24,7 @@ You'll have a new directory `redwoodblog` containing several directories and fil ```bash cd redwoodblog +yarn install yarn redwood dev ``` diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/layouts.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/layouts.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/layouts.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/layouts.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/prerequisites.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/prerequisites.md similarity index 89% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/prerequisites.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/prerequisites.md index 4013773b7d2c..094a84230861 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter1/prerequisites.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter1/prerequisites.md @@ -31,7 +31,7 @@ If you have an existing site created with a prior version, you'll need to upgrad During installation, RedwoodJS checks if your system meets version requirements for Node and Yarn: - node: "=18.x" -- yarn: ">=1.15" +- yarn: ">=1.22.21" If you're using a version of Node or Yarn that's **less** than what's required, _the installation bootstrap will result in an ERROR_. To check, please run the following from your terminal command line: @@ -46,14 +46,21 @@ Please do upgrade accordingly. Then proceed to the Redwood installation when you There are many ways to install and manage both Node.js and Yarn. If you're installing for the first time, we recommend the following: -**1. Yarn** -We recommend following the [instructions via Yarnpkg.com](https://yarnpkg.com/getting-started/install). - -**2. Node.js** +**1. Node.js** Using the recommended [LTS version from Nodejs.org](https://nodejs.org/en/) is preferred. - `nvm` is a great tool for managing multiple versions of Node on one system. It takes a bit more effort to set up and learn, however. Follow the [nvm installation instructions](https://github.com/nvm-sh/nvm#installing-and-updating). (Windows users should go to [nvm-windows](https://github.com/coreybutler/nvm-windows/releases)). For **Mac** users with Homebrew installed, you can alternatively use it to [install `nvm`](https://formulae.brew.sh/formula/nvm). Or, refer to our how to guide [using nvm](../../how-to/using-nvm.md). +**2. Yarn** +As of Node.js v18+, Node.js ships with a CLI tool called [Corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html) to manage package managers. All you have to do is enable it, then you'll have Yarn: + +``` +corepack enable +yarn -v +``` + +The version of Yarn will probably be `1.22.21`, but don't worry—in your Redwood project, Corepack will know to use a modern version of Yarn because of the `packageManager` field in the root `package.json`. + **Windows:** Recommended Development Setup - JavaScript development on Windows has specific requirements in addition to Yarn and npm. Follow our simple setup guide: diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/second-page.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/second-page.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/second-page.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/second-page.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/cells.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/cells.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/cells.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/cells.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/getting-dynamic.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/getting-dynamic.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/getting-dynamic.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/getting-dynamic.md index 627de868701e..c67b0712b314 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter2/getting-dynamic.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter2/getting-dynamic.md @@ -135,7 +135,7 @@ Okay but what if we click "Delete"? So, Redwood just created all the pages, components and services necessary to perform all CRUD actions on our posts table. No need to even open Prisma Studio or login through a terminal window and write SQL from scratch. Redwood calls these _scaffolds_. -:::caution +:::warning If you head back to VSCode at some point and get a notice in one of the generated Post cells about `Cannot query "posts" on type "Query"` don't worry: we've seen this from time to time on some systems. There are two easy fixes: diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/routing-params.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/routing-params.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/routing-params.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/routing-params.md index dbeb77632382..ff502bb040ac 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter2/routing-params.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter2/routing-params.md @@ -349,7 +349,7 @@ export const Success = ({ article }) => { <TabItem value="ts" label="TypeScript"> ```tsx title="web/src/components/ArticleCell/ArticleCell.tsx" -import type { FindArticleQuery } from 'types/graphql' +import type { FindArticleQuery, FindArticleQueryVariables } from 'types/graphql' import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' export const QUERY = gql` @@ -775,7 +775,7 @@ export const Success = ({ article }) => { // highlight-next-line import Article from 'src/components/Article' -import type { FindArticleQuery } from 'types/graphql' +import type { FindArticleQuery, FindArticleQueryVariables } from 'types/graphql' import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' export const QUERY = gql` diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/side-quest.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/side-quest.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/side-quest.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/side-quest.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter3/forms.md b/docs/versioned_docs/version-6.x/tutorial/chapter3/forms.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter3/forms.md rename to docs/versioned_docs/version-6.x/tutorial/chapter3/forms.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter3/saving-data.md b/docs/versioned_docs/version-6.x/tutorial/chapter3/saving-data.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter3/saving-data.md rename to docs/versioned_docs/version-6.x/tutorial/chapter3/saving-data.md index 67b8c1f8de47..7b4732c5c14a 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter3/saving-data.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter3/saving-data.md @@ -1795,7 +1795,7 @@ const [create, { loading, error }] = useMutation< </TabItem> </Tabs> -:::caution +:::warning You can put the email validation back into the `<TextField>` now, but you should leave the server validation in place, just in case. diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter4/authentication.md b/docs/versioned_docs/version-6.x/tutorial/chapter4/authentication.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter4/authentication.md rename to docs/versioned_docs/version-6.x/tutorial/chapter4/authentication.md index 562d7b34b0a3..c42b3fb7d393 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter4/authentication.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter4/authentication.md @@ -95,7 +95,7 @@ Redwood includes [integrations](../../authentication.md) for several of the most - [Auth0](https://auth0.com/) - [Clerk](https://clerk.dev/) - [Netlify Identity](https://docs.netlify.com/visitor-access/identity/) -- [Firebase's GoogleAuthProvider](https://firebase.google.com/docs/reference/js/firebase.auth.GoogleAuthProvider) +- [Firebase's GoogleAuthProvider](https://firebase.google.com/docs/reference/js/v8/firebase.auth.GoogleAuthProvider) - [Supabase](https://supabase.io/docs/guides/auth) - [SuperTokens](https://supertokens.com) @@ -202,7 +202,7 @@ Going to the admin section now prevents a non-logged in user from seeing posts, ```jsx title="web/src/Routes.jsx" // highlight-next-line -import { Private, Router, Route, Set } from '@redwoodjs/router' +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' import ScaffoldLayout from 'src/layouts/ScaffoldLayout' import BlogLayout from 'src/layouts/BlogLayout' diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter4/deployment.md b/docs/versioned_docs/version-6.x/tutorial/chapter4/deployment.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter4/deployment.md rename to docs/versioned_docs/version-6.x/tutorial/chapter4/deployment.md index fd273091f468..bf7376195eb3 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter4/deployment.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter4/deployment.md @@ -87,7 +87,7 @@ This adds a `netlify.toml` config file in the root of the project that is good t And with that, we're ready to setup Netlify itself. -:::caution +:::warning While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/first-story.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/first-story.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/first-story.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/first-story.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/first-test.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/first-test.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/first-test.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/first-test.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/storybook.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/storybook.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/storybook.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/storybook.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/testing.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/testing.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/testing.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/testing.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/comment-form.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/comment-form.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/comment-form.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/comment-form.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/comments-schema.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/comments-schema.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/comments-schema.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/comments-schema.md index 421bfb51b2e5..243488167736 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter6/comments-schema.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter6/comments-schema.md @@ -685,7 +685,7 @@ export const standard = defineScenario({ </TabItem> <TabItem value="ts" label="TypeScript"> -```javascript title="api/src/services/comments/comments.scenarios.ts" +```ts title="api/src/services/comments/comments.scenarios.ts" import type { Prisma } from '@prisma/client' export const standard = defineScenario<Prisma.CommentCreateArgs>({ diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/multiple-comments.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/multiple-comments.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/multiple-comments.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/multiple-comments.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/the-redwood-way.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/the-redwood-way.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/the-redwood-way.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/the-redwood-way.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter7/api-side-currentuser.md b/docs/versioned_docs/version-6.x/tutorial/chapter7/api-side-currentuser.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter7/api-side-currentuser.md rename to docs/versioned_docs/version-6.x/tutorial/chapter7/api-side-currentuser.md index 105cc05349ce..bce5ffaa2efd 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter7/api-side-currentuser.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter7/api-side-currentuser.md @@ -112,7 +112,7 @@ Whoops! Similar to what happened when we added `roles` to `User`, We made `userId` a required field, but we already have several posts in our development database. Since we don't have a default value for `userId` defined, it's impossible to add this column to the database. -:::caution Why don't we just set `@default(1)` in the schema? +:::warning Why don't we just set `@default(1)` in the schema? This would get us past this problem, but could cause hard-to-track-down bugs in the future: if you ever forget to assign a `post` to a `user`, rather than fail it'll happily just set `userId` to `1`, which may or may not even exist some day! It's best to take the extra time to do things The Right Way and avoid the quick hacks to get past an annoyance like this. Your future self will thank you! @@ -605,7 +605,7 @@ Finally, we'll need to update several of the scaffold components to use the new ```javascript title="web/src/components/Post/EditPostCell/EditPostCell.js" export const QUERY = gql` - query FindPostById($id: Int!) { + query EditPostById($id: Int!) { // highlight-next-line post: adminPost(id: $id) { id diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter7/rbac.md b/docs/versioned_docs/version-6.x/tutorial/chapter7/rbac.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter7/rbac.md rename to docs/versioned_docs/version-6.x/tutorial/chapter7/rbac.md index bac9123c38c4..490b98a4d5ac 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter7/rbac.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter7/rbac.md @@ -178,14 +178,14 @@ The easiest way to prevent access to an entire URL is via the Router. The `<Priv ```tsx title="web/src/Routes.tsx" // highlight-next-line -<Private unauthenticated="home" roles="admin"> +<PrivateSet unauthenticated="home" roles="admin"> <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> <Route path="/admin/posts" page={PostPostsPage} name="posts" /> </Set> -</Private> +</PrivateSet> ``` </TabItem> @@ -228,7 +228,7 @@ Which should return the new content of the user: } ``` -:::caution +:::warning If you re-used the same console session from the previous section, you'll need to quit it and start it again for it to know about the new Prisma data structure. If you still can't get the update to work, maybe your user doesn't have an `id` of `1`! Run `db.user.findMany()` first and then get the `id` of the user you want to update. @@ -895,7 +895,7 @@ describe('Comment', () => { We moved the default `comment` object to a constant `COMMENT` and then used that in all tests. We also needed to add `waitFor()` since the `hasRole()` check in the Comment itself actually executes some GraphQL calls behind the scenes to figure out who the user is. The test suite makes mocked GraphQL calls, but they're still asynchronous and need to be waited for. If you don't wait, then `currentUser` will be `null` when the test starts, and Jest will be happy with that result. But we won't—we need to wait for the actual value from the GraphQL call. -:::caution Seeing errors in your test suite? +:::warning Seeing errors in your test suite? We added fields to the database and sometimes the test runner doesn't realize this. You may need to restart it to get the test database migrated to match what's in `schema.prisma`. Press `q` or `Ctrl-C` in your test runner if it's still running, then: diff --git a/docs/versioned_docs/version-6.0/tutorial/foreword.md b/docs/versioned_docs/version-6.x/tutorial/foreword.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/foreword.md rename to docs/versioned_docs/version-6.x/tutorial/foreword.md index f6b44e65c5de..ec1f1810ed40 100644 --- a/docs/versioned_docs/version-6.0/tutorial/foreword.md +++ b/docs/versioned_docs/version-6.x/tutorial/foreword.md @@ -24,7 +24,7 @@ They might look like this... ::: -:::caution +:::warning or sometimes like this... diff --git a/docs/versioned_docs/version-6.0/tutorial/intermission.md b/docs/versioned_docs/version-6.x/tutorial/intermission.md similarity index 97% rename from docs/versioned_docs/version-6.0/tutorial/intermission.md rename to docs/versioned_docs/version-6.x/tutorial/intermission.md index 0416b563de5b..793730157af2 100644 --- a/docs/versioned_docs/version-6.0/tutorial/intermission.md +++ b/docs/versioned_docs/version-6.x/tutorial/intermission.md @@ -34,9 +34,9 @@ yarn rw dev If you haven't been through the first tutorial, or maybe you went through it on an older version of Redwood (anything pre-0.41) you can clone [this repo](https://github.com/redwoodjs/redwood-tutorial) which contains everything built so far and also adds a little styling so it isn't quite so...tough to look at. The example repo includes [TailwindCSS](https://tailwindcss.com) to style things up and adds a `<div>` or two to give us some additional hooks to hang styling on. -:::caution The TypeScript version of the Example Repo is currently in progress +:::warning The TypeScript version of the Example Repo is currently in progress -If you want to complete the tutorial in TypeScript, continue with your own repo, making any necessary edits. Don't worry, the remainder of the tutorial continues to offer both TypeScript and JavaScript example code changes. +If you want to complete the tutorial in TypeScript, continue with your own repo, making any necessary edits. Don't worry, the remainder of the tutorial continues to offer both TypeScript and JavaScript example code changes. ::: diff --git a/docs/versioned_docs/version-6.0/typescript/generated-types.md b/docs/versioned_docs/version-6.x/typescript/generated-types.md similarity index 84% rename from docs/versioned_docs/version-6.0/typescript/generated-types.md rename to docs/versioned_docs/version-6.x/typescript/generated-types.md index 76d33cb1b451..644cc7b39bd4 100644 --- a/docs/versioned_docs/version-6.0/typescript/generated-types.md +++ b/docs/versioned_docs/version-6.x/typescript/generated-types.md @@ -164,9 +164,40 @@ You can configure graphql-codegen in a number of different ways: `codegen.yml`, For completeness, [here's the docs](https://www.graphql-code-generator.com/docs/config-reference/config-field) on configuring GraphQL Code Generator. Currently, Redwood only supports the root level `config` option. +## Experimental SDL Code Generation + +There is also an experimental code generator based on [sdl-codegen](https://github.com/sdl-codegen/sdl-codegen) available. sdl-codegen is a fresh implementation of code generation for service files, built with Redwood in mind. It is currently in opt-in and can be enabled by setting the `experimentalSdlCodeGen` flag to `true` in your `redwood.toml` file: + +```toml title="redwood.toml" +[experimental] + useSDLCodeGenForGraphQLTypes = true +``` + +Running `yarn rw g types` will generate types for your resolvers on a per-file basis, this feature can be paired with the optional eslint auto-fix rule to have types automatically applied to your resolvers in TypeScript service files by editing your root `package.json` with: + +```diff title="package.json" + "eslintConfig": { + "extends": "@redwoodjs/eslint-config", + "root": true, + "parserOptions": { + "warnOnUnsupportedTypeScriptVersion": false + }, ++ "overrides": [ ++ { ++ "files": [ ++ "api/src/services/**/*.ts" ++ ], ++ "rules": { ++ "@redwoodjs/service-type-annotations": "error" ++ } ++ } + ] + }, +``` + :::tip Using VSCode? -As a part of type generation, the [VSCode GraphQL extension](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql) configures itself based on the merged schema Redwood generates in `.redwood/schema.graphql`. +As a part of type generation, the extension [GraphQL: Language Feature Support](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql) configures itself based on the merged schema Redwood generates in `.redwood/schema.graphql`. You can configure it further in `graphql.config.js` at the root of your project. ::: diff --git a/docs/versioned_docs/version-6.0/typescript/introduction.md b/docs/versioned_docs/version-6.x/typescript/introduction.md similarity index 100% rename from docs/versioned_docs/version-6.0/typescript/introduction.md rename to docs/versioned_docs/version-6.x/typescript/introduction.md diff --git a/docs/versioned_docs/version-6.0/typescript/strict-mode.md b/docs/versioned_docs/version-6.x/typescript/strict-mode.md similarity index 100% rename from docs/versioned_docs/version-6.0/typescript/strict-mode.md rename to docs/versioned_docs/version-6.x/typescript/strict-mode.md diff --git a/docs/versioned_docs/version-6.0/typescript/utility-types.md b/docs/versioned_docs/version-6.x/typescript/utility-types.md similarity index 100% rename from docs/versioned_docs/version-6.0/typescript/utility-types.md rename to docs/versioned_docs/version-6.x/typescript/utility-types.md diff --git a/docs/versioned_docs/version-6.0/vite-configuration.md b/docs/versioned_docs/version-6.x/vite-configuration.md similarity index 100% rename from docs/versioned_docs/version-6.0/vite-configuration.md rename to docs/versioned_docs/version-6.x/vite-configuration.md diff --git a/docs/versioned_docs/version-6.0/webhooks.md b/docs/versioned_docs/version-6.x/webhooks.md similarity index 98% rename from docs/versioned_docs/version-6.0/webhooks.md rename to docs/versioned_docs/version-6.x/webhooks.md index 706c37abb8f6..a185c7ebc4fa 100644 --- a/docs/versioned_docs/version-6.0/webhooks.md +++ b/docs/versioned_docs/version-6.x/webhooks.md @@ -214,6 +214,14 @@ This is a variation on the SHA256 HMAC verification that works with binary buffe Svix (and by extension, Clerk) gives you a secret token that it uses to create a hash signature with each payload. This hash signature is included with the headers of each request as `svix-signature`. +> Some production environments, like Vercel, might base64 encode the request body string. In that case, the body must be conditionally parsed. +> ```js +> export const handler = async (event: APIGatewayEvent) => { +> const body = event.isBase64Encoded +> ? Buffer.from(event.body, 'base64').toString('utf-8') +> : event.body +> ``` + ```tsx import type { APIGatewayEvent } from 'aws-lambda' import { diff --git a/docs/versioned_sidebars/version-6.0-sidebars.json b/docs/versioned_sidebars/version-6.x-sidebars.json similarity index 99% rename from docs/versioned_sidebars/version-6.0-sidebars.json rename to docs/versioned_sidebars/version-6.x-sidebars.json index 0c1cd6bfca01..f87cb7b22ca3 100644 --- a/docs/versioned_sidebars/version-6.0-sidebars.json +++ b/docs/versioned_sidebars/version-6.x-sidebars.json @@ -195,15 +195,18 @@ ] }, "directives", + "docker", "environment-variables", "forms", "graphql", "local-postgres-setup", "logger", + "mailer", "mocking-graphql-requests", "prerender", "project-configuration-dev-test-build", "redwoodrecord", + "realtime", "router", "schema-relations", "security", diff --git a/docs/versions.json b/docs/versions.json index 369cac7b1a7a..522a40321d91 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,5 +1,5 @@ [ - "6.0", + "6.x", "5.x", "4.x", "3.x", From eb799e0959b83a2439e9fb123a078168e1cc0bd3 Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 18:48:25 -0800 Subject: [PATCH 112/119] chore(docs): align v6 docs with the next branch (#10034) This PR checks out the v6.x docs from the next branch and deletes the v6.0 docs on this branch. This is just standard procedure when we release a major. The next branch has the latest v6 docs (before it was v6.0 to v6.4, but they've been compressed to v6.x), while the main branch has the latest canary docs. Before we release a major and make a new next branch, we want the latest version of the v6 docs so that we can continue serving them under that tag on the docs site. Most of the file changes are just moves because most docs received zero edits in minors 6.1 to 6.4. This is accomplished via `git checkout next -- docs/docs` and then undoing some changes, especially those to files in `docs/docs`. --- docs/docs/authentication.md | 23 +- docs/docs/router.md | 18 +- .../docs/tutorial/chapter0/what-is-redwood.md | 2 +- docs/docs/tutorial/chapter4/authentication.md | 4 +- docs/docs/tutorial/chapter7/rbac.md | 10 +- docs/docusaurus.config.ts | 2 +- docs/netlify.toml | 109 ++- docs/versioned_docs/version-6.0/seo-head.md | 152 ---- .../version-6.0/toast-notifications.md | 66 -- .../{version-6.0 => version-6.x}/a11y.md | 0 .../app-configuration-redwood-toml.md | 2 +- .../assets-and-files.md | 0 .../auth/auth0.md | 2 +- .../auth/azure.md | 0 .../auth/clerk.md | 16 +- .../auth/custom.md | 0 .../auth/dbauth.md | 4 +- .../auth/firebase.md | 0 .../auth/netlify.md | 0 .../auth/supabase.md | 0 .../auth/supertokens.md | 60 +- .../authentication.md | 12 +- .../{version-6.0 => version-6.x}/builds.md | 0 .../{version-6.0 => version-6.x}/cells.md | 2 +- .../cli-commands.md | 52 +- .../connection-pooling.md | 0 .../contributing-overview.md | 0 .../contributing-walkthrough.md | 0 .../{version-6.0 => version-6.x}/cors.md | 0 .../create-redwood-app.md | 2 +- .../custom-web-index.md | 2 +- .../data-migrations.md | 0 .../deploy/baremetal.md | 10 +- .../deploy/coherence.md | 2 +- .../deploy/edgio.md | 0 .../deploy/flightcontrol.md | 0 .../deploy/introduction.md | 0 .../deploy/netlify.md | 2 +- .../deploy/render.md | 0 .../deploy/serverless.md | 0 .../deploy/vercel.md | 15 + .../directives.md | 0 docs/versioned_docs/version-6.x/docker.md | 468 ++++++++++++ .../environment-variables.md | 0 .../{version-6.0 => version-6.x}/forms.md | 0 .../{version-6.0 => version-6.x}/graphql.md | 18 +- .../how-to/background-worker.md | 0 .../build-dashboards-fast-with-tremor.md | 0 .../how-to/custom-function.md | 0 .../how-to/dbauth-passwordless.md | 2 +- .../how-to/disable-api-database.md | 0 .../how-to/file-uploads.md | 0 .../how-to/gotrue-auth.md | 0 .../how-to/mocking-graphql-in-storybook.md | 0 .../how-to/oauth.md | 138 ++-- .../how-to/pagination.md | 0 .../how-to/role-based-access-control.md | 8 +- .../how-to/self-hosting-redwood.md | 2 +- .../how-to/sending-emails.md | 0 .../how-to/supabase-auth.md | 0 .../how-to/test-in-github-actions.md | 2 +- .../how-to/using-a-third-party-api.md | 0 .../how-to/using-nvm.md | 4 +- .../how-to/using-yarn.md | 2 +- .../how-to/windows-development-setup.md | 0 .../intro-to-servers.md | 2 +- .../introduction.md | 5 +- .../local-postgres-setup.md | 0 .../{version-6.0 => version-6.x}/logger.md | 0 docs/versioned_docs/version-6.x/mailer.md | 289 +++++++ .../mocking-graphql-requests.md | 0 .../{version-6.0 => version-6.x}/prerender.md | 4 +- .../project-configuration-dev-test-build.mdx | 63 +- .../quick-start.md | 2 +- docs/versioned_docs/version-6.x/realtime.md | 706 ++++++++++++++++++ .../redwoodrecord.md | 0 .../{version-6.0 => version-6.x}/router.md | 39 +- .../schema-relations.md | 2 +- .../{version-6.0 => version-6.x}/security.md | 0 docs/versioned_docs/version-6.x/seo-head.md | 356 +++++++++ .../serverless-functions.md | 17 +- .../{version-6.0 => version-6.x}/services.md | 12 +- .../{version-6.0 => version-6.x}/storybook.md | 0 .../{version-6.0 => version-6.x}/testing.md | 41 +- .../version-6.x/toast-notifications.md | 133 ++++ .../tutorial/afterword.md | 0 .../tutorial/chapter0/what-is-redwood.md | 24 +- .../tutorial/chapter1/file-structure.md | 0 .../tutorial/chapter1/first-page.md | 0 .../tutorial/chapter1/installation.md | 1 + .../tutorial/chapter1/layouts.md | 0 .../tutorial/chapter1/prerequisites.md | 17 +- .../tutorial/chapter1/second-page.md | 0 .../tutorial/chapter2/cells.md | 0 .../tutorial/chapter2/getting-dynamic.md | 2 +- .../tutorial/chapter2/routing-params.md | 4 +- .../tutorial/chapter2/side-quest.md | 0 .../tutorial/chapter3/forms.md | 0 .../tutorial/chapter3/saving-data.md | 2 +- .../tutorial/chapter4/authentication.md | 4 +- .../tutorial/chapter4/deployment.md | 2 +- .../tutorial/chapter5/first-story.md | 0 .../tutorial/chapter5/first-test.md | 0 .../tutorial/chapter5/storybook.md | 0 .../tutorial/chapter5/testing.md | 0 .../tutorial/chapter6/comment-form.md | 0 .../tutorial/chapter6/comments-schema.md | 2 +- .../tutorial/chapter6/multiple-comments.md | 0 .../tutorial/chapter6/the-redwood-way.md | 0 .../tutorial/chapter7/api-side-currentuser.md | 4 +- .../tutorial/chapter7/rbac.md | 8 +- .../tutorial/foreword.md | 2 +- .../tutorial/intermission.md | 4 +- .../typescript/generated-types.md | 33 +- .../typescript/introduction.md | 0 .../typescript/strict-mode.md | 0 .../typescript/utility-types.md | 0 .../vite-configuration.md | 0 .../{version-6.0 => version-6.x}/webhooks.md | 8 + ...idebars.json => version-6.x-sidebars.json} | 3 + docs/versions.json | 2 +- 121 files changed, 2518 insertions(+), 488 deletions(-) delete mode 100644 docs/versioned_docs/version-6.0/seo-head.md delete mode 100644 docs/versioned_docs/version-6.0/toast-notifications.md rename docs/versioned_docs/{version-6.0 => version-6.x}/a11y.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/app-configuration-redwood-toml.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/assets-and-files.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/auth0.md (94%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/azure.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/clerk.md (93%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/custom.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/dbauth.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/firebase.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/netlify.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/supabase.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/auth/supertokens.md (58%) rename docs/versioned_docs/{version-6.0 => version-6.x}/authentication.md (96%) rename docs/versioned_docs/{version-6.0 => version-6.x}/builds.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/cells.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/cli-commands.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/connection-pooling.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/contributing-overview.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/contributing-walkthrough.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/cors.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/create-redwood-app.md (95%) rename docs/versioned_docs/{version-6.0 => version-6.x}/custom-web-index.md (96%) rename docs/versioned_docs/{version-6.0 => version-6.x}/data-migrations.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/baremetal.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/coherence.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/edgio.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/flightcontrol.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/introduction.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/netlify.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/render.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/serverless.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/deploy/vercel.md (88%) rename docs/versioned_docs/{version-6.0 => version-6.x}/directives.md (100%) create mode 100644 docs/versioned_docs/version-6.x/docker.md rename docs/versioned_docs/{version-6.0 => version-6.x}/environment-variables.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/forms.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/graphql.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/background-worker.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/build-dashboards-fast-with-tremor.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/custom-function.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/dbauth-passwordless.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/disable-api-database.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/file-uploads.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/gotrue-auth.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/mocking-graphql-in-storybook.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/oauth.md (91%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/pagination.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/role-based-access-control.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/self-hosting-redwood.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/sending-emails.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/supabase-auth.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/test-in-github-actions.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/using-a-third-party-api.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/using-nvm.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/using-yarn.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/how-to/windows-development-setup.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/intro-to-servers.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/introduction.md (91%) rename docs/versioned_docs/{version-6.0 => version-6.x}/local-postgres-setup.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/logger.md (100%) create mode 100644 docs/versioned_docs/version-6.x/mailer.md rename docs/versioned_docs/{version-6.0 => version-6.x}/mocking-graphql-requests.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/prerender.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/project-configuration-dev-test-build.mdx (84%) rename docs/versioned_docs/{version-6.0 => version-6.x}/quick-start.md (99%) create mode 100644 docs/versioned_docs/version-6.x/realtime.md rename docs/versioned_docs/{version-6.0 => version-6.x}/redwoodrecord.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/router.md (94%) rename docs/versioned_docs/{version-6.0 => version-6.x}/schema-relations.md (95%) rename docs/versioned_docs/{version-6.0 => version-6.x}/security.md (100%) create mode 100644 docs/versioned_docs/version-6.x/seo-head.md rename docs/versioned_docs/{version-6.0 => version-6.x}/serverless-functions.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/services.md (98%) rename docs/versioned_docs/{version-6.0 => version-6.x}/storybook.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/testing.md (98%) create mode 100644 docs/versioned_docs/version-6.x/toast-notifications.md rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/afterword.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter0/what-is-redwood.md (91%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/file-structure.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/first-page.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/installation.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/layouts.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/prerequisites.md (89%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter1/second-page.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/cells.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/getting-dynamic.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/routing-params.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter2/side-quest.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter3/forms.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter3/saving-data.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter4/authentication.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter4/deployment.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/first-story.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/first-test.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/storybook.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter5/testing.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/comment-form.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/comments-schema.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/multiple-comments.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter6/the-redwood-way.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter7/api-side-currentuser.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/chapter7/rbac.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/foreword.md (99%) rename docs/versioned_docs/{version-6.0 => version-6.x}/tutorial/intermission.md (97%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/generated-types.md (84%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/introduction.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/strict-mode.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/typescript/utility-types.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/vite-configuration.md (100%) rename docs/versioned_docs/{version-6.0 => version-6.x}/webhooks.md (98%) rename docs/versioned_sidebars/{version-6.0-sidebars.json => version-6.x-sidebars.json} (99%) diff --git a/docs/docs/authentication.md b/docs/docs/authentication.md index cef3754ea978..88506057eb2f 100644 --- a/docs/docs/authentication.md +++ b/docs/docs/authentication.md @@ -5,7 +5,7 @@ description: Set up an authentication provider # Authentication Redwood has integrated auth end to end, from the web side to the api side. -On the web side, the router can protect pages via the `Private` component (or the `Set` component via the `private` prop), and even restrict access at the role-level. +On the web side, the router can protect pages via the `PrivateSet` component, and even restrict access at the role-level. And if you'd prefer to work with the primitives, the `useAuth` hook exposes all the pieces to build the experience you want. Likewise, the api side is locked down by default: all SDLs are generated with the `@requireAuth` directive, ensuring that making things publicly available is something that you opt in to rather than out of. @@ -117,11 +117,11 @@ Much of what the functions it returns do is self explanatory, but the options th ### Protecting routes -You can require that a user be authenticated to navigate to a route by wrapping it in the `Private` component or the `Set` component with the `private` prop set to `true`. +You can require that a user be authenticated to navigate to a route by wrapping it in the `PrivateSet` component. An unauthenticated user will be redirected to the route specified in either component's `unauthenticated` prop: ```tsx title="web/src/Routes.tsx" -import { Router, Route, Private } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -129,21 +129,20 @@ const Routes = () => { <Route path="/" page={HomePage} name="home" /> <Route path="/login" page={LoginPage} name="login" /> - // highlight-start + // highlight-next-line <PrivateSet unauthenticated="login"> - // highlight-end <Route path="/admin" page={AdminPage} name="admin" /> <Route path="/secret-page" page={SecretPage} name="secret" /> - <PrivateSet> + </PrivateSet> </Router> ) } ``` -You can also restrict access by role by passing a role or an array of roles to the `Private` or `Set` component's `hasRole` prop: +You can also restrict access by role by passing a role or an array of roles to the `PrivateSet` component's `hasRole` prop: ```tsx title="web/src/Routes.tsx" -import { Router, Route, Private, Set } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -154,17 +153,17 @@ const Routes = () => { <PrivateSet unauthenticated="login"> <Route path="/secret-page" page={SecretPage} name="secret" /> - <PrivateSet> + </PrivateSet> // highlight-next-line - <Set private unauthenticated="forbidden" hasRole="admin"> + <PrivateSet unauthenticated="forbidden" hasRole="admin"> <Route path="/admin" page={AdminPage} name="admin" /> - </Set> + </PrivateSet> // highlight-next-line <PrivateSet unauthenticated="forbidden" hasRole={['author', 'editor']}> <Route path="/posts" page={PostsPage} name="posts" /> - <PrivateSet> + </PrivateSet> </Router> ) } diff --git a/docs/docs/router.md b/docs/docs/router.md index a1f50712a599..860327c1fcda 100644 --- a/docs/docs/router.md +++ b/docs/docs/router.md @@ -44,7 +44,7 @@ The `path` prop specifies the URL path to match, starting with the beginning sla ## Private Routes -Some pages should only be visible to authenticated users. +Some pages should only be visible to authenticated users. We support this using the `PrivateSet` component. Read more [further down](#privateset). ## Sets of Routes @@ -87,7 +87,7 @@ Conceptually, this fits with how we think about Context and Layouts as things th There's a lot of flexibility here. You can even nest `Sets` to great effect: ```jsx title="Routes.js" -import { Router, Route, Set, Private } from '@redwoodjs/router' +import { Router, Route, Set } from '@redwoodjs/router' import BlogContext from 'src/contexts/BlogContext' import BlogLayout from 'src/layouts/BlogLayout' import BlogNavLayout from 'src/layouts/BlogNavLayout' @@ -132,7 +132,7 @@ becomes... A `PrivateSet` makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the `PrivateSet`, they'll be redirected to the Route passed as the `PrivateSet`'s `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. -Here's an example of how you'd use a private set: +Here's an example of how you'd use a `PrivateSet`: ```jsx title="Routes.js" <Router> @@ -145,7 +145,7 @@ Here's an example of how you'd use a private set: For more fine-grained control, you can specify `roles` (which takes a string for a single role or an array of roles), and the router will check to see that the current user is authorized before giving them access to the Route. If they're not, they will be redirected to the page specified in the `unauthenticated` prop, such as a "forbidden" page. Read more about Role-based Access Control in Redwood [here](how-to/role-based-access-control.md). -To protect `Private` routes for access by a single role: +To protect private routes for access by a single role: ```jsx title="Routes.js" <Router> @@ -157,7 +157,7 @@ To protect `Private` routes for access by a single role: </Router> ``` -To protect `Private` routes for access by multiple roles: +To protect private routes for access by multiple roles: ```jsx title="Routes.js" <Router> @@ -613,7 +613,7 @@ Redwood will detect your explicit import and refrain from splitting that page in Because lazily-loaded pages can take a non-negligible amount of time to load (depending on bundle size and network connection), you may want to show a loading indicator to signal to the user that something is happening after they click a link. -In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `Private` component. +In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `PrivateSet` component. ```jsx title="Routes.js" import SkeletonLoader from 'src/components/SkeletonLoader' @@ -659,7 +659,7 @@ When the lazy-loaded page is loading, `PageLoadingContext.Consumer` will pass `{ Let's say you have a dashboard area on your Redwood app, which can only be accessed after logging in. When Redwood Router renders your private page, it will first fetch the user's details, and only render the page if it determines the user is indeed logged in. -In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your private `<Route>` or `<PrivateSet>` component: +In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your `PrivateSet` component: ```jsx //Routes.js @@ -675,7 +675,7 @@ In order to display a loader while auth details are being retrieved you can add <Route path="/dashboard" page={DashboardHomePage} name="dashboard" /> {/* other routes */} - <PrivateSet> + </PrivateSet> </Router> ``` @@ -762,7 +762,7 @@ Note that if you're copy-pasting this example, it uses [Tailwind CSS](https://ta :::note Can I customize the development one? -As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page - but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). +As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page, but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). ::: diff --git a/docs/docs/tutorial/chapter0/what-is-redwood.md b/docs/docs/tutorial/chapter0/what-is-redwood.md index cae5b7f0565f..e779cafefdf2 100644 --- a/docs/docs/tutorial/chapter0/what-is-redwood.md +++ b/docs/docs/tutorial/chapter0/what-is-redwood.md @@ -31,7 +31,7 @@ You can start them both with a single command: `yarn redwood dev` When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declarative Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: ```jsx -import { Set, Router, Route } from '@redwoodjs/router' +import { Route, Router, Set, PrivateSet } from '@redwoodjs/router' import ApplicationLayout from 'src/layouts/ApplicationLayout' import { useAuth } from './auth' diff --git a/docs/docs/tutorial/chapter4/authentication.md b/docs/docs/tutorial/chapter4/authentication.md index 08bcc2228812..c42b3fb7d393 100644 --- a/docs/docs/tutorial/chapter4/authentication.md +++ b/docs/docs/tutorial/chapter4/authentication.md @@ -202,7 +202,7 @@ Going to the admin section now prevents a non-logged in user from seeing posts, ```jsx title="web/src/Routes.jsx" // highlight-next-line -import { Private, Router, Route, Set } from '@redwoodjs/router' +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' import ScaffoldLayout from 'src/layouts/ScaffoldLayout' import BlogLayout from 'src/layouts/BlogLayout' @@ -241,7 +241,7 @@ export default Routes ```jsx title="web/src/Routes.tsx" // highlight-next-line -import { Private, Router, Route, Set } from '@redwoodjs/router' +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' import ScaffoldLayout from 'src/layouts/ScaffoldLayout' import BlogLayout from 'src/layouts/BlogLayout' diff --git a/docs/docs/tutorial/chapter7/rbac.md b/docs/docs/tutorial/chapter7/rbac.md index 605409e86f0c..490b98a4d5ac 100644 --- a/docs/docs/tutorial/chapter7/rbac.md +++ b/docs/docs/tutorial/chapter7/rbac.md @@ -156,21 +156,21 @@ export const hasRole = (roles: AllowedRoles): boolean => { ### Restricting Access via Routes -The easiest way to prevent access to an entire URL is via the Router. The `<Private>` component takes a prop `roles` in which you can give a list of only those role(s) that should have access: +The easiest way to prevent access to an entire URL is via the Router. The `<PrivateSet>` component takes a prop `roles` in which you can give a list of only those role(s) that should have access: <Tabs groupId="js-ts"> <TabItem value="js" label="JavaScript"> ```jsx title="web/src/Routes.jsx" // highlight-next-line -<Private unauthenticated="home" roles="admin"> +<PrivateSet unauthenticated="home" roles="admin"> <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> <Route path="/admin/posts" page={PostPostsPage} name="posts" /> </Set> -</Private> +</PrivateSet> ``` </TabItem> @@ -178,14 +178,14 @@ The easiest way to prevent access to an entire URL is via the Router. The `<Priv ```tsx title="web/src/Routes.tsx" // highlight-next-line -<Private unauthenticated="home" roles="admin"> +<PrivateSet unauthenticated="home" roles="admin"> <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> <Route path="/admin/posts" page={PostPostsPage} name="posts" /> </Set> -</Private> +</PrivateSet> ``` </TabItem> diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts index 2ec259ca2192..ff65baf284ae 100644 --- a/docs/docusaurus.config.ts +++ b/docs/docusaurus.config.ts @@ -34,7 +34,7 @@ const config: Config = { indexName: 'learn-redwood', contextualSearch: true, searchParameters: {}, - externalUrlRegex: 'https://learn-redwood.netlify.app', + // externalUrlRegex: 'https://learn-redwood.netlify.app', }, navbar: { title: 'RedwoodJS', diff --git a/docs/netlify.toml b/docs/netlify.toml index 2f07a9e47bc2..760ef715d5ad 100644 --- a/docs/netlify.toml +++ b/docs/netlify.toml @@ -214,7 +214,7 @@ to = "/docs/authentication#self-hosted-auth-installation-and-setup" status = 301 -# v1.0-v1.5 redirects (to v1.x) +# v1.0-v1.5 redirects [[redirects]] from = "/docs/1.0/*" @@ -246,7 +246,7 @@ to = "/docs/1.x/:splat" status = 301 -# v2.0-v2.2 redirects (to v2.x) +# v2.0-v2.2 redirects [[redirects]] from = "/docs/2.0/*" @@ -263,7 +263,7 @@ to = "/docs/2.x/:splat" status = 301 -# v3.0-v3.2 redirects (to v3.x) +# v3.0-v3.2 redirects [[redirects]] from = "/docs/3.0/*" @@ -280,6 +280,102 @@ to = "/docs/3.x/:splat" status = 301 +# v4 redirects + +[[redirects]] + from = "/docs/4.0/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.1/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.2/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.3/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.4/*" + to = "/docs/4.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/4.5/*" + to = "/docs/4.x/:splat" + status = 301 + +# v5 redirects + +[[redirects]] + from = "/docs/5.0/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.1/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.2/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.3/*" + to = "/docs/5.x/:splat" + status = 301 + +[[redirects]] + from = "/docs/5.4/*" + to = "/docs/5.x/:splat" + status = 301 + +# v6.0-v6.6 redirects + +[[redirects]] + from = "/docs/6.0/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.1/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.2/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.3/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.4/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.5/*" + to = "/docs/:splat" + status = 301 + +[[redirects]] + from = "/docs/6.6/*" + to = "/docs/:splat" + status = 301 + # Redirects for "Configuring Fastify" after the server file was released in v7 [[redirects]] @@ -296,3 +392,10 @@ from = "/docs/app-configuration-redwood-toml#how-to-configure-fastify-to-accept-file-uploads" to = "/docs/docker#configuring-the-server" status = 301 + +# This doc was moved in v7 as a part of https://github.com/redwoodjs/redwood/pull/9416. + +[[redirects]] + from = "/docs/mocking-graphql-requests" + to = "/docs/canary/graphql/mocking-graphql-requests" + status = 301 diff --git a/docs/versioned_docs/version-6.0/seo-head.md b/docs/versioned_docs/version-6.0/seo-head.md deleted file mode 100644 index 4b50350c6cdd..000000000000 --- a/docs/versioned_docs/version-6.0/seo-head.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -description: Use meta tags to set page info for SEO ---- - -# SEO & Meta tags - -## Add app title -You certainly want to change the title of your Redwood app. -You can start by adding or modify `title` inside `redwood.toml` - -```diff -[web] -- title = "Redwood App" -+ title = "My Cool App" - port = 8910 - apiUrl = "/.redwood/functions" -``` -This title (the app title) is used by default for all your pages if you don't define another one. -It will also be use for the title template ! -### Title template -Now that you have the app title set, you probably want some consistence with the page title, that's what the title template is for. - -Add `titleTemplate` as a prop for `RedwoodProvider` to have a title template for every pages - -In _web/src/App.\{tsx,js\}_ -```diff -- <RedwoodProvider> -+ <RedwoodProvider titleTemplate="%PageTitle | %AppTitle"> - /* ... */ - <RedwoodProvider /> -``` - -You can write the format you like. - -_Examples :_ -```jsx -"%PageTitle | %AppTitle" => "Home Page | Redwood App" - -"%AppTitle · %PageTitle" => "Redwood App · Home Page" - -"%PageTitle : %AppTitle" => "Home Page : Redwood App" -``` - -So now in your page you only need to write the title of the page. - -## Adding to page `<head>` -So you want to change the title of your page, or add elements to the `<head>` of the page? We've got you! - - -Let's say you want to change the title of your About page, -Redwood provides a built in `<Head>` component, which you can use like this - - -In _AboutPage/AboutPage.\{tsx,js\}_ -```diff -+import { Head } from '@redwoodjs/web' - -const AboutPage = () => { - return ( - <div> - <h2>AboutPage</h2> -+ <Head> -+ <title>About the team -+ -``` - -You can include any valid `` tag in here that you like, but just to make things easier we also have a utility component [MetaTags](#setting-meta-tags-open-graph-directives). - -### What about nested tags? -Redwood uses [react-helmet-async](https://github.com/staylor/react-helmet-async) underneath, which will use the tags furthest down your component tree. - -For example, if you set title in your Layout, and a title in your Page, it'll render the one in Page - this way you can override the tags you wish, while sharing the tags defined in Layout. - - -> **Side note** -> for these headers to appear to bots and scrapers e.g. for twitter to show your title, you have to make sure your page is prerendered -> If your content is static you can use Redwood's built in [Prerender](prerender.md). For dynamic tags, check the [Dynamic head tags](#dynamic-tags) - -## Setting meta tags / open graph directives -Often we want to set more than just the title - most commonly to set "og" headers. Og standing for -[open graph](https://ogp.me/) of course. - -Redwood provides a convenience component `` to help you get all the relevant tags with one go (but you can totally choose to do them yourself) - -Here's an example setting some common headers, including how to set an `og:image` -```jsx -import { MetaTags } from '@redwoodjs/web' - -const AboutPage = () => { - return ( -
-

AboutPage

- -

This is the about page!

-
- ) -} - -export default AboutPage -``` - -This is great not just for link unfurling on say Facebook or Slack, but also for SEO. Take a look at the [source](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/MetaTags.tsx#L83) if you're curious what tags get set here. - - -## Dynamic tags -Great - so far we can see the changes, and bots will pick up our tags if we've prerendered the page, but what if I want to set the header based on the output of the Cell? - -> **Prerendering cells**
-> As of v3.x, Redwood supports prerendering your [Cells](https://redwoodjs.com/docs/cells) with the data you were querying. For more information please refer [to this section](https://redwoodjs.com/docs/prerender#cell-prerendering). - - -Let's say in our PostCell, we want to set the title to match the Post. -```jsx -import Post from 'src/components/Post/Post' - -export const QUERY = gql` - query FindPostById($id: Int!) { - post: post(id: $id) { - title - snippet - author { - name - } - } - } -` - -export const Loading = /* ... */ - -export const Empty = /* ... */ - -export const Success = ({ post }) => { - return ( - <> - - - - ) -} -``` -Once the success component renders, it'll update your page's title and set the relevant meta tags for you! diff --git a/docs/versioned_docs/version-6.0/toast-notifications.md b/docs/versioned_docs/version-6.0/toast-notifications.md deleted file mode 100644 index 0dab206bd67b..000000000000 --- a/docs/versioned_docs/version-6.0/toast-notifications.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -description: Toast notifications with react-hot-toast ---- - -# Toast Notifications - -Did you know that those little popup notifications that you sometimes see at the top of a page after you've performed an action are affectionately known as "toast" notifications? -Because they pop up like a piece of toast from a toaster! - -![Example toast animation](https://user-images.githubusercontent.com/300/110032806-71024680-7ced-11eb-8d69-7f462929815e.gif) - -Redwood supports these notifications out of the box thanks to the [react-hot-toast](https://react-hot-toast.com/) package. -We'll refer you to their [docs](https://react-hot-toast.com/docs) since they're very thorough, but here's enough to get you going. - -### Add the `Toaster` Component - -To render toast notifications, start by adding the `Toaster` component. -It's usually better to add it at the App or Layout-level than the Page: - -```jsx title="web/src/layouts/MainLayout/MainLayout.js" -// highlight-next-line -import { Toaster } from '@redwoodjs/web/toast' - -const MainLayout = ({ children }) => { - return ( - <> - // highlight-next-line - -
{children}
- - ) -} - -export default MainLayout -``` - -### Call the `toast` function - -To render a toast notification, call the `toast` function or one of its methods: - -```jsx title="web/src/components/PostForm/PostForm.js" -// highlight-next-line -import { toast } from '@redwoodjs/web/toast' - -// ... - -const PostForm = () => { - const onSubmit = () => { - try { - // Code to save a record... - // highlight-next-line - toast('User created!') - } catch (e) { - // There's also methods for default styling: - // highlight-next-line - toast.error("Error creating post...") - } - } - - return ( - // JSX... - ) -}) - -export default PostForm -``` diff --git a/docs/versioned_docs/version-6.0/a11y.md b/docs/versioned_docs/version-6.x/a11y.md similarity index 100% rename from docs/versioned_docs/version-6.0/a11y.md rename to docs/versioned_docs/version-6.x/a11y.md diff --git a/docs/versioned_docs/version-6.0/app-configuration-redwood-toml.md b/docs/versioned_docs/version-6.x/app-configuration-redwood-toml.md similarity index 99% rename from docs/versioned_docs/version-6.0/app-configuration-redwood-toml.md rename to docs/versioned_docs/version-6.x/app-configuration-redwood-toml.md index c009b12d1ac1..fee88a7b9cdc 100644 --- a/docs/versioned_docs/version-6.0/app-configuration-redwood-toml.md +++ b/docs/versioned_docs/version-6.x/app-configuration-redwood-toml.md @@ -290,7 +290,7 @@ api | 🗒 Custom api | "--------------------------e66d9a27b7c2b271\r\nContent-Disposition: attachment; name=\"image\"; filename=\"favicon.png\"\r\nContent-Type: image/png\r\n\r\n�PNG\r\n\u001a\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000 \u0000\u0000\u0000`�\r\n--------------------------e66d9a27b7c2b271--\r\n" ``` -:::caution File uploads only work in a serverful deploy +:::warning File uploads only work in a serverful deploy Serverless functions on Netlify or Vercel do not use this Fastify configuration. They also have memory and execution time limits that don't lend themselves to handling file uploads of any practical size. diff --git a/docs/versioned_docs/version-6.0/assets-and-files.md b/docs/versioned_docs/version-6.x/assets-and-files.md similarity index 100% rename from docs/versioned_docs/version-6.0/assets-and-files.md rename to docs/versioned_docs/version-6.x/assets-and-files.md diff --git a/docs/versioned_docs/version-6.0/auth/auth0.md b/docs/versioned_docs/version-6.x/auth/auth0.md similarity index 94% rename from docs/versioned_docs/version-6.0/auth/auth0.md rename to docs/versioned_docs/version-6.x/auth/auth0.md index b7a47f6f1ae2..a028f9418152 100644 --- a/docs/versioned_docs/version-6.0/auth/auth0.md +++ b/docs/versioned_docs/version-6.x/auth/auth0.md @@ -28,7 +28,7 @@ But where in your Redwood app exactly? Auth0 needs to know, and this setting tells it. We'll keep things simple for now and make it "http://localhost:8910", but feel free to configure it as you wish. -Paste "http://localhost:8910" in the text area below "Allowed Callback URLs", then click "Save Changes" at the bottom of the page. +Paste "http://localhost:8910" in the text areas below "Allowed Callback URLs", "Allowed Logout URLs" and "Allowed Web Origins" then click "Save Changes" at the bottom of the page. Copy this one over to your project's `.env` file too, as `AUTH0_REDIRECT_URI`. Ok, just one more to go: under "Applications" in the nav on the left, click "APIs". diff --git a/docs/versioned_docs/version-6.0/auth/azure.md b/docs/versioned_docs/version-6.x/auth/azure.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/azure.md rename to docs/versioned_docs/version-6.x/auth/azure.md diff --git a/docs/versioned_docs/version-6.0/auth/clerk.md b/docs/versioned_docs/version-6.x/auth/clerk.md similarity index 93% rename from docs/versioned_docs/version-6.0/auth/clerk.md rename to docs/versioned_docs/version-6.x/auth/clerk.md index ed71df136f8e..06266d0b4774 100644 --- a/docs/versioned_docs/version-6.0/auth/clerk.md +++ b/docs/versioned_docs/version-6.x/auth/clerk.md @@ -4,7 +4,7 @@ sidebar_label: Clerk # Clerk Authentication -:::caution Did you set up Clerk a while ago? +:::warning Did you set up Clerk a while ago? If you set up Clerk a while ago, you may be using a deprecated `authDecoder` that's subject to rate limiting. This decoder will be removed in the next major. @@ -56,10 +56,15 @@ Lastly, in your project's `redwood.toml` file, include `CLERK_PUBLISHABLE_KEY` i ``` That should be enough; now, things should just work. -Let's make sure: if this is a brand new project, generate a home page. +Let's make sure: if this is a brand new project, generate a home page: + +```bash +yarn rw g page Home / +``` + There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: -```tsx title="web/src/pages/HomePage.tsx" +```tsx title="web/src/pages/HomePage/HomePage.tsx" import { useAuth } from 'src/auth' const HomePage = () => { @@ -76,11 +81,8 @@ const HomePage = () => { } ``` -Clicking sign up should open a sign-up box: - -image +Clicking sign up should open a sign-up box and after you sign up, you should see `{"isAuthenticated":true}` on the page. -After you sign up, you should see `{"isAuthenticated":true}` on the page. ## Customizing the session token diff --git a/docs/versioned_docs/version-6.0/auth/custom.md b/docs/versioned_docs/version-6.x/auth/custom.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/custom.md rename to docs/versioned_docs/version-6.x/auth/custom.md diff --git a/docs/versioned_docs/version-6.0/auth/dbauth.md b/docs/versioned_docs/version-6.x/auth/dbauth.md similarity index 99% rename from docs/versioned_docs/version-6.0/auth/dbauth.md rename to docs/versioned_docs/version-6.x/auth/dbauth.md index 01d8c1d28f1e..b87d4cf3a9f3 100644 --- a/docs/versioned_docs/version-6.0/auth/dbauth.md +++ b/docs/versioned_docs/version-6.x/auth/dbauth.md @@ -337,7 +337,7 @@ yarn rw g secret ``` Note that the secret that's output is _not_ appended to your `.env` file or anything else, it's merely output to the screen. You'll need to put it in the right place after that. -:::caution .env and Version Control +:::warning .env and Version Control The `.env` file is set to be ignored by git and not committed to version control. There is another file, `.env.defaults`, which is meant to be safe to commit and contain simple ENV vars that your dev team can share. The encryption key for the session cookie is NOT one of these shareable vars! @@ -475,7 +475,7 @@ model UserCredential { Run `yarn rw prisma migrate dev` to apply the changes to your database. -:::caution Do Not Allow GraphQL Access to `UserCredential` +:::warning Do Not Allow GraphQL Access to `UserCredential` As you can probably tell by the name, this new model contains secret credential info for the user. You **should not** make this data publicly available by adding an SDL file to `api/src/graphql`. diff --git a/docs/versioned_docs/version-6.0/auth/firebase.md b/docs/versioned_docs/version-6.x/auth/firebase.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/firebase.md rename to docs/versioned_docs/version-6.x/auth/firebase.md diff --git a/docs/versioned_docs/version-6.0/auth/netlify.md b/docs/versioned_docs/version-6.x/auth/netlify.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/netlify.md rename to docs/versioned_docs/version-6.x/auth/netlify.md diff --git a/docs/versioned_docs/version-6.0/auth/supabase.md b/docs/versioned_docs/version-6.x/auth/supabase.md similarity index 100% rename from docs/versioned_docs/version-6.0/auth/supabase.md rename to docs/versioned_docs/version-6.x/auth/supabase.md diff --git a/docs/versioned_docs/version-6.0/auth/supertokens.md b/docs/versioned_docs/version-6.x/auth/supertokens.md similarity index 58% rename from docs/versioned_docs/version-6.0/auth/supertokens.md rename to docs/versioned_docs/version-6.x/auth/supertokens.md index d7d37bd0d740..8b0b6b97ca8a 100644 --- a/docs/versioned_docs/version-6.0/auth/supertokens.md +++ b/docs/versioned_docs/version-6.x/auth/supertokens.md @@ -11,18 +11,49 @@ yarn rw setup auth supertokens ``` This installs all the packages, writes all the files, and makes all the code modifications you need. + +:::info + +You may have noticed that in `api/src/functions/auth.ts` there's an import from `'supertokens-node/framework/awsLambda'`. This is fine, even if your app isn't running in a serverless environment like AWS Lambda. In "serverful" environments, Redwood automatically handles the translation between Fastify's request and reply objects and functions' AWS Lambda signature. + +::: + For a detailed explanation of all the api- and web-side changes that aren't exclusive to SuperTokens, see the top-level [Authentication](../authentication.md) doc. For now, let's focus on SuperTokens's side of things. When you run the setup command it configures your app to support both email+password logins as well as social auth logins (Apple, GitHub and Google). Working with those social auth logins does require quite a few environment variables. And SuperTokens itself needs a couple variables too. Thankfully SuperTokens makes this very easy to setup as they provide values we can use for testing. -So just copy this to your project's `.env` file. +# Environment variables -```bash title=".env" +The environment variables have to be added either to your project's `.env` file (when running in development environment), or to the environment variables of your hosting provider (when running in production). + +## Base setup + +```bash +SUPERTOKENS_APP_NAME="Redwoodjs App" # this will be used in the email template for password reset or email verification emails. SUPERTOKENS_JWKS_URL=http://localhost:8910/.redwood/functions/auth/jwt/jwks.json +SUPERTOKENS_CONNECTION_URI=https://try.supertokens.io # set to the correct connection uri +``` + +## Production setup + +Assuming that your web side is hosted on `https://myapp.com`: + +```bash +SUPERTOKENS_WEBSITE_DOMAIN=https://myapp.com +SUPERTOKENS_JWKS_URL=https://myapp.com/.redwood/functions/auth/jwt/jwks.json +``` -SUPERTOKENS_CONNECTION_URI=https://try.supertokens.io +## Managed Supertokens service setup +```bash +SUPERTOKENS_API_KEY=your-api-key # The value can be omitted when self-hosting Supertokens +``` + +## Social login setup +The following environment variables have to be set up (depending on the social login options): + +```bash SUPERTOKENS_APPLE_CLIENT_ID=4398792-io.supertokens.example.service SUPERTOKENS_APPLE_SECRET_KEY_ID=7M48Y4RYDL SUPERTOKENS_APPLE_SECRET_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgu8gXs+XYkqXD6Ala9Sf/iJXzhbwcoG5dMh1OonpdJUmgCgYIKoZIzj0DAQehRANCAASfrvlFbFCYqn3I2zeknYXLwtH30JuOKestDbSfZYxZNMqhF/OzdZFTV0zc5u5s3eN+oCWbnvl0hM+9IW0UlkdA\n-----END PRIVATE KEY----- @@ -33,7 +64,24 @@ SUPERTOKENS_GOOGLE_CLIENT_ID=1060725074195-kmeum4crr01uirfl2op9kd5acmi9jutn.apps SUPERTOKENS_GOOGLE_CLIENT_SECRET=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 ``` -That should be enough; now, things should just work. +## `redwood.toml` setup + +Make sure to modify `redwood.toml` to pass the required environment variables to the web side: + +```toml +[web] +... +includeEnvironmentVariables = [ + 'SUPERTOKENS_WEBSITE_DOMAIN', + 'SUPERTOKENS_API_DOMAIN', + 'SUPERTOKENS_API_GATEWAY_PATH', + 'SUPERTOKENS_APP_NAME' +] +``` + + +# Page setup + Let's make sure: if this is a brand new project, generate a home page. There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: @@ -65,3 +113,7 @@ Clicking sign up should navigate you to `/auth` where SuperToken's default login SuperTokens default UI After you sign up, you should be redirected back to your Redwood app, and you should see `{"isAuthenticated":true}` on the page. + +## Troubleshooting + +If going to `http://localhost:8910/auth` results in the plain Javascript file being served instead of the expected auth page, rename the `web/src/auth.tsx` file to `web/src/authentication.tsx`, and update the imports (related to https://github.com/redwoodjs/redwood/issues/9740). diff --git a/docs/versioned_docs/version-6.0/authentication.md b/docs/versioned_docs/version-6.x/authentication.md similarity index 96% rename from docs/versioned_docs/version-6.0/authentication.md rename to docs/versioned_docs/version-6.x/authentication.md index d026aa91bb17..88506057eb2f 100644 --- a/docs/versioned_docs/version-6.0/authentication.md +++ b/docs/versioned_docs/version-6.x/authentication.md @@ -5,7 +5,7 @@ description: Set up an authentication provider # Authentication Redwood has integrated auth end to end, from the web side to the api side. -On the web side, the router can protect pages via the `Private` component (or the `Set` component via the `private` prop), and even restrict access at the role-level. +On the web side, the router can protect pages via the `PrivateSet` component, and even restrict access at the role-level. And if you'd prefer to work with the primitives, the `useAuth` hook exposes all the pieces to build the experience you want. Likewise, the api side is locked down by default: all SDLs are generated with the `@requireAuth` directive, ensuring that making things publicly available is something that you opt in to rather than out of. @@ -129,10 +129,8 @@ const Routes = () => { - // highlight-start + // highlight-next-line - {/* Or... */} - // highlight-end @@ -144,7 +142,7 @@ const Routes = () => { You can also restrict access by role by passing a role or an array of roles to the `PrivateSet` component's `hasRole` prop: ```tsx title="web/src/Routes.tsx" -import { Router, Route, PrivateSet, Set } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -158,9 +156,9 @@ const Routes = () => { // highlight-next-line - + - + // highlight-next-line diff --git a/docs/versioned_docs/version-6.0/builds.md b/docs/versioned_docs/version-6.x/builds.md similarity index 100% rename from docs/versioned_docs/version-6.0/builds.md rename to docs/versioned_docs/version-6.x/builds.md diff --git a/docs/versioned_docs/version-6.0/cells.md b/docs/versioned_docs/version-6.x/cells.md similarity index 98% rename from docs/versioned_docs/version-6.0/cells.md rename to docs/versioned_docs/version-6.x/cells.md index 20c92ace2f37..0a7377cd6b54 100644 --- a/docs/versioned_docs/version-6.0/cells.md +++ b/docs/versioned_docs/version-6.x/cells.md @@ -409,4 +409,4 @@ export const Cell = () => { That's a lot of code. A lot of imperative code too. -We're basically just dumping the contents of [createCell.tsx](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/createCell.tsx) into this file. Can you imagine having to do this every time you wanted to fetch data that might be delayed in responding? Yikes. +We're basically just dumping the contents of [createCell.tsx](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/cell/createCell.tsx) into this file. Can you imagine having to do this every time you wanted to fetch data that might be delayed in responding? Yikes. diff --git a/docs/versioned_docs/version-6.0/cli-commands.md b/docs/versioned_docs/version-6.x/cli-commands.md similarity index 97% rename from docs/versioned_docs/version-6.0/cli-commands.md rename to docs/versioned_docs/version-6.x/cli-commands.md index c6fa2b18688c..0215aaa8b2ea 100644 --- a/docs/versioned_docs/version-6.0/cli-commands.md +++ b/docs/versioned_docs/version-6.x/cli-commands.md @@ -290,7 +290,7 @@ The following command will build, apply Prisma DB migrations, and skip data migr yarn redwood deploy netlify --no-data-migrate ``` -:::caution +:::warning While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. @@ -771,7 +771,7 @@ $ /redwood-app/node_modules/.bin/redwood g layout user Done in 1.00s. ``` -A layout will just export it's children: +A layout will just export its children: ```jsx title="./web/src/layouts/UserLayout/UserLayout.test.js" const UserLayout = ({ children }) => { @@ -1722,6 +1722,7 @@ yarn redwood setup | `deploy` | Set up a deployment configuration for a provider | | `generator` | Copy default Redwood generator templates locally for customization | | `i18n` | Set up i18n | +| `package` | Peform setup actions by running a third-party npm package | | `tsconfig` | Add relevant tsconfig so you can start using TypeScript | | `ui` | Set up a UI design or style library | | `webpack` | Set up a webpack config file in your project so you can add custom config | @@ -1779,7 +1780,7 @@ yarn redwood setup cache ### setup custom-web-index -:::caution This command only applies to projects using Webpack +:::warning This command only applies to projects using Webpack As of v6, all Redwood projects use Vite by default. When switching projects to Vite, we made the decision to add the the entry file, `web/src/entry.client.{jsx,tsx}`, back to projects. @@ -1903,6 +1904,51 @@ In order to use [Netlify Dev](https://www.netlify.com/products/dev/) you need to > Note: To detect the RedwoodJS framework, please use netlify-cli v3.34.0 or greater. +### setup mailer + +This command adds the necessary packages and files to get started using the RedwoodJS mailer. By default it also creates an example mail template which can be skipped with the `--skip-examples` flag. + +``` +yarn redwood setup mailer +``` + +| Arguments & Options | Description | +| :---------------------- | :----------------------------- | +| `--force, -f` | Overwrite existing files | +| `--skip-examples` | Do not include example content, such as a React email template | + +### setup package + +This command takes a published npm package that you specify, performs some compatibility checks, and then executes its bin script. This allows you to use third-party packages that can provide you with an easy-to-use setup command for the particular functionality they provide. + +This command behaves similarly to `yarn dlx` but will attempt to confirm compatibility between the package you are attempting to run and the current version of Redwood you are running. You can bypass this check by passing the `--force` flag if you feel you understand any potential compatibility issues. + +``` +yarn redwood setup package +``` + +| Arguments & Options | Description | +| :------------------ | :----------------------- | +| `--force, -f` | Forgo compatibility checks | + +**Usage** + +Run the made up `@redwoodjs/setup-example` package: +```bash +~/redwood-app$ yarn rw setup package @redwoodjs/setup-example +``` + +Run the same package but using a particular npm tag and avoiding any compatibility checks: +```bash +~/redwood-app$ yarn rw setup package @redwoodjs/setup-example@beta --force +``` + +**Compatibility Checks** + +We perform a simple compatibility check in an attempt to make you aware of potential compatibility issues with setup packages you might wish to run. This works by examining the version of `@redwoodjs/core` you are using within your root `package.json`. We compare this value with a compatibility range the npm package specifies in the `engines.redwoodjs` field of its own `package.json`. If the version of `@redwoodjs/core` you are using falls outside of the compatibility range specified by the package you are attempting to run, we will warn you and ask you to confirm that you wish to continue. + +It's the author of the npm package's responsibility to specify the correct compatibility range, so **you should always research the packages you use with this command**. Especially since they will be executing code on your machine! + ### setup tsconfig Add a `tsconfig.json` to both the web and api sides so you can start using [TypeScript](typescript/index). diff --git a/docs/versioned_docs/version-6.0/connection-pooling.md b/docs/versioned_docs/version-6.x/connection-pooling.md similarity index 100% rename from docs/versioned_docs/version-6.0/connection-pooling.md rename to docs/versioned_docs/version-6.x/connection-pooling.md diff --git a/docs/versioned_docs/version-6.0/contributing-overview.md b/docs/versioned_docs/version-6.x/contributing-overview.md similarity index 100% rename from docs/versioned_docs/version-6.0/contributing-overview.md rename to docs/versioned_docs/version-6.x/contributing-overview.md diff --git a/docs/versioned_docs/version-6.0/contributing-walkthrough.md b/docs/versioned_docs/version-6.x/contributing-walkthrough.md similarity index 100% rename from docs/versioned_docs/version-6.0/contributing-walkthrough.md rename to docs/versioned_docs/version-6.x/contributing-walkthrough.md diff --git a/docs/versioned_docs/version-6.0/cors.md b/docs/versioned_docs/version-6.x/cors.md similarity index 100% rename from docs/versioned_docs/version-6.0/cors.md rename to docs/versioned_docs/version-6.x/cors.md diff --git a/docs/versioned_docs/version-6.0/create-redwood-app.md b/docs/versioned_docs/version-6.x/create-redwood-app.md similarity index 95% rename from docs/versioned_docs/version-6.0/create-redwood-app.md rename to docs/versioned_docs/version-6.x/create-redwood-app.md index 2f1e600f5eda..c6244ac0e837 100644 --- a/docs/versioned_docs/version-6.0/create-redwood-app.md +++ b/docs/versioned_docs/version-6.x/create-redwood-app.md @@ -24,7 +24,7 @@ node -v If you need to update your version of Node or run multiple versions of Node, we recommend installing nvm and have [documentation about how to get up and running.](./how-to/using-nvm) -You also need to have yarn version 1.15 or higher installed. To see what version of yarn you're running, you can run the following command in your terminal: +You also need to have yarn version 1.22.21 or higher installed. To see what version of yarn you're running, you can run the following command in your terminal: ```terminal yarn -v diff --git a/docs/versioned_docs/version-6.0/custom-web-index.md b/docs/versioned_docs/version-6.x/custom-web-index.md similarity index 96% rename from docs/versioned_docs/version-6.0/custom-web-index.md rename to docs/versioned_docs/version-6.x/custom-web-index.md index 775fa2c891a8..8fd30f548856 100644 --- a/docs/versioned_docs/version-6.0/custom-web-index.md +++ b/docs/versioned_docs/version-6.x/custom-web-index.md @@ -4,7 +4,7 @@ description: Change how App mounts to the DOM # Custom Web Index -:::caution This doc only applies to projects using Webpack +:::warning This doc only applies to projects using Webpack As of v6, all Redwood projects use Vite by default. When switching projects to Vite, we made the decision to add the the entry file, `web/src/entry.client.{jsx,tsx}`, back to projects. diff --git a/docs/versioned_docs/version-6.0/data-migrations.md b/docs/versioned_docs/version-6.x/data-migrations.md similarity index 100% rename from docs/versioned_docs/version-6.0/data-migrations.md rename to docs/versioned_docs/version-6.x/data-migrations.md diff --git a/docs/versioned_docs/version-6.0/deploy/baremetal.md b/docs/versioned_docs/version-6.x/deploy/baremetal.md similarity index 97% rename from docs/versioned_docs/version-6.0/deploy/baremetal.md rename to docs/versioned_docs/version-6.x/deploy/baremetal.md index 4703a7910a37..aec882f28381 100644 --- a/docs/versioned_docs/version-6.0/deploy/baremetal.md +++ b/docs/versioned_docs/version-6.x/deploy/baremetal.md @@ -22,7 +22,7 @@ Subsequent deploys: yarn rw deploy baremetal production ``` -:::caution Deploying to baremetal is an advanced topic +:::warning Deploying to baremetal is an advanced topic If you haven't done any kind of remote server work before, you may be in a little over your head to start with. But don't worry: until relatively recently (cloud computing, serverless, lambda functions) this is how all websites were deployed, so we've got a good 30 years of experience getting this working! @@ -173,7 +173,7 @@ This lists a single server, in the `production` environment, providing the hostn * `branch` - [optional] The branch to deploy (defaults to `main`) * `keepReleases` - [optional] The number of previous releases to keep on the server, including the one currently being served (defaults to 5) -The easiest connection method is generally to include your own public key in the server's `~/.ssh/authorized_keys` file, [enable agent forwarding](https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding), and then set `agentForward = true` in `deploy.toml`. This will allow you to use your own credentials when pulling code from GitHub (required for private repos). Otherwise you can create a [deploy key](https://docs.github.com/en/developers/overview/managing-deploy-keys) and keep it on the server. +The easiest connection method is generally to include your own public key in the server's `~/.ssh/authorized_keys` mannually or by running `ssh-copy-id user@server.com` from your local machine, [enable agent forwarding](https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding), and then set `agentForward = true` in `deploy.toml`. This will allow you to use your own credentials when pulling code from GitHub (required for private repos). Otherwise you can create a [deploy key](https://docs.github.com/en/developers/overview/managing-deploy-keys) and keep it on the server. #### Using Environment Variables in `deploy.toml` @@ -274,7 +274,7 @@ sudo chown deploy:deploy /var/www/myapp You'll want to create an `.env` file in this directory containing any environment variables that are needed by your app (like `DATABASE_URL` at a minimum). This will be symlinked to each release directory so that it's available as the app expects (in the root directory of the codebase). -:::caution SSH and Non-interactive Sessions +:::warning SSH and Non-interactive Sessions The deployment process uses a '[non-interactive](https://tldp.org/LDP/abs/html/intandnonint.html)' SSH session to run commands on the remote server. A non-interactive session will often load a minimal amount of settings for better compatibility and speed. In some versions of Linux `.bashrc` by default does not load (by design) from a non-interactive session. This can lead to `yarn` (or other commands) not being found by the deployment script, even though they are in your path, because additional ENV vars are set in `~/.bashrc` which provide things like NPM paths and setup. @@ -418,7 +418,7 @@ pm2 startup You will see some output similar to the output below. We care about the output after "copy/paste the following command:" You'll need to do just that: copy the command starting with `sudo` and then paste and execute it. *Note* this command uses `sudo` so you'll need the root password to the machine in order for it to complete successfully. -:::caution +:::warning The below text is *example* output, yours will be different, don't copy and paste ours! @@ -467,7 +467,7 @@ You can define your before/after commands in three different places: * Environment specific - runs for only a single environment * Server specific - runs for only a single server in a single environment -:::caution +:::warning Custom commands are run in the new **deploy** directory, not the root of your application directory. During a deploy the `current` symlink will point to the previous directory while your code is executed in the new one, before the `current` symlink location is updated. diff --git a/docs/versioned_docs/version-6.0/deploy/coherence.md b/docs/versioned_docs/version-6.x/deploy/coherence.md similarity index 97% rename from docs/versioned_docs/version-6.0/deploy/coherence.md rename to docs/versioned_docs/version-6.x/deploy/coherence.md index 970eaa98fa31..a2b9ec845d2a 100644 --- a/docs/versioned_docs/version-6.0/deploy/coherence.md +++ b/docs/versioned_docs/version-6.x/deploy/coherence.md @@ -17,7 +17,7 @@ To deploy to Coherence, your Redwood project needs to be hosted on GitHub and yo ## Coherence Deploy -:::caution Prerender doesn't work with Coherence yet +:::warning Prerender doesn't work with Coherence yet You can see its current status and follow updates here on GitHub: https://github.com/redwoodjs/redwood/issues/8333. diff --git a/docs/versioned_docs/version-6.0/deploy/edgio.md b/docs/versioned_docs/version-6.x/deploy/edgio.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/edgio.md rename to docs/versioned_docs/version-6.x/deploy/edgio.md diff --git a/docs/versioned_docs/version-6.0/deploy/flightcontrol.md b/docs/versioned_docs/version-6.x/deploy/flightcontrol.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/flightcontrol.md rename to docs/versioned_docs/version-6.x/deploy/flightcontrol.md diff --git a/docs/versioned_docs/version-6.0/deploy/introduction.md b/docs/versioned_docs/version-6.x/deploy/introduction.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/introduction.md rename to docs/versioned_docs/version-6.x/deploy/introduction.md diff --git a/docs/versioned_docs/version-6.0/deploy/netlify.md b/docs/versioned_docs/version-6.x/deploy/netlify.md similarity index 99% rename from docs/versioned_docs/version-6.0/deploy/netlify.md rename to docs/versioned_docs/version-6.x/deploy/netlify.md index 4f5c87e217bd..ad62b9b5d8f5 100644 --- a/docs/versioned_docs/version-6.0/deploy/netlify.md +++ b/docs/versioned_docs/version-6.x/deploy/netlify.md @@ -13,7 +13,7 @@ If you simply want to experience the Netlify deployment process without a databa 3. run the command `yarn rw setup deploy netlify` and commit and push changes 4. use the Netlify [Quick Start](https://app.netlify.com/signup) to deploy -:::caution +:::warning While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. diff --git a/docs/versioned_docs/version-6.0/deploy/render.md b/docs/versioned_docs/version-6.x/deploy/render.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/render.md rename to docs/versioned_docs/version-6.x/deploy/render.md diff --git a/docs/versioned_docs/version-6.0/deploy/serverless.md b/docs/versioned_docs/version-6.x/deploy/serverless.md similarity index 100% rename from docs/versioned_docs/version-6.0/deploy/serverless.md rename to docs/versioned_docs/version-6.x/deploy/serverless.md diff --git a/docs/versioned_docs/version-6.0/deploy/vercel.md b/docs/versioned_docs/version-6.x/deploy/vercel.md similarity index 88% rename from docs/versioned_docs/version-6.0/deploy/vercel.md rename to docs/versioned_docs/version-6.x/deploy/vercel.md index 38beee72ec6d..5f4e6e33fe04 100644 --- a/docs/versioned_docs/version-6.0/deploy/vercel.md +++ b/docs/versioned_docs/version-6.x/deploy/vercel.md @@ -73,3 +73,18 @@ Go ahead, click that "Visit" button. You’ve earned it 🎉 From the Vercel Dashboard you can access the full settings and information for your Redwood App. The default settings seem to work just fine for most Redwood projects. Do take a look around, but be sure check out the [docs as well](https://vercel.com/docs). From now on, each time you push code to your git repo, Vercel will automatically trigger a deploy of the new code. You can also manually redeploy if you select "Deployments", then the specific deployment from the list, and finally the "Redeploy" option from the vertical dots menu next to "Visit". + +## vercel.json configuration + +By default, API requests in Vercel have a timeout limit of 15 seconds. To extend this duration, you can modify the vercel.json file by inserting the code snippet provided below. Please be aware that the ability to increase the timeout limit is exclusive to Pro plan subscribers. Additionally, it is important to note that the timeout can be increased up to a maximum of 300 seconds, which is equivalent to 5 minutes. + +``` +{ + "functions": { + "api/src/functions/graphql.*": { + "maxDuration": 120, + "runtime": "@vercel/redwood@2.0.5" + } + } +} +``` diff --git a/docs/versioned_docs/version-6.0/directives.md b/docs/versioned_docs/version-6.x/directives.md similarity index 100% rename from docs/versioned_docs/version-6.0/directives.md rename to docs/versioned_docs/version-6.x/directives.md diff --git a/docs/versioned_docs/version-6.x/docker.md b/docs/versioned_docs/version-6.x/docker.md new file mode 100644 index 000000000000..2a3587bba87a --- /dev/null +++ b/docs/versioned_docs/version-6.x/docker.md @@ -0,0 +1,468 @@ +--- +description: Redwood's Dockerfile +--- + +# Docker + +:::note The Dockerfile is experimental + +Redwood's Dockerfile is the collective effort of several hard-working community members. +We've worked hard to optimize it, but expect changes as we collaborate with users and deploy providers. + +::: + +If you're not familiar with Docker, we recommend going through their [getting started](https://docs.docker.com/get-started/) documentation. + +## Set up + +To get started, run the setup command: + +``` +yarn rw experimental setup-docker +``` + +The setup commands does several things: +- writes four files: `Dockerfile`, `.dockerignore`, `docker-compose.dev.yml`, and `docker-compose.prod.yml` +- adds the `@redwoodjs/api-server` and `@redwoodjs/web-server` packages to the api and web sides respectively +- edits the `browser.open` setting in the `redwood.toml` (right now, if it's set to `true`, it'll break the dev server when running the `docker-compose.dev.yml`) + +## Usage + +You can start the dev compose file with: + +``` +docker compose -f ./docker-compose.dev.yml up +``` + +And the prod compose file with: + +``` +docker compose -f ./docker-compose.prod.yml up +``` + +:::info make sure to specify build args + +If your api side or web side depend on env vars at build time, you may need to supply them as `--build-args`, or in the compose files. + +This is often the most tedious part of setting up Docker. Have ideas of how it could be better? Let us know on the [forums](https://community.redwoodjs.com/)! + +::: + +The first time you do this, you'll have to use the `console` stage to go in and migrate the database—just like you would with a Redwood app on your machine: + +``` +docker compose -f ./docker-compose.dev.yml run --rm -it console /bin/bash +root@...:/home/node/app# yarn rw prisma migrate dev +``` + +## The Dockerfile in detail + +The documentation here goes through and explains every line of Redwood's Dockerfile. +If you'd like to see the whole Dockerfile for reference, you can find it [here](https://github.com/redwoodjs/redwood/tree/main/packages/cli/src/commands/experimental/templates/docker/Dockerfile) or by setting it up in your project: `yarn rw experimental setup-docker`. + +Redwood takes advantage of [Docker's multi-stage build support](https://docs.docker.com/build/building/multi-stage/) to keep the final production images lean. + +### The `base` stage + +The `base` stage installs dependencies. +It's used as the base image for the build stages and the `console` stage. + +```Dockerfile +FROM node:18-bookworm-slim as base +``` + +We use a Node.js 18 image as the base image because that's the version Redwood targets. +"bookworm" is the codename for the current stable distribution of Debian (version 12). +Lastly, the "slim" variant of the `node:18-bookworm` image only includes what Node.js needs which reduces the image's size while making it more secure. + +:::tip Why not alpine? + +While alpine may be smaller, it uses musl, a different C standard library. +In developing this Dockerfile, we prioritized security over size. + +If you know what you're doing feel free to change this—it's your Dockerfile now! +Just remember to change the `apt-get` instructions further down too if needed. + +::: + +Moving on, next we have `corepack enable`: + +```Dockerfile +RUN corepack enable +``` + +[Corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html), Node's manager for package managers, needs to be enabled so that Yarn can use the `packageManager` field in your project's root `package.json` to pick the right version of itself. +If you'd rather check in the binary, you still can, but you'll need to remember to copy it over (i.e. `COPY --chown=node:node .yarn/releases .yarn/releases`). + +```Dockerfile +RUN apt-get update && apt-get install -y \ + openssl \ + # python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +The `node:18-bookworm-slim` image doesn't have [OpenSSL](https://www.openssl.org/), which [seems to be a bug](https://github.com/nodejs/docker-node/issues/1919). +(It was included in the "bullseye" image, the codename for Debian 11.) +On Linux, [Prisma needs OpenSSL](https://www.prisma.io/docs/reference/system-requirements#linux-runtime-dependencies), so we install it here via Ubuntu's package manager APT. +Python and its dependencies are there ready to be uncommented if you need them. See the [Troubleshooting](#python) section for more information. + +[It's recommended](https://docs.docker.com/develop/develop-images/instructions/#apt-get) to combine `apt-get update` and `apt-get install -y` in the same `RUN` statement for cache busting. +After installing, we clean up the apt cache to keep the layer lean. (Running `apt-get clean` isn't required—[official Debian images do it automatically](https://github.com/moby/moby/blob/03e2923e42446dbb830c654d0eec323a0b4ef02a/contrib/mkimage/debootstrap#L82-L105).) + +```Dockerfile +USER node +``` + +This and subsequent `chown` options in `COPY` instructions are for security. +[Services that can run without privileges should](https://docs.docker.com/develop/develop-images/instructions/#user). +The Node.js image includes a user, `node`, created with an explicit `uid` and `gid` (`1000`). +We reuse it. + +```Dockerfile +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml . +COPY --chown=node:node package.json . +COPY --chown=node:node api/package.json api/ +COPY --chown=node:node web/package.json web/ +COPY --chown=node:node yarn.lock . +``` + +Here we copy the minimum set of files that the `yarn install` step needs. +The order isn't completely arbitrary—it tries to maximize [Docker's layer caching](https://docs.docker.com/build/cache/). +We expect `yarn.lock` to change more than the `package.json`s and the `package.json`s to change more than `.yarnrc.yml`. +That said, it's hard to argue that these files couldn't be arranged differently, or that the `COPY` instructions couldn't be combined. +The important thing is that they're all here, before the `yarn install` step: + +```Dockerfile +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn install +``` + +This step installs all your project's dependencies—production and dev. +Since we use multi-stage builds, your production images won't pay for the dev dependencies installed in this step. +The build stages need the dev dependencies. + +The `mkdir` steps are a workaround for a permission error. We're working on removing them, but for now if you remove them the install step will probably fail. + +This step is a bit more involved than the others. +It uses a [cache mount](https://docs.docker.com/build/cache/#use-your-package-manager-wisely). +Yarn operates in three steps: resolution, fetch, and link. +If you're not careful, the cache for the fetch step basically doubles the number of `node_modules` installed on disk. +We could disable it all together, but by using a cache mount, we can still get the benefits without paying twice. +We set it to the default directory here, but you can change its location in `.yarnrc.yml`. +If you've done so you'll have to change it here too. + +One more thing to note: without setting `CI=1`, depending on the deploy provider, yarn may think it's in a TTY, making the logs difficult to read. With this set, yarn adapts accordingly. +Enabling CI enables [immutable installs](https://v3.yarnpkg.com/configuration/yarnrc#enableImmutableInstalls) and [inline builds](https://v3.yarnpkg.com/configuration/yarnrc#enableInlineBuilds), both of which are highly recommended. + +```Dockerfile +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults +``` + +We'll need these config files for the build and production stages. +The `redwood.toml` file is Redwood's de-facto config file. +Both the build and serve stages read it to enable and configure functionality. + +:::warning `.env.defaults` is ok to include but `.env` is not + +If you add a secret to the Dockerfile, it can be excavated. +While it's technically true that multi stage builds add a sort of security layer, it's not a best practice. +Leave them out and look to your deploy provider for further configuration. + +::: + +### The `api_build` stage + +The `api_build` stage builds the api side: + +```Dockerfile +FROM base as api_build + +# If your api side build relies on build-time environment variables, +# specify them here as ARGs. +# +# ARG MY_BUILD_TIME_ENV_VAR + +COPY --chown=node:node api api +RUN yarn rw build api +``` + +After the work we did in the base stage, building the api side amounts to copying in the api directory and running `yarn rw build api`. + +### The `api_serve` stage + +The `api_serve` stage serves your GraphQL api and functions: + +```Dockerfile +FROM node:18-bookworm-slim as api_serve + +RUN corepack enable + +RUN apt-get update && apt-get install -y \ + openssl \ + # python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +We don't start from the `base` stage, but begin anew with the `node:18-bookworm-slim` image. +Since this is a production stage, it's important for it to be as small as possible. +Docker's [multi-stage builds](https://docs.docker.com/build/building/multi-stage/) enables this. + +```Dockerfile +USER node +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml .yarnrc.yml +COPY --chown=node:node package.json . +COPY --chown=node:node api/package.json api/ +COPY --chown=node:node yarn.lock yarn.lock +``` + +Like other `COPY` instructions, ordering these files with care enables layering caching. + +```Dockerfile +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn workspaces focus api --production +``` + +This is a critical step for image size. +We don't use the regular `yarn install` command. +Using the [official workspaces plugin](https://github.com/yarnpkg/berry/tree/master/packages/plugin-workspace-tools)—which is included by default in yarn v4—we "focus" on the api workspace, only installing its production dependencies. + +The cache mount will be populated at this point from the install in the `base` stage, so the fetch step should fly by. + +```Dockerfile +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults + +COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/api/dist +COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db +COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /home/node/app/node_modules/.prisma +``` + +Here's where we really take advantage of multi-stage builds by copying from the `api_build` stage. +At this point all the building has been done. Now we can just grab the artifacts without having to lug around the dev dependencies. + +There's one more thing that was built: the prisma client in `node_modules/.prisma`. +We need to grab it too. + +```Dockerfile +ENV NODE_ENV=production + +CMD [ "node_modules/.bin/rw-server", "api", "--load-env-files" ] +``` + +Lastly, the default command is to start the api server using the bin from the `@redwoodjs/api-server` package. +You can override this command if you have more specific needs. + +Note that the Redwood CLI isn't available anymore. (It's a dev dependency.) +To access the server bin, we have to find its path in `node_modules`. +Though this is somewhat discouraged in modern yarn, since we're using the `node-modules` node linker, it's in `node_modules/.bin`. + +### The `web_build` stage + +This `web_build` builds the web side: + +```Dockerfile +FROM base as web_build + +COPY --chown=node:node web web +RUN yarn rw build web --no-prerender +``` + +After the work we did in the base stage, building the web side amounts to copying in the web directory and running `yarn rw build web`. + +This stage is a bit of a simplification. +It foregoes Redwood's prerendering (SSG) capability. +Prerendering is a little trickier; see [the `web_prerender_build` stage](#the-web_prerender_build-stage). + +If you've included environment variables in your `redwood.toml`'s `web.includeEnvironmentVariables` field, you'll want to specify them as ARGs here. +The setup command should've inlined them for you. + +### The `web_prerender_build` stage + +The `web_prerender_build` stage builds the web side with prerender. + +```Dockerfile +FROM api_build as web_build_with_prerender + +COPY --chown=node:node web web +RUN yarn rw build web +``` + +Building the web side with prerendering poses a challenge. +Prerender needs the api side around to get data for your Cells and route hooks. +The key line here is the first one—this stage uses the `api_build` stage as its base image. + +### The `web_serve` stage + +```Dockerfile +FROM node:18-bookworm-slim as web_serve + +RUN corepack enable + +USER node +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml . +COPY --chown=node:node package.json . +COPY --chown=node:node web/package.json web/ +COPY --chown=node:node yarn.lock . + +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn workspaces focus web --production + +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults + +COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist + +ENV NODE_ENV=production \ + API_HOST=http://api:8911 + +CMD "node_modules/.bin/rw-web-server" "--apiHost" "$API_HOST" +``` + +Most of this stage is similar to the `api_serve` stage, except that we're copying from the `web_build` stage instead of the `api_build`. +(If you're prerendering, you'll want to change the `--from=web_build` to `--from=web_prerender_build`.) + +The binary we're using here to serve the web side is `rw-web-server` which comes from the `@redwoodjs/web-server` package. +While this web server will be much more fully featured in the future, right now it's mostly just to get you going. +Ideally you want to put a web server like Nginx or Caddy in front of it. + +Lastly, note that we use the shell form of `CMD` here for its variable expansion. + +### The `console` stage + +The `console` stage is an optional stage for debugging: + +```Dockerfile +FROM base as console + +# To add more packages: +# +# ``` +# USER root +# +# RUN apt-get update && apt-get install -y \ +# curl +# +# USER node +# ``` + +COPY --chown=node:node api api +COPY --chown=node:node web web +COPY --chown=node:node scripts scripts +``` + +The console stage completes the base stage by copying in the rest of your Redwood app. +But then it pretty much leaves you to your own devices. +The intended way to use it is to create an ephemeral container by starting a shell like `/bin/bash` in the image built by targeting this stage: + +```bash +# Build the console image: +docker build . -t console --target console +# Start an ephemeral container from it: +docker run --rm -it console /bin/bash +``` + +As the comment says, feel free to add more packages. +We intentionally kept them to a minimum in the base stage, but you shouldn't worry about the size of the image here. + +## Troubleshooting + +### Python + +We tried to make the Dockerfile as lean as possible. +In some cases, that means we excluded a dependency your project needs. +And by far the most common is Python. + +During a stage's `yarn install` step (`RUN ... yarn install`), if you see an error like the following: + +``` +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Python is not set from command line or npm configuration +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Python is not set from environment variable PYTHON +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python checking if "python3" can be used +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - executable path is "" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - "" could not be run +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python checking if "python" can be used +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - executable path is "" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - "" could not be run +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python ********************************************************** +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python You need to install the latest version of Python. +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Node-gyp should be able to find and use Python. If not, +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python you can try one of the following options: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python (accepted by both node-gyp and npm) +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Set the environment variable PYTHON +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Set the npm configuration variable python: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python npm config set python "/path/to/pythonexecutable" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python For more information consult the documentation at: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python https://github.com/nodejs/node-gyp#installation +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python ********************************************************** +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +``` + +It's because your project depends on Python and the image doesn't provide it. + +It's easy to fix: just add `python3` and its dependencies (usually `make` and `gcc`): + +```diff + FROM node:18-bookworm-slim as base + + RUN apt-get update && apt-get install -y \ + openssl \ ++ python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +Not sure why your project depends on Python? `yarn why` is your friend. +From the error message, we know `bufferutil` couldn't build. +But why do we have `bufferutil`? + +``` +yarn why bufferutil +└─ websocket@npm:1.0.34 + └─ bufferutil@npm:4.0.8 (via npm:^4.0.1) +``` + +`websocket` needs `bufferutil`. But why do we have `websocket`? +Keep pulling the thread till you get to a top-level dependency: + +``` +yarn why websocket +└─ @supabase/realtime-js@npm:2.8.4 + └─ websocket@npm:1.0.34 (via npm:^1.0.34) + +yarn why @supabase/realtime-js +└─ @supabase/supabase-js@npm:2.38.4 + └─ @supabase/realtime-js@npm:2.8.4 (via npm:^2.8.4) + +yarn why @supabase/supabase-js +├─ api@workspace:api +│ └─ @supabase/supabase-js@npm:2.38.4 (via npm:^2.21.0) +│ +└─ web@workspace:web + └─ @supabase/supabase-js@npm:2.38.4 (via npm:^2.21.0) +``` + +In this case, it looks like it's ultimately because of our auth provider, `@supabase/supabase-js`. diff --git a/docs/versioned_docs/version-6.0/environment-variables.md b/docs/versioned_docs/version-6.x/environment-variables.md similarity index 100% rename from docs/versioned_docs/version-6.0/environment-variables.md rename to docs/versioned_docs/version-6.x/environment-variables.md diff --git a/docs/versioned_docs/version-6.0/forms.md b/docs/versioned_docs/version-6.x/forms.md similarity index 100% rename from docs/versioned_docs/version-6.0/forms.md rename to docs/versioned_docs/version-6.x/forms.md diff --git a/docs/versioned_docs/version-6.0/graphql.md b/docs/versioned_docs/version-6.x/graphql.md similarity index 98% rename from docs/versioned_docs/version-6.0/graphql.md rename to docs/versioned_docs/version-6.x/graphql.md index ff6e55044f86..b8afad901199 100644 --- a/docs/versioned_docs/version-6.0/graphql.md +++ b/docs/versioned_docs/version-6.x/graphql.md @@ -999,7 +999,7 @@ export const handler = createGraphQLHandler({ }) ``` -> Note: Check-out the [in-depth look at Redwood Directives](directives.md) that explains how to generate directives so you may use them to validate access and transform the response. +> Note: Check-out the [in-depth look at Redwood Directives](./directives.md) that explains how to generate directives so you may use them to validate access and transform the response. ### Logging Setup @@ -1014,9 +1014,9 @@ Logging is essential in production apps to be alerted about critical errors and We want to make logging simple when using RedwoodJS and therefore have configured the api-side GraphQL handler to log common information about your queries and mutations. Log statements also be optionally enriched with [operation names](https://graphql.org/learn/queries/#operation-name), user agents, request ids, and performance timings to give you more visibility into your GraphQL api. -By configuring the GraphQL handler to use your api side [RedwoodJS logger](logger.md), any errors and other log statements about the [GraphQL execution](https://graphql.org/learn/execution/) will be logged to the [destination](logger.md#destination-aka-where-to-log) you've set up: to standard output, file, or transport stream. +By configuring the GraphQL handler to use your api side [RedwoodJS logger](./logger.md), any errors and other log statements about the [GraphQL execution](https://graphql.org/learn/execution/) will be logged to the [destination](./logger.md#destination-aka-where-to-log) you've set up: to standard output, file, or transport stream. -You configure the logger using the `loggerConfig` that accepts a [`logger`](logger.md) and a set of [GraphQL Logger Options](#graphql-logger-options). +You configure the logger using the `loggerConfig` that accepts a [`logger`](./logger.md) and a set of [GraphQL Logger Options](#graphql-logger-options). ### Configure the GraphQL Logger @@ -1147,9 +1147,9 @@ export const post = async ({ id }) => { //... ``` -The GraphQL handler will then take care of logging your query and data -- as long as your logger is setup to log at the `info` [level](logger.md#log-level) and above. +The GraphQL handler will then take care of logging your query and data -- as long as your logger is setup to log at the `info` [level](./logger.md#log-level) and above. -> You can also disable the statements in production by just logging at the `warn` [level](logger.md#log-level) or above +> You can also disable the statements in production by just logging at the `warn` [level](./logger.md#log-level) or above This means that you can keep your services free of logger statements, but still see what's happening! @@ -1184,7 +1184,7 @@ Stream to third-party log and application monitoring services vital to productio Everyone has heard of reports that Company X logged emails, or passwords to files or systems that may not have been secured. While RedwoodJS logging won't necessarily prevent that, it does provide you with the mechanism to ensure that won't happen. -To redact sensitive information, you can supply paths to keys that hold sensitive data using the RedwoodJS logger [redact option](logger.md#redaction). +To redact sensitive information, you can supply paths to keys that hold sensitive data using the RedwoodJS logger [redact option](./logger.md#redaction). Because this logger is used with the GraphQL handler, it will respect any redaction paths setup. @@ -1291,7 +1291,7 @@ By default, your GraphQL endpoint is open to the world. That means anyone can request any query and invoke any Mutation. Whatever types and fields are defined in your SDL is data that anyone can access. -Redwood [encourages being secure by default](http://localhost:3000/docs/canary/directives#secure-by-default-with-built-in-directives) by defaulting all queries and mutations to have the `@requireAuth` directive when generating SDL or a service. +Redwood [encourages being secure by default](./directives.md#secure-by-default-with-built-in-directives) by defaulting all queries and mutations to have the `@requireAuth` directive when generating SDL or a service. When your app builds and your server starts up, Redwood checks that **all** queries and mutations have `@requireAuth`, `@skipAuth` or a custom directive applied. @@ -1417,7 +1417,7 @@ The `@requireAuth` directive lets you define roles that are permitted to perform ```ts type Mutation { createPost(input: CreatePostInput!): Post! @requireAuth(roles: ['AUTHOR', 'EDITOR']) - updatePost(id: Int!, input: UpdatePostInput!): Post! @@requireAuth(roles: ['EDITOR'] + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth(roles: ['EDITOR'] deletePost(id: Int!): Post! @requireAuth(roles: ['ADMIN'] } ``` @@ -1472,7 +1472,7 @@ export const handler = createGraphQLHandler({ }) ``` -:::caution +:::warning Enabling introspection in production may pose a security risk, as it allows users to access information about your schema, queries, and mutations. Use this option with caution and make sure to secure your GraphQL API properly. diff --git a/docs/versioned_docs/version-6.0/how-to/background-worker.md b/docs/versioned_docs/version-6.x/how-to/background-worker.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/background-worker.md rename to docs/versioned_docs/version-6.x/how-to/background-worker.md diff --git a/docs/versioned_docs/version-6.0/how-to/build-dashboards-fast-with-tremor.md b/docs/versioned_docs/version-6.x/how-to/build-dashboards-fast-with-tremor.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/build-dashboards-fast-with-tremor.md rename to docs/versioned_docs/version-6.x/how-to/build-dashboards-fast-with-tremor.md diff --git a/docs/versioned_docs/version-6.0/how-to/custom-function.md b/docs/versioned_docs/version-6.x/how-to/custom-function.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/custom-function.md rename to docs/versioned_docs/version-6.x/how-to/custom-function.md diff --git a/docs/versioned_docs/version-6.0/how-to/dbauth-passwordless.md b/docs/versioned_docs/version-6.x/how-to/dbauth-passwordless.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/dbauth-passwordless.md rename to docs/versioned_docs/version-6.x/how-to/dbauth-passwordless.md index d938e62e20cb..e07e0bcd4c05 100644 --- a/docs/versioned_docs/version-6.0/how-to/dbauth-passwordless.md +++ b/docs/versioned_docs/version-6.x/how-to/dbauth-passwordless.md @@ -637,4 +637,4 @@ const Routes = () => { ``` ## You did it! -Now that you did you can rest easy. You're authentication relies on just your database but also, if some bad actor got access to it the only user data you have is really the email address. +Now that you did you can rest easy. Your authentication relies on just your database but also, if some bad actor got access to it the only user data you have is really the email address. diff --git a/docs/versioned_docs/version-6.0/how-to/disable-api-database.md b/docs/versioned_docs/version-6.x/how-to/disable-api-database.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/disable-api-database.md rename to docs/versioned_docs/version-6.x/how-to/disable-api-database.md diff --git a/docs/versioned_docs/version-6.0/how-to/file-uploads.md b/docs/versioned_docs/version-6.x/how-to/file-uploads.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/file-uploads.md rename to docs/versioned_docs/version-6.x/how-to/file-uploads.md diff --git a/docs/versioned_docs/version-6.0/how-to/gotrue-auth.md b/docs/versioned_docs/version-6.x/how-to/gotrue-auth.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/gotrue-auth.md rename to docs/versioned_docs/version-6.x/how-to/gotrue-auth.md diff --git a/docs/versioned_docs/version-6.0/how-to/mocking-graphql-in-storybook.md b/docs/versioned_docs/version-6.x/how-to/mocking-graphql-in-storybook.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/mocking-graphql-in-storybook.md rename to docs/versioned_docs/version-6.x/how-to/mocking-graphql-in-storybook.md diff --git a/docs/versioned_docs/version-6.0/how-to/oauth.md b/docs/versioned_docs/version-6.x/how-to/oauth.md similarity index 91% rename from docs/versioned_docs/version-6.0/how-to/oauth.md rename to docs/versioned_docs/version-6.x/how-to/oauth.md index 7b7e6083985a..fb7449472c6c 100644 --- a/docs/versioned_docs/version-6.0/how-to/oauth.md +++ b/docs/versioned_docs/version-6.x/how-to/oauth.md @@ -133,7 +133,7 @@ Go ahead and click it, and you should be taken to GitHub to authorize your GitHu ![GitHub Oauth Access Page](https://user-images.githubusercontent.com/300/245899872-8ddd7e69-dbfa-4544-ab6f-78fd4ff02da8.png) -:::caution +:::warning If you get an error here that says "The redirect_uri MUST match the registered callback URL for this application" verify that the redirect URL you entered on GitHub and the one you put into the `GITHUB_OAUTH_REDIRECT_URL` ENV var are identical! @@ -390,8 +390,10 @@ Be sure to import `db` at the top of the file if you haven't already! ::: ```js title="/api/src/functions/oauth/oauth.js" -// highlight-next-line +// highlight-start import { db } from 'src/lib/db' +import { user, createUser } from 'src/services/users' +// highlight-end const callback = async (event) => { const { code } = event.queryStringParameters @@ -450,29 +452,27 @@ const findOrCreateUser = async (providerUser) => { if (identity) { // identity exists, return the user - const user = await db.user.findUnique({ where: { id: identity.userId }}) + const user = await user({ id: identity.userId }) return { user, identity } } // identity not found, need to create it and the user - return await db.$transaction(async (tx) => { - const user = await tx.user.create({ - data: { - email: providerUser.email, - fullName: providerUser.name, - }, - } - - const identity = await tx.identity.create({ - data: { - userId: user.id, - provider: 'github', - uid: providerUser.id.toString() - } - }) + const user = await createUser({ + input: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) - return { user, identity } + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString() + } }) + + return { user, identity } } // highlight-end ``` @@ -512,7 +512,7 @@ const findOrCreateUser = async (providerUser) => { }) if (identity) { - const user = await db.user.findUnique({ where: { id: identity.userId }}) + const user = await user({ id: identity.userId }) return { user, identity } } @@ -520,34 +520,32 @@ const findOrCreateUser = async (providerUser) => { } ``` -If the user already exists, great! Return it, and the attached `identity` so that we can update the details. If the user doesn't exist already: +Note we're using the `user()` function defined in our service, re-using any business logic you may have added around looking up a user. If the user already exists, great! Return it, and the attached `identity` so that we can update the details. If the user doesn't exist already: ```js const findOrCreateUser = async (providerUser) => { // ... - return await db.$transaction(async (tx) => { - const user = await tx.user.create({ - data: { - email: providerUser.email, - fullName: providerUser.name, - }, - } - - const identity = await tx.identity.create({ - data: { - userId: user.id, - provider: 'github', - uid: providerUser.id.toString() - } - }) + const user = await createUser({ + input: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) - return { user, identity } + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString() + } }) + + return { user, identity } } ``` -We create the `user` and the `identity` records inside a transaction so that if something goes wrong, both records fail to create. The error would bubble up to the try/catch inside `callback()`. (The Redwood test project has a required `fullName` field that we fill with the `name` attribute from GitHub.) +We create the `user` via the existing `createUser()` service, but the `identity` directly in the database. For this particular usecase we have no need of allowing access to the `Identity` data via GraphQL, so there's no reason to create and SDL or underlying service. If you did make them available via GraphQL, it would make sense to replace this create with the `createIdentity()` service. Any error raised during creation would bubble up to the try/catch inside `callback()`. (The Redwood test project has a required `fullName` field that we fill with the `name` attribute from GitHub.) :::info Don't forget the `toString()` calls whenever we read or write the `providerUser.id` since we made the `uid` of type `String`. @@ -573,11 +571,13 @@ In order to let dbAuth do the work of actually considering us logged in (and han Setting a cookie in the browser is a matter of returning a `Set-Cookie` header in the response from the server. We've been responding with a dump of the user object, but now we'll do a real return, including the cookie and a `Location` header to redirect us back to the site. -Don't forget the new `CryptoJS` import at the top! +Redwood provides the cookie encryption helper as a function that you can use in your own code, as well as the function that returns the cookie name based on what you set in your auth config: ```js title="/api/src/functions/oauth/oauth.js" -// highlight-next-line -import CryptoJS from 'crypto-js' +// highlight-start +import { cookieName, encryptSession } from '@redwoodjs/auth-dbauth-api' +import { cookieName as sessionCookieName } from 'src/lib/auth' +// highlight-end const callback = async (event) => { const { code } = event.queryStringParameters @@ -638,13 +638,11 @@ const secureCookie = (user) => { `Secure=${process.env.NODE_ENV !== 'development'}`, ] const data = JSON.stringify({ id: user.id }) + const encrypted = encryptSession(data) - const encrypted = CryptoJS.AES.encrypt( - data, - process.env.SESSION_SECRET - ).toString() - - return [`session=${encrypted}`, ...cookieAttrs].join('; ') + return [`${cookieName(sessionCookieName)}=${encrypted}`, ...cookieAttrs].join( + '; ' + ) } // highlight-end ``` @@ -660,8 +658,10 @@ Try it out, and as long as you have an indication on your site that a user is lo Here's the `oauth` function in its entirety: ```jsx title="/api/src/functions/oauth/oauth.js" -import CryptoJS from 'crypto-js' +import { cookieName, encryptSession } from '@redwoodjs/auth-dbauth-api' +import { cookieName as sessionCookieName } from 'src/lib/auth' +import { user, createUser } from 'src/services/users' import { db } from 'src/lib/db' export const handler = async (event, _context) => { @@ -732,13 +732,11 @@ const secureCookie = (user) => { `Secure=${process.env.NODE_ENV !== 'development'}`, ] const data = JSON.stringify({ id: user.id }) + const encrypted = encryptSession(data) - const encrypted = CryptoJS.AES.encrypt( - data, - process.env.SESSION_SECRET - ).toString() - - return [`session=${encrypted}`, ...cookieAttrs].join('; ') + return [`${cookieName(sessionCookieName)}=${encrypted}`, ...cookieAttrs].join( + '; ' + ) } const getProviderUser = async (token) => { @@ -768,29 +766,27 @@ const findOrCreateUser = async (providerUser) => { if (identity) { // identity exists, return the user - const user = await db.user.findUnique({ where: { id: identity.userId } }) + const user = await user({ id: identity.userId }) return { user, identity } } // identity not found, need to create it and the user - return await db.$transaction(async (tx) => { - const user = await tx.user.create({ - data: { - email: providerUser.email, - fullName: providerUser.name, - }, - }) - - const identity = await tx.identity.create({ - data: { - userId: user.id, - provider: 'github', - uid: providerUser.id.toString(), - }, - }) + const user = await createUser({ + input: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) - return { user, identity } + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString(), + }, }) + + return { user, identity } } ``` diff --git a/docs/versioned_docs/version-6.0/how-to/pagination.md b/docs/versioned_docs/version-6.x/how-to/pagination.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/pagination.md rename to docs/versioned_docs/version-6.x/how-to/pagination.md diff --git a/docs/versioned_docs/version-6.0/how-to/role-based-access-control.md b/docs/versioned_docs/version-6.x/how-to/role-based-access-control.md similarity index 98% rename from docs/versioned_docs/version-6.0/how-to/role-based-access-control.md rename to docs/versioned_docs/version-6.x/how-to/role-based-access-control.md index dbe467f68964..da138d62d71f 100644 --- a/docs/versioned_docs/version-6.0/how-to/role-based-access-control.md +++ b/docs/versioned_docs/version-6.x/how-to/role-based-access-control.md @@ -238,10 +238,10 @@ export const getCurrentUser = async (decoded) => { #### How to Protect a Route -To protect a `Private` route for access by a single role: +To protect a `PrivateSet` route for access by a single role: ```jsx -import { Router, Route, Private } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( @@ -254,10 +254,10 @@ const Routes = () => { } ``` -To protect a `Private` route for access by a multiple roles: +To protect a `PrivateSet` route for access by a multiple roles: ```jsx -import { Router, Route, Private } from '@redwoodjs/router' +import { Router, Route, PrivateSet } from '@redwoodjs/router' const Routes = () => { return ( diff --git a/docs/versioned_docs/version-6.0/how-to/self-hosting-redwood.md b/docs/versioned_docs/version-6.x/how-to/self-hosting-redwood.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/self-hosting-redwood.md rename to docs/versioned_docs/version-6.x/how-to/self-hosting-redwood.md index 63a01b75e95e..870b61ef84a9 100644 --- a/docs/versioned_docs/version-6.0/how-to/self-hosting-redwood.md +++ b/docs/versioned_docs/version-6.x/how-to/self-hosting-redwood.md @@ -1,5 +1,5 @@ # Self-hosting Redwood (Serverful) -:::caution +:::warning This doc has been deprecated in favor of the [Baremetal](../deploy/baremetal.md) docs. diff --git a/docs/versioned_docs/version-6.0/how-to/sending-emails.md b/docs/versioned_docs/version-6.x/how-to/sending-emails.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/sending-emails.md rename to docs/versioned_docs/version-6.x/how-to/sending-emails.md diff --git a/docs/versioned_docs/version-6.0/how-to/supabase-auth.md b/docs/versioned_docs/version-6.x/how-to/supabase-auth.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/supabase-auth.md rename to docs/versioned_docs/version-6.x/how-to/supabase-auth.md diff --git a/docs/versioned_docs/version-6.0/how-to/test-in-github-actions.md b/docs/versioned_docs/version-6.x/how-to/test-in-github-actions.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/test-in-github-actions.md rename to docs/versioned_docs/version-6.x/how-to/test-in-github-actions.md index dc41fbecff2f..8064e49b681f 100644 --- a/docs/versioned_docs/version-6.0/how-to/test-in-github-actions.md +++ b/docs/versioned_docs/version-6.x/how-to/test-in-github-actions.md @@ -93,7 +93,7 @@ model UserExample { Then add your connection strings to your `.env` file: -:::caution +:::warning Make sure you don't commit this file to your repo since it contains sensitive information. diff --git a/docs/versioned_docs/version-6.0/how-to/using-a-third-party-api.md b/docs/versioned_docs/version-6.x/how-to/using-a-third-party-api.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/using-a-third-party-api.md rename to docs/versioned_docs/version-6.x/how-to/using-a-third-party-api.md diff --git a/docs/versioned_docs/version-6.0/how-to/using-nvm.md b/docs/versioned_docs/version-6.x/how-to/using-nvm.md similarity index 99% rename from docs/versioned_docs/version-6.0/how-to/using-nvm.md rename to docs/versioned_docs/version-6.x/how-to/using-nvm.md index b7fb82ac43c7..05ed1f716bca 100644 --- a/docs/versioned_docs/version-6.0/how-to/using-nvm.md +++ b/docs/versioned_docs/version-6.x/how-to/using-nvm.md @@ -6,7 +6,7 @@ ## Installing nvm -:::caution +:::warning If you've already installed Node.js on your machine, uninstall Node.js before installing nvm. This will prevent any conflicts between the Node.js and nvm. ### If you're on a Mac @@ -77,7 +77,7 @@ To see all the versions of Node that you can install, run the following command: nvm ls-remote ``` -:::caution +:::warning You'll need to [install yarn](https://yarnpkg.com/getting-started/install) **for each version of Node that you install.** [Corepack](https://nodejs.org/dist/latest/docs/api/corepack.html) is included with all Node.js >=16.10 installs, but you must opt-in. To enable it, run the following command: diff --git a/docs/versioned_docs/version-6.0/how-to/using-yarn.md b/docs/versioned_docs/version-6.x/how-to/using-yarn.md similarity index 98% rename from docs/versioned_docs/version-6.0/how-to/using-yarn.md rename to docs/versioned_docs/version-6.x/how-to/using-yarn.md index 3c429e41a38c..5198209e6e85 100644 --- a/docs/versioned_docs/version-6.0/how-to/using-yarn.md +++ b/docs/versioned_docs/version-6.x/how-to/using-yarn.md @@ -22,7 +22,7 @@ To see the version of yarn that you have installed, run the following command: yarn --version ``` -**Redwood requires Yarn (>=1.15)** +**Redwood requires Yarn (>=1.22.21)** You can upgrade yarn by running the following command: diff --git a/docs/versioned_docs/version-6.0/how-to/windows-development-setup.md b/docs/versioned_docs/version-6.x/how-to/windows-development-setup.md similarity index 100% rename from docs/versioned_docs/version-6.0/how-to/windows-development-setup.md rename to docs/versioned_docs/version-6.x/how-to/windows-development-setup.md diff --git a/docs/versioned_docs/version-6.0/intro-to-servers.md b/docs/versioned_docs/version-6.x/intro-to-servers.md similarity index 99% rename from docs/versioned_docs/version-6.0/intro-to-servers.md rename to docs/versioned_docs/version-6.x/intro-to-servers.md index b3d05cbfb941..121097e67e6f 100644 --- a/docs/versioned_docs/version-6.0/intro-to-servers.md +++ b/docs/versioned_docs/version-6.x/intro-to-servers.md @@ -63,7 +63,7 @@ If you're connecting to cloud-based servers, turning them on and off, and potent Once you're past that prompt you'll then either be prompted for your password, or logged in automatically (when using a private or public key). Let's look at each one in detail. -:::caution Baremetal First Deploy Woes? +:::warning Baremetal First Deploy Woes? If you're having trouble deploying to your server with Baremetal, and you've never connected to your server manually via SSH, this could be why: Baremetal provides no interactive prompt to accept this server fingerprint. You need to connect manually at least once before Baremetal can connect. diff --git a/docs/versioned_docs/version-6.0/introduction.md b/docs/versioned_docs/version-6.x/introduction.md similarity index 91% rename from docs/versioned_docs/version-6.0/introduction.md rename to docs/versioned_docs/version-6.x/introduction.md index 560cd1fce7d0..7a89099ca8d1 100644 --- a/docs/versioned_docs/version-6.0/introduction.md +++ b/docs/versioned_docs/version-6.x/introduction.md @@ -10,8 +10,9 @@ For full inspiration and vision, see Redwood's [README](https://github.com/redwo Development on Redwood happens in the [redwoodjs/redwood repo on GitHub](https://github.com/redwoodjs/redwood). The docs are [there too](https://github.com/redwoodjs/redwood/tree/main/docs). -While Redwood's [founders and core team](https://github.com/redwoodjs/redwood#core-team) handle most of the high-priority items and the day-to-day, -Redwood wouldn't be where it is without [all its contributors](https://github.com/redwoodjs/redwood#all-contributors)! +While Redwood's [leadership and maintainers](https://github.com/redwoodjs/redwood#core-team-leadership) +handle most of the high-priority items and the day-to-day, Redwood wouldn't be +where it is without [all its contributors](https://github.com/redwoodjs/redwood#all-contributors)! Feel free to reach out to us on the [forums](https://community.redwoodjs.com) or on [Discord](https://discord.gg/redwoodjs), and follow us on [Twitter](https://twitter.com/redwoodjs) for updates. ## Getting the Most out of Redwood diff --git a/docs/versioned_docs/version-6.0/local-postgres-setup.md b/docs/versioned_docs/version-6.x/local-postgres-setup.md similarity index 100% rename from docs/versioned_docs/version-6.0/local-postgres-setup.md rename to docs/versioned_docs/version-6.x/local-postgres-setup.md diff --git a/docs/versioned_docs/version-6.0/logger.md b/docs/versioned_docs/version-6.x/logger.md similarity index 100% rename from docs/versioned_docs/version-6.0/logger.md rename to docs/versioned_docs/version-6.x/logger.md diff --git a/docs/versioned_docs/version-6.x/mailer.md b/docs/versioned_docs/version-6.x/mailer.md new file mode 100644 index 000000000000..0707e9b5bc85 --- /dev/null +++ b/docs/versioned_docs/version-6.x/mailer.md @@ -0,0 +1,289 @@ +# Mailer + +RedwoodJS offers a convenient Mailer for sending emails to your users. It's not just about sending an email; delivery matters too. The way you deliver the feature requiring email is as significant as how you prepare the mail to be delivered by the infrastructure that sends emails over the internet. + +When designing the Mailer, it was crucial that mail could be: + +* sent by popular third-party services like [Resend](), [SendGrid](), [Postmark](), [Amazon SES](), and others. +* sent by [Nodemailer]() as a self-hosted OSS solution. +* use different providers depending on the use case. For instance, some transactional emails might be sent via Resend and some digest emails sent by SES. You should be able to choose the method for a specific email. +* send safely in both development and test environments in a "sandbox" without worrying that emails might accidentally leak. +* be sent as text and/or html and composed using templates by popular tools like [React Email]() or [MJML](), with support for more methods in the future. +* unit tested to set the proper to, from, cc, subject, body, and more. +* integrated with RedwoodJS Studio to help design and preview templates. + +The RedwoodJS Mailer does more than "just send an email". It is a complete end-to-end design, development, and testing package for emails. + +## Overview + +The RedwoodJS Mailer consists of [handlers](#handlers) and [renderers](#renderers), which carry out the core functionality of sending (handling) your emails and composing (rendering) your emails, respectively. This is combined with a few required files which define the necessary configuration. + +A high-level overview of the Mailer Flow is shown in the diagram below, and each case is covered in more detail below the diagram. +mailer-flow + +### Renderers + +A **renderer** transforms your React components into strings of text or HTML that can be sent as an email. + +Mailer currently offers the following renderers: +* [@redwoodjs/mailer-renderer-react-email]() based on [React Email]() +* [@redwoodjs/mailer-renderer-mjml-react]() based on [MJML]() + +You can find community-maintained renderers by searching across npm, our forums, and other community spaces. + +:::important + +Email clients are notoriously inconsistent in how they render HTML into the visual email content. Consider using a robust react library to help you write components that produce attractive emails, rendered consistently across email clients. + +::: + +### Handlers + +A **handler** is responsible for taking your rendered content and passing it on to a service that can send your email to the intended recipients, e.g., Nodemailer or Amazon SES. + +Mailer currently offers the following handlers: +* [@redwoodjs/mailer-handler-in-memory](), a simple in-memory handler typically used for testing. +* [@redwoodjs/mailer-handler-nodemailer](), which uses [Nodemailer](). +* [@redwoodjs/mailer-handler-studio](), which sends emails to the RedwoodJS Studio using nodemailer internally. +* [@redwoodjs/mailer-handler-resend](), which uses [Resend](). + +You can find community-maintained handlers by searching across npm, our forums, and other community spaces. + +### Files & Directories + +The core file for the Mailer functions is `api/src/lib/mailer.ts`. This file contains configuration defining which handlers and renderers to use and when. It starts out looking like this: +```ts title=api/src/lib/mailer.ts +import { Mailer } from '@redwoodjs/mailer-core' +import { NodemailerMailHandler } from '@redwoodjs/mailer-handler-nodemailer' +import { ReactEmailRenderer } from '@redwoodjs/mailer-renderer-react-email' + +import { logger } from 'src/lib/logger' + +export const mailer = new Mailer({ + handling: { + handlers: { + // TODO: Update this handler config or switch it out for a different handler completely + nodemailer: new NodemailerMailHandler({ + transport: { + host: 'localhost', + port: 4319, + secure: false, + }, + }), + }, + default: 'nodemailer', + }, + + rendering: { + renderers: { + reactEmail: new ReactEmailRenderer(), + }, + default: 'reactEmail', + }, + + logger, +}) +``` + +In the above, you can see how handlers and renderers are defined. Handlers are defined in the `handling` object where the keys are any name you wish to give, and the values are instances of the handler you want to use. Similarly for renderers, which are defined in the `rendering` object. Each must have a `default` provided, specifying which option to use by default in production. + +Mailer also expects you to put your mail react components inside the `api/src/mail` directory. For example, if you had a welcome email, it should be found in `api/src/mail/Welcome/Welcome.tsx`. + +## Setup + +The Mailer is not set up by default when you create a new RedwoodJS app, but it is easy to do so. Simply run the following CLI command: + +```bash title="RedwoodJS CLI" +yarn rw setup mailer +``` + +This command sets up the necessary files and dependencies. You can find more information on this command at [this](https://redwoodjs.com/docs/cli-commands#setup-mailer) specific section of our docs. + +## Usage + +### Example + +The best way to understand using the Mailer is with an example. + +In the tutorial, we built out a blog site. Let's say we have added a contact us functionality and the contact us form takes a name, email, and message and stores it in the database. + +For this example, suppose we want to also send an email to some internal inbox with this contact us submission. + +The service would be updated like so: + +```ts title=api/src/services/contacts.ts +import { mailer } from 'src/lib/mailer' +import { ContactUsEmail } from 'src/mail/Example/Example' + +// ... + +export const createContact: MutationResolvers['createContact'] = async ({ + input, +}) => { + const contact = await db.contact.create({ + data: input, + }) + + // Send email + await mailer.send( + ContactUsEmail({ + name: input.name, + email: input.email, + // Note the date is hardcoded here for the sake of test snapshot consistency + when: new Date(0).toLocaleString(), + }), + { + to: 'inbox@example.com', + subject: 'New Contact Us Submission', + replyTo: input.email, + from: 'contact-us@example.com', + } + ) + + return contact +} +``` + +In the code above, we do the following: + +- Import the Mailer and our mail template. +- Call the `mailer.send` function with: + - Our template, which we pass props into based on the user input. + - A set of send options to specify to, from, etc. + +In the example above, we specified a `replyTo` because that suited our business logic. However, we probably don't want to write `replyTo: 'no-reply@example.com'` in all our other emails where we might want that to be set. + +In that case, we can use the `defaults` property in our `api/src/lib/mailer.ts` config: + +```ts title=api/src/lib/mailer.ts +defaults: { + replyTo: 'no-reply@example.com', +}, +``` + +Now that we implemented our example, we might start to think about testing or how to try this out ourselves during development. + +The Mailer behaves slightly differently based on which environment you are running in. + +This helps improve your experience as you don't have to worry about sending real emails during testing or development. + +### Testing + +When your `NODE_ENV` is set to `test`, then the Mailer will start in test mode. In this mode, all mail will be sent using a test handler rather than the default production one or any specific one set when calling `send` or `sendWithoutRendering`. + +By default, when the Mailer is created, it will check if the `@redwoodjs/mailer-handler-in-memory` package is available. If it is, this will become the test handler; otherwise, the test handler will be a no-op that does nothing. The `yarn rw setup mailer` command adds this `@redwoodjs/mailer-handler-in-memory` package as a `devDependency` automatically for you. + +If you want control over this test mode behavior, you can include the following configuration in the `mailer.ts` file: + +```ts title=api/src/lib/mailer.ts +test: { + when: process.env.NODE_ENV === 'test', + handler: 'someOtherHandler', +} +``` + +The `when` property can either be a boolean or a function that returns a boolean. This decides if the Mailer starts in test mode when it is created. The `handler` property can specify a different handler to use in test mode. + +As an example of how this helps with testing, let's work off the example we created above. Let's now test our email functionality in the corresponding test file: + +```ts title=api/src/services/contacts/contacts.test.ts +describe('contacts', () => { + scenario('creates a contact', async () => { + const result = await createContact({ + input: { name: 'String', email: 'String', message: 'String' }, + }) + + expect(result.name).toEqual('String') + expect(result.email).toEqual('String') + expect(result.message).toEqual('String') + + // Mail + const testHandler = mailer.getTestHandler() as InMemoryMailHandler + expect(testHandler.inbox.length).toBe(1) + const sentMail = testHandler.inbox[0] + expect({ + ...sentMail, + htmlContent: undefined, + textContent: undefined, + }).toMatchInlineSnapshot(` + { + "attachments": [], + "bcc": [], + "cc": [], + "from": "contact-us@example.com", + "handler": "nodemailer", + "handlerOptions": undefined, + "headers": {}, + "htmlContent": undefined, + "renderer": "reactEmail", + "rendererOptions": {}, + "replyTo": "String", + "subject": "New Contact Us Submission", + "textContent": undefined, + "to": [ + "inbox@example.com", + ], + } + `) + expect(sentMail.htmlContent).toMatchSnapshot() + expect(sentMail.textContent).toMatchSnapshot() + }) +}) +``` + +Above we tested that our service did the following: + +- Sent one email. +- All the send options (such as to, from, what handler, etc.) match a set of expected values (the inline snapshot). +- The rendered text and HTML content match the expected value (the snapshots). + +### Development + +Similar to the test mode, the Mailer also has a development mode. This mode is selected automatically when the Mailer is created if `NODE_ENV` is **not** set to `production`. This mode behaves similarly to the test mode and by default will attempt to use the `@redwoodjs/mailer-handler-studio` package if it is available. + +You can control the development mode behavior with the following configuration in the `mailer.ts` file: + +```ts title=api/src/lib/mailer.ts +development: { + when: process.env.NODE_ENV !== 'production', + handler: 'someOtherHandler', +}, +``` + +:::tip + +The Mailer studio has some helpful features when it comes to using the Mailer during development. It can provide a mail inbox so that you can send mail to your local machine and see the results. It can also provide live previews of your rendered mail templates as a guide to what they will likely look like when sent to your end users. + +::: + +### Production + +If neither the test nor development mode conditions are met, the Mailer will start in production mode. In this mode, there is no rerouting of your mail to different handlers. Instead, your mail will go directly to your default handler unless you specifically state a different one in your send options. + +### Studio + +Redwood Studio is tightly integrated with the mailer. The goal is to provide you with not just the ability to send mail but also the development tools to make your experience easier and more enjoyable. + +#### Template Previews +mailer-template-preview + +You can have a preview of what your mail templates will look like. These will rerender live as you update your template code and you can even provide a JSON payload which will be used as the props to your template component. These previews are approximate but should easily get you 90% of the way there. + +#### Local Inbox +mailer-local-inbox + +When running in development mode, using the default `@redwoodjs/mailer-handler-studio` development handler, your mail will be sent to a local SMTP inbox running inside of Studio. This allows you to use your app and have full emails sent without worrying about setting up a local inbox yourself or using some other online temporary inbox service. + +:::warning + +Redwood Studio is an experimental feature and is still in development. Some of the UI shown above might look slightly different and the functionality may be tweaked over time to provide you with a better experience. + +::: + +## Need a Renderer or Handler? + +If the Mailer does not currenly provide a [handler](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#handlers) or [renderer](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#renderers) for the service or technology you wish to use, this doesn't prevent you from using the Mailer. Instead, you can create your own handler or renderer which you can then open source to the wider RedwoodJS community. + +To do this, read over the existing implementations for handlers [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/handlers) and renderers [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/renderers). You can also find the interfaces that a handler or mailer must satisfy [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/core) in the `@redwoodjs/mailer-core` package. + +Be sure to check out the community forum for people working on similar work, to document your own creations, or to get help on anything. diff --git a/docs/versioned_docs/version-6.0/mocking-graphql-requests.md b/docs/versioned_docs/version-6.x/mocking-graphql-requests.md similarity index 100% rename from docs/versioned_docs/version-6.0/mocking-graphql-requests.md rename to docs/versioned_docs/version-6.x/mocking-graphql-requests.md diff --git a/docs/versioned_docs/version-6.0/prerender.md b/docs/versioned_docs/version-6.x/prerender.md similarity index 98% rename from docs/versioned_docs/version-6.0/prerender.md rename to docs/versioned_docs/version-6.x/prerender.md index fa467aea495c..2ac27195086f 100644 --- a/docs/versioned_docs/version-6.0/prerender.md +++ b/docs/versioned_docs/version-6.x/prerender.md @@ -11,7 +11,7 @@ We thought a lot about what the developer experience should be for route-based p :::info How's Prerendering different from SSR/SSG/SWR/ISSG/...? As Danny said in his [Prerender demo](https://www.youtube.com/watch?v=iorKyMlASZc&t=2844s) at our Community Meetup, the thing all of these have in common is that they render your markup in a Node.js context to produce HTML. The difference is when (build or runtime) and how often. -Redwood currently supports prerendering at _build_ time. So before your deploy your web side, Redwood will render your pages into HTML, and once the JavaScript has been loaded on the browser, the page becomes dynamic. +Redwood currently supports prerendering at _build_ time. So before you deploy your web side, Redwood will render your pages into HTML, and once the JavaScript has been loaded on the browser, the page becomes dynamic. ::: @@ -56,7 +56,7 @@ This will prerender your NotFoundPage to `404.html` in your dist folder. Note th For Private Routes, Redwood prerenders your Private Routes' `whileLoadingAuth` prop: ```jsx - + // Loading is shown while we're checking to see if the user's logged in } prerender/> diff --git a/docs/versioned_docs/version-6.0/project-configuration-dev-test-build.mdx b/docs/versioned_docs/version-6.x/project-configuration-dev-test-build.mdx similarity index 84% rename from docs/versioned_docs/version-6.0/project-configuration-dev-test-build.mdx rename to docs/versioned_docs/version-6.x/project-configuration-dev-test-build.mdx index 3b78f9378183..37df966dafeb 100644 --- a/docs/versioned_docs/version-6.0/project-configuration-dev-test-build.mdx +++ b/docs/versioned_docs/version-6.x/project-configuration-dev-test-build.mdx @@ -85,7 +85,7 @@ const config = { module.exports = config ``` -> You can always see Redwood's latest configuration templates in the [create-redwood-app package](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/template/web/jest.config.js). +> You can always see Redwood's latest configuration templates in the [create-redwood-app package](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/web/jest.config.js). The preset includes all the setup required to test everything that's going on in web: rendering React components and transforming JSX, automatically mocking Cells, transpiling with Babel, mocking the Router and the GraphQL client—the list goes on! You can find all the details in the [source](https://github.com/redwoodjs/redwood/blob/main/packages/testing/config/jest/web/jest-preset.js). @@ -104,40 +104,28 @@ You can find all the details in the [source](https://github.com/redwoodjs/redwoo You can customize the types that Redwood generates from your project too! This is documented in a bit more detail in the [Generated Types](typescript/generated-types#customising-codegen-config) doc. -## Debugger configuration -The `yarn rw dev` command is configured by default to launch a debugger on the port `18911`, your Redwood app also ships with default configuration to attach a debugger from VSCode. - -Simply run your dev server, then attach the debugger from the "run and debug" panel. Quick demo below: - - +## Debug configurations +### Dev Server +The `yarn rw dev` command is configured by default to open a browser and a debugger on the port `18911` and your redwood app ships with several default configurations to debug with VSCode. -
- -> **ℹ️ Tip: Can't see the "Attach debugger" configuration?** In VSCode -> -> You can grab the latest launch.json from the Redwood template [here](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/.vscode/launch.json). Copy the contents into your project's `.vscode/launch.json` - - -#### Customizing the debug port -You can choose to use a different debug port in one of two ways: - +#### Customizing the configuration **a) Using the redwood.toml** -Add/change the `debugPort` under your api settings +Add/change the `debugPort` or `open` under your api settings ```toml title="redwood.toml" [web] # . - # . [api] - port = 8911 + # . + // highlight-next-line + debugPort = 18911 # change me! +[browser] // highlight-next-line - debugPort = 18911 # 👈 change me! + open = true # change me! ``` -If you set it to `false`, no debug port will be exposed. The `debugPort` is only ever used during development when running `yarn rw dev` - **b) Pass a flag to `rw dev` command** You can also pass a flag when you launch your dev servers, for example: @@ -149,6 +137,21 @@ The flag passed in the CLI will always take precedence over your setting in the Just remember to also change the port you are attaching to in your `./vscode/launch.json` +### API and Web Debuggers +Simply run your dev server, then attach the debugger from the "run and debug" panel. Quick demo below: + + + +### Compound Debugger +The compound configuration is a combination of the dev, api and web configurations. +It allows you to start all debugging configurations at once, facilitating simultaneous debugging of server and client-side code. + +
+ +> **ℹ️ Tip: Can't see the debug configurations?** In VSCode +> +> You can grab the latest launch.json from the Redwood template [here](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/.vscode/launch.json). Copy the contents into your project's `.vscode/launch.json` + ## Ignoring the `.yarn` folder The `.yarn` folder contains the most recent Yarn executable that Redwood supports @@ -219,3 +222,17 @@ Admittedly, the `.yarn` folder won't change that often, so this may not be the best example. But we thought we'd share this technique with you so that you'd know how to apply it to any folders that you know change very often, and how to tell VSCode not to bother wasting any CPU cycles on them. + +## Trailing whitespace + +If you're using VS Code, or another editor that supports +[EditorConfig](https://editorconfig.org), trailing whitespace will be trimmed +in source files, but preserved in html, markdown and mjml files when saving. + +This behavior is controlled by `.vscode/settings` or `.editorconfig` depending +on your editor. + +In JavaScript and TypeScript files trailing whitespace has no significance, +but for html, markdown and mjml it does. That's why the behavior is different +for those files. If you don't like the default behavior Redwood has configured +for you, you're free to change the settings in those two files. diff --git a/docs/versioned_docs/version-6.0/quick-start.md b/docs/versioned_docs/version-6.x/quick-start.md similarity index 99% rename from docs/versioned_docs/version-6.0/quick-start.md rename to docs/versioned_docs/version-6.x/quick-start.md index 40f35f9134bf..3fcf885a3324 100644 --- a/docs/versioned_docs/version-6.0/quick-start.md +++ b/docs/versioned_docs/version-6.x/quick-start.md @@ -6,7 +6,7 @@ description: Redwood quick start :::info Prerequisites -- Redwood requires [Node.js](https://nodejs.org/en/) (=18.x) and [Yarn](https://yarnpkg.com/) (>=1.15) +- Redwood requires [Node.js](https://nodejs.org/en/) (=18.x) and [Yarn](https://yarnpkg.com/) (>=1.22.21) - Are you on Windows? For best results, follow our [Windows development setup](how-to/windows-development-setup.md) guide ::: diff --git a/docs/versioned_docs/version-6.x/realtime.md b/docs/versioned_docs/version-6.x/realtime.md new file mode 100644 index 000000000000..39ef6fd5a2c9 --- /dev/null +++ b/docs/versioned_docs/version-6.x/realtime.md @@ -0,0 +1,706 @@ +# Realtime + +One of the most often asked questions of RedwoodJS before and after the launch of V1 was, “When will RedwoodJS support a realtime solution?” + +The answer is: **now**. + +## What is Realtime? + +RedwoodJS's initial real-time solution leverages GraphQL and relies on a serverful deployment to maintain a long-running connection between the client and server. + +:::note +This means that your cannot currently use RedwoodJS Realtime when deployed to Netlify or Vercel. + +**More information about deploying a serverful RedwoodJS application is forthcoming.** +::: + +RedwoodJS's GraphQL Server uses [GraphQL over Server-Sent Events](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#distinct-connections-mode) spec "distinct connections mode" for subscriptions. + +Advantages of SSE over WebSockets include: + +* Transported over simple HTTP instead of a custom protocol +* Built in support for re-connection and event-id +* Simpler protocol +* No trouble with corporate firewalls doing packet inspection + +### Subscriptions and Live Queries + +In GraphQL, there are two options for real-time updates: **live queries** and **subscriptions**. + +Subscriptions are part of the GraphQL specification, whereas live queries are not. + +There are times where subscriptions are well-suited for a realtime problem — and in some cases live queries may be a better fit. Later we’ll explore the pros and cons of each approach and how best to decide that to use and when. + +### Defer and Stream + +[Stream and defer](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending data the most important data as soon as it's ready. + +As applications grow, the GraphQL operation documents can get bigger. The server will only send the response back once all the data requested in the query is ready. However, not all requested data is of equal importance, and the client may not need all of the data at once. + +#### Using Defer + +The `@defer`` directive allows you to post-pone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. + +#### Using Stream + +The '@stream' directive allows you to stream the individual items of a field of the list type as the items are available. + +:::info +The `@stream` directive is currently **not** supported by Apollo GraphQL client. +::: + +## Features + +RedwoodJS Realtime handles the hard parts of a GraphQL Realtime implementation by automatically: + +- allowing GraphQL Subscription operations to be handled +- merging in your subscriptions types and mapping their handler functions (subscribe, and resolve) to your GraphQL schema letting you keep your subscription logic organized and apart from services (your subscription my use a service to respond to an event) +- authenticating subscription requests using the same `@requireAuth` directives already protecting other queries and mutations (or you can implement your own validator directive) +- adding in the `@live` query directive to your GraphQL schema and setting up the `useLiveQuery` envelop plugin to handle requests, invalidation, and managing the storage mechanism needed +- creating and configuring in-memory and persisted Redis stores uses by the PubSub transport for subscriptions and Live Queries (and letting you switch between them in development and production) +- placing the pubSub transport and stores into the GraphQL context so you can use them in services, subscription resolvers, or elsewhere (like a webhook, function, or job) to publish an event or invalidate data +- typing you subscription channel event payloads +- support `@defer` and `@stream` directives + +It provides a first-class developer experience for real-time updates with GraphQL so you can easily + +- respond to an event (e.g. NewPost, NewUserNotification) +- respond to a data change (e.g. Post 123's title updated) + +and have the latest data reflected in your app. + +Lastly, the Redwood CLI has commands to + +- generate a boilerplate implementation and sample code needed to create your custom + - subscriptions + - live Queries + +Regardless of the implementation chosen, **a stateful server and store are needed** to track changes, invalidation, or who wants to be informed about the change. + +### What can I build with Realtime? + +- Application Alerts and Messages +- User Notifications +- Live Charts +- Location updates +- Auction bid updates +- Messaging +- OpenAI streaming responses + +## RedwoodJS Realtime Setup + +To setup Realtime in an existing RedwoodJS project, run the following commands: + +* `yarn rw exp setup-server-file` +* `yarn rw exp setup-realtime` + +You will get: + +* `api/server.ts` where you configure your Fastify server and GraphQL +* `api/lib/realtime.ts` where you consume your subscriptions and configure realtime with an in-memory or Redis store +* Usage examples for live queries, subscriptions, defer, and stream. You'll get sdl, services/subscriptions for each. +* The [`auction` live query](#auction-live-query-example) example +* The [`countdown timer` subscription](#countdown-timer-example) example +* The [`chat` subscription](#chatnew-message-example) examples +* The [`alphabet` stream](#alphabet-stream-example) example +* The [`slow and fast` field defer](#slow-and-fast-field-defer-example) example + +:::note +There is no UI setup for these examples. You can find information on how to try them out using the GraphiQL playground. +::: + +### GraphQL Configuration + +Now that how have a serverful project, you will configure your GraphQL server in the `api/server.ts` file. + +:::important +That means you **must** manually configure your GraphQL server accordingly +::: + +For example, you will have to setup any authentication and the realtime config: + +```ts + await fastify.register(redwoodFastifyGraphQLServer, { + // If authenticating, be sure to import and add in + // authDecoder, + // getCurrentUser, + loggerConfig: { + logger: logger, + options: { + query: true, + data: true, + operationName: true, + requestId: true, + }, + }, + graphiQLEndpoint: enableWeb ? '/.redwood/functions/graphql' : '/graphql', + sdls, + services, + directives, + allowIntrospection: true, + allowGraphiQL: true, + // Configure if using RedwoodJS Realtime + realtime, + }) +``` + +You can now remove the GraphQL handler function that resides in `api/functions/graphql.ts`. + +### Realtime Configuration + +By default, RedwoodJS realtime configures an in-memory store for the Pub Sub client used with subscriptions and live query invalidation. + +Realtime supports in-memory and Redis stores: + +- In-memory stores are useful for development and testing. +- Redis stores are useful for production. + +To enable defer and streaming, set `enableDeferStream` to true. + +Configure a Redis store and defer and stream in: + +```ts +// api/lib/realtime.ts +import { RedwoodRealtimeOptions } from '@redwoodjs/realtime' + +import subscriptions from 'src/subscriptions/**/*.{js,ts}' + +// if using a Redis store +// import { Redis } from 'ioredis' +// const publishClient = new Redis() +// const subscribeClient = new Redis() + +/** + * Configure RedwoodJS Realtime + * + * See https://redwoodjs.com/docs/realtime + * + * Realtime supports Live Queries and Subscriptions over GraphQL SSE. + * + * Live Queries are GraphQL queries that are automatically re-run when the data they depend on changes. + * + * Subscriptions are GraphQL queries that are run when a client subscribes to a channel. + * + * Redwood Realtime + * - uses a publish/subscribe model to broadcast data to clients. + * - uses a store to persist Live Query and Subscription data. + * + * Redwood Realtime supports in-memory and Redis stores: + * - In-memory stores are useful for development and testing. + * - Redis stores are useful for production. + */ +export const realtime: RedwoodRealtimeOptions = { + subscriptions: { + subscriptions, + store: 'in-memory', + // if using a Redis store + // store: { redis: { publishClient, subscribeClient } }, + }, + liveQueries: { + store: 'in-memory', + // if using a Redis store + // store: { redis: { publishClient, subscribeClient } }, + }, + // To enable defer and streaming, set to true. + // enableDeferStream: true, +} +``` + +#### PubSub and LiveQueryStore + +By setting up RedwoodJS Realtime, the GraphQL server adds two helpers on the context: + +* pubSub +* liveQueryStory + +With `context.pubSub` you can subscribe to and publish messages via `context.pubSub.publish('the-topic', id, id2)`. + +With `context.liveQueryStore.` you can `context.liveQueryStore.invalidate(key)` where your key may be a reference or schema coordinate: + +##### Reference +Where the query is: `auction(id: ID!): Auction @requireAuth`: + +* `"Auction:123"` + +##### Schema Coordinate +When the query is: `auctions: [Auction!]! @requireAuth`: + +* `"Query.auctions"` + +## Subscriptions + +RedwoodJS has a first-class developer experience for GraphQL subscriptions. + +#### Subscribe to Events + +- Granular information on what data changed +- Why has the data changed? +- Spec compliant + +### Chat/New Message Example + +```graphql +type Subscription { + newMessage(roomId: ID!): Message! @requireAuth +} +``` + +1. I subscribed to a "newMessage” in room “2” +2. Someone added a message to room “2” with a from and body +3. A "NewMessage" event to Room 2 gets published +4. I find out and see who the message is from and what they messaged (the body) + +### Countdown Timer Example + +Counts down from a starting values by an interval. + +```graphql +subscription CountdownFromInterval { + countdown(from: 100, interval: 10) +} +``` + +This example showcases how a subscription can yields its own response. + +## Live Queries + +RedwoodJS has made it super easy to add live queries to your GraphQL server! You can push new data to your clients automatically once the data selected by a GraphQL operation becomes stale by annotating your query operation with the `@live` directive. + +The invalidation mechanism is based on GraphQL ID fields and schema coordinates. Once a query operation has been invalidated, the query is re-executed, and the result is pushed to the client. + +##### Listen for Data Changes + +- I'm not interested in what exactly changed it. +- Just give me the data. +- This is not part of the GraphQL specification. +- There can be multiple root fields. + +### Auction Live Query Example + +```graphql +query GetCurrentAuctionBids @live { + auction(id: "1") { + bids { + amount + } + highestBid { + amount + } + id + title + } +} + +mutation MakeBid { + bid(input: { auctionId: "1", amount: 10 }) { + amount + } +} +``` + +1. I listen for changes to Auction 1 by querying the auction. +2. A bid was placed on Auction 1. +3. The information for Auction 1 is no longer valid. +4. My query automatically refetches the latest Auction and Bid details. + +## Defer Directive + +The `@defer` directive allows you to post-pone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. + +### Slow and Fast Field Defer Example + +Here, the GraphQL schema defines two queries for a "fast" and a "slow" (ie, delayed) information. + +```graphql +export const schema = gql` + type Query { + """ + A field that resolves fast. + """ + fastField: String! @skipAuth + + """ + A field that resolves slowly. + Maybe you want to @defer this field ;) + """ + slowField(waitFor: Int! = 5000): String @skipAuth + } +` +``` + +The Redwood services for these queries return the `fastField` immediately and the `showField` after some delay. + +```ts +import { logger } from 'src/lib/logger' + +const wait = (time: number) => + new Promise((resolve) => setTimeout(resolve, time)) + +export const fastField = async () => { + return 'I am speedy' +} + +export const slowField = async (_, { waitFor = 5000 }) => { + logger.debug('deferring slowField until ...') + await wait(waitFor) + logger.debug('now!') + + return 'I am slow' +} +``` + +When making the query: + +```graphql +query SlowAndFastFieldWithDefer { + ... on Query @defer { + slowField + } + fastField +} +``` + +The response returns: + +```json +{ + "data": { + "fastField": "I am speedy" + } +} +``` + +and will await the deferred field to then present: + +```json +{ + "data": { + "fastField": "I am speedy", + "slowField": "I am slow" + } +} +``` + +## Stream Directive + +The `@stream` directive allows you to stream the individual items of a field of the list type as the items are available. + +### Alphabet Stream Example + +Here, the GraphQL schema defines a query to return the letters of the alphabet: + +```graphql +export const schema = gql` + type Query { + alphabet: [String!]! @skipAuth +` +``` + +The service uses `Repeater` to write a safe stream resolver. + +:::info +[AsyncGenerators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator) as declared via the `async *` keywords are prone to memory leaks and leaking timers. For real-world usage, use Repeater. +::: + +```ts +import { Repeater } from '@redwoodjs/realtime' + +import { logger } from 'src/lib/logger' + +export const alphabet = async () => { + return new Repeater(async (push, stop) => { + const values = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] + const publish = () => { + const value = values.shift() + + if (value) { + logger.debug({ value }, 'publishing') + + push(value) + } + + if (values.length === 0) { + stop() + } + } + + const interval = setInterval(publish, 1000) + + stop.then(() => { + logger.debug('cancel') + clearInterval(interval) + }) + + publish() + }) +} +``` + +### What does the incremental stream look like? + +Since Apollo Client does not yet support the `@stream` directive, you can use them in the GraphiQL Playground or see them in action via CURL. + +When making the request with the `@stream` directive: + +```bash +curl -g -X POST \ + -H "accept:multipart/mixed" \ + -H "content-type: application/json" \ + -d '{"query":"query StreamAlphabet { alphabet @stream }"}' \ + http://localhost:8911/graphql +``` + +Here you see the initial response has `[]` for alphabet data. + +Then on each push to the Repeater, an incremental update the the list of letters is sent. + +The stream ends when `hasNext` is false: + +```bash +* Connected to localhost (127.0.0.1) port 8911 (#0) +> POST /graphql HTTP/1.1 +> Host: localhost:8911 +> User-Agent: curl/8.1.2 +> accept:multipart/mixed +> content-type: application/json +> Content-Length: 53 +> +< HTTP/1.1 200 OK +< connection: keep-alive +< content-type: multipart/mixed; boundary="-" +< transfer-encoding: chunked +< +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 39 + +{"data":{"alphabet":[]},"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["a"],"path":["alphabet",0]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["b"],"path":["alphabet",1]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["c"],"path":["alphabet",2]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["d"],"path":["alphabet",3]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["e"],"path":["alphabet",4]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["f"],"path":["alphabet",5]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["g"],"path":["alphabet",6]}],"hasNext":true} +--- +... + +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 17 + +{"hasNext":false} +----- +``` + +## How do I choose Subscriptions or Live Queries? + +![image](https://github.com/ahaywood/redwoodjs-streaming-realtime-demos/assets/1051633/e3c51908-434c-4396-856a-8bee7329bcdd) + +When deciding on how to offer realtime data updates in your RedwoodJS app, you’ll want to consider: + +- How frequently do your users require information updates? + - Determine the value of "real-time" versus "near real-time" to your users. Do they need to know in less than 1-2 seconds, or is 10, 30, or 60 seconds acceptable for them to receive updates? + - Consider the criticality of the data update. Is it low, such as a change in shipment status, or higher, such as a change in stock price for an investment app? + - Consider the cost of maintaining connections and tracking updates across your user base. Is the infrastructure cost justifiable? + - If you don't require "real" real-time, consider polling for data updates on a reasonable interval. According to Apollo, [in most cases](https://www.apollographql.com/docs/react/data/subscriptions/), your client should not use subscriptions to stay up to date with your backend. Instead, you should poll intermittently with queries or re-execute queries on demand when a user performs a relevant action, such as clicking a button. +- How are you deploying? Serverless or Serverful? + - Real-time options depend on your deployment method. + - If you are using a serverless architecture, your application cannot maintain a stateful connection to your users' applications. Therefore, it's not easy to "push," "publish," or "stream" data updates to the web client. + - In this case, you may need to look for third-party solutions that manage the infrastructure to maintain such stateful connections to your web client, such as [Supabase Realtime](https://supabase.com/realtime), [SendBird](https://sendbird.com/), [Pusher](https://pusher.com/), or consider creating your own [AWS SNS-based](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) functionality. + + + +## Showcase Demos + +Please see our [showcase RedwoodJS Realtime app](https://realtime-demo.fly.dev) for exampes of subscriptions and live queries. It also demonstrates how you can handle streaming responses, like those used by OpenAI chat completions. + +### Chat Room (Subscription) + +Sends a message to one of four Chat Rooms. + +Each room subscribes to its new messages via the `NewMessage` channel aka topic. + +```ts +context.pubSub.publish('newMessage', roomId, { from, body }) +``` + +#### Simulate + +```bash +./scripts/simulate_chat.sh -h +Usage: ./scripts/simulate_chat.sh -r [roomId] -n [num_messages] + ./scripts/simulate_chat.sh -h + +Options: + -r roomId Specify the room ID (1-4) for sending chat messages. + -n num_messages Specify the number of chat messages to send. If not provided, the script will run with a random number of messages. +``` +#### Test + +```ts +/** + * To test this NewMessage subscription, run the following in one GraphQL Playground to subscribe: + * + * subscription ListenForNewMessagesInRoom { + * newMessage(roomId: "1") { + * body + * from + * } + * } + * + * + * And run the following in another GraphQL Playground to publish and send a message to the room: + * + * mutation SendMessageToRoom { + * sendMessage(input: {roomId: "1", from: "hello", body: "bob"}) { + * body + * from + * } + * } + */ + ``` + +### Auction Bids (Live Query) + +Bid on a fancy pair of new sneaks! + +When a bid is made, the auction updates via a Live Query due to the invalidation of the auction key. + +```ts + const key = `Auction:${auctionId}` + context.liveQueryStore.invalidate(key) + ``` + +#### Simulate + +```bash +./scripts/simulate_bids.sh -h +Usage: ./scripts/simulate_bids.sh [options] + +Options: + -a Specify the auction ID (1-5) for which to send bids (optional). + -n Specify the number of bids to send (optional). + -h, --help Display this help message. + ``` + +#### Test + +```ts +/** + * To test this live query, run the following in the GraphQL Playground: + * + * query GetCurrentAuctionBids @live { + * auction(id: "1") { + * bids { + * amount + * } + * highestBid { + * amount + * } + * id + * title + * } + * } + * + * And then make a bid with the following mutation: + * + * mutation MakeBid { + * bid(input: {auctionId: "1", amount: 10}) { + * amount + * } + * } + */ +``` + +### Countdown (Streaming Subscription) + +> It started slowly and I thought it was my heart +> But then I realised that this time it was for real + +Counts down from a starting values by an interval. + +This example showcases how a subscription can yields its own response. + +#### Test + +```ts +/** + * To test this Countdown subscription, run the following in the GraphQL Playground: + * + * subscription CountdownFromInterval { + * countdown(from: 100, interval: 10) + * } + */ +``` + +### Bedtime Story (Subscription with OpenAI Streaming) + +> Tell me a story about a happy, purple penguin that goes to a concert. + +Showcases how to use OpenAI to stream a chat completion via a prompt that writes a bedtime story: + +```ts +const PROMPT = `Write a short children's bedtime story about an Animal that is a given Color and that does a given Activity. + +Give the animal a cute descriptive and memorable name. + +The story should teach a lesson. + +The story should be told in a quality, style and feeling of the given Adjective. + +The story should be no longer than 3 paragraphs. + +Format the story using Markdown.` + +``` + +The story updates on each stream content delta via a `newStory` subscription topic event. + +```ts +context.pubSub.publish('newStory', id, story) +``` + +### Movie Mashup (Live Query with OpenAI Streaming) + +> It's Out of Africa meets Pretty Woman. + +> So it's a psychic, political, thriller comedy with a heart With a heart, not unlike Ghost meets Manchurian Candidate. + +-- The Player, 1992 + +Mashup some of your favorite movies to create something new and Netflix-worthy to watch. + +Powered by OpenAI, this movie tagline and treatment updates on each stream content delta via a Live Query bui invalidating the `MovieMashup key. + +```ts +context.liveQueryStore.invalidate(`MovieMashup:${id}`) +``` diff --git a/docs/versioned_docs/version-6.0/redwoodrecord.md b/docs/versioned_docs/version-6.x/redwoodrecord.md similarity index 100% rename from docs/versioned_docs/version-6.0/redwoodrecord.md rename to docs/versioned_docs/version-6.x/redwoodrecord.md diff --git a/docs/versioned_docs/version-6.0/router.md b/docs/versioned_docs/version-6.x/router.md similarity index 94% rename from docs/versioned_docs/version-6.0/router.md rename to docs/versioned_docs/version-6.x/router.md index 98d1493d9ab9..a4d48c6d0c56 100644 --- a/docs/versioned_docs/version-6.0/router.md +++ b/docs/versioned_docs/version-6.x/router.md @@ -44,9 +44,7 @@ The `path` prop specifies the URL path to match, starting with the beginning sla ## Private Routes -Some pages should only be visible to authenticated users. - -We support this using private `` component. Read more [further down](#private-set). +Some pages should only be visible to authenticated users. We support this using the `PrivateSet` component. Read more [further down](#privateset). ## Sets of Routes @@ -89,7 +87,7 @@ Conceptually, this fits with how we think about Context and Layouts as things th There's a lot of flexibility here. You can even nest `Sets` to great effect: ```jsx title="Routes.js" -import { Router, Route, Set, Private } from '@redwoodjs/router' +import { Router, Route, Set } from '@redwoodjs/router' import BlogContext from 'src/contexts/BlogContext' import BlogLayout from 'src/layouts/BlogLayout' import BlogNavLayout from 'src/layouts/BlogNavLayout' @@ -130,24 +128,11 @@ becomes... ``` -### `private` Set +### `PrivateSet` -Sets can take a `private` prop which makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the private Set, they'll be redirected to the Route passed as the Set's `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. +A `PrivateSet` makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the `PrivateSet`, they'll be redirected to the Route passed as the `PrivateSet`'s `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. -Here's an example of how you'd use a private set: - -```jsx title="Routes.js" - - - - - - -``` - -Private routes are important and should be easy to spot in your Routes file. The larger your Routes file gets, the more difficult it will probably become to find `` among your other Sets. So we also provide a `` component that's just an alias for ``. Most of our documentation uses ``. - -Here's the same example again, but now using `` +Here's an example of how you'd use a `PrivateSet`: ```jsx title="Routes.js" @@ -160,7 +145,7 @@ Here's the same example again, but now using `` For more fine-grained control, you can specify `roles` (which takes a string for a single role or an array of roles), and the router will check to see that the current user is authorized before giving them access to the Route. If they're not, they will be redirected to the page specified in the `unauthenticated` prop, such as a "forbidden" page. Read more about Role-based Access Control in Redwood [here](how-to/role-based-access-control.md). -To protect `PrivateSet` routes for access by a single role: +To protect private routes for access by a single role: ```jsx title="Routes.js" @@ -172,7 +157,7 @@ To protect `PrivateSet` routes for access by a single role: ``` -To protect `PrivateSet` routes for access by multiple roles: +To protect private routes for access by multiple roles: ```jsx title="Routes.js" @@ -261,7 +246,9 @@ More granular match, `page` key only and `tab=tutorial` activeMatchParams={[{ tab: 'tutorial' }, 'page' ]} ``` -You can `useMatch` to create your own component with active styles. +### useMatch + +You can use `useMatch` to create your own component with active styles. > `NavLink` uses it internally! @@ -528,7 +515,7 @@ Redwood will detect your explicit import and refrain from splitting that page in Because lazily-loaded pages can take a non-negligible amount of time to load (depending on bundle size and network connection), you may want to show a loading indicator to signal to the user that something is happening after they click a link. -In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `Private` component. +In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `PrivateSet` component. ```jsx title="Routes.js" import SkeletonLoader from 'src/components/SkeletonLoader' @@ -574,7 +561,7 @@ When the lazy-loaded page is loading, `PageLoadingContext.Consumer` will pass `{ Let's say you have a dashboard area on your Redwood app, which can only be accessed after logging in. When Redwood Router renders your private page, it will first fetch the user's details, and only render the page if it determines the user is indeed logged in. -In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your private ``, `` component: +In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your `PrivateSet` component: ```jsx //Routes.js @@ -677,7 +664,7 @@ Note that if you're copy-pasting this example, it uses [Tailwind CSS](https://ta :::note Can I customize the development one? -As it's part of the RedwoodJS framework, you can't. But if there's a feature you want to add, let us know on the [forums](https://community.redwoodjs.com/). +As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page, but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). ::: diff --git a/docs/versioned_docs/version-6.0/schema-relations.md b/docs/versioned_docs/version-6.x/schema-relations.md similarity index 95% rename from docs/versioned_docs/version-6.0/schema-relations.md rename to docs/versioned_docs/version-6.x/schema-relations.md index 8c5e65b71358..0d0b3add404b 100644 --- a/docs/versioned_docs/version-6.0/schema-relations.md +++ b/docs/versioned_docs/version-6.x/schema-relations.md @@ -39,7 +39,7 @@ model Tag { } ``` -These relationships can be [implicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations#implicit-many-to-many-relations) (as this diagram shows) or [explicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations#explicit-many-to-many-relations) (explained below). Redwood's SDL generator (which is also used by the scaffold generator) only supports an **explicit** many-to-many relationship when generating with the `--crud` flag. What's up with that? +These relationships can be [implicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#implicit-many-to-many-relations) (as this diagram shows) or [explicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#explicit-many-to-many-relations) (explained below). Redwood's SDL generator (which is also used by the scaffold generator) only supports an **explicit** many-to-many relationship when generating with the `--crud` flag. What's up with that? ## CRUD Requires an `@id` diff --git a/docs/versioned_docs/version-6.0/security.md b/docs/versioned_docs/version-6.x/security.md similarity index 100% rename from docs/versioned_docs/version-6.0/security.md rename to docs/versioned_docs/version-6.x/security.md diff --git a/docs/versioned_docs/version-6.x/seo-head.md b/docs/versioned_docs/version-6.x/seo-head.md new file mode 100644 index 000000000000..7cb5772edd62 --- /dev/null +++ b/docs/versioned_docs/version-6.x/seo-head.md @@ -0,0 +1,356 @@ +--- +description: Use meta tags to set page info for SEO +--- + +# SEO & `` tags + +Search Engine Optimization is a dark art that some folks dedicate their entire lives to. We've add a couple of features to Redwood to make HTML-based SEO fairly simple. + +## Adding a Title + +You certainly want to change the title of your Redwood app from the default of "Redwood App." You can start by adding or modifying `title` inside of `/redwood.toml` + +```diff title=redwood.toml +[web] +- title = "Redwood App" ++ title = "My Cool App" + port = 8910 + apiUrl = "/.redwood/functions" +``` + +This title (the app title) is used by default for all your pages if you don't define another one. +It will also be use for the title template. + +### Title Template + +Now that you have the app title set, you probably want some consistence with the page title, that's what the title template is for. + +Add `titleTemplate` as a prop for `RedwoodProvider` to have a title template for every pages + +```diff title=web/src/App.(tsx|jsx) +- ++ + /* ... */ + +``` + +You can use whatever formatting you'd like in here. Some examples: + +```jsx +"%PageTitle | %AppTitle" => "Home Page | Redwood App" + +"%AppTitle · %PageTitle" => "Redwood App · Home Page" + +"%PageTitle : %AppTitle" => "Home Page : Redwood App" +``` + +## Adding to Page `` + +So you want to change the title of your page, or add elements to the `` of the page? We've got you! + +Let's say you want to change the title of your About page, Redwood provides a built in `` component, which you can use like this: + +```diff title=web/src/pages/AboutPage/AboutPage.(tsx|jsx) ++import { Head } from '@redwoodjs/web' + +const AboutPage = () => { + return ( +
+

AboutPage

++ ++ About the team ++ +``` + +You can include any valid `` tag in here that you like. However, Redwood also provides a utility component [<Metadata>](#setting-meta-tags-and-opengraph-directives-with-metadata). + +:::caution `` Deprecation + +Prior to Redwood 6.6.0 this component was called `` and had several special hard-coded props like `ogContentUrl`, which didn't properly map to the OpenGraph spec. We'll still render `` for the foreseeable future, but it's deprecated and you should migrate to `` if you have an existing app. + +::: + +### What About Nested Tags? + +Redwood uses [react-helmet-async](https://github.com/staylor/react-helmet-async) underneath, which will use the tags furthest down your component tree. + +For example, if you set title in your Layout, and a title in your Page, it'll render the one in Page - this way you can override the tags you wish, while sharing the tags defined in Layout. + +:::info Bots & `` Tags + +For these headers to appear to bots and scrapers e.g. for twitter to show your title, you have to make sure your page is prerendered. If your content is static you can use Redwood's built in [Prerender](prerender.md). For dynamic tags, check the [Dynamic head tags](#dynamic-tags) + +::: + +## Setting `` Tags and OpenGraph Directives with `` + +Often we want to set more than just the title and description of the page—most commonly [OpenGraph](https://ogp.me/) headers. + +Redwood provides a convenience component `` to help you create most of these `` tags for you with a more concise syntax. But, you can also pass children and define any custom content that you want. + +Here's an example setting some common meta, including a page title, description, `og:image` and an `http-equiv`: + +```jsx +import { Metadata } from '@redwoodjs/web' + +const AboutPage = () => { + return ( +
+ + + + +

About Page

+

This is the about page!

+
+ ) +} + +export default AboutPage +``` + +This code would be transformed into this HTML and injected into the `` tag: + +```html +About page + + + + + + + + + +``` + +Setting an `og:image` is how sites like Facebook and Slack can show a preview of a URL when pasted into a post (also known as "unfurling"): + +![Typical URL unfurl](/img/facebook_unfurl.png) + +Sites like GitHub go a step farther than a generic image by actually creating an image for a repo on the fly, including details about the repo itself: + +![GitHub's og:image for the redwood repo](https://opengraph.githubassets.com/322ce8081bb85a86397a59494eab1c0fbe942b5104461f625e2c973c46ae4179/redwoodjs/redwood) + +If you want to write your own `` tags, skipping the interpolation that `` does for you, you can pass them as children to `` or just write them into the `` tag as normal. + +### `` Props + +For the most part `` creates simple `` tags based on the structure of the props you pass in. There are a couple of special behaviors described below. + +#### Plain Key/Value Props + +Any "plain" key/value prop will be turned into a `` tag with `name` and `content` attributes: + +```jsx + +// generates + +``` + +Child elements are just copied 1:1 to the resulting output: + +```jsx + + + +// generates + + +``` + +#### Passing Objects to Props + +Any props that contain an object will create a `` tag with `property` and `content` attributes, and the `property` being the names of the nested keys with a `:` between each: + +```jsx + +// generates + +``` + +This is most commonly used to create the "nested" structure that a spec like OpenGraph uses: + +```jsx + +// generates + +``` + +You can create multiple `` tags with the same name/property (allowed by the OpenGraph spec) by using an array: + +```jsx + +// generates + + +``` + +You can combine nested objects with strings to create any structure you like: + +```jsx + +// generates + + + + + + + +``` + +#### Special OpenGraph Helpers + +If you define _any_ `og` prop, we will copy any `title` and `description` to an `og:title` and `og:description`: + +```jsx + +// generates + + +``` + +You can override this behavior by explicitly setting `og:title` or `og:description` to `null`: + +```jsx + +// generates + +``` + +Of course, if you don't want any auto-generated `og` tags, then don't include any `og` prop at all! + +In addition to `og:title` and `og:description`, if you define _any_ `og` prop we will generate an `og:type` set to `website`: + +```jsx + +// generates + +``` + +You can override the `og:type` by setting it directly: + +```jsx + +// generates + +``` + +#### Other Special Cases + +If you define a `title` prop we will automatically prepend a `` tag to the output: + +```jsx +<Metadata title="My Website" /> +// generates +<title>My Website + +``` + +If you define a `charSet` prop we will create a `` tag with the `charset` attribute: + +```jsx + +// generates + +``` + +We simplified some of the examples above by excluding the generated `` and `og:type` tags, so here's the real output if you included `title` and `og` props: + +```jsx +<Metadata title="My Website" og /> +// generates +<title>My Website + + + + +``` + +:::info Do I need to apply these same tags over and over in every page? + +Some `` tags, like `charset` or `locale` are probably applicable to the entire site, in which case it would be simpler to just include these once in your `index.html` instead of having to set them manually on each and every page/cell of your site. + +::: + +This should allow you to create a fairly full-featured set of `` tags with minimal special syntax! A typical `` invocation could look like: + +```jsx + +``` + +## Dynamic tags + +Bots will pick up our tags if we've prerendered the page, but what if we want to set the `` based on the output of the Cell? + +:::info Prerendering + +As of v3.x, Redwood supports prerendering your [Cells](https://redwoodjs.com/docs/cells) with the data you were querying. For more information please refer [to this section](https://redwoodjs.com/docs/prerender#cell-prerendering). + +::: + +Let's say in our `PostCell`, we want to set the title to match the `Post`. + +```jsx +import { Metadata } from '@redwoodjs/web' + +import Post from 'src/components/Post/Post' + +export const QUERY = gql` + query FindPostById($id: Int!) { + post: post(id: $id) { + title + snippet + author { + name + } + } + } +` + +export const Loading = /* ... */ + +export const Empty = /* ... */ + +export const Success = ({ post }) => { + return ( + <> + + + + ) +} +``` + +Once the `Success` component renders, it will update your page's `` and set the relevant `<meta>` tags for you! diff --git a/docs/versioned_docs/version-6.0/serverless-functions.md b/docs/versioned_docs/version-6.x/serverless-functions.md similarity index 98% rename from docs/versioned_docs/version-6.0/serverless-functions.md rename to docs/versioned_docs/version-6.x/serverless-functions.md index fc327a39063e..c0c53fc8a846 100644 --- a/docs/versioned_docs/version-6.0/serverless-functions.md +++ b/docs/versioned_docs/version-6.x/serverless-functions.md @@ -2,10 +2,19 @@ description: Create, develop, and run serverless functions --- -# Serverless Functions +# Serverless Functions (API Endpoints) <!-- `redwood.toml`—`api/src/functions` by default. --> + +:::info + +You can think of serverless functions as API Endpoints, and in the future we'll update the terminology used. + +Originally, Redwood apps were intended to be deployed as serverless functions to AWS Lambda. Whenever a Redwood app is deployed to a "serverful" environment such as Fly or Render, a Fastify server is started and your Redwood app's functions in `api/src/functions` are automatically registered onto the server. Request adapters are also automatically configured to handle the translation between Fastify's request and reply objects to the functions' AWS Lambda signature. + +::: + Redwood looks for serverless functions in `api/src/functions`. Each function is mapped to a URI based on its filename. For example, you can find `api/src/functions/graphql.js` at `http://localhost:8911/graphql`. ## Creating Serverless Functions @@ -34,12 +43,6 @@ export const handler = async (event, context) => { } ``` -:::info - -We call them 'serverless' but they can also be used on 'serverful' hosted environments too, such as Render or Heroku. - -::: - ## The handler For a lambda function to be a lambda function, it must export a handler that returns a status code. The handler receives two arguments: `event` and `context`. Whatever it returns is the `response`, which should include a `statusCode` at the very least. diff --git a/docs/versioned_docs/version-6.0/services.md b/docs/versioned_docs/version-6.x/services.md similarity index 98% rename from docs/versioned_docs/version-6.0/services.md rename to docs/versioned_docs/version-6.x/services.md index eecf04215ded..52bb916f0a8a 100644 --- a/docs/versioned_docs/version-6.0/services.md +++ b/docs/versioned_docs/version-6.x/services.md @@ -618,7 +618,7 @@ validate(input.value, 'Value', { ``` ### validateWithSync() -`validateWith()` is simply given a function to execute. This function should throw with a message if there is a problem, otherwise do nothing. +`validateWithSync()` is simply given a function to execute. This function should throw with a message if there is a problem, otherwise do nothing. ```jsx validateWithSync(() => { @@ -636,14 +636,14 @@ validateWithSync(() => { Either of these errors will be caught and re-thrown as a `ServiceValidationError` with your text as the `message` of the error (although technically you should always throw errors with `new Error()` like in the second example). -You could just write your own function and throw whatever you like, without using `validateWith()`. But, when accessing your Service function through GraphQL, that error would be swallowed and the user would simply see "Something went wrong" for security reasons: error messages could reveal source code or other sensitive information so most are hidden. Errors thrown by Service Validations are considered "safe" and allowed to be shown to the client. +You could just write your own function and throw whatever you like, without using `validateWithSync()`. But, when accessing your Service function through GraphQL, that error would be swallowed and the user would simply see "Something went wrong" for security reasons: error messages could reveal source code or other sensitive information so most are hidden. Errors thrown by Service Validations are considered "safe" and allowed to be shown to the client. -### validateWithSync() +### validateWith() -The same behavior as `validateWithSync()` but works with Promises. +The same behavior as `validateWithSync()` but works with Promises. Remember to `await` the validation. ```jsx -validateWithSync(async () => { +await validateWith(async () => { if (await db.products.count() >= 100) { throw "There can only be a maximum of 100 products in your store" } @@ -1114,7 +1114,7 @@ const updateUser = async ({ id, input }) => { }) ``` -:::caution +:::warning When explicitly deleting cache keys like this you could find yourself going down a rabbit hole. What if there is another service somewhere that also updates user? Or another service that updates an organization, as well as all of its underlying child users at the same time? You'll need to be sure to call `deleteCacheKey()` in these places as well. As a general guideline, it's better to come up with a cache key that encapsulates any triggers for when the data has changed (like the `updatedAt` timestamp, which will change no matter who updates the user, anywhere in your codebase). diff --git a/docs/versioned_docs/version-6.0/storybook.md b/docs/versioned_docs/version-6.x/storybook.md similarity index 100% rename from docs/versioned_docs/version-6.0/storybook.md rename to docs/versioned_docs/version-6.x/storybook.md diff --git a/docs/versioned_docs/version-6.0/testing.md b/docs/versioned_docs/version-6.x/testing.md similarity index 98% rename from docs/versioned_docs/version-6.0/testing.md rename to docs/versioned_docs/version-6.x/testing.md index 426038a6b85a..13bebbcec89d 100644 --- a/docs/versioned_docs/version-6.0/testing.md +++ b/docs/versioned_docs/version-6.x/testing.md @@ -274,6 +274,7 @@ render(<Article article={ title: 'Foobar' } />, { }) ``` ::: + ### Mocking useLocation To mock `useLocation` in your component tests, wrap the component with `LocationProvider`: @@ -288,6 +289,22 @@ render( ) ``` +### Mocking useParams + +To mock `useParams` in your component tests, wrap the component with `ParamsProvider`: + +```jsx +import { ParamsProvider } from '@redwoodjs/router'; + +render( + <ParamsProvider allParams={{ param1: 'val1', param2: 'val2' }}> + <Component /> + </ParamsProvider> +) +``` + +The `allParams` argument accepts an object that will provide parameters as you expect them from the query parameters of a URL string. In the above example, we are assuming the URL looks like `/?param1=val1¶m2=val2`. + ### Queries In most cases you will want to exclude the design elements and structure of your components from your test. Then you're free to redesign the component all you want without also having to make the same changes to your test suite. Let's look at some of the functions that React Testing Library provides (they call them "[queries](https://testing-library.com/docs/queries/about/)") that let you check for *parts* of the rendered component, rather than a full string match. @@ -1131,9 +1148,9 @@ export default NameForm Now, we can extend the `test` file which Redwood generated. We're going to want to: -1) Import `waitFor` from the `@redwoodjs/testing/web` library. -2) Add an import to `@testing-library/user-event` for its `default`. -3) Provide an `onSubmit` prop to our "renders successfully" test. +1. Import `waitFor` from the `@redwoodjs/testing/web` library. +2. Add an import to `@testing-library/user-event` for its `default`. +3. Provide an `onSubmit` prop to our "renders successfully" test. ```jsx title="NameForm.test.js" import { render, screen, waitFor } from '@redwoodjs/testing/web' @@ -1154,9 +1171,9 @@ describe('NameForm', () => { Finally, we'll create three simple tests which ensure our form works as expected. -1) Does our component NOT submit when required fields are empty? -2) Does our component submit when required fields are populated? -3) Does our component submit, passing our (submit) handler the data we entered? +1. Does our component NOT submit when required fields are empty? +2. Does our component submit when required fields are populated? +3. Does our component submit, passing our (submit) handler the data we entered? The important takeaways are: @@ -1261,7 +1278,7 @@ Does anyone else find it confusing that the software itself is called a "databas When you start your test suite you may notice some output from Prisma talking about migrating the database. Redwood will automatically run `yarn rw prisma db push` against your test database to make sure it's up-to-date. -:::caution What if I have custom migration SQL? +:::warning What if I have custom migration SQL? The `prisma db push` command only restores a snapshot of the current database schema (so that it runs as fast as possible). **It does not actually run migrations in sequence.** This can cause a [problem](https://github.com/redwoodjs/redwood/issues/5818) if you have certain database configuration that *must* occur as a result of the SQL statements inside the migration files. @@ -1958,6 +1975,16 @@ console.log(testCacheClient.storage) This is mainly helpful when you are testing for a very specific value, or have edgecases in how the serialization/deserialization works in the cache. +## Testing Mailer + +If your project uses [RedwoodJS Mailer](./mailer.md) to send emails, you can [also write tests](./mailer.md#testing) to make sure that email: + +* is sent to an sandbox inbox +* renders properly +* sets the expected to, from, cc, bcc, subject attributes based on the email sending logic +* checks that the html and text content is set correctly + +Since these tests send mail to a sandbox inbox, you can be confident that no emails accidentally get sent into the wild as part of your test or CI runs. ## Wrapping Up diff --git a/docs/versioned_docs/version-6.x/toast-notifications.md b/docs/versioned_docs/version-6.x/toast-notifications.md new file mode 100644 index 000000000000..9b22ee524bd4 --- /dev/null +++ b/docs/versioned_docs/version-6.x/toast-notifications.md @@ -0,0 +1,133 @@ +--- +description: Toast notifications with react-hot-toast +--- + +# Toast Notifications + +Did you know that those little popup notifications that you sometimes see at the top of a page after you've performed an action are affectionately known as "toast" notifications? +Because they pop up like a piece of toast from a toaster! + +![Example toast animation](https://user-images.githubusercontent.com/300/110032806-71024680-7ced-11eb-8d69-7f462929815e.gif) + +Redwood supports these notifications out of the box thanks to the [react-hot-toast](https://react-hot-toast.com/) package. +We'll refer you to their [docs](https://react-hot-toast.com/docs) since they're very thorough, but here's enough to get you going. + +### Add the `Toaster` Component + +To render toast notifications, start by adding the `Toaster` component. +It's usually better to add it at the App or Layout-level than the Page: + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +// highlight-next-line +import { Toaster } from '@redwoodjs/web/toast' + +const MainLayout = ({ children }) => { + return ( + <> + // highlight-next-line + <Toaster /> + <main>{children}</main> + </> + ) +} + +export default MainLayout +``` + +### Call the `toast` function + +To render a basic toast notification with default styles, call the `toast` function: + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION) + + const onSubmit = async (data) => { + try { + await create({ variables: { input: data }}) + // highlight-next-line + toast('Post created') + } + catch (e) { + // highlight-next-line + toast('Error creating post') + } + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +### Call the `toast` variants + +To render a toast notification with default icons and default styles, call the `toast` variants: + +```jsx title="web/src/components/PostForm/PostForm.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION, { + onCompleted: () => { + // highlight-next-line + toast.success('Post created') + } + onError: () => { + // highlight-next-line + toast.error('Error creating post') + } + }) + + const onSubmit = (data) => { + create({ variables: { input: data }}) + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +or render an async toast by calling the `toast.promise` function: + +```jsx title="web/src/components/PostForm/PostForm.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION) + + const onSubmit = (data) => { + // highlight-next-line + toast.promise(create({ variables: { input: data }}), { + loading: 'Creating post...', + success: 'Post created', + error: 'Error creating post', + }) + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +:::warning + +You can't use the [onError](https://www.apollographql.com/docs/react/api/react/hooks/#onerror) callback in combination with the `toast.promise` function. + +::: diff --git a/docs/versioned_docs/version-6.0/tutorial/afterword.md b/docs/versioned_docs/version-6.x/tutorial/afterword.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/afterword.md rename to docs/versioned_docs/version-6.x/tutorial/afterword.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter0/what-is-redwood.md b/docs/versioned_docs/version-6.x/tutorial/chapter0/what-is-redwood.md similarity index 91% rename from docs/versioned_docs/version-6.0/tutorial/chapter0/what-is-redwood.md rename to docs/versioned_docs/version-6.x/tutorial/chapter0/what-is-redwood.md index 652f36148400..e779cafefdf2 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter0/what-is-redwood.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter0/what-is-redwood.md @@ -28,10 +28,10 @@ You can start them both with a single command: `yarn redwood dev` ### The Router -When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declaritive Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: +When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declarative Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: ```jsx -import { Set, Router, Route } from '@redwoodjs/router' +import { Route, Router, Set, PrivateSet } from '@redwoodjs/router' import ApplicationLayout from 'src/layouts/ApplicationLayout' import { useAuth } from './auth' @@ -41,10 +41,10 @@ const Routes = () => { <Set wrap={ApplicationLayout}> <Route path="/login" page={LoginPage} name="login" /> <Route path="/signup" page={SignupPage} name="signup" /> - <Private unauthenticated="login"> + <PrivateSet unauthenticated="login"> <Route path="/dashboard" page={DashboardPage} name="dashboard" /> <Route path="/products/{sku}" page={ProductsPage} name="products" /> - </Private> + </PrivateSet> </Set> <Route path="/" page={HomePage} name="home" /> @@ -54,7 +54,7 @@ const Routes = () => { } ``` -You can probably get a sense of how all of this works without ever having seen a Redwood route before! Some routes can be marked as `<Private>` and will not be accessible without being logged in. Others can be wrapped in a "layout" (again, just a React component) to provide common styling shared between pages in your app. +You can probably get a sense of how all of this works without ever having seen a Redwood route before! Some routes can be marked as `<PrivateSet>` and will not be accessible without being logged in. Others can be wrapped in a "layout" (again, just a React component) to provide common styling shared between pages in your app. #### Prerender @@ -66,7 +66,7 @@ This is Redwood's version of static site generation, aka SSG. ### Authentication -The `<Private>` route limits access to users that are authenticated, but how do they authenticate? Redwood includes integrations to many popular third party authentication hosts (including [Auth0](https://auth0.com/), [Supabase](https://supabase.com/docs/guides/auth) and [Clerk](https://clerk.com/)). You can also [host your own auth](https://redwoodjs.com/docs/auth/dbauth), or write your own [custom authentication](https://redwoodjs.com/docs/auth/custom) option. If going self-hosted, we include login, signup, and reset password pages, as well as the option to include TouchID/FaceID and third party biometric readers! +The `<PrivateSet>` route limits access to users that are authenticated, but how do they authenticate? Redwood includes integrations to many popular third party authentication hosts (including [Auth0](https://auth0.com/), [Supabase](https://supabase.com/docs/guides/auth) and [Clerk](https://clerk.com/)). You can also [host your own auth](https://redwoodjs.com/docs/auth/dbauth), or write your own [custom authentication](https://redwoodjs.com/docs/auth/custom) option. If going self-hosted, we include login, signup, and reset password pages, as well as the option to include TouchID/FaceID and third party biometric readers! Once authenticated, how do you know what a user is allowed to do or not do? Redwood includes helpers for [role-based access control](https://redwoodjs.com/docs/how-to/role-based-access-control-rbac) that integrates on both the front- and backend. @@ -99,7 +99,7 @@ Going back to our testimonals hypothetical, a cell to fetch and display them may ```js export const QUERY = gql` query GetTestimonials { - testimonals { + testimonials { id author quote @@ -122,11 +122,11 @@ export const Success = ({ testimonials }) => { } ``` -(In this case we don't export `Empty` so that if there aren't any, that section of the final page won't render anything, not even indicating to the user that something is missing.) +(In this case we don't export `Empty` so that if there aren't any testimonials, that section of the final page won't render anything, not even indicating to the user that something is missing.) If you ever create additional clients for your server (a mobile app, perhaps) you'll be giving yourself a huge advantage by using GraphQL from the start. -Oh, and prerendering also works with cells! At build time, Redwood will start up the GraphQL server and make requests, just as if a user was access the pages, rendering the result to plain HTML, ready to be loaded instantly by the browser. +Oh, and prerendering also works with cells! At build time, Redwood will start up the GraphQL server and make requests, just as if a user was accessing the pages, rendering the result to plain HTML, ready to be loaded instantly by the browser. ### Apollo Cache @@ -170,7 +170,7 @@ model Testimonial { } ``` -Prisma has a couple command line tools that take changes to this file and turn them into [SQL DDL commands](https://www.sqlshack.com/sql-ddl-getting-started-with-sql-ddl-commands-in-sql-server/) which are executed against your database to update its structure to match. +Prisma has a couple of command line tools that take changes to this file and turn them into [SQL DDL commands](https://www.sqlshack.com/sql-ddl-getting-started-with-sql-ddl-commands-in-sql-server/) which are executed against your database to update its structure to match. #### GraphQL @@ -234,7 +234,7 @@ export const schema = gql` ` ``` -The `testimonials` query is marked with the [GraphQL directive](../../directives.md) `@skipAuth` meaning that requests here should *not* be limited to authenticated users. However, the critical `createTestimonail` and `deleteTestimonial` mutations are marked `@requireAuth`, and so can only be called by a logged in user. +The `testimonials` query is marked with the [GraphQL directive](../../directives.md) `@skipAuth` meaning that requests here should *not* be limited to authenticated users. However, the critical `createTestimonial` and `deleteTestimonial` mutations are marked `@requireAuth`, and so can only be called by a logged in user. Redwood's backend GraphQL server is powered by [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server) and so you have access to everything that makes Yoga secure and performant: rate and depth limiting, logging, directives, and a ton more. @@ -275,7 +275,7 @@ There's even an interactive console that lets you, for example, execute Prisma q ## Jest -Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicty. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). +Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicity. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). Redwood includes several Jest helpers and matchers, allowing you to mock out GraphQL requests, database data, logged in users, and more. diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/file-structure.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/file-structure.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/file-structure.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/file-structure.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/first-page.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/first-page.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/first-page.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/first-page.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/installation.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/installation.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/installation.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/installation.md index 26df59ca3c32..266664f74687 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter1/installation.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter1/installation.md @@ -24,6 +24,7 @@ You'll have a new directory `redwoodblog` containing several directories and fil ```bash cd redwoodblog +yarn install yarn redwood dev ``` diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/layouts.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/layouts.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/layouts.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/layouts.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/prerequisites.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/prerequisites.md similarity index 89% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/prerequisites.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/prerequisites.md index 4013773b7d2c..094a84230861 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter1/prerequisites.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter1/prerequisites.md @@ -31,7 +31,7 @@ If you have an existing site created with a prior version, you'll need to upgrad During installation, RedwoodJS checks if your system meets version requirements for Node and Yarn: - node: "=18.x" -- yarn: ">=1.15" +- yarn: ">=1.22.21" If you're using a version of Node or Yarn that's **less** than what's required, _the installation bootstrap will result in an ERROR_. To check, please run the following from your terminal command line: @@ -46,14 +46,21 @@ Please do upgrade accordingly. Then proceed to the Redwood installation when you There are many ways to install and manage both Node.js and Yarn. If you're installing for the first time, we recommend the following: -**1. Yarn** -We recommend following the [instructions via Yarnpkg.com](https://yarnpkg.com/getting-started/install). - -**2. Node.js** +**1. Node.js** Using the recommended [LTS version from Nodejs.org](https://nodejs.org/en/) is preferred. - `nvm` is a great tool for managing multiple versions of Node on one system. It takes a bit more effort to set up and learn, however. Follow the [nvm installation instructions](https://github.com/nvm-sh/nvm#installing-and-updating). (Windows users should go to [nvm-windows](https://github.com/coreybutler/nvm-windows/releases)). For **Mac** users with Homebrew installed, you can alternatively use it to [install `nvm`](https://formulae.brew.sh/formula/nvm). Or, refer to our how to guide [using nvm](../../how-to/using-nvm.md). +**2. Yarn** +As of Node.js v18+, Node.js ships with a CLI tool called [Corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html) to manage package managers. All you have to do is enable it, then you'll have Yarn: + +``` +corepack enable +yarn -v +``` + +The version of Yarn will probably be `1.22.21`, but don't worry—in your Redwood project, Corepack will know to use a modern version of Yarn because of the `packageManager` field in the root `package.json`. + **Windows:** Recommended Development Setup - JavaScript development on Windows has specific requirements in addition to Yarn and npm. Follow our simple setup guide: diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter1/second-page.md b/docs/versioned_docs/version-6.x/tutorial/chapter1/second-page.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter1/second-page.md rename to docs/versioned_docs/version-6.x/tutorial/chapter1/second-page.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/cells.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/cells.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/cells.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/cells.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/getting-dynamic.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/getting-dynamic.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/getting-dynamic.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/getting-dynamic.md index 627de868701e..c67b0712b314 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter2/getting-dynamic.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter2/getting-dynamic.md @@ -135,7 +135,7 @@ Okay but what if we click "Delete"? So, Redwood just created all the pages, components and services necessary to perform all CRUD actions on our posts table. No need to even open Prisma Studio or login through a terminal window and write SQL from scratch. Redwood calls these _scaffolds_. -:::caution +:::warning If you head back to VSCode at some point and get a notice in one of the generated Post cells about `Cannot query "posts" on type "Query"` don't worry: we've seen this from time to time on some systems. There are two easy fixes: diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/routing-params.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/routing-params.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/routing-params.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/routing-params.md index dbeb77632382..ff502bb040ac 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter2/routing-params.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter2/routing-params.md @@ -349,7 +349,7 @@ export const Success = ({ article }) => { <TabItem value="ts" label="TypeScript"> ```tsx title="web/src/components/ArticleCell/ArticleCell.tsx" -import type { FindArticleQuery } from 'types/graphql' +import type { FindArticleQuery, FindArticleQueryVariables } from 'types/graphql' import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' export const QUERY = gql` @@ -775,7 +775,7 @@ export const Success = ({ article }) => { // highlight-next-line import Article from 'src/components/Article' -import type { FindArticleQuery } from 'types/graphql' +import type { FindArticleQuery, FindArticleQueryVariables } from 'types/graphql' import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' export const QUERY = gql` diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter2/side-quest.md b/docs/versioned_docs/version-6.x/tutorial/chapter2/side-quest.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter2/side-quest.md rename to docs/versioned_docs/version-6.x/tutorial/chapter2/side-quest.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter3/forms.md b/docs/versioned_docs/version-6.x/tutorial/chapter3/forms.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter3/forms.md rename to docs/versioned_docs/version-6.x/tutorial/chapter3/forms.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter3/saving-data.md b/docs/versioned_docs/version-6.x/tutorial/chapter3/saving-data.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter3/saving-data.md rename to docs/versioned_docs/version-6.x/tutorial/chapter3/saving-data.md index 67b8c1f8de47..7b4732c5c14a 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter3/saving-data.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter3/saving-data.md @@ -1795,7 +1795,7 @@ const [create, { loading, error }] = useMutation< </TabItem> </Tabs> -:::caution +:::warning You can put the email validation back into the `<TextField>` now, but you should leave the server validation in place, just in case. diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter4/authentication.md b/docs/versioned_docs/version-6.x/tutorial/chapter4/authentication.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter4/authentication.md rename to docs/versioned_docs/version-6.x/tutorial/chapter4/authentication.md index 562d7b34b0a3..c42b3fb7d393 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter4/authentication.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter4/authentication.md @@ -95,7 +95,7 @@ Redwood includes [integrations](../../authentication.md) for several of the most - [Auth0](https://auth0.com/) - [Clerk](https://clerk.dev/) - [Netlify Identity](https://docs.netlify.com/visitor-access/identity/) -- [Firebase's GoogleAuthProvider](https://firebase.google.com/docs/reference/js/firebase.auth.GoogleAuthProvider) +- [Firebase's GoogleAuthProvider](https://firebase.google.com/docs/reference/js/v8/firebase.auth.GoogleAuthProvider) - [Supabase](https://supabase.io/docs/guides/auth) - [SuperTokens](https://supertokens.com) @@ -202,7 +202,7 @@ Going to the admin section now prevents a non-logged in user from seeing posts, ```jsx title="web/src/Routes.jsx" // highlight-next-line -import { Private, Router, Route, Set } from '@redwoodjs/router' +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' import ScaffoldLayout from 'src/layouts/ScaffoldLayout' import BlogLayout from 'src/layouts/BlogLayout' diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter4/deployment.md b/docs/versioned_docs/version-6.x/tutorial/chapter4/deployment.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter4/deployment.md rename to docs/versioned_docs/version-6.x/tutorial/chapter4/deployment.md index fd273091f468..bf7376195eb3 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter4/deployment.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter4/deployment.md @@ -87,7 +87,7 @@ This adds a `netlify.toml` config file in the root of the project that is good t And with that, we're ready to setup Netlify itself. -:::caution +:::warning While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/first-story.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/first-story.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/first-story.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/first-story.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/first-test.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/first-test.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/first-test.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/first-test.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/storybook.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/storybook.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/storybook.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/storybook.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter5/testing.md b/docs/versioned_docs/version-6.x/tutorial/chapter5/testing.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter5/testing.md rename to docs/versioned_docs/version-6.x/tutorial/chapter5/testing.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/comment-form.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/comment-form.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/comment-form.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/comment-form.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/comments-schema.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/comments-schema.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/comments-schema.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/comments-schema.md index 421bfb51b2e5..243488167736 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter6/comments-schema.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter6/comments-schema.md @@ -685,7 +685,7 @@ export const standard = defineScenario({ </TabItem> <TabItem value="ts" label="TypeScript"> -```javascript title="api/src/services/comments/comments.scenarios.ts" +```ts title="api/src/services/comments/comments.scenarios.ts" import type { Prisma } from '@prisma/client' export const standard = defineScenario<Prisma.CommentCreateArgs>({ diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/multiple-comments.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/multiple-comments.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/multiple-comments.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/multiple-comments.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter6/the-redwood-way.md b/docs/versioned_docs/version-6.x/tutorial/chapter6/the-redwood-way.md similarity index 100% rename from docs/versioned_docs/version-6.0/tutorial/chapter6/the-redwood-way.md rename to docs/versioned_docs/version-6.x/tutorial/chapter6/the-redwood-way.md diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter7/api-side-currentuser.md b/docs/versioned_docs/version-6.x/tutorial/chapter7/api-side-currentuser.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter7/api-side-currentuser.md rename to docs/versioned_docs/version-6.x/tutorial/chapter7/api-side-currentuser.md index 105cc05349ce..bce5ffaa2efd 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter7/api-side-currentuser.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter7/api-side-currentuser.md @@ -112,7 +112,7 @@ Whoops! Similar to what happened when we added `roles` to `User`, We made `userId` a required field, but we already have several posts in our development database. Since we don't have a default value for `userId` defined, it's impossible to add this column to the database. -:::caution Why don't we just set `@default(1)` in the schema? +:::warning Why don't we just set `@default(1)` in the schema? This would get us past this problem, but could cause hard-to-track-down bugs in the future: if you ever forget to assign a `post` to a `user`, rather than fail it'll happily just set `userId` to `1`, which may or may not even exist some day! It's best to take the extra time to do things The Right Way and avoid the quick hacks to get past an annoyance like this. Your future self will thank you! @@ -605,7 +605,7 @@ Finally, we'll need to update several of the scaffold components to use the new ```javascript title="web/src/components/Post/EditPostCell/EditPostCell.js" export const QUERY = gql` - query FindPostById($id: Int!) { + query EditPostById($id: Int!) { // highlight-next-line post: adminPost(id: $id) { id diff --git a/docs/versioned_docs/version-6.0/tutorial/chapter7/rbac.md b/docs/versioned_docs/version-6.x/tutorial/chapter7/rbac.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/chapter7/rbac.md rename to docs/versioned_docs/version-6.x/tutorial/chapter7/rbac.md index bac9123c38c4..490b98a4d5ac 100644 --- a/docs/versioned_docs/version-6.0/tutorial/chapter7/rbac.md +++ b/docs/versioned_docs/version-6.x/tutorial/chapter7/rbac.md @@ -178,14 +178,14 @@ The easiest way to prevent access to an entire URL is via the Router. The `<Priv ```tsx title="web/src/Routes.tsx" // highlight-next-line -<Private unauthenticated="home" roles="admin"> +<PrivateSet unauthenticated="home" roles="admin"> <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> <Route path="/admin/posts" page={PostPostsPage} name="posts" /> </Set> -</Private> +</PrivateSet> ``` </TabItem> @@ -228,7 +228,7 @@ Which should return the new content of the user: } ``` -:::caution +:::warning If you re-used the same console session from the previous section, you'll need to quit it and start it again for it to know about the new Prisma data structure. If you still can't get the update to work, maybe your user doesn't have an `id` of `1`! Run `db.user.findMany()` first and then get the `id` of the user you want to update. @@ -895,7 +895,7 @@ describe('Comment', () => { We moved the default `comment` object to a constant `COMMENT` and then used that in all tests. We also needed to add `waitFor()` since the `hasRole()` check in the Comment itself actually executes some GraphQL calls behind the scenes to figure out who the user is. The test suite makes mocked GraphQL calls, but they're still asynchronous and need to be waited for. If you don't wait, then `currentUser` will be `null` when the test starts, and Jest will be happy with that result. But we won't—we need to wait for the actual value from the GraphQL call. -:::caution Seeing errors in your test suite? +:::warning Seeing errors in your test suite? We added fields to the database and sometimes the test runner doesn't realize this. You may need to restart it to get the test database migrated to match what's in `schema.prisma`. Press `q` or `Ctrl-C` in your test runner if it's still running, then: diff --git a/docs/versioned_docs/version-6.0/tutorial/foreword.md b/docs/versioned_docs/version-6.x/tutorial/foreword.md similarity index 99% rename from docs/versioned_docs/version-6.0/tutorial/foreword.md rename to docs/versioned_docs/version-6.x/tutorial/foreword.md index f6b44e65c5de..ec1f1810ed40 100644 --- a/docs/versioned_docs/version-6.0/tutorial/foreword.md +++ b/docs/versioned_docs/version-6.x/tutorial/foreword.md @@ -24,7 +24,7 @@ They might look like this... ::: -:::caution +:::warning or sometimes like this... diff --git a/docs/versioned_docs/version-6.0/tutorial/intermission.md b/docs/versioned_docs/version-6.x/tutorial/intermission.md similarity index 97% rename from docs/versioned_docs/version-6.0/tutorial/intermission.md rename to docs/versioned_docs/version-6.x/tutorial/intermission.md index 0416b563de5b..793730157af2 100644 --- a/docs/versioned_docs/version-6.0/tutorial/intermission.md +++ b/docs/versioned_docs/version-6.x/tutorial/intermission.md @@ -34,9 +34,9 @@ yarn rw dev If you haven't been through the first tutorial, or maybe you went through it on an older version of Redwood (anything pre-0.41) you can clone [this repo](https://github.com/redwoodjs/redwood-tutorial) which contains everything built so far and also adds a little styling so it isn't quite so...tough to look at. The example repo includes [TailwindCSS](https://tailwindcss.com) to style things up and adds a `<div>` or two to give us some additional hooks to hang styling on. -:::caution The TypeScript version of the Example Repo is currently in progress +:::warning The TypeScript version of the Example Repo is currently in progress -If you want to complete the tutorial in TypeScript, continue with your own repo, making any necessary edits. Don't worry, the remainder of the tutorial continues to offer both TypeScript and JavaScript example code changes. +If you want to complete the tutorial in TypeScript, continue with your own repo, making any necessary edits. Don't worry, the remainder of the tutorial continues to offer both TypeScript and JavaScript example code changes. ::: diff --git a/docs/versioned_docs/version-6.0/typescript/generated-types.md b/docs/versioned_docs/version-6.x/typescript/generated-types.md similarity index 84% rename from docs/versioned_docs/version-6.0/typescript/generated-types.md rename to docs/versioned_docs/version-6.x/typescript/generated-types.md index 76d33cb1b451..644cc7b39bd4 100644 --- a/docs/versioned_docs/version-6.0/typescript/generated-types.md +++ b/docs/versioned_docs/version-6.x/typescript/generated-types.md @@ -164,9 +164,40 @@ You can configure graphql-codegen in a number of different ways: `codegen.yml`, For completeness, [here's the docs](https://www.graphql-code-generator.com/docs/config-reference/config-field) on configuring GraphQL Code Generator. Currently, Redwood only supports the root level `config` option. +## Experimental SDL Code Generation + +There is also an experimental code generator based on [sdl-codegen](https://github.com/sdl-codegen/sdl-codegen) available. sdl-codegen is a fresh implementation of code generation for service files, built with Redwood in mind. It is currently in opt-in and can be enabled by setting the `experimentalSdlCodeGen` flag to `true` in your `redwood.toml` file: + +```toml title="redwood.toml" +[experimental] + useSDLCodeGenForGraphQLTypes = true +``` + +Running `yarn rw g types` will generate types for your resolvers on a per-file basis, this feature can be paired with the optional eslint auto-fix rule to have types automatically applied to your resolvers in TypeScript service files by editing your root `package.json` with: + +```diff title="package.json" + "eslintConfig": { + "extends": "@redwoodjs/eslint-config", + "root": true, + "parserOptions": { + "warnOnUnsupportedTypeScriptVersion": false + }, ++ "overrides": [ ++ { ++ "files": [ ++ "api/src/services/**/*.ts" ++ ], ++ "rules": { ++ "@redwoodjs/service-type-annotations": "error" ++ } ++ } + ] + }, +``` + :::tip Using VSCode? -As a part of type generation, the [VSCode GraphQL extension](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql) configures itself based on the merged schema Redwood generates in `.redwood/schema.graphql`. +As a part of type generation, the extension [GraphQL: Language Feature Support](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql) configures itself based on the merged schema Redwood generates in `.redwood/schema.graphql`. You can configure it further in `graphql.config.js` at the root of your project. ::: diff --git a/docs/versioned_docs/version-6.0/typescript/introduction.md b/docs/versioned_docs/version-6.x/typescript/introduction.md similarity index 100% rename from docs/versioned_docs/version-6.0/typescript/introduction.md rename to docs/versioned_docs/version-6.x/typescript/introduction.md diff --git a/docs/versioned_docs/version-6.0/typescript/strict-mode.md b/docs/versioned_docs/version-6.x/typescript/strict-mode.md similarity index 100% rename from docs/versioned_docs/version-6.0/typescript/strict-mode.md rename to docs/versioned_docs/version-6.x/typescript/strict-mode.md diff --git a/docs/versioned_docs/version-6.0/typescript/utility-types.md b/docs/versioned_docs/version-6.x/typescript/utility-types.md similarity index 100% rename from docs/versioned_docs/version-6.0/typescript/utility-types.md rename to docs/versioned_docs/version-6.x/typescript/utility-types.md diff --git a/docs/versioned_docs/version-6.0/vite-configuration.md b/docs/versioned_docs/version-6.x/vite-configuration.md similarity index 100% rename from docs/versioned_docs/version-6.0/vite-configuration.md rename to docs/versioned_docs/version-6.x/vite-configuration.md diff --git a/docs/versioned_docs/version-6.0/webhooks.md b/docs/versioned_docs/version-6.x/webhooks.md similarity index 98% rename from docs/versioned_docs/version-6.0/webhooks.md rename to docs/versioned_docs/version-6.x/webhooks.md index 706c37abb8f6..a185c7ebc4fa 100644 --- a/docs/versioned_docs/version-6.0/webhooks.md +++ b/docs/versioned_docs/version-6.x/webhooks.md @@ -214,6 +214,14 @@ This is a variation on the SHA256 HMAC verification that works with binary buffe Svix (and by extension, Clerk) gives you a secret token that it uses to create a hash signature with each payload. This hash signature is included with the headers of each request as `svix-signature`. +> Some production environments, like Vercel, might base64 encode the request body string. In that case, the body must be conditionally parsed. +> ```js +> export const handler = async (event: APIGatewayEvent) => { +> const body = event.isBase64Encoded +> ? Buffer.from(event.body, 'base64').toString('utf-8') +> : event.body +> ``` + ```tsx import type { APIGatewayEvent } from 'aws-lambda' import { diff --git a/docs/versioned_sidebars/version-6.0-sidebars.json b/docs/versioned_sidebars/version-6.x-sidebars.json similarity index 99% rename from docs/versioned_sidebars/version-6.0-sidebars.json rename to docs/versioned_sidebars/version-6.x-sidebars.json index 0c1cd6bfca01..f87cb7b22ca3 100644 --- a/docs/versioned_sidebars/version-6.0-sidebars.json +++ b/docs/versioned_sidebars/version-6.x-sidebars.json @@ -195,15 +195,18 @@ ] }, "directives", + "docker", "environment-variables", "forms", "graphql", "local-postgres-setup", "logger", + "mailer", "mocking-graphql-requests", "prerender", "project-configuration-dev-test-build", "redwoodrecord", + "realtime", "router", "schema-relations", "security", diff --git a/docs/versions.json b/docs/versions.json index 369cac7b1a7a..522a40321d91 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,5 +1,5 @@ [ - "6.0", + "6.x", "5.x", "4.x", "3.x", From e2a09ed9c25b1b56ae6550432ff05b65a1bfdcca Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 18:57:12 -0800 Subject: [PATCH 113/119] Version docs to 7.0 --- docs/versioned_docs/version-7.0/a11y.md | 170 ++ .../app-configuration-redwood-toml.md | 194 ++ .../version-7.0/assets-and-files.md | 180 ++ docs/versioned_docs/version-7.0/auth/auth0.md | 89 + docs/versioned_docs/version-7.0/auth/azure.md | 182 ++ docs/versioned_docs/version-7.0/auth/clerk.md | 123 + .../versioned_docs/version-7.0/auth/custom.md | 301 ++ .../versioned_docs/version-7.0/auth/dbauth.md | 707 +++++ .../version-7.0/auth/firebase.md | 73 + .../version-7.0/auth/netlify.md | 64 + .../version-7.0/auth/supabase.md | 334 +++ .../version-7.0/auth/supertokens.md | 119 + .../version-7.0/authentication.md | 203 ++ docs/versioned_docs/version-7.0/builds.md | 37 + docs/versioned_docs/version-7.0/cells.md | 412 +++ .../version-7.0/cli-commands.md | 2285 +++++++++++++++ .../version-7.0/connection-pooling.md | 105 + .../version-7.0/contributing-overview.md | 168 ++ .../version-7.0/contributing-walkthrough.md | 251 ++ docs/versioned_docs/version-7.0/cors.md | 263 ++ .../version-7.0/create-redwood-app.md | 103 + .../version-7.0/custom-web-index.md | 51 + .../version-7.0/data-migrations.md | 159 ++ .../version-7.0/deploy/baremetal.md | 797 ++++++ .../version-7.0/deploy/coherence.md | 40 + .../version-7.0/deploy/edgio.md | 16 + .../version-7.0/deploy/flightcontrol.md | 24 + .../version-7.0/deploy/introduction.md | 104 + .../version-7.0/deploy/netlify.md | 27 + .../version-7.0/deploy/render.md | 15 + .../version-7.0/deploy/serverless.md | 131 + .../version-7.0/deploy/vercel.md | 90 + docs/versioned_docs/version-7.0/directives.md | 698 +++++ docs/versioned_docs/version-7.0/docker.md | 680 +++++ .../version-7.0/environment-variables.md | 152 + docs/versioned_docs/version-7.0/forms.md | 548 ++++ docs/versioned_docs/version-7.0/graphql.md | 2513 +++++++++++++++++ .../version-7.0/graphql/fragments.md | 310 ++ .../graphql/mocking-graphql-requests.md | 161 ++ .../version-7.0/graphql/realtime.md | 9 + .../version-7.0/graphql/trusted-documents.md | 152 + .../version-7.0/how-to/background-worker.md | 95 + .../build-dashboards-fast-with-tremor.md | 413 +++ .../version-7.0/how-to/custom-function.md | 211 ++ .../version-7.0/how-to/dbauth-passwordless.md | 640 +++++ .../how-to/disable-api-database.md | 416 +++ .../version-7.0/how-to/file-uploads.md | 508 ++++ .../version-7.0/how-to/gotrue-auth.md | 706 +++++ .../how-to/mocking-graphql-in-storybook.md | 114 + .../version-7.0/how-to/oauth.md | 835 ++++++ .../version-7.0/how-to/pagination.md | 165 ++ .../how-to/role-based-access-control.md | 626 ++++ .../how-to/self-hosting-redwood.md | 164 ++ .../version-7.0/how-to/sending-emails.md | 389 +++ .../version-7.0/how-to/supabase-auth.md | 685 +++++ .../how-to/test-in-github-actions.md | 385 +++ .../how-to/using-a-third-party-api.md | 546 ++++ .../version-7.0/how-to/using-nvm.md | 119 + .../version-7.0/how-to/using-yarn.md | 72 + .../how-to/windows-development-setup.md | 62 + .../version-7.0/intro-to-servers.md | 474 ++++ .../version-7.0/introduction.md | 60 + .../version-7.0/local-postgres-setup.md | 166 ++ docs/versioned_docs/version-7.0/logger.md | 788 ++++++ docs/versioned_docs/version-7.0/mailer.md | 283 ++ .../version-7.0/monitoring/sentry.md | 177 ++ docs/versioned_docs/version-7.0/prerender.md | 401 +++ .../project-configuration-dev-test-build.mdx | 238 ++ .../versioned_docs/version-7.0/quick-start.md | 149 + docs/versioned_docs/version-7.0/realtime.md | 675 +++++ .../version-7.0/redwoodrecord.md | 418 +++ docs/versioned_docs/version-7.0/router.md | 870 ++++++ .../version-7.0/schema-relations.md | 240 ++ docs/versioned_docs/version-7.0/security.md | 77 + docs/versioned_docs/version-7.0/seo-head.md | 356 +++ .../version-7.0/serverless-functions.md | 895 ++++++ docs/versioned_docs/version-7.0/services.md | 1136 ++++++++ docs/versioned_docs/version-7.0/storybook.md | 85 + docs/versioned_docs/version-7.0/studio.md | 125 + docs/versioned_docs/version-7.0/testing.md | 2095 ++++++++++++++ .../version-7.0/toast-notifications.md | 133 + .../version-7.0/tutorial/afterword.md | 28 + .../tutorial/chapter0/what-is-redwood.md | 345 +++ .../tutorial/chapter1/file-structure.md | 150 + .../tutorial/chapter1/first-page.md | 165 ++ .../tutorial/chapter1/installation.md | 55 + .../version-7.0/tutorial/chapter1/layouts.md | 397 +++ .../tutorial/chapter1/prerequisites.md | 70 + .../tutorial/chapter1/second-page.md | 186 ++ .../version-7.0/tutorial/chapter2/cells.md | 672 +++++ .../tutorial/chapter2/getting-dynamic.md | 203 ++ .../tutorial/chapter2/routing-params.md | 828 ++++++ .../tutorial/chapter2/side-quest.md | 194 ++ .../version-7.0/tutorial/chapter3/forms.md | 1321 +++++++++ .../tutorial/chapter3/saving-data.md | 2047 ++++++++++++++ .../tutorial/chapter4/authentication.md | 899 ++++++ .../tutorial/chapter4/deployment.md | 190 ++ .../tutorial/chapter5/first-story.md | 247 ++ .../tutorial/chapter5/first-test.md | 500 ++++ .../tutorial/chapter5/storybook.md | 139 + .../version-7.0/tutorial/chapter5/testing.md | 56 + .../tutorial/chapter6/comment-form.md | 1715 +++++++++++ .../tutorial/chapter6/comments-schema.md | 933 ++++++ .../tutorial/chapter6/multiple-comments.md | 722 +++++ .../tutorial/chapter6/the-redwood-way.md | 316 +++ .../tutorial/chapter7/api-side-currentuser.md | 781 +++++ .../version-7.0/tutorial/chapter7/rbac.md | 1318 +++++++++ .../version-7.0/tutorial/foreword.md | 86 + .../version-7.0/tutorial/intermission.md | 63 + .../version-7.0/typescript/generated-types.md | 203 ++ .../version-7.0/typescript/introduction.md | 134 + .../version-7.0/typescript/strict-mode.md | 267 ++ .../version-7.0/typescript/utility-types.md | 286 ++ .../version-7.0/vite-configuration.md | 72 + docs/versioned_docs/version-7.0/webhooks.md | 815 ++++++ .../version-7.0-sidebars.json | 322 +++ docs/versions.json | 1 + 117 files changed, 46758 insertions(+) create mode 100644 docs/versioned_docs/version-7.0/a11y.md create mode 100644 docs/versioned_docs/version-7.0/app-configuration-redwood-toml.md create mode 100644 docs/versioned_docs/version-7.0/assets-and-files.md create mode 100644 docs/versioned_docs/version-7.0/auth/auth0.md create mode 100644 docs/versioned_docs/version-7.0/auth/azure.md create mode 100644 docs/versioned_docs/version-7.0/auth/clerk.md create mode 100644 docs/versioned_docs/version-7.0/auth/custom.md create mode 100644 docs/versioned_docs/version-7.0/auth/dbauth.md create mode 100644 docs/versioned_docs/version-7.0/auth/firebase.md create mode 100644 docs/versioned_docs/version-7.0/auth/netlify.md create mode 100644 docs/versioned_docs/version-7.0/auth/supabase.md create mode 100644 docs/versioned_docs/version-7.0/auth/supertokens.md create mode 100644 docs/versioned_docs/version-7.0/authentication.md create mode 100644 docs/versioned_docs/version-7.0/builds.md create mode 100644 docs/versioned_docs/version-7.0/cells.md create mode 100644 docs/versioned_docs/version-7.0/cli-commands.md create mode 100644 docs/versioned_docs/version-7.0/connection-pooling.md create mode 100644 docs/versioned_docs/version-7.0/contributing-overview.md create mode 100644 docs/versioned_docs/version-7.0/contributing-walkthrough.md create mode 100644 docs/versioned_docs/version-7.0/cors.md create mode 100644 docs/versioned_docs/version-7.0/create-redwood-app.md create mode 100644 docs/versioned_docs/version-7.0/custom-web-index.md create mode 100644 docs/versioned_docs/version-7.0/data-migrations.md create mode 100644 docs/versioned_docs/version-7.0/deploy/baremetal.md create mode 100644 docs/versioned_docs/version-7.0/deploy/coherence.md create mode 100644 docs/versioned_docs/version-7.0/deploy/edgio.md create mode 100644 docs/versioned_docs/version-7.0/deploy/flightcontrol.md create mode 100644 docs/versioned_docs/version-7.0/deploy/introduction.md create mode 100644 docs/versioned_docs/version-7.0/deploy/netlify.md create mode 100644 docs/versioned_docs/version-7.0/deploy/render.md create mode 100644 docs/versioned_docs/version-7.0/deploy/serverless.md create mode 100644 docs/versioned_docs/version-7.0/deploy/vercel.md create mode 100644 docs/versioned_docs/version-7.0/directives.md create mode 100644 docs/versioned_docs/version-7.0/docker.md create mode 100644 docs/versioned_docs/version-7.0/environment-variables.md create mode 100644 docs/versioned_docs/version-7.0/forms.md create mode 100644 docs/versioned_docs/version-7.0/graphql.md create mode 100644 docs/versioned_docs/version-7.0/graphql/fragments.md create mode 100644 docs/versioned_docs/version-7.0/graphql/mocking-graphql-requests.md create mode 100644 docs/versioned_docs/version-7.0/graphql/realtime.md create mode 100644 docs/versioned_docs/version-7.0/graphql/trusted-documents.md create mode 100644 docs/versioned_docs/version-7.0/how-to/background-worker.md create mode 100644 docs/versioned_docs/version-7.0/how-to/build-dashboards-fast-with-tremor.md create mode 100644 docs/versioned_docs/version-7.0/how-to/custom-function.md create mode 100644 docs/versioned_docs/version-7.0/how-to/dbauth-passwordless.md create mode 100644 docs/versioned_docs/version-7.0/how-to/disable-api-database.md create mode 100644 docs/versioned_docs/version-7.0/how-to/file-uploads.md create mode 100644 docs/versioned_docs/version-7.0/how-to/gotrue-auth.md create mode 100644 docs/versioned_docs/version-7.0/how-to/mocking-graphql-in-storybook.md create mode 100644 docs/versioned_docs/version-7.0/how-to/oauth.md create mode 100644 docs/versioned_docs/version-7.0/how-to/pagination.md create mode 100644 docs/versioned_docs/version-7.0/how-to/role-based-access-control.md create mode 100644 docs/versioned_docs/version-7.0/how-to/self-hosting-redwood.md create mode 100644 docs/versioned_docs/version-7.0/how-to/sending-emails.md create mode 100644 docs/versioned_docs/version-7.0/how-to/supabase-auth.md create mode 100644 docs/versioned_docs/version-7.0/how-to/test-in-github-actions.md create mode 100644 docs/versioned_docs/version-7.0/how-to/using-a-third-party-api.md create mode 100644 docs/versioned_docs/version-7.0/how-to/using-nvm.md create mode 100644 docs/versioned_docs/version-7.0/how-to/using-yarn.md create mode 100644 docs/versioned_docs/version-7.0/how-to/windows-development-setup.md create mode 100644 docs/versioned_docs/version-7.0/intro-to-servers.md create mode 100644 docs/versioned_docs/version-7.0/introduction.md create mode 100644 docs/versioned_docs/version-7.0/local-postgres-setup.md create mode 100644 docs/versioned_docs/version-7.0/logger.md create mode 100644 docs/versioned_docs/version-7.0/mailer.md create mode 100644 docs/versioned_docs/version-7.0/monitoring/sentry.md create mode 100644 docs/versioned_docs/version-7.0/prerender.md create mode 100644 docs/versioned_docs/version-7.0/project-configuration-dev-test-build.mdx create mode 100644 docs/versioned_docs/version-7.0/quick-start.md create mode 100644 docs/versioned_docs/version-7.0/realtime.md create mode 100644 docs/versioned_docs/version-7.0/redwoodrecord.md create mode 100644 docs/versioned_docs/version-7.0/router.md create mode 100644 docs/versioned_docs/version-7.0/schema-relations.md create mode 100644 docs/versioned_docs/version-7.0/security.md create mode 100644 docs/versioned_docs/version-7.0/seo-head.md create mode 100644 docs/versioned_docs/version-7.0/serverless-functions.md create mode 100644 docs/versioned_docs/version-7.0/services.md create mode 100644 docs/versioned_docs/version-7.0/storybook.md create mode 100644 docs/versioned_docs/version-7.0/studio.md create mode 100644 docs/versioned_docs/version-7.0/testing.md create mode 100644 docs/versioned_docs/version-7.0/toast-notifications.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/afterword.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter0/what-is-redwood.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter1/file-structure.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter1/first-page.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter1/installation.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter1/layouts.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter1/prerequisites.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter1/second-page.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter2/cells.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter2/getting-dynamic.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter2/routing-params.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter2/side-quest.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter3/forms.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter3/saving-data.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter4/authentication.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter4/deployment.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter5/first-story.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter5/first-test.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter5/storybook.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter5/testing.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter6/comment-form.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter6/comments-schema.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter6/multiple-comments.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter6/the-redwood-way.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter7/api-side-currentuser.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/chapter7/rbac.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/foreword.md create mode 100644 docs/versioned_docs/version-7.0/tutorial/intermission.md create mode 100644 docs/versioned_docs/version-7.0/typescript/generated-types.md create mode 100644 docs/versioned_docs/version-7.0/typescript/introduction.md create mode 100644 docs/versioned_docs/version-7.0/typescript/strict-mode.md create mode 100644 docs/versioned_docs/version-7.0/typescript/utility-types.md create mode 100644 docs/versioned_docs/version-7.0/vite-configuration.md create mode 100644 docs/versioned_docs/version-7.0/webhooks.md create mode 100644 docs/versioned_sidebars/version-7.0-sidebars.json diff --git a/docs/versioned_docs/version-7.0/a11y.md b/docs/versioned_docs/version-7.0/a11y.md new file mode 100644 index 000000000000..7cc09b9b0df3 --- /dev/null +++ b/docs/versioned_docs/version-7.0/a11y.md @@ -0,0 +1,170 @@ +--- +slug: accessibility +description: Accessibility is a core feature that's built-in +--- + +# Accessibility (aka a11y) + +We built Redwood to make building websites more accessible (we write all the config so you don't have to), but Redwood's also built to help you make more accessible websites. +Accessibility shouldn't be a nice-to-have. +It should be a given from the start. +A core feature that's built-in and well-supported. + +There's a lot of great tooling out there that'll not only help you build accessible websites, but also help you learn exactly what that means. + +> **Does tooling obviate the need for manual testing?** +> +> No—even with all the tooling in the world, manual testing is still important, especially for accessibility. +> But just because tooling doesn't catch everything doesn't mean it's not valuable. +> It'd be much harder to learn what to look for without it. + +## Accessible Routing + +For single-page applications (SPAs), accessibility starts with the router. +Without a full-page refresh, you just can't be sure that things like announcements and focus are being taken care of the way they're supposed to be. +Here's a great example of [how disorienting SPAs can be to screen-reader users](https://www.youtube.com/watch?v=NKTdNv8JpuM). +On navigation, nothing's announced. +The lack of an announcement isn't just buggy behavior—it's broken. + +Normally, the onus would be on you as a developer to announce to screen-reader users that they've navigated somewhere new. +That's a lot to ask—and hard to get right—especially when you're just trying to build your app. + +Luckily, if you're writing thoughtful content and marking it up semantically, there's nothing you have to do! +The router automatically announces pages on navigation, and looks for announcements in this order: + +1. The `RouteAnnouncement` component +2. The page's `<h1>` +3. `document.title` +4. `location.pathname` + +The reason for this order is that announcements should be as specific as possible. +more specific usually means more descriptive, and more descriptive usually means that users can not only orient themselves and navigate through the content, but also find it again. + +> If you're not sure if your content is descriptive enough, see the [W3 guidelines](https://www.w3.org/WAI/WCAG21/Techniques/general/G88.html). + +Even though Redwood looks for a `RouteAnnouncement` component first, you don't have to have one on every page—it's more than ok for the `<h1>` to be what's announced. +`RouteAnnouncement` is there for when the situation calls for a custom announcement. + +### `RouteAnnouncement` + +The way `RouteAnnouncement` works is simple: its children will be announced. +Note that this can be something on the page or can be something that's visually hidden using the `visuallyHidden` prop: + +```jsx title="web/src/pages/HomePage/HomePage.js" +import { RouteAnnouncement } from '@redwoodjs/router' + +const HomePage = () => { + return ( + // This will still be visible + <RouteAnnouncement> + <h1>Welcome to my site!</h1> + </RouteAnnouncement> + ) +} + +export default HomePage +``` + +```jsx title="web/src/pages/AboutPage/AboutPage.js" +import { RouteAnnouncement } from '@redwoodjs/router' + +const AboutPage = () => { + return ( + <h1>Welcome to my site!</h1> + // This won't be visible + // highlight-start + <RouteAnnouncement visuallyHidden> + All about me + </RouteAnnouncement> + // highlight-end + ) +} + +export default AboutPage +``` + +`visuallyHidden` shouldn't be the first thing you reach for—it's good to maintain parity between your site's visual and audible experiences. +But it's there if you need it. + +## Focus + +On page change, Redwood Router resets focus to the top of the DOM so that users can navigate through the new page. +While this is the expected behavior (and the behavior you usually want), for some pages—especially those with a lot of navigation—it can be cumbersome for users to have tab through navigation before getting to the main point. +(And that goes for every page change!) + +Right now, there's two ways to alleviate this: with skip links or the `RouteFocus` component. + +### Skip Links + +Since the main content isn't usually the first thing on the page, it's a best practice to provide a shortcut for keyboard and screen-reader users to skip to it. +Skip links do just that, and if you generate a layout using the `--skipLink` option, you'll get one with a skip link: + +``` +yarn rw g layout main --skipLink +``` + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +import { SkipNavLink, SkipNavContent } from '@redwoodjs/router' +import '@redwoodjs/router/skip-nav.css' + +const MainLayout = ({ children }) => { + return ( + <> + <SkipNavLink /> + <nav></nav> + <SkipNavContent /> + <main>{children}</main> + </> + ) +} + +export default MainLayout +``` + +`SkipNavLink` renders a link that remains hidden till focused and `SkipNavContent` renders a div as the target for the link. +The code for these components comes from Reach UI. For more details, see [Reach UI's docs](https://reach.tech/skip-nav/#reach-skip-nav). + +One thing you'll probably want to do is change the URL the skip link sends the user to when activated. +You can do that by changing the `contentId` and `id` props of `SkipNavLink` and `SkipNavContent` respectively: + +```jsx +<SkipNavLink contentId="main-content" /> +{/* ... */} +<SkipNavContent id="main-content" /> +``` + +If you'd prefer to implement your own skip link, [Ben Myers' blog](https://benmyers.dev/blog/skip-links/) is a great resource, and a great place to read about accessibility in general. + +### `RouteFocus` + +Sometimes you don't want to just skip the nav, but send a user somewhere. +In this situation, you of course have the foresight that that place is where the user wants to be. +So please use this at your discretion—sending a user to an unexpected location can be worse than sending them back the top. + +Having said that, if you know that on a particular page change a user's focus is better off being directed to a particular element, the `RouteFocus` component is what you want: + +```jsx title="web/src/pages/ContactPage/ContactPage.js" +// highlight-next-line +import { RouteFocus } from '@redwoodjs/router' + +const ContactPage = () => ( + <nav> + {/* Way too much nav... */} + </nav> + + // The contact form the user actually wants to interact with + // highlight-start + <RouteFocus> + <TextField name="name" /> + </RouteFocus> + // highlight-end +) + +export default ContactPage +``` + +`RouteFocus` tells the router to send focus to it's child on page change. In the example above, when the user navigates to the contact page, the name text field on the form is focused—the first field of the form they're here to fill out. + +<div class="video-container"> + <iframe src="https://www.youtube.com/embed/T1zs77LU68w?t=3240" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; modestbranding; showinfo=0; fullscreen"></iframe> +</div> diff --git a/docs/versioned_docs/version-7.0/app-configuration-redwood-toml.md b/docs/versioned_docs/version-7.0/app-configuration-redwood-toml.md new file mode 100644 index 000000000000..4439e88ea3db --- /dev/null +++ b/docs/versioned_docs/version-7.0/app-configuration-redwood-toml.md @@ -0,0 +1,194 @@ +--- +title: App Configuration +description: Configure your app with redwood.toml +--- + +# App Configuration: redwood.toml + +One of the premier places you can configure your Redwood app is `redwood.toml`. By default, `redwood.toml` lists the following configuration options: + +```toml title="redwood.toml" +[web] + title = "Redwood App" + port = 8910 + apiUrl = "/.redwood/functions" + includeEnvironmentVariables = [] +[api] + port = 8911 +[browser] + open = true +[notifications] + versionUpdates = ["latest"] +``` + +These are listed by default because they're the ones that you're most likely to configure, but there are plenty more available. + +You can think of `redwood.toml` as a frontend for configuring Redwood's build tools. +For certain options, instead of having to configure build tools directly, there's quick access via `redwood.toml`. + +## [web] + +| Key | Description | Default | +| :---------------------------- | :--------------------------------------------------------- | :---------------------- | +| `title` | Title of your Redwood app | `'Redwood App'` | +| `port` | Port for the web server to listen at | `8910` | +| `apiUrl` | URL to your api server. This can be a relative URL in which case it acts like a proxy, or a fully-qualified URL | `'/.redwood/functions'` | +| `includeEnvironmentVariables` | Environment variables made available to the web side during dev and build | `[]` | +| `host` | Hostname for the web server to listen at | Defaults to `'0.0.0.0'` in production and `'::'` in development | +| `apiGraphQLUrl` | URL to your GraphQL function | `'${apiUrl}/graphql'` | +| `apiDbAuthUrl` | URL to your dbAuth function | `'${apiUrl}/auth'` | +| `sourceMap` | Enable source maps for production builds | `false` | +| `a11y` | Enable storybook `addon-a11y` and `eslint-plugin-jsx-a11y` | `true` | + +### Customizing the GraphQL Endpoint + +By default, Redwood derives the GraphQL endpoint from `apiUrl` such that it's `${apiUrl}/graphql`, (with the default `apiUrl`, `./redwood/functions/graphql`). +But sometimes you want to host your api side somewhere else. +There's two ways you can do this: + +1. Change `apiUrl`: + +```toml title="redwood.toml" +[web] + apiUrl = "https://api.coolredwoodapp.com" +``` + +Now the GraphQL endpoint is at `https://api.coolredwoodapp.com/graphql`. + +2. Change `apiGraphQLUrl`: + +```diff title="redwood.toml" + [web] + apiUrl = "/.redwood/functions" ++ apiGraphQLUrl = "https://api.coolredwoodapp.com/graphql" +``` + +### Customizing the dbAuth Endpoint + +Similarly, if you're using dbAuth, you may decide to host it somewhere else. +To do this without affecting your other endpoints, you can add `apiDbAuthUrl` to your `redwood.toml`: + +```diff title="redwood.toml" + [web] + apiUrl = "/.redwood/functions" ++ apiDbAuthUrl = "https://api.coolredwoodapp.com/auth" +``` + +:::tip + +If you host your web and api sides at different domains and don't use a proxy, make sure you have [CORS](./cors.md) configured. +Otherwise browser security features may block client requests. + +::: + +### includeEnvironmentVariables + +`includeEnvironmentVariables` is the set of environment variables that should be available to your web side during dev and build. +Use it to include env vars like public keys for third-party services you've defined in your `.env` file: + +```toml title="redwood.toml" +[web] + includeEnvironmentVariables = ["PUBLIC_KEY"] +``` + +```text title=".env" +PUBLIC_KEY=... +``` + +Instead of including them in `includeEnvironmentVariables`, you can also prefix them with `REDWOOD_ENV_` (see [Environment Variables](environment-variables.md#web)). + +:::caution `includeEnvironmentVariables` isn't for secrets + +Don't make secrets available to your web side. Everything in `includeEnvironmentVariables` is included in the bundle. + +::: + +## [api] + +| Key | Description | Default | +| :------------- | :---------------------------------- | :------------------------- | +| `port` | Port for the api server to listen at | `8911` | +| `host` | Hostname for the api server to listen at | Defaults to `'0.0.0.0'` in production and `'::'` in development | +| `debugPort` | Port for the debugger to listen at | `18911` | +| `serverConfig` | [Deprecated; use the [server file](./docker.md#using-the-server-file) instead] Path to the `server.config.js` file | `'./api/server.config.js'` | + +## [browser] + +```toml title="redwood.toml" +[browser] + open = true +``` + +Setting `open` to `true` opens your browser to `http://${web.host}:${web.port}` (by default, `http://localhost:8910`) after the dev server starts. +If you want your browser to stop opening when you run `yarn rw dev`, set this to `false`. +(Or just remove it entirely.) + +There's actually a lot more you can do here. For more, see Vite's docs on [`preview.open`](https://vitejs.dev/config/preview-options.html#preview-open). + +## [generate] + +```toml title="redwood.toml" +[generate] + tests = true + stories = true +``` + +Many of Redwood's generators create Jest tests or Storybook stories. +Understandably, this can be lot of files, and sometimes you don't want all of them, either because you don't plan on using Jest or Storybook, or are just getting started and don't want the overhead. +These options allows you to disable the generation of test and story files. + +## [cli] + +```toml title="redwood.toml" +[notifications] + versionUpdates = ["latest"] +``` + +There are new versions of the framework all the time—a major every couple months, a minor every week or two, and patches when appropriate. +And if you're on an experimental release line, like canary, there's new versions every day, multiple times. + +If you'd like to get notified (at most, once a day) when there's a new version, set `versionUpdates` to include the version tags you're interested in. + +## Using Environment Variables in `redwood.toml` + +You may find yourself wanting to change keys in `redwood.toml` based on the environment you're deploying to. +For example, you may want to point to a different `apiUrl` in your staging environment. + +You can do so with environment variables. +Let's look at an example: + +```toml title="redwood.toml" +[web] + // highlight-start + title = "App running on ${APP_TITLE}" + port = "${PORT:8910}" + apiUrl = "${API_URL:/.redwood/functions}" + // highlight-end + includeEnvironmentVariables = [] +``` + +This `${<envVar>:[fallback]}` syntax does the following: + +- sets `title` by interpolating the env var `APP_TITLE` +- sets `port` to the env var `PORT`, falling back to `8910` +- sets `apiUrl` to the env var `API_URL`, falling back to `/.redwood/functions` (the default) + +That's pretty much all there is to it. +Just remember two things: + +1. fallback is always a string +2. these values are interpolated at build time + +## Running in a Container or VM + +To run a Redwood app in a container or VM, you'll want to set both the web and api's `host` to `0.0.0.0` to allow network connections to and from the host: + +```toml title="redwood.toml" +[web] + host = '0.0.0.0' +[api] + host = '0.0.0.0' +``` + +You can also configure these values via `REDWOOD_WEB_HOST` and `REDWOOD_API_HOST`. +And if you set `NODE_ENV` to production, these will be the defaults anyway. diff --git a/docs/versioned_docs/version-7.0/assets-and-files.md b/docs/versioned_docs/version-7.0/assets-and-files.md new file mode 100644 index 000000000000..785f92861ef5 --- /dev/null +++ b/docs/versioned_docs/version-7.0/assets-and-files.md @@ -0,0 +1,180 @@ +--- +description: How to include assets—like images—in your app +--- + +# Assets and Files + +There are two ways to add an asset to your Redwood app: + +1. co-locate it with the component using it and import it into the component as if it were code +2. add it to the `web/public` directory and reference it relative to your site's root + +Where possible, prefer the first strategy. + +It lets Vite include the asset in the bundle when the file is small enough. + +### Co-locating and Importing Assets + +Let's say you want to show your app's logo in your `Header` component. +First, add your logo to the `Header` component's directory: + +```text +web/src/components/Header/ +// highlight-next-line +├── logo.png +├── Header.js +├── Header.stories.js +└── Header.test.js +``` + +Then, in the `Header` component, import your logo as if it were code: + +```jsx title="web/src/components/Header/Header.js" +// highlight-next-line +import logo from './logo.png' + +const Header = () => { + return ( + <header> + {/* ... */} + // highlight-next-line + <img src={logo} alt="Logo" /> + </header> + ) +} + +export default Header +``` + +If you're curious how this works, see the Vite docs on [static asset handling](https://vitejs.dev/guide/assets.html). + +## Adding to the `web/public` Directory + +You can also add assets to the `web/public` directory, effectively adding static files to your app. +During dev and build, Redwood copies `web/public`'s contents into `web/dist`. + +> Changes to `web/public` don't hot-reload. + +Again, because assets in this directory don't go through Vite, **use this strategy sparingly**, and mainly for assets like favicons, manifests, `robots.txt`, libraries incompatible with Vite, etc. + +### Example: Adding Your Logo and Favicon to `web/public` + +Let's say that you've added your logo and favicon to `web/public`: + +``` +web/public/ +├── img/ +│ └── logo.png +└── favicon.png +``` + +When you run `yarn rw dev` and `yarn rw build`, Redwood copies +`web/public/img/logo.png` to `web/dist/img/logo.png` and `web/public/favicon.png` to `web/dist/favicon.png`: + +```text +web/dist/ +├── static/ +│ ├── js/ +│ └── css/ +// highlight-start +├── img/ +│ └── logo.png +└── favicon.png +// highlight-end +``` + +You can reference these files in your code without any special handling: + +```jsx title="web/src/components/Header/Header.js" +import { Head } from '@redwoodjs/web' + +const Header = () => { + return ( + <> + <Head> + // highlight-next-line + <link rel="icon" type="image/png" href="favicon.png" /> + </Head> + // highlight-next-line + <img src="img/logo.png" alt="Logo" /> + </> + ) +} + +export default Header +``` + +## Styling SVGs: The special type of image + +By default you can import and use SVG images like any other image asset. + +```jsx title="web/src/components/Example.jsx" +// highlight-next-line +import svgIconSrc from '../mySvg.svg' + +const Example = () => { + return ( + <> + // highlight-next-line + <img src={svgIconSrc} alt="Logo" /> + </> + ) +} + +export default Example +``` + +Sometimes however, you might want more control over styling your SVGs - maybe you want to modify the `stroke-width` or `fill` color. + +The easiest way to achieve this, is to make your SVGs a React component. Open up your SVG file, and drop in its contents into a component – for example: + +```tsx title="web/src/components/icons/CarIcon.tsx" +import type { SVGProps } from "react" + +export const CarIcon = (props: SVGProps) => { + return ( + // 👇 content of your SVG file + <svg + // highlight-next-line + className="fill-blue-500" // 👈 you can use classes, like with tailwind + // highlight-next-line + stroke={props.strokeColor} // or adjust properties directly + // ... +``` + +If you needed to convert a whole library of SVGs into stylable (or animatable!) components, one easy way would be to use the [SVGR cli](https://react-svgr.com/docs/cli/) + + +## Custom fonts +There are many different ways to peel this potato – it's all a search away – but if you're using the CSS `@font-face` rule, we have a quick tip for you: + +1. Place your fonts in the public folder, so it gets carried across +2. In your CSS, use absolute paths - the public folder being your root - to point to the font file (same as the [Vite docs](https://vitejs.dev/guide/assets.html#the-public-directory)), for example: + +```shell +web/ +├── src + ├── App.tsx + ├── entry.client.tsx + ├── index.css + ├── ... +├── public +│ ├── favicon.png +│ ├── fonts +// highlight-next-line +│ │ └── RedwoodNeue.woff2 +``` + +```css +/* in e.g. index.css */ +@font-face { + font-family: 'Redwood Neue'; + /* 👇 it's a relative path */ + // highlight-next-line + src: url('/fonts/RedwoodNeue.woff2') + format('woff2'); + font-weight: 300; + font-style: italic; + ascent-override: 97%; +} +``` diff --git a/docs/versioned_docs/version-7.0/auth/auth0.md b/docs/versioned_docs/version-7.0/auth/auth0.md new file mode 100644 index 000000000000..a028f9418152 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/auth0.md @@ -0,0 +1,89 @@ +--- +sidebar_label: Auth0 +--- + +# Auth0 Authentication + +To get started, run the setup command: + +```bash +yarn rw setup auth auth0 +``` + +This installs all the packages, writes all the files, and makes all the code modifications you need. +For a detailed explanation of all the api- and web-side changes that aren't exclusive to Auth0, see the top-level [Authentication](../authentication.md) doc. +For now, let's focus on Auth0's side of things. + +If you don't have an Auth0 account yet, now's the time to make one: navigate to https://auth0.com and sign up, then create an application. +When it asks you to choose an application type, choose SPA (single-page application). +Don't bother with the the quick start—just click the "Settings" tab. +We'll get some of our application's API keys here. + +You should see two of the four API keys we need right away: "Domain" and "Client ID". +Copy those over to your project's `.env` file as `AUTH0_DOMAIN` and `AUTH0_CLIENT_ID` respectively. + +There's one more on this page; scroll down to "Application URIs" and look for "Allowed Callback URLs". +With Auth0, when you log in or sign up, it'll redirect you to Auth0's hosted log-in or sign-up page, then back to your Redwood app. +But where in your Redwood app exactly? +Auth0 needs to know, and this setting tells it. + +We'll keep things simple for now and make it "http://localhost:8910", but feel free to configure it as you wish. +Paste "http://localhost:8910" in the text areas below "Allowed Callback URLs", "Allowed Logout URLs" and "Allowed Web Origins" then click "Save Changes" at the bottom of the page. +Copy this one over to your project's `.env` file too, as `AUTH0_REDIRECT_URI`. + +Ok, just one more to go: under "Applications" in the nav on the left, click "APIs". +There should be one there already. +We don't need to click into it; next to it's name ("Auth0 Management API" maybe) Auth0 thoughtfully shows what we need, the "API Audience". +Copy it into your project's `.env` file as `AUTH0_AUDIENCE`. +All together now: + +```bash title=".env" +AUTH0_DOMAIN="..." +AUTH0_CLIENT_ID="..." +AUTH0_REDIRECT_URI="http://localhost:8910" +AUTH0_AUDIENCE="..." +``` + +Lastly, include all these env vars in the list of env vars that should be available to the web side in `redwood.toml`: + +```toml title="redwood.toml" +[web] + # ... + includeEnvironmentVariables = [ + "AUTH0_DOMAIN", + "AUTH0_CLIENT_ID", + "AUTH0_REDIRECT_URI", + "AUTH0_AUDIENCE", + ] +``` + +That should be enough; now, things should just work. +Let's make sure: if this is a brand new project, generate a home page. +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +``` +yarn rw g page home / +``` + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={signUp}>sign up</button> + </> + ) +} +``` + +Clicking sign up should redirect you to Auth0: + +<img width="1522" alt="image" src="https://user-images.githubusercontent.com/32992335/209001246-244db949-31f8-42ff-804e-18f3e423ce89.png" /> + +After you sign up, you should be redirected back to your Redwood app, and you should see `{"isAuthenticated":true}` on the page. diff --git a/docs/versioned_docs/version-7.0/auth/azure.md b/docs/versioned_docs/version-7.0/auth/azure.md new file mode 100644 index 000000000000..ce872f914f25 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/azure.md @@ -0,0 +1,182 @@ +--- +sidebar_label: Azure +--- + +# Azure Active Directory Authentication + +To get started, run the setup command: + +```bash +yarn rw setup auth azure-active-directory +``` + +This installs all the packages, writes all the files, and makes all the code +modifications you need. For a detailed explanation of all the api- and web-side +changes that aren't exclusive to Azure, see the top-level +[Authentication](../authentication.md) doc. For now, let's focus on Azure's +side of things. + +Follow the steps in [Single-page application: App registration](https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-app-registration). +After registering your app, you'll be redirected to its "Overview" section. +We're interested in two credentials here, "Application (client) ID" and "Directory (tenant) ID". +Go ahead and copy "Application (client) ID" to your `.env` file as `AZURE_ACTIVE_DIRECTORY_CLIENT_ID`. +But "Directory (tenant) ID" needs a bit more explanation. + +Azure has an option called "Authority". It's a URL that specifies a directory that MSAL (Microsoft Authentication Library) can request tokens from. +You can read more about it [here](https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-client-application-configuration#authority), +but to cut to the chase, you probably want `https://login.microsoftonline.com/${tenantId}` as your Authority, where `tenantId` is "Directory (tenant) ID". + +After substituting your app's "Directory (tenant) ID" in the URL, add it to your `.env` file as `AZURE_ACTIVE_DIRECTORY_AUTHORITY`. +All together now: + +```bash title=".env" +AZURE_ACTIVE_DIRECTORY_CLIENT_ID="..." +# Where `tenantId` is your app's "Directory (tenant) ID" +AZURE_ACTIVE_DIRECTORY_AUTHORITY="https://login.microsoftonline.com/${tenantId}" +``` + +Ok, back to [Single-page application: App registration](https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-app-registration). +At the end, it says... + +> Next, configure the app registration with a Redirect URI to specify where the Microsoft identity platform should redirect the client along with any security tokens. +> Use the steps appropriate for the version of MSAL.js you're using in your application: +> +> - MSAL.js 2.0 with auth code flow (recommended) +> - MSAL.js 1.0 with implicit flow + +Redwood uses [MSAL.js 2.0 with auth code flow](https://learn.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-app-registration#redirect-uri-msaljs-20-with-auth-code-flow), so follow the steps there next. +When it asks you for a Redirect URI, enter `http://localhost:8910` and `http://localhost:8910/login`, and copy these into your `.env` file as `AZURE_ACTIVE_DIRECTORY_REDIRECT_URI` and `AZURE_ACTIVE_DIRECTORY_LOGOUT_REDIRECT_URI`: + +:::tip Can't add multiple URI's? + +Configure one, then you'll be able to configure another. + +::: + +```bash title=".env" +AZURE_ACTIVE_DIRECTORY_CLIENT_ID="..." +# Where `tenantId` is your app's "Directory (tenant) ID" +AZURE_ACTIVE_DIRECTORY_AUTHORITY="https://login.microsoftonline.com/${tenantId}" +AZURE_ACTIVE_DIRECTORY_REDIRECT_URI="http://localhost:8910" +AZURE_ACTIVE_DIRECTORY_LOGOUT_REDIRECT_URI="http://localhost:8910/login" +``` + +That's it for .env vars. Don't forget to include them in the `includeEnvironmentVariables` array in `redwood.toml`: + +```toml title="redwood.toml" +[web] + # ... + includeEnvironmentVariables = [ + "AZURE_ACTIVE_DIRECTORY_CLIENT_ID", + "AZURE_ACTIVE_DIRECTORY_AUTHORITY", + "AZURE_ACTIVE_DIRECTORY_REDIRECT_URI", + "AZURE_ACTIVE_DIRECTORY_LOGOUT_REDIRECT_URI", + ] +``` + +Now let's make sure everything works: if this is a brand new project, generate +a home page. There we'll try to sign up by destructuring `signUp` from the +`useAuth` hook (import that from `'src/auth'`). We'll also destructure and +display `isAuthenticated` to see if it worked: + +``` +yarn rw g page home / +``` + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={signUp}> + Sign Up + </button> + </> + ) +} +``` + +## Roles + +To add roles exposed via the `roles` claim, follow [Add app roles to your application and receive them in the token](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps). + +## `logIn` Options + +`options` in `logIn(options?)` is of type [RedirectRequest](https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_browser.html#redirectrequest) and is a good place to pass in optional [scopes](https://docs.microsoft.com/en-us/graph/permissions-reference#user-permissions) to be authorized. +By default, MSAL sets `scopes` to [/.default](https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#the-default-scope) which is built in for every application that refers to the static list of permissions configured on the application registration. Furthermore, MSAL will add `openid` and `profile` to all requests. In the example below we explicit include `User.Read.All` in the login scope. + +```jsx +await logIn({ + scopes: ['User.Read.All'], // becomes ['openid', 'profile', 'User.Read.All'] +}) +``` + +See [loginRedirect](https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_browser.publicclientapplication.html#loginredirect), [PublicClientApplication](https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_browser.publicclientapplication.html) class and [Scopes Behavior](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-core/docs/scopes.md#scopes-behavior) for more documentation. + +## `getToken` Options + +`options` in `getToken(options?)` is of type [RedirectRequest](https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_browser.html#redirectrequest). +By default, `getToken` will be called with scope `['openid', 'profile']`. +Since Azure Active Directory applies [incremental consent](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md#dynamic-scopes-and-incremental-consent), we can extend the permissions from the login example by including another scope, for example `Mail.Read`: + +```js +await getToken({ + scopes: ['Mail.Read'], // becomes ['openid', 'profile', 'User.Read.All', 'Mail.Read'] +}) +``` + +See [acquireTokenSilent](https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_browser.publicclientapplication.html#acquiretokensilent), [Resources and Scopes](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md#resources-and-scopes) or [full class documentation](https://pub.dev/documentation/msal_js/latest/msal_js/PublicClientApplication-class.html#constructors) for more. + +## Azure Active Directory B2C-specific configuration + +You can design your own auth flow with Azure Active Directory B2C using [hosted user flows](https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-sign-up-and-sign-in-policy?pivots=b2c-user-flow). +Using it requires two extra settings. + +#### Update the .env file: + +```bash title=".env" +AZURE_ACTIVE_DIRECTORY_AUTHORITY=https://{your-microsoft-tenant-name}.b2clogin.com/{{your-microsoft-tenant-name}}.onmicrosoft.com/{{your-microsoft-user-flow-id}} +AZURE_ACTIVE_DIRECTORY_JWT_ISSUER=https://{{your-microsoft-tenant-name}}.b2clogin.com/{{your-microsoft-tenant-id}}/v2.0/ +AZURE_ACTIVE_DIRECTORY_KNOWN_AUTHORITY=https://{{your-microsoft-tenant-name}}.b2clogin.com +``` + +Here's an example: + +```bash title=".env.example" +AZURE_ACTIVE_DIRECTORY_AUTHORITY=https://rwauthtestb2c.b2clogin.com/rwauthtestb2c.onmicrosoft.com/B2C_1_signupsignin1 +AZURE_ACTIVE_DIRECTORY_JWT_ISSUER=https://rwauthtestb2c.b2clogin.com/775527ef-8a37-4307-8b3d-cc311f58d922/v2.0/ +AZURE_ACTIVE_DIRECTORY_KNOWN_AUTHORITY=https://rwauthtestb2c.b2clogin.com +``` + +And don't forget to add `AZURE_ACTIVE_DIRECTORY_KNOWN_AUTHORITY` to the `includeEnvironmentVariables` array in `redwood.toml`. +(`AZURE_ACTIVE_DIRECTORY_JWT_ISSUER` is only used on the API side. But more importantly, it's sensitive—do *not* include it in the web side.) + +#### Update `activeDirectoryClient` instance + +This lets the MSAL web-side client know about our new B2C authority: + +```jsx title="web/src/auth.{js,ts}" +const azureActiveDirectoryClient = new PublicClientApplication({ + auth: { + clientId: process.env.AZURE_ACTIVE_DIRECTORY_CLIENT_ID, + authority: process.env.AZURE_ACTIVE_DIRECTORY_AUTHORITY, + redirectUri: process.env.AZURE_ACTIVE_DIRECTORY_REDIRECT_URI, + postLogoutRedirectUri: + process.env.AZURE_ACTIVE_DIRECTORY_LOGOUT_REDIRECT_URI, + // highlight-next-line + knownAuthorities: [process.env.AZURE_ACTIVE_DIRECTORY_KNOWN_AUTHORITY] + }, +}) +``` + +Now you can call the `logIn` and `logOut` functions from `useAuth()`, and everything should just work. + +Here's a few more links to relevant documentation for reference: +- [Overview of tokens in Azure Active Directory B2C](https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview) +- [Working with MSAL.js and Azure AD B2C](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/working-with-b2c.md) diff --git a/docs/versioned_docs/version-7.0/auth/clerk.md b/docs/versioned_docs/version-7.0/auth/clerk.md new file mode 100644 index 000000000000..06266d0b4774 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/clerk.md @@ -0,0 +1,123 @@ +--- +sidebar_label: Clerk +--- + +# Clerk Authentication + +:::warning Did you set up Clerk a while ago? + +If you set up Clerk a while ago, you may be using a deprecated `authDecoder` that's subject to rate limiting. +This decoder will be removed in the next major. +There's a new decoder you can use right now! +See the [migration guide](https://github.com/redwoodjs/redwood/releases/tag/v5.3.2) for how to upgrade. + +::: + + +To get started, run the setup command: + +```text +yarn rw setup auth clerk +``` + +This installs all the packages, writes all the files, and makes all the code modifications you need. +For a detailed explanation of all the api- and web-side changes that aren't exclusive to Clerk, see the top-level [Authentication](../authentication.md) doc. +But for now, let's focus on Clerk's side of things. + +If you don't have a Clerk account yet, now's the time to make one: navigate to https://clerk.dev, sign up, and create an application. +The defaults are good enough to get us going, but feel free to configure things as you wish. +We'll get the application's API keys from its dashboard next. + +:::note we'll only focus on the development instance + +By default, Clerk applications have two instances, "Development" and "Production". +We'll only focus on the "Development" instance here, which is used for local development. +When you're ready to deploy, switch the instance the dashboard is displaying by clicking "Development" in the header at the top. +How you get your API keys to production depends on your deploy provider. + +::: + +After you create the application, you should be redirected to its dashboard where you should see the RedwoodJS logo. +Click on it and copy the two API keys it shows into your project's `.env` file: + +```bash title=".env" +CLERK_PUBLISHABLE_KEY="..." +CLERK_SECRET_KEY="..." +``` + +Lastly, in your project's `redwood.toml` file, include `CLERK_PUBLISHABLE_KEY` in the list of env vars that should be available to the web side: + +```toml title="redwood.toml" +[web] + # ... + includeEnvironmentVariables = [ + "CLERK_PUBLISHABLE_KEY", + ] +``` + +That should be enough; now, things should just work. +Let's make sure: if this is a brand new project, generate a home page: + +```bash +yarn rw g page Home / +``` + +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +```tsx title="web/src/pages/HomePage/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={signUp}>sign up</button> + </> + ) +} +``` + +Clicking sign up should open a sign-up box and after you sign up, you should see `{"isAuthenticated":true}` on the page. + + +## Customizing the session token + +There's not a lot to the default session token. +Besides the standard claims, the only thing it really has is the user's `id`. +Eventually, you'll want to customize it so that you can get back more information from Clerk. +You can do so by navigating to the "Sessions" section in the nav on the left, then clicking on "Edit" in the "Customize session token" box: + +![clerk_customize_session_token](https://github.com/redwoodjs/redwood/assets/32992335/6d30c616-b4d2-4b44-971b-8addf3b79e5a) + +As long as you're using the `clerkJwtDecoder` +all the properties you add will be available to the `getCurrentUser` function: + +```ts title="api/src/lib/auth.ts" +export const getCurrentUser = async ( + decoded, // 👈 All the claims you add will be available on the `decoded` object + // ... +) => { + decoded.myClaim... + + // ... +} +```` + +## Avoiding feature duplication + +Redwood's Clerk integration is based on [Clerk's React SDK](https://clerk.dev/docs/reference/clerk-react/installation). +This means that there's some duplication between the features in the SDK and the ones in `@redwoodjs/auth-clerk-web`. +For example, the SDK ha a `SignedOut` component that redirects a user away from a private page—very much like wrapping a route with Redwood's `Private` component. +We recommend you use Redwood's way of doing things as much as possible since it's much more likely to get along with the rest of the framework. + +## Deep dive: the `ClerkStatusUpdater` component + +With Clerk, there's a bit more going on in the `web/src/auth.tsx` file than other auth providers. +This is because Clerk is a bit unlike the other auth providers Redwood integrates with in that it puts an instance of its client SDK on the browser's `window` object. +That means Redwood has to wait for it to be ready. +With other providers, Redwood instantiates their client SDK in `web/src/auth.ts{x}`, then passes it to `createAuth`. +With Clerk, instead Redwood uses Clerk components and hooks, like `ClerkLoaded` and `useUser`, to update Redwood's auth context with the client when it's ready. diff --git a/docs/versioned_docs/version-7.0/auth/custom.md b/docs/versioned_docs/version-7.0/auth/custom.md new file mode 100644 index 000000000000..65b5b801ab11 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/custom.md @@ -0,0 +1,301 @@ +--- +sidebar_label: Custom +--- + +# Custom Authentication + +If Redwood doesn't officially integrate with the auth provider you want to use, you're not out of luck just yet: Redwood has an API you can use to integrate your auth provider of choice. + +:::tip Were you using Nhost, magic.link, GoTrue, Okta or Wallet Connect (ethereum)? + +If you're here because you're using one of the providers Redwood used to support (Nhost, magic.link, GoTrue, Okta or Wallet Connect (Ethereum)), we've moved the code for them out into their own separate repos: + +- [Nhost](https://github.com/redwoodjs/auth-nhost) +- [magic.link](https://github.com/redwoodjs/auth-magiclink) +- [GoTrue](https://github.com/redwoodjs/auth-gotrue) +- [Okta](https://github.com/redwoodjs/auth-okta) +- [WalletConnect (Ethereum)](https://github.com/redwoodjs/auth-walletconnect) + +The code has been updated to work with the auth APIs introduced in v4, but it's mostly untested, so no guarantee it'll work. +But together with this doc, we hope getting one of the auth providers working won't be too difficult. + +::: + +When it comes to writing a custom auth integration, there's a little more work to do than just using one of the ready-made packages. But we'll walk you through all that work here, using [Nhost](https://nhost.io/) as an example. Hopefully you have auth up and running before too long! + +To get started, run the setup command: + +```bash +yarn rw setup auth custom +``` + +This makes all the code modifications it can, but whereas with other auth providers, all you have to do now is get your keys, here you have to write some code. + +Let's work on the web side first. +Here most of our time will be spent in the `web/src/auth.ts` file. +It comes commented to guide us, but we'll get into it here. +If you're using TypeScript, scroll past the boilerplate interfaces for now to get to our first task, instantiating the client: + +```ts title="web/src/auth.ts" +import { createAuthentication } from '@redwoodjs/auth' + +// ... + +// Replace this with the auth service provider client sdk +const client = { + login: () => ({ + id: 'unique-user-id', + email: 'email@example.com', + roles: [], + }), + signup: () => ({ + id: 'unique-user-id', + email: 'email@example.com', + roles: [], + }), + logout: () => {}, + getToken: () => 'super-secret-short-lived-token', + getUserMetadata: () => ({ + id: 'unique-user-id', + email: 'email@example.com', + roles: [], + }), +} +``` + +As the comment says, we need to replace this placeholder client object with an instance of our auth provider's client SDK. +Since we're using Nhost, it's time to navigate to [their docs](https://docs.nhost.io/reference/javascript) for a bit of reading. +We'll take all the work you have to do reading docs for granted here and cut to the chase—setting up Nhost's client looks like this: + +```ts +import { NhostClient } from '@nhost/nhost-js' + +const client = new NhostClient({ + backendUrl: '...' +}) +``` + +This means we have to install `@nhost/nhost-js` on the web side, so let's go ahead and do that: + +``` +yarn workspace web add @nhost/nhost-js +``` + +Then we'll have to make an account, an application, and get it's `backendUrl`. +On your application's dashboard, click "Settings" at the bottom of the the nav on the left, then "Environment Variables", and look for "NHOST_BACKEND_URL". +Copy its value into your project's `.env` file and include it in the list of env vars the web side has access to in your project's `redwood.toml` file: + +```bash title=".env" +NHOST_BACKEND_URL="..." +``` + +```toml title="redwood.toml" +[web] + # ... + includeEnvironmentVariables = ["NHOST_BACKEND_URL"] +``` + +Lastly, let's update `web/src/auth.ts`: + +```ts title="web/src/auth.ts" +import { createAuthentication } from '@redwoodjs/auth' + +import { NhostClient } from '@nhost/nhost-js' + +// ... + +const client = new NhostClient({ + backendUrl: process.env.NHOST_BACKEND_URL +}) +``` + +Ok, that's it for the client. +At this point, you could update some of the TS interfaces, but we'll leave that to you and press on with the integration. +Now we have to create the `useAuth` hook using the client we just made so that the rest of Redwood, like the router, works. +Scroll down a little more to the `createAuthImplementation` function: + +```ts title="web/src/auth.ts" +// This is where most of the integration work will take place. You should keep +// the shape of this object (i.e. keep all the key names) but change all the +// values/functions to use methods from the auth service provider client sdk +// you're integrating with +function createAuthImplementation(client: AuthClient) { + return { + type: 'custom-auth', + client, + login: async () => client.login(), + logout: async () => client.logout(), + signup: async () => client.signup(), + getToken: async () => client.getToken(), + /** + * Actual user metadata might look something like this + * { + * "id": "11111111-2222-3333-4444-5555555555555", + * "aud": "authenticated", + * "role": "authenticated", + * "roles": ["admin"], + * "email": "email@example.com", + * "app_metadata": { + * "provider": "email" + * }, + * "user_metadata": null, + * "created_at": "2016-05-15T19:53:12.368652374-07:00", + * "updated_at": "2016-05-15T19:53:12.368652374-07:00" + * } + */ + getUserMetadata: async () => client.getUserMetadata(), + } +} +``` + +This may seem like a lot, but it's actually not so bad: it's just about mapping the client's functions to these properties, many of which are pretty straightforward. +The fact that this is eventually the `useAuth` hook is hidden a bit—`createAuthImplementation` gets passed to `createAuthentication`, which returns the `AuthProvider` component and `useAuth` hook—but you don't have to concern yourself with that here. + +Again, let's take all the reading and trial and error you'll have to do for granted, though it may be long and tedious: + +```ts title="web/src/auth.ts" +function createAuthImplementation(client: AuthClient) { + return { + type: 'custom-auth', + client, + // See sign in options at https://docs.nhost.io/reference/javascript/auth/sign-in + login: async (options) => { + return await client.auth.signIn(options) + }, + // See sign out options at https://docs.nhost.io/reference/javascript/auth/sign-out + logout: async (options) => { + return await client.auth.signOut(options) + }, + // See sign up options at https://docs.nhost.io/reference/javascript/auth/sign-up + signup: async (options) => { + return await client.auth.signUp(options) + }, + getToken: async () => { + return (await client.auth.getJWTToken()) || null + }, + // See https://docs.nhost.io/reference/javascript/auth/get-user + getUserMetadata: async () => { + return await client.auth.getUser() + }, + restoreAuthState: async () => { + return await client.auth.refreshSession() + }, + } +} +``` + +That's it for the web side. +Let's head over to the api side. + +## api side + +Now that we've set up the web side, every GraphQL request includes a token. +But without a way to verify and decode that token, the api side doesn't know what to do with it, so let's start there. + +In `api/src/lib/auth.ts`, make an empty function, `authDecoder`. +Eventually we'll pass this to the `createGraphQLHandler` function in `api/src/graphql.ts`. +The GraphQL server calls it with two arguments, the token and the type. Both are strings: + +```ts title="api/src/lib/auth.ts" +export const authDecoder = async (token: string, type: string) => { + // decode token... +} +``` + +First, let's make sure that the type is the same as the type in `createAuthImplementation`, `'custom-auth'`. If it's not, we can call it quits: + +```ts title="api/src/lib/auth.ts" +export const authDecoder = async (token: string, type: string) => { + if (type !== 'custom-auth') { + return null + } + + // decode token... +} +``` + +Now let's verify and decode the token. +We'll use the npm module [jose](https://www.npmjs.com/package/jose) to do that; it has a `jwtVerify` function that does exactly what we want. +Go ahead and add it: + +``` +yarn workspace api add jose +``` + +For `jwtVerify` to do it's job, it needs the secret. +Time for another trip to your Nhost application's dashboard. +This time you're looking for "NHOST_JWT_SECRET". +Just like "NHOST_BACKEND_URL", it should be in "Settings", "Environment Variables". +(This one is a JSON object, with two properties, `type` and `key`. We just need `key`.) +Add that one to your project's `.env` file (no need to put it in `redwood.toml` though): + +```shell title=".env" +NHOST_JWT_SECRET="..." +``` + +Now we can use it in the `authDecoder`: + +```ts title="api/src/lib/auth.ts" +import { jwtVerify } from 'jose' + +export const authDecoder = async (token: string, type: string) => { + if (type !== 'custom-auth') { + return null + } + + const secret = new TextEncoder().encode(process.env.NHOST_JWT_SECRET) + + const decoded = await jwtVerify(token, secret) + + return decoded +} +``` + +Great—now we've got a way of decoding the token in requests coming from the web side. +Just one more important step that's easy to overlook: we have to pass this function to `createGraphQLHandler` in `api/src/functions/graphql.ts`: + +```ts title="api/src/functions/graphql.ts" +// highlight-next-line +import { authDecoder, getCurrentUser } from 'src/lib/auth' + +// ... + +export const handler = createGraphQLHandler({ + // highlight-next-line + authDecoder, + getCurrentUser, + // ... +}) +``` + +That should be enough; now, things should just work. +Let's make sure: if this is a brand new project, generate a home page. +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={() => signUp({ + // email: 'your.email@email.com', + // password: 'super secret password', + })}>sign up</button> + </> + ) +} +``` + +Nhost doesn't redirect to a hosted sign-up page or open a sign-up modal. +In a real app, you'd build a form here, but we're going to hardcode an email and password. +One thing you may want to do before signing up: disable email verification, else you'll actually have to verify your email. +Go to back to "Settings" in your Nhost application, but this time click "Sign in methods". +There should be a checkbox there, "Require Verified Emails". +Toggle it off. +Now try signing up and you should see `{"isAuthenticated":true}` on the page. diff --git a/docs/versioned_docs/version-7.0/auth/dbauth.md b/docs/versioned_docs/version-7.0/auth/dbauth.md new file mode 100644 index 000000000000..7bb395831159 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/dbauth.md @@ -0,0 +1,707 @@ +--- +sidebar_label: Self-hosted (dbAuth) +--- + +# Self-hosted Authentication (dbAuth) + +Redwood's own **dbAuth** provides several benefits: + +- Use your own database for storing user credentials +- Use your own login, signup and forgot password pages (or use Redwood's pre-built ones) +- Customize login session length +- No external dependencies +- No user data ever leaves your servers +- No additional charges/limits based on number of users +- No third party service outages affecting your site + +And potentially one large drawback: + +- Use your own database for storing user credentials + +However, we're following best practices for storing these credentials: + +1. Users' passwords are [salted and hashed](https://auth0.com/blog/adding-salt-to-hashing-a-better-way-to-store-passwords/) with PBKDF2 before being stored +2. Plaintext passwords are never stored anywhere, and only transferred between client and server during the login/signup phase (and hopefully only over HTTPS) +3. Our logger scrubs sensitive parameters (like `password`) before they are output +4. We only store the hashes of reset tokens + +Even if you later decide you want to let someone else handle your user data for you, dbAuth is a great option for getting up and running quickly (we even have a generator for creating basic login and signup pages for you). + +## How It Works + +dbAuth relies on good ol' fashioned cookies to determine whether a user is logged in or not. On an attempted login, a serverless function on the api-side checks whether a user exists with the given username (internally, dbAuth refers to this field as _username_ but you can use anything you want, like an email address). If a user with that username is found, does their salted and hashed password match the one in the database? + +If so, an [HttpOnly](https://owasp.org/www-community/HttpOnly), [Secure](https://owasp.org/www-community/controls/SecureCookieAttribute), [SameSite](https://owasp.org/www-community/SameSite) cookie (dbAuth calls this the "session cookie") is sent back to the browser containing the ID of the user. The content of the cookie is a simple string, but AES encrypted with a secret key (more on that later). + +When the user makes a GraphQL call, we decrypt the cookie and make sure that the user ID contained within still exists in the database. If so, the request is allowed to proceed. + +If there are any shenanigans detected (the cookie can't be decrypted properly, or the user ID found in the cookie does not exist in the database) the user is immediately logged out by expiring the session cookie. + +## Setup + +A single CLI command will get you everything you need to get dbAuth working, minus the actual login/signup pages: + +```bash +yarn rw setup auth dbAuth +``` + +You will be prompted to ask if you want to enable **WebAuthn** support. WebAuthn is an open standard for allowing authentication from devices like TouchID, FaceID, USB fingerprint scanners, and more. If you think you want to use WebAuthn, enter `y` at this prompt and read on configuration options. + +You can also add WebAuthn to an existing dbAuth install. [Read more about WebAuthn usage and config below](#webauthn). + +Read the post-install instructions carefully as they contain instructions for adding database fields for the hashed password and salt, as well as how to configure the auth serverless function based on the name of the table that stores your user data. Here they are, but could change in future releases (these do not include the additional WebAuthn required options, make sure you get those from the output of the `setup` command): + +> You will need to add a couple of fields to your User table in order to store a hashed password and salt: +> +> ``` +> model User { +> id Int @id @default(autoincrement()) +> email String @unique +> hashedPassword String // <─┐ +> salt String // <─┼─ add these lines +> resetToken String? // <─┤ +> resetTokenExpiresAt DateTime? // <─┘ +> } +> ``` +> +> If you already have existing user records you will need to provide a default value or Prisma complains, so change those to: +> +> ``` +> hashedPassword String @default("") +> salt String @default("") +> ``` +> +> You'll need to let Redwood know what field you're using for your users' `id` and `username` fields In this case we're using `id` and `email`, so update those in the `authFields` config in `/api/src/functions/auth.js` (this is also the place to tell Redwood if you used a different name for the `hashedPassword` or `salt` fields): +> +> ``` +> authFields: { +> id: 'id', +> username: 'email', +> hashedPassword: 'hashedPassword', +> salt: 'salt', +> resetToken: 'resetToken', +> resetTokenExpiresAt: 'resetTokenExpiresAt', +> }, +> ``` +> +> To get the actual user that's logged in, take a look at `getCurrentUser()` in `/api/src/lib/auth.js`. We default it to something simple, but you may use different names for your model or unique ID fields, in which case you need to update those calls (instructions are in the comment above the code). +> +> Finally, we created a `SESSION_SECRET` environment variable for you in `.env`. This value should NOT be checked into version control and should be unique for each environment you deploy to. If you ever need to log everyone out of your app at once change this secret to a new value. To create a new secret, run: +> +> ``` +> yarn rw g secret +> ``` +> +> Need simple Login, Signup and Forgot Password pages? Of course we have a generator for those: +> +> ``` +> yarn rw generate dbAuth +> ``` + +Note that if you change the fields named `hashedPassword` and `salt`, and you have some verbose logging in your app, you'll want to scrub those fields from appearing in your logs. See the [Redaction](logger.md#redaction) docs for info. + +## Scaffolding Login/Signup/Forgot Password Pages + +If you don't want to create your own login, signup and forgot password pages from scratch we've got a generator for that: + +```bash +yarn rw g dbAuth +``` + +Once again you will be asked if you want to create a WebAuthn-enabled version of the LoginPage. If so, enter `y` and follow the setup instructions. + +The default routes will make them available at `/login`, `/signup`, `/forgot-password`, and `/reset-password` but that's easy enough to change. Again, check the post-install instructions for one change you need to make to those pages: where to redirect the user to once their login/signup is successful. + +If you'd rather create your own, you might want to start from the generated pages anyway as they'll contain the other code you need to actually submit the login credentials or signup fields to the server for processing. + +## Configuration + +Almost all config for dbAuth lives in `api/src/functions/auth.js` in the object you give to the `DbAuthHandler` initialization. The comments above each key will explain what goes where. Here's an overview of the more important options: + +### allowedUserFields + +```javascript +allowedUserFields: ["id", "email"] +``` + +Most of the auth handlers accept a `user` argument that you can reference in the body of the function. These handlers also sometimes return that `user` object. As a security measure, `allowedUserFields` defines the only properties that will be available in that object so that sensitive data isn't accidentally leaked by these handlers to the client. + +:::info + +The `signup` and `forgotPassword` handlers return to the client whatever data is returned from their handlers, which can be used to display something like the email address that a verification email was just sent to. Without `allowedUserFields` it would be very easy to include the user's `hashedPassword` and `salt` in that response (just return `user` from those handlers) and then any customer could open the Web Inspector in their browser and see those values in plain text! + +::: + +`allowedUserFields` is defaulted to `id` and `email` but you can add any property on `user` to that list. + +### login.enabled + +Allow users to call login. Defaults to true. Needs to be explicitly set to false to disable the flow. + +```javascript +login: { + enabled: false +} +``` + +### login.handler() + +If you want to do something other than immediately let a user log in if their username/password is correct, you can add additional logic in `login.handler()`. For example, if a user's credentials are correct, but they haven't verified their email address yet, you can throw an error in this function with the appropriate message and then display it to the user. If the login should proceed, simply return the user that was passed as the only argument to the function: + +```javascript +login: { + handler: (user) => { + if (!user.verified) { + throw new Error('Please validate your email first!') + } else { + return user + } + } +} +``` + +### signup.enabled + +Allow users to sign up. Defaults to true. Needs to be explicitly set to false to disable the flow. + +```javascript +signup: { + enabled: false +} +``` + +### signup.handler() + +This function should contain the code needed to actually create a user in your database. You will receive a single argument which is an object with all of the fields necessary to create the user (`username`, `hashedPassword` and `salt`) as well as any additional fields you included in your signup form in an object called `userAttributes`: + +```javascript +signup: { + handler: ({ username, hashedPassword, salt, userAttributes }) => { + return db.user.create({ + data: { + email: username, + hashedPassword: hashedPassword, + salt: salt, + name: userAttributes.name, + }, + }) + } +} +``` + +Before `signup.handler()` is invoked, dbAuth will check that the username is unique in the database and throw an error if not. + +There are three things you can do within this function depending on how you want the signup to proceed: + +1. If everything is good and the user should be logged in after signup: return the user you just created +2. If the user is safe to create, but you do not want to log them in automatically: return a string, which will be returned by the `signUp()` function you called after destructuring it from `useAuth()` (see code snippet below) +3. If the user should _not_ be able to sign up for whatever reason: throw an error in this function with the message to be displayed + +You can deal with case #2 by doing something like the following in a signup component/page: + +```jsx +const { signUp } = useAuth() + +const onSubmit = async (data) => { + const response = await signUp({ ...data }) + + if (response.message) { + toast.error(response.message) // user created, but not logged in + } else { + toast.success('Welcome!') // user created and logged in + navigate(routes.dashboard()) + } +} +``` + +### signup.passwordValidation() + +This function is used to validate that the password supplied at signup meets certain criteria (length, randomness, etc.). By default it just returns `true` which means the password is always considered valid, even if only a single character (dbAuth features built-in validation that the password is not blank, an empty string, or made up of only spaces). Modify it to enforce whatever methodology you want on the password. + +If the password is valid, return `true`. Otherwise, throw the `PasswordValidationError` along with a (optional) message explaining why: + +```javascript +signup: { + passwordValidation: (password) => { + + if (password.length < 8) { + throw new PasswordValidationError('Password must be at least 8 characters') + } + + if (!password.match(/[A-Z]/)) { + throw new PasswordValidationError('Password must contain at least one capital letter') + } + + return true + } +} +``` + +For the best user experience you should include the same checks on the client side and avoid the roundtrip to the server altogether if the password is invalid. However, having the checks here makes sure that someone can't submit a user signup programmatically and skirt your password requirements. + +### forgotPassword.enabled + +Allow users to request a new password via a call to `forgotPassword`. Defaults to true. Needs to be explicitly set to false to disable the flow. +When disabling this flow you probably want to disable `resetPassword` as well. + +```javascript +forgotPassword: { + enabled: false +} +``` + +### forgotPassword.handler() + +This handler is invoked if a user is found with the username/email that they submitted on the Forgot Password page, and that user will be passed as an argument. Inside this function is where you'll send the user a link to reset their password—via an email is most common. The link will, by default, look like: + +``` +https://example.com/reset-password?resetToken=${user.resetToken} +``` + +If you changed the path to the Reset Password page in your routes you'll need to change it here. If you used another name for the `resetToken` database field, you'll need to change that here as well: + +``` +https://example.com/reset-password?resetKey=${user.resetKey} +``` + +> Note that although the user table contains a hash of `resetToken`, only for the handler, `user.resetToken` will contain the raw `resetToken` to use for generating a password reset link. + +### resetPassword.enabled + +Allow users to reset their password via a code from a call to `forgotPassword`. Defaults to true. Needs to be explicitly set to false to disable the flow. +When disabling this flow you probably want to disable `forgotPassword` as well. + +```javascript +resetPassword: { + enabled: false +} +``` + +### resetPassword.handler() + +This handler is invoked after the password has been successfully changed in the database. Returning something truthy (like `return user`) will automatically log the user in after their password is changed. If you'd like to return them to the login page and make them log in manually, `return false` and redirect the user in the Reset Password page. + +### usernameMatch + +This configuration allows you to perform a case insensitive check on a username at the point of db check. You will need to provide the configuration of your choice for both signup and login. + +```javascript +signup: { + usernameMatch: 'insensitive' +} +``` + +```javascript +login: { + usernameMatch: 'insensitive' +} +``` + +By default no setting is required. This is because each db has its own rules for enabling this feature. To enable please see the table below and pick the correct 'userMatchString' for your db of choice. + +| DB | Default | usernameMatchString | notes | +|---|---|---|---| +| Postgres | 'default' | 'insensitive' | | +| MySQL | 'case-insensitive' | N/A | turned on by default so no setting required | +| MongoDB | 'default' | 'insensitive' | +| SQLite | N/A | N/A | [Not Supported] Insensitive checks can only be defined at a per column level | +| Microsoft SQL Server | 'case-insensitive' | N/A | turned on by default so no setting required | + +### Cookie config + +These options determine how the cookie that tracks whether the client is authorized is stored in the browser. The default configuration should work for most use cases. If you serve your web and api sides from different domains you'll need to make some changes: set `SameSite` to `None` and then add [CORS configuration](#cors-config). + +```javascript +cookie: { + HttpOnly: true, + Path: '/', + SameSite: 'Strict', + Secure: true, + // Domain: 'example.com', +} +``` + +### CORS config + +If you're using dbAuth and your api and web sides are deployed to different domains then you'll need to configure CORS for both GraphQL in general and dbAuth. You'll also need to enable a couple of options to be sure and send/accept credentials in XHR requests. For more info, see the complete [CORS doc](cors.md#cors-and-authentication). + +### Error Messages + +There are several error messages that can be displayed, including: + +- Username/email not found +- Incorrect password +- Expired reset password token + +We've got some default error messages that sound nice, but may not fit the tone of your site. You can customize these error messages in `api/src/functions/auth.js` in the `errors` prop of each of the `login`, `signup`, `forgotPassword` and `resetPassword` config objects. The generated file contains tons of comments explaining when each particular error message may be shown. + +### WebAuthn Config + +See [WebAuthn Configuration](#function-config) section below. + +## Environment Variables + +### Cookie Domain + +By default, the session cookie will not have the `Domain` property set, which a browser will default to be the [current domain only](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#define_where_cookies_are_sent). If your site is spread across multiple domains (for example, your site is at `example.com` but your api-side is deployed to `api.example.com`) you'll need to explicitly set a Domain so that the cookie is accessible to both. + +To do this, set the `cookie.Domain` property in your `api/src/functions/auth.js` configuration, set to the root domain of your site, which will allow it to be read by all subdomains as well. For example: + +```json title="api/src/functions/auth.js" +cookie: { + HttpOnly: true, + Path: '/', + SameSite: 'Strict', + Secure: process.env.NODE_ENV !== 'development' ? true : false, + Domain: 'example.com' +} +``` + +### Session Secret Key + +If you need to change the secret key that's used to encrypt the session cookie, or deploy to a new target (each deploy environment should have its own unique secret key) we've got a CLI tool for creating a new one: + +``` +yarn rw g secret +``` + +Note that the secret that's output is _not_ appended to your `.env` file or anything else, it's merely output to the screen. You'll need to put it in the right place after that. + +:::warning .env and Version Control + +The `.env` file is set to be ignored by git and not committed to version control. There is another file, `.env.defaults`, which is meant to be safe to commit and contain simple ENV vars that your dev team can share. The encryption key for the session cookie is NOT one of these shareable vars! + +::: + +## WebAuthn + +[WebAuthn](https://webauthn.guide/) is a specification written by the W3C and FIDO with participation from Google, Mozilla, Microsoft, and others. It defines a standard way to use public key cryptography instead of a password to authenticate users. + +That's a very technical way of saying: users can log in with [TouchID](https://en.wikipedia.org/wiki/Touch_ID), [FaceID](https://en.wikipedia.org/wiki/Face_ID), [Windows Hello](https://support.microsoft.com/en-us/windows/learn-about-windows-hello-and-set-it-up-dae28983-8242-bb2a-d3d1-87c9d265a5f0), [Yubikey](https://www.yubico.com/), and more. + +<img width="401" alt="image" src="https://user-images.githubusercontent.com/300/174893269-2cbb1008-ab84-4121-80ee-cfa9250ba1bd.png" /> + +We'll refer to whatever biometric device that's used as simply a "device" below. The WebAuthn flow includes two "phases": + +1. **Registration**: the first time a new device is added for a user (a user can have multiple devices registered) +2. **Authentication**: the device is recognized and can be used to login on subsequent visits + +### User Experience + +The `LoginPage` generated by Redwood includes two new prompts on the login page, depending on the state of the user and whether they have registered their device yet or not: + +**Registration** + +The user is prompted to login with username/password: + +<img width="417" alt="image" src="https://user-images.githubusercontent.com/300/174903338-84ae504c-2e8c-444c-83aa-2cf60320c21e.png" /> + +Then asked if they want to enable WebAuthn: + +<img width="405" alt="image" src="https://user-images.githubusercontent.com/300/174903419-7a73fa35-c732-48c1-a8f9-6bfa801437e0.png" /> + +If so, they are shown the browser's prompt to scan: + +<img width="362" alt="image" src="https://user-images.githubusercontent.com/300/174903492-deae26db-232e-4712-a81b-4b703be12a4b.png" /> + +If they skip, they just proceed into the site as usual. If they log out and back in, they will be prompted to enable WebAuthn again. + +**Authentication** + +When a device is already registered then it can be used to skip username/password login. The user is immediately shown the prompt to scan when they land on the login page (if the prompt doesn't show, or they mistakenly cancel it, they can click "Open Authenticator" to show the prompt again) + +<img width="701" alt="image" src="https://user-images.githubusercontent.com/300/174904236-ccf6eba4-35ce-46e7-ad04-42eee43d3bba.png" /> + +They can also choose to go to use username/password credentials instead of their registered device. + +### How it Works + +The back and forth between the web and api sides works like this: + +**Registration** + +1. If the user selects to enable their device, a request is made to the server for "registration options" which is a JSON object containing details about the server and user (domain, username). +2. Your app receives that data and then makes a browser API call that says to start the biometric reader with the received options +3. The user scans their fingerprint/face and the browser API returns an ID representing this device, a public key and a few other fields for validation on the server +4. The ID, public key, and additional details are sent to the server to be verified. Assuming the are, the device is saved to the database in a `UserCredential` table (you can change the name if you want). The server responds by placing a cookie on the user's browser with the device ID (a random string of letters and numbers) + +A similar process takes place when authenticating: + +**Authentication** + +1. If the cookie from the previous process is present, the web side knows that the user has a registered device so a request is made to the server to get "authentication options" +2. The server looks up user who's credential ID is in the cookie and gets a list of all of the devices they have registered in the past. This is included along with the domain and username +3. The web side receives the options from the server and a browser API call is made. The browser first checks to see if the list of devices from the server includes the current device. If so, it prompts the user to scan their fingerprint/face (if the device is not in the list, the user will directed back to username/password signup) +4. The ID, public key, user details and a signature are sent to the server and checked to make sure the signature contains the expected data encrypted with the public key. If so, the regular login cookie is set (the same as if the user had used username/password login) + +In both cases, actual scanning and matching of devices is handled by the operating system: all we care about is that we are given a credential ID and a public key back from the device. + +### Browser Support + +WebAuthn is supported in the following browsers (as of July 2022): + +| OS | Browser | Authenticator | +| ------- | ------- | ------------- | +| macOS | Firefox | Yubikey Security Key NFC (USB), Yubikey 5Ci, SoloKey | +| macOS | Chrome | Touch ID, Yubikey Security Key NFC (USB), Yubikey 5Ci, SoloKey | +| iOS | All | Face ID, Touch ID, Yubikey Security Key NFC (NFC), Yubikey 5Ci | +| Android | Chrome | Fingerprint Scanner, caBLE | +| Android | Firefox | Screen PIN | + +### Configuration + +WebAuthn support requires a few updates to your codebase: + +1. Adding a `UserCredential` model +2. Adding configuration options in `api/src/functions/auth.js` +3. Adding a `client` to the `<AuthProvider>` in `App.js` +4. Adding an interface during the login process that prompts the user to enable their device + +:::info +If you setup dbAuth and generated the LoginPage with WebAuthn support then all of these steps have already been done for you! As described in the post-setup instructions you just need to add the required fields to your `User` model, create a `UserCredential` model, and you're ready to go! + +If you didn't setup WebAuthn at first, but decided you now want WebAuthn, you could run the setup and generator commands again with the `--force` flag to overwrite your existing files. Any changes you made will be overwritten, but if you do a quick diff in git you should be able to port over most of your changes. +::: + +### Schema Updates + +You'll need to add two fields to your `User` model, and a new `UserCredential` model to store the devices that are used and associate them with a user: + +```javascript title="api/db/schema.prisma" +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +model User { + id Int @id @default(autoincrement()) + email String @unique + hashedPassword String + salt String + resetToken String? + resetTokenExpiresAt DateTime? + // highlight-start + webAuthnChallenge String? @unique + credentials UserCredential[] + // highlight-end +} + +// highlight-start +model UserCredential { + id String @id + userId Int + user User @relation(fields: [userId], references: [id]) + publicKey Bytes + transports String? + counter BigInt +} +// highlight-end +``` + +Run `yarn rw prisma migrate dev` to apply the changes to your database. + +:::warning Do Not Allow GraphQL Access to `UserCredential` + +As you can probably tell by the name, this new model contains secret credential info for the user. You **should not** make this data publicly available by adding an SDL file to `api/src/graphql`. + +Also: if you (re)generate the SDL for your `User` model, the generator will happily include the `credentials` relationship, assuming you want to allow access to that data (it does this automatically for all relaionships). This will result in an error and warning message in the console from the API server when it tries to read the new SDL file: the `User` SDL refers to a `UserCredential` type, which does not exist (there's no `userCredential.sdl.js` file to define it). + +If you see this notice after (re)generating, simply remove the following line from the `User` SDL: + +``` +credentials: [UserCredential]! +``` + +::: + +### Function Config + +Next we need to let dbAuth know about the new field and model names, as well as how you want WebAuthn to behave (see the highlighted section) + +```javascript title="api/src/functions/auth.js" +import { db } from 'src/lib/db' +import { DbAuthHandler } from '@redwoodjs/api' + +export const handler = async (event, context) => { + + // assorted handler config here... + + const authHandler = new DbAuthHandler(event, context, { + db: db, + authModelAccessor: 'user', + // highlight-start + credentialModelAccessor: 'userCredential', + // highlight-end + authFields: { + id: 'id', + username: 'email', + hashedPassword: 'hashedPassword', + salt: 'salt', + resetToken: 'resetToken', + resetTokenExpiresAt: 'resetTokenExpiresAt', + // highlight-start + challenge: 'webAuthnChallenge', + // highlight-end + }, + + cookie: { + HttpOnly: true, + Path: '/', + SameSite: 'Strict', + Secure: process.env.NODE_ENV !== 'development' ? true : false, + }, + + forgotPassword: forgotPasswordOptions, + login: loginOptions, + resetPassword: resetPasswordOptions, + signup: signupOptions, + + // highlight-start + webAuthn: { + enabled: true, + expires: 60 * 60 * 14, + name: 'Webauthn Test', + domain: + process.env.NODE_ENV === 'development' ? 'localhost' : 'server.com', + origin: + process.env.NODE_ENV === 'development' + ? 'http://localhost:8910' + : 'https://server.com', + type: 'platform', + timeout: 60000, + credentialFields: { + id: 'id', + userId: 'userId', + publicKey: 'publicKey', + transports: 'transports', + counter: 'counter', + }, + }, + // highlight-end + }) + + return await authHandler.invoke() +} +``` + +- `credentialModelAccessor` specifies the name of the accessor that you call to access the model you created to store credentials. If your model name is `UserCredential` then this field would be `userCredential` as that's how Prisma's naming conventions work. +- `authFields.challenge` specifies the name of the field in the user model that will hold the WebAuthn challenge string. This string is generated automatically whenever a WebAuthn registration or authentication request starts and is one more verification that the browser request came from this user. A user can only have one WebAuthn request/response cycle going at a time, meaning that they can't open a desktop browser, get the TouchID prompt, then switch to iOS Safari to use FaceID, then return to the desktop to scan their fingerprint. The most recent WebAuthn request will clobber any previous one that's in progress. +- `webAuthn.enabled` is a boolean, denoting whether the server should respond to webAuthn requests. If you decide to stop using WebAuthn, you'll want to turn it off here as well as update the LoginPage to stop prompting. +- `webAuthn.expires` is the number of seconds that a user will be allowed to keep using their fingerprint/face scan to re-authenticate into your site. Once this value expires, the user _must_ use their username/password to authenticate the next time, and then WebAuthn will be re-enabled (again, for this length of time). For security, you may want to log users out of your app after an hour of inactivity, but allow them to easily use their fingerprint/face to re-authenticate for the next two weeks (this is similar to login on macOS where your TouchID session expires after a couple of days of inactivity). In this example you would set `login.expires` to `60 * 60` and `webAuthn.expires` to `60 * 60 * 24 * 14`. +- `webAuthn.name` is the name of the app that will show in some browser's prompts to use the device +- `webAuthn.domain` is the name of domain making the request. This is just the domain part of the URL, ex: `app.server.com`, or in development mode `localhost` +- `webAuthn.origin` is the domain _including_ the protocol and port that the request is coming from, ex: [https://app.server.com](https://app.server.com) In development mode, this would be `http://localhost:8910` +- `webAuthn.type`: the type of device that's allowed to be used (see [next section below](#webauthn-type-option)) +- `webAuthn.timeout`: how long to wait for a device to be used in milliseconds (defaults to 60 seconds) +- `webAuthn.credentialFields`: lists the expected field names that dbAuth uses internally mapped to what they're actually called in your model. This includes 5 fields total: `id`, `userId`, `publicKey`, `transports`, `counter`. + +### WebAuthn `type` Option + +The config option `webAuthn.type` can be set to `any`, `platform` or `cross-platform`: + +- `platform` means to _only_ allow embedded devices (TouchID, FaceID, Windows Hello) to be used +- `cross-platform` means to _only_ allow third party devices (like a Yubikey USB fingerprint reader) +- `any` means to allow both platform and cross-platform devices + +In some browsers this can lead to a pretty drastic UX difference. For example, here is the interface in Chrome on macOS with the included TouchID sensor on a Macbook Pro: + +#### **any** + +<img width="446" alt="image" src="https://user-images.githubusercontent.com/300/174896660-c2960921-046c-49ad-8ff0-38c019569371.png" /> + +If you pick "Add a new Android Phone" you're presented with a QR code: + +<img width="445" alt="image" src="https://user-images.githubusercontent.com/300/174896265-bb513c82-56a7-4bbc-892e-97aa8a57f525.png" /> + +If you pick "USB Security Key" you're given the chance to scan your fingerprint in a 3rd party USB device: + +<img width="445" alt="image" src="https://user-images.githubusercontent.com/300/174896250-a0c447e7-c238-47bb-ab14-86b63385178e.png" /> + +And finally if you pick "This device" you're presented with the standard interface you'd get if used `platform` as your type: + +<img width="251" alt="image" src="https://user-images.githubusercontent.com/300/174895503-de913272-f219-4d28-9e86-ac6190785dfd.png" /> + +You'll have to decide if this UX tradeoff is worth it for your customers, as it can be pretty confusing when first presented with all of these options when someone is just used to using TouchID or FaceID. + +#### **platform** + +The `platform` option provides the simplest UI and one that users with a TouchID or FaceID will be immediately familiar with: + +<img width="251" alt="image" src="https://user-images.githubusercontent.com/300/174895503-de913272-f219-4d28-9e86-ac6190785dfd.png" /> + +Note that you can also fallback to use your user account password (on the computer itself) in addition to TouchID: + +<img width="251" alt="image" src="https://user-images.githubusercontent.com/300/174895743-24042578-4461-4c3b-b51c-8abc0325f065.png" /> + +Both the password and TouchID scan will count as the same device, so users can alternate between them if they want. + +#### **cross-platform** + +This interface is the same as `any`, but without the option to pick "This device": + +<img width="445" src="https://user-images.githubusercontent.com/300/174896275-066b163b-8203-4287-9e3f-ba545552dd22.png" /> + +So while the `any` option is the most flexible, it's also the most confusing to users. If you do plan on allowing any device, you may want to do a user-agent check and try to explain to users what the different options actually mean. + +The api-side is now ready to go. + +### App.js Updates + +If you generated your login/signup pages with `yarn rw g dbAuth --webauthn` then all of these changes are in place and you can start using WebAuthn right away! Otherwise, read on. + +First you'll need to import the `WebAuthnClient` and give it to the `<AuthProvider>` component: + +```jsx title="web/src/App.js" +import { AuthProvider } from '@redwoodjs/auth' +// highlight-start +import WebAuthnClient from '@redwoodjs/auth-dbauth-web/webAuthn' +// highlight-end +import { FatalErrorBoundary, RedwoodProvider } from '@redwoodjs/web' +import { RedwoodApolloProvider } from '@redwoodjs/web/apollo' + +import FatalErrorPage from 'src/pages/FatalErrorPage' +import Routes from 'src/Routes' + +import './scaffold.css' +import './index.css' + +const App = () => ( + <FatalErrorBoundary page={FatalErrorPage}> + <RedwoodProvider titleTemplate="%PageTitle | %AppTitle"> + // highlight-start + <AuthProvider type="dbAuth" client={WebAuthnClient}> + // highlight-end + <RedwoodApolloProvider> + <Routes /> + </RedwoodApolloProvider> + </AuthProvider> + </RedwoodProvider> + </FatalErrorBoundary> +) + +export default App +``` + +Now you're ready to access the functionality added by the WebAuthn client. The easiest way to do this would be to generate a new `LoginPage` with `yarn rw g dbAuth --webauthn`, even if it's in a brand new, throwaway app, and copy the pieces you need (or just replace your existing login page with it). + +The gist of building a login flow is that you now need to stop after username/password authentication and, if the browser supports WebAuthn, give the user the chance to register their device. If they come to the login page and already have the `webAuthn` cookie then you can show the prompt to authenticate, skipping the username/password form completely. This is all handled in the LoginPage template that Redwood generates for you. + +### WebAuthn Client API + +The `client` that we gave to the `AuthProvider` can be destructured from `useAuth()`: + +```javascript +const { isAuthenticated, client, logIn } = useAuth() +``` + +`client` gives you access to four functions for working with WebAuthn: + +- `client.isSupported()`: returns a Promise which resolves to a boolean—whether or not WebAuthn is supported in the current browser browser +- `client.isEnabled()`: returns a boolean for whether the user currently has a `webAuthn` cookie, which means this device has been registered already and can be used for login +- `client.register()`: returns a Promise which gets options from the server, presents the prompt to scan your fingerprint/face, and then sends the result up to the server. It will either resolve successfully with an object `{ verified: true }` or throw an error. This function is used when the user has not registered this device yet (`client.isEnabled()` returns `false`). +- `client.authenticate()`: returns a Promise which gets options from the server, presents the prompt to scan the user's fingerprint/face, and then sends the result up to the server. It will either resolve successfully with an object `{ verified: true }` or throw an error. This should be used when the user has already registered this device (`client.isEnabled()` returns `true`) diff --git a/docs/versioned_docs/version-7.0/auth/firebase.md b/docs/versioned_docs/version-7.0/auth/firebase.md new file mode 100644 index 000000000000..dc4b3a5d95aa --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/firebase.md @@ -0,0 +1,73 @@ +--- +sidebar_label: Firebase +--- + +# Firebase Authentication + +To get started, run the setup command: + +```bash +yarn rw setup auth firebase +``` + +This installs all the packages, writes all the files, and makes all the code modifications you need. +For a detailed explanation of all the api- and web-side changes that aren't exclusive to Firebase, see the top-level [Authentication](../authentication.md) doc. +For now, let's focus on Firebase's side of things. + +If you don't have a Firebase account yet, now's the time to make one: navigate to https://firebase.google.com and click "Go to console", sign up, and create a project. +After it's ready, we'll get the API keys. + +To get the API keys, we need to add a web app to our project. +Click the `</>` icon in main call to action on the dashboard—"Get started by adding Firebase to your app". +Give your app a nickname, then you should see the API keys. +Since we're only using Firebase for auth, we only need `apiKey`, `authDomain`, and `projectId`. +Copy them into your project's `.env` file: + +```bash title=".env" +FIREBASE_API_KEY="..." +FIREBASE_AUTH_DOMAIN="..." +FIREBASE_PROJECT_ID="..." +``` + +Lastly, include `FIREBASE_API_KEY` and `FIREBASE_AUTH_DOMAIN` in the list of env vars that should be available to the web side (`FIREBASE_PROJECT_ID` is for the api side): + +```toml title="redwood.toml" +[web] + # ... + includeEnvironmentVariables = ["FIREBASE_API_KEY", "FIREBASE_AUTH_DOMAIN"] +``` + +We've hooked up our Firebase app to our Redwood app, but if you try it now, it won't work. +That's because we haven't actually enabled auth in our Firebase app yet. + +Back to the dashboard one more time: in the nav on the left, click "Build", "Authentication", and "Get started". +We're going to go with "Email/Password" here, but feel free to configure things as you wish. +Click "Email/Password", enable it, and click "Save". + +That should be enough; now, things should just work. +Let's make sure: if this is a brand new project, generate a home page. +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={() => signUp({ + // email: 'your.email@email.com', + // password: 'super secret password', + })}>sign up</button> + </> + ) +} +``` + +"Email/Password" says what it means: Firebase doesn't redirect to a hosted sign-up page or open a sign-up modal. +In a real app, you'd build a form here, but we're going to hardcode an email and password. +After you sign up, you should see `{"isAuthenticated":true}` on the page. diff --git a/docs/versioned_docs/version-7.0/auth/netlify.md b/docs/versioned_docs/version-7.0/auth/netlify.md new file mode 100644 index 000000000000..67a8efd5e1e6 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/netlify.md @@ -0,0 +1,64 @@ +--- +sidebar_label: Netlify +--- + +# Netlify Identity Authentication + +To get started, run the setup command: + +```bash +yarn rw setup auth netlify +``` + +This installs all the packages, writes all the files, and makes all the code modifications you need. +For a detailed explanation of all the api- and web-side changes that aren't exclusive to Netlify Identity, see the top-level [Authentication](../authentication.md) doc. +For now let's focus on Netlify's side of things. + +There's a catch with Netlify Identity: your app has to be be deployed to Netlify to use it. +If this's a deal breaker for you, there are [other great auth providers to choose from](../authentication.md#official-integrations). +But here we'll assume it's not and that your app is already deployed. +(If it isn't, do that first, then come back. And yes, there's a setup command for that: `yarn rw setup deploy netlify`.) + +Once you've deployed your app, go to it's overview, click "Integrations" in the nav at the top, search for Netlify Identity, enable it, and copy the API endpoint in the Identity card. +(It should look something like `https://my-redwood-app.netlify.app/.netlify/identity`.) + +Let's do one more thing while we're here to make signing up later a little easier. +Right now, if we sign up, we'll have to verify our email address. +Let's forego that feature for the purposes of this doc: click "Settings and usage", then scroll down to "Emails" and look for "Confirmation template". +Click "Edit settings", tick the box next to "Allow users to sign up without verifying their email address", and click "Save". + +Netlify Identity works a little differently than the other auth providers in that you don't have to copy API keys to your project's `.env` and `redwood.toml` files. +Instead, the first time you use it (by, say, calling `signUp` from `useAuth`), it'll ask you for your app's API endpoint. +So let's go ahead and use it: if this is a brand new project, generate a home page. +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +``` +yarn rw g page home / +``` + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={signUp}>sign up</button> + </> + ) +} +``` + +Clicking sign up should open a modal; paste the API endpoint you copied earlier there: + +<img width="1522" alt="image" src="https://user-images.githubusercontent.com/32992335/209391973-239d5a12-649f-4e33-9098-cd297034f563.png" /> + +After that, you should see a sign-up modal. Go ahead and sign up: + +<img width="1522" alt="image" src="https://user-images.githubusercontent.com/32992335/209392156-e87a04b8-9ce8-4bc6-bc6b-92a2de8effe3.png" /> + +After you sign up, you should see `{"isAuthenticated":true}` on the page. diff --git a/docs/versioned_docs/version-7.0/auth/supabase.md b/docs/versioned_docs/version-7.0/auth/supabase.md new file mode 100644 index 000000000000..5b4e19903f77 --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/supabase.md @@ -0,0 +1,334 @@ +--- +sidebar_label: Supabase +--- +# Supabase Authentication + +To get started, run the setup command: + +```bash +yarn rw setup auth supabase +``` + +This installs all the packages, writes all the files, and makes all the code modifications you need. +For a detailed explanation of all the api- and web-side changes that aren't exclusive to Supabase, see the top-level [Authentication](../authentication.md) doc. For now, let's focus on Supabase's side of things. + +## Setup + +If you don't have a Supabase account yet, now's the time to make one: navigate to https://supabase.com and click "Start your project" in the top right. Then sign up and create an organization and a project. + +While Supabase creates your project, it thoughtfully shows your project's API keys. +(If the page refreshes while you're copying them over, just scroll down a bit and look for "Connecting to your new project".) +We're looking for "Project URL" and "API key" (the `anon`, `public` one). +Copy them into your project's `.env` file as `SUPABASE_URL` and `SUPABASE_KEY` respectively. + +There's one more we need, the "JWT Secret", that's not here. +To get that one, click the cog icon ("Project Settings") near the bottom of the nav on the left. +Then click "API", scroll down a bit, and you should see it—"JWT Secret" under "JWT Settings". +Copy it into your project's `.env` file as `SUPABASE_JWT_SECRET`. +All together now: + +```bash title=".env" +SUPABASE_URL="..." +SUPABASE_KEY="..." +SUPABASE_JWT_SECRET="..." +``` + +Lastly, in `redwood.toml`, include `SUPABASE_URL` and `SUPABASE_KEY` in the list of env vars that should be available to the web side: + +```toml title="redwood.toml" +[web] + # ... + includeEnvironmentVariables = ["SUPABASE_URL", "SUPABASE_KEY"] +``` + +## Authentication UI + +Supabase doesn't redirect to a hosted sign-up page or open a sign-up modal. +In a real app, you'd build a form here, but we're going to hardcode an email and password. + +### Basic Example + +After you sign up, head to your inbox: there should be a confirmation email from Supabase waiting for you. + +Click the link, then head back to your app. +Once you refresh the page, you should see `{"isAuthenticated":true}` on the page. + + +Let's make sure: if this is a brand new project, generate a home page. + +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={() => signUp({ + email: 'your.email@email.com', + password: 'super secret password', + })}>sign up</button> + </> + ) +} +``` + +## Authentication Reference + +You will notice that [Supabase Javascript SDK Auth API](https://supabase.com/docs/reference/javascript/auth-api) reference documentation presents methods to sign in with the various integrations Supabase supports: password, OAuth, IDToken, SSO, etc. + +The RedwoodJS implementation of Supabase authentication supports these as well, but within the `logIn` method of the `useAuth` hook. + +That means that you will see that Supabase documents sign in with email password as: + +```ts +const { data, error } = await supabase.auth.signInWithPassword({ + email: 'example@email.com', + password: 'example-password', +}) +``` + +In RedwoodJS, you will always use `logIn` and pass the necessary credential options and also an `authMethod` to declare how you want to authenticate. + +```ts +const { logIn } = useAuth() + +await logIn({ + authMethod: 'password', + email: 'example@email.com', + password: 'example-password', +}) +``` + +### Sign Up with email and password + +Creates a new user. + +```ts +const { signUp } = useAuth() + +await signUp({ + email: 'example@email.com', + password: 'example-password', +}) +``` + +### Sign Up with email and password and additional user metadata + +Creates a new user with additional user metadata. + +```ts +const { signUp } = useAuth() + +await signUp({ +email: 'example@email.com', + password: 'example-password', + options: { + data: { + first_name: 'John', + age: 27, + } + } +}) +``` + +### Sign Up with email and password and a redirect URL + +Creates a new user with a redirect URL. + +```ts +const { signUp } = useAuth() + +await signUp({ +email: 'example@email.com', + password: 'example-password', + options: { + emailRedirectTo: 'https://example.com/welcome' + } +}) +``` + +### Sign in a user with email and password + +Log in an existing user with an email and password or phone and password. + +* Requires either an email and password or a phone number and password. + +```ts +const { logIn } = useAuth() + +await logIn({ + authMethod: 'password', + email: 'example@email.com', + password: 'example-password', +}) +``` + +### Sign in a user through Passwordless/OTP + +Log in a user using magiclink or a one-time password (OTP). + +* Requires either an email or phone number. + +* This method is used for passwordless sign-ins where a OTP is sent to the user's email or phone number. + +```ts +const { logIn } = useAuth() + +await logIn({ + authMethod: 'otp', + email: 'example@email.com', + options: { + emailRedirectTo: 'https://example.com/welcome' + } +}) +``` + +### Sign in a user through OAuth + +Log in an existing user via a third-party provider. + +* This method is used for signing in using a third-party provider. + +* Supabase supports many different [third-party providers](https://supabase.com/docs/guides/auth#providers). + +```ts +const { logIn } = useAuth() + +await logIn({ + authMethod: 'oauth', + provider: 'github', +}) +``` + +### Sign in a user with IDToken + +Log in a user using IDToken. + +```ts +const { logIn } = useAuth() + +await logIn({ + authMethod: 'id_token', + provider: 'apple', + token: 'cortland-apple-id-token', +}) +``` + +### Sign in a user with SSO + +Log in a user using IDToken. + +```ts +const { logIn } = useAuth() + +await logIn({ + authMethod: 'sso', + providerId: 'sso-provider-identity-uuid', + domain: 'example.com', +}) +``` + +### Get Current User + +Gets the content of the current user set by API side authentication. + +```ts +const { currentUser } = useAuth() + +<p>{JSON.stringify({ currentUser })}</p> +``` + +### Get Current User Metadata + +Gets content of the current Supabase user session, i.e., `auth.getSession()`. + +```ts +const { userMetadata } = useAuth() + +<p>{JSON.stringify({ userMetadata })}</p> +``` + +### Sign out a user + +Inside a browser context, signOut() will remove the logged in user from the browser session and log them out - removing all items from localStorage and then trigger a "SIGNED_OUT" event. + +In order to use the signOut() method, the user needs to be signed in first. + +```ts +const { logOut } = useAuth() + +logOut() +``` + +### Verify and log in through OTP + +Log in a user given a User supplied OTP received via mobile. + +* The verifyOtp method takes in different verification types. If a phone number is used, the type can either be sms or phone_change. If an email address is used, the type can be one of the following: signup, magiclink, recovery, invite or email_change. + +* The verification type used should be determined based on the corresponding auth method called before verifyOtp to sign up / sign-in a user. + + +The RedwoodJS auth provider doesn't expose the `veriftyOtp` method from the Supabase SDK directly. + +Instead, since you always have access the the Supabase Auth client, you can access any method it exposes. + +So, in order to use the `verifyOtp` method, you would: + +```ts +const { client } = useAuth() + +useEffect(() => { + const { data, error } = await client.verifyOtp({ phone, token, type: 'sms'}) +}, [client]) +``` + +### Access the Supabase Auth Client + +Sometimes you may need to access the Supabase Auth client directly. + +```ts +const { client } = useAuth() +``` + +You can then use it to work with Supabase sessions, or auth events. + +When using in a React component, you'll have to put any method that needs an `await` in a `useEffect()`. + +### Retrieve a session + +Returns the session, refreshing it if necessary. The session returned can be null if the session is not detected which can happen in the event a user is not signed-in or has logged out. + +```ts +const { client } = useAuth() + +useEffect(() => { + const { data, error } = await client.getSession() +}, [client]) +``` + +### Listen to auth events + +Receive a notification every time an auth event happens. + +* Types of auth events: `SIGNED_IN`, `SIGNED_OUT`, `TOKEN_REFRESHED`, `USER_UPDATED`, `PASSWORD_RECOVERY` + +```ts +const { client } = useAuth() + +useEffect(() => { + const { data: { subscription } } = client.onAuthStateChange((event, session) => { + console.log(event, session) + }) + + return () => { + subscription.unsubscribe() + } +}, [client]) +``` diff --git a/docs/versioned_docs/version-7.0/auth/supertokens.md b/docs/versioned_docs/version-7.0/auth/supertokens.md new file mode 100644 index 000000000000..8b0b6b97ca8a --- /dev/null +++ b/docs/versioned_docs/version-7.0/auth/supertokens.md @@ -0,0 +1,119 @@ +--- +sidebar_label: SuperTokens +--- + +# SuperTokens Authentication + +To get started, run the setup command: + +```bash +yarn rw setup auth supertokens +``` + +This installs all the packages, writes all the files, and makes all the code modifications you need. + +:::info + +You may have noticed that in `api/src/functions/auth.ts` there's an import from `'supertokens-node/framework/awsLambda'`. This is fine, even if your app isn't running in a serverless environment like AWS Lambda. In "serverful" environments, Redwood automatically handles the translation between Fastify's request and reply objects and functions' AWS Lambda signature. + +::: + +For a detailed explanation of all the api- and web-side changes that aren't exclusive to SuperTokens, see the top-level [Authentication](../authentication.md) doc. +For now, let's focus on SuperTokens's side of things. + +When you run the setup command it configures your app to support both email+password logins as well as social auth logins (Apple, GitHub and Google). Working with those social auth logins does require quite a few environment variables. And SuperTokens itself needs a couple variables too. Thankfully SuperTokens makes this very easy to setup as they provide values we can use for testing. + +# Environment variables + +The environment variables have to be added either to your project's `.env` file (when running in development environment), or to the environment variables of your hosting provider (when running in production). + +## Base setup + +```bash +SUPERTOKENS_APP_NAME="Redwoodjs App" # this will be used in the email template for password reset or email verification emails. +SUPERTOKENS_JWKS_URL=http://localhost:8910/.redwood/functions/auth/jwt/jwks.json +SUPERTOKENS_CONNECTION_URI=https://try.supertokens.io # set to the correct connection uri +``` + +## Production setup + +Assuming that your web side is hosted on `https://myapp.com`: + +```bash +SUPERTOKENS_WEBSITE_DOMAIN=https://myapp.com +SUPERTOKENS_JWKS_URL=https://myapp.com/.redwood/functions/auth/jwt/jwks.json +``` + +## Managed Supertokens service setup + +```bash +SUPERTOKENS_API_KEY=your-api-key # The value can be omitted when self-hosting Supertokens +``` + +## Social login setup +The following environment variables have to be set up (depending on the social login options): + +```bash +SUPERTOKENS_APPLE_CLIENT_ID=4398792-io.supertokens.example.service +SUPERTOKENS_APPLE_SECRET_KEY_ID=7M48Y4RYDL +SUPERTOKENS_APPLE_SECRET_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgu8gXs+XYkqXD6Ala9Sf/iJXzhbwcoG5dMh1OonpdJUmgCgYIKoZIzj0DAQehRANCAASfrvlFbFCYqn3I2zeknYXLwtH30JuOKestDbSfZYxZNMqhF/OzdZFTV0zc5u5s3eN+oCWbnvl0hM+9IW0UlkdA\n-----END PRIVATE KEY----- +SUPERTOKENS_APPLE_SECRET_TEAM_ID=YWQCXGJRJL +SUPERTOKENS_GITHUB_CLIENT_ID=467101b197249757c71f +SUPERTOKENS_GITHUB_CLIENT_SECRET=e97051221f4b6426e8fe8d51486396703012f5bd +SUPERTOKENS_GOOGLE_CLIENT_ID=1060725074195-kmeum4crr01uirfl2op9kd5acmi9jutn.apps.googleusercontent.com +SUPERTOKENS_GOOGLE_CLIENT_SECRET=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 +``` + +## `redwood.toml` setup + +Make sure to modify `redwood.toml` to pass the required environment variables to the web side: + +```toml +[web] +... +includeEnvironmentVariables = [ + 'SUPERTOKENS_WEBSITE_DOMAIN', + 'SUPERTOKENS_API_DOMAIN', + 'SUPERTOKENS_API_GATEWAY_PATH', + 'SUPERTOKENS_APP_NAME' +] +``` + + +# Page setup + +Let's make sure: if this is a brand new project, generate a home page. +There we'll try to sign up by destructuring `signUp` from the `useAuth` hook (import that from `'src/auth'`). We'll also destructure and display `isAuthenticated` to see if it worked: + +``` +yarn rw g page home / +``` + +```tsx title="web/src/pages/HomePage.tsx" +import { useAuth } from 'src/auth' + +const HomePage = () => { + const { isAuthenticated, signUp } = useAuth() + + return ( + <> + {/* MetaTags, h1, paragraphs, etc. */} + + <p>{JSON.stringify({ isAuthenticated })}</p> + <button onClick={signUp}>sign up</button> + </> + ) +} + +export default HomePage +``` + +Clicking sign up should navigate you to `/auth` where SuperToken's default login/sign up UI is rendered. + +<img width="463" height="696" alt="SuperTokens default UI" src="https://user-images.githubusercontent.com/30793/215893664-d367eb3d-566e-4541-a01a-5772d95cc9c7.png" /> + +After you sign up, you should be redirected back to your Redwood app, and you should see `{"isAuthenticated":true}` on the page. + +## Troubleshooting + +If going to `http://localhost:8910/auth` results in the plain Javascript file being served instead of the expected auth page, rename the `web/src/auth.tsx` file to `web/src/authentication.tsx`, and update the imports (related to https://github.com/redwoodjs/redwood/issues/9740). diff --git a/docs/versioned_docs/version-7.0/authentication.md b/docs/versioned_docs/version-7.0/authentication.md new file mode 100644 index 000000000000..88506057eb2f --- /dev/null +++ b/docs/versioned_docs/version-7.0/authentication.md @@ -0,0 +1,203 @@ +--- +description: Set up an authentication provider +--- + +# Authentication + +Redwood has integrated auth end to end, from the web side to the api side. +On the web side, the router can protect pages via the `PrivateSet` component, and even restrict access at the role-level. +And if you'd prefer to work with the primitives, the `useAuth` hook exposes all the pieces to build the experience you want. + +Likewise, the api side is locked down by default: all SDLs are generated with the `@requireAuth` directive, ensuring that making things publicly available is something that you opt in to rather than out of. +You can also require auth anywhere in your Services, and even in your serverful or serverless functions. + +Last but not least, Redwood provides it's own self-hosted, full-featured auth provider: [dbAuth](./auth/dbauth.md). + +In this doc, we'll cover auth at a high level. +All auth providers share the same interface so the information here will be useful no matter which auth provider you use. + +## Official integrations + +Redwood has a simple API to integrate any auth provider you can think of. But to make it easier for you to get started, Redwood provides official integrations for some of the most popular auth providers out of the box: + +- [Auth0](./auth/auth0.md) +- [Azure Active Directory](./auth/azure.md) +- [Clerk](./auth/clerk.md) +- [Firebase](./auth/firebase.md) +- [Netlify](./auth/netlify.md) +- [Supabase](./auth/supabase.md) +- SuperTokens + +:::tip how to tell if an integration is official + +To tell if an integration is official, look for the `@redwoodjs` scope. +For example, Redwood's Auth0 integration comprises two npm packages: `@redwoodjs/auth-auth0-web` and `@redwoodjs/auth-auth0-api`. + +::: + +Other than bearing the `@redwoodjs` scope, the reason these providers are official is that we're committed to keeping them up to date. +You can set up any of them via the corresponding auth setup command: + +``` +yarn rw setup auth auth0 +``` + +## The API at a high-level + +We mentioned that Redwood has a simple API you can use to integrate any provider you want. +Whether you roll your own auth provider or choose one of Redwood's integrations, it's good to be familiar with it, so let's dive into it here. + +On the web side, there are two components that can be auth enabled: the `RedwoodApolloProvider` in `web/src/App.tsx` and the `Router` in `web/src/Routes.tsx`. +Both take a `useAuth` prop. If provided, they'll use this hook to get information about the app's auth state. The `RedwoodApolloProvider` uses it to get a token to include in every GraphQL request, and the `Router` uses it to determine if a user has access to private or role-restricted routes. + +When you set up an auth provider, the setup command makes a new file, `web/src/auth.ts`. This file's job is to create the `AuthProvider` component and the `useAuth` hook by integrating with the auth provider of your choice. Whenever you need access to the auth context, you'll import the `useAuth` hook from this file. The `RedwoodApolloProvider` and the `Router` are no exceptions: + +![web-side-auth](https://user-images.githubusercontent.com/32992335/208549951-469617d7-c798-4d9a-8a29-46efe23cca6a.png) + +Once auth is setup on the web side, every GraphQL request includes a JWT (JSON Web Token). +The api side needs a way of verifying and decoding this token if it's to do anything with it. +There are two steps to this process: + +- decoding the token +- mapping it into a user object + +The `createGraphQLHandler` function in `api/src/functions/graphql.ts` takes two props, `authDecoder` and `getCurrentUser`, for each of these steps (respectively): + +```ts title="api/src/functions/graphql.ts" +// highlight-next-line +import { authDecoder } from '@redwoodjs/auth-auth0-api' +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +// highlight-next-line +import { getCurrentUser } from 'src/lib/auth' +import { db } from 'src/lib/db' +import { logger } from 'src/lib/logger' + +export const handler = createGraphQLHandler({ + // highlight-start + authDecoder, + getCurrentUser, + // highlight-end + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +### Destructuring the `useAuth` hook + +That was auth at a high level. +Now for a few more details on something you'll probably use a lot, the `useAuth` hook. + +The `useAuth` hook provides a streamlined interface to your auth provider's client SDK. +Much of what the functions it returns do is self explanatory, but the options they take depend on the auth provider: + +| Name | Description | +| :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `client` | The client instance used in creating the auth provider. Most of the functions here use this under the hood | +| `currentUser` | An object containing information about the current user as set on the `api` side, or if the user isn't authenticated, `null` | +| `getToken` | Returns a JWT | +| `hasRole` | Determines if the current user is assigned a role like `"admin"` or assigned to any of the roles in an array | +| `isAuthenticated` | A boolean indicating whether or not the user is authenticated | +| `loading` | If the auth context is loading | +| `logIn` | Logs a user in | +| `logOut` | Logs a user out | +| `reauthenticate` | Refetch auth data and context. (This one is called internally and shouldn't be something you have to reach for often) | +| `signUp` | Signs a user up | +| `userMetadata` | An object containing the user's metadata (or profile information), fetched directly from an instance of the auth provider client. Or if the user isn't authenticated, `null` | + +### Protecting routes + +You can require that a user be authenticated to navigate to a route by wrapping it in the `PrivateSet` component. +An unauthenticated user will be redirected to the route specified in either component's `unauthenticated` prop: + +```tsx title="web/src/Routes.tsx" +import { Router, Route, PrivateSet } from '@redwoodjs/router' + +const Routes = () => { + return ( + <Router> + <Route path="/" page={HomePage} name="home" /> + <Route path="/login" page={LoginPage} name="login" /> + + // highlight-next-line + <PrivateSet unauthenticated="login"> + <Route path="/admin" page={AdminPage} name="admin" /> + <Route path="/secret-page" page={SecretPage} name="secret" /> + </PrivateSet> + </Router> + ) +} +``` + +You can also restrict access by role by passing a role or an array of roles to the `PrivateSet` component's `hasRole` prop: + +```tsx title="web/src/Routes.tsx" +import { Router, Route, PrivateSet } from '@redwoodjs/router' + +const Routes = () => { + return ( + <Router> + <Route path="/" page={HomePage} name="home" /> + <Route path="/login" page={LoginPage} name="login" /> + <Route path="/forbidden" page={ForbiddenPage} name="forbidden" /> + + <PrivateSet unauthenticated="login"> + <Route path="/secret-page" page={SecretPage} name="secret" /> + </PrivateSet> + + // highlight-next-line + <PrivateSet unauthenticated="forbidden" hasRole="admin"> + <Route path="/admin" page={AdminPage} name="admin" /> + </PrivateSet> + + // highlight-next-line + <PrivateSet unauthenticated="forbidden" hasRole={['author', 'editor']}> + <Route path="/posts" page={PostsPage} name="posts" /> + </PrivateSet> + </Router> + ) +} +``` + +### api-side currentUser + +We briefly mentioned that GraphQL requests include an `Authorization` header in every request when a user is authenticated. +The api side verifies and decodes the token in this header via the `authDecoder` function. +While information about the user is technically available at this point, it's still pretty raw. +You can map it into a real user object via the `getCurrentUser` function. +Both these functions are passed to the `createGraphQLHandler` function in `api/src/functions/graphql.ts`: + +```ts title="api/src/functions/graphql.ts" +export const handler = createGraphQLHandler({ + authDecoder, + getCurrentUser, + // ... +}) + +``` + +If you're using one of Redwood's official integrations, `authDecoder` comes from the corresponding integration package (in auth0's case, `@redwoodjs/auth-auth0-api`): + +```ts +import { authDecoder } from '@redwoodjs/auth-auth0-api' +``` + +If you're rolling your own, you'll have to write it yourself. See the [Custom Auth](./auth/custom.md#api-side) docs for an example. + +It's always up to you to write `getCurrentUser`, though the setup command will stub it out for you in `api/src/lib/auth.ts` with plenty of guidance. + +`getCurrentUser`'s return is made globally available in the api side's context via `context.currentUser` for convenience. + +### Locking down the GraphQL api + +Use the `requireAuth` and `skipAuth` [GraphQL directives](directives#secure-by-default-with-built-in-directives) to protect individual GraphQL calls. diff --git a/docs/versioned_docs/version-7.0/builds.md b/docs/versioned_docs/version-7.0/builds.md new file mode 100644 index 000000000000..6af668900a27 --- /dev/null +++ b/docs/versioned_docs/version-7.0/builds.md @@ -0,0 +1,37 @@ +--- +description: What happens when you build your app +--- +# Builds + +> ⚠ **Work in Progress** ⚠️ +> +> There's more to document here. In the meantime, you can check our [community forum](https://community.redwoodjs.com/search?q=yarn%20rw%20build) for answers. +> +> Want to contribute? Redwood welcomes contributions and loves helping people become contributors. +> You can edit this doc [here](https://github.com/redwoodjs/redwoodjs.com/blob/main/docs/builds.md). +> If you have any questions, just ask for help! We're active on the [forums](https://community.redwoodjs.com/c/contributing/9) and on [discord](https://discord.com/channels/679514959968993311/747258086569541703). + + +## API + +The api side of Redwood is transpiled by Babel into the `./api/dist` folder. + +### Steps on Netlify + +To emulate Netlify's build steps locally: + +```bash +yarn rw build api +cd api +yarn zip-it-and-ship-it dist/functions/ zipballs/ +``` + +Each lambda function in `./api/dist/functions` is parsed by zip-it-and-ship-it resulting in a zip file per lambda function that contains all the dependencies required for that lambda function. + +>Note: The `@netlify/zip-it-and-ship-it` package needs to be installed as a dev dependency in `api/`. Use the command `yarn workspace api add -D @netlify/zip-it-and-ship-it`. +>- You can learn more about the package [here](https://www.npmjs.com/package/@netlify/zip-it-and-ship-it). +>- For more information on AWS Serverless Deploy see these [docs](/docs/deploy/serverless). + +## Web + +The web side of Redwood is packaged by Webpack into the `./web/dist` folder. diff --git a/docs/versioned_docs/version-7.0/cells.md b/docs/versioned_docs/version-7.0/cells.md new file mode 100644 index 000000000000..0a7377cd6b54 --- /dev/null +++ b/docs/versioned_docs/version-7.0/cells.md @@ -0,0 +1,412 @@ +--- +description: Declarative data fetching with Cells +--- +# Cells + +Cells are a declarative approach to data fetching and one of Redwood's signature modes of abstraction. +By providing conventions around data fetching, Redwood can get in between the request and the response to do things like query optimization and more, all without you ever having to change your code. + +While it might seem like there's a lot of magic involved, all a Cell really does is execute a GraphQL query and manage its lifecycle. +The idea is that, by exporting named constants that declare what you want your UI to look like throughout a query's lifecycle, +Redwood can assemble these into a component template at build-time using a Babel plugin. +All without you having to write a single line of imperative code! + +## Generating a Cell + +You can generate a Cell with Redwood's Cell generator: + +```bash +yarn rw generate cell <name> +``` + +This creates a directory named `<name>Cell` in `web/src/components` with four files: + +| File | Description | +| :---------------------- | :------------------------------------------------------ | +| `<name>Cell.js` | The actual Cell | +| `<name>Cell.test.js` | Jest tests for each state of the Cell | +| `<name>Cell.stories.js` | Storybook stories for each state of the Cell | +| `<name>Cell.mock.js` | Mock data for both the Jest tests and Storybook stories | + +### Single Item Cell vs List Cell + +Sometimes you want a Cell that renders a single item and other times you want a Cell that renders a list. +Redwood's Cell generator can do both. + +First, it detects if `<name>` is singular or plural. +For example, to generate a Cell that renders a list of users, run `yarn rw generate cell users`. +Second, for irregular words whose singular and plural are the same, such as "equipment" or "pokemon", you can pass `--list` to tell Redwood to generate a list Cell explicitly: + +```bash +yarn rw generate cell equipment --list +``` + +## Cells in-depth + +Cells exports five constants: `QUERY`, `Loading` , `Empty` , `Failure` and `Success`. The root query in `QUERY` is the same as `<name>` so that, if you're generating a cell based on a model in your `schema.prisma`, you can get something out of the database right away. But there's a good chance you won't generate your Cell this way, so if you need to, make sure to change the root query. See the [Cells](tutorial/chapter2/cells.md#our-first-cell) section of the Tutorial for a great example of this. + +## Usage + +With Cells, you have a total of seven exports to work with: + +| Name | Type | Description | +| :------------ | :---------------- | :----------------------------------------------------------- | +| `QUERY` | `string,function` | The query to execute | +| `beforeQuery` | `function` | Lifecycle hook; prepares variables and options for the query | +| `isEmpty` | `function` | Lifecycle hook; decides if the Cell should render Empty | +| `afterQuery` | `function` | Lifecycle hook; sanitizes data returned from the query | +| `Loading` | `component` | If the request is in flight, render this component | +| `Empty` | `component` | If there's no data (`null` or `[]`), render this component | +| `Failure` | `component` | If something went wrong, render this component | +| `Success` | `component` | If the data has loaded, render this component | + +Only `QUERY` and `Success` are required. If you don't export `Empty`, empty results are sent to `Success`, and if you don't export `Failure`, error is output to the console. + +In addition to displaying the right component at the right time, Cells also funnel the right props to the right component. `Loading`, `Empty`, `Failure`, and `Success` all have access to the props passed down from the Cell in good ol' React fashion, and most of the `useQuery` hook's return as a prop called `queryResult`. In addition to all those props, `Empty` and `Success` also get the `data` returned from the query and an `updating` prop indicating whether the Cell is currently fetching new data. `Failure` also gets `updating` and exclusive access to `error` and `errorCode`. + +We mentioned above that Cells receive "most" of what's returned from the `useQuery` hook. You can see exactly what `useQuery` returns in Apollo Client's [API reference](https://www.apollographql.com/docs/react/api/react/hooks/#result). Again note that `error` and `data` get some special treatment. + +### QUERY + +`QUERY` can be a string or a function. If `QUERY` is a function, it has to return a valid GraphQL document. + +It's more-than ok to have more than one root query. Here's an example: + +```jsx {7-10} +export const QUERY = gql`{ + query { + posts { + id + title + } + authors { + id + name + } + } +} +``` + +So in this case, both `posts` and `authors` would be available to `Success`: + +```jsx +export const Success = ({ posts, authors }) => { + // ... +} +``` + +Normally queries have variables. Cells are setup to use any props they receive from their parent as variables (things are setup this way in `beforeQuery`). For example, here `BlogPostCell` takes a prop, `numberToShow`, so `numberToShow` is just available to your `QUERY`: + +```jsx {7} +import BlogPostsCell from 'src/components/BlogPostsCell' + +const HomePage = () => { + return ( + <div> + <h1>Home</h1> + <BlogPostsCell numberToShow={3} /> + </div> + ) +} + +export default HomePage +``` + +```jsx {2-3} +export const QUERY = gql` + query($numberToShow: Int!) { + posts(numberToShow: $numberToShow) { + id + title + } + } +` +``` + +This means you can think backwards about your Cell's props from your SDL: whatever the variables in your SDL are, that's what your Cell's props should be. + +### beforeQuery + +`beforeQuery` is a lifecycle hook. The best way to think about it is as a chance to configure [Apollo Client's `useQuery` hook](https://www.apollographql.com/docs/react/api/react/hooks#options). + +By default, `beforeQuery` gives any props passed from the parent component to `QUERY` so that they're available as variables for it. It'll also set the fetch policy to `'cache-and-network'` since we felt it matched the behavior users want most of the time: + +```jsx +export const beforeQuery = (props) => { + return { + variables: props, + fetchPolicy: 'cache-and-network' + } +} +``` + +For example, if you wanted to turn on Apollo's polling option, and prevent caching, you could export something like this (see Apollo's docs on [polling](https://www.apollographql.com/docs/react/data/queries/#polling) and [caching](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy)) + +```jsx +export const beforeQuery = (props) => { + return { variables: props, fetchPolicy: 'no-cache', pollInterval: 2500 } +} +``` + +You can also use `beforeQuery` to populate variables with data not included in the Cell's props (like from React's Context API or a global state management library). If you provide a `beforeQuery` function, the Cell will automatically change the type of its props to match the first argument of the function. + +```jsx +// The Cell will take no props: <Cell /> +export const beforeQuery = () => { + const { currentUser } = useAuth() + + return { + variables: { userId: currentUser.id } + } +} +``` + +```jsx +// The cell will take 1 prop named "word" that is a string: <Cell word="abc"> +export const beforeQuery = ({ word }: { word: string }) => { + return { + variables: { magicWord: word } + } +} +``` + +### isEmpty + +`isEmpty` is an optional lifecycle hook. It returns a boolean to indicate if the Cell should render empty. Use it to override the default check, which checks if the Cell's root fields are null or empty arrays. + +It receives two parameters: 1) the `data`, and 2) an object that has the default `isEmpty` function, named `isDataEmpty`, so that you can extend the default: + +```jsx +export const isEmpty = (data, { isDataEmpty }) => { + return isDataEmpty(data) || data?.blog?.status === 'hidden' +} +``` + +### afterQuery + +`afterQuery` is a lifecycle hook. It runs just before data gets to `Success`. +Use it to sanitize data returned from `QUERY` before it gets there. + +By default, `afterQuery` just returns the data as it is: + +### Loading + +If there's no cached data and the request is in flight, a Cell renders `Loading`. + +When you're developing locally, you can catch your Cell waiting to hear back for a moment if set your speed in the Inspector's **Network** tab to something like "Slow 3G". + +But why bother with Slow 3G when Redwood comes with Storybook? Storybook makes developing components like `Loading` (and `Failure`) a breeze. We don't have to put up with hacky workarounds like Slow 3G or intentionally breaking our app just to develop our components. + +### Empty + +A Cell renders this component if there's no data. +By no data, we mean if the response is 1) `null` or 2) an empty array (`[]`). + +### Failure + +A Cell renders this component if something went wrong. You can quickly see this in action if you add an untyped field to your `QUERY`: + +```jsx {6} +const QUERY = gql` + query { + posts { + id + title + unTypedField + } + } +` +``` + +But, like `Loading`, Storybook is probably a better place to develop this. + +<!-- In development, we have it so that errors blanket the page. +In production, failed cells won't break your app, they'll just be empty divs... --> + +In this example, we use the `errorCode` to conditionally render the error heading title, and we also use it for our translation string. +```jsx +export const Failure = ({ error, errorCode }: CellFailureProps) => { + const { t } = useTranslation() + return ( + <div style={{ color: 'red' }}> + {errorCode === 'NO_CONFIG' ? <h1>NO_CONFIG</h1> : <h1>ERROR</h1>} + Error: {error.message} - Code: {errorCode} - {t(`error.${errorCode}`)} + </div> + ) +} +``` + +### Success + +If everything went well, a Cell renders `Success`. + +As mentioned, Success gets exclusive access to the `data` prop. But if you try to destructure it from `props`, you'll notice that it doesn't exist. This is because Redwood adds a layer of convenience: Redwood spreads `data` into `Success` so that you can just destructure whatever data you were expecting from your `QUERY` directly. + +So, if you're querying for `posts` and `authors`, instead of doing: + +```jsx +export const Success = ({ data }) => { + const { posts, authors } = data + + // ... +} +``` + +Redwood lets you do: + +```jsx +export const Success = ({ posts, authors }) => { + // ... +} +``` + +Note that you can still pass any other props to `Success`. After all, it's just a React component. + +:::tip + +Looking for info on how TypeScript works with Cells? Check out the [Utility Types](typescript/utility-types.md#cells) doc. + +::: + +### When should I use a Cell? + +Whenever you want to fetch data. Let Redwood juggle what's displayed when. You just focus on what those things should look like. + +While you can use a Cell whenever you want to fetch data, it's important to note that you don't have to. You can do anything you want! For example, for one-off queries, there's always `useApolloClient`. This hook returns the client, which you can use to execute queries, among other things: + +```jsx +// In a react component... + +client = useApolloClient() + +client.query({ + query: gql` + ... + ` +}) +``` + +### Can I Perform a Mutation in a Cell? + +Absolutely. We do so in our [example todo app](https://github.com/redwoodjs/example-todo/blob/f29069c9dc89fa3734c6f99816442e14dc73dbf7/web/src/components/TodoListCell/TodoListCell.js#L26-L44). +We also don't think it's an anti-pattern to do so. Far from it—your cells might end up containing a lot of logic and really serve as the hub of your app in many ways. + +It's also important to remember that, besides exporting certain things with certain names, there aren't many rules around Cells—everything you can do in a regular component still goes. + +## How Does Redwood Know a Cell is a Cell? + +You just have to end a filename in "Cell" right? Well, while that's basically correct, there is one other thing you should know. + +Redwood looks for all files ending in "Cell" (so if you want your component to be a Cell, its filename does have to end in "Cell"), but if the file 1) doesn't export a const named `QUERY` and 2) has a default export, then it'll be skipped. + +When would you want to do this? If you just want a file to end in "Cell" for some reason. Otherwise, don't worry about it! + +<!-- Source: https://github.com/redwoodjs/redwood/pull/597 --> +<!-- Source: https://github.com/redwoodjs/redwood/pull/554 --> +<!-- Code: https://github.com/redwoodjs/redwood/blob/60cb628d5f369d62607fa2f47c694d9a5c00540d/packages/core/config/babel-preset.js#L132-L136 --> +<!-- Code: https://github.com/redwoodjs/redwood/blob/60cb628d5f369d62607fa2f47c694d9a5c00540d/packages/core/src/babel-plugin-redwood-cell.ts#L58-L60 --> + +## Advanced Example: Implementing a Cell Yourself + +If we didn't do all that build-time stuff for you, how might you go about implementing a Cell yourself? + +Consider the [example from the Tutorial](tutorial/chapter2/cells.md#our-first-cell) where we're fetching posts: + +```jsx +export const QUERY = gql` + query { + posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>No posts yet!</div> + +export const Failure = ({ error }) => ( + <div>Error loading posts: {error.message}</div> +) + +export const Success = ({ posts }) => { + return posts.map((post) => ( + <article> + <h2>{post.title}</h2> + <div>{post.body}</div> + </article> + )) +} +``` + +And now let's say that Babel isn't going to come along and assemble our exports. What might we do? + +We'd probably do something like this: + +<!-- {35,39,44,47,49} --> +```jsx +const QUERY = gql` + query { + posts { + id + title + body + createdAt + } + } +` + +const Loading = () => <div>Loading...</div> + +const Empty = () => <div>No posts yet!</div> + +const Failure = ({ error }) => ( + <div>Error loading posts: {error.message}</div> +) + +const Success = ({ posts }) => { + return posts.map((post) => ( + <article> + <h2>{post.title}</h2> + <div>{post.body}</div> + </article> + )) +} + +const isEmpty = (data) => { + return isDataNull(data) || isDataEmptyArray(data) +} + +export const Cell = () => { + return ( + <Query query={QUERY}> + {({ error, loading, data }) => { + if (error) { + if (Failure) { + return <Failure error={error} /> + } else { + console.error(error) + } + } else if (loading) { + return <Loading /> + } else if (data) { + if (typeof Empty !== 'undefined' && isEmpty(data)) { + return <Empty /> + } else { + return <Success {...data} /> + } + } else { + throw 'Cannot render Cell: graphQL success but `data` is null' + } + }} + </Query> + ) +} +``` + +That's a lot of code. A lot of imperative code too. + +We're basically just dumping the contents of [createCell.tsx](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/components/cell/createCell.tsx) into this file. Can you imagine having to do this every time you wanted to fetch data that might be delayed in responding? Yikes. diff --git a/docs/versioned_docs/version-7.0/cli-commands.md b/docs/versioned_docs/version-7.0/cli-commands.md new file mode 100644 index 000000000000..ca8e967aadbd --- /dev/null +++ b/docs/versioned_docs/version-7.0/cli-commands.md @@ -0,0 +1,2285 @@ +--- +description: A comprehensive reference of Redwood's CLI +--- + +# Command Line Interface + +The following is a comprehensive reference of the Redwood CLI. You can get a glimpse of all the commands by scrolling the aside to the right. + +The Redwood CLI has two entry-point commands: + +1. **redwood** (alias `rw`), which is for developing an application, and +2. **redwood-tools** (alias `rwt`), which is for contributing to the framework. + +This document covers the `redwood` command . For `redwood-tools`, see [Contributing](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md#cli-reference-redwood-tools) in the Redwood repo. + +**A Quick Note on Syntax** + +We use [yargs](http://yargs.js.org/) and borrow its syntax here: + +``` +yarn redwood generate page <name> [path] --option +``` + +- `redwood g page` is the command. +- `<name>` and `[path]` are positional arguments. + - `<>` denotes a required argument. + - `[]` denotes an optional argument. +- `--option` is an option. + +Every argument and option has a type. Here `<name>` and `[path]` are strings and `--option` is a boolean. + +You'll also sometimes see arguments with trailing `..` like: + +``` +yarn redwood build [side..] +``` + +The `..` operator indicates that the argument accepts an array of values. See [Variadic Positional Arguments](https://github.com/yargs/yargs/blob/master/docs/advanced.md#variadic-positional-arguments). + +## create redwood-app + +Create a Redwood project using the yarn create command: + +``` +yarn create redwood-app <project directory> [option] +``` + +| Arguments & Options | Description | +| :--------------------- | :---------------------------------------------------------------------------------------------------------------------- | +| `project directory` | Specify the project directory [Required] | +| `--yarn-install` | Enables the yarn install step and version-requirement checks. You can pass `--no-yarn-install` to disable this behavior | +| `--typescript`, `--ts` | Generate a TypeScript project. JavaScript by default | +| `--overwrite` | Create the project even if the specified project directory isn't empty | +| `--no-telemetry` | Disable sending telemetry events for this create command and all Redwood CLI commands: https://telemetry.redwoodjs.com | +| `--yarn1` | Use yarn 1 instead of yarn 3 | +| `--git-init`, `--git` | Initialize a git repo during the install process, disabled by default | + +If you run into trouble during the yarn install step, which may happen if you're developing on an external drive and in other miscellaneous scenarios, try the `--yarn1` flag: + +``` +yarn create redwood-app my-redwood-project --yarn1 +``` + +## build + +Build for production. + +```bash +yarn redwood build [side..] +``` + +We use Babel to transpile the api side into `./api/dist` and Webpack to package the web side into `./web/dist`. + +| Arguments & Options | Description | +| :------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `side` | Which side(s) to build. Choices are `api` and `web`. Defaults to `api` and `web` | +| `--verbose, -v` | Print more information while building | + +#### Usage + +See [Builds](builds.md). + +#### Example + +Running `yarn redwood build` without any arguments generates the Prisma client and builds both sides of your project: + +```bash +~/redwood-app$ yarn redwood build +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood build + ✔ Generating the Prisma client... + ✔ Building "api"... + ✔ Building "web"... +Done in 17.37s. +``` + +Files are output to each side's `dist` directory: + +```plaintext {2,6} +├── api +│ ├── dist +│ ├── prisma +│ └── src +└── web + ├── dist + ├── public + └── src +``` + +## check (alias diagnostics) + +Get structural diagnostics for a Redwood project (experimental). + +``` +yarn redwood check +``` + +#### Example + +```bash +~/redwood-app$ yarn redwood check +yarn run v1.22.4 +web/src/Routes.js:14:5: error: You must specify a 'notfound' page +web/src/Routes.js:14:19: error: Duplicate Path +web/src/Routes.js:15:19: error: Duplicate Path +web/src/Routes.js:17:40: error: Page component not found +web/src/Routes.js:17:19: error (INVALID_ROUTE_PATH_SYNTAX): Error: Route path contains duplicate parameter: "/{id}/{id}" +``` + +## console (alias c) + +Launch an interactive Redwood shell (experimental): + +- This has not yet been tested on Windows. +- The Prisma Client must be generated _prior_ to running this command, e.g. `yarn redwood prisma generate`. This is a known issue. + +``` +yarn redwood console +``` + +Right now, you can only use the Redwood console to interact with your database (always with `await`): + +#### Example + +```bash +~/redwood-app$ yarn redwood console +yarn run v1.22.4 +> await db.user.findMany() +> [ { id: 1, email: 'tom@redwoodjs.com', name: 'Tom' } ] +``` + +## data-migrate + +Data migration tools. + +```bash +yarn redwood data-migrate <command> +``` + +| Command | Description | +| :-------- | :------------------------------------------------------------------------------------------ | +| `install` | Appends `DataMigration` model to `schema.prisma`, creates `api/db/dataMigrations` directory | +| `up` | Executes outstanding data migrations | + +### data-migrate install + +- Appends a `DataMigration` model to `schema.prisma` for tracking which data migrations have already run. +- Creates a DB migration using `yarn redwood prisma migrate dev --create-only create_data_migrations`. +- Creates `api/db/dataMigrations` directory to contain data migration scripts + +```bash +yarn redwood data-migrate install +``` + +### data-migrate up + +Executes outstanding data migrations against the database. Compares the list of files in `api/db/dataMigrations` to the records in the `DataMigration` table in the database and executes any files not present. + +If an error occurs during script execution, any remaining scripts are skipped and console output will let you know the error and how many subsequent scripts were skipped. + +```bash +yarn redwood data-migrate up +``` + +## dev + +Start development servers for api and web. + +```bash +yarn redwood dev [side..] +``` + +`yarn redwood dev api` starts the Redwood dev server and `yarn redwood dev web` starts the Webpack dev server with Redwood's config. + +| Argument | Description | +| :----------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `side` | Which dev server(s) to start. Choices are `api` and `web`. Defaults to `api` and `web` | +| `--forward, --fwd` | String of one or more Vite Dev Server config options. See example usage below | + +#### Usage + +If you're only working on your sdl and services, you can run just the api server to get GraphQL Playground on port 8911: + +```bash +~/redwood-app$ yarn redwood dev api +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood dev api +$ /redwood-app/node_modules/.bin/dev-server +15:04:51 api | Listening on http://localhost:8911 +15:04:51 api | Watching /home/dominic/projects/redwood/redwood-app/api +15:04:51 api | +15:04:51 api | Now serving +15:04:51 api | +15:04:51 api | ► http://localhost:8911/graphql/ +``` + +Using `--forward` (alias `--fwd`), you can pass one or more Webpack Dev Server [config options](https://webpack.js.org/configuration/dev-server/). The following will run the dev server, set the port to `1234`, and disable automatic browser opening. + +```bash +~/redwood-app$ yarn redwood dev --fwd="--port=1234 --open=false" +``` + +You may need to access your dev application from a different host, like your mobile device or an SSH tunnel. To resolve the “Invalid Host Header” message, run the following: + +```bash +~/redwood-app$ yarn redwood dev --fwd="--allowed-hosts all" +``` + +For the full list of Webpack Dev Server settings, see [this documentation](https://webpack.js.org/configuration/dev-server/). + +For the full list of Server Configuration settings, see [this documentation](app-configuration-redwood-toml.md#api). + +## deploy + +Deploy your redwood project to a hosting provider target. + +**Netlify, Vercel, and Render** + +For hosting providers that auto deploy from Git, the deploy command runs the set of steps to build, apply production DB changes, and apply data migrations. In this context, it is often referred to as a Build Command. _Note: for Render, which uses traditional infrastructure, the command also starts Redwood's api server._ + +**AWS** + +This command runs the steps to both build your project _and_ deploy it to AWS. + +``` +yarn redwood deploy <target> +``` + +| Commands | Description | +| :---------------------------- | :--------------------------------------- | +| `serverless ` | Deploy to AWS using Serverless framework | +| `netlify [...commands]` | Build command for Netlify deploy | +| `render <side> [...commands]` | Build command for Render deploy | +| `vercel [...commands]` | Build command for Vercel deploy | + +### deploy serverless + +Deploy to AWS CloudFront and Lambda using [Serverless](https://www.serverless.com/) framework + +``` +yarn redwood deploy serverless +``` + +| Options & Arguments | Description | +| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------ | +| `--side` | which Side(s)to deploy [choices: "api", "web"] [default: "web","api"] | +| `--stage` | serverless stage, see [serverless stage docs](https://www.serverless.com/blog/stages-and-environments) [default: "production"] | +| `--pack-only` | Only package the build for deployment | +| `--first-run` | Use this flag the first time you deploy. The first deploy wizard will walk you through configuring your web side to connect to the api side | + + +### deploy netlify + +Build command for Netlify deploy + +``` +yarn redwood deploy netlify +``` + +| Options | Description | +| :--------------------- | :-------------------------------------------------- | +| `--build` | Build for production [default: "true"] | +| `--prisma` | Apply database migrations [default: "true"] | +| `--data-migrate, --dm` | Migrate the data in your database [default: "true"] | + +#### Example +The following command will build, apply Prisma DB migrations, and skip data migrations. + +``` +yarn redwood deploy netlify --no-data-migrate +``` + +:::warning +While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. + +The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. + +Therefore, please follow the [instructions in the Tutorial](tutorial/chapter4/deployment.md#netlify) to sync your GitHub (or other compatible source control service) repository with Netlify and allow their build and deploy system to manage deployments. + +The [Netlify CLI](https://cli.netlify.com) still works well for [linking your project to your site](https://cli.netlify.com/commands/link), testing local builds and also using their [dev](https://cli.netlify.com/commands/dev) or [dev --live](https://cli.netlify.com/commands/dev) to share your local dev server via a tunnel. +::: + +### deploy render + +Build (web) and Start (api) command for Render deploy. (For usage instructions, see the Render [Deploy Redwood](https://render.com/docs/deploy-redwood) doc.) + +``` +yarn redwood deploy render <side> +``` + +| Options & Arguments | Description | +| :--------------------- | :-------------------------------------------------- | +| `side` | select side to build [choices: "api", "web"] | +| `--prisma` | Apply database migrations [default: "true"] | +| `--data-migrate, --dm` | Migrate the data in your database [default: "true"] | +| `--serve` | Run server for api in production [default: "true"] | + +#### Example +The following command will build the Web side for static-site CDN deployment. + +``` +yarn redwood deploy render web +``` + +The following command will apply Prisma DB migrations, run data migrations, and start the api server. + +``` +yarn redwood deploy render api +``` + +### deploy vercel + +Build command for Vercel deploy + +``` +yarn redwood deploy vercel +``` + +| Options | Description | +| :--------------------- | :-------------------------------------------------- | +| `--build` | Build for production [default: "true"] | +| `--prisma` | Apply database migrations [default: "true"] | +| `--data-migrate, --dm` | Migrate the data in your database [default: "true"] | + +#### Example +The following command will build, apply Prisma DB migrations, and skip data migrations. + +``` +yarn redwood deploy vercel --no-data-migrate +``` + +## destroy (alias d) + +Rollback changes made by the generate command. + +``` +yarn redwood destroy <type> +``` + +| Command | Description | +| :------------------- | :------------------------------------------------------------------------------ | +| `cell <name>` | Destroy a cell component | +| `component <name>` | Destroy a component | +| `function <name>` | Destroy a Function | +| `layout <name>` | Destroy a layout component | +| `page <name> [path]` | Destroy a page and route component | +| `scaffold <model>` | Destroy pages, SDL, and Services files based on a given DB schema Model | +| `sdl <model>` | Destroy a GraphQL schema and service component based on a given DB schema Model | +| `service <name>` | Destroy a service component | +| `directive <name>` | Destroy a directive | + +## exec + +Execute scripts generated by [`yarn redwood generate script <name>`](#generate-script) to run one-off operations, long-running jobs, or utility scripts. + +#### Usage + +You can pass any flags to the command and use them within your script: + +``` +❯ yarn redwood exec syncStripeProducts foo --firstParam 'hello' --two 'world' + +[18:13:56] Generating Prisma client [started] +[18:13:57] Generating Prisma client [completed] +[18:13:57] Running script [started] +:: Executing script with args :: +{ _: [ 'exec', 'foo' ], firstParam: 'hello', two: 'world', '$0': 'rw' } +[18:13:58] Running script [completed] +✨ Done in 4.37s. +``` + +**Examples of CLI scripts:** + +- One-off scripts—such as syncing your Stripe products to your database +- A background worker you can off-load long running tasks +- Custom seed scripts for your application during development + +See [this how to](how-to/background-worker.md) for an example of using exec to run a background worker. + +## experimental (alias exp) + +Set up and run experimental features. + +Some caveats: +- these features do not follow SemVer (may be breaking changes in minor and patch releases) +- these features may be deprecated or removed (anytime) +- your feedback is wanted and necessary! + +For more information, including details about specific features, see this Redwood Forum category: +[Experimental Features](https://community.redwoodjs.com/c/experimental-features/25) + +**Available Experimental Features** +View all that can be _set up_: +``` +yarn redwood experimental --help +``` + +## generate (alias g) + +Save time by generating boilerplate code. + +``` +yarn redwood generate <type> +``` + +Some generators require that their argument be a model in your `schema.prisma`. When they do, their argument is named `<model>`. + +| Command | Description | +| ---------------------- | ----------------------------------------------------------------------------------------------------- | +| `cell <name>` | Generate a cell component | +| `component <name>` | Generate a component component | +| `dataMigration <name>` | Generate a data migration component | +| `dbAuth` | Generate sign in, sign up and password reset pages for dbAuth | +| `deploy <provider>` | Generate a deployment configuration | +| `function <name>` | Generate a Function | +| `layout <name>` | Generate a layout component | +| `page <name> [path]` | Generate a page component | +| `scaffold <model>` | Generate Pages, SDL, and Services files based on a given DB schema Model. Also accepts `<path/model>` | +| `sdl <model>` | Generate a GraphQL schema and service object | +| `secret` | Generate a secret key using a cryptographically-secure source of entropy | +| `service <name>` | Generate a service component | +| `types` | Generate types and supplementary code | +| `script <name>` | Generate a script that can use your services/libs to execute with `redwood exec script <name>` | + +### TypeScript generators + +If your project is configured for TypeScript (see the [TypeScript docs](typescript/index)), the generators will automatically detect and generate `.ts`/`.tsx` files for you + +**Undoing a Generator with a Destroyer** + +Most generate commands (i.e., everything but `yarn redwood generate dataMigration`) can be undone by their corresponding destroy command. For example, `yarn redwood generate cell` can be undone with `yarn redwood destroy cell`. + +### generate cell + +Generate a cell component. + +```bash +yarn redwood generate cell <name> +``` + +Cells are signature to Redwood. We think they provide a simpler and more declarative approach to data fetching. + +| Arguments & Options | Description | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | Name of the cell | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--query` | Use this flag to specify a specific name for the GraphQL query. The query name must be unique | +| `--list` | Use this flag to generate a list cell. This flag is needed when dealing with irregular words whose plural and singular is identical such as equipment or pokemon | +| `--tests` | Generate test files [default: true] | +| `--stories` | Generate Storybook files [default: true] | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +The cell generator supports both single items and lists. See the [Single Item Cell vs List Cell](cells.md#single-item-cell-vs-list-cell) section of the Cell documentation. + +See the [Cells](tutorial/chapter2/cells.md) section of the Tutorial for usage examples. + +**Destroying** + +``` +yarn redwood destroy cell <name> +``` + +#### Example + +Generating a user cell: + +```bash +~/redwood-app$ yarn redwood generate cell user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g cell user + ✔ Generating cell files... + ✔ Writing `./web/src/components/UserCell/UserCell.test.js`... + ✔ Writing `./web/src/components/UserCell/UserCell.js`... +Done in 1.00s. +``` + +A cell defines and exports four constants: `QUERY`, `Loading`, `Empty`, `Failure`, and `Success`: + +```jsx title="./web/src/components/UserCell/UserCell.js" +export const QUERY = gql` + query { + user { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => <div>Error: {error.message}</div> + +export const Success = ({ user }) => { + return JSON.stringify(user) +} +``` + +### generate component + +Generate a component. + +```bash +yarn redwood generate component <name> +``` + +Redwood loves function components and makes extensive use of React Hooks, which are only enabled in function components. + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------ | +| `name` | Name of the component | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--tests` | Generate test files [default: true] | +| `--stories` | Generate Storybook files [default: true] | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +**Destroying** + +``` +yarn redwood destroy component <name> +``` + +#### Example + +Generating a user component: + +```bash +~/redwood-app$ yarn redwood generate component user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g component user + ✔ Generating component files... + ✔ Writing `./web/src/components/User/User.test.js`... + ✔ Writing `./web/src/components/User/User.js`... +Done in 1.02s. +``` + +The component will export some jsx telling you where to find it. + +```jsx title="./web/src/components/User/User.js" +const User = () => { + return ( + <div> + <h2>{'User'}</h2> + <p>{'Find me in ./web/src/components/User/User.js'}</p> + </div> + ) +} + +export default User +``` + +### generate dataMigration + +Generate a data migration script. + +``` +yarn redwood generate dataMigration <name> +``` + +Creates a data migration script in `api/db/dataMigrations`. + +| Arguments & Options | Description | +| :------------------ | :----------------------------------------------------------------------- | +| `name` | Name of the data migration, prefixed with a timestamp at generation time | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +See the [Data Migration](data-migrations.md) docs. + +#### Usage + +See the [Deploy](/docs/deploy/introduction) docs. + +### generate dbAuth + +Generate log in, sign up, forgot password and password reset pages for dbAuth + +``` +yarn redwood generate dbAuth +``` + +| Arguments & Options | Description | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `--username-label` | The label to give the username field on the auth forms, e.g. "Email". Defaults to "Username". If not specified you will be prompted | +| `--password-label` | The label to give the password field on the auth forms, e.g. "Secret". Defaults to "Password". If not specified you will be prompted | +| `--webAuthn` | Whether or not to add webAuthn support to the log in page. If not specified you will be prompted | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +If you don't want to create your own log in, sign up, forgot password and +password reset pages from scratch you can use this generator. The pages will be +available at /login, /signup, /forgot-password, and /reset-password. Check the +post-install instructions for one change you need to make to those pages: where +to redirect the user to once their log in/sign up is successful. + +If you'd rather create your own, you might want to start from the generated +pages anyway as they'll contain the other code you need to actually submit the +log in credentials or sign up fields to the server for processing. + +### generate directive + +Generate a directive. + +```bash +yarn redwood generate directive <name> +``` + +| Arguments & Options | Description | +| -------------------- | --------------------------------------------------------------------- | +| `name` | Name of the directive | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files (defaults to your projects language target) | +| `--type` | Directive type [Choices: "validator", "transformer"] | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +See [Redwood Directives](directives.md). + +**Destroying** + +``` +yarn redwood destroy directive <name> +``` + +#### Example + +Generating a `myDirective` directive using the interactive command: + +```bash +yarn rw g directive myDirective + +? What type of directive would you like to generate? › - Use arrow-keys. Return to submit. +❯ Validator - Implement a validation: throw an error if criteria not met to stop execution + Transformer - Modify values of fields or query responses +``` + +### generate function + +Generate a Function. + +``` +yarn redwood generate function <name> +``` + +Not to be confused with Javascript functions, Capital-F Functions are meant to be deployed to serverless endpoints like AWS Lambda. + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------ | +| `name` | Name of the function | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +See the [Custom Function](how-to/custom-function.md) how to. + +**Destroying** + +``` +yarn redwood destroy function <name> +``` + +#### Example + +Generating a user function: + +```bash +~/redwood-app$ yarn redwood generate function user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g function user + ✔ Generating function files... + ✔ Writing `./api/src/functions/user.js`... +Done in 16.04s. +``` + +Functions get passed `context` which provides access to things like the current user: + +```jsx title="./api/src/functions/user.js" +export const handler = async (event, context) => { + return { + statusCode: 200, + body: `user function`, + } +} +``` + +Now if we run `yarn redwood dev api`: + +```plaintext {11} +~/redwood-app$ yarn redwood dev api +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood dev api +$ /redwood-app/node_modules/.bin/dev-server +17:21:49 api | Listening on http://localhost:8911 +17:21:49 api | Watching /home/dominic/projects/redwood/redwood-app/api +17:21:49 api | +17:21:49 api | Now serving +17:21:49 api | +17:21:49 api | ► http://localhost:8911/graphql/ +17:21:49 api | ► http://localhost:8911/user/ +``` + +### generate layout + +Generate a layout component. + +```bash +yarn redwood generate layout <name> +``` + +Layouts wrap pages and help you stay DRY. + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------ | +| `name` | Name of the layout | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--tests` | Generate test files [default: true] | +| `--stories` | Generate Storybook files [default: true] | +| `--skipLink` | Generate a layout with a skip link [default: false] | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +See the [Layouts](tutorial/chapter1/layouts.md) section of the tutorial. + +**Destroying** + +``` +yarn redwood destroy layout <name> +``` + +#### Example + +Generating a user layout: + +```bash +~/redwood-app$ yarn redwood generate layout user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g layout user + ✔ Generating layout files... + ✔ Writing `./web/src/layouts/UserLayout/UserLayout.test.js`... + ✔ Writing `./web/src/layouts/UserLayout/UserLayout.js`... +Done in 1.00s. +``` + +A layout will just export its children: + +```jsx title="./web/src/layouts/UserLayout/UserLayout.test.js" +const UserLayout = ({ children }) => { + return <>{children}</> +} + +export default UserLayout +``` + +### generate model + +Generate a RedwoodRecord model. + +```bash +yarn redwood generate model <name> +``` + +| Arguments & Options | Description | +| ------------------- | --------------------------------------------------- | +| `name` | Name of the model (in schema.prisma) | +| `--force, -f` | Overwrite existing files | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +See the [RedwoodRecord docs](redwoodrecord.md). + +#### Example + +```bash +~/redwood-app$ yarn redwood generate model User +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g model User + ✔ Generating model file... + ✔ Successfully wrote file `./api/src/models/User.js` + ✔ Parsing datamodel, generating api/src/models/index.js... + + Wrote /Users/rob/Sites/redwoodjs/redwood_record/.redwood/datamodel.json + Wrote /Users/rob/Sites/redwoodjs/redwood_record/api/src/models/index.js + +✨ Done in 3.74s. +``` + +Generating a model automatically runs `yarn rw record init` as well. + +### generate page + +Generates a page component and updates the routes. + +```bash +yarn redwood generate page <name> [path] +``` + +`path` can include a route parameter which will be passed to the generated +page. The syntax for that is `/path/to/page/{routeParam}/more/path`. You can +also specify the type of the route parameter if needed: `{routeParam:Int}`. If +`path` isn't specified, or if it's just a route parameter, it will be derived +from `name` and the route parameter, if specified, will be added to the end. + +This also updates `Routes.js` in `./web/src`. + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------ | +| `name` | Name of the page | +| `path` | URL path to the page. Defaults to `name` | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--tests` | Generate test files [default: true] | +| `--stories` | Generate Storybook files [default: true] | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +**Destroying** + +``` +yarn redwood destroy page <name> [path] +``` + +**Examples** + +Generating a home page: + +```plaintext +~/redwood-app$ yarn redwood generate page home / +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g page home / + ✔ Generating page files... + ✔ Writing `./web/src/pages/HomePage/HomePage.test.js`... + ✔ Writing `./web/src/pages/HomePage/HomePage.js`... + ✔ Updating routes file... +Done in 1.02s. +``` + +The page returns jsx telling you where to find it: + +```jsx title="./web/src/pages/HomePage/HomePage.js" +const HomePage = () => { + return ( + <div> + <h1>HomePage</h1> + <p>Find me in ./web/src/pages/HomePage/HomePage.js</p> + </div> + ) +} + +export default HomePage +``` + +And the route is added to `Routes.js`: + +```jsx {6} title="./web/src/Routes.js" +const Routes = () => { + return ( + <Router> + <Route path="/" page={HomePage} name="home" /> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} +``` + +Generating a page to show quotes: + +```plaintext +~/redwood-app$ yarn redwood generate page quote {id} +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g page quote {id} + ✔ Generating page files... + ✔ Writing `./web/src/pages/QuotePage/QuotePage.stories.js`... + ✔ Writing `./web/src/pages/QuotePage/QuotePage.test.js`... + ✔ Writing `./web/src/pages/QuotePage/QuotePage.js`... + ✔ Updating routes file... +Done in 1.02s. +``` + +The generated page will get the route parameter as a prop: + +```jsx {5,12,14} title="./web/src/pages/QuotePage/QuotePage.js" +import { Link, routes } from '@redwoodjs/router' + +const QuotePage = ({ id }) => { + return ( + <> + <h1>QuotePage</h1> + <p>Find me in "./web/src/pages/QuotePage/QuotePage.js"</p> + <p> + My default route is named "quote", link to me with ` + <Link to={routes.quote({ id: 42 })}>Quote 42</Link>` + </p> + <p>The parameter passed to me is {id}</p> + </> + ) +} + +export default QuotePage +``` + +And the route is added to `Routes.js`, with the route parameter added: + +```jsx {6} title="./web/src/Routes.js" +const Routes = () => { + return ( + <Router> + <Route path="/quote/{id}" page={QuotePage} name="quote" /> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} +``` +### generate realtime + +Generate a boilerplate subscription or live query used with RedwoodJS Realtime. + +```bash +yarn redwood generate realtime <name> +``` + +| Arguments & Options | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | Name of the realtime event to setup.post` | +| `-t, --type` | Choices: `liveQuery`, `subscription`. Optional. If not provided, you will be prompted to select. +| `--force, -f` | Overwrite existing files + + +#### Usage + +See Realtime for more information on how to [setup RedwoodJS Realtime](#setup-realtime) and use Live Queries, and Subscriptions. + +**Examples** + +Generate a live query. + +```bash +~/redwood-app$ yarn rw g realtime NewLiveQuery +? What type of realtime event would you like to create? › - Use arrow-keys. Return to submit. +❯ Live Query + Create a Live Query to watch for changes in data + Subscription + +✔ What type of realtime event would you like to create? › Live Query +✔ Checking for realtime environment prerequisites ... +✔ Adding newlivequery example live query ... +✔ Generating types ... +``` + +Generate a subscription. + +```bash +~/redwood-app$ yarn rw g realtime NewSub +? What type of realtime event would you like to create? › - Use arrow-keys. Return to submit. + Live Query +❯ Subscription - Create a Subscription to watch for events + +✔ What type of realtime event would you like to create? › Subscription +✔ Checking for realtime environment prerequisites ... +✔ Adding newsub example subscription ... +✔ Generating types ... +``` + + +### generate scaffold + +Generate Pages, SDL, and Services files based on a given DB schema Model. Also accepts `<path/model>`. + +```bash +yarn redwood generate scaffold <model> +``` + +A scaffold quickly creates a CRUD for a model by generating the following files and corresponding routes: + +- sdl +- service +- layout +- pages +- cells +- components + +The content of the generated components is different from what you'd get by running them individually. + +| Arguments & Options | Description | +| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Model to scaffold. You can also use `<path/model>` to nest files by type at the given path directory (or directories). For example, `redwood g scaffold admin/post` | +| `--docs` | Use or set to `true` to generated comments in SDL to use in self-documentating your app's GraphQL API. See: [Self-Documenting GraphQL API](./graphql.md#self-documenting-graphql-api) [default:false] | +| `--force, -f` | Overwrite existing files | +| `--tailwind` | Generate TailwindCSS version of scaffold.css (automatically set to `true` if TailwindCSS config exists) | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +#### Usage + +See [Creating a Post Editor](tutorial/chapter2/getting-dynamic.md#creating-a-post-editor). + +**Nesting of Components and Pages** + +By default, redwood will nest the components and pages in a directory named as per the model. For example (where `post` is the model): +`yarn rw g scaffold post` +will output the following files, with the components and pages nested in a `Post` directory: + +```plaintext {9-20} + √ Generating scaffold files... + √ Successfully wrote file `./api/src/graphql/posts.sdl.js` + √ Successfully wrote file `./api/src/services/posts/posts.js` + √ Successfully wrote file `./api/src/services/posts/posts.scenarios.js` + √ Successfully wrote file `./api/src/services/posts/posts.test.js` + √ Successfully wrote file `./web/src/layouts/PostsLayout/PostsLayout.js` + √ Successfully wrote file `./web/src/pages/Post/EditPostPage/EditPostPage.js` + √ Successfully wrote file `./web/src/pages/Post/PostPage/PostPage.js` + √ Successfully wrote file `./web/src/pages/Post/PostsPage/PostsPage.js` + √ Successfully wrote file `./web/src/pages/Post/NewPostPage/NewPostPage.js` + √ Successfully wrote file `./web/src/components/Post/EditPostCell/EditPostCell.js` + √ Successfully wrote file `./web/src/components/Post/Post/Post.js` + √ Successfully wrote file `./web/src/components/Post/PostCell/PostCell.js` + √ Successfully wrote file `./web/src/components/Post/PostForm/PostForm.js` + √ Successfully wrote file `./web/src/components/Post/Posts/Posts.js` + √ Successfully wrote file `./web/src/components/Post/PostsCell/PostsCell.js` + √ Successfully wrote file `./web/src/components/Post/NewPost/NewPost.js` + √ Adding layout import... + √ Adding set import... + √ Adding scaffold routes... + √ Adding scaffold asset imports... +``` + +If it is not desired to nest the components and pages, then redwood provides an option that you can set to disable this for your project. +Add the following in your `redwood.toml` file to disable the nesting of components and pages. + +``` +[generate] + nestScaffoldByModel = false +``` + +Setting the `nestScaffoldByModel = true` will retain the default behavior, but is not required. + +Notes: + +1. The nesting directory is always set to be PascalCase. + +**Namespacing Scaffolds** + +You can namespace your scaffolds by providing `<path/model>`. The layout, pages, cells, and components will be nested in newly created dir(s). In addition, the nesting folder, based upon the model name, is still applied after the path for components and pages, unless turned off in the `redwood.toml` as described above. For example, given a model `user`, running `yarn redwood generate scaffold admin/user` will nest the layout, pages, and components in a newly created `Admin` directory created for each of the `layouts`, `pages`, and `components` folders: + +```plaintext {9-20} +~/redwood-app$ yarn redwood generate scaffold admin/user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g scaffold admin/user + ✔ Generating scaffold files... + ✔ Successfully wrote file `./api/src/graphql/users.sdl.js` + ✔ Successfully wrote file `./api/src/services/users/users.js` + ✔ Successfully wrote file `./api/src/services/users/users.scenarios.js` + ✔ Successfully wrote file `./api/src/services/users/users.test.js` + ✔ Successfully wrote file `./web/src/layouts/Admin/UsersLayout/UsersLayout.js` + ✔ Successfully wrote file `./web/src/pages/Admin/User/EditUserPage/EditUserPage.js` + ✔ Successfully wrote file `./web/src/pages/Admin/User/UserPage/UserPage.js` + ✔ Successfully wrote file `./web/src/pages/Admin/User/UsersPage/UsersPage.js` + ✔ Successfully wrote file `./web/src/pages/Admin/User/NewUserPage/NewUserPage.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/EditUserCell/EditUserCell.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/User/User.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/UserCell/UserCell.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/UserForm/UserForm.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/Users/Users.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/UsersCell/UsersCell.js` + ✔ Successfully wrote file `./web/src/components/Admin/User/NewUser/NewUser.js` + ✔ Adding layout import... + ✔ Adding set import... + ✔ Adding scaffold routes... + ✔ Adding scaffold asset imports... +Done in 1.21s. +``` + +The routes wrapped in the [`Set`](router.md#sets-of-routes) component with generated layout will be nested too: + +```jsx {6-11} title="./web/src/Routes.js" +const Routes = () => { + return ( + <Router> + <Set wrap={UsersLayout}> + <Route path="/admin/users/new" page={AdminUserNewUserPage} name="adminNewUser" /> + <Route path="/admin/users/{id:Int}/edit" page={AdminUserEditUserPage} name="adminEditUser" /> + <Route path="/admin/users/{id:Int}" page={AdminUserUserPage} name="adminUser" /> + <Route path="/admin/users" page={AdminUserUsersPage} name="adminUsers" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} +``` + +Notes: + +1. Each directory in the scaffolded path is always set to be PascalCase. +2. The scaffold path may be multiple directories deep. + +**Destroying** + +``` +yarn redwood destroy scaffold <model> +``` + +Notes: + +1. You can also use `<path/model>` to destroy files that were generated under a scaffold path. For example, `redwood d scaffold admin/post` +2. The destroy command will remove empty folders along the path, provided they are lower than the folder level of component, layout, page, etc. +3. The destroy scaffold command will also follow the `nestScaffoldbyModel` setting in the `redwood.toml` file. For example, if you have an existing scaffold that you wish to destroy, that does not have the pages and components nested by the model name, you can destroy the scaffold by temporarily setting: + +``` +[generate] + nestScaffoldByModel = false +``` + +**Troubleshooting** + +If you see `Error: Unknown type: ...`, don't panic! +It's a known limitation with GraphQL type generation. +It happens when you generate the SDL of a Prisma model that has relations **before the SDL for the related model exists**. +Please see [Troubleshooting Generators](./schema-relations#troubleshooting-generators) for help. + +### generate script + +Generates an arbitrary Node.js script in `./scripts/<name>` that can be used with `redwood execute` command later. + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------ | +| `name` | Name of the service | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +Scripts have access to services and libraries used in your project. Some examples of how this can be useful: + +- create special database seed scripts for different scenarios +- sync products and prices from your payment provider +- running cleanup jobs on a regular basis e.g. delete stale/expired data +- sync data between platforms e.g. email from your db to your email marketing platform + +#### Usage + +``` +❯ yarn rw g script syncStripeProducts + + ✔ Generating script file... + ✔ Successfully wrote file `./scripts/syncStripeProducts.ts` + ✔ Next steps... + + After modifying your script, you can invoke it like: + + yarn rw exec syncStripeProducts + + yarn rw exec syncStripeProducts --param1 true +``` + +### generate sdl + +Generate a GraphQL schema and service object. + +```bash +yarn redwood generate sdl <model> +``` + +The sdl will inspect your `schema.prisma` and will do its best with relations. Schema to generators isn't one-to-one yet (and might never be). + +<!-- See limited generator support for relations +https://community.redwoodjs.com/t/prisma-beta-2-and-redwoodjs-limited-generator-support-for-relations-with-workarounds/361 --> + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `model` | Model to generate the sdl for | +| `--crud` | Set to `false`, or use `--no-crud`, if you do not want to generate mutations | +| `--docs` | Use or set to `true` to generated comments in SDL to use in self-documentating your app's GraphQL API. See: [Self-Documenting GraphQL API](./graphql.md#self-documenting-graphql-api) [default: false] | +| `--force, -f` | Overwrite existing files | +| `--tests` | Generate service test and scenario [default: true] | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--rollback` | Rollback changes if an error occurs [default: true] | + +> **Note:** The generated sdl will include the `@requireAuth` directive by default to ensure queries and mutations are secure. If your app's queries and mutations are all public, you can set up a custom SDL generator template to apply `@skipAuth` (or a custom validator directive) to suit you application's needs. + +**Regenerating the SDL** + +Often, as you iterate on your data model, you may add, remove, or rename fields. You still want Redwood to update the generated SDL and service files for those updates because it saves time not having to make those changes manually. + +But, since the `generate` command prevents you from overwriting files accidentally, you use the `--force` option -- but a `force` will reset any test and scenarios you may have written which you don't want to lose. + +In that case, you can run the following to "regenerate" **just** the SDL file and leave your tests and scenarios intact and not lose your hard work. + +``` +yarn redwood g sdl <model> --force --no-tests +``` + +#### Example + +```bash +~/redwood-app$ yarn redwood generate sdl user --force --no-tests +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g sdl user + ✔ Generating SDL files... + ✔ Writing `./api/src/graphql/users.sdl.js`... + ✔ Writing `./api/src/services/users/users.js`... +Done in 1.04s. +``` + +**Destroying** + +``` +yarn redwood destroy sdl <model> +``` + +#### Example + +Generating a user sdl: + +```bash +~/redwood-app$ yarn redwood generate sdl user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g sdl user + ✔ Generating SDL files... + ✔ Writing `./api/src/graphql/users.sdl.js`... + ✔ Writing `./api/src/services/users/users.scenarios.js`... + ✔ Writing `./api/src/services/users/users.test.js`... + ✔ Writing `./api/src/services/users/users.js`... +Done in 1.04s. +``` + +The generated sdl defines a corresponding type, query, create/update inputs, and any mutations. To prevent defining mutations, add the `--no-crud` option. + +```jsx title="./api/src/graphql/users.sdl.js" +export const schema = gql` + type User { + id: Int! + email: String! + name: String + } + + type Query { + users: [User!]! @requireAuth + } + + input CreateUserInput { + email: String! + name: String + } + + input UpdateUserInput { + email: String + name: String + } + + type Mutation { + createUser(input: CreateUserInput!): User! @requireAuth + updateUser(id: Int!, input: UpdateUserInput!): User! @requireAuth + deleteUser(id: Int!): User! @requireAuth + } +` +``` + +The services file fulfills the query. If the `--no-crud` option is added, this file will be less complex. + +```jsx title="./api/src/services/users/users.js" +import { db } from 'src/lib/db' + +export const users = () => { + return db.user.findMany() +} +``` + +For a model with a relation, the field will be listed in the sdl: + +```jsx {8} title="./api/src/graphql/users.sdl.js" +export const schema = gql` + type User { + id: Int! + email: String! + name: String + profile: Profile + } + + type Query { + users: [User!]! @requireAuth + } + + input CreateUserInput { + email: String! + name: String + } + + input UpdateUserInput { + email: String + name: String + } + + type Mutation { + createUser(input: CreateUserInput!): User! @requireAuth + updateUser(id: Int!, input: UpdateUserInput!): User! @requireAuth + deleteUser(id: Int!): User! @requireAuth + } +` +``` + +And the service will export an object with the relation as a property: + +```jsx {9-13} title="./api/src/services/users/users.js" +import { db } from 'src/lib/db' + +export const users = () => { + return db.user.findMany() +} + +export const User = { + profile: (_obj, { root }) => { + db.user.findUnique({ where: { id: root.id } }).profile(), + } +} +``` + +**Troubleshooting** + +If you see `Error: Unknown type: ...`, don't panic! +It's a known limitation with GraphQL type generation. +It happens when you generate the SDL of a Prisma model that has relations **before the SDL for the related model exists**. +Please see [Troubleshooting Generators](./schema-relations#troubleshooting-generators) for help. + +### generate secret + +Generate a secret key using a cryptographically-secure source of entropy. Commonly used when setting up dbAuth. + +| Arguments & Options | Description | +| :------------------ | :------------------------------------------------- | +| `--raw` | Print just the key, without any informational text | + +#### Usage + +Using the `--raw` option you can easily append a secret key to your .env file, like so: + +``` +# yarn v1 +echo "SESSION_SECRET=$(yarn --silent rw g secret --raw)" >> .env + +# yarn v3 +echo "SESSION_SECRET=$(yarn rw g secret --raw)" >> .env +``` + +### generate service + +Generate a service component. + +```bash +yarn redwood generate service <name> +``` + +Services are where Redwood puts its business logic. They can be used by your GraphQL API or any other place in your backend code. See [How Redwood Works with Data](tutorial/chapter2/side-quest.md). + +| Arguments & Options | Description | +| -------------------- | ------------------------------------------------------------------------------------ | +| `name` | Name of the service | +| `--force, -f` | Overwrite existing files | +| `--typescript, --ts` | Generate TypeScript files Enabled by default if we detect your project is TypeScript | +| `--tests` | Generate test and scenario files [default: true] | +| `--rollback` | Rollback changes if an error occurs [default: true] | + + +**Destroying** + +``` +yarn redwood destroy service <name> +``` + +#### Example + +Generating a user service: + +```bash +~/redwood-app$ yarn redwood generate service user +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood g service user + ✔ Generating service files... + ✔ Writing `./api/src/services/users/users.scenarios.js`... + ✔ Writing `./api/src/services/users/users.test.js`... + ✔ Writing `./api/src/services/users/users.js`... +Done in 1.02s. +``` + +The generated service component will export a `findMany` query: + +```jsx title="./api/src/services/users/users.js" +import { db } from 'src/lib/db' + +export const users = () => { + return db.user.findMany() +} +``` + +### generate types + +Generates supplementary code (project types) + +```bash +yarn redwood generate types +``` + +#### Usage + +``` +~/redwood-app$ yarn redwood generate types +yarn run v1.22.10 +$ /redwood-app/node_modules/.bin/redwood g types +$ /redwood-app/node_modules/.bin/rw-gen + +Generating... + +- .redwood/schema.graphql +- .redwood/types/mirror/api/src/services/posts/index.d.ts +- .redwood/types/mirror/web/src/components/BlogPost/index.d.ts +- .redwood/types/mirror/web/src/layouts/BlogLayout/index.d.ts +... +- .redwood/types/mirror/web/src/components/Post/PostsCell/index.d.ts +- .redwood/types/includes/web-routesPages.d.ts +- .redwood/types/includes/all-currentUser.d.ts +- .redwood/types/includes/web-routerRoutes.d.ts +- .redwood/types/includes/api-globImports.d.ts +- .redwood/types/includes/api-globalContext.d.ts +- .redwood/types/includes/api-scenarios.d.ts +- api/types/graphql.d.ts +- web/types/graphql.d.ts + +... and done. +``` + +## info + +Print your system environment information. + +```bash +yarn redwood info +``` + +This command's primarily intended for getting information others might need to know to help you debug: + +```bash +~/redwood-app$ yarn redwood info +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/redwood info + + System: + OS: Linux 5.4 Ubuntu 20.04 LTS (Focal Fossa) + Shell: 5.0.16 - /usr/bin/bash + Binaries: + Node: 13.12.0 - /tmp/yarn--1589998865777-0.9683603763419713/node + Yarn: 1.22.4 - /tmp/yarn--1589998865777-0.9683603763419713/yarn + Browsers: + Chrome: 78.0.3904.108 + Firefox: 76.0.1 + npmPackages: + @redwoodjs/core: ^0.7.0-rc.3 => 0.7.0-rc.3 + +Done in 1.98s. +``` + +## lint + +Lint your files. + +```bash +yarn redwood lint +``` + +[Our ESLint configuration](https://github.com/redwoodjs/redwood/blob/master/packages/eslint-config/index.js) is a mix of [ESLint's recommended rules](https://eslint.org/docs/rules/), [React's recommended rules](https://www.npmjs.com/package/eslint-plugin-react#list-of-supported-rules), and a bit of our own stylistic flair: + +- no semicolons +- comma dangle when multiline +- single quotes +- always use parenthesis around arrow functions +- enforced import sorting + +| Option | Description | +| :------ | :---------------- | +| `--fix` | Try to fix errors | + +## prisma + +Run Prisma CLI within the context of a Redwood project. + +``` +yarn redwood prisma +``` + +Redwood's `prisma` command is a lightweight wrapper around the Prisma CLI. It's the primary way you interact with your database. + +> **What do you mean it's a lightweight wrapper?** +> +> By lightweight wrapper, we mean that we're handling some flags under the hood for you. +> You can use the Prisma CLI directly (`yarn prisma`), but letting Redwood act as a proxy (`yarn redwood prisma`) saves you a lot of keystrokes. +> For example, Redwood adds the `--schema=api/db/schema.prisma` flags automatically. +> +> If you want to know exactly what `yarn redwood prisma <command>` runs, which flags it's passing, etc., it's right at the top: +> +> ```sh{3} +> $ yarn redwood prisma migrate dev +> yarn run v1.22.10 +> $ ~/redwood-app/node_modules/.bin/redwood prisma migrate dev +> Running prisma cli: +> yarn prisma migrate dev --schema "~/redwood-app/api/db/schema.prisma" +> ... +> ``` + +Since `yarn redwood prisma` is just an entry point into all the database commands that the Prisma CLI has to offer, we won't try to provide an exhaustive reference of everything you can do with it here. Instead what we'll do is focus on some of the most common commands; those that you'll be running on a regular basis, and how they fit into Redwood's workflows. + +For the complete list of commands, see the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference). It's the authority. + +Along with the CLI reference, bookmark Prisma's [Migration Flows](https://www.prisma.io/docs/concepts/components/prisma-migrate/prisma-migrate-flows) doc—it'll prove to be an invaluable resource for understanding `yarn redwood prisma migrate`. + +| Command | Description | +| :------------------ | :----------------------------------------------------------- | +| `db <command>` | Manage your database schema and lifecycle during development | +| `generate` | Generate artifacts (e.g. Prisma Client) | +| `migrate <command>` | Update the database schema with migrations | + +### prisma db + +Manage your database schema and lifecycle during development. + +``` +yarn redwood prisma db <command> +``` + +The `prisma db` namespace contains commands that operate directly against the database. + +#### prisma db pull + +Pull the schema from an existing database, updating the Prisma schema. + +> 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#db-pull). + +``` +yarn redwood prisma db pull +``` + +This command, formerly `introspect`, connects to your database and adds Prisma models to your Prisma schema that reflect the current database schema. + +> Warning: The command will Overwrite the current schema.prisma file with the new schema. Any manual changes or customization will be lost. Be sure to back up your current schema.prisma file before running `db pull` if it contains important modifications. + +#### prisma db push + +Push the state from your Prisma schema to your database. + +> 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#db-push). + +``` +yarn redwood prisma db push +``` + +This is your go-to command for prototyping changes to your Prisma schema (`schema.prisma`). +Prior to to `yarn redwood prisma db push`, there wasn't a great way to try out changes to your Prisma schema without creating a migration. +This command fills the void by "pushing" your `schema.prisma` file to your database without creating a migration. You don't even have to run `yarn redwood prisma generate` afterward—it's all taken care of for you, making it ideal for iterative development. + +#### prisma db seed + +Seed your database. + +> 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#db-seed-preview). + +``` +yarn redwood prisma db seed +``` + +This command seeds your database by running your project's `seed.js|ts` file which you can find in your `scripts` directory. + +Prisma's got a great [seeding guide](https://www.prisma.io/docs/guides/prisma-guides/seed-database) that covers both the concepts and the nuts and bolts. + +> **Important:** Prisma Migrate also triggers seeding in the following scenarios: +> +> - you manually run the `yarn redwood prisma migrate reset` command +> - the database is reset interactively in the context of using `yarn redwood prisma migrate dev`—for example, as a result of migration history conflicts or database schema drift +> +> If you want to use `yarn redwood prisma migrate dev` or `yarn redwood prisma migrate reset` without seeding, you can pass the `--skip-seed` flag. + +While having a great seed might not be all that important at the start, as soon as you start collaborating with others, it becomes vital. + +**How does seeding actually work?** + +If you look at your project's `package.json` file, you'll notice a `prisma` section: + +```json + "prisma": { + "seed": "yarn rw exec seed" + }, +``` + +Prisma runs any command found in the `seed` setting when seeding via `yarn rw prisma db seed` or `yarn rw prisma migrate reset`. +Here we're using the Redwood [`exec` cli command](#exec) that runs a script. + +If you wanted to seed your database using a different method (like `psql` and an `.sql` script), you can do so by changing the "seed" script command. + +**More About Seeding** + +In addition, you can [code along with Ryan Chenkie](https://www.youtube.com/watch?v=2LwTUIqjbPo), and learn how libraries like [faker](https://www.npmjs.com/package/faker) can help you create a large, realistic database fast, especially in tandem with Prisma's [createMany](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany). + +<!-- ### generate --> + +<!-- Generate artifacts (e.g. Prisma Client). --> + +<!-- > 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#generate). --> + +<!-- ``` --> +<!-- yarn redwood prisma generate --> +<!-- ``` --> + +**Log Formatting** + +If you use the Redwood Logger as part of your seed script, you can pipe the command to the LogFormatter to output prettified logs. + +For example, if your `scripts.seed.js` imports the `logger`: + +```jsx title="scripts/seed.js" +import { db } from 'api/src/lib/db' +import { logger } from 'api/src/lib/logger' + +export default async () => { + try { + const posts = [ + { + title: 'Welcome to the blog!', + body: "I'm baby single- origin coffee kickstarter lo.", + }, + { + title: 'A little more about me', + body: 'Raclette shoreditch before they sold out lyft.', + }, + { + title: 'What is the meaning of life?', + body: 'Meh waistcoat succulents umami asymmetrical, hoodie post-ironic paleo chillwave tote bag.', + }, + ] + + Promise.all( + posts.map(async (post) => { + const newPost = await db.post.create({ + data: { title: post.title, body: post.body }, + }) + + logger.debug({ data: newPost }, 'Added post') + }) + ) + } catch (error) { + logger.error(error) + } +} +``` + +You can pipe the script output to the formatter: + +```bash +yarn rw prisma db seed | yarn rw-log-formatter +``` + +> Note: Just be sure to set `data` attribute, so the formatter recognizes the content. +> For example: `logger.debug({ data: newPost }, 'Added post')` + +### prisma migrate + +Update the database schema with migrations. + +> 👉 Quick link to the [Prisma Concepts](https://www.prisma.io/docs/concepts/components/prisma-migrate). + +``` +yarn redwood prisma migrate <command> +``` + +As a database toolkit, Prisma strives to be as holistic as possible. Prisma Migrate lets you use Prisma schema to make changes to your database declaratively, all while keeping things deterministic and fully customizable by generating the migration steps in a simple, familiar format: SQL. + +Since migrate generates plain SQL files, you can edit those SQL files before applying the migration using `yarn redwood prisma migrate --create-only`. This creates the migration based on the changes in the Prisma schema, but doesn't apply it, giving you the chance to go in and make any modifications you want. [Daniel Norman's tour of Prisma Migrate](https://www.youtube.com/watch?v=0LKhksstrfg) demonstrates this and more to great effect. + +Prisma Migrate has separate commands for applying migrations based on whether you're in dev or in production. The Prisma [Migration flows](https://www.prisma.io/docs/concepts/components/prisma-migrate/prisma-migrate-flows) goes over the difference between these workflows in more detail. + +#### prisma migrate dev + +Create a migration from changes in Prisma schema, apply it to the database, trigger generators (e.g. Prisma Client). + +> 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#migrate-dev). + +``` +yarn redwood prisma migrate dev +``` + +<!-- #### reset --> + +<!-- Reset your database and apply all migrations, all data will be lost. --> + +<!-- > 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#migrate-reset). --> + +<!-- ``` --> +<!-- yarn redwood prisma migrate reset --> +<!-- ``` --> + +#### prisma migrate deploy + +Apply pending migrations to update the database schema in production/staging. + +> 👉 Quick link to the [Prisma CLI Reference](https://www.prisma.io/docs/reference/api-reference/command-reference#migrate-deploy). + +``` +yarn redwood prisma migrate deploy +``` + +#### prisma migrate reset + +This command deletes and recreates the database, or performs a "soft reset" by removing all data, tables, indexes, and other artifacts. + +It'll also re-seed your database by automatically running the `db seed` command. See [prisma db seed](#prisma-db-seed). + +> **_Important:_** For use in development environments only + +## record + +> This command is experimental and its behavior may change. + +Commands for working with RedwoodRecord. + +### record init + +Parses `schema.prisma` and caches the datamodel as JSON. Reads relationships between models and adds some configuration in `api/src/models/index.js`. + +``` +yarn rw record init +``` + +## redwood-tools (alias rwt) + +Redwood's companion CLI development tool. You'll be using this if you're contributing to Redwood. See [Contributing](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md#cli-reference-redwood-tools) in the Redwood repo. + +## setup + +Initialize configuration and integrate third-party libraries effortlessly. + +``` +yarn redwood setup <category> +``` + +| Commands | Description | +| ------------------ | ------------------------------------------------------------------------------------------ | +| `auth` | Set up auth configuration for a provider | +| `cache` | Set up cache configuration for memcached or redis | +| `custom-web-index` | Set up an `index.js` file, so you can customize how Redwood web is mounted in your browser | +| `deploy` | Set up a deployment configuration for a provider | +| `generator` | Copy default Redwood generator templates locally for customization | +| `i18n` | Set up i18n | +| `package` | Peform setup actions by running a third-party npm package | +| `tsconfig` | Add relevant tsconfig so you can start using TypeScript | +| `ui` | Set up a UI design or style library | +| `webpack` | Set up a webpack config file in your project so you can add custom config | + +### setup auth + +Integrate an auth provider. + +``` +yarn redwood setup auth <provider> +``` + +| Arguments & Options | Description | +| :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `provider` | Auth provider to configure. Choices are `auth0`, `azureActiveDirectory`, `clerk`, `dbAuth`, `ethereum`, `firebase`, `goTrue`, `magicLink`, `netlify`, `nhost`, and `supabase` | +| `--force, -f` | Overwrite existing configuration | + +#### Usage + +See [Authentication](authentication.md). + +### setup cache + +This command creates a setup file in `api/src/lib/cache.{ts|js}` for connecting to a Memcached or Redis server and allows caching in services. See the [**Caching** section of the Services docs](/docs/services#caching) for usage. + +``` +yarn redwood setup cache <client> +``` + +| Arguments & Options | Description | +| :------------------ | :------------------------------------------------------ | +| `client` | Name of the client to configure, `memcached` or `redis` | +| `--force, -f` | Overwrite existing files | + +### setup custom-web-index + +:::warning This command only applies to projects using Webpack + +As of v6, all Redwood projects use Vite by default. +When switching projects to Vite, we made the decision to add the the entry file, `web/src/entry.client.{jsx,tsx}`, back to projects. + +::: + +Redwood automatically mounts your `<App />` to the DOM, but if you want to customize how that happens, you can use this setup command to generate an `index.js` file in `web/src`. + +``` +yarn redwood setup custom-web-index +``` + +| Arguments & Options | Description | +| :------------------ | :----------------------- | +| `--force, -f` | Overwrite existing files | + +### setup generator + +Copies a given generator's template files to your local app for customization. The next time you generate that type again, it will use your custom template instead of Redwood's default. + +``` +yarn rw setup generator <name> +``` + +| Arguments & Options | Description | +| :------------------ | :------------------------------------------------------------ | +| `name` | Name of the generator template(s) to copy (see help for list) | +| `--force, -f` | Overwrite existing copied template files | + +#### Usage + +If you wanted to customize the page generator template, run the command: + +``` +yarn rw setup generator page +``` + +And then check `web/generators/page` for the page, storybook and test template files. You don't need to keep all of these templates—you could customize just `page.tsx.template` and delete the others and they would still be generated, but using the default Redwood templates. + +The only exception to this rule is the scaffold templates. You'll get four directories, `assets`, `components`, `layouts` and `pages`. If you want to customize any one of the templates in those directories, you will need to keep all the other files inside of that same directory, even if you make no changes besides the one you care about. (This is due to the way the scaffold looks up its template files.) For example, if you wanted to customize only the index page of the scaffold (the one that lists all available records in the database) you would edit `web/generators/scaffold/pages/NamesPage.tsx.template` and keep the other pages in that directory. You _could_ delete the other three directories (`assets`, `components`, `layouts`) if you don't need to customize them. + +**Name Variants** + +Your template will receive the provided `name` in a number of different variations. + +For example, given the name `fooBar` your template will receive the following _variables_ with the given _values_ + +| Variable | Value | +| :--------------------- | :--------- | +| `pascalName` | `FooBar` | +| `camelName` | `fooBar` | +| `singularPascalName` | `FooBar` | +| `pluralPascalName` | `FooBars` | +| `singularCamelName` | `fooBar` | +| `pluralCamelName` | `fooBars` | +| `singularParamName` | `foo-bar` | +| `pluralParamName` | `foo-bars` | +| `singularConstantName` | `FOO_BAR` | +| `pluralConstantName` | `FOO_BARS` | + +#### Example + +Copying the cell generator templates: + +```bash +~/redwood-app$ yarn rw setup generator cell +yarn run v1.22.4 +$ /redwood-app/node_modules/.bin/rw setup generator cell + ✔ Copying generator templates... + ✔ Wrote templates to /web/generators/cell +✨ Done in 2.33s. +``` + +### setup deploy (config) + +Set up a deployment configuration. + +``` +yarn redwood setup deploy <provider> +``` + +| Arguments & Options | Description | +| :------------------ | :---------------------------------------------------------------------------------------------------- | +| `provider` | Deploy provider to configure. Choices are `baremetal`, `coherence`, `edgio`, `flightcontrol`, `netlify`, `render`, `vercel`, or `aws-serverless [deprecated]`, | +| `--database, -d` | Database deployment for Render only [choices: "none", "postgresql", "sqlite"] [default: "postgresql"] | +| `--force, -f` | Overwrite existing configuration [default: false] | + +#### setup deploy netlify + +When configuring Netlify deployment, the `setup deploy netlify` command generates a `netlify.toml` [configuration file](https://docs.netlify.com/configure-builds/file-based-configuration/) with the defaults needed to build and deploy a RedwoodJS site on Netlify. + +The `netlify.toml` file is a configuration file that specifies how Netlify builds and deploys your site — including redirects, branch and context-specific settings, and more. + +This configuration file also defines the settings needed for [Netlify Dev](https://docs.netlify.com/configure-builds/file-based-configuration/#netlify-dev) to detect that your site uses the RedwoodJS framework. Netlify Dev serves your RedwoodJS app as if it runs on the Netlify platform and can serve functions, handle Netlify [headers](https://docs.netlify.com/configure-builds/file-based-configuration/#headers) and [redirects](https://docs.netlify.com/configure-builds/file-based-configuration/#redirects). + +Netlify Dev can also create a tunnel from your local development server that allows you to share and collaborate with others using `netlify dev --live`. + +``` +// See: netlify.toml +// ... +[dev] + # To use [Netlify Dev](https://www.netlify.com/products/dev/), + # install netlify-cli from https://docs.netlify.com/cli/get-started/#installation + # and then use netlify link https://docs.netlify.com/cli/get-started/#link-and-unlink-sites + # to connect your local project to a site already on Netlify + # then run netlify dev and our app will be accessible on the port specified below + framework = "redwoodjs" + # Set targetPort to the [web] side port as defined in redwood.toml + targetPort = 8910 + # Point your browser to this port to access your RedwoodJS app + port = 8888 +``` + +In order to use [Netlify Dev](https://www.netlify.com/products/dev/) you need to: + +- install the latest [netlify-cli](https://docs.netlify.com/cli/get-started/#installation) +- use [netlify link](https://docs.netlify.com/cli/get-started/#link-and-unlink-sites) to connect to your Netlify site +- ensure that the `targetPort` matches the [web] side port in `redwood.toml` +- run `netlify dev` and your site will be served on the specified `port` (e.g., 8888) +- if you wish to share your local server with others, you can run `netlify dev --live` + +> Note: To detect the RedwoodJS framework, please use netlify-cli v3.34.0 or greater. + +### setup mailer + +This command adds the necessary packages and files to get started using the RedwoodJS mailer. By default it also creates an example mail template which can be skipped with the `--skip-examples` flag. + +``` +yarn redwood setup mailer +``` + +| Arguments & Options | Description | +| :---------------------- | :----------------------------- | +| `--force, -f` | Overwrite existing files | +| `--skip-examples` | Do not include example content, such as a React email template | + +### setup package + +This command takes a published npm package that you specify, performs some compatibility checks, and then executes its bin script. This allows you to use third-party packages that can provide you with an easy-to-use setup command for the particular functionality they provide. + +This command behaves similarly to `yarn dlx` but will attempt to confirm compatibility between the package you are attempting to run and the current version of Redwood you are running. You can bypass this check by passing the `--force` flag if you feel you understand any potential compatibility issues. + +``` +yarn redwood setup package <npm-package> +``` + +| Arguments & Options | Description | +| :------------------ | :----------------------- | +| `--force, -f` | Forgo compatibility checks | + +#### Usage + +Run the made up `@redwoodjs/setup-example` package: +```bash +~/redwood-app$ yarn rw setup package @redwoodjs/setup-example +``` + +Run the same package but using a particular npm tag and avoiding any compatibility checks: +```bash +~/redwood-app$ yarn rw setup package @redwoodjs/setup-example@beta --force +``` + +**Compatibility Checks** + +We perform a simple compatibility check in an attempt to make you aware of potential compatibility issues with setup packages you might wish to run. This works by examining the version of `@redwoodjs/core` you are using within your root `package.json`. We compare this value with a compatibility range the npm package specifies in the `engines.redwoodjs` field of its own `package.json`. If the version of `@redwoodjs/core` you are using falls outside of the compatibility range specified by the package you are attempting to run, we will warn you and ask you to confirm that you wish to continue. + +It's the author of the npm package's responsibility to specify the correct compatibility range, so **you should always research the packages you use with this command**. Especially since they will be executing code on your machine! + +### setup graphql + +This command creates the necessary files to support GraphQL features like fragments and trusted documents. + +#### Usage + +Run `yarn rw setup graphql <feature>` + +#### setup graphql fragments + +This command creates the necessary configuration to start using [GraphQL Fragments](./graphql/fragments.md). + +``` +yarn redwood setup graphql fragments +``` + +| Arguments & Options | Description | +| :------------------ | :--------------------------------------- | +| `--force, -f` | Overwrite existing files and skip checks | + +#### Usage + +Run `yarn rw setup graphql fragments` + +#### Example + +```bash +~/redwood-app$ yarn rw setup graphql fragments +✔ Update Redwood Project Configuration to enable GraphQL Fragments +✔ Generate possibleTypes.ts +✔ Import possibleTypes in App.tsx +✔ Add possibleTypes to the GraphQL cache config +``` + +#### setup graphql trusted-documents + +This command creates the necessary configuration to start using [GraphQL Trusted Documents](./graphql/trusted-documents.md). + + +``` +yarn redwood setup graphql trusted-documents +``` + +#### Usage + +Run `yarn rw setup graphql trusted-documents` + +#### Example + +```bash +~/redwood-app$ yarn rw setup graphql trusted-documents +✔ Update Redwood Project Configuration to enable GraphQL Trusted Documents ... +✔ Generating Trusted Documents store ... +✔ Configuring the GraphQL Handler to use a Trusted Documents store ... +``` + + +If you have not setup the RedwoodJS server file, it will be setup: + +```bash +✔ Adding the experimental server file... +✔ Adding config to redwood.toml... +✔ Adding required api packages... +``` + + +### setup realtime + +This command creates the necessary files, installs the required packages, and provides examples to setup RedwoodJS Realtime from GraphQL live queries and subscriptions. See the Realtime docs for more information. + +``` +yarn redwood setup realtime +``` + +| Arguments & Options | Description | +| :------------------ | :----------------------- | +| `-e, --includeExamples, --examples` | Include examples of how to implement liveQueries and subscriptions. Default: true. | +| `--force, -f` | Forgo compatibility checks | + +:::note + +If the RedwoodJS Server is not setup, it will be installed as well. + +::: + +#### Usage + +Run `yarn rw setup realtime` + +#### Example + +```bash +~/redwood-app$ yarn rw setup realtime +✔ Checking for realtime environment prerequisites ... +✔ Adding required api packages... +✔ Adding the realtime api lib ... +✔ Adding Countdown example subscription ... +✔ Adding NewMessage example subscription ... +✔ Adding Auctions example live query ... +✔ Generating types ... +``` + + +If you have not setup the RedwoodJS server file, it will be setup: + +```bash +✔ Adding the experimental server file... +✔ Adding config to redwood.toml... +✔ Adding required api packages... +``` + +### setup tsconfig + +Add a `tsconfig.json` to both the web and api sides so you can start using [TypeScript](typescript/index). + +``` +yarn redwood setup tsconfig +``` + +| Arguments & Options | Description | +| :------------------ | :----------------------- | +| `--force, -f` | Overwrite existing files | + + + +### setup ui + +Set up a UI design or style library. Right now the choices are [TailwindCSS](https://tailwindcss.com/), [Chakra UI](https://chakra-ui.com/), and [Mantine UI](https://ui.mantine.dev/). + +``` +yarn rw setup ui <library> +``` + +| Arguments & Options | Description | +| :------------------ | :-------------------------------------------------------------------------------------- | +| `library` | Library to configure. Choices are `chakra-ui`, `tailwindcss`, and `mantine` | +| `--force, -f` | Overwrite existing configuration | + +## storybook + +Starts Storybook locally + +```bash +yarn redwood storybook +``` + +[Storybook](https://storybook.js.org/docs/react/get-started/introduction) is a tool for UI development that allows you to develop your components in isolation, away from all the conflated cruft of your real app. + +> "Props in, views out! Make it simple to reason about." + +RedwoodJS supports Storybook by creating stories when generating cells, components, layouts and pages. You can then use these to describe how to render that UI component with representative data. + +| Arguments & Options | Description | +| :------------------ | :------------------------------------------------------------------------------------------------- | +| `--open` | Open Storybook in your browser on start [default: true]. Pass `--no-open` to disable this behavior | +| `--build` | Build Storybook | +| `--port` | Which port to run Storybook on [default: 7910] | + +## test + +Run Jest tests for api and web. + +```bash +yarn redwood test [side..] +``` + +| Arguments & Options | Description | +| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sides or filter` | Which side(s) to test, and/or a regular expression to match against your test files to filter by | +| `--help` | Show help | +| `--version` | Show version number | +| `--watch` | Run tests related to changed files based on hg/git (uncommitted files). Specify the name or path to a file to focus on a specific set of tests [default: true] | +| `--watchAll` | Run all tests | +| `--collectCoverage` | Show test coverage summary and output info to `coverage` directory in project root. See this directory for an .html coverage report | +| `--clearCache` | Delete the Jest cache directory and exit without running tests | +| `--db-push` | Syncs the test database with your Prisma schema without requiring a migration. It creates a test database if it doesn't already exist [default: true]. This flag is ignored if your project doesn't have an `api` side. [👉 More details](#prisma-db-push). | + +> **Note** all other flags are passed onto the jest cli. So for example if you wanted to update your snapshots you can pass the `-u` flag + +## type-check (alias tsc or tc) + +Runs a TypeScript compiler check on both the api and the web sides. + +```bash +yarn redwood type-check [side] +``` + +| Arguments & Options | Description | +| ------------------- | ------------------------------------------------------------------------------ | +| `side` | Which side(s) to run. Choices are `api` and `web`. Defaults to `api` and `web` | + +#### Usage + +See [Running Type Checks](typescript/introduction.md#running-type-checks). + +## serve + +Runs a server that serves both the api and the web sides. + +```bash +yarn redwood serve [side] +``` + +> You should run `yarn rw build` before running this command to make sure all the static assets that will be served have been built. + +`yarn rw serve` is useful for debugging locally or for self-hosting—deploying a single server into a serverful environment. Since both the api and the web sides run in the same server, CORS isn't a problem. + +| Arguments & Options | Description | +| ------------------- | ------------------------------------------------------------------------------ | +| `side` | Which side(s) to run. Choices are `api` and `web`. Defaults to `api` and `web` | +| `--port` | What port should the server run on [default: 8911] | +| `--socket` | The socket the server should run. This takes precedence over port | + +### serve api + +Runs a server that only serves the api side. + +``` +yarn rw serve api +``` + +This command uses `apiUrl` in your `redwood.toml`. Use this command if you want to run just the api side on a server (e.g. running on Render). + +| Arguments & Options | Description | +| ------------------- | ----------------------------------------------------------------- | +| `--port` | What port should the server run on [default: 8911] | +| `--socket` | The socket the server should run. This takes precedence over port | +| `--apiRootPath` | The root path where your api functions are served | + +For the full list of Server Configuration settings, see [this documentation](app-configuration-redwood-toml.md#api). +If you want to format your log output, you can pipe the command to the Redwood LogFormatter: + +``` +yarn rw serve api | yarn rw-log-formatter +``` + +### serve web + +Runs a server that only serves the web side. + +``` +yarn rw serve web +``` + +This command serves the contents in `web/dist`. Use this command if you're debugging (e.g. great for debugging prerender) or if you want to run your api and web sides on separate servers, which is often considered a best practice for scalability (since your api side likely has much higher scaling requirements). + +> **But shouldn't I use nginx and/or equivalent technology to serve static files?** +> +> Probably, but it can be a challenge to setup when you just want something running quickly! + +| Arguments & Options | Description | +| ------------------- | ------------------------------------------------------------------------------------- | +| `--port` | What port should the server run on [default: 8911] | +| `--socket` | The socket the server should run. This takes precedence over port | +| `--apiHost` | Forwards requests from the `apiUrl` (defined in `redwood.toml`) to the specified host | + +If you want to format your log output, you can pipe the command to the Redwood LogFormatter: + +``` +yarn rw serve web | yarn rw-log-formatter +``` + +## upgrade + +Upgrade all `@redwoodjs` packages via an interactive CLI. + +```bash +yarn redwood upgrade +``` + +This command does all the heavy-lifting of upgrading to a new release for you. + +Besides upgrading to a new stable release, you can use this command to upgrade to either of our unstable releases, `canary` and `rc`, or you can upgrade to a specific release version. + +A canary release is published to npm every time a PR is merged to the `main` branch, and when we're getting close to a new release, we publish release candidates. + +| Option | Description | +| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `--dry-run, -d` | Check for outdated packages without upgrading | +| `--tag, -t` | Choices are "rc", "canary", "latest", "next", "experimental", or a specific version (e.g. "0.19.3"). WARNING: Unstable releases in the case of "canary", "rc", "next", and "experimental". And "canary" releases include breaking changes often requiring codemods if upgrading a project. | + +#### Example + +Upgrade to the most recent canary: + +```bash +yarn redwood upgrade -t canary +``` + +Upgrade to a specific version: + +```bash +yarn redwood upgrade -t 0.19.3 +``` + +## Background checks + +The CLI can check for things in the background, like new versions of the framework, while you dev. + +Right now it can only check for new versions. +If you'd like it to do so, set `notifications.versionUpdates` in the `redwood.toml` file to include an array of the tags you're interested in hearing about. +(The former has priority.) + +By default, the CLI won't check for upgrades—you have to opt into it. + +You'll see this notification once a day at most. And the CLI will check for it once a day at most. So, nothing heavy-handed going on here. diff --git a/docs/versioned_docs/version-7.0/connection-pooling.md b/docs/versioned_docs/version-7.0/connection-pooling.md new file mode 100644 index 000000000000..750c012b3076 --- /dev/null +++ b/docs/versioned_docs/version-7.0/connection-pooling.md @@ -0,0 +1,105 @@ +--- +description: Scale your serverless functions +--- + +# Connection Pooling + +> ⚠ **Work in Progress** ⚠️ +> +> There's more to document here. In the meantime, you can check our [community forum](https://community.redwoodjs.com/search?q=connection%20pooling) for answers. +> +> Want to contribute? Redwood welcomes contributions and loves helping people become contributors. +> You can edit this doc [here](https://github.com/redwoodjs/redwoodjs.com/blob/main/docs/connectionPooling.md). +> If you have any questions, just ask for help! We're active on the [forums](https://community.redwoodjs.com/c/contributing/9) and on [discord](https://discord.com/channels/679514959968993311/747258086569541703). + +Production Redwood apps should enable connection pooling in order to properly scale with your Serverless functions. + +## Prisma Data Proxy + +The [Prisma Data Proxy](https://www.prisma.io/docs/data-platform/data-proxy) provides database connection management and pooling for Redwood apps using Prisma. It supports MySQL and Postgres databases in either the U.S. or EU regions. + +To set up a Prisma Data Proxy, sign up for the [Prisma Data Platform](https://www.prisma.io/data-platform) for free. In your onboarding workflow, plug in the connection URL for your database and choose your region. This will generate a connection string for your app. Then follow the instructions in [Prisma's documentation](https://www.prisma.io/docs/concepts/data-platform/data-proxy). + +> Note that the example uses npm. Rather than using npm, you can access the Prisma CLI using `yarn redwood prisma` inside a Redwood app. + +## Prisma & PgBouncer + +PgBouncer holds a connection pool to the database and proxies incoming client connections by sitting between Prisma Client and the database. This reduces the number of processes a database has to handle at any given time. PgBouncer passes on a limited number of connections to the database and queues additional connections for delivery when space becomes available. + + +To use Prisma Client with PgBouncer from a serverless function, add the `?pgbouncer=true` flag to the PostgreSQL connection URL: + +``` +postgresql://USER:PASSWORD@HOST:PORT/DATABASE?pgbouncer=true +``` + +Typically, your PgBouncer port will be 6543 which is different from the Postgres default of 5432. + +> Note that since Prisma Migrate uses database transactions to check out the current state of the database and the migrations table, if you attempt to run Prisma Migrate commands in any environment that uses PgBouncer for connection pooling, you might see an error. +> +> To work around this issue, you must connect directly to the database rather than going through PgBouncer when migrating. + +For more information on Prisma and PgBouncer, please refer to Prisma's Guide on [Configuring Prisma Client with PgBouncer](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management/configure-pg-bouncer). + +## Supabase + +For Postgres running on [Supabase](https://supabase.io) see: [PgBouncer is now available in Supabase](https://supabase.io/blog/2021/04/02/supabase-pgbouncer#using-connection-pooling-in-supabase). + +All new Supabase projects include connection pooling using [PgBouncer](https://www.pgbouncer.org/). + +We recommend that you connect to your Supabase Postgres instance using SSL which you can do by setting `sslmode` to `require` on the connection string: + +``` +// not pooled typically uses port 5432 +postgresql://postgres:mydb.supabase.co:5432/postgres?sslmode=require +// pooled typically uses port 6543 +postgresql://postgres:mydb.supabase.co:6543/postgres?sslmode=require&pgbouncer=true +``` + +## Heroku +For Postgres, see [Postgres Connection Pooling](https://devcenter.heroku.com/articles/postgres-connection-pooling). + +Heroku does not officially support MySQL. + + +## Digital Ocean +For Postgres, see [How to Manage Connection Pools](https://www.digitalocean.com/docs/databases/postgresql/how-to/manage-connection-pools) + +To run migrations through a connection pool, you're required to append connection parameters to your `DATABASE_URL`. Prisma needs to know to use pgbouncer (which is part of Digital Ocean's connection pool). If omitted, you may receive the following error: + +``` +Error: Migration engine error: +db error: ERROR: prepared statement "s0" already exists +``` + +To resolve this, use the following structure in your `DATABASE_URL`: + +``` +<YOUR_CONNECTION_POOL_URL>:25061/defaultdb?connection_limit=3&sslmode=require&pgbouncer=true&connect_timeout=10&pool_timeout=30 +``` +Here's a couple more things to be aware of: +- When using a Digital Ocean connection pool, you'll have multiple ports available. Typically the direct connection (without connection pooling) is on port `25060` and the connection through pgbouncer is served through port `25061`. Make sure you connect to your connection pool on port `25061` +- Adjust the `connection_limit`. Clusters provide 25 connections per 1 GB of RAM. Three connections per cluster are reserved for maintenance, and all remaining connections can be allocated to connection pools +- Both `pgbouncer=true` and `pool_timeout=30` are required to deploy successfully through your connection pool + +Connection Pooling for MySQL is not yet supported. + +## AWS +Use [Amazon RDS Proxy](https://aws.amazon.com/rds/proxy) for MySQL or PostgreSQL. + +From the [AWS Docs](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html#rds-proxy.limitations): +>Your RDS Proxy must be in the same VPC as the database. The proxy can't be publicly accessible. + +Because of this limitation, with out-of-the-box configuration, you can only use RDS Proxy if you're deploying your Lambda Functions to the same AWS account. Alternatively, you can use RDS directly, but you might require larger instances to handle your production traffic and the number of concurrent connections. + + +## Why Connection Pooling? + +Relational databases have a maximum number of concurrent client connections. + +* Postgres allows 100 by default +* MySQL allows 151 by default + +In a traditional server environment, you would need a large amount of traffic (and therefore web servers) to exhaust these connections, since each web server instance typically leverages a single connection. + +In a Serverless environment, each function connects directly to the database, which can exhaust limits quickly. To prevent connection errors, you should add a connection pooling service in front of your database. Think of it as a load balancer. diff --git a/docs/versioned_docs/version-7.0/contributing-overview.md b/docs/versioned_docs/version-7.0/contributing-overview.md new file mode 100644 index 000000000000..623d70ae02a3 --- /dev/null +++ b/docs/versioned_docs/version-7.0/contributing-overview.md @@ -0,0 +1,168 @@ +--- +title: Contributing +description: There's several ways to contribute to Redwood +slug: contributing +--- + +# Contributing: Overview and Orientation + +Love Redwood and want to get involved? You’re in the right place and in good company! As of this writing, there are more than [250 contributors](https://github.com/redwoodjs/redwood/blob/main/README.md#contributors) who have helped make Redwood awesome by contributing code and documentation. This doesn't include all those who participate in the vibrant, helpful, and encouraging Forums and Discord, which are both great places to get started if you have any questions. + +There are several ways you can contribute to Redwood: + +- join the [community Forums](https://community.redwoodjs.com/) and [Discord server](https://discord.gg/jjSYEQd) — encourage and help others 🙌 +- [triage issues on the repo](https://github.com/redwoodjs/redwood/issues) and [review PRs](https://github.com/redwoodjs/redwood/pulls) 🩺 +- write and edit [docs](#contributing-docs) ✍️ +- and of course, write code! 👩‍💻 + +_Before interacting with the Redwood community, please read and understand our [Code of Conduct](https://github.com/redwoodjs/redwood/blob/main/CODE_OF_CONDUCT.md#contributor-covenant-code-of-conduct)._ + +> ⚡️ **Quick Links** +> +> There are several contributing docs and references, each covering specific topics: +> +> 1. 🧭 **Overview and Orientation** (👈 you are here) +> 2. 📓 [Reference: Contributing to the Framework Packages](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md) +> 3. 🪜 [Step-by-step Walkthrough](contributing-walkthrough.md) (including Video Recording) +> 4. 📈 [Current Project Status](https://github.com/orgs/redwoodjs/projects/11) +> 5. 🤔 What should I work on? +> - [Good First Issue](https://redwoodjs.com/good-first-issue) +> - [Discovery Process and Open Issues](#what-should-i-work-on) + +## The Characteristics of a Contributor +More than committing code, contributing is about human collaboration and relationship. Our community mantra is **“By helping each other be successful with Redwood, we make the Redwood project successful.”** We have a specific vision for the effect this project and community will have on you — it should give you superpowers to build+create, progress in skills, and help advance your career. + +So who do you need to become to achieve this? Specifically, what characteristics, skills, and capabilities will you need to cultivate through practice? Here are our suggestions: +- Empathy +- Gratitude +- Generosity + +All of these are applicable in relation to both others and yourself. The goal of putting them into practice is to create trust that will be a catalyst for risk-taking (another word to describe this process is “learning”!). These are the ingredients necessary for productive, positive collaboration. + +And you thought all this was just about opening a PR 🤣 Yes, it’s a super rewarding experience. But that’s just the beginning! + +## What should I work on? +Even if you know the mechanics, it’s hard to get started without a starting place. Our best advice is this — dive into the Redwood Tutorial, read the docs, and build your own experiment with Redwood. Along the way, you’ll find typos, out-of-date (or missing) documentation, code that could work better, or even opportunities for improving and adding features. You’ll be engaging in the Forums and Chat and developing a feel for priorities and needs. This way, you’ll naturally follow your own interests and sooner than later intersect “things you’re interested in” + “ways to help improve Redwood”. + +There are other more direct ways to get started as well, which are outlined below. + +### Project Boards and GitHub Issues + +The Redwood Core Team is working publicly — progress is updated daily on the [Release Project Board](https://github.com/orgs/redwoodjs/projects/11). + +Eventually, all this leads you back to Redwood’s GitHub Issues page. Here you’ll find open items that need help, which are organized by labels. There are four labels helpful for contributing: +1. [Good First Issue](https://github.com/redwoodjs/redwood/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22): these items are more likely to be an accessible entry point to the Framework. It’s less about skill level and more about focused scope. +2. [Help Wanted](https://github.com/redwoodjs/redwood/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22): these items especially need contribution help from the community. +3. [Bugs 🐛](https://github.com/redwoodjs/redwood/issues?q=is%3Aissue+is%3Aopen+label%3Abug%2Fconfirmed): last but not least, we always need help with bugs. Some are technically less challenging than others. Sometimes the best way you can help is to attempt to reproduce the bug and confirm whether or not it’s still an issue. + +### Create a New Issue +Anyone can create a new Issue. If you’re not sure that your feature or idea is something to work on, start the discussion with an Issue. Describe the idea and problem + solution as clearly as possible, including examples or pseudo code if applicable. It’s also very helpful to `@` mention a maintainer or Core Team member that shares the area of interest. + +Just know that there’s a lot of Issues that shuffle every day. If no one replies, it’s just because people are busy. Reach out in the Forums, Chat, or comment in the Issue. We intend to reply to every Issue that’s opened. If yours doesn’t have a reply, then give us a nudge! + +Lastly, it can often be helpful to start with brief discussion in the community Chat or Forums. Sometimes that’s the quickest way to get feedback and a sense of priority before opening an Issue. + +## Contributing Code + +Redwood's composed of many packages that are designed to work together. Some of these packages are designed to be used outside Redwood too! + +Before you start contributing, you'll want to set up your local development environment. The Redwood repo's top-level [contributing guide](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md#local-development) walks you through this. Make sure to give it an initial read. + +For details on contributing to a specific package, see the package's README (links provided in the table below). Each README has a section named Roadmap. If you want to get involved but don't quite know how, the Roadmap's a good place to start. See anything that interests you? Go for it! And be sure to let us know—you don't have to have a finished product before opening an issue or pull request. In fact, we're big fans of [Readme Driven Development](https://tom.preston-werner.com/2010/08/23/readme-driven-development.html). + +What you want to do not on the roadmap? Well, still go for it! We love spikes and proof-of-concepts. And if you have a question, just ask! + +### RedwoodJS Framework Packages +|Package|Description| +|:-|:-| +|[`@redwoodjs/api-server`](https://github.com/redwoodjs/redwood/blob/main/packages/api-server/README.md)|Run a Redwood app using Fastify server (alternative to serverless API)| +|[`@redwoodjs/api`](https://github.com/redwoodjs/redwood/blob/main/packages/api/README.md)|Infrastructure components for your applications UI including logging, webhooks, authentication decoders and parsers, as well as tools to test custom serverless functions and webhooks| +|[`@redwoodjs/auth`](https://github.com/redwoodjs/redwood/blob/main/packages/auth/README.md#contributing)|A lightweight wrapper around popular SPA authentication libraries| +|[`@redwoodjs/cli`](https://github.com/redwoodjs/redwood/blob/main/packages/cli/README.md)|All the commands for Redwood's built-in CLI| +|[`@redwoodjs/codemods`](https://github.com/redwoodjs/redwood/blob/main/packages/codemods/README.md)|Codemods that automate upgrading a Redwood project| +|[`@redwoodjs/core`](https://github.com/redwoodjs/redwood/blob/main/packages/core/README.md)|Defines babel plugins and config files| +|[`@redwoodjs/create-redwood-app`](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/README.md)|Enables `yarn create redwood-app`—downloads the latest release of Redwood and extracts it into the supplied directory| +|[`@redwoodjs/eslint-config`](https://github.com/redwoodjs/redwood/blob/main/packages/eslint-config/README.md)|Defines Redwood's eslint config| +|[`@redwoodjs/forms`](https://github.com/redwoodjs/redwood/blob/main/packages/forms/README.md)|Provides Form helpers| +|[`@redwoodjs/graphql-server`](https://github.com/redwoodjs/redwood/blob/main/packages/graphql-server/README.md)|Exposes functions to build the GraphQL API, provides services with `context`, and a set of envelop plugins to supercharge your GraphQL API with logging, authentication, error handling, directives and more| +|[`@redwoodjs/internal`](https://github.com/redwoodjs/redwood/blob/main/packages/internal/README.md)|Provides tooling to parse Redwood configs and get a project's paths| +|[`@redwoodjs/prerender`](https://github.com/redwoodjs/redwood/blob/main/packages/prerender/README.md)|Defines functionality for prerendering static content| +|[`@redwoodjs/record`](https://github.com/redwoodjs/redwood/blob/main/packages/record/README.md)|ORM built on top of Prisma. It may be extended in the future to wrap other database access packages| +|[`@redwoodjs/router`](https://github.com/redwoodjs/redwood/blob/main/packages/router/README.md)|The built-in router for Redwood| +|[`@redwoodjs/structure`](https://github.com/redwoodjs/redwood/blob/main/packages/structure/README.md)|Provides a way to build, validate and inspect an object graph that represents a complete Redwood project| +|[`@redwoodjs/telemetry`](https://github.com/redwoodjs/redwood/blob/main/packages/telemetry/README.md)|Provides functionality for anonymous data collection| +|[`@redwoodjs/testing`](https://github.com/redwoodjs/redwood/blob/main/packages/testing/README.md)|Provides helpful defaults when testing a Redwood project's web side| +|[`@redwoodjs/web`](https://github.com/redwoodjs/redwood/blob/main/packages/web/README.md)|Configures a Redwood's app web side: wraps the Apollo Client in `RedwoodApolloProvider`; defines the Cell HOC| + +## Contributing Docs + +First off, thank you for your interest in contributing docs! Redwood prides itself on good developer experience, and that includes good documentation. + +Before you get started, there's an implicit doc-distinction that we should make explicit: all the docs on redwoodjs.com are for helping people develop apps using Redwood, while all the docs on the Redwood repo are for helping people contribute to Redwood. + +Although Developing and Contributing docs are in different places, they most definitely should be linked and referenced as needed. For example, it's appropriate to have a "Contributing" doc on redwoodjs.com that's context-appropriate, but it should link to the Framework's [CONTRIBUTING.md](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md) (the way this doc does). + +### How Redwood Thinks about Docs + +Before we get into the how-to, a little explanation. When thinking about docs, we find [divio's documentation system](https://documentation.divio.com/) really useful. It's not necessary that a doc always have all four of the dimensions listed, but if you find yourself stuck, you can ask yourself questions like "Should I be explaining? Am I explaining too much? Too little?" to reorient yourself while writing. + +### Docs for Developing Redwood Apps + +redwoodjs.com has three kinds of Developing docs: References, How To's, and The Tutorial. +You can find References and How To's within their respective directories on the redwood/redwood repo: [docs/](https://github.com/redwoodjs/redwood/tree/main/docs) and [how-to/](https://github.com/redwoodjs/redwood/tree/main/docs/how-to). + +The Tutorial is a standalone document that serves a specific purpose as an introduction to Redwood, an aspirational roadmap, and an example of developer experience. As such, it's distinct from the categories mentioned, although it's most similar to How To's. + +#### References + +References are explanation-driven how-to content. They're more direct and to-the-point than The Tutorial and How To's. The idea is much more about finding something or getting something done than any kind of learning journey. + +Before you take on a doc, you should read [Forms](forms.md) and [Router](router.md); they have the kind of content you should be striving for. They're comprehensive yet conversational. + +In general, don't be afraid to go into too much detail. We'd rather you err on the side of too much than too little. One tip for finding good content is searching the forum and repo for "prior art"—what are people talking about where this comes up? + +#### How To's + +How To's are tutorial-style content focused on a specific problem-solution. They usually have a beginner in mind (if not, they should indicate that they don't—put 'Advanced' or 'Deep-Dive', etc., in the title or introduction). How To's may include some explanatory text as asides, but they shouldn't be the majority of the content. + +#### Making a Doc Findable + +If you write it, will they read it? We think they will—if they can find it. + +After you've finished writing, step back for a moment and consider the word(s) or phrase(s) people will use to find what you just wrote. For example, let's say you were writing a doc about configuring a Redwood app. If you didn't know much about configuring a Redwood app, a heading (in the nav bar to the left) like "redwood.toml" wouldn't make much sense, even though it _is_ the main configuration file. You'd probably look for "Redwood Config" or "Settings", or type "how to change Redwood App settings" in the "Search the docs" bar up top, or in Google. + +That is to say, the most useful headings aren't always the most literal ones. Indexing is more than just underlining the "important" words in a text—it's identifying and locating the concepts and topics that are the most relevant to our readers, the users of our documentation. + +So, after you've finished writing, reread what you wrote with the intention of making a list of two to three keywords or phrases. Then, try to use each of those in three places, in this order of priority: + +- the left-nav menu title +- the page title or the first right-nav ("On this page") section title +- the introductory paragraph + +### Docs for Contributing to the Redwood Repo + +These docs are in the Framework repo, redwoodjs/redwood, and explain how to contribute to Redwood packages. They're the docs linked to in the table above. + +In general, they should consist of more straightforward explanations, are allowed to be technically heavy, and should be written for a more experienced audience. But as a best practice for collaborative projects, they should still provide a Vision + Roadmap and identify the project-point person(s) (or lead(s)). + +## What makes for a good Pull Request? +In general, we don’t have a formal structure for PRs. Our goal is to make it as efficient as possible for anyone to open a PR. But there are some good practices, which are flexible. Just keep in mind that after opening a PR there’s more to do before getting to the finish line: +1. Reviews from other contributors and maintainers +2. Update code and, after maintainer approval, merge-in changes to the `main` branch +3. Once PR is merged, it will be released and added to the next version Release Notes with a link for anyone to look at the PR and understand it. + +Some tips and advice: +- **Connect the dots and leave a breadcrumb**: link to related Issues, Forum discussions, etc. Help others follow the trail leading up to this PR. +- **A Helpful Description**: What does the code in the PR do and what problem does it solve? How can someone use the code? Code sample, Screenshot, Quick Video… Any or all of this is so so good. +- **Draft or Work in Progress**: You don’t have to finish the code to open a PR. Once you have a start, open it up! Most often the best way to move an Issue forward is to see the code in action. Also, often this helps identify ways forward before you spend a lot of time polishing. +- **Questions, Items for Discussion, Etc.**: Another reason to open a Draft PR is to ask questions and get direction via review. +- **Loop in a Maintainer for Feedback and Review**: ping someone with an `@`. And nudge again in a few days if there’s no reply. We appreciate it and truly don’t want the PR to get lost in the shuffle! +- **Next Steps**: Once the PR is merged, will there be a follow up step? If so, link to an Issue. How about Docs to-do or Docs to-merge? + +The best thing you can do is look through existing PRs, which will give you a feel for how things work and what you think is helpful. + +### Example PR +If you’re looking for an example of “what makes a good PR”, look no further than this one by Kim-Adeline: +- [Convert component generator to TS #632](https://github.com/redwoodjs/redwood/pull/632) + +Not every PR needs this much information. But it’s definitely helpful when it does! diff --git a/docs/versioned_docs/version-7.0/contributing-walkthrough.md b/docs/versioned_docs/version-7.0/contributing-walkthrough.md new file mode 100644 index 000000000000..89560c3907db --- /dev/null +++ b/docs/versioned_docs/version-7.0/contributing-walkthrough.md @@ -0,0 +1,251 @@ +--- +title: Contributing Walkthrough +description: Watch a video of the contributing process +--- + +# Contributing: Step-by-Step Walkthrough (with Video) + +> ⚡️ **Quick Links** +> +> There are several contributing docs and references, each covering specific topics: +> +> 1. 🧭 [Overview and Orientation](contributing-overview.md) +> 2. 📓 [Reference: Contributing to the Framework Packages](https://github.com/redwoodjs/redwood/blob/main/CONTRIBUTING.md) +> 3. 🪜 **Step-by-step Walkthrough** (👈 you are here) +> 4. 📈 [Current Project Status: v1 Release Board](https://github.com/orgs/redwoodjs/projects/6) +> 5. 🤔 What should I work on? +> - ["Help Wanted" v1 Triage Board](https://redwoodjs.com/good-first-issue) +> - [Discovery Process and Open Issues](contributing-overview.md#what-should-i-work-on) + + +## Video Recording of Complete Contributing Process +The following recording is from a Contributing Workshop, following through the exact steps outlined below. The Workshop includes additional topics along with Q&A discussion. + +<iframe + class="w-full" + style={{ height: '24rem' }} + src="https://www.youtube.com/embed/aZs_9g-5Ms8" + frameborder="0" + allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; modestbranding; showinfo=0; fullscreen" +></iframe> + +## Prologue: Getting Started with Redwood and GitHub (and git) +These are the foundations for contributing, which you should be familiar with before starting the walkthrough. + +[**The Redwood Tutorial**](tutorial/foreword.md) + +The best (and most fun) way to learn Redwood and the underlying tools and technologies. + +**Docs and How To** + +- Start with the [Introduction](https://github.com/redwoodjs/redwood/blob/main/README.md) Doc +- And browse through [How To's](how-to/index) + +### GitHub (and Git) +Diving into Git and the GitHub workflow can feel intimidating if you haven’t experienced it before. The good news is there’s a lot of great material to help you learn and be committing in no time! + +- [Introduction to GitHub](https://lab.github.com/githubtraining/introduction-to-github) (overview of concepts and workflow) +- [First Day on GitHub](https://lab.github.com/githubtraining/first-day-on-github) (including Git) +- [First Week on GitHub](https://lab.github.com/githubtraining/first-week-on-github) (parts 3 and 4 might be helpful) + +## The Full Workflow: From Local Development to a New PR + +### Definitions +#### Redwood “Project” +We refer to the codebase of a Redwood application as a Project. This is what you install when you run `yarn create redwood-app <path-to-directory>`. It’s the thing you are building with Redwood. + +Lastly, you’ll find the template used to create a new project (when you run create redwood-app) here in GitHub: [redwoodjs/redwood/packages/create-redwood-app/template/](https://github.com/redwoodjs/redwood/tree/main/packages/create-redwood-app/template) + +We refer to this as the **CRWA Template or Project Template**. + +#### Redwood “Framework” +The Framework is the codebase containing all the packages (and other code) that is published on NPMjs.com as `@redwoodjs/<package-name>`. The Framework repository on GitHub is here: [https://github.com/redwoodjs/redwood](https://github.com/redwoodjs/redwood) + +### Development tools +These are the tools used and recommended by the Core Team. + +**VS Code** +[Download VS Code](https://code.visualstudio.com/download) +This has quickly become the de facto editor for JavaScript and TypeScript. Additionally, we have added recommended VS Code Extensions to use when developing both the Framework and a Project. You’ll see a pop-up window asking you about installing the extensions when you open up the code. + +**GitHub Desktop** +[Download GitHub Desktop](https://desktop.github.com) +You’ll need to be comfortable using Git at the command line. But the thing we like best about GitHub Desktop is how easy it makes workflow across GitHub -- GitHub Desktop -- VS Code. You don’t have to worry about syncing permissions or finding things. You can start from a repo on GitHub.com and use Desktop to do everything from “clone and open on your computer” to returning back to the site to “open a PR on GitHub”. + +**[Mac OS] iTerm and Oh-My-Zsh** +There’s nothing wrong with Terminal (on Mac) and plain zsh or bash. (If you’re on Windows, we highly recommend using Git for Windows and Git bash.) But we enjoy using iTerm2 ([download](https://iterm2.com)) and zsh much more (combined with [Oh My Zsh](https://ohmyz.sh)). Heads up, you can get lost in the world of theming and adding plugins. We recommend keeping it simple for awhile before taking the customization deep dive +😉. + +**[Windows] Git for Windows with Git Bash or WSL(2)** +Unfortunately, there are a lot of “gotchas” when it comes to working with Javascript-based frameworks on Windows. We do our best to point out (and resolve) issues, but our priority focus is on developing a Redwood app vs contributing to the Framework. (If you’re interested, there’s a lengthy Forum conversation about this with many suggestions.) + +All that said, we highly recommend using one of the following setups to maximize your workflow: +1. Use [Git for Windows and Git Bash](how-to/windows-development-setup.md) (included in installation) +2. Use [WSL following this setup guide on the Forums](https://community.redwoodjs.com/t/windows-subsystem-for-linux-setup/2439) + +Lastly, the new Gitpod integration is a great option and only getting better. You might just want to start using it from the beginning (see section below in “Local Development Setup”). + +**Gitpod** +We recently added an integration with [Gitpod](http://gitpod.io) that automatically creates a Framework dev workspace, complete with test project, in a browser-based VS Code environment. It’s pretty amazing and we highly recommend giving it a shot. (If you’re developing on Windows, it’s also an amazing option for you anytime you run into something that isn’t working correctly or supported.) + +But don’t skip out reading the following steps in “Local Development Setup” — Gitpod uses the same workflow and tools to initialize. If you want to develop in Gitpod, you’ll need to understand how it all works. + +But when you’re ready, learn how to use it in the section at the end [“GitPod: Browser-based Development”](#gitpod-browser-based-development). + +### Local Development Setup +#### Step 1: Redwood Framework +1. **Fork the [Redwood Framework](https://github.com/redwoodjs/redwood)** into a personal repo +2. Using GitHub Desktop, **open the Framework Codebase** in a VS Code workspace +3. Commands to “**start fresh**” when working on the Framework + - `yarn install`: This installs the package dependencies in /node_modules using Yarn package manager. This command is the same as just typing `yarn`. Also, if you ever switch branches and want to make sure the install dependencies are correct, you can run `yarn install --force` (shorthand `yarn -f`). + - `git clean -fxd`: *You’ll only need to do this if you’ve already been developing and want to “start over” and reset your codebase*. This command will permanently delete everything that is .gitignored, e.g. /node_modules and /dist directories with package builds. When switching between branches, this command makes sure nothing is carried over that you don’t want. (Warning: it will delete .env files in a Redwood Project. To avoid this, you can use `git clean -fxd -e .env`.) +4. **Create a new branch** from the `main` branch +First make sure you’ve pulled all changes from the remote origin (GitHub repo) into your local branch. (If you just cloned from your fork, you should be up to date.) Then create a new branch. The nomenclature used by David Price is `<davids_initials>-description-with-hyphens`, e.g. `dsp-add-eslint-config-redwood-toml`. It's simple to use VS Code or GitHub Desktop to manage branches. You can also do this via the CLI git checkout command. + +#### Step 2: Test Project +There are several options for creating a local Redwood Project to use during development. Anytime you are developing against a test project, there are some specific gotchas to keep in mind: +- New projects always use the latest stable version of the Redwood packages, which will not be up to date with the latest Framework code in the `main` branch. +- To use the packages corresponding with the latest code in the Framework `main` branch, you can use the canary version published to NPM. All you need to do to install the canary versions is run `yarn rw upgrade --tag canary` in your Project +- Using a cloned project or repo? Just know there are likely breaking changes in `main` that haven’t been applied. You can examine merged PRs with the “breaking” label for more info. +- Just because you are using canary doesn’t mean you are using your local Framework branch code! Make sure you run `yarn rwfw project:sync`. And anytime you switch branches or get out of sync, you might need to start over beginning with the `git clean -fxd` command + +With those details out of the way, now is the time to choose an option below that meets your needs based on functionality and codebase version. + +**Build a Functional Test Project [Recommended]** +1. 👉 **Use the build script to create a test project**: From the Framework root directory, run `yarn build:test-project <path/to/directory>`. This command installs a new project using the Template codebase from your current Framework branch, it then adds Tutorial features, and finally it initializes the DB (with seed data!). It should work 90% of the time and is the recommended starting place. We also use this out-of-the-box with Gitpod. + +**Other Options to create a project** + +2. **Install a fresh project using the local Framework template code:** Sometimes you need to create a project that uses the Template codebase in your local branch of the Framework, e.g. your changes include modifications to the CRWA Template and need to be tested. Running the command above is exactly the same as `yarn create redwood- app …`, only it runs the command from your local Framework package using the local Template codebase. Note: this is the same command used at the start of the `yarn build:test-project` command. +``` +yarn babel-node packages/create-redwood-app/src/create-redwood-app.js <path/to/project> +``` + +3. **Clone the Redwood Tutorial App repo:** This is the codebase to use when starting the Redwood Tutorial Part 2. It is updated to the latest version and has the Blog features. This is often something we use for local development. Note: be sure to upgrade to canary and look out for breaking changes coming with the next release. + + +4. **Install a fresh project**: `yarn create redwood-app <path/to/project>` If you just need a fresh installation 1) using the latest version template codebase and 2) without any features, then just install a new Redwood project. Note: this can have the same issues regarding the need to upgrade to canary and addressing breaking changes (see Notes from items 2 and 3 above). + +> Note: All the options above currently set the language to JavaScript. If you would like to work with TypeScript, you can add the option `--typescript` to either of the commands that run the create-redwood-app installation. + +#### Step 3: Link the local Framework with the local test Project +Once you work on the Framework code, you’ll most often want to run the code in a Redwood app for testing. However, the Redwood Project you created for testing is currently using the latest version (or canary) packages of Redwood published on NPMjs.com, e.g. [@redwoodjs/core](https://www.npmjs.com/package/@redwoodjs/core) + +So we’ll use the Redwood Framework (rwfw) command to connect our local Framework and test Projects, which allows the Project to run on the code for Packages we are currently developing. + +Run this command from the CLI in your test Project: +``` +RWFW_PATH=<framework directory> yarn rwfw project:sync +``` + +For Example: +``` +cd redwood-project +RWFW_PATH=~/redwood yarn rwfw project:sync +``` + +RWFW_PATH is the path to your local copy of the Redwood Framework. _Once provided to rwfw, it'll remember it and you shouldn't have to provide it again unless you move it._ + +> **Heads up for Windows Devs** +> Depending on your dev setup, Windows might balk at you setting the env var RWFW_PATH at the beginning of the command like this. If so, try prepending with `cross-env`, e.g. `yarn cross-env RWFW_PATH=~/redwood yarn rwfw` ... Or you can add the env var and value directly to your shell before running the command. + +As project:sync starts up, it'll start logging to the console. In order, it: +1. cleans and builds the framework +2. copies the framework's dependencies to your project +3. runs yarn install in your project +4. copies over the framework's packages to your project +5. waits for changes + +Step two is the only explicit change you'll see to your project. You'll see that a ton of packages have been added to your project's root package.json. + +All done? You’re ready to kill the link process with “ctrl + c”. You’ll need to confirm your root package.json no longer has the added dependencies. And, if you want to reset your test-project, you should run `yarn install --force`. + +#### Step 4: Framework Package(s) Local Testing +Within your Framework directory, use the following tools and commands to test your code: +1. **Build the packages**: `yarn build` + - to delete all previous build directories: yarn build:clean +2. **Syntax and Formatting**: `yarn lint` + - to fix errors or warnings: `yarn lint:fix` +3. **Run unit tests for each package**: `yarn test` +4. **Run through the Cypress E2E integration tests**: `yarn e2e` +5. **Check Yarn resolutions and package.json format**: `yarn check` + +All of these checks are included in Redwood’s GitHub PR Continuous Integration (CI) automation. However, it’s good practice to understand what they do by using them locally. The E2E tests aren’t something we use every time anymore (because it takes a while), but you should learn how to use it because it comes in handy when your code is failing tests on GitHub and you need to diagnose. + +> **Heads up for Windows Devs** +> The Cypress E2E does *not* work on Windows. Two options are available if needed: +> 1. Use Gitpod (see related section for info) +> 2. When you create a PR, just ask for help from a maintainer + +#### Step 5: Open a PR 🚀 +You’ve made it to the fun part! It’s time to use the code you’re working on to create a new PR into the Redwood Framework `main` branch. + +We use GitHub Desktop to walk through the process of: +- Committing my changes to my development branch +- Publishing (pushing) my branch and changes to my GitHub repo fork of the Redwood Framework +- Opening a PR requesting to merge my forked-repo branch into the Redwood Framework `main` branch + +> While we use GitHub Desktop as an example, the basic process outlined above is the same whether using the command line or other clients. + +1. **Commit Files:** Using GitHub Desktop, browse to your local Redwood Framework repository and select the current branch you're working on. On the left-hand side, you'll see the files that have been modified, added, or removed. Check the boxes for the files you want to include in the PR. Below the file list, you'll see two text boxes and a "Commit to <your-branch-name>" button. Write a short commit message in the first box. If you want to add a longer description then you can do so in the second box. Click the "Commit to ..." button to commit the changes to the branch. The files are now committed under that commit message. + +2. **Push Files:** After committing, you should see an option appear with the count of local commits and a button to "Push origin." If you're ready to push those changes to the remote branch, click that button. Otherwise, you can keep working and add more commits using the process in step 1. + +3. **Create Pull Request:** Once the commit(s) have been pushed, you should see another option for "Create Pull Request." This will open a browser window to GitHub's "Open a pull request" form. Fill out the appropriate information, check the box to "Allow edits by maintainers," and submit! + +> If you are following along and are not using GitHub Desktop, after pushing your commits, you can open a pull request by visiting [github.com](https://github.com) and browsing to your fork. There should be a button at the top to submit a pull request. + +You have successfully submitted your PR! + +**Note:** Make sure you check the box that allows project maintainers to update your branch. This option is found on the "Open a pull request" form below the description textbox. Checking this option helps move a PR forward more quickly, as branches always need to be updated from `main` before we can merge. + +**When is my code “ready” to open a PR?** +Most of the action, communication, and decisions happen within a PR. A common mistake new contributors make is *waiting* until their code is “perfect” before opening a PR. Assuming your PR has some code changes, it’s great practice to open a [Draft PR](https://github.blog/2019-02-14-introducing-draft-pull-requests/) (setting during the PR creation), which you can use to start discussion and ask questions. PRs are closed all the time without being merged, often because they are replaced by another PR resulting from decisions and discussion. It’s part of the process. More importantly, it means collaboration is happening! + +What isn’t a fun experience is spending a whole bunch of time on code that ends up not being the correct direction or is unnecessary/redundant to something that already exists. This is a part of the learning process. But it’s another reason to open a draft PR sooner than later to get confirmation and questions out of the way before investing time into refining and details. + +When in doubt, just try first and ask for help and direction! + +Refer to the [What makes for a good Pull Request?](contributing-overview.md#what-makes-for-a-good-pull-request) section in [Contributing Overview](contributing-overview.md)for general good practices when opening PR. + +### Gitpod: Browser-based Development +[Gitpod](http://gitpod.io) has recently been integrated with Redwood to JustWork™ with any branch or PR. When a virtual Gitpod workspace is initialized, it automatically: +1. Checks-out the code from your branch or PR +2. Run Yarn installation +3. Creates the functional Test Project via `yarn build:test-project` +4. Syncs the Framework code with the Test Project +5. Starts the Test Project dev server +6. 🤯 + +> **Chrome works best** +> We’ve noticed some bugs using Gitpod with either Brave or Safari. Currently we recommend sticking to Chrome (although it’s worth trying out Edge and Firefox). + +**Demo of Gitpod** +David briefly walks-through an automatically prebuilt Gitpod workspace here: +- [Gitpod + RedwoodJS 3-minute Walkthrough](https://youtu.be/_kMuTW3x--s) + +Make sure you watch until the end where David shows how to set up your integration with GitHub and VS Code sync. 🤩 + +**Start a Gitpod Workspace** +There are two ways to get started with Gitpod + Redwood. + +*Option 1: Open a PR* +Every PR will trigger a Gitpod prebuild using the PR branch. Just look for Gitpod in the list of checks at the bottom of the PR — click the “Details” link and away you’ll go! + +<img width="350" alt="PR Checks" src="https://user-images.githubusercontent.com/2951/151928088-58e26232-b752-4471-adf4-a2bc59b79ac8.png" /> + +*Option 2: Use the link from your project or branch* + +You can initialize a workspace using this URL pattern: + +``` +https://gitpod.io/#<URL for branch or project> +``` + +For example, this link will start a workspace using the RedwoodJS main branch: +- https://gitpod.io/#https://github.com/redwoodjs/redwood + +And this link will start a workspace for a PR #3434: +- https://gitpod.io/#https://github.com/redwoodjs/redwood/pull/3434 + + diff --git a/docs/versioned_docs/version-7.0/cors.md b/docs/versioned_docs/version-7.0/cors.md new file mode 100644 index 000000000000..5325cedc2ba0 --- /dev/null +++ b/docs/versioned_docs/version-7.0/cors.md @@ -0,0 +1,263 @@ +--- +title: Cross-Origin Resource Sharing +description: For when you need to worry about CORS +--- + +# CORS + +CORS stands for [Cross Origin Resource Sharing](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS). In a nutshell, by default, browsers aren't allowed to access resources outside their own domain. + +## When you need to worry about CORS + +If your api and web sides are deployed to different domains, you'll have to worry about CORS. For example, if your web side is deployed to `example.com` but your api is `api.example.com`. For security reasons your browser will not allow XHR requests (like the kind that the GraphQL client makes) to a domain other than the one currently in the browser's address bar. + +This will become obvious when you point your browser to your site and see none of your GraphQL data. When you look in the web inspector you'll see a message along the lines of: + +> ⛔️ Access to fetch https://api.example.com has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. + +## Avoiding CORS + +Dealing with CORS can complicate your app and make it harder to deploy to new hosts, run in different environments, etc. Is there a way to avoid CORS altogether? + +Yes! If you can add a proxy between your web and api sides, all requests will *appear* to be going to and from the same domain (the web side, even though behind the scenes they are forwarded somewhere else). This functionality is included automatically with hosts like [Netlify](https://docs.netlify.com/routing/redirects/rewrites-proxies/#proxy-to-another-service) or [Vercel](https://vercel.com/docs/cli#project-configuration/rewrites). With a host like [Render](https://render-web.onrender.com/docs/deploy-redwood#deployment) you can enable a proxy with a simple config option. Most providers should provide this functionality through a combination of provider-specific config and/or web server configuration. + +## GraphQL Config + +You'll need to add CORS headers to GraphQL responses. You can do this easily enough by adding the `cors` option in `api/src/functions/graphql.js` (or `graphql.ts`): + +```diff +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, ++ cors: { ++ origin: 'https://www.example.com', // <-- web side domain ++ }, + onException: () => { + db.$disconnect() + }, +}) +``` + +Note that the `origin` needs to be a complete URL including the scheme (`https`). This is the domain that requests are allowed to come *from*. In this example we assume the web side is served from `https://www.example.com`. If you have multiple servers that should be allowed to access the api, you can pass an array of them instead: + +```jsx +cors: { + origin: ['https://example.com', 'https://www.example.com'] +}, +``` + +The proper one will be included in the CORS header depending on where the response came from. + +## Authentication Config + +The following config only applies if you're using [dbAuth](authentication.md#self-hosted-auth-installation-and-setup), which is Redwood's own cookie-based auth system. + +You'll need to configure several things: + +* Add CORS config for GraphQL +* Add CORS config for the auth function +* Cookie config for the auth function +* Allow sending of credentials in GraphQL XHR requests +* Allow sending of credentials in auth function requests + +Here's how you configure each of these: + +### GraphQL CORS Config + +You'll need to add CORS headers to GraphQL responses, and let the browser know to send up cookies with any requests. Add the `cors` option in `api/src/functions/graphql.js` (or `graphql.ts`) with an additional `credentials` property: + +```diff +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, ++ cors: { ++ origin: 'https://www.example.com', // <-- web side domain ++ credentials: true, ++ }, + onException: () => { + db.$disconnect() + }, +}) +``` + +`origin` is the domain(s) that requests come *from* (the web side). + +### Auth CORS Config + +Similar to the `cors` options being sent to GraphQL, you can set similar options in `api/src/functions/auth.js` (or `auth.ts`): + +```diff +const authHandler = new DbAuthHandler(event, context, { + db: db, + authModelAccessor: 'user', + authFields: { + id: 'id', + username: 'email', + hashedPassword: 'hashedPassword', + salt: 'salt', + resetToken: 'resetToken', + resetTokenExpiresAt: 'resetTokenExpiresAt', + }, ++ cors: { ++ origin: 'https://www.example.com', // <-- web side domain ++ credentials: true, ++ }, + cookie: { + HttpOnly: true, + Path: '/', + SameSite: 'Strict', + Secure: true, + }, + forgotPassword: forgotPasswordOptions, + login: loginOptions, + resetPassword: resetPasswordOptions, + signup: signupOptions, +}) +``` + +Just like the GraphQL config, `origin` is the domain(s) that requests come *from* (the web side). + +### Cookie Config + +In order to be able accept cookies from another domain we'll need to make a change to the `SameSite` option in `api/src/functions/auth.js` and set it to `None`: + +```jsx {4} + cookie: { + HttpOnly: true, + Path: '/', + SameSite: 'None', + Secure: true, + }, +``` + +### GraphQL XHR Credentials + +Next we need to tell the GraphQL client to include credentials (the dbAuth cookie) in any requests. This config goes in `web/src/App.{ts,js}`: + +```jsx {7-12} +import { AuthProvider, useAuth } from 'src/auth' + +const App = () => ( + <FatalErrorBoundary page={FatalErrorPage}> + <RedwoodProvider titleTemplate="%PageTitle | %AppTitle"> + <AuthProvider type="dbAuth"> + <RedwoodApolloProvider + useAuth={useAuth} + graphQLClientConfig={{ + httpLinkConfig: { credentials: 'include' }, + }} + > + <Routes /> + </RedwoodApolloProvider> + </AuthProvider> + </RedwoodProvider> + </FatalErrorBoundary> +) +``` + +### Auth XHR Credentials + +Finally, we need to tell dbAuth to include credentials in its own XHR requests. We'll do this within `web/src/auth.{ts,js}` when creating the `AuthProvider`: + +```jsx {3-5} +import { createDbAuthClient, createAuth } from '@redwoodjs/auth-dbauth-web' + +const dbAuthClient = createDbAuthClient({ + fetchConfig: { credentials: 'include' }, +}) + +export const { AuthProvider, useAuth } = createAuth(dbAuthClient) +``` + +## Testing CORS Locally + +If you've made the configuration changes above, `localhost` testing should continue working as normal. But, if you want to make sure your CORS config works without deploying to the internet somewhere, you'll need to do some extra work. + +### Serving Sides to the Internet + +First, you need to get the web and api sides to be serving from different hosts. A tool like [ngrok](https://ngrok.com/) or [localhost.run](https://localhost.run/) allows you to serve your local development environment over a real domain to the rest of the internet (on both `http` and `https`). + +You'll need to start two tunnels, one for the web side (this example assumes ngrok): + +```bash +> ngrok http 8910 + +Session Status online +Account Your Name (Plan: Pro) +Version 2.3.40 +Region United States (us) +Web Interface http://127.0.0.1:4040 +Forwarding http://3c9913de0c00.ngrok.io -> http://localhost:8910 +Forwarding https://3c9913de0c00.ngrok.io -> http://localhost:8910 +``` + +And another for the api side: + +```bash +> ngrok http 8911 + +Session Status online +Account Your Name (Plan: Pro) +Version 2.3.40 +Region United States (us) +Web Interface http://127.0.0.1:4040 +Forwarding http://fb6d701c44b5.ngrok.io -> http://localhost:8911 +Forwarding https://fb6d701c44b5.ngrok.io -> http://localhost:8911 +``` + +Note the two different domains. Copy the `https` domain from the api side because we'll need it in a moment. Even if the Redwood dev server isn't running you can leave these tunnels running, and when the dev server *does* start, they'll just start on those domains again. + +### `redwood.toml` Config + +You'll need to make two changes here: + +1. Bind the server to all network interfaces +2. Point the web side to the api's domain + +Normally the dev server only binds to `127.0.0.1` (home sweet home) which means you can only access it from your local machine using `localhost` or `127.0.0.1`. To tell it to bind to all network interfaces, and to be available to the outside world, add this `host` option: + +```toml {4} +[web] + title = "Redwood App" + port = 8910 + host = '0.0.0.0' + apiUrl = '/.redwood/functions' + includeEnvironmentVariables = [] +[api] + port = 8911 +[browser] + open = true +``` + +We'll also need to tell the web side where the api side lives. Update the `apiUrl` to whatever domain your api side is running on (remember the domain you copied from from ngrok): + +```toml {5} +[web] + title = "Redwood App" + port = 8910 + host = '0.0.0.0' + apiUrl = 'https://fb6d701c44b5.ngrok.io' + includeEnvironmentVariables = [] +[api] + port = 8911 +[browser] + open = true +``` + +Where you get this domain from will depend on how you expose your app to the outside world (this example assumes ngrok). + +### Starting the Dev Server + +You'll need to apply an option when starting the dev server to tell it to accept requests from any host, not just `localhost`: + +```bash +> yarn rw dev --fwd="--allowed-hosts all" +``` + +### Wrapping Up + +Now you should be able to open the web side's domain in a browser and use your site as usual. Test that GraphQL requests work, as well as authentication if you are using dbAuth. diff --git a/docs/versioned_docs/version-7.0/create-redwood-app.md b/docs/versioned_docs/version-7.0/create-redwood-app.md new file mode 100644 index 000000000000..61e2d15b5dfe --- /dev/null +++ b/docs/versioned_docs/version-7.0/create-redwood-app.md @@ -0,0 +1,103 @@ +--- +slug: create-redwood-app +description: Instructions and usage examples for Create Redwood App +--- + +# Create Redwood App + +To get up and running with Redwood, you can use Create Redwood App: + +```terminal +yarn create redwood-app <your-app-name> +``` + +## Set up for success +Redwood requires that you're running Node version 20 or higher. + +If you're running Node version 21.0.0 or higher, you can still use Create Redwood App, but it may make your project incompatible with some deploy targets, such as AWS Lambdas. + +To see what version of Node you're running, you can run the following command in your terminal: + +```terminal +node -v +``` + +If you need to update your version of Node or run multiple versions of Node, we recommend installing nvm and have [documentation about how to get up and running.](./how-to/using-nvm) + +You also need to have yarn version 1.22.21 or higher installed. To see what version of yarn you're running, you can run the following command in your terminal: + +```terminal +yarn -v +``` + +To upgrade your version of yarn, [you can refer to the yarn documentation](https://yarnpkg.com/getting-started/install). + +## What you can expect + +### Select your preferred language +Options: TypeScript (default) or JavaScript + +If you choose JavaScript, you can always [add TypeScript later](/docs/typescript/introduction#converting-a-javascript-project-to-typescript). + +### Do you want to initialize a git repo? +Options: yes (default) or no + +If you mark "yes", then it will ask you to **Enter a commit message**. The default message is "Initial commit." + +You can always initialize a git repo later and add a commit message by running the following commands in your terminal: + +```terminal +cd <your-app-name> +git init +git add . +git commit -m "Initial commit" +``` + +If you're new to git, here's a recommended playlist on YouTube: [git for Beginners](https://www.youtube.com/playlist?list=PLrz61zkUHJJFmfTgOVL1mBw_NZcgGe882) + +### Do you want to run `yarn install`? +Options: yes (default) or no + +_NOTE: This prompt will only display if you're running yarn, version 1._ + +This command will download all of your project's dependencies. + +If you mark "no", you can always run this command later: + +```terminal +cd <your-app-name> +yarn install +``` + +## Running the development server + +Once the Create Redwood app has finished running, you can start your development server by running the following command: + +```terminal +cd <your-app-name> +yarn rw dev +``` + +- This will start your development server at `http://localhost:8910`. +- Your API will be available at `http://localhost:8911`. +- You can visit the Redwood GraphQL Playground at `http://localhost:8911/graphql`. + +## Flags +You can by pass these prompts by using the following flags: + +| Flag | Alias | What it does | +| :--- | :--- | :--- | +| `--yarn-install` | | Run `yarn install` | +| `--typescript` | `ts` | Set TypeScript as the preferred language (pass `--no-typescript` to use JavaScript) | +| `--overwrite` | | Overwrites the existing directory, if it has the same name | +| `--git-init` | `git` | Initializes a git repository | +| `--commit-message "Initial commit"` | `m` | Specifies the initial git commit message | +| `--yes` | `y` | Automatically select all defaults | + +For example, here's the project with all flags enabled: + +```terminal +yarn create redwood-app <your-app-name> --typescript --git-init --commit-message "Initial commit" --yarn-install +``` + + diff --git a/docs/versioned_docs/version-7.0/custom-web-index.md b/docs/versioned_docs/version-7.0/custom-web-index.md new file mode 100644 index 000000000000..8fd30f548856 --- /dev/null +++ b/docs/versioned_docs/version-7.0/custom-web-index.md @@ -0,0 +1,51 @@ +--- +description: Change how App mounts to the DOM +--- + +# Custom Web Index + +:::warning This doc only applies to projects using Webpack + +As of v6, all Redwood projects use Vite by default. +When switching projects to Vite, we made the decision to add the the entry file, `web/src/entry.client.{jsx,tsx}`, back to projects. + +If you're using Webpack, this is all still applicable—keep reading. + +::: + +You may have noticed that there's no call to `ReactDOM.render` in your Redwood app. +That's because Redwood automatically mounts the `App` component in `web/src/App.js` to the DOM. +But if you need to customize how this happens, you can provide a file named `index.js` in `web/src` and Redwood will use that instead. + +## Setup + +To make this easy, there's a setup command that'll give you the file you need where you need it: + +``` +yarn rw setup custom-web-index +``` + +This generates a file named `index.js` in `web/src` that looks like this: + +```jsx title="web/src/index.js" +import { hydrateRoot, createRoot } from 'react-dom/client' + +import App from './App' +/** + * When `#redwood-app` isn't empty then it's very likely that you're using + * prerendering. So React attaches event listeners to the existing markup + * rather than replacing it. + * https://reactjs.org/docs/react-dom.html#hydrate + */ +const rootElement = document.getElementById('redwood-app') + +if (rootElement.hasChildNodes()) { + hydrateRoot(redwoodAppElement, <App />) +} else { + const root = createRoot(redwoodAppElement) + root.render(<App />) +} +``` + +This's actually the same file Redwood uses [internally](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/entry/index.js). +So even if you don't customize anything, things still work the way they did. diff --git a/docs/versioned_docs/version-7.0/data-migrations.md b/docs/versioned_docs/version-7.0/data-migrations.md new file mode 100644 index 000000000000..3f7d32d389fd --- /dev/null +++ b/docs/versioned_docs/version-7.0/data-migrations.md @@ -0,0 +1,159 @@ +--- +description: Track changes to database content +--- + +# Data Migrations + +> Data Migrations are available as of RedwoodJS v0.15 + +There are two kinds of changes you can make to your database: + +* Changes to structure +* Changes to content + +In Redwood, [Prisma Migrate](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-migrate) takes care of codifying changes to your database *structure* in code by creating a snapshot of changes to your database that can be reliably repeated to end up in some known state. + +To track changes to your database *content*, Redwood includes a feature we call **Data Migration**. As your app evolves and you move data around, you need a way to consistently declare how that data should move. + +Imagine a `User` model that contains several columns for user preferences. Over time, you may end up with more and more preferences to the point that you have more preference-related columns in the table than you do data unique to the user! This is a common occurrence as applications grow. You decide that the app should have a new model, `Preference`, to keep track of them all (and `Preference` will have a foreign key `userId` to reference it back to its `User`). You'll use Prisma Migrate to create the new `Preference` model, but how do you copy the preference data to the new table? Data migrations to the rescue! + +## Installing + +Just like Prisma, we will store which data migrations have run in the database itself. We'll create a new database table `DataMigration` to keep track of which ones have run already. + +Rather than create this model by hand, Redwood includes a CLI tool to add the model to `schema.prisma` and create the DB migration that adds the table to the database: +``` +yarn rw data-migrate install +``` +You'll see a new directory created at `api/db/dataMigrations` which will store our individual migration tasks. + +Take a look at `schema.prisma` to see the new model definition: + +```jsx title="api/db/schema.prisma" +model RW_DataMigration { + version String @id + name String + startedAt DateTime + finishedAt DateTime +} +``` + +The install script also ran `yarn rw prisma migrate dev --create-only` automatically so you have a DB migration ready to go. You just need to run the `prisma migrate dev` command to apply it: +``` +yarn rw prisma migrate dev +``` +## Creating a New Data Migration + +Data migrations are just plain Typescript or Javascript files which export a single anonymous function that is given a single argument—an instance of `PrismaClient` called `db` that you can use to access your database. The files have a simple naming convention: +``` +{version}-{name}.js +``` +Where `version` is a timestamp, like `20200721123456` (an ISO8601 datetime without any special characters or zone identifier), and `name` is a param-case human readable name for the migration, like `copy-preferences`. + +To create a data migration we have a generator: +``` +yarn rw generate dataMigration copyPreferences +``` +This will create `api/db/dataMigrations/20200721123456-copy-preferences.js`: + +```jsx title="api/db/dataMigrations/20200721123456-copy-preferences.js" +export default async ({ db }) => { + // Migration here... +} +``` + +> **Why such a long name?** +> +> So that if multiple developers are creating data migrations, the chances of them creating one with the exact same filename is essentially zero, and they will all run in a predictable order—oldest to newest. + +Now it's up to you to define your data migration. In our user/preference example, it may look something like: + +```jsx title="api/db/dataMigrations/20200721123456-copy-preferences.js" +const asyncForEach = async (array, callback) => { + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array) + } +} + +export default async ({ db }) => { + const users = await db.user.findMany() + + asyncForEach(users, async (user) => { + await db.preference.create({ + data: { + newsletter: user.newsletter, + frequency: user.frequency, + theme: user.theme, + user: { connect: { id: user.id } } + } + }) + }) +} +``` + +This loops through each existing `User` and creates a new `Preference` record containing each of the preference-related fields from `User`. + +> Note that in a case like this where you're copying data to a new table, you would probably delete the columns from `User` afterwards. This needs to be a two step process! +> +> 1. Create the new table (db migration) and then move the data over (data migration) +> 2. Remove the unneeded columns from `User` +> +> When going to production, you would need to run this as two separate deploys to ensure no data is lost. +> +> The reason is that all DB migrations are run and *then* all data migrations. So if you had two DB migrations (one to create `Preference` and one to drop the unneeded columns from `User`) they would both run before the Data Migration, so the columns containing the preferences are gone before the data migration gets a chance to copy them over! +> +> **Remember**: Any destructive action on the database (removing a table or column especially) needs to be a two step process to avoid data loss. + +## Running a Data Migration + +When you're ready, you can execute your data migration with `data-migrate`'s `up` command: +``` +yarn rw data-migrate up +``` +This goes through each file in `api/db/dataMigrations`, compares it against the list of migrations that have already run according to the `DataMigration` table in the database, and executes any that aren't present in that table, sorted oldest to newest based on the timestamp in the filename. + +Any logging statements (like `console.info()`) you include in your data migration script will be output to the console as the script is running. + +If the script encounters an error, the process will abort, skipping any following data migrations. + +> The example data migration above didn't include this for brevity, but you should always run your data migration [inside a transaction](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/transactions#bulk-operations-experimental) so that if any errors occur during execution the database will not be left in an inconsistent state where only *some* of your changes were performed. + +## Long-term Maintainability + +Ideally you can run all database migrations and data migrations from scratch (like when a new developer joins the team) and have them execute correctly. Unfortunately you don't get that ideal scenario by default. + +Take our example above—what happens when a new developer comes long and attempts to setup their database? All DB migrations will run first (including the one that drops the preference-related columns from `User`) before the data migrations run. They will get an error when they try to read something like `user.newsletter` and that column doesn't exist! + +One technique to combat this is to check for the existence of these columns before the data migration does anything. If `user.newsletter` doesn't exist, then don't bother running the data migration at all and assume that your [seed data](cli-commands.md#prisma-db-seed) is already in the correct format: + +```jsx {4,15} +export default async ({ db }) => { + const users = await db.user.findMany() + + if (typeof user.newsletter !== undefined) { + asyncForEach(users, async (user) => { + await db.preference.create({ + data: { + newsletter: user.newsletter, + frequency: user.frequency, + theme: user.theme, + user: { connect: { id: user.id } } + } + }) + }) + } +} +``` + +## Lifecycle Summary + +Run once: +``` +yarn rw data-migrate install +yarn rw prisma migrate dev +``` +Run every time you need a new data migration: +``` +yarn rw generate dataMigration migrationName +yarn rw data-migrate up +``` diff --git a/docs/versioned_docs/version-7.0/deploy/baremetal.md b/docs/versioned_docs/version-7.0/deploy/baremetal.md new file mode 100644 index 000000000000..aec882f28381 --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/baremetal.md @@ -0,0 +1,797 @@ +--- +description: Have complete control by hosting your own code +--- + +# Introduction to Baremetal + +Once you've grown beyond the confines and limitations of the cloud deployment providers, it's time to get serious: hosting your own code on big iron. Prepare for performance like you've only dreamed of! Also be prepared for IT and infrastructure responsibilities like you've only had nightmares of. + +With Redwood's Baremetal deployment option, the source (like your dev machine) will SSH into one or more remote machines and execute commands in order to update your codebase, run any database migrations and restart services. + +Deploying from a client (like your own development machine) consists of running a single command: + +First time deploy: + +```bash +yarn rw deploy baremetal production --first-run +``` + +Subsequent deploys: + +```bash +yarn rw deploy baremetal production +``` + +:::warning Deploying to baremetal is an advanced topic + +If you haven't done any kind of remote server work before, you may be in a little over your head to start with. But don't worry: until relatively recently (cloud computing, serverless, lambda functions) this is how all websites were deployed, so we've got a good 30 years of experience getting this working! + +If you're new to connecting to remote servers, check out the [Intro to Servers](/docs/intro-to-servers) guide we wrote just for you. + +::: + +## Deployment Lifecycle + +The Baremetal deploy runs several commands in sequence. These can be customized, to an extent, and some of them skipped completely: + +1. `git clone --depth=1` to retrieve the latest code +2. Symlink the latest deploy `.env` to the shared `.env` in the app dir +3. `yarn install` - installs dependencies +4. Runs prisma DB migrations +5. Generate Prisma client libs +6. Runs [data migrations](/docs/data-migrations) +7. Builds the web and/or api sides +8. Symlink the latest deploy dir to `current` in the app dir +9. Restart the serving process(es) +10. Remove older deploy directories + +### First Run Lifecycle + +If the `--first-run` flag is specified then step 6 above will execute the following commands instead: + - `pm2 start [service]` - starts the serving process(es) + - `pm2 save` - saves the running services to the deploy users config file for future startup. See [Starting on Reboot](#starting-on-reboot) for further information + +## Directory Structure + +Once you're deployed and running, you'll find a directory structure that looks like this: + +``` +└── var + └── www + └── myapp + ├── .env <────────────────┐ + ├── current ───symlink──┐ │ + └── releases │ │ + └── 20220420120000 <┘ │ + ├── .env ─symlink─┘ + ├── api + ├── web + ├── ... +``` + +There's a symlink `current` pointing to directory named for a timestamp (the timestamp of the last deploy) and within that is your codebase, the latest revision having been `clone`d. The `.env` file in that directory is then symlinked back out to the one in the root of your app path, so that it can be shared across deployments. + +So a reference to `/var/www/myapp/current` will always be the latest deployed version of your codebase. If you wanted to [setup nginx to serve your web side](#redwood-serves-api-nginx-serves-web-side), you would point it to `/var/www/myapp/current/web/dist` as the `root` and it will always be serving the latest code: a new deploy will change the `current` symlink and nginx will start serving the new files instantaneously. + +## App Setup + +Run the following to add the required config files to your codebase: + +```bash +yarn rw setup deploy baremetal +``` + +This will add dependencies to your `package.json` and create two files: + +1. `deploy.toml` contains server config for knowing which machines to connect to and which commands to run +2. `ecosystem.config.js` for [PM2](https://pm2.keymetrics.io/) to know what service(s) to monitor + +If you see an error from `gyp` you may need to add some additional dependencies before `yarn install` will be able to complete. See the README for `node-type` for more info: https://github.com/nodejs/node-gyp#installation + +### Configuration + +Before your first deploy you'll need to add some configuration. + +#### ecosystem.config.js + +By default, baremetal assumes you want to run the `yarn rw serve` command, which provides both the web and api sides. The web side will be available on port 8910 unless you update your `redwood.toml` file to make it available on another port. The default generated `ecosystem.config.js` will contain this config only, within a service called "serve": + +```jsx title="ecosystem.config.js" +module.exports = { + apps: [ + { + name: 'serve', + cwd: 'current', + script: 'node_modules/.bin/rw', + args: 'serve', + instances: 'max', + exec_mode: 'cluster', + wait_ready: true, + listen_timeout: 10000, + }, + ], +} +``` + +If you follow our recommended config [below](#redwood-serves-api-nginx-serves-web-side), you could update this to only serve the api side, because the web side will be handled by [nginx](https://www.nginx.com/). That could look like: + +```jsx title="ecosystem.config.js" +module.exports = { + apps: [ + { + name: 'api', + cwd: 'current', + script: 'node_modules/.bin/rw', + args: 'serve api', + instances: 'max', + exec_mode: 'cluster', + wait_ready: true, + listen_timeout: 10000, + }, + ], +} +``` + +#### deploy.toml + +This file contains your server configuration: which servers to connect to and which commands to run on them. + +```toml title="deploy.toml" +[[production.servers]] +host = "server.com" +username = "user" +agentForward = true +sides = ["api","web"] +packageManagerCommand = "yarn" +monitorCommand = "pm2" +path = "/var/www/app" +processNames = ["serve"] +repo = "git@github.com:myorg/myapp.git" +branch = "main" +keepReleases = 5 +``` + +This lists a single server, in the `production` environment, providing the hostname and connection details (`username` and `agentForward`), which `sides` are hosted on this server (by default it's both web and api sides), the `path` to the app code and then which PM2 service names should be (re)started on this server. + +#### Config Options + +* `host` - hostname to the server +* `port` - [optional] ssh port for server connection, defaults to 22 +* `username` - the user to login as +* `password` - [optional] if you are using password authentication, include that here +* `privateKey` - [optional] if you connect with a private key, include the content of the key here, as a buffer: `privateKey: Buffer.from('...')`. Use this *or* `privateKeyPath`, not both. +* `privateKeyPath` - [optional] if you connect with a private key, include the path to the key here: `privateKeyPath: path.join('path','to','key.pem')` Use this *or* `privateKey`, not both. +* `passphrase` - [optional] if your private key contains a passphrase, enter it here +* `agentForward` - [optional] if you have [agent forwarding](https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding) enabled, set this to `true` and your own credentials will be used for further SSH connections from the server (like when connecting to GitHub) +* `sides` - An array of sides that will be built on this server +* `packageManagerCommand` - The package manager bin to call, defaults to `yarn` but could be updated to be prefixed with another command first, for example: `doppler run -- yarn` +* `monitorCommand` - The monitor bin to call, defaults to `pm2` but could be updated to be prefixed with another command first, for example: `doppler run -- pm2` +* `path` - The absolute path to the root of the application on the server +* `migrate` - [optional] Whether or not to run migration processes on this server, defaults to `true` +* `processNames` - An array of service names from `ecosystem.config.js` which will be (re)started on a successful deploy +* `repo` - The path to the git repo to clone +* `branch` - [optional] The branch to deploy (defaults to `main`) +* `keepReleases` - [optional] The number of previous releases to keep on the server, including the one currently being served (defaults to 5) + +The easiest connection method is generally to include your own public key in the server's `~/.ssh/authorized_keys` mannually or by running `ssh-copy-id user@server.com` from your local machine, [enable agent forwarding](https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding), and then set `agentForward = true` in `deploy.toml`. This will allow you to use your own credentials when pulling code from GitHub (required for private repos). Otherwise you can create a [deploy key](https://docs.github.com/en/developers/overview/managing-deploy-keys) and keep it on the server. + +#### Using Environment Variables in `deploy.toml` + +Similarly to `redwood.toml`, `deploy.toml` supports interpolation of environment variables. For more details on how to use the environment variable interpolation see [Using Environment Variables in redwood.toml](/docs/app-configuration-redwood-toml#using-environment-variables-in-redwoodtoml) + +#### Multiple Servers + +If you start horizontally scaling your application you may find it necessary to have the web and api sides served from different servers. The configuration files can accommodate this: + +```toml title="deploy.toml" +[[production.servers]] +host = "api.server.com" +username = "user" +agentForward = true +sides = ["api"] +path = "/var/www/app" +processNames = ["api"] + +[[production.servers]] +host = "web.server.com" +username = "user" +agentForward = true +sides = ["web"] +path = "/var/www/app" +migrate = false +processNames = ["web"] +``` + +```jsx title="ecosystem.config.js" +module.exports = { + apps: [ + { + name: 'api', + cwd: 'current', + script: 'node_modules/.bin/rw', + args: 'serve api', + instances: 'max', + exec_mode: 'cluster', + wait_ready: true, + listen_timeout: 10000, + }, + { + name: 'web', + cwd: 'current', + script: 'node_modules/.bin/rw', + args: 'serve web', + instances: 'max', + exec_mode: 'cluster', + wait_ready: true, + listen_timeout: 10000, + }, + ], +} +``` + +Note the inclusion of `migrate = false` so that migrations are not run again on the web server (they only need to run once and it makes sense to keep them with the api side). + +You can add as many `[[servers]]` blocks as you need. + +#### Multiple Environments + +You can deploy to multiple environments from a single `deploy.toml` by including servers grouped by environment name: + +```toml title="deploy.toml" +[[production.servers]] +host = "prod.server.com" +username = "user" +agentForward = true +sides = ["api", "web"] +path = "/var/www/app" +processNames = ["serve"] + +[[staging.servers]] +host = "staging.server.com" +username = "user" +agentForward = true +sides = ["api", "web"] +path = "/var/www/app" +processNames = ["serve", "stage-logging"] +``` + +At deploy time, include the environment in the command: + +```bash +yarn rw deploy baremetal staging +``` + +Note that the codebase shares a single `ecosystem.config.js` file. If you need a different set of services running in different environments you'll need to simply give them a unique name and reference them in the `processNames` option of `deploy.toml` (see the additional `stage-logging` process in the above example). + +## Server Setup + +You will need to create the directory in which your app code will live. This path will be the `path` var in `deploy.toml`. Make sure the username you will connect as in `deploy.toml` has permission to read/write/execute files in this directory. For example, if your `/var` dir is owned by `root`, but you're going to deploy with a user named `deploy`: + +```bash +sudo mkdir -p /var/www/myapp +sudo chown deploy:deploy /var/www/myapp +``` + +You'll want to create an `.env` file in this directory containing any environment variables that are needed by your app (like `DATABASE_URL` at a minimum). This will be symlinked to each release directory so that it's available as the app expects (in the root directory of the codebase). + +:::warning SSH and Non-interactive Sessions + +The deployment process uses a '[non-interactive](https://tldp.org/LDP/abs/html/intandnonint.html)' SSH session to run commands on the remote server. A non-interactive session will often load a minimal amount of settings for better compatibility and speed. In some versions of Linux `.bashrc` by default does not load (by design) from a non-interactive session. This can lead to `yarn` (or other commands) not being found by the deployment script, even though they are in your path, because additional ENV vars are set in `~/.bashrc` which provide things like NPM paths and setup. + +A quick fix on some distros is to edit the deployment user's `~/.bashrc` file and comment out the lines that *stop* non-interactive processing. + +```diff title="~/.bashrc" +# If not running interactively, don't do anything +- case $- in +- *i*) ;; +- *) return;; +- esac + +# If not running interactively, don't do anything ++ # case $- in ++ # *i*) ;; ++ # *) return;; ++ # esac +``` + +This may also be a one-liner like: + +```diff title="~/.bashrc" +- [ -z "$PS1" ] && return ++ # [ -z "$PS1" ] && return +``` + +There are techniques for getting `node`, `npm` and `yarn` to be available without loading everything in `.bashrc`. See [this comment](https://github.com/nvm-sh/nvm/issues/1290#issuecomment-427557733) for some ideas. + +::: + +## First Deploy + +Back on your development machine, enter your details in `deploy.toml`, commit it and push it up, and then try a first deploy: + +```bash +yarn rw deploy baremetal production --first-run +``` + +If there are any issues the deploy should stop and you'll see the error message printed to the console. + +If it worked, hooray! You're deployed to BAREMETAL. If not, read on... + +### Troubleshooting + +On the server you should see a new directory inside the `path` you defined in `deploy.toml`. It should be a timestamp of the deploy, like: + +```bash +drwxrwxr-x 7 ubuntu ubuntu 4096 Apr 22 23:00 ./ +drwxr-xr-x 7 ubuntu ubuntu 4096 Apr 22 22:46 ../ +-rw-rw-r-- 1 ubuntu ubuntu 1167 Apr 22 20:49 .env +drwxrwxr-x 10 ubuntu ubuntu 4096 Apr 22 21:43 20220422214218/ +``` + +You may or may not also have a `current` symlink in the app directory pointing to that timestamp directory (it depends how far the deploy script got before it failed as to whether you'll have the symlink or not). + +`cd` into that timestamped directory and check that you have a `.env` symlink pointing back to the app directory's `.env` file. + +Next, try performing all of the steps yourself that would happen during a deploy: + +``` +yarn install +yarn rw prisma migrate deploy +yarn rw prisma generate +yarn rw dataMigrate up +yarn rw build +ln -nsf "$(pwd)" ../current +``` + +If they worked for you, the deploy process should have no problem as it runs the same commands (after all, it connects via SSH and runs the same commands you just did!) + +Next we can check that the site is being served correctly. Run `yarn rw serve` and make sure your processes start and are accessible (by default on port 8910): + +```bash +curl http://localhost:8910 +# or +wget http://localhost:8910 +``` + +If you don't see the content of your `web/src/index.html` file then something isn't working. You'll need to fix those issues before you can deploy. Verify the api side is responding: + +```bash +curl http://localhost:8910/.redwood/functions/graphql?query={redwood{version}} +# or +wget http://localhost:8910/.redwood/functions/graphql?query={redwood{version}} +``` + +You should see something like: + +```json +{ + "data": { + "redwood": { + "version": "1.0.0" + } + } +} +``` + +If so then your API side is up and running! The only thing left to test is that the api side has access to the database. This call would be pretty specific to your app, but assuming you have port 8910 open to the world you could simply open a browser to click around to find a page that makes a database request. + +Was the problem with starting your PM2 process? That will be harder to debug here in this doc, but visit us in the [forums](https://community.redwoodjs.com) or [Discord](https://discord.gg/redwoodjs) and we'll try to help! + +:::note My pm2 processes are running but your app has errors, how do I see them? + +If your processes are up and running in pm2 you can monitor their log output. Run `pm2 monit` and get a nice graphical interface for watching the logs on your processes. Press the up/down arrows to move through the processes and left/right to switch panes. + +![pm2 monit screenshot](https://user-images.githubusercontent.com/300/213776175-2f78d9d4-7e6e-4d69-81b2-a648cc37b6ea.png) + +Sometimes the log messages are too long to read in the pane at the right. In that case you can watch them live by "tailing" them right in the terminal. pm2 logs are written to `~/.pm2/logs` and are named after the process name and id, and whether they are standard output or error messages. Here's an example directory listing: + +``` +ubuntu@ip-123-45-67-89:~/.pm2/logs$ ll +total 116 +drwxrwxr-x 2 ubuntu ubuntu 4096 Jan 20 17:58 ./ +drwxrwxr-x 5 ubuntu ubuntu 4096 Jan 20 17:40 ../ +-rw-rw-r-- 1 ubuntu ubuntu 0 Jan 20 17:58 api-error-0.log +-rw-rw-r-- 1 ubuntu ubuntu 0 Jan 20 17:58 api-error-1.log +-rw-rw-r-- 1 ubuntu ubuntu 27788 Jan 20 18:11 api-out-0.log +-rw-rw-r-- 1 ubuntu ubuntu 21884 Jan 20 18:11 api-out-1.log +``` + +To watch a log live, run: + +```terminal +tail -f ~/.pm2/logs/api-out-0.log +``` + +Note that if you have more than one process running, like we do here, requesting a page on the website will send the request to one of available processes randomly, so you may not see your request show up unless you refresh a few times. Or you can connect to two separate SSH sessions and tail both of the log files at the same time. + +::: + +## Starting Processes on Server Restart + +The `pm2` service requires some system "hooks" to be installed so it can boot up using your system's service manager. Otherwise, your PM2 services will need to be manually started again on a server restart. These steps only need to be run the first time you install PM2. + +SSH into your server and then run: + +```bash +pm2 startup +``` + +You will see some output similar to the output below. We care about the output after "copy/paste the following command:" You'll need to do just that: copy the command starting with `sudo` and then paste and execute it. *Note* this command uses `sudo` so you'll need the root password to the machine in order for it to complete successfully. + +:::warning + +The below text is *example* output, yours will be different, don't copy and paste ours! + +::: + +```bash +$ pm2 startup +[PM2] Init System found: systemd +[PM2] To setup the Startup Script, copy/paste the following command: +// highlight-next-line +sudo env PATH=$PATH:/home/ubuntu/.nvm/versions/node/v16.13.2/bin /home/ubuntu/.nvm/versions/node/v16.13.2/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu +``` + +In this example, you would copy `sudo env PATH=$PATH:/home/ubuntu/.nvm/versions/node/v16.13.2/bin /home/ubuntu/.nvm/versions/node/v16.13.2/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu` and run it. You should get a bunch of output along with `[PM2] [v] Command successfully executed.` near the end. Now if your server restarts for whatever reason, your PM2 processes will be restarted once the server is back up. + +## Customizing the Deploy + +There are several ways you can customize the deploys steps, whether that's skipping steps completely, or inserting your own commands before or after the default ones. + +### Skipping Steps + +If you want to speed things up you can skip one or more steps during the deploy. For example, if you have no database migrations, you can skip them completely and save some time: + +```bash +yarn rw deploy baremetal production --no-migrate +``` + +Run `yarn rw deploy baremetal --help` for the full list of flags. You can set them as `--migrate=false` or use the `--no-migrate` variant. + +### Inserting Custom Commands + +Baremetal supports running your own custom commands before or after the regular deploy commands. You can run commands **before** and/or **after** the built-in commands. Your custom commands are defined in the `deploy.toml` config file. The existing commands that you can hook into are: + +1. `update` - cloning the codebase +2. `symlinkEnv` - symlink the new deploy's `.env` to shared one in the app dir +3. `install` - `yarn install` +4. `migrate` - database migrations +5. `build` - `yarn build` (your custom before/after command is run for each side being built) +6. `symlinkCurrent` - symlink the new deploy dir to `current` in the app dir +7. `restart` - (re)starting any pm2 processes (your custom command will run before/after each process is restarted) +8. `cleanup` - cleaning up any old releases + +You can define your before/after commands in three different places: + +* Globally - runs for any environment +* Environment specific - runs for only a single environment +* Server specific - runs for only a single server in a single environment + +:::warning + +Custom commands are run in the new **deploy** directory, not the root of your application directory. During a deploy the `current` symlink will point to the previous directory while your code is executed in the new one, before the `current` symlink location is updated. + +```bash +drwxrwxr-x 5 ubuntu ubuntu 4096 May 10 18:20 ./ +drwxr-xr-x 7 ubuntu ubuntu 4096 Apr 27 17:43 ../ +drwxrwxr-x 2 ubuntu ubuntu 4096 May 9 22:59 20220503211428/ +drwxrwxr-x 2 ubuntu ubuntu 4096 May 9 22:59 20220503211429/ +drwxrwxr-x 10 ubuntu ubuntu 4096 May 10 18:18 20220510181730/ <-- commands are run in here +lrwxrwxrwx 1 ubuntu ubuntu 14 May 10 18:19 current -> 20220503211429/ +-rw-rw-r-- 1 ubuntu ubuntu 1167 Apr 22 20:49 .env +``` + +::: + +#### Syntax + +Global events are defined in a `[before]` and/or `[after]` block in your `deploy.toml` file: + +```toml +[before] +install = "touch install.lock" + +[after] +install = "rm install.lock" + +[[production.servers]] +host = 'server.com' +# ... +``` + +Environment specific commands are defined in a `[[environment.before]]` and `[[environment.after]]` block: + +```toml +[production.before] +install = "touch prod-install.lock" + +[production.after] +install = "rm prod-install.lock" + +[production.servers] +host = 'server.com' +# ... +``` + +Server specific commands are defined with a `before.command` and `after.command` key directly in your server config: + +```toml +[[production.servers]] +host = 'server.com' +# ... +before.install = 'touch server-install.lock' +after.install = 'rm server-install.lock' +``` + +You can define commands as a string, or an array of strings if you want to run multiple commands: + +```toml +[before] +install = ["echo 'started at $(date)' > install.lock", "cp -R . ../backup"] + +[[production.servers]] +host = 'server.com' +# ... +``` + +You can include commands in any/all of the three configurations (global, env and server) and they will all be stacked up and run in that order: `global -> environment -> server`. For example: + + +```toml +[[production.servers]] +host = 'server.com' +# ... +before.install = 'touch server-install.lock' + +[production.before] +install = ['touch prod-install1.lock', 'touch prod-install2.lock'] + +[before] +install = 'touch install.lock' +``` + +Would result in the commands running in this order, all before running `yarn install`: + +1. `touch install.lock` +2. `touch prod-install1.lock` +3. `touch prod-install2.lock` +4. `touch server-install.lock` + +## Rollback + +If you deploy and find something has gone horribly wrong, you can rollback your deploy to the previous release: + +```bash +yarn rw deploy baremetal production --rollback +``` + +You can even rollback multiple deploys, up to the total number you still have denoted with the `keepReleases` option: + +```bash +yarn rw deploy baremetal production --rollback 3 +``` + +Note that this will *not* rollback your database—if you had a release that changed the database, that updated database will still be in effect, but with the previous version of the web and api sides. Trying to undo database migrations is a very difficult proposition and isn't even possible in many cases. + +Make sure to thoroughly test releases that change the database before doing it for real! + +## Maintenance Page + +If you find that you have a particular complex deploy, one that may involve incompatible database changes with the current codebase, or want to make sure that database changes don't occur while in the middle of a deploy, you can put up a maintenance page: + +```bash +yarn rw deploy baremetal production --maintenance up +``` + +It does this by replacing `web/dist/200.html` with `web/src/maintenance.html`. This means any new web requests, at any URL, will show the maintenance page. This process also stops any services listed in the `processNames` option of `deploy.toml`—this is important for the api server as it will otherwise keep serving requests to users currently running the app, even though no *new* users can get the Javascript packages required to start a new session in their browser. + +You can remove the maintenance page with: + +```bash +yarn rw deploy baremetal production --maintenance down +``` + +Note that the maintenance page will automatically come down as the result of a new deploy as it checks out a new copy of the codebase (with a brand new copy of `web/dist/200.html` and will automatically restart services (bring them all back online). + +## Monitoring + +PM2 has a nice terminal-based dashboard for monitoring your services: + +```bash +pm2 monit +``` + +![pm2 dashboard](https://user-images.githubusercontent.com/300/164799386-84442fa3-8e68-4cc6-9e64-928b8e32731a.png) + +And even a web-based UI with paid upgrades if you need to give normies access to your monitoring data: + +![pm2 web dashboard](https://user-images.githubusercontent.com/300/164799541-6fe321fa-4d7c-44f7-93c6-3c202638da4f.png) + +## Example Server Configurations + +The default configuration, which requires the least amount of manual configuration, is to serve both the web and api sides, with the web side being bound to port 8910. This isn't really feasible for a general web app which should be available on port 80 (for HTTP) and/or port 443 (for HTTPS). Here are some custom configs to help. + +### Redwood Serves Web and Api Sides, Bind to Port 80 + +This is almost as easy as the default configuration, you just need to tell Redwood to bind to port 80. However, most *nix distributions will not allow a process to bind to ports lower than 1024 without root/sudo permissions. There is a command you can run to allow access to a specific binary (`node` in this case) to bind to one of those ports anyway. + +#### Tell Redwood to Bind to Port 80 + +Update the `[web]` port: + +```diff title="redwood.toml" +[web] + title = "My Application" + apiUrl = "/.netlify/functions" ++ port = 80 +[api] + port = 8911 +[browser] + open = true +``` + +#### Allow Node to Bind to Port 80 + +Use the [setcap](https://man7.org/linux/man-pages/man7/capabilities.7.html) utility to provide access to lower ports by a given process: + +```bash +sudo setcap CAP_NET_BIND_SERVICE=+eip $(which node) +``` + +Now restart your service and it should be available on port 80: + +```bash +pm2 restart serve +``` + +This should get your site available on port 80 (for HTTP), but you really want it available on port 443 (for HTTPS). That won't be easy if you continue to use Redwood's internal web server. See the next recipe for a solution. + +### Redwood Serves Api, Nginx Serves Web Side + +[nginx](https://www.nginx.com/) is a very robust, dedicated web server that can do a better job of serving our static web-side files than Redwood's own built-in web server (Fastify) which isn't really configured in Redwood for a high traffic, production website. + +If nginx will be serving our web side, what about api-side? Redwood's internal API server will be running, but on the default port of 8911. But browsers are going to want to connect on port 80 (HTTP) or 443 (HTTPS). nginx takes care of this as well: it will [proxy](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) (forward) any requests to a path of your choosing (like the default of `/.redwood/functions`) to port 8911 behind the scenes, then return the response to the browser. + +This doc isn't going to go through installing and getting nginx running, there are plenty of resources for that available. What we will show is a successful nginx configuration file used by several Redwood apps currently in production. + +```text title="nginx.conf" +upstream redwood_server { + server 127.0.0.1:8911 fail_timeout=0; +} + +server { + root /var/www/myapp/current/web/dist; + server_name myapp.com; + index index.html; + + gzip on; + gzip_min_length 1000; + gzip_types application/json text/css application/javascript application/x-javascript; + + sendfile on; + + keepalive_timeout 65; + + error_page 404 /404.html; + error_page 500 /500.html; + + location / { + try_files $uri /200.html =404; + } + + location ^~ /static/ { + gzip_static on; + expires max; + add_header Cache-Control public; + } + + location ~ /.redwood/functions(.*) { + rewrite ^/.redwood/functions(.*) $1 break; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://redwood_server; + } +} +``` + +Now when you start Redwood, you're only going to start the api server: + +``` +yarn rw serve api +``` + +When using `pm2` to start/monitor your processes, you can simplify your `deploy.toml` and `ecosystem.config.js` files to only worry about the api side: + +```toml title="deploy.toml" +[[production.servers]] +host = "myserver.com" +username = "ubuntu" +agentForward = true +sides = ["api", "web"] +path = "/var/www/myapp" +// highlight-next-line +processNames = ["api"] +repo = "git@github.com:redwoodjs/myapp.git" +branch = "main" +keepReleases = 3 +packageManagerCommand = "yarn" +monitorCommand = "pm2" +``` + +```js title="ecosystem.config.js" +module.exports = { + apps: [ + { + name: 'api', + cwd: 'current', + script: 'node_modules/.bin/rw', + args: 'serve api', + instances: 'max', + exec_mode: 'cluster', + wait_ready: true, + listen_timeout: 10000, + } + ] +} +``` + +This is the bare minimum to get your site served over HTTP, insecurely. After verifying that your site is up and running, we recommend using [Let's Encrypt](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04) to provision a SSL cert and it will also automatically update your nginx config so everything is served over HTTPS. + +#### Custom API Path + +If you don't love the path of `/.redwood/functions` for your API calls, this is easy to change. You'll need to tell Redwood to use a different path in development, and then let nginx know about that same path so that it resolves the same in production. + +For example, to simplify the path to just `/api` you'll need to make a change to `redwood.toml` and your new nginx config file: + +```toml title="redwood.toml" +[web] + title = "My App" + port = 8910 + host = '0.0.0.0' +// highlight-next-line + apiUrl = "/api" +[api] + port = 8911 +[browser] + open = true +``` + +```text title="nginx.conf" +upstream redwood_server { + server 127.0.0.1:8911 fail_timeout=0; +} + +server { + root /var/www/myapp/current/web/dist; + server_name myapp.com; + index index.html; + + gzip on; + gzip_min_length 1000; + gzip_types application/json text/css application/javascript application/x-javascript; + + sendfile on; + + keepalive_timeout 65; + + error_page 404 /404.html; + error_page 500 /500.html; + + location / { + try_files $uri /200.html =404; + } + + location ^~ /static/ { + gzip_static on; + expires max; + add_header Cache-Control public; + } + +// highlight-next-line + location ~ /api(.*) { +// highlight-next-line + rewrite ^/api(.*) $1 break; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://redwood_server; + } +} +``` diff --git a/docs/versioned_docs/version-7.0/deploy/coherence.md b/docs/versioned_docs/version-7.0/deploy/coherence.md new file mode 100644 index 000000000000..a2b9ec845d2a --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/coherence.md @@ -0,0 +1,40 @@ +--- +description: Serverful deploys on GCP or AWS via Coherence's full-lifecycle environment automation +--- + +# Deploy to Coherence + +[Coherence](https://www.withcoherence.com/) delivers automated environments across the full software development lifecycle, without requiring you to glue together your own mess of open source tools to get a world-class develper experience for your team. Coherence is focused on serving startups, who are doing mission-critical work. With one simple configuration, Coherence offers: + +- Cloud-hosted development environments, based on VSCode. Similar to Gitpod or GitHub CodeSpaces +- Production-ready CI/CD running in your own GCP/AWS account, including: database migration/seeding/snapshot loading, parallelized tests, container building and docker registry management +- Full-stack branch previews. Vercel/Netlify-like developer experience for arbitrary container apps, including dependencies such as CDN, redis, and database resources +- Staging and production environment management in your AWS/GCP accounts. Production runs in its own cloud account (AWS) or project (GCP). Integrated secrets management across all environment types with a developer-friendly UI + +## Coherence Prerequisites + +To deploy to Coherence, your Redwood project needs to be hosted on GitHub and you must have an [AWS](https://docs.withcoherence.com/docs/overview/aws-deep-dive) or [GCP](https://docs.withcoherence.com/docs/overview/gcp-deep-dive) account. + +## Coherence Deploy + +:::warning Prerender doesn't work with Coherence yet + +You can see its current status and follow updates here on GitHub: https://github.com/redwoodjs/redwood/issues/8333. + +But if you don't use prerender, carry on! + +::: + +If you want to deploy your Redwood project on Coherence, run the setup command: + +``` +yarn rw setup deploy coherence +``` + +The command will inspect your Prisma config to determine if you're using a supported database (at the moment, only `postgres` or `mysql` are supported on Coherence). + +Then follow the [Coherence Redwood deploy docs](https://docs.withcoherence.com/docs/configuration/frameworks#redwood-js) for more information, including if you want to set up: +- a redis server +- database migration/seeding/snapshot loading +- cron jobs or async workers +- object storage using Google Cloud Storage or AWS's S3 diff --git a/docs/versioned_docs/version-7.0/deploy/edgio.md b/docs/versioned_docs/version-7.0/deploy/edgio.md new file mode 100644 index 000000000000..c821c3ee2333 --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/edgio.md @@ -0,0 +1,16 @@ +# Deploy to Edgio + +[Edgio](https://edg.io) extends the capabilities of a traditional CDN by not only hosting your static content, but also providing server-side rendering for progressive web applications as well as caching both your APIs and HTML at the network edge to provide your users with the fastest browsing experience. + +## Edgio Deploy Setup + +In order to deploy your RedwoodJS project to Edgio, the project must first be initialized with the Edgio CLI. + +1. In your project, run the command `yarn rw setup deploy edgio`. +2. Verify the changes to your project, commit and push to your repository. +3. Deploy your project to Edgio + 1. If this is your first time deploying to Edgio, the interactive CLI will prompt to authenticate using your browser. You can start the deploy by running `yarn rw deploy edgio`. + 2. If you are deploying from a **non-interactive** environment, you will need to create an account on [Edgio Developer Console](https://app.layer0.co) first and setup a [deploy token](https://docs.edg.io/guides/deploy_apps#deploy-from-ci). Once the deploy token is created, save it as a secret to your environment. You can start the deploy by running `yarn rw deploy edgio --token=XXX`. +4. Follow the link in the output to view your site live once deployment has completed! + +For more information on deploying to Edgio, check out the [documentation](https://docs.edg.io). diff --git a/docs/versioned_docs/version-7.0/deploy/flightcontrol.md b/docs/versioned_docs/version-7.0/deploy/flightcontrol.md new file mode 100644 index 000000000000..192efd1776b6 --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/flightcontrol.md @@ -0,0 +1,24 @@ +--- +description: How to deploy a Redwood app to AWS via Flightcontrol +--- + +# Deploy to AWS with Flightcontrol + +[Flightcontrol](https://www.flightcontrol.dev?ref=redwood) enables any developer to deploy to AWS without being a wizard. It's extremely easy to use but lets you pop the hood and leverage the raw power of AWS when needed. It supports servers, static sites, and databases which makes it a perfect fit for hosting scalable Redwood apps. + +## Flightcontrol Deploy Setup + +1. In your project, run the command `yarn rw setup deploy flightcontrol --database=YOUR_DB_TYPE` where YOUR_DB_TYPE is `mysql` or `postgresql` +2. Commit the changes and push to github +3. If you don't have an account, sign up at [app.flightcontrol.dev/signup](https://app.flightcontrol.dev/signup?ref=redwood) +4. Create a new project from the onboarding screen or project list + 1. Connect your Github account and select your repo + 2. Select "Config Type" as `flightcontrol.json` + 3. Click "Create Project" and complete any required steps like linking your AWS account. +5. If using dbAuth, add the session secret key env variable in the Flightcontrol dashboard + + +NOTE: If you are using yarn v1, remove the `installCommand`'s from flightcontrol.json + +If you have *any* problems or questions, Flightcontrol is very responsive in [their support Discord](https://discord.gg/yY8rSPrD6q). + diff --git a/docs/versioned_docs/version-7.0/deploy/introduction.md b/docs/versioned_docs/version-7.0/deploy/introduction.md new file mode 100644 index 000000000000..1cbb38e0fcd7 --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/introduction.md @@ -0,0 +1,104 @@ +--- +description: Deploy to serverless or serverful providers +--- + +# Introduction to Deployment + +Redwood is designed for both serverless and traditional infrastructure deployments, offering a unique continuous deployment process in both cases: + +1. code is committed to a repository on GitHub, GitLab, or Bitbucket, which triggers the deployment +2. the Redwood API Side and Web Side are individually prepared via a build process +3. during the build process, any database related actions are run (e.g. migrations) +4. the hosting provider deploys the built Web static assets to a CDN and the API code to a serverless backend (e.g. AWS Lambdas) + +Currently, these are the officially supported deploy targets: +- Baremetal (physical server that you have SSH access to) +- [Coherence](https://www.withcoherence.com/) +- [Flightcontrol.dev](https://www.flightcontrol.dev?ref=redwood) +- [Edg.io](https://edg.io) +- [Netlify.com](https://www.netlify.com/) +- [Render.com](https://render.com) +- [Serverless.com](https://serverless.com) +- [Vercel.com](https://vercel.com) + +Redwood has a CLI generator that adds the code and configuration required by the specified provider (see the [CLI Doc](cli-commands.md#deploy-config) for more information): +```shell +yarn rw setup deploy <provider> +``` + +There are examples of deploying Redwood on other providers such as Google Cloud and direct to AWS. You can find more information by searching the [GitHub Issues](https://github.com/redwoodjs/redwood/issues) and [Forums](https://community.redwoodjs.com). + + +## General Deployment Setup + +Deploying Redwood requires setup for the following four categories. + +### 1. Host Specific Configuration + +Each hosting provider has different requirements for how (and where) the deployment is configured. Sometimes you'll need to add code to your repository, configure settings in a dashboard, or both. You'll need to read the provider specific documentation. + +The most important Redwood configuration is to set the `apiUrl` in your `redwood.toml` This sets the API path for your serverless functions specific to your hosting provider. + +### 2. Build Command + +The build command is used to prepare the Web and API for deployment. Additionally, other actions can be run during build such as database migrations. The Redwood build command must specify one of the supported hosting providers (aka `target`): + +```shell +yarn rw deploy <target> +``` + +For example: + +```shell +# Build command for Netlify deploy target +yarn rw deploy netlify +``` + +```shell +# Build command for Vercel deploy target +yarn rw deploy vercel +``` + +```shell +# Build command for AWS Lambdas using the https://serverless.com framework +yarn rw deploy serverless --side api +``` + +```shell +# Build command for Edgio deploy target +yarn rw deploy edgio +``` + +```shell +# Build command for baremetal deploy target +yarn rw deploy baremetal [--first-run] +``` + +### 3. Prisma and Database + +Redwood uses Prisma for managing database access and migrations. The settings in `api/prisma/schema.prisma` must include the correct deployment database, e.g. postgresql, and the database connection string. + +To use PostgreSQL in production, include this in your `schema.prisma`: + +```jsx +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` + +The `url` setting above accesses the database connection string via an environment variable, `DATABASE_URL`. Using env vars is the recommended method for both ease of development process as well as security best practices. + +Whenever you make changes to your `schema.prisma`, you must run the following command: + +```shell +yarn rw prisma migrate dev # creates and applies a new Prisma DB migration +``` + +> Note: when setting your production DATABASE_URL env var, be sure to also set any connection-pooling or sslmode parameters. For example, if using Supabase Postgres with pooling, then you would use a connection string similar to `postgresql://postgres:mydb.supabase.co:6432/postgres?sslmode=require&pgbouncer=true` that uses a specific 6432 port, informs Prisma to consider pgBouncer, and also to use SSL. See: [Connection Pooling](connection-pooling.md) for more info. + +### 4. Environment Variables + +Any environment variables used locally, e.g. in your `env.defaults` or `.env`, must also be added to your hosting provider settings. (See documentation specific to your provider.) + +Additionally, if your application uses env vars on the Web Side, you must configure Redwood's build process to make them available in production. See the [Redwood Environment Variables doc](environment-variables.md) for instructions. diff --git a/docs/versioned_docs/version-7.0/deploy/netlify.md b/docs/versioned_docs/version-7.0/deploy/netlify.md new file mode 100644 index 000000000000..ad62b9b5d8f5 --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/netlify.md @@ -0,0 +1,27 @@ +--- +description: The serverless git deploy you know and love +--- + +# Deploy to Netlify + +## Netlify tl;dr Deploy + +If you simply want to experience the Netlify deployment process without a database and/or adding custom code, you can do the following: + +1. create a new redwood project: `yarn create redwood-app ./netlify-deploy` +2. after your "netlify-deploy" project installation is complete, init git, commit, and add it as a new repo to GitHub, BitBucket, or GitLab +3. run the command `yarn rw setup deploy netlify` and commit and push changes +4. use the Netlify [Quick Start](https://app.netlify.com/signup) to deploy + +:::warning +While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. + +The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. + + +Therefore, **please follow the [Tutorial Deployment section](tutorial/chapter4/deployment.md)** to sync your GitHub (or other compatible source control service) repository with Netlify andalllow their build and deploy system to manage deployments. +::: + +## Netlify Complete Deploy Walkthrough + +For the complete deployment process on Netlify, see the [Tutorial Deployment section](tutorial/chapter4/deployment.md). diff --git a/docs/versioned_docs/version-7.0/deploy/render.md b/docs/versioned_docs/version-7.0/deploy/render.md new file mode 100644 index 000000000000..705ec3dec80f --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/render.md @@ -0,0 +1,15 @@ +--- +description: Serverful deploys via Render's unified cloud +--- + +# Deploy to Render + +Render is a unified cloud to build and run all your apps and websites with free SSL, a global CDN, private networks and auto-deploys from Git — **database included**! + +## Render tl;dr Deploy + +If you simply want to experience the Render deployment process, including a Postgres or SQLite database, you can do the following: +1. create a new redwood project: `yarn create redwood-app ./render-deploy` +2. after your "render-deploy" project installation is complete, init git, commit, and add it as a new repo to GitHub or GitLab +3. run the command `yarn rw setup deploy render`, use the flag `--database` to select from `postgresql`, `sqlite` or `none` to proceed without a database [default : `postgresql`] +4. follow the [Render Redwood Deploy Docs](https://render.com/docs/deploy-redwood) for detailed instructions diff --git a/docs/versioned_docs/version-7.0/deploy/serverless.md b/docs/versioned_docs/version-7.0/deploy/serverless.md new file mode 100644 index 000000000000..d854ff791f7c --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/serverless.md @@ -0,0 +1,131 @@ +--- +description: Deploy to AWS with Serverless Framework +--- + +# Deploy to AWS with Serverless Framework + +>⚠️ **Deprecated** +>As of Redwood v5, we are deprecating this deploy setup as an "officially" supported provider. This means: +>- For projects already using this deploy provider, there will be NO change at this time +>- Both the associated `setup` and `deploy` commands will remain in the framework as is; when setup is run, there will be a “deprecation” message +>- We will no longer run CI/CD on the Serverless-AWS deployments, which means we are no longer guaranteeing this deploy works with each new version +>- We are exploring better options to deploy directly to AWS Lambdas; the current deploy commands will not be removed until we find a replacement +> +>For more details (e.g. why?) and current status, see the Forum post ["Deprecating support for Serverless Framework Deployments to AWS Lambdas"](https://community.redwoodjs.com/t/deprecating-support-for-serverless-framework-deployments-to-aws-lambdas/4755/10) + +>The following instructions assume you have read the [General Deployment Setup](./introduction.md#general-deployment-setup) section above. + +Yes, the name is confusing, but Serverless provides a very interesting option—deploy to your own cloud service account and skip the middleman entirely! By default, Serverless just orchestrates starting up services in your cloud provider of choice and pushing your code up to them. Any bill you receive is from your hosting provider (although many offer a generous free tier). You can optionally use the [Serverless Dashboard](https://www.serverless.com/dashboard/) to monitor your deploys and setup CI/CD to automatically deploy when pushing to your repo of choice. If you don't setup CI/CD you actually deploy from your development machine (or another designated machine you've setup to do the deployment). + +Currently we default to deploying to AWS. We'd like to add more providers in the future but need help from the community in figuring out what services are equivalent to the ones we're using in AWS (Lambda for the api-side and S3/CloudFront for the web-side). + +We'll handle most of the deployment commands for you, you just need an [AWS account](https://www.serverless.com/framework/docs/providers/aws/guide/credentials#sign-up-for-an-aws-account) and your [access/secret keys](https://www.serverless.com/framework/docs/providers/aws/guide/credentials#create-an-iam-user-and-access-key) before we begin. + +## Setup + +One command will set you up with (almost) everything you need: + +```bash +yarn rw setup deploy serverless +``` + +As you'll see mentioned in the post-install instructions, you'll need to provide your AWS Access and AWS Secret Access keys. Add those to the designated places in your `.env` file: + +```bash +# .env + +AWS_ACCESS_KEY_ID=<your-key-here> +AWS_SECRET_ACCESS_KEY=<your-secret-key-here> +``` + +Make sure you don't check `.env` into your repo! It's set in `.gitignore` by default, so make sure it stays that way. + +## First Deploy + +You'll need to add a special flag to the deploy command for your first deploy: + +```bash +yarn rw deploy serverless --first-run +``` + +The first time you deploy your app we'll first deploy just the API side. Once it's live we can get the URL that it's been deployed to and add that as an environment variable `API_URL` so that web side will know what it is during build-time (it needs to know where to send GraphQL and function requests). + +Half-way through the first deploy you'll be asked if you want to add the API_URL to `.env.production` (which is similar to `.env` but is only used when `NODE_ENV=production`, like when building the web and api sides for deploy). Make sure you say `Y`es at this prompt and then it will continue to deploy the web side. + +Once that command completes you should see a message including the URL of your site—open that URL and hopefully everything works as expected! + +> **Heads up** +> +> If you're getting an error trying to load data from the API side, its possible you're still pointing at your local database. +> +> Remember to add a DATABASE_URL env var to your `.env.production` file that is created, pointing at the database you want to use on your deployed site. Since your stack is on AWS, RDS might be a good option, but you might find it easier/quicker to setup databases on other providers too, such as [Railway](https://railway.app/) or [Supabase](https://supabase.com/) + +## Subsequent Deploys + +From now on you can simply run `yarn rw deploy serverless` when you're ready to deploy (which will also be much faster). + + +:::info +Remember, if you add or generate new serverless functions (or endpoints), you'll need to update the configuration in your serverless.yml in `./api/serverless.yml`. + +By default we only configure the `auth` and `graphql` functions for you. +::: + +## Environment Variables + +For local deployment (meaning you're deploying from your own machine, or another that you're in control of) you can put any ENV vars that are production-only into `.env.production`. They will override any same-named vars in `.env`. Make sure neither of these files is checked into your code repository! + +If you're setting up CI/CD and deploying from the Serverless Dashboard, you'll need to copy your required ENV vars up to your app on Serverless and then tell it where to get them from. In `api/serverless.yml` and `web/serverless.yml` look for the `provider > environment` section. You'll need to list any ENV vars here, using the `${param:VAR_NAME}` syntax, which means to get them from the Serverless Dashboard "parameters" (which is what they call environment variables, for some strange reason). + +There are even more places you can get environment variables from, check out Serverless's [Variables documentation](https://www.serverless.com/framework/docs/providers/aws/guide/variables) for more. + +## Serverless Dashboard + +> **Note:** +> Serverless Dashboard CI/CD does not support projects structured like Redwood, although they're working on it. For CD, you'll need to use something like GitHub Actions. +> +> It can still be worthwhile to integrate your project with Serverless Dashboard — you'll have features like deploy logs and monitoring, analytics, secret management, and AWS account integration. You can also [authenticate into your Serverless account within a CI context](https://www.serverless.com/framework/docs/guides/cicd/running-in-your-own-cicd). Just remember that if you do use the Dashboard to manage secrets, you'll need to use the `${param:VAR_NAME}` syntax. + +To integrate your site into the Serverless Dashboard, there are two ways: + +1. Run `yarn serverless login` and a browser *should* open asking you to allow permission. However, in our experience, this command will fail nearly 50% of the time complaining about an invalid URL. If it *does* work you can then run `yarn serverless` in both the `api` and `web` directories to link to them an existing app in the Dashboard, or you'll be prompted to create a new one. Future deploys will now be monitored on the Dashboard. +2. You can manually add the `org` and `app` lines in `api/serverless.yml` and `web/serverless.yml`. You'll see example ones commented out near the top of the file. + +## Environments Besides Production + +By default we assume you want to deploy to a production environment, but Serverless lets you deploy anywhere. They call these destinations "stages", and in Redwood "production" is the default. Check out their [Managing Staging and Environments blog post](https://www.serverless.com/blog/stages-and-environments) for details. + +Once configured, just add the stage to your deploy command: + +```bash +yarn rw deploy serverless --stage qa +``` + +## Removing Your Deploy + +In addition to creating all of the services necessary for your app to run, Serverless can also remove them (which is great when testing to avoid paying for services you're no longer using). + +You'll need to run this command in both the `api` and `web` directories: + +```bash +yarn serverless remove --stage production +``` + +Note that `production` is the default stage when you deploy with `yarn rw serverless deploy` - if you have customized this, you have to use the same stage as you deployed with! + +This will take several minutes, so grab your favorite beverage and enjoy your new $0 monthly bill! + +:::tip Pro tip +If you get tired of typing `serverless` each time, you can use the much shorter `sls` alias: `yarn rw deploy sls` +::: + +## Troubleshooting + +If you happen to see the following error when deploying: + +```terminal +Error: +No auth.zip file found in the package path you provided. +``` + +Make sure that the dev server isn't running, then retry your deploy. diff --git a/docs/versioned_docs/version-7.0/deploy/vercel.md b/docs/versioned_docs/version-7.0/deploy/vercel.md new file mode 100644 index 000000000000..5f4e6e33fe04 --- /dev/null +++ b/docs/versioned_docs/version-7.0/deploy/vercel.md @@ -0,0 +1,90 @@ +--- +description: Deploy serverless in an instant with Vercel +--- + +# Deploy to Vercel + +>The following instructions assume you have read the [General Deployment Setup](./introduction.md#general-deployment-setup) section above. + +## Vercel tl;dr Deploy + +If you simply want to experience the Vercel deployment process without a database and/or adding custom code, you can do the following: +1. create a new redwood project: `yarn create redwood-app ./vercel-deploy` +2. after your "vercel-deploy" project installation is complete, init git, commit, and add it as a new repo to GitHub, BitBucket, or GitLab +3. run the command `yarn rw setup deploy vercel` and commit and push changes +4. use the Vercel [Quick Start](https://vercel.com/#get-started) to deploy + +_If you choose this quick deploy experience, the following steps do not apply._ + +## Redwood Project Setup + +If you already have a Redwood project, proceed to the next step. + +Otherwise, we recommend experiencing the full Redwood DX via the [Redwood Tutorial](tutorial/foreword.md). Simply return to these instructions when you reach the "Deployment" section. + +## Redwood Deploy Configuration + +Complete the following two steps. Then save, commit, and push your changes. + +### Step 1. Serverless Functions Path + +Run the following CLI Command: +```shell +yarn rw setup deploy vercel +``` + +This updates your `redwood.toml` file, setting `apiUrl = "/api"`: + +### Step 2. Database Settings + +Follow the steps in the [Prisma and Database](./introduction#3-prisma-and-database) section above. _(Skip this step if your project does not require a database.)_ + +### Vercel Initial Setup and Configuration +Either [login](https://vercel.com/login) to your Vercel account and select "Import Project" or use the Vercel [quick start](https://vercel.com/#get-started). + +Then select the "Continue" button within the "From Git Repository" section: +<img src="https://user-images.githubusercontent.com/2951/90482970-e6f3e700-e0e8-11ea-8b3e-979745b0a226.png" /> + +Next, select the provider where your repo is hosted: GitHub, GitLab, or Bitbucket. You'll be asked to login and then provider the URL of the repository, e.g. for a GitHub repo `https://github.com/your-account/your-project.git`. Select "Continue". + +You'll then need to provide permissions for Vercel to access the repo on your hosting provider. + +### Import and Deploy your Project +Vercel will recognize your repo as a Redwood project and take care of most configuration heavy lifting. You should see the following options and, most importantly, the "Framework Preset" showing RedwoodJS. + +<img src="https://user-images.githubusercontent.com/2951/90486275-9337cc80-e0ed-11ea-9af3-fd9613c1256b.png" /> + +Leave the **Build and Output Settings** at the default settings (unless you know what you're doing and have very specific needs). + +In the "Environment Variables" dropdown, add `DATABASE_URL` and your app's database connection string as the value. (Or skip if not applicable.) + +> When configuring a database, you'll want to append `?connection_limit=1` to the URI. This is [recommended by Prisma](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/deployment#recommended-connection-limit) when working with relational databases in a Serverless context. For production apps, you should setup [connection pooling](https://redwoodjs.com/docs/connection-pooling). + +For example, a postgres connection string should look like `postgres://<user>:<pass>@<url>/<db>?connection_limit=1` + +Finally, click the "Deploy" button. You'll hopefully see a build log without errors (warnings are fine) and end up on a screen that looks like this: + +<img src="https://user-images.githubusercontent.com/2951/90487627-9469f900-e0ef-11ea-9378-9bb85e02a792.png" /> + +Go ahead, click that "Visit" button. You’ve earned it 🎉 + +## Vercel Dashboard Settings + +From the Vercel Dashboard you can access the full settings and information for your Redwood App. The default settings seem to work just fine for most Redwood projects. Do take a look around, but be sure check out the [docs as well](https://vercel.com/docs). + +From now on, each time you push code to your git repo, Vercel will automatically trigger a deploy of the new code. You can also manually redeploy if you select "Deployments", then the specific deployment from the list, and finally the "Redeploy" option from the vertical dots menu next to "Visit". + +## vercel.json configuration + +By default, API requests in Vercel have a timeout limit of 15 seconds. To extend this duration, you can modify the vercel.json file by inserting the code snippet provided below. Please be aware that the ability to increase the timeout limit is exclusive to Pro plan subscribers. Additionally, it is important to note that the timeout can be increased up to a maximum of 300 seconds, which is equivalent to 5 minutes. + +``` +{ + "functions": { + "api/src/functions/graphql.*": { + "maxDuration": 120, + "runtime": "@vercel/redwood@2.0.5" + } + } +} +``` diff --git a/docs/versioned_docs/version-7.0/directives.md b/docs/versioned_docs/version-7.0/directives.md new file mode 100644 index 000000000000..b778dc2ef8ce --- /dev/null +++ b/docs/versioned_docs/version-7.0/directives.md @@ -0,0 +1,698 @@ +--- +description: Customize GraphQL execution +--- + +# Directives + +Redwood Directives are a powerful feature, supercharging your GraphQL-backed Services. + +You can think of directives like "middleware" that let you run reusable code during GraphQL execution to perform tasks like authentication and formatting. + +Redwood uses them to make it a snap to protect your API Services from unauthorized access. + +Here we call those types of directives **Validators**. + +You can also use them to transform the output of your query result to modify string values, format dates, shield sensitive data, and more! +We call those types of directives **Transformers**. + +You'll recognize a directive as being 1) preceded by `@` (e.g. `@myDirective`) and 2) declared alongside a field: + +```tsx +type Bar { + name: String! @myDirective +} +``` + +or a Query or a Mutation: + +```tsx +type Query { + bars: [Bar!]! @myDirective +} + +type Mutation { + createBar(input: CreateBarInput!): Bar! @myDirective +} +``` + +You can also define arguments that can be extracted and used when evaluating the directive: + +```tsx +type Bar { + field: String! @myDirective(roles: ["ADMIN"]) +} +``` + +or a Query or Mutation: + +```tsx +type Query { + bars: [Bar!]! @myDirective(roles: ["ADMIN"]) +} +``` + +You can also use directives on relations: + +```tsx +type Baz { + name: String! +} + +type Bar { + name: String! + bazzes: [Baz]! @myDirective +} +``` + +There are many ways to write directives using GraphQL tools and libraries. Believe us, it can get complicated fast. + +But, don't fret: Redwood provides an easy and ergonomic way to generate and write your own directives so that you can focus on the implementation logic and not the GraphQL plumbing. + +## What is a Redwood Directive? + +Redwood directives are purposeful. +They come in two flavors: **Validators** and **Transformers**. + +Whatever flavor of directive you want, all Redwood directives must have the following properties: + +- be in the `api/src/directives/{directiveName}` directory where `directiveName` is the directive directory +- must have a file named `{directiveName}.{js,ts}` (e.g. `maskedEmail.ts`) +- must export a `schema` and implement either a `validate` or `transform` function + +### Understanding the Directive Flow + +Since it helps to know a little about the GraphQL phases—specifically the Execution phase—and how Redwood Directives fit in the data-fetching and authentication flow, let's have a quick look at some diagrams. + +First, we see the built-in `@requireAuth` Validator directive that can allow or deny access to a Service (a.k.a. a resolver) based on Redwood authentication. +In this example, the `post(id: Int!)` query is protected using the `@requireAuth` directive. + +If the request's context has a `currentUser` and the app's `auth.{js|ts}` determines it `isAuthenticated()`, then the execution phase proceeds to get resolved (for example, the `post({ id })` Service is executed and queries the database using Prisma) and returns the data in the resulting response when execution is done. + +![require-auth-directive](https://user-images.githubusercontent.com/1051633/135320891-34dc06fc-b600-4c76-8a35-86bf42c7f179.png) + +In this second example, we add the Transformer directive `@welcome` to the `title` field on `Post` in the SDL. + +The GraphQL Execution phase proceeds the same as the prior example (because the `post` query is still protected and we'll want to fetch the user's name) and then the `title` field is resolved based on the data fetch query in the service. + +Finally after execution is done, then the directive can inspect the `resolvedValue` (here "Welcome to the blog!") and replace the value by inserting the current user's name—"Welcome, Tom, to the blog!" + +![welcome-directive](https://user-images.githubusercontent.com/1051633/135320906-5e2d639d-13a1-4aaf-85bf-98529822d244.png) + +### Validators + +Validators integrate with Redwood's authentication to evaluate whether or not a field, query, or mutation is permitted—that is, if the request context's `currentUser` is authenticated or belongs to one of the permitted roles. + +Validators should throw an Error such as `AuthenticationError` or `ForbiddenError` to deny access and simply return to allow. + +Here the `@isSubscriber` validator directive checks if the currentUser exists (and therefore is authenticated) and whether or not they have the `SUBSCRIBER` role. If they don't, then access is denied by throwing an error. + +```tsx +import { + AuthenticationError, + ForbiddenError, + createValidatorDirective, + ValidatorDirectiveFunc, +} from '@redwoodjs/graphql-server' +import { hasRole } from 'src/lib/auth' + +export const schema = gql` + directive @isSubscriber on FIELD_DEFINITION +` + +const validate: ValidatorDirectiveFunc = ({ context }) => { + if (!context.currentUser) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (!context.currentUser.roles?.includes('SUBSCRIBER')) { + throw new ForbiddenError("You don't have access to do that.") + } +} + +const isSubscriber = createValidatorDirective(schema, validate) + +export default isSubscriber +``` + +Since validator directives can access arguments (such as `roles`), you can quickly provide RBAC (Role-based Access Control) to fields, queries and mutations. + +```tsx +import gql from 'graphql-tag' + +import { createValidatorDirective } from '@redwoodjs/graphql-server' + +import { requireAuth as applicationRequireAuth } from 'src/lib/auth' +import { logger } from 'src/lib/logger' + +export const schema = gql` + directive @requireAuth(roles: [String]) on FIELD_DEFINITION +` + +const validate = ({ directiveArgs }) => { + const { roles } = directiveArgs + + applicationRequireAuth({ roles }) +} + +const requireAuth = createValidatorDirective(schema, validate) + +export default requireAuth +``` + +All Redwood apps come with two built-in validator directives: `@requireAuth` and `@skipAuth`. +The `@requireAuth` directive takes optional roles. +You may use these to protect against unwanted GraphQL access to your data. +Or explicitly allow public access. + +> **Note:** Validators evaluate prior to resolving the field value, so you cannot modify the value and any return value is ignored. + +### Transformers + +Transformers can access the resolved field value to modify and then replace it in the response. +Transformers apply to both single fields (such as a `User`'s `email`) and collections (such as a set of `Posts` that belong to `User`s) or is the result of a query. As such, Transformers cannot be applied to Mutations. + +In the first case of a single field, the directive would return the modified field value. In the latter case, the directive could iterate each `Post` and modify the `title` in each. In all cases, the directive **must** return the same expected "shape" of the data the SDL expects. + +> **Note:** you can chain directives to first validate and then transform, such as `@requireAuth @maskedEmail`. Or even combine transformations to cascade formatting a value (you could use `@uppercase` together with `@truncate` to uppercase a title and shorten to 10 characters). + +Since transformer directives can access arguments (such as `roles` or `maxLength`) you may fetch those values and use them when applying (or to check if you even should apply) your transformation. + +That means that a transformer directive could consider the `permittedRoles` in: + +```tsx +type user { + email: String! @maskedEmail(permittedRoles: ["ADMIN"]) +} +``` + +and if the `currentUser` is an `ADMIN`, then skip the masking transform and simply return the original resolved field value: + +```jsx title="./api/src/directives/maskedEmail.directive.js" +import { createTransformerDirective, TransformerDirectiveFunc } from '@redwoodjs/graphql-server' + +export const schema = gql` + directive @maskedEmail(permittedRoles: [String]) on FIELD_DEFINITION +` + +const transform: TransformerDirectiveFunc = ({ context, resolvedValue }) => { + return resolvedValue.replace(/[a-zA-Z0-9]/i, '*') +} + +const maskedEmail = createTransformerDirective(schema, transform) + +export default maskedEmail +``` + +and you would use it in your SDLs like this: + +```graphql +type UserExample { + id: Int! + email: String! @maskedEmail # 👈 will replace alphanumeric characters with asterisks in the response! + name: String +} +``` + +### Where can I use a Redwood Directive? + +A directive can only appear in certain locations in a GraphQL schema or operation. These locations are listed in the directive's definition. + +In the example below, the `@maskedEmail` example, the directive can only appear in the `FIELD_DEFINITION` location. + +An example of a `FIELD_DEFINITION` location is a field that exists on a `Type`: + +```graphql +type UserExample { + id: Int! + email: String! @requireAuth + name: String @maskedEmail # 👈 will maskedEmail name in the response! +} + +type Query { + userExamples: [UserExample!]! @requireAuth 👈 will enforce auth when fetching all users + userExamples(id: Int!): UserExample @requireAuth 👈 will enforce auth when fetching a single user +} +``` + +> **Note**: Even though GraphQL supports `FIELD_DEFINITION | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION | ENUM_VALUE` locations, RedwoodDirectives can **only** be declared on a `FIELD_DEFINITION` — that is, you **cannot** declare a directive in an `Input type`: +> +> ```graphql +> input UserExampleInput { +> email: String! @maskedEmail # 👈 🙅 not allowed on an input +> name: String! @requireAuth # 👈 🙅 also not allowed on an input +> } +> ``` + +## When Should I Use a Redwood Directive? + +As noted in the [GraphQL spec](https://graphql.org/learn/queries/#directives): + +> Directives can be useful to get out of situations where you otherwise would need to do string manipulation to add and remove fields in your query. Server implementations may also add experimental features by defining completely new directives. + +Here's a helpful guide for deciding when you should use one of Redwood's Validator or Transformer directives: + +| | Use | Directive | Custom? | Type | +| --- | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ------------ | +| ✅ | Check if the request is authenticated? | `@requireAuth` | Built-in | Validator | +| ✅ | Check if the user belongs to a role? | `@requireAuth(roles: ["AUTHOR"])` | Built-in | Validator | +| ✅ | Only allow admins to see emails, but others get a masked value like "###@######.###" | `@maskedEmail(roles: ["ADMIN"])` | Custom | Transformer | +| 🙅 | Know if the logged in user can edit the record, and/or values | N/A - Instead do this check in your service | +| 🙅 | Is my input a valid email address format? | N/A - Instead do this check in your service using [Service Validations](services.md#service-validations) or consider [GraphQL Scalars](https://www.graphql-scalars.dev) | +| 🙅 | I want to remove a field from the response for data filtering; for example, do not include the title of the post | `@skip(if: true )` or `@include(if: false)` | Instead use [core directives](https://graphql.org/learn/queries/#directives) on the GraphQL client query, not the SDL | Core GraphQL | + +## Combining, Chaining and Cascading Directives + +Now that you've seen what Validator and Transformer directives look like and where and when you may use them, you may wonder: can I use them together? Can I transform the result of a transformer? + +The answer is: yes—yes you can! + +### Combine Directives on a Query and a Type Field + +Let's say you want to only allow logged-in users to be able to query `User` details and you only want un-redacted email addresses to be shown to ADMINs. + +You can apply the `@requireAuth` directive to the `user(id: Int!)` query so you have to be logged in. +Then, you can compose a `@maskedEmail` directive that checks the logged-in user's role membership and if they're not an ADMIN, mask the email address: + +```tsx + type User { + id: Int! + name: String! + email: String! @maskedEmail(role: "ADMIN") + createdAt: DateTime! + } + + type Query { + user(id: Int!): User @requireAuth + } +``` + +Or, let's say I want to only allow logged in users to be able to query User details. + +But, I only want ADMIN users to be able to query and fetch the email address. + +I can apply the `@requireAuth` directive to the `user(id: Int!)` query so I have to be logged in. + +And, I can apply the `@requireAuth` directive to the `email` field with a role argument. + +```tsx + type User { + id: Int! + name: String! + email: String! @requireAuth(role: "ADMIN") + createdAt: DateTime! + } + + type Query { + user(id: Int!): User @requireAuth + } +``` + +Now, if a user who is not an ADMIN queries: + +```tsx +query user(id: 1) { + id + name + createdAt +} +``` + +They will get a result. + +But, if they try to query: + +```tsx +query user(id: 1) { + id + name + email + createdAt +} +``` + +They will be forbidden from even making the request. + +### Chaining a Validator and a Transformer + +Similar to the prior example, you may want to chain directives, but the transform doesn't consider authentication or role membership. + +For example, here we ensure that anyone trying to query a User and fetch the email must be authenticated. + +And then, if they are, apply a mask to the email field. + +```tsx + type User { + id: Int! + name: String! + email: String! @requireAuth @maskedEmail + createdAt: DateTime! + } +``` + +### Cascade Transformers + +Maybe you want to apply multiple field formatting? + +If your request event headers includes geographic or timezone info, you could compose a custom Transformer directive called `@localTimezone` could inspect the header value and convert the `createdAt` from UTC to local time -- something often done in the browser. + +Then, you can chain the `@dateFormat` Transformer, to just return the date portion of the timestamp -- and not the time. + +```tsx + type User { + id: Int! + name: String! + email: String! + createdAt: DateTime! @localTimezone @dateFormat + } +``` + +> **Note**: These directives could be alternatively be implemented as "operation directives" so the client can use them on a query instead of the schema-level. These such directives are a potential future Redwood directive feature. + +## GraphQL Handler Setup + +Redwood makes it easy to code, organize, and map your directives into your GraphQL schema. +Simply add them to the `directives` directory and the `createGraphQLHandler` does all the work. + +You simply add them to the `directives` directory and the `createGraphQLHandler` will do all the work. + +> **Note**: Redwood has a generator that will do all the heavy lifting setup for you! + +```tsx title="api/src/functions/graphql.ts" +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' // 👈 directives live here +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +import { db } from 'src/lib/db' +import { logger } from 'src/lib/logger' + +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + directives, // 👈 directives are added to the schema here + sdls, + services, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +## Secure by Default with Built-in Directives + +By default, your GraphQL endpoint is open to the world. + +That means anyone can request any query and invoke any Mutation. +Whatever types and fields are defined in your SDL is data that anyone can access. + +But Redwood encourages being secure by default by defaulting all queries and mutations to have the `@requireAuth` directive when generating SDL or a service. +When your app builds and your server starts up, Redwood checks that **all** queries and mutations have `@requireAuth`, `@skipAuth` or a custom directive applied. + +If not, then your build will fail: + +```bash + ✖ Verifying graphql schema... + Building API... + Cleaning Web... + Building Web... + Prerendering Web... +You must specify one of @requireAuth, @skipAuth or a custom directive for +- contacts Query +- posts Query +- post Query +- updatePost Mutation +- deletePost Mutation +``` + +or your server won't startup and you should see that "Schema validation failed": + +```bash +gen | Generating TypeScript definitions and GraphQL schemas... +gen | 47 files generated +api | Building... Took 593 ms +api | [GQL Server Error] - Schema validation failed +api | ---------------------------------------- +api | You must specify one of @requireAuth, @skipAuth or a custom directive for +api | - posts Query +api | - createPost Mutation +api | - updatePost Mutation +api | - deletePost Mutation +``` + +To correct, just add the appropriate directive to your queries and mutations. + +If not, then your build will fail and your server won't startup. + +### @requireAuth + +It's your responsibility to implement the `requireAuth()` function in your app's `api/src/lib/auth.{js|ts}` to check if the user is properly authenticated and/or has the expected role membership. + +The `@requireAuth` directive will call the `requireAuth()` function to determine if the user is authenticated or not. + +```tsx title="api/src/lib/auth.ts" +// ... + +export const isAuthenticated = (): boolean => { + return true // 👈 replace with the appropriate check +} + +// ... + +export const requireAuth = ({ roles }: { roles: AllowedRoles }) => { + if (isAuthenticated()) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (!hasRole({ roles })) { + throw new ForbiddenError("You don't have access to do that.") + } +} +``` + +> **Note**: The `auth.ts` file here is the stub for a new RedwoodJS app. Once you have setup auth with your provider, this will enforce a proper authentication check. + +### @skipAuth + +If, however, you want your query or mutation to be public, then simply use `@skipAuth`. + +## Custom Directives + +Want to write your own directive? You can of course! +Just generate one using the Redwood CLI; it takes care of the boilerplate and even gives you a handy test! + +### Generators + +When using the `yarn redwood generate` command, +you'll be presented with a choice of creating a Validator or a Transformer directive. + +```bash +yarn redwood generate directive myDirective + +? What type of directive would you like to generate? › - Use arrow-keys. Return to submit. +❯ Validator - Implement a validation: throw an error if criteria not met to stop execution + Transformer - Modify values of fields or query responses +``` + +> **Note:** You can pass the `--type` flag with either `validator` or `transformer` to create the desired directive type. + +After picking the directive type, the files will be created in your `api/src/directives` directory: + +```bash + ✔ Generating directive file ... + ✔ Successfully wrote file `./api/src/directives/myDirective/myDirective.test.ts` + ✔ Successfully wrote file `./api/src/directives/myDirective/myDirective.ts` + ✔ Generating TypeScript definitions and GraphQL schemas ... + ✔ Next steps... + + After modifying your directive, you can add it to your SDLs e.g.: + // example todo.sdl.js + # Option A: Add it to a field + type Todo { + id: Int! + body: String! @myDirective + } + + # Option B: Add it to query/mutation + type Query { + todos: [Todo] @myDirective + } +``` + +### Validator + +Let's create a `@isSubscriber` directive that checks roles to see if the user is a subscriber. + +```bash +yarn rw g directive isSubscriber --type validator +``` + +Next, implement your validation logic in the directive's `validate` function. + +Validator directives don't have access to the field value, (i.e. they're called before resolving the value). But they do have access to the `context` and `directiveArgs`. +They can be async or sync. +And if you want to stop executing (because of insufficient permissions for example), throw an error. +The return value is ignored + +An example of `directiveArgs` is the `roles` argument in the directive `requireAuth(roles: "ADMIN")` + +```tsx +const validate: ValidatorDirectiveFunc = ({ context, directiveArgs }) => { + // You can also modify your directive to take arguments + // and use the directiveArgs object provided to this function to get values + logger.debug(directiveArgs, 'directiveArgs in isSubscriber directive') + + throw new Error('Implementation missing for isSubscriber') +} +``` + +Here we can access the `context` parameter and then check to see if the `currentUser` is authenticated and if they belong to the `SUBSCRIBER` role: + +```tsx title="/api/src/directives/isSubscriber/isSubscriber.ts" +// ... + +const validate: ValidatorDirectiveFunc = ({ context }) => { + if (!context.currentUser)) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (!context.currentUser.roles?.includes('SUBSCRIBER')) { + throw new ForbiddenError("You don't have access to do that.") + } +} +``` + +#### Writing Validator Tests + +When writing a Validator directive test, you'll want to: + +- ensure the directive is named consistently and correctly so the directive name maps properly when validating +- confirm that the directive throws an error when invalid. The Validator directive should always have a reason to throw an error + +Since we stub out the `Error('Implementation missing for isSubscriber')` case when generating the Validator directive, these tests should pass. +But once you begin implementing the validate logic, it's on you to update appropriately. + +```tsx +import { mockRedwoodDirective, getDirectiveName } from '@redwoodjs/testing/api' + +import isSubscriber from './isSubscriber' + +describe('isSubscriber directive', () => { + it('declares the directive sdl as schema, with the correct name', () => { + expect(isSubscriber.schema).toBeTruthy() + expect(getDirectiveName(isSubscriber.schema)).toBe('isSubscriber') + }) + + it('has a isSubscriber throws an error if validation does not pass', () => { + const mockExecution = mockRedwoodDirective(isSubscriber, {}) + + expect(mockExecution).toThrowError('Implementation missing for isSubscriber') + }) +}) +``` + +:::tip +If your Validator Directive is asynchronous, you can use `mockAsyncRedwoodDirective` instead. + +```ts +import { mockAsyncRedwoodDirective } from '@redwoodjs/testing/api' + +// ... + +describe('isSubscriber directive', () => { + it('has a isSubscriber throws an error if validation does not pass', async () => { + const mockExecution = mockAsyncRedwoodDirective(isSubscriber, {}) + await expect(mockExecution()).rejects.toThrowError( + 'Implementation missing for isSubscriber' + ) + }) +}) +``` + +::: + +### Transformer + +Let's create a `@maskedEmail` directive that checks roles to see if the user should see the complete email address or if it should be obfuscated from prying eyes: + +```bash +yarn rw g directive maskedEmail --type transformer +``` + +Next, implement your validation logic in the directive's `transform` function. + +Transformer directives provide `context` and `resolvedValue` parameters and run **after** resolving the value. +Transformer directives **must** be synchronous, and return a value. +You can throw an error, if you want to stop executing, but note that the value has already been resolved. + +Take note of the `resolvedValue`: + +```tsx +const transform: TransformerDirectiveFunc = ({ context, resolvedValue }) => { + return resolvedValue.replace('foo', 'bar') +} +``` + +It contains the value of the field on which the directive was placed. Here, `email`. +So the `resolvedValue` will be the value of the email property in the User model, the "original value" so-to-speak. + +When you return a value from the `transform` function, just return a modified value and that will be returned as the result and replace the `email` value in the response. + +> 🛎️ **Important** +> +> You must return a value of the same type. So, if your `resolvedValue` is a `String`, return a `String`. If it's a `Date`, return a `Date`. Otherwise, your data will not match the SDL Type. + +#### Writing Transformer Tests + +When writing a Transformer directive test, you'll want to: + +- ensure the directive is named consistently and correctly so the directive name maps properly when transforming +- confirm that the directive returns a value and that it's the expected transformed value + +Since we stub out and mock the `mockedResolvedValue` when generating the Transformer directive, these tests should pass. + +Here we mock the value `foo` and, since the generated `transform` function replaces `foo` with `bar`, we expect that after execution, the returned value will be `bar`. +But once you begin implementing the validate logic, it's on you to update appropriately. + +```tsx +import { mockRedwoodDirective, getDirectiveName } from '@redwoodjs/testing/api' + +import maskedEmail from './maskedEmail' + +describe('maskedEmail directive', () => { + it('declares the directive sdl as schema, with the correct name', () => { + expect(maskedEmail.schema).toBeTruthy() + expect(getDirectiveName(maskedEmail.schema)).toBe('maskedEmail') + }) + + it('has a maskedEmail implementation transforms the value', () => { + const mockExecution = mockRedwoodDirective(maskedEmail, { + mockedResolvedValue: 'foo', + }) + + expect(mockExecution()).toBe('bar') + }) +}) +``` + +:::tip +If your Transformer Directive is asynchronous, you can use `mockAsyncRedwoodDirective` instead. + +```ts +import { mockAsyncRedwoodDirective } from '@redwoodjs/testing/api' + +// ... + +import maskedEmail from './maskedEmail' + +describe('maskedEmail directive', () => { + it('has a maskedEmail implementation transforms the value', async () => { + const mockExecution = mockAsyncRedwoodDirective(maskedEmail, { + mockedResolvedValue: 'foo', + }) + + await expect(mockExecution()).resolves.toBe('bar') + }) +}) +``` +::: diff --git a/docs/versioned_docs/version-7.0/docker.md b/docs/versioned_docs/version-7.0/docker.md new file mode 100644 index 000000000000..53a1c3aa0a38 --- /dev/null +++ b/docs/versioned_docs/version-7.0/docker.md @@ -0,0 +1,680 @@ +--- +description: Redwood's Dockerfile +--- + +# Docker + +:::note The Dockerfile is experimental + +Redwood's Dockerfile is the collective effort of several hard-working community members. +We've worked hard to optimize it, but expect changes as we collaborate with users and deploy providers. + +::: + +If you're not familiar with Docker, we recommend going through their [getting started](https://docs.docker.com/get-started/) documentation. + +## Set up + +To get started, run the setup command: + +``` +yarn rw experimental setup-docker +``` + +The setup commands does several things: +- writes four files: `Dockerfile`, `.dockerignore`, `docker-compose.dev.yml`, and `docker-compose.prod.yml` +- adds the `@redwoodjs/api-server` and `@redwoodjs/web-server` packages to the api and web sides respectively +- edits the `browser.open` setting in the `redwood.toml` (right now, if it's set to `true`, it'll break the dev server when running the `docker-compose.dev.yml`) + +## Usage + +You can start the dev compose file with: + +``` +docker compose -f ./docker-compose.dev.yml up +``` + +And the prod compose file with: + +``` +docker compose -f ./docker-compose.prod.yml up +``` + +:::info make sure to specify build args + +If your api side or web side depend on env vars at build time, you may need to supply them as `--build-args`, or in the compose files. + +This is often the most tedious part of setting up Docker. Have ideas of how it could be better? Let us know on the [forums](https://community.redwoodjs.com/)! + +::: + +The first time you do this, you'll have to use the `console` stage to go in and migrate the database—just like you would with a Redwood app on your machine: + +``` +docker compose -f ./docker-compose.dev.yml run --rm -it console /bin/bash +root@...:/home/node/app# yarn rw prisma migrate dev +``` + +## The Dockerfile in detail + +The documentation here goes through and explains every line of Redwood's Dockerfile. +If you'd like to see the whole Dockerfile for reference, you can find it [here](https://github.com/redwoodjs/redwood/tree/main/packages/cli/src/commands/experimental/templates/docker/Dockerfile) or by setting it up in your project: `yarn rw experimental setup-docker`. + +Redwood takes advantage of [Docker's multi-stage build support](https://docs.docker.com/build/building/multi-stage/) to keep the final production images lean. + +### The `base` stage + +The `base` stage installs dependencies. +It's used as the base image for the build stages and the `console` stage. + +```Dockerfile +FROM node:20-bookworm-slim as base +``` + +We use a Node.js 20 image as the base image because that's the version Redwood targets. +"bookworm" is the codename for the current stable distribution of Debian (version 12). +Lastly, the "slim" variant of the `node:20-bookworm` image only includes what Node.js needs which reduces the image's size while making it more secure. + +:::tip Why not alpine? + +While alpine may be smaller, it uses musl, a different C standard library. +In developing this Dockerfile, we prioritized security over size. + +If you know what you're doing feel free to change this—it's your Dockerfile now! +Just remember to change the `apt-get` instructions further down too if needed. + +::: + +Moving on, next we have `corepack enable`: + +```Dockerfile +RUN corepack enable +``` + +[Corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html), Node's manager for package managers, needs to be enabled so that Yarn can use the `packageManager` field in your project's root `package.json` to pick the right version of itself. +If you'd rather check in the binary, you still can, but you'll need to remember to copy it over (i.e. `COPY --chown=node:node .yarn/releases .yarn/releases`). + +```Dockerfile +RUN apt-get update && apt-get install -y \ + openssl \ + # python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +The `node:20-bookworm-slim` image doesn't have [OpenSSL](https://www.openssl.org/), which [seems to be a bug](https://github.com/nodejs/docker-node/issues/1919). +(It was included in the "bullseye" image, the codename for Debian 11.) +On Linux, [Prisma needs OpenSSL](https://www.prisma.io/docs/reference/system-requirements#linux-runtime-dependencies), so we install it here via Ubuntu's package manager APT. +Python and its dependencies are there ready to be uncommented if you need them. See the [Troubleshooting](#python) section for more information. + +[It's recommended](https://docs.docker.com/develop/develop-images/instructions/#apt-get) to combine `apt-get update` and `apt-get install -y` in the same `RUN` statement for cache busting. +After installing, we clean up the apt cache to keep the layer lean. (Running `apt-get clean` isn't required—[official Debian images do it automatically](https://github.com/moby/moby/blob/03e2923e42446dbb830c654d0eec323a0b4ef02a/contrib/mkimage/debootstrap#L82-L105).) + +```Dockerfile +USER node +``` + +This and subsequent `chown` options in `COPY` instructions are for security. +[Services that can run without privileges should](https://docs.docker.com/develop/develop-images/instructions/#user). +The Node.js image includes a user, `node`, created with an explicit `uid` and `gid` (`1000`). +We reuse it. + +```Dockerfile +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml . +COPY --chown=node:node package.json . +COPY --chown=node:node api/package.json api/ +COPY --chown=node:node web/package.json web/ +COPY --chown=node:node yarn.lock . +``` + +Here we copy the minimum set of files that the `yarn install` step needs. +The order isn't completely arbitrary—it tries to maximize [Docker's layer caching](https://docs.docker.com/build/cache/). +We expect `yarn.lock` to change more than the `package.json`s and the `package.json`s to change more than `.yarnrc.yml`. +That said, it's hard to argue that these files couldn't be arranged differently, or that the `COPY` instructions couldn't be combined. +The important thing is that they're all here, before the `yarn install` step: + +```Dockerfile +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn install +``` + +This step installs all your project's dependencies—production and dev. +Since we use multi-stage builds, your production images won't pay for the dev dependencies installed in this step. +The build stages need the dev dependencies. + +The `mkdir` steps are a workaround for a permission error. We're working on removing them, but for now if you remove them the install step will probably fail. + +This step is a bit more involved than the others. +It uses a [cache mount](https://docs.docker.com/build/cache/#use-your-package-manager-wisely). +Yarn operates in three steps: resolution, fetch, and link. +If you're not careful, the cache for the fetch step basically doubles the number of `node_modules` installed on disk. +We could disable it all together, but by using a cache mount, we can still get the benefits without paying twice. +We set it to the default directory here, but you can change its location in `.yarnrc.yml`. +If you've done so you'll have to change it here too. + +One more thing to note: without setting `CI=1`, depending on the deploy provider, yarn may think it's in a TTY, making the logs difficult to read. With this set, yarn adapts accordingly. +Enabling CI enables [immutable installs](https://v3.yarnpkg.com/configuration/yarnrc#enableImmutableInstalls) and [inline builds](https://v3.yarnpkg.com/configuration/yarnrc#enableInlineBuilds), both of which are highly recommended. + +```Dockerfile +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults +``` + +We'll need these config files for the build and production stages. +The `redwood.toml` file is Redwood's de-facto config file. +Both the build and serve stages read it to enable and configure functionality. + +:::warning `.env.defaults` is ok to include but `.env` is not + +If you add a secret to the Dockerfile, it can be excavated. +While it's technically true that multi stage builds add a sort of security layer, it's not a best practice. +Leave them out and look to your deploy provider for further configuration. + +::: + +### The `api_build` stage + +The `api_build` stage builds the api side: + +```Dockerfile +FROM base as api_build + +# If your api side build relies on build-time environment variables, +# specify them here as ARGs. +# +# ARG MY_BUILD_TIME_ENV_VAR + +COPY --chown=node:node api api +RUN yarn rw build api +``` + +After the work we did in the base stage, building the api side amounts to copying in the api directory and running `yarn rw build api`. + +### The `api_serve` stage + +The `api_serve` stage serves your GraphQL api and functions: + +```Dockerfile +FROM node:20-bookworm-slim as api_serve + +RUN corepack enable + +RUN apt-get update && apt-get install -y \ + openssl \ + # python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +We don't start from the `base` stage, but begin anew with the `node:20-bookworm-slim` image. +Since this is a production stage, it's important for it to be as small as possible. +Docker's [multi-stage builds](https://docs.docker.com/build/building/multi-stage/) enables this. + +```Dockerfile +USER node +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml .yarnrc.yml +COPY --chown=node:node package.json . +COPY --chown=node:node api/package.json api/ +COPY --chown=node:node yarn.lock yarn.lock +``` + +Like other `COPY` instructions, ordering these files with care enables layering caching. + +```Dockerfile +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn workspaces focus api --production +``` + +This is a critical step for image size. +We don't use the regular `yarn install` command. +Using the [official workspaces plugin](https://github.com/yarnpkg/berry/tree/master/packages/plugin-workspace-tools)—which is included by default in yarn v4—we "focus" on the api workspace, only installing its production dependencies. + +The cache mount will be populated at this point from the install in the `base` stage, so the fetch step should fly by. + +```Dockerfile +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults + +COPY --chown=node:node --from=api_build /home/node/app/api/dist /home/node/app/api/dist +COPY --chown=node:node --from=api_build /home/node/app/api/db /home/node/app/api/db +COPY --chown=node:node --from=api_build /home/node/app/node_modules/.prisma /home/node/app/node_modules/.prisma +``` + +Here's where we really take advantage of multi-stage builds by copying from the `api_build` stage. +At this point all the building has been done. Now we can just grab the artifacts without having to lug around the dev dependencies. + +There's one more thing that was built: the prisma client in `node_modules/.prisma`. +We need to grab it too. + +```Dockerfile +ENV NODE_ENV=production + +CMD [ "node_modules/.bin/rw-server", "api" ] +``` + +Lastly, the default command is to start the api server using the bin from the `@redwoodjs/api-server` package. +You can override this command if you have more specific needs. + +Note that the Redwood CLI isn't available anymore. (It's a dev dependency.) +To access the server bin, we have to find its path in `node_modules`. +Though this is somewhat discouraged in modern yarn, since we're using the `node-modules` node linker, it's in `node_modules/.bin`. + +### The `web_build` stage + +This `web_build` builds the web side: + +```Dockerfile +FROM base as web_build + +COPY --chown=node:node web web +RUN yarn rw build web --no-prerender +``` + +After the work we did in the base stage, building the web side amounts to copying in the web directory and running `yarn rw build web`. + +This stage is a bit of a simplification. +It foregoes Redwood's prerendering (SSG) capability. +Prerendering is a little trickier; see [the `web_prerender_build` stage](#the-web_prerender_build-stage). + +If you've included environment variables in your `redwood.toml`'s `web.includeEnvironmentVariables` field, you'll want to specify them as ARGs here. +The setup command should've inlined them for you. + +### The `web_prerender_build` stage + +The `web_prerender_build` stage builds the web side with prerender. + +```Dockerfile +FROM api_build as web_build_with_prerender + +COPY --chown=node:node web web +RUN yarn rw build web +``` + +Building the web side with prerendering poses a challenge. +Prerender needs the api side around to get data for your Cells and route hooks. +The key line here is the first one—this stage uses the `api_build` stage as its base image. + +### The `web_serve` stage + +```Dockerfile +FROM node:20-bookworm-slim as web_serve + +RUN corepack enable + +USER node +WORKDIR /home/node/app + +COPY --chown=node:node .yarnrc.yml . +COPY --chown=node:node package.json . +COPY --chown=node:node web/package.json web/ +COPY --chown=node:node yarn.lock . + +RUN mkdir -p /home/node/.yarn/berry/index +RUN mkdir -p /home/node/.cache + +RUN --mount=type=cache,target=/home/node/.yarn/berry/cache,uid=1000 \ + --mount=type=cache,target=/home/node/.cache,uid=1000 \ + CI=1 yarn workspaces focus web --production + +COPY --chown=node:node redwood.toml . +COPY --chown=node:node graphql.config.js . +COPY --chown=node:node .env.defaults .env.defaults + +COPY --chown=node:node --from=web_build /home/node/app/web/dist /home/node/app/web/dist + +ENV NODE_ENV=production \ + API_PROXY_TARGET=http://api:8911 + +CMD "node_modules/.bin/rw-web-server" "--api-proxy-target" "$API_PROXY_TARGET" +``` + +Most of this stage is similar to the `api_serve` stage, except that we're copying from the `web_build` stage instead of the `api_build`. +(If you're prerendering, you'll want to change the `--from=web_build` to `--from=web_prerender_build`.) + +The binary we're using here to serve the web side is `rw-web-server` which comes from the `@redwoodjs/web-server` package. +While this web server will be much more fully featured in the future, right now it's mostly just to get you going. +Ideally you want to put a web server like Nginx or Caddy in front of it. + +Lastly, note that we use the shell form of `CMD` here for its variable expansion. + +### The `console` stage + +The `console` stage is an optional stage for debugging: + +```Dockerfile +FROM base as console + +# To add more packages: +# +# ``` +# USER root +# +# RUN apt-get update && apt-get install -y \ +# curl +# +# USER node +# ``` + +COPY --chown=node:node api api +COPY --chown=node:node web web +COPY --chown=node:node scripts scripts +``` + +The console stage completes the base stage by copying in the rest of your Redwood app. +But then it pretty much leaves you to your own devices. +The intended way to use it is to create an ephemeral container by starting a shell like `/bin/bash` in the image built by targeting this stage: + +```bash +# Build the console image: +docker build . -t console --target console +# Start an ephemeral container from it: +docker run --rm -it console /bin/bash +``` + +As the comment says, feel free to add more packages. +We intentionally kept them to a minimum in the base stage, but you shouldn't worry about the size of the image here. + +## Troubleshooting + +### Python + +We tried to make the Dockerfile as lean as possible. +In some cases, that means we excluded a dependency your project needs. +And by far the most common is Python. + +During a stage's `yarn install` step (`RUN ... yarn install`), if you see an error like the following: + +``` +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Python is not set from command line or npm configuration +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Python is not set from environment variable PYTHON +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python checking if "python3" can be used +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - executable path is "" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - "" could not be run +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python checking if "python" can be used +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - executable path is "" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - "" could not be run +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python ********************************************************** +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python You need to install the latest version of Python. +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python Node-gyp should be able to find and use Python. If not, +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python you can try one of the following options: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Use the switch --python="/path/to/pythonexecutable" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python (accepted by both node-gyp and npm) +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Set the environment variable PYTHON +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python - Set the npm configuration variable python: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python npm config set python "/path/to/pythonexecutable" +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python For more information consult the documentation at: +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python https://github.com/nodejs/node-gyp#installation +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python ********************************************************** +➤ YN0000: │ bufferutil@npm:4.0.8 STDERR gyp ERR! find Python +``` + +It's because your project depends on Python and the image doesn't provide it. + +It's easy to fix: just add `python3` and its dependencies (usually `make` and `gcc`): + +```diff + FROM node:20-bookworm-slim as base + + RUN apt-get update && apt-get install -y \ + openssl \ ++ python3 make gcc \ + && rm -rf /var/lib/apt/lists/* +``` + +Not sure why your project depends on Python? `yarn why` is your friend. +From the error message, we know `bufferutil` couldn't build. +But why do we have `bufferutil`? + +``` +yarn why bufferutil +└─ websocket@npm:1.0.34 + └─ bufferutil@npm:4.0.8 (via npm:^4.0.1) +``` + +`websocket` needs `bufferutil`. But why do we have `websocket`? +Keep pulling the thread till you get to a top-level dependency: + +``` +yarn why websocket +└─ @supabase/realtime-js@npm:2.8.4 + └─ websocket@npm:1.0.34 (via npm:^1.0.34) + +yarn why @supabase/realtime-js +└─ @supabase/supabase-js@npm:2.38.4 + └─ @supabase/realtime-js@npm:2.8.4 (via npm:^2.8.4) + +yarn why @supabase/supabase-js +├─ api@workspace:api +│ └─ @supabase/supabase-js@npm:2.38.4 (via npm:^2.21.0) +│ +└─ web@workspace:web + └─ @supabase/supabase-js@npm:2.38.4 (via npm:^2.21.0) +``` + +In this case, it looks like it's ultimately because of our auth provider, `@supabase/supabase-js`. + +## Using the Server File + +Redwood v7 introduced a new entry point to Redwood's api server: the server file at `api/src/server.ts`. +The server file was made with Docker in mind. It allows you to + +1. have control over how the api server starts, +2. customize the server as much as you want, and +3. minimize the number of dependencies needed to start the api server process (all you need is Node.js!) + +Get started by running the setup command: + +``` +yarn rw setup server-file +``` + +This should give you a new file at `api/src/server.ts`: + +```typescript title="api/src/server.ts" +import { createServer } from '@redwoodjs/api-server' + +import { logger } from 'src/lib/logger' + +async function main() { + const server = await createServer({ + logger, + }) + + await server.start() +} + +main() +``` + +Without the server file, to start the api side, you'd use binaries provided by `@redwoodjs/api-server` such as `yarn rw-server api` (you may also see this as `./node_modules/.bin/rw-server api`). + +With the server file, there's no indirection. Just use `node`: + +``` +yarn node api/dist/server.js +``` + +:::info You have to build first + +You can't run the server file directly with Node.js; it has to be built first: + +``` +yarn rw build api +``` + +The api serve stage in the Dockerfile pulls from the api build stage, so things are already in the right order there. Similarly, for `yarn rw dev`, the dev server will build and reload the server file for you. + +::: + +That means you can swap the `CMD` instruction in the api server stage: + +```diff + ENV NODE_ENV=production + +- CMD [ "node_modules/.bin/rw-server", "api" ] ++ CMD [ "yarn", "node", "api/dist/server.js" ] +``` + +### Configuring the server + +There's two ways you can configure the server. + +First, you can configure how the underlying Fastify server is instantiated via the`fastifyServerOptions` passed to the `createServer` function: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, + // highlight-start + fastifyServerOptions: { + // ... + } + // highlight-end +}) +``` + +For the complete list of options, see [Fastify's documentation](https://fastify.dev/docs/latest/Reference/Server/#factory). + +Second, you can register Fastify plugins on the server instance: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, +}) + +// highlight-next-line +server.register(myFastifyPlugin) +``` + +#### Example: Compressing Payloads and Rate Limiting + +Let's say that we want to compress payloads and add rate limiting. +We want to compress payloads only if they're larger than 1KB, preferring deflate to gzip, +and we want to limit IP addresses to 100 requests in a five minute window. +We can leverage two Fastify ecosystem plugins, [@fastify/compress](https://github.com/fastify/fastify-compress) and [@fastify/rate-limit](https://github.com/fastify/fastify-rate-limit) respectively. + +First, you'll need to install these packages: + +``` +yarn workspace api add @fastify/compress @fastify/rate-limit +``` + +Then register them with the appropriate config: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, +}) + +await server.register(import('@fastify/compress'), { + global: true, + threshold: 1024, + encodings: ['deflate', 'gzip'], +}) + +await server.register(import('@fastify/rate-limit'), { + max: 100, + timeWindow: '5 minutes', +}) +``` + +#### Example: File Uploads + +If you try to POST file content to the api server such as images or PDFs, you may see the following error from Fastify: + +```json +{ + "statusCode": 400, + "code": "FST_ERR_CTP_INVALID_CONTENT_LENGTH", + "error": "Bad Request", + "message": "Request body size did not match Content-Length" +} +``` + +This's because Fastify [only supports `application/json` and `text/plain` content types natively](https://www.fastify.io/docs/latest/Reference/ContentTypeParser/). +While Redwood configures the api server to also accept `application/x-www-form-urlencoded` and `multipart/form-data`, if you want to support other content or MIME types (likes images or PDFs), you'll need to configure them here in the server file. + +You can use Fastify's `addContentTypeParser` function to allow uploads of the content types your application needs. +For example, to support image file uploads you'd tell Fastify to allow `/^image\/.*/` content types: + +```ts title="api/src/server.ts" +const server = await createServer({ + logger, +}) + +server.addContentTypeParser(/^image\/.*/, (req, payload, done) => { + payload.on('end', () => { + done() + }) +}) +``` + +The regular expression (`/^image\/.*/`) above allows all image content or MIME types because [they start with "image"](https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types). + +Now, when you POST those content types to a function served by the api server, you can access the file content on `event.body`. + +### The `start` method + +Since there's a few different ways to configure the host and port the server listens at, the server instance returned by `createServer` has a special `start` method: + +```ts title="api/src/server.ts" +await server.start() +``` + +`start` is a thin wrapper around [`listen`](https://fastify.dev/docs/latest/Reference/Server/#listen). +It takes the same arguments as `listen`, except for host and port. It computes those in the following way, in order of precedence: + +1. `--apiHost` or `--apiPort` flags: + + ``` + yarn node api/dist/server.js --apiHost 0.0.0.0 --apiPort 8913 + ``` + +2. `REDWOOD_API_HOST` or `REDWOOD_API_PORT` env vars: + + ``` + export REDWOOD_API_HOST='0.0.0.0' + export REDWOOD_API_PORT='8913' + yarn node api/dist/server.js + ``` + +3. `[api].host` and `[api].port` in `redwood.toml`: + + ```toml title="redwood.toml" + [api] + host = '0.0.0.0' + port = 8913 + ``` + +If you'd rather not have `createServer` parsing `process.argv`, you can disable it via `parseArgv`: + +```ts title="api/src/server.ts" +await createServer({ + parseArgv: false, +}) +``` + +And if you'd rather it do none of this, just change `start` to `listen` and specify the host and port inline: + +```ts title="api/src/server.ts" +await server.listen({ + host: '0.0.0.0', + port: 8913, +}) +``` + +If you don't specify a host, `createServer` uses `NODE_ENV` to set it. If `NODE_ENV` is production, it defaults to `'0.0.0.0'` and `'::'` otherwise. +The Dockerfile sets `NODE_ENV` to production so that things work out of the box. diff --git a/docs/versioned_docs/version-7.0/environment-variables.md b/docs/versioned_docs/version-7.0/environment-variables.md new file mode 100644 index 000000000000..537d7d259930 --- /dev/null +++ b/docs/versioned_docs/version-7.0/environment-variables.md @@ -0,0 +1,152 @@ +--- +description: How to use environment variables on the api and web sides +--- + +# Environment Variables + +You can provide environment variables to each side of your Redwood app in different ways, depending on each Side's target, and whether you're in development or production. + +> Right now, Redwood apps have two fixed Sides, API and Web, that each have a single target, nodejs and browser respectively. + +## Generally + +Redwood apps use [dotenv](https://github.com/motdotla/dotenv) to load vars from your `.env` file into `process.env`. +For a reference on dotenv syntax, see the dotenv README's [Rules](https://github.com/motdotla/dotenv#rules) section. + +> Technically, we use [dotenv-defaults](https://github.com/mrsteele/dotenv-defaults), which is how we also supply and load `.env.defaults`. + +<!-- also in a Redwood app's base directory. --> + +Redwood also configures Vite, so that all references to `process.env` vars on the Web side will be replaced with the variable's actual value at build-time. More on this in [Web](#Web). + +## Web + +### Including environment variables +> **Heads Up:** for Web to access environment variables in production, you _must_ configure one of the options below. +> +> Redwood recommends **Option 1: `redwood.toml`** as it is the most robust. + +In production, you can get environment variables to the Web Side either by + +1. adding to `redwood.toml` via the `includeEnvironmentVariables` array, or +2. prefixing with `REDWOOD_ENV_` + +Just like for the API Side, you'll also have to set them up with your provider. Some hosting providers distinguish between build and runtime environments for configuring environment variables. +Environment variables for the web side should in those cases be configured as build-time variables. + +#### Option 1: includeEnvironmentVariables in redwood.toml + +For Example: + +```toml title="redwood.toml" +[web] + includeEnvironmentVariables = ['SECRET_API_KEY', 'ANOTHER_ONE'] +``` + +By adding environment variables to this array, they'll be available to Web in production via `process.env.SECRET_API_KEY`. This means that if you have an environment variable like `process.env.SECRET_API_KEY` Redwood removes and replaces it with its _actual_ value. + +Note: if someone inspects your site's source, _they could see your `REDWOOD_ENV_SECRET_API_KEY` in plain text._ This is a limitation of delivering static JS and HTML to the browser. + +#### Option 2: Prefixing with REDWOOD\_ENV\_ + +In `.env`, if you prefix your environment variables with `REDWOOD_ENV_`, they'll be available via `process.env.REDWOOD_ENV_MY_VAR_NAME`, and will be dynamically replaced at build-time. + +Like the option above, these are also removed and replaced with the _actual value_ during build in order to be available in production. + + +### Accessing API URLs + +Redwood automatically makes your API URL configurations from the web section of your `redwood.toml` available globally. +They're accessible via the `window` or `global` objects. +For example, `global.RWJS_API_GRAPHQL_URL` gives you the URL for your graphql endpoint. + +The toml values are mapped as follows: + +| `redwood.toml` key | Available globally as | Description | +| ------------------ | ----------------------------- | ---------------------------------------- | +| `apiUrl` | `global.RWJS_API_URL` | URL or absolute path to your api-server | +| `apiGraphQLUrl` | `global.RWJS_API_GRAPHQL_URL` | URL or absolute path to GraphQL function | + +See the [redwood.toml reference](app-configuration-redwood-toml.md#api-paths) for more details. + +## Development Fatal Error Page + +```text title=".env" +REDWOOD_ENV_EDITOR=vscode +``` + +Redwood comes with a `FatalErrorPage` that displays helpful information—like the stack trace and the request—when something breaks. + +> `FatalErrorPage` isn't bundled when deploying to production + +As part of the stack trace, there are links to the original source files so that they can be quickly opened in your editor. +The page defaults to VSCode, but you can override the editor by setting the environment variable `REDWOOD_ENV_EDITOR`. + +## API + +### Development + +You can access environment variables defined in `.env` and `.env.defaults` as `process.env.VAR_NAME`. For example, if we define the environment variable `HELLO_ENV` in `.env`: + +``` +HELLO_ENV=hello world +``` + +and make a hello Function (`yarn rw generate function hello`) and reference `HELLO_ENV` in the body of our response: + +```jsx {6} title="./api/src/functions/hello.js" +export const handler = async (event, context) => { + return { + statusCode: 200, + body: `${process.env.HELLO_ENV}`, + } +} +``` + +Navigating to http://localhost:8911/hello shows that the Function successfully accesses the environment variable: + +<!-- @todo --> +<!-- Get a better-quality pic --> + +![rw-envVars-api](https://user-images.githubusercontent.com/32992335/86520528-47112100-bdfa-11ea-8d7e-1c0d502805b2.png) + +### Production + +<!-- @todo --> +<!-- Deployment system? platform? --> + +Whichever platform you deploy to, they'll have some specific way of making environment variables available to the serverless environment where your Functions run. For example, if you deploy to Netlify, you set your environment variables in **Settings** > **Build & Deploy** > **Environment**. You'll just have to read your provider's documentation. +Some hosting providers distinguish between build and runtime environments for configuring environment variables. Environment variables for the api side should in those cases be configured as runtime variables. + +## Keeping Sensitive Information Safe + +Since it usually contains sensitive information, you should [never commit your `.env` file](https://github.com/motdotla/dotenv#should-i-commit-my-env-file). Note that you'd actually have to go out of your way to do this as, by default, a Redwood app's `.gitignore` explicitly ignores `.env`: + +```plaintext {2} +.DS_Store +.env +.netlify +dev.db +dist +dist-babel +node_modules +yarn-error.log +``` + +## Where Does Redwood Load My Environment Variables? + +For all the variables in your `.env` and `.env.defaults` files to make their way to `process.env`, there has to be a call to `dotenv`'s `config` function somewhere. So where is it? + +It's in [the CLI](https://github.com/redwoodjs/redwood/blob/main/packages/cli/src/index.js#L6-L12)—every time you run a `yarn rw` command: + +```jsx title="packages/cli/src/index.js" +import { config } from 'dotenv-defaults' + +config({ + path: path.join(getPaths().base, '.env'), + encoding: 'utf8', + defaults: path.join(getPaths().base, '.env.defaults'), +}) +``` + +Remember, if `yarn rw dev` is already running, your local app won't reflect any changes you make to your `.env` file until you stop and re-run `yarn rw dev`. diff --git a/docs/versioned_docs/version-7.0/forms.md b/docs/versioned_docs/version-7.0/forms.md new file mode 100644 index 000000000000..db7b39ce2657 --- /dev/null +++ b/docs/versioned_docs/version-7.0/forms.md @@ -0,0 +1,548 @@ +--- +description: Redwood makes building forms easier with helper components +--- + +# Forms + +Redwood provides several helpers to make building forms easier. +All of Redwood's helpers are simple wrappers around [React Hook Form](https://react-hook-form.com/) (RHF) that make it even easier to use in most cases. + +If Redwood's helpers aren't flexible enough for you, you can use React Hook Form directly. `@redwoodjs/forms` exports everything it does: + +```jsx +import { + useForm, + useFormContext, + /** + * Or anything else React Hook Form exports! + * + * @see {@link https://react-hook-form.com/api} + */ +} from '@redwoodjs/forms' +``` + +## Overview + +`@redwoodjs/forms` exports the following components: + +| Component | Description | +|:------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------| +| `<Form>` | Surrounds all components, providing form and error contexts | +| `<FormError>` | Displays error messages from the server. Typically placed at the top of your form | +| `<Label>` | Used in place of the HTML `<label>` tag. Accepts error-styling props | +| `<InputField>` | Used in place of the HTML `<input>` tag. Accepts validation and error-styling props (also see the list of input field components enumerated below) | +| `<SelectField>` | Used in place of the HTML `<select>` tag. Accepts validation and error-styling props | +| `<TextAreaField>` | Used in place of the HTML `<textarea>` tag. Accepts validation and error-styling props | +| `<FieldError>` | Displays error messages if the field with the same `name` prop has validation errors. Only renders if there's an error on the associated field | +| `<Submit>` | Used in place of `<button type="submit">`. Triggers validation and "submission" (executes the function passed to `<Form>`'s `onSubmit` prop) | + +All HTML `<input>` types are also available as components. They follow the naming convention `<TypeField>` where `Type` is one of the [HTML input types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types). +We'll refer to them collectively as "input fields". +The full list is: + +- `<ButtonField>` +- `<CheckboxField>` +- `<ColorField>` +- `<DateField>` +- `<DatetimeLocalField>` +- `<EmailField>` +- `<FileField>` +- `<HiddenField>` +- `<ImageField>` +- `<MonthField>` +- `<NumberField>` +- `<PasswordField>` +- `<RadioField>` +- `<RangeField>` +- `<ResetField>` +- `<SearchField>` +- `<SubmitField>` +- `<TelField>` +- `<TextField>` +- `<TimeField>` +- `<UrlField>` +- `<WeekField>` + +### Validation and Error-styling Props + +All components ending in `Field` (i.e. all input fields, along with `<SelectField>` and `<TextAreaField>`) accept validation and error-styling props. +By validation and error-styling props, we mean three props specifically: + +- `validation`, which accepts all of React Hook Form's [`register` options](https://react-hook-form.com/api/useform/register), plus the Redwood-exclusive coercion helpers `valueAsBoolean`, `valueAsJSON` +- `errorClassName` and `errorStyle`, which are the classes and styles to apply if there's an error + +Besides `name`, all other props passed to these components are forwarded to the tag they render. +Here's a table for reference: + +| Prop | Description | +|:-----------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `name` | The name of the field. React Hook Form uses it a key to hook it up with everything else | +| `validation` | All your validation logic. Accepts all of React Hook Form's [`register` options](https://react-hook-form.com/api/useform/register), plus the Redwood-exclusive coercion helpers `valueAsBoolean`, `valueAsJSON` | +| `errorClassName` | The class name to apply if there's an error | +| `errorStyle` | The style to apply if there's an error | + +### Example + +A typical React component using these helpers would look something like this: + +```jsx +import { + Form, + Label, + TextField, + TextAreaField, + FieldError, + Submit, +} from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <Form onSubmit={onSubmit}> + <Label name="name" className="label" errorClassName="label error" /> + <TextField + name="name" + className="input" + errorClassName="input error" + validation={{ required: true }} + /> + <FieldError name="name" className="error-message" /> + + <Label name="email" className="label" errorClassName="label error" /> + <TextField + name="email" + className="input" + errorClassName="input error" + validation={{ + required: true, + pattern: { + value: /[^@]+@[^\.]+\..+/, + }, + }} + /> + <FieldError name="email" className="error-message" /> + + <Label name="message" className="label" errorClassName="label error" /> + <TextAreaField + name="message" + className="input" + errorClassName="input error" + validation={{ required: true }} + /> + <FieldError name="message" className="error-message" /> + + <Submit className="button">Save</Submit> + </Form> + ) +} +``` + +## `<Form>` + +Any form you want Redwood to validate and style in the presence errors should be surrounded by this tag. + +| Prop | Description | +|:--------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `config` | Accepts an object containing options for React Hook Form's [`useForm` hook](https://react-hook-form.com/api/useform) | +| `formMethods` | The functions returned from `useForm`. You only need to use this prop if you need to access to one of the functions that `useForm` returns (see example below) | +| `onSubmit` | Accepts a function to be called if validation succeeds. Called with an object containing name-value pairs of all the fields in your form | + +All other props are forwarded to the `<form>` tag that it renders. + +### `<Form>` Explained + +`<Form>` encapsulates React Hook Form's `useForm` hook and `<FormProvider>` context, along with Redwood's `ServerError` context. +It's hard to talk about this component without getting into the nitty-gritty of React Hook Forms. + +`useForm` is React Hook Form's major hook. +It returns a bunch of functions, one of which is `register`, which you use to quite literally "register" fields into React Hook Form so it can validate them. +(This has to do with [controlled vs. uncontrolled components](https://reactjs.org/docs/uncontrolled-components.html). React Hook Form takes the latter approach.) + +All of Redwood's form helpers need the `register` function to do what they do. But they don't get it straight from `<Form>` because they could be nested arbitrarily deep. That's where `<FormProvider>` comes in: by passing the functions returned from `useForm` to `<FormProvider>`, Redwood's helpers can just use `useFormContext` to get what they need. + +### Using `formMethods` + +There are some functions that `useForm` returns that it'd be nice to have access to. +For example, `useForm` returns a function `reset`, which resets the form's fields. +To access it, you have to call `useForm` yourself. +But you still need to pass `useForm`'s return to the `<FormProvider>` so that Redwood's helpers can register themselves: + +```jsx +import { useForm } from 'react-hook-form' + +const ContactPage = () => { + const formMethods = useForm() + + const onSubmit = (data) => { + console.log(data) + formMethods.reset() + } + + return ( + <Form formMethods={formMethods} onSubmit={onSubmit}> + // Still works! + <TextField name="name" validation={{ required: true }}> + </Form> + ) +} +``` + +## `<FormError>` + +This helper renders a `<div>` containing a "title" message and a `<ul>` enumerating any errors reported by the server when trying to save your form. You can see it in a scaffold if you submit a form that somehow gets passed client-side validation: + +![image](https://user-images.githubusercontent.com/32992335/138611080-9bb138a9-59cc-406d-b926-ef46f4aa7997.png) + +For example, let's say you have a form with a `<TextField>` for a user's email address, but you didn't specify any validation on it: + +```jsx {22} +import { useMutation } from '@redwoodjs/web' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: ContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + const [create, { loading, error }] = useMutation(CREATE_CONTACT) + + const onSubmit = (data) => { + create({ variables: { input: data }}) + } + + return ( + <Form onSubmit={onSubmit}> + <FormError error={error}> + // No validation—any email goes! + <TextField name="email" /> + </Form> + ) +} +``` + +Since there's no validation, anything goes! +On the client at least. +GraphQL is built on types, so it's not going to let just anything through. +Instead it'll throw an error and bubble it back up to the top (via the `error` object returned by the `useMutation` hook) where `<FormError>` can render something like: + +```html +<div> + <p> + Can't create new contact: + </p> + <ul> + <li> + email is not formatted like an email address + </li> + </ul> +</div> +``` + +## `<Label>` + +Renders an HTML `<label>` tag with different `className` and `style` props depending on whether the field it's associated with has a validation error. + +This tag can be self-closing, in which case the `name` becomes the text of the label: + +```html +<Label name="name" className="input" errorClassName="input error" /> + +<!-- Renders: <label for="name" class="input">name</label> --> +``` + +It can also have standard separate open/close tags and take text inside, in which case that text is the text of the rendered `<label>`: + +```html +<Label name="name" className="input" errorClassName="input error">Your Name</Label> + +<!-- Renders: <label for="name" class="input">Your Name</label> --> +``` + +All props are passed to the underlying `<label>` tag besides the ones listed below: + +| Prop | Description | +|:-----------------|:------------------------------------------------------------------------------------------------------------------------------------------| +| `name` | The name of the field that this label is associated with. This should be the same as the `name` prop on the input field this label is for | +| `errorClassName` | The `className` that's used if the field with the same `name` has a validation error | +| `errorStyle` | The `style` that's used if the field with the same `name` has a validation error | + +## Input Fields + +Inputs are the backbone of most forms. +While you can use `<InputField>` and it's `type` prop to make all the different kinds of input fields you'd use in a form, it's often easier to reach for the named input fields (listed above) which have defaults for things like coercion configured where appropriate. + +### Default coercion + +Certain input fields handle coercion automatically, but you can always override the coercion or, if it's not built-in, set it manually via the `validation` prop's [setValueAs](https://react-hook-form.com/api/useform/register) property. + +The input fields that coerce automatically are: + +| Field | Default coercion | +|:-----------------------|:-----------------| +| `<CheckboxField>` | `valueAsBoolean` | +| `<NumberField>` | `valueAsNumber` | +| `<DateField>` | `valueAsDate` | +| `<DatetimeLocalField>` | `valueAsDate` | + +`valueAsDate` and `valueAsNumber` are built into React Hook Form and are based on the HTML standard. +But because Redwood uses GraphQL on the backend, it's important that the types submitted by the form be what the GraphQL server expects. +Instead of forcing users to make heavy-use of `setValueAs` for custom coercion, Redwood extends react hook form's `valueAs` properties with two more for convenience: + +- `valueAsBoolean` +- `valueAsJSON` + +### Default treatment of empty input values + +Redwood provides a flexible treatment of empty input field value. Appropriate treatment of empty fields can make working with fields for database relations easier. + +The treatment of empty field values is governed by the following: + + 1. If `setValueAs` is specified by the user, the specified function will determine the behavior of empty fields. + 2. If the `emptyAs` prop is set, then the `emptyAs` prop will determine the field value on an empty condition. See below for `emptyAs` prop values. + 3. If the `validation = { required: true }` prop is set, an empty field will return null. However, + the validation provided by react-hook-forms should engage and prevent submission of the form as an empty value + would not satisfy the `required` validation. + 4. If the field is an `Id` field, that is its name ends in "Id", then an empty field will return `null`. A `null` value is the most appropriate value for most database relation fields. + For scenarios where another value is required for empty cases, utilize the `emptyAs` prop. + 5. If none of the above cases apply, the field value will be set as follows for empty field scenarios: + - DateFields → null + - NumberFields → NaN + - TextFields with valueAsNumber set → NaN + - SelectFields with valueAsNumber set → NaN + - SelectFields without valueAsNumber set → '' (empty string) + - TextFields with valueAsJSON set → null + - TextFields and comparable → '' (empty string) + +### emptyAs prop + +The `emptyAs` prop allows the user to override the default value for an input field if the field is empty. Provided that a `setValueAs` prop is not specified, Redwood will allow you to override the default empty value returned. +The possible values for `emptyAs` are: +- `null` +- `'undefined'` +- `0` +- `''` (empty string) + +For example: +``` +<NumberField name="quantity" emptyAs="undefined" /> +<NumberField name="score" emptyAs={null} /> +``` +will return `undefined` if the field is empty. + +### Custom Input Fields + +You can create a custom field that integrates with Redwood through the use of Redwood's `useRegister` and `useErrorStyles` hooks. Each of these serving a different purpose depending on what you are trying to build. + +`useRegister` registers the field with react-hook-form and is a wrapper for [`register`](https://react-hook-form.com/api/useform/register). + +`useErrorStyles` sets up error styling for your custom input field. + +Using these two together you can create custom input fields that replicate a Redwood input field while also allowing for custom domain logic. + +In the following example we have an all-in-one custom required input field with label, input, and error display. + +```jsx +import { FieldError, useErrorStyles, useRegister } from '@redwoodjs/forms' + +const RequiredField = ({ label, name, validation }) => { + const register = useRegister({ + name, + validation: {...validation, required: true} + }) + + const { className: labelClassName, style: labelStyle } = useErrorStyles({ + className: `my-label-class`, + errorClassName: `my-label-error-class`, + name, + }) + + const { className: inputClassName, style: inputStyle } = useErrorStyles({ + className: `my-input-class`, + errorClassName: `my-input-error-class`, + name, + }) + + return ( + <> + <label className={labelClassName} style={labelStyle}>{label}</label> + <input + className={inputClassName} + style={inputStyle} + type="text" + {...register} + /> + <FieldError name={name}> + </> + ) +} +``` + +### Controlled Component Fields + +If you're working with a fully-featured component library, or have your own production-ready components, you may want to integrate them with Redwood's forms seamlessly. +You can via Redwood forms' `useErrorStyles` hook and React Hook Form's `Controller` component. +The following example shows how you could go about integrating a component from [`primereact`](https://www.primefaces.org/primereact/) for use in in Redwood's forms like any of the named-input fields listed above: + +```tsx title="web/src/components/ToggleButtonField/ToggleButtonField.tsx" +import { ToggleButton } from 'primereact/togglebutton' +import type { ToggleButtonProps } from 'primereact/togglebutton' + +import { Controller, RegisterOptions, useErrorStyles } from '@redwoodjs/forms' + +interface Props extends ToggleButtonProps { + validation?: RegisterOptions + errorClassName?: string +} + +const ToggleButtonField = (props: Props) => { + const { + name, + className, + errorClassName, + defaultValue, + validation, + style, + ...propsRest + } = props + + const { className: componentClassName, style: componentStyle } = + useErrorStyles({ + className: className, + errorClassName: errorClassName, + name: name, + }) + + return ( + <Controller + name={name} + defaultValue={defaultValue} + rules={validation} + render={({ field: { onChange, onBlur, value, name, ref } }) => ( + <ToggleButton + {...propsRest} + checked={value} + onChange={onChange} + onBlur={onBlur} + ref={ref} + name={name} + className={componentClassName} + style={{ ...componentStyle, ...style }} + /> + )} + /> + ) +} + +export default ToggleButtonField +``` + +## `<SelectField>` + +Renders an HTML `<select>` tag. +It's possible to select multiple values using the `multiple` prop. +When `multiple` is `true`, this field returns an array of values in the same order as the list of options, not in the order they were selected. + +```jsx +<SelectField name="toppings" multiple={true}> + <option>'lettuce'</option> + <option>'tomato'</option> + <option>'pickle'</option> + <option>'cheese'</option> +</SelectField> + +// If the user chooses lettuce, tomato, and cheese, +// the onSubmit handler receives: +// +// { toppings: ["lettuce", "tomato", "cheese"] } +// +``` + +### Validation + +In these two examples, one with multiple-field selection, validation requires that a field be selected and that the user doesn't select the first value in the dropdown menu: + +```jsx +<SelectField + name="selectSingle" + validation={{ + required: true, + validate: { + matchesInitialValue: (value) => { + return ( + value !== 'Please select an option' || + 'Select an Option' + ) + }, + }, + }} +> + <option>Please select an option</option> + <option>Option 1</option> + <option>Option 2</option> +</SelectField> +<FieldError name="selectSingle" style={{ color: 'red' }} /> +``` + +```jsx {2} +<SelectField + multiple={true} + name="selectMultiple" + validation={{ + required: true, + validate: { + matchesInitialValue: (value) => { + let returnValue = [true] + returnValue = value.map((element) => { + if (element === 'Please select an option') + return 'Select an Option' + }) + return returnValue[0] + }, + }, + }} +> + <option>Please select an option</option> + <option>Option 1</option> + <option>Option 2</option> +</SelectField> +<FieldError name="selectMultiple" style={{ color: 'red' }} /> +``` + +### Coercion + +Typically, a `<SelectField>` returns a string, but you can use one of the `valueAs` properties to return another type. +An example use-case is when `<SelectField>` is being used to select a numeric identifier. +Without the `valueAsNumber` property, `<SelectField>` returns a string. +But, as per the example below, the `valueAsNumber` can be used to return an `Int`: + +```jsx +<SelectField name="select" validation={{ valueAsNumber: true }}> + <option value={1}>Option 1</option> + <option value={2}>Option 2</option> + <option value={3}>Option 3</option> +</SelectField> +``` + +If `Option 3` is selected, the `<Form>`'s `onSubmit` function is passed data as follows: + +```jsx +{ + select: 3, +} +``` + +## `<FieldError>` + +Renders a `<span>` containing a validation error message if the field with the same `name` attribute has a validation error. Otherwise renders nothing. + +```html +<FieldError name="name" className="error-message"> + +<!-- Renders: <span class="error-message">name is required</span> --> +``` diff --git a/docs/versioned_docs/version-7.0/graphql.md b/docs/versioned_docs/version-7.0/graphql.md new file mode 100644 index 000000000000..35d5c3fb2382 --- /dev/null +++ b/docs/versioned_docs/version-7.0/graphql.md @@ -0,0 +1,2513 @@ +--- +description: GraphQL is a fundamental part of Redwood +--- + +# GraphQL + +GraphQL is a fundamental part of Redwood. Having said that, you can get going without knowing anything about it, and can actually get quite far without ever having to read [the docs](https://graphql.org/learn/). But to master Redwood, you'll need to have more than just a vague notion of what GraphQL is. You'll have to really grok it. + + +## GraphQL 101 + +GraphQL is a query language that enhances the exchange of data between clients (in Redwood's case, a React app) and servers (a Redwood API). + +Unlike a REST API, a GraphQL Client performs operations that allow gathering a rich dataset in a single request. +There's three types of GraphQL operations, but here we'll only focus on two: Queries (to read data) and Mutations (to create, update, or delete data). + +The following GraphQL query: + +```graphql +query GetProject { + project(name: "GraphQL") { + id + title + description + owner { + id + username + } + tags { + id + name + } + } +} +``` + +returns the following JSON response: + +```json +{ + "data": { + "project": { + "id": 1, + "title": "My Project", + "description": "Lorem ipsum...", + "owner": { + "id": 11, + "username": "Redwood", + }, + "tags": [ + { "id": 22, "name": "graphql" } + ] + } + }, + "errors": null +} +``` + +Notice that the response's structure mirrors the query's. In this way, GraphQL makes fetching data descriptive and predictable. + +Again, unlike a REST API, a GraphQL API is built on a schema that specifies exactly which queries and mutations can be performed. +For the `GetProject` query above, here's the schema backing it: + +```graphql +type Project { + id: ID! + title: String + description: String + owner: User! + tags: [Tag] +} + +# ... User and Tag type definitions + +type Query { + project(name: String!): Project +} +``` + +:::info + +More information on GraphQL types can be found in the [official GraphQL documentation](https://graphql.org/learn/schema/). + +::: + +Finally, the GraphQL schema is associated with a resolvers map that helps resolve each requested field. For example, here's what the resolver for the owner field on the Project type may look like: + +```ts +export const Project = { + owner: (args, { root, context, info }) => { + return db.project.findUnique({ where: { id: root.id } }).user() + }, + // ... +} +``` + +:::info + +You can read more about resolvers in the dedicated [Understanding Default Resolvers](#understanding-default-resolvers) section below. + +::: + +To summarize, when a GraphQL query reaches a GraphQL API, here's what happens: + +``` ++--------------------+ +--------------------+ +| | 1.send operation | | +| | | GraphQL Server | +| GraphQL Client +----------------->| | | +| | | | 2.resolve | +| | | | data | ++--------------------+ | v | + ^ | +----------------+ | + | | | | | + | | | Resolvers | | + | | | | | + | | +--------+-------+ | + | 3. respond JSON with data | | | + +-----------------------------+ <--------+ | + | | + +--------------------+ +``` + +In contrast to most GraphQL implementations, Redwood provides a "deconstructed" way of creating a GraphQL API: + +- You define your SDLs (schema) in `*.sdl.js` files, which define what queries and mutations are available, and what fields can be returned +- For each query or mutation, you write a service function with the same name. This is the resolver +- Redwood then takes all your SDLs and Services (resolvers), combines them into a GraphQL server, and expose it as an endpoint + +## RedwoodJS and GraphQL + +Besides taking care of the annoying stuff for you (namely, mapping your resolvers, which gets annoying fast if you do it yourself!), there's not many gotchas with GraphQL in Redwood. +The only Redwood-specific thing you should really be aware of is [resolver args](#redwoods-resolver-args). + +Since there's two parts to GraphQL in Redwood, the client and the server, we've divided this doc up that way. + +On the `web` side, Redwood uses [Apollo Client](https://www.apollographql.com/docs/react/) by default though you can swap it out for something else if you want. + + +The `api` side offers a GraphQL server built on [GraphQL Yoga](https://www.graphql-yoga.com) and the [Envelop plugin system](https://www.envelop.dev/docs) from [The Guild](https://the-guild.dev). +### + +Redwood's api side is "serverless first", meaning it's architected as functions which can be deployed on either serverless or traditional infrastructure, and Redwood's GraphQL endpoint is effectively "just another function" (with a whole lot more going on under the hood, but that part is handled for you, out of the box). +One of the tenets of the Redwood philosophy is "Redwood believes that, as much as possible, you should be able to operate in a serverless mindset and deploy to a generic computational grid.” + +### GraphQL Yoga and the Generic Computation Grid + +To be able to deploy to a “generic computation grid” means that, as a developer, you should be able to deploy using the provider or technology of your choosing. You should be able to deploy to Netlify, Vercel, Fly, Render, AWS Serverless, or elsewhere with ease and no vendor or platform lock in. You should be in control of the framework, what the response looks like, and how your clients consume it. + +The same should be true of your GraphQL Server. [GraphQL Yoga](https://www.graphql-yoga.com) from [The Guild](https://the-guild.dev) makes that possible. + +> The fully-featured GraphQL Server with focus on easy setup, performance and great developer experience. + +RedwoodJS leverages Yoga's Envelop plugins to implement custom internal plugins to help with [authentication](#authentication), [logging](#logging), [directive handling](#directives), and more. + +### Security Best Practices + + +RedwoodJS implements GraphQL Armor from [Escape Technologies](https://escape.tech) to make your endpoint more secure by default by implementing common GraphQL [security best practices](#security). + +GraphQL Armor, developed by Escape in partnership with The Guild, is a middleware for JS servers that adds a security layer to the RedwoodJS GraphQL endpoint. + +### Trusted Documents + +In addition, RedwoodJS can be setup to enforce [persisted operations](https://the-guild.dev/graphql/yoga-server/docs/features/persisted-operations) -- alternatively called [Trusted Documents](https://benjie.dev/graphql/trusted-documents). + +See [Configure Trusted Documents](graphql/trusted-documents#configure-trusted-documents) for more information and usage instructions. + + +### Conclusion + +All this gets us closer to Redwood's goal of being able to deploy to a "generic computation grid". And that’s exciting! + +## Client-side + +### RedwoodApolloProvider + +By default, Redwood Apps come ready-to-query with the `RedwoodApolloProvider`. As you can tell from the name, this Provider wraps [ApolloProvider](https://www.apollographql.com/docs/react/api/react/hooks/#the-apolloprovider-component). Omitting a few things, this is what you'll normally see in Redwood Apps: + +```jsx title="web/src/App.js" +import { RedwoodApolloProvider } from '@redwoodjs/web/apollo' + +// ... + +const App = () => ( + <RedwoodApolloProvider> + <Routes /> + </RedwoodApolloProvider> +) + +// ... +``` + +You can use Apollo's `useQuery` and `useMutation` hooks by importing them from `@redwoodjs/web`, though if you're using `useQuery`, we recommend that you use a [Cell](cells.md): + +```jsx title="web/src/components/MutateButton.js" +import { useMutation } from '@redwoodjs/web' + +const MUTATION = gql` + # your mutation... +` + +const MutateButton = () => { + const [mutate] = useMutation(MUTATION) + + return ( + <button onClick={() => mutate({ ... })}> + Click to mutate + </button> + ) +} +``` + +Note that you're free to use any of Apollo's other hooks, you'll just have to import them from `@apollo/client` instead. In particular, these two hooks might come in handy: + +| Hook | Description | +| :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------- | +| [useLazyQuery](https://www.apollographql.com/docs/react/api/react/hooks/#uselazyquery) | Execute queries in response to events other than component rendering | +| [useApolloClient](https://www.apollographql.com/docs/react/api/react/hooks/#useapolloclient) | Access your instance of `ApolloClient` | + +### Customizing the Apollo Client and Cache + +By default, `RedwoodApolloProvider` configures an `ApolloClient` instance with 1) a default instance of `InMemoryCache` to cache responses from the GraphQL API and 2) an `authMiddleware` to sign API requests for use with [Redwood's built-in auth](authentication.md). Beyond the `cache` and `link` params, which are used to set up that functionality, you can specify additional params to be passed to `ApolloClient` using the `graphQLClientConfig` prop. The full list of available configuration options for the client are [documented here on Apollo's site](https://www.apollographql.com/docs/react/api/core/ApolloClient/#options). + +Depending on your use case, you may want to configure `InMemoryCache`. For example, you may need to specify a type policy to change the key by which a model is cached or to enable pagination on a query. [This article from Apollo](https://www.apollographql.com/docs/react/caching/cache-configuration/) explains in further detail why and how you might want to do this. + +To configure the cache when it's created, use the `cacheConfig` property on `graphQLClientConfig`. Any value you pass is passed directly to `InMemoryCache` when it's created. + +For example, if you have a query named `search` that supports [Apollo's offset pagination](https://www.apollographql.com/docs/react/pagination/core-api/), you could enable it by specifying: + +```jsx +<RedwoodApolloProvider graphQLClientConfig={{ + cacheConfig: { + typePolicies: { + Query: { + fields: { + search: { + // Uses the offsetLimitPagination preset from "@apollo/client/utilities"; + ...offsetLimitPagination() + } + } + } + } + } +}}> +``` + + + +### Swapping out the RedwoodApolloProvider + +As long as you're willing to do a bit of configuring yourself, you can swap out `RedwoodApolloProvider` with your GraphQL Client of choice. You'll just have to get to know a bit of the make up of the [RedwoodApolloProvider](https://github.com/redwoodjs/redwood/blob/main/packages/web/src/apollo/index.tsx#L71-L84); it's actually composed of a few more Providers and hooks: + +- `FetchConfigProvider` +- `useFetchConfig` +- `GraphQLHooksProvider` + +For an example of configuring your own GraphQL Client, see the [redwoodjs-react-query-provider](https://www.npmjs.com/package/redwoodjs-react-query-provider). If you were thinking about using [react-query](https://react-query.tanstack.com/), you can also just go ahead and install it! + +Note that if you don't import `RedwoodApolloProvider`, it won't be included in your bundle, dropping your bundle size quite a lot! + +## Server-side + +### Understanding Default Resolvers + +According to the spec, for every field in your sdl, there has to be a resolver in your Services. But you'll usually see fewer resolvers in your Services than you technically should. And that's because if you don't define a resolver, GraphQL Yoga server will. + +The key question the Yoga server asks is: "Does the parent argument (in Redwood apps, the `parent` argument is named `root`—see [Redwood's Resolver Args](#redwoods-resolver-args)) have a property with this resolver's exact name?" Most of the time, especially with Prisma Client's ergonomic returns, the answer is yes. + +Let's walk through an example. Say our sdl looks like this: + +```jsx title="api/src/graphql/user.sdl.js" +export const schema = gql` + type User { + id: Int! + email: String! + name: String + } + + type Query { + users: [User!]! + } +` +``` + +So we have a User model in our `schema.prisma` that looks like this: + +```jsx +model User { + id Int @id @default(autoincrement()) + email String @unique + name String? +} +``` + +If you create your Services for this model using Redwood's generator (`yarn rw g service user`), your Services will look like this: + +```jsx title="api/src/services/user/user.js" +import { db } from 'src/lib/db' + +export const users = () => { + return db.user.findMany() +} +``` + +Which begs the question: where are the resolvers for the User fields—`id`, `email`, and `name`? +All we have is the resolver for the Query field, `users`. + +As we just mentioned, GraphQL Yoga defines them for you. And since the `root` argument for `id`, `email`, and `name` has a property with each resolvers' exact name (i.e. `root.id`, `root.email`, `root.name`), it'll return the property's value (instead of returning `undefined`, which is what Yoga would do if that weren't the case). + +But, if you wanted to be explicit about it, this is what it would look like: + +```jsx title="api/src/services/user/user.js" +import { db } from 'src/lib/db' + +export const users = () => { + return db.user.findMany() +} + +export const Users = { + id: (_args, { root }) => root.id, + email: (_args, { root }) => root.email, + name: (_args, { root }) => root.name, +} +``` + +The terminological way of saying this is, to create a resolver for a field on a type, in the Service, export an object with the same name as the type that has a property with the same name as the field. + +Sometimes you want to do this since you can do things like add completely custom fields this way: + +```jsx {5} +export const Users = { + id: (_args, { root }) => root.id, + email: (_args, { root }) => root.email, + name: (_args, { root }) => root.name, + age: (_args, { root }) => new Date().getFullYear() - root.birthDate.getFullYear() +} +``` + +<!-- Source: https://community.redwoodjs.com/t/how-to-create-field-resolver/195/7 --> + +### Redwood's Resolver Args + +[According to the spec](https://graphql.org/learn/execution/#root-fields-resolvers), resolvers take four arguments: `args`, `obj`, `context`, and `info`. In Redwood, resolvers do take these four arguments, but what they're named and how they're passed to resolvers is slightly different: + +- `args` is passed as the first argument +- `obj` is named `root` (all the rest keep their names) +- `root`, `context`, and `info` are wrapped into an object, `gqlArgs`; this object is passed as the second argument + +Here's an example to make things clear: + +```js +export const Post = { + user: (args, gqlArgs) => db.post.findUnique({ where: { id: gqlArgs?.root.id } }).user(), +} +``` + +Of the four, you'll see `args` and `root` being used a lot. + +| Argument | Description | +| :-------- | :------------------------------------------------------------------------------------------- | +| `args` | The arguments provided to the field in the GraphQL query | +| `root` | The previous return in the resolver chain | +| `context` | Holds important contextual information, like the currently logged in user | +| `info` | Holds field-specific information relevant to the current query as well as the schema details | + +> **There's so many terms!** +> +> Half the battle here is really just coming to terms. To keep your head from spinning, keep in mind that everybody tends to rename `obj` to something else: Redwood calls it `root`, GraphQL Yoga calls it `parent`. `obj` isn't exactly the most descriptive name in the world. + +### Context + +In Redwood, the `context` object that's passed to resolvers is actually available to all your Services, whether or not they're serving as resolvers. Just import it from `@redwoodjs/graphql-server`: + +```jsx +import { context } from '@redwoodjs/graphql-server' +``` + +#### How to Modify the Context + +Because the context is read-only in your services, if you need to modify it, then you need to do so in the `createGraphQLHandler`. + +To populate or enrich the context on a per-request basis with additional attributes, set the `context` attribute `createGraphQLHandler` to a custom ContextFunction that modifies the context. + +For example, if we want to populate a new, custom `ipAddress` attribute on the context with the information from the request's event, declare the `setIpAddress` ContextFunction as seen here: + +```jsx title="api/src/functions/graphql.js" +// ... + +const ipAddress = ({ event }) => { + return event?.headers?.['client-ip'] || event?.requestContext?.identity?.sourceIp || 'localhost' +} + +const setIpAddress = async ({ event, context }) => { + context.ipAddress = ipAddress({ event }) +} + +export const handler = createGraphQLHandler({ + getCurrentUser, + loggerConfig: { + logger, + options: { operationName: true, tracing: true }, + }, + schema: makeMergedSchema({ + schemas, + services, + }), + context: setIpAddress, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +> **Note:** If you use the preview GraphQL Yoga/Envelop `graphql-server` package and a custom ContextFunction to modify the context in the createGraphQL handler, the function is provided **_only the context_** and **_not the event_**. However, the `event` information is available as an attribute of the context as `context.event`. Therefore, in the above example, one would fetch the ip address from the event this way: `ipAddress({ event: context.event })`. + +### The Root Schema + +Did you know that you can query `redwood`? Try it in the GraphQL Playground (you can find the GraphQL Playground at http://localhost:8911/graphql when your dev server is running—`yarn rw dev api`): + +```graphql +query { + redwood { + version + currentUser + } +} +``` + +How is this possible? Via Redwood's [root schema](https://github.com/redwoodjs/redwood/blob/main/packages/graphql-server/src/rootSchema.ts). The root schema is where things like currentUser are defined: + +```graphql + scalar BigInt + scalar Date + scalar Time + scalar DateTime + scalar JSON + scalar JSONObject + + type Redwood { + version: String + currentUser: JSON + prismaVersion: String + } + + type Query { + redwood: Redwood + } +``` + +Now that you've seen the sdl, be sure to check out [the resolvers](https://github.com/redwoodjs/redwood/blob/main/packages/graphql-server/src/rootSchema.ts): + +```ts +export const resolvers: Resolvers = { + BigInt: BigIntResolver, + Date: DateResolver, + Time: TimeResolver, + DateTime: DateTimeResolver, + JSON: JSONResolver, + JSONObject: JSONObjectResolver, + Query: { + redwood: () => ({ + version: redwoodVersion, + prismaVersion: prismaVersion, + currentUser: (_args: any, context: GlobalContext) => { + return context?.currentUser + }, + }), + }, +} +``` + +<!-- ### The query workflow + +The GraphQL Playground's nice, but if you're a power user, you'll want to be using something a little more dedicated and always on; where you can save things like environments... + +<div class="relative pb-9/16"> + <iframe class="absolute inset-0 w-full h-full" src="https://www.youtube.com/watch?v=SU4g9_K0H1c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; modestbranding; showinfo=0; fullscreen"></iframe> +</div> + +- todo +- link to claire's video +- dt has some thoughts on this +- insomnia --> + +## CORS Configuration + +CORS stands for [Cross Origin Resource Sharing](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing); in a nutshell, by default, browsers aren't allowed to access resources outside their own domain. + +Let's say you're hosting each of your Redwood app's sides on different domains: the web side on `www.example.com` and the api side (and thus, the GraphQL Server) on `api.example.com`. +When the browser tries to fetch data from the `/graphql` function, you'll see an error that says the request was blocked due to CORS. Wording may vary, but it'll be similar to: + +> ⛔️ Access to fetch ... has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. + +To fix this, you need to "configure CORS" by adding: + +``` +'Access-Control-Allow-Origin': 'https://example.com' +'Access-Control-Allow-Credentials': true +``` + +to the GraphQL response headers which you can do this by setting the `cors` option in `api/src/functions/graphql.{js|t}s`: + +```tsx +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + cors: { + // 👈 setup your CORS configuration options + origin: '*', + credentials: true, + }, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +For more in-depth discussion and configuration of CORS when it comes to using a cookie-based auth system (like [dbAuth](authentication.md#self-hosted-auth-installation-and-setup)), see the [CORS documentation](cors.md). + +## Health Checks + +You can use health checks to determine if a server is available and ready to start serving traffic. +For example, services like [Pingdom](https://www.pingdom.com) use health checks to determine server uptime and will notify you if it becomes unavailable. + +Redwood's GraphQL server provides a health check endpoint at `/graphql/health` as part of its GraphQL handler. +If the server is healthy and can accept requests, the response will contain the following headers: + +``` +content-type: application/json +server: GraphQL Yoga +x-yoga-id: yoga +``` + +and will return a `HTTP/1.1 200 OK` status with the body: + +```json +{ + "message": "alive" +} +``` + +Note the `x-yoga-id` header. The header's value defaults to `yoga` when `healthCheckId` isn't set in `createGraphQLHandler`. But you can customize it when configuring your GraphQL handler: + +```ts title="api/src/functions/graphql.ts" +// ... + +export const handler = createGraphQLHandler({ + // This will be the value of the `x-yoga-id` header + // highlight-next-line + healthCheckId: 'my-redwood-graphql-server', + getCurrentUser, + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +If the health check fails, then the GraphQL server is unavailable and you should investigate what could be causing the downtime. + +#### Perform a Health Check + +To perform a health check, make a HTTP GET request to the `/graphql/health` endpoint. + +For local development, +with the proxy using `curl` from the command line: + +```bash +curl "http://localhost:8910/.redwood/functions/graphql/health" -i +``` + +or by directly invoking the graphql function: + +```bash +curl "http://localhost:8911/graphql/health" -i +``` + +you should get the response: + +```json +{ + "message": "alive" +} +``` + +For production, make a request wherever your `/graphql` function exists. + +> These examples use `curl` but you can perform a health check via any HTTP GET request. + +#### Perform a Readiness Check + +A readiness check confirms that your GraphQL server can accept requests and serve **your server's** traffic. + +It forwards a request to the health check with a header that must match your `healthCheckId` in order to succeed. +If the `healthCheckId` doesn't match or the request fails, then your GraphQL server isn't "ready". + +To perform a readiness check, make a HTTP GET request to the `/graphql/readiness` endpoint with the appropriate `healthCheckId` header. +For local development, you can make a request to the proxy: + +```bash +curl "http://localhost:8910/.redwood/functions/graphql/readiness" \ + -H 'x-yoga-id: yoga' \ + -i +``` + +or directly invoke the graphql function: + +```bash +curl "http://localhost:8911/graphql/readiness" \ + -H 'x-yoga-id: yoga' \ + -i +``` + +Either way, you should get a `200 OK` HTTP status if ready, or a `503 Service Unavailable` if not. + +For production, make a request wherever your `/graphql` function exists. + +> These examples use `curl` but you can perform a readiness check via any HTTP GET request with the proper headers. + +## Verifying GraphQL Schema + +In order to keep your GraphQL endpoint and services secure, you must specify one of `@requireAuth`, `@skipAuth` or a custom directive on **every** query and mutation defined in your SDL. + +Redwood will verify that your schema complies with these runs when: + +- building (or building just the api) +- launching the dev server. + +If any fail this check, you will see: + +- each query of mutation listed in the command's error log +- a fatal error `⚠️ GraphQL server crashed` if launching the server + +### Build-time Verification + +When building via the `yarn rw build` command and the SDL fails verification, you will see output that lists each query or mutation missing the directive: + +```bash + ✔ Generating Prisma Client... + ✖ Verifying graphql schema... + → - deletePost Mutation + Building API... + Cleaning Web... + Building Web... + Prerendering Web... + +You must specify one of @requireAuth, @skipAuth or a custom directive for +- contacts Query +- posts Query +- post Query +- createContact Mutation +- createPost Mutation +- updatePost Mutation +- deletePost Mutation +``` + +### Dev Server Verification + +When launching the dev server via the `yarn rw dev` command, you will see output that lists each query or mutation missing the directive: + +```bash + +gen | Generating TypeScript definitions and GraphQL schemas... +gen | 37 files generated +api | Building... Took 444 ms +api | Starting API Server... Took 2 ms +api | Listening on http://localhost:8911/ +api | Importing Server Functions... +web | ... +api | FATAL [2021-09-24 18:41:49.700 +0000]: +api | ⚠️ GraphQL server crashed +api | +api | Error: You must specify one of @requireAuth, @skipAuth or a custom directive for +api | - contacts Query +api | - posts Query +api | - post Query +api | - createContact Mutation +api | - createPost Mutation +api | - updatePost Mutation +api | - deletePost Mutation +``` + +To fix these errors, simple declare with `@requireAuth` to enforce authentication or `@skipAuth` to keep the operation public on each as appropriate for your app's permissions needs. + +## Custom Scalars + +GraphQL scalar types give data meaning and validate that their values makes sense. Out of the box, GraphQL comes with `Int`, `Float`, `String`, `Boolean` and `ID`. While those can cover a wide variety of use cases, you may need more specific scalar types to better describe and validate your application's data. + +For example, if there's a `Person` type in your schema that has a field like `ageInYears`, if it's actually supposed to represent a person's age, technically it should only be a positive integer—never a negative one. +Something like the [`PositiveInt` scalar](https://www.graphql-scalars.dev/docs/scalars/positive-int) provides that meaning and validation. + +### Scalars vs Service vs Directives + +How are custom scalars different from Service Validations or Validator Directives? + +[Service validations](services.md#service-validations) run when resolving the service. Because they run at the start of your Service function and throw if conditions aren't met, they're great for validating whenever you use a Service—anywhere, anytime. +For example, they'll validate via GraphQL, Serverless Functions, webhooks, etc. Custom scalars, however, only validate via GraphQL and not anywhere else. + +Service validations also perform more fine-grained checks than scalars which are more geared toward validating that data is of a specific **type**. + +[Validator Directives](#directives) control user **access** to data and also whether or not a user is authorized to perform certain queries and/or mutations. + +### How To Add a Custom Scalar + +Let's say that you have a `Product` type that has three fields: a name, a description, and the type of currency. +The built-in `String` scalar should suffice for the first two, but for the third, you'd be better off with a more-specific `String` scalar that only accepts [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency codes, like `USD`, `EUR`, `CAD`, etc. +Luckily there's already a [`Currency` scalar type](https://github.com/Urigo/graphql-scalars/blob/master/src/scalars/Currency.ts) that does exactly that! +All you have to do is add it to your GraphQL schema. + +To add a custom scalar to your GraphQL schema: + +1. Add the scalar definition to one of your sdl files, such as `api/src/graphql/scalars.sdl.ts` + +> Note that you may have to create this file. Moreover, it's just a convention—custom scalar type definitions can be in any of your sdl files. + +```jsx title="api/src/graphql/scalars.sdl.ts" +export const schema = gql` + scalar Currency +` +``` + +<br /> + +2. Import the scalar's definition and resolver and pass them to your GraphQLHandler via the `schemaOptions` property: + +```tsx {10-13} title="api/src/functions/graphql.ts" +import { CurrencyDefinition, CurrencyResolver } from 'graphql-scalars' + +// ... + +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + schemaOptions: { + typeDefs: [CurrencyDefinition], + resolvers: { Currency: CurrencyResolver }, + }, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +<br /> + +3. Use the scalar in your types + +```tsx {6,18,24} +export const schema = gql` + type Product { + id: Int! + name: String! + description: String! + currency_iso_4217: Currency! // validate on query + createdAt: DateTime! + } + + type Query { + products: [Product!]! @requireAuth + product(id: Int!): Product @requireAuth + } + + input CreateProductInput { + name: String! + description: String! + currency_iso_4217: Currency! // validate on mutation + } + + input UpdateProductInput { + name: String + description: String + currency_iso_4217: Currency // validate on mutation + } + + type Mutation { + createProduct(input: CreateProductInput!): Product! @requireAuth + updateProduct(id: Int!, input: UpdateProductInput!): Product! @requireAuth + deleteProduct(id: Int!): Product! @requireAuth + } +` +``` + +## Directives + +Directives supercharge your GraphQL services. They add configuration to fields, types or operations that act like "middleware" that lets you run reusable code during GraphQL execution to perform tasks like [authentication](#authentication), formatting, and more. + +You'll recognize a directive by its preceded by the `@` character, e.g. `@myDirective`, and by being declared alongside a field: + +```tsx +type Bar { + name: String! @myDirective +} +``` + +or a Query or Mutation: + +```tsx +type Query { + bars: [Bar!]! @myDirective +} + +type Mutation { + createBar(input: CreateBarInput!): Bar! @myDirective +} +``` + +See the [Directives](directives) section for complete information on RedwoodJS Directives. + +## Fragments + +See [fragments](graphql/fragments.md) + +## Unions + +Unions are abstract GraphQL types that enable a schema field to return one of multiple object types. + +`union FavoriteTree = Redwood | Ginkgo | Oak` + +A field can have a union as its return type. + +```tsx +type Query { + searchTrees: [FavoriteTree] // This list can include Redwood, Gingko or Oak objects +} +``` + +All of a union's included types must be object types and do not need to share any fields. + +To query a union, you can take advantage on [inline fragments](https://graphql.org/learn/queries/#inline-fragments) to include subfields of multiple possible types. + +```tsx +query GetFavoriteTrees { + __typename // typename is helpful when querying a field that returns one of multiple types + searchTrees { + ... on Redwood { + name + height + } + ... on Ginkgo { + name + medicalUse + } + ... on Oak { + name + acornType + } + } +} +``` + +Redwood will automatically detect your union types in your `sdl` files and resolve *which* of your union's types is being returned. If the returned object does not match any of the valid types, the associated operation will produce a GraphQL error. + +:::note + +In order to use Union types web-side with your Apollo GraphQL client, you will need to [generate possible types from fragments and union types](#generate-possible-types). + +::: + +### useCache + +Apollo Client stores the results of your GraphQL queries in a local, normalized, in-memory cache. This enables the client to respond almost immediately to queries for already-cached data, without even sending a network request. + +useCache is a custom hook that returns the cache object and some useful methods to interact with the cache: + +* [evict](#evict) +* [extract](#extract) +* [identify](#identify) +* [modify](#modify) +* [resetStore](#resetStore) +* [clearStore](#clearStore) + +```ts +import { useCache } from '@redwoodjs/web/apollo' +``` + +#### cache + +Returns the normalized, in-memory cache. + +```ts +import { useCache } from '@redwoodjs/web/apollo' + +const { cache } = useCache() +``` + +#### evict + +Either removes a normalized object from the cache or removes a specific field from a normalized object in the cache. + +```ts +import { useCache } from '@redwoodjs/web/apollo' + + +const Fruit = ({ id }: { id: FragmentIdentifier }) => { + const { evict } = useCache() + const { data: fruit, complete } = useRegisteredFragment<Fruit>(id) + + evict(fruit) +} +``` + +#### extract + +Returns a serialized representation of the cache's current contents + +```ts +import { useCache } from '@redwoodjs/web/apollo' + +const Fruit = ({ id }: { id: FragmentIdentifier }) => { + const { extract } = useCache() + + // Logs the cache's current contents + console.log(extract()) + +``` + +#### identify + +```ts +import { useCache } from '@redwoodjs/web/apollo' + +const Fruit = ({ id }: { id: FragmentIdentifier }) => { + const { identify } = useCache() + const { data: fruit, complete } = useRegisteredFragment<Fruit>(id) + + // Returns "Fruit:ownpc6co8a1w5bhfmavecko9" + console.log(identify(fruit)) +} +``` + +#### modify + +Modifies one or more field values of a cached object. Must provide a modifier function for each field to modify. A modifier function takes a cached field's current value and returns the value that should replace it. + +Returns true if the cache was modified successfully and false otherwise. + +```ts +import { useCache } from '@redwoodjs/web/apollo' + +const Fruit = ({ id }: { id: FragmentIdentifier }) => { + const { modify } = useCache() + const { data: fruit, complete } = useRegisteredFragment<Fruit>(id) + + // Modify the name of a given fruit entity to be uppercase + + <button onClick={() => modify(fruit, { + name(cachedName) { + return cachedName.toUpperCase() + }})}> + Uppercase {fruit.name} + </button> + + // ... +} +``` + +#### clearStore + +To reset the cache without refetching active queries, use the clearStore method. + + +```ts +import { useCache } from '@redwoodjs/web/apollo' + +const Fruit = ({ id }: { id: FragmentIdentifier }) => { + const { clearStore } = useCache() + + clearStore() +} +``` + +#### resetStore + +Reset the cache entirely, such as when a user logs out. + +```ts +import { useCache } from '@redwoodjs/web/apollo' + +const Fruit = ({ id }: { id: FragmentIdentifier }) => { + const { resetStore } = useCache() + + resetStore() +} +``` + +## GraphQL Handler Setup + +Redwood's `GraphQLHandlerOptions` allows you to configure your GraphQL handler schema, context, authentication, security and more. + +```ts +export interface GraphQLHandlerOptions { + /** + * @description The identifier used in the GraphQL health check response. + * It verifies readiness when sent as a header in the readiness check request. + * + * By default, the identifier is `yoga` as seen in the HTTP response header `x-yoga-id: yoga` + */ + healthCheckId?: string + + /** + * @description Customize GraphQL Logger + * + * Collect resolver timings, and exposes trace data for + * an individual request under extensions as part of the GraphQL response. + */ + loggerConfig: LoggerConfig + + /** + * @description Modify the resolver and global context. + */ + context?: Context | ContextFunction + + /** + * @description An async function that maps the auth token retrieved from the + * request headers to an object. + * Is it executed when the `auth-provider` contains one of the supported + * providers. + */ + getCurrentUser?: GetCurrentUser + + /** + * @description A callback when an unhandled exception occurs. Use this to disconnect your prisma instance. + */ + onException?: () => void + + /** + * @description Services passed from the glob import: + * import services from 'src/services\/**\/*.{js,ts}' + */ + services: ServicesGlobImports + + /** + * @description SDLs (schema definitions) passed from the glob import: + * import sdls from 'src/graphql\/**\/*.{js,ts}' + */ + sdls: SdlGlobImports + + /** + * @description Directives passed from the glob import: + * import directives from 'src/directives/**\/*.{js,ts}' + */ + directives?: DirectiveGlobImports + + /** + * @description A list of options passed to [makeExecutableSchema] + * (https://www.graphql-tools.com/docs/generate-schema/#makeexecutableschemaoptions). + */ + schemaOptions?: Partial<IExecutableSchemaDefinition> + + /** + * @description CORS configuration + */ + cors?: CorsConfig + + /** + * @description Customize GraphQL Armor plugin configuration + * + * @see https://escape-technologies.github.io/graphql-armor/docs/configuration/examples + */ + armorConfig?: ArmorConfig + + /** + * @description Customize the default error message used to mask errors. + * + * By default, the masked error message is "Something went wrong" + * + * @see https://github.com/dotansimha/envelop/blob/main/packages/core/docs/use-masked-errors.md + */ + defaultError?: string + + /** + * @description Only allows the specified operation types (e.g. subscription, query or mutation). + * + * By default, only allow query and mutation (ie, do not allow subscriptions). + * + * An array of GraphQL's OperationTypeNode enums: + * - OperationTypeNode.SUBSCRIPTION + * - OperationTypeNode.QUERY + * - OperationTypeNode.MUTATION + * + * @see https://github.com/dotansimha/envelop/tree/main/packages/plugins/filter-operation-type + */ + allowedOperations?: AllowedOperations + + /** + * @description Custom Envelop plugins + */ + extraPlugins?: Plugin[] + + /** + * @description Auth-provider specific token decoder + */ + authDecoder?: Decoder + + /** + * @description Customize the GraphiQL Endpoint that appears in the location bar of the GraphQL Playground + * + * Defaults to '/graphql' as this value must match the name of the `graphql` function on the api-side. + */ + graphiQLEndpoint?: string + /** + * @description Function that returns custom headers (as string) for GraphiQL. + * + * Headers must set auth-provider, Authorization and (if using dbAuth) the encrypted cookie. + */ + generateGraphiQLHeader?: GenerateGraphiQLHeader +} +``` + +### Directive Setup + +Redwood makes it easy to code, organize, and map your directives into the GraphQL schema. + +You simply add them to the `directives` directory and the `createGraphQLHandler` will do all the work. + +```tsx title="api/src/functions/graphql.ts" +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' // 👈 directives live here +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +import { db } from 'src/lib/db' +import { logger } from 'src/lib/logger' + +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + armorConfig, // 👈 custom GraphQL Security configuration + directives, // 👈 directives are added to the schema here + sdls, + services, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +> Note: Check-out the [in-depth look at Redwood Directives](directives) that explains how to generate directives so you may use them to validate access and transform the response. + + +### Logging Setup + +For a details on setting up GraphQL Logging, see [Logging](#logging). +### Security Setup + +For a details on setting up GraphQL Security, see [Security](#security). +## Logging + +Logging is essential in production apps to be alerted about critical errors and to be able to respond effectively to support issues. In staging and development environments, logging helps you debug queries, resolvers and cell requests. + +We want to make logging simple when using RedwoodJS and therefore have configured the api-side GraphQL handler to log common information about your queries and mutations. Log statements also be optionally enriched with [operation names](https://graphql.org/learn/queries/#operation-name), user agents, request ids, and performance timings to give you more visibility into your GraphQL api. + +By configuring the GraphQL handler to use your api side [RedwoodJS logger](logger), any errors and other log statements about the [GraphQL execution](https://graphql.org/learn/execution/) will be logged to the [destination](logger#destination-aka-where-to-log) you've set up: to standard output, file, or transport stream. + +You configure the logger using the `loggerConfig` that accepts a [`logger`](logger) and a set of [GraphQL Logger Options](#graphql-logger-options). + +### Configure the GraphQL Logger + +A typical GraphQLHandler `graphql.ts` is as follows: + +```jsx title="api/src/functions/graphql.ts" +// ... + +import { logger } from 'src/lib/logger' + +// ... +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + // ... +}) +``` + +#### Log Common Information + +The `loggerConfig` takes several options that logs meaningful information along the graphQL execution lifecycle. + +| Option | Description | +| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| data | Include response data sent to client. | +| operationName | Include operation name. The operation name is a meaningful and explicit name for your operation. It is only required in multi-operation documents, but its use is encouraged because it is very helpful for debugging and server-side logging. When something goes wrong (you see errors either in your network logs, or in the logs of your GraphQL server) it is easier to identify a query in your codebase by name instead of trying to decipher the contents. Think of this just like a function name in your favorite programming language. See https://graphql.org/learn/queries/#operation-name | +| requestId | Include the event's requestId, or if none, generate a uuid as an identifier. | +| query | Include the query. This is the query or mutation (with fields) made in the request. | +| tracing | Include the tracing and timing information. This will log various performance timings within the GraphQL event lifecycle (parsing, validating, executing, etc). | +| userAgent | Include the browser (or client's) user agent. This can be helpful to know what type of client made the request to resolve issues when encountering errors or unexpected behavior. | + +Therefore, if you wish to log the GraphQL `query` made, the `data` returned, and the `operationName` used, you would + +```jsx title="api/src/functions/graphql.ts" +export const handler = createGraphQLHandler({ + loggerConfig: { + logger, + options: { data: true, operationName: true, query: true }, + }, + // ... +}) +``` + +#### Exclude Operations + +You can exclude GraphQL operations by name with `excludeOperations`. +This is useful when you want to filter out certain operations from the log output, for example, `IntrospectionQuery` from GraphQL playground: + +```jsx {5} title="api/src/functions/graphql.ts" +export const handler = createGraphQLHandler({ + loggerConfig: { + logger, + options: { excludeOperations: ['IntrospectionQuery'] }, + }, + directives, + sdls, + services, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +> **Relevant anatomy of an operation** +> +> In the example below, `"FilteredQuery"` is the operation's name. +> That's what you'd pass to `excludeOperations` if you wanted it filtered out. +> +> ```js +> export const filteredQuery = ` +> query FilteredQuery { +> me { +> id +> name +> } +> } +> ``` + +### Benefits of Logging + +Benefits of logging common GraphQL request information include debugging, profiling, and resolving issue reports. + +#### Operation Name Identifies Cells + +The [operation name](https://graphql.org/learn/queries/#operation-name) is a meaningful and explicit name for your operation. It is only required in multi-operation documents, but its use is encouraged because it is very helpful for debugging and server-side logging. + +Because your cell typically has a unique operation name, logging this can help you identify which cell made a request. + +```jsx title="api/src/functions/graphql.ts" +// ... +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: { operationName: true } }, +// ... +``` + +#### RequestId for Support Issue Resolution + +Often times, your deployment provider will provide a request identifier to help reconcile and track down problems at an infrastructure level. For example, AWS API Gateway and AWS Lambda (used by Netlify, for example) provides `requestId` on the `event`. + +You can include the request identifier setting the `requestId` logger option to `true`. + +```jsx title="api/src/functions/graphql.ts" +// ... +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: { requestId: true } }, +// ... +``` + +And then, when working to resolve a support issue with your deployment provider, you can supply this request id to help them track down and investigate the problem more easily. + +#### No Need to Log within Services + +By configuring your GraphQL logger to include `data` and `query` information about each request you can keep your service implementation clean, concise and free of repeated logger statements in every resolver -- and still log the useful debugging information. + +```jsx title="api/src/functions/graphql.ts" +// ... +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: { data: true, operationName: true, query: true } }, +// ... + +// api/src/services/posts.js +//... +export const post = async ({ id }) => { + return await db.post.findUnique({ + where: { id }, + }) +} +//... +``` + +The GraphQL handler will then take care of logging your query and data -- as long as your logger is setup to log at the `info` [level](logger#log-level) and above. + +> You can also disable the statements in production by just logging at the `warn` [level](logger#log-level) or above + +This means that you can keep your services free of logger statements, but still see what's happening! + +```bash +api | POST /graphql 200 7.754 ms - 1772 +api | DEBUG [2021-09-29 16:04:09.313 +0000] (graphql-server): GraphQL execution started: BlogPostQuery +api | operationName: "BlogPostQuery" +api | query: { +api | "id": 3 +api | } +api | DEBUG [2021-09-29 16:04:09.321 +0000] (graphql-server): GraphQL execution completed: BlogPostQuery +api | data: { +api | "post": { +api | "id": 3, +api | "body": "Meh waistcoat succulents umami asymmetrical, hoodie post-ironic paleo chillwave tote bag. Trust fund kitsch waistcoat vape, cray offal gochujang food truck cloud bread enamel pin forage. Roof party chambray ugh occupy fam stumptown. Dreamcatcher tousled snackwave, typewriter lyft unicorn pabst portland blue bottle locavore squid PBR&B tattooed.", +api | "createdAt": "2021-09-24T16:51:06.198Z", +api | "__typename": "Post" +api | } +api | } +api | operationName: "BlogPostQuery" +api | query: { +api | "id": 3 +api | } +api | POST /graphql 200 9.386 ms - 441 +``` + +#### Send to Third-party Transports + +Stream to third-party log and application monitoring services vital to production logging in serverless environments like [logFlare](https://logflare.app/), [Datadog](https://www.datadoghq.com/) or [LogDNA](https://www.logdna.com/) + +#### Supports Log Redaction + +Everyone has heard of reports that Company X logged emails, or passwords to files or systems that may not have been secured. While RedwoodJS logging won't necessarily prevent that, it does provide you with the mechanism to ensure that won't happen. + +To redact sensitive information, you can supply paths to keys that hold sensitive data using the RedwoodJS logger [redact option](logger#redaction). + +Because this logger is used with the GraphQL handler, it will respect any redaction paths setup. + +For example, you have chosen to log `data` return by each request, then you may want to redact sensitive information, like email addresses from your logs. + +Here is an example of an application `/api/src/lib/logger.ts` configured to redact email addresses. Take note of the path `data.users[*].email` as this says, in the `data` attribute, redact the `email` from every `user`: + +```jsx title="/api/src/lib/logger.ts" +import { createLogger, redactionsList } from '@redwoodjs/api/logger' + +export const logger = createLogger({ + options: { + redact: [...redactionsList, 'email', 'data.users[*].email'], + }, +}) +``` + +#### Timing Traces and Metrics + +Often you want to measure and report how long your queries take to execute and respond. You may already be measuring these durations at the database level, but you can also measure the time it takes for your the GraphQL server to parse, validate, and execute the request. + +You may turn on logging these metrics via the `tracing` GraphQL configuration option. + +```jsx title="api/src/functions/graphql.ts" +// ... +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: { tracing: true } }, +// ... +``` + +Let's say we wanted to get some benchmark numbers for the "find post by id" resolver + +```jsx +return await db.post.findUnique({ + where: { id }, +}) +``` + +We see that this request took about 500 msecs (note: duration is reported in nanoseconds). + +For more details about the information logged and its format, see [Apollo Tracing](https://github.com/apollographql/apollo-tracing). + +```bash +pi | INFO [2021-07-09 14:25:52.452 +0000] (graphql-server): GraphQL willSendResponse +api | tracing: { +api | "version": 1, +api | "startTime": "2021-07-09T14:25:51.931Z", +api | "endTime": "2021-07-09T14:25:52.452Z", +api | "duration": 521131526, +api | "execution": { +api | "resolvers": [ +api | { +api | "path": [ +api | "post" +api | ], +api | "parentType": "Query", +api | "fieldName": "post", +api | "returnType": "Post!", +api | "startOffset": 1787428, +api | "duration": 519121497 +api | }, +api | { +api | "path": [ +api | "post", +api | "id" +api | ], +api | "parentType": "Post", +api | "fieldName": "id", +api | "returnType": "Int!", +api | "startOffset": 520982888, +api | "duration": 25140 +api | }, +... more paths follow ... +api | ] +api | } +api | } +``` + +By logging the operation name and extracting the duration for each query, you can easily collect and benchmark query performance. + +## Security + +Parsing a GraphQL operation document is a very expensive and compute intensive operation that blocks the JavaScript event loop. If an attacker sends a very complex operation document with slight variations over and over again he can easily degrade the performance of the GraphQL server. + +RedwoodJS will by default reject a variety malicious operation documents; that is, it'll prevent attackers from making malicious queries or mutations. + +RedwoodJS is configured out-of-the-box with GraphQL security best practices: + +* Schema Directive-based Authentication including RBAC validation +* Production Deploys disable Introspection and GraphQL Playground automatically +* Reject Malicious Operation Documents (Max Aliases, Max Cost, Max Depth, Max Directives, Max Tokens) +* Prevent Information Leaks (Block Field Suggestions, Mask Errors) + +And with the Yoga Envelop Plugin ecosystem available to you, there are options for: + +* CSRF Protection +* Rate Limiting +* and more. + +### Authentication + +By default, your GraphQL endpoint is open to the world. + +That means anyone can request any query and invoke any Mutation. +Whatever types and fields are defined in your SDL is data that anyone can access. + +Redwood [encourages being secure by default](directives) by defaulting all queries and mutations to have the `@requireAuth` directive when generating SDL or a service. + +When your app builds and your server starts up, Redwood checks that **all** queries and mutations have `@requireAuth`, `@skipAuth` or a custom directive applied. + +If not, then your build will fail: + +```bash + ✖ Verifying graphql schema... + Building API... + Cleaning Web... + Building Web... + Prerendering Web... +You must specify one of @requireAuth, @skipAuth or a custom directive for +- contacts Query +- posts Query +- post Query +- updatePost Mutation +- deletePost Mutation +``` + +or your server won't startup and you should see that "Schema validation failed": + +```bash +gen | Generating TypeScript definitions and GraphQL schemas... +gen | 47 files generated +api | Building... Took 593 ms +api | [GQL Server Error] - Schema validation failed +api | ---------------------------------------- +api | You must specify one of @requireAuth, @skipAuth or a custom directive for +api | - posts Query +api | - createPost Mutation +api | - updatePost Mutation +api | - deletePost Mutation +``` + +To correct, just add the appropriate directive to your queries and mutations. + +If not, then your build will fail and your server won't startup. + +#### @requireAuth + +To enforce authentication, simply add the `@requireAuth` directive in your GraphQL schema for any query or field you want protected. + +It's your responsibility to implement the `requireAuth()` function in your app's `api/src/lib/auth.{js|ts}` to check if the user is properly authenticated and/or has the expected role membership. + +The `@requireAuth` directive will call the `requireAuth()` function to determine if the user is authenticated or not. + +Here we enforce that a user must be logged in to `create`. `update` or `delete` a `Post`. + +```ts +type Post { + id: Int! + title: String! + body: String! + authorId: Int! + author: User! + createdAt: DateTime! +} + +input CreatePostInput { + title: String! + body: String! + authorId: Int! +} + +input UpdatePostInput { + title: String + body: String + authorId: Int +} + +type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth +} +``` + +It's your responsibility to implement the `requireAuth()` function in your app's `api/src/lib/auth.{js|ts}` to check if the user is properly authenticated and/or has the expected role membership. + +The `@requireAuth` directive will call the requireAuth() function to determine if the user is authenticated or not. + +```ts title="api/src/lib/auth.ts" +// ... + +export const isAuthenticated = (): boolean => { + return true // 👈 replace with the appropriate check +} + +// ... + +export const requireAuth = ({ roles }: { roles: AllowedRoles }) => { + if (isAuthenticated()) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (!hasRole({ roles })) { + throw new ForbiddenError("You don't have access to do that.") + } +} +``` + +> **Note**: The `auth.ts` file here is the stub for a new RedwoodJS app. Once you have setup auth with your provider, this will enforce a proper authentication check. + +##### Field-level Auth + +You can apply the `@requireAuth` to any field as well (not just queries or mutations): + +```ts +type Post { + id: Int! + title: String! + body: String! @requireAuth + authorId: Int! + author: User! + createdAt: DateTime! +} +``` + +##### Role-based Access Control + +The `@requireAuth` directive lets you define roles that are permitted to perform the operation: + +```ts +type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth(roles: ['AUTHOR', 'EDITOR']) + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth(roles: ['EDITOR'] + deletePost(id: Int!): Post! @requireAuth(roles: ['ADMIN'] +} +``` + +#### @skipAuth + +If, however, you want your query or mutation to be public, then simply use `@skipAuth`. + +In the example, fetching all posts or a single post is allowed for all users, authenticated or not. + +```ts +type Post { + id: Int! + title: String! + body: String! + authorId: Int! + author: User! + createdAt: DateTime! +} + +type Query { + posts: [Post!]! @skipAuth + post(id: Int!): Post @skipAuth +} +``` + +### Introspection and Playground Disabled in Production + +Because it is often useful to ask a GraphQL schema for information about what queries it supports, GraphQL allows us to do so using the [introspection](https://graphql.org/learn/introspection/) system. + +The [GraphQL Playground](https://www.graphql-yoga.com/docs/features/graphiql) is a way for you to interact with your schema and try out queries and mutations. It can show you the schema by inspecting it. You can find the GraphQL Playground at [http://localhost:8911/graphql](http://localhost:8911/graphql) when your dev server is running. + +> Because both introspection and the playground share possibly sensitive information about your data model, your data, your queries and mutations, best practices for deploying a GraphQL Server call to disable these in production, RedwoodJS **, by default, only enables introspection and the playground when running in development**. That is when `process.env.NODE_ENV === 'development'`. + +However, there may be cases where you want to enable introspection as well as the GraphQL PLaygrouns. You can enable introspection by setting the `allowIntrospection` option to `true` and enable GraphiQL by setting `allowGraphiQL` to `true`. + +Here is an example of `createGraphQLHandler` function with the `allowIntrospection` and `allowGraphiQL` options set to `true`: +```ts {8} +export const handler = createGraphQLHandler({ + authDecoder, + getCurrentUser, + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + allowIntrospection: true, // 👈 enable introspection in all environments + allowGraphiQL: true, // 👈 enable GraphiQL Playground in all environments + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +:::warning + +Enabling introspection in production may pose a security risk, as it allows users to access information about your schema, queries, and mutations. Use this option with caution and make sure to secure your GraphQL API properly. + +The may be cases where one wants to allow introspection, but not GraphiQL. + +Or, you may want to enable GraphiQL, but not allow introspection; for example, to try out known queries, but not to share the entire set of possible operations and types. + +::: + + +### GraphQL Armor Configuration + +[GraphQL Armor](https://escape.tech/graphql-armor/) is a middleware that adds a security layer the RedwoodJS GraphQL endpoint configured with sensible defaults. + +You don't have to configure anything to enforce protection against alias, cost, depth, directive, tokens abuse in GraphQL operations as well as to block field suggestions or revealing error messages that might leak sensitive information. + +But, if you need to enable, disable to modify the default settings, GraphQL Armor is fully configurable in a per-plugin fashion. + +Simply define and provide a custom GraphQL Security configuration to your `createGraphQLHandler`: + +```ts +export const handler = createGraphQLHandler({ + authDecoder, + getCurrentUser, + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + armorConfig, // 👈 custom GraphQL Security configuration + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +For example, the default max query depth limit is 6. To change that setting to 2 levels, simply provide the configuration to your handler: + +```ts +export const handler = createGraphQLHandler({ + authDecoder, + getCurrentUser, + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + armorConfig: { maxDepth: { n: 2 } }, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +#### Max Aliases + +This protection is enabled by default. + +Limit the number of aliases in a document. Defaults to 15. + +##### Example + +Aliases allow you to rename the data that is returned in a query’s results. They manipulate the structure of the query result that is fetched from your service, displaying it according to your web component's needs. + +This contrived example uses 11 alias to rename a Post's id and title to various permutations of post, article, and blog to return a different shape in the query result as `articles`: + +```ts + { + articles: posts { + id + articleId: id + postId: id + articlePostId: id + postArticleId: id + blogId: id + title + articleTitle: title + postTitle: title + articlePostTitle: title + postArticleTitle: title + blogTitle: title + } +} +``` + +##### Configuration and Defaults + +Limit the number of aliases in a document. Defaults to 15. + +You can change the default value via the `maxAliases` setting when creating your GraphQL handler. + +```ts +{ + maxAliases: { + enabled: true, + n: 15, + } +} +``` +#### Cost Limit + +This protection is enabled by default. + +It analyzes incoming GraphQL queries and applies a cost analysis algorithm to prevent resource overload by blocking too expensive requests (DoS attack attempts). + +The cost computation is quite simple (and naive) at the moment but there are plans to make it evolve toward a extensive plugin with many features. + +Defaults to a overall maxCost limit of 5000. + +##### Overview + +Cost is a factor of the kind of field and depth. Total Cost is a cumulative sum of each field based on its type and its depth in the query. + +Scalar fields -- those that return values like strings or numbers -- are worth one value; whereas are objects are worth another. + +How deep they are nested in the query is a multiplier factor such that: + +``` +COST = FIELD_KIND_COST * (DEPTH * DEPTH_COST_FACTOR) +TOTAL_COST = SUM(COST) +``` + +If the `TOTAL_COST` exceeds the `maxCost`, an error stops GraphQL execution and rejects the request. + +You have control over the field kind and depth costs settings, but the defaults are: + +``` +objectCost: 2, // cost of retrieving an object +scalarCost: 1, // cost of retrieving a scalar +depthCostFactor: 1.5, // multiplicative cost of depth +``` + +##### Example + +In this small example, we have one object field `me` that contains two, nested scalar fields `id` and `me`. There is an operation `profile` (which is neither a scalar nor object and thus ignored as part of the cost calculation). + +```ts +{ + profile { + me { + id + user + } + } +} +``` +The cost breakdown for cost is: + +* two scalars `id` and `user` worth 1 each +* they are at level 1 depth with a depth factor of 1.5 +* 2 \* ( 1 \* 1.5 ) = 2 \* 1.5 = 3 +* their parent object is `me` worth 2 + +Therefore the total cost is 2 + 3 = 5. + +:::note +The operation definition `query` of `profile` is ignored in the calculation. This is the case even if you name your query `MY_PROFILE` like: + +``` +{ + profile MY_PROFILE { + me { + id + user + } + } +} +``` +::: + +##### Configuration and Defaults + +Defaults to a overall maxCost limit of 5000. + +You can change the default value via the `costLimit` setting when creating your GraphQL handler. + + +```ts +{ + costLimit: { + enabled: true, + maxCost: 5000, // maximum cost of a request before it is rejected + objectCost: 2, // cost of retrieving an object + scalarCost: 1, // cost of retrieving a scalar + depthCostFactor: 1.5, // multiplicative cost of depth + } +} +``` + +#### Max Depth Limit + +This protection is enabled by default. + +Limit the depth of a document. Defaults to 6 levels. + +Attackers often submit expensive, nested queries to abuse query depth that could overload your database or expend costly resources. + +Typically, these types of unbounded, complex and expensive GraphQL queries are usually huge deeply nested and take advantage of an understanding of your schema (hence why schema introspection is disabled by default in production) and the data model relationships to create "cyclical" queries. + +##### Example + +An example of a cyclical query here takes advantage of knowing that an author has posts and each post has an author ... that has posts ... that has an another that ... etc. + +This cyclical query has a depth of 8. + +```jsx +// cyclical query example +// depth: 8+ +query cyclical { + author(id: 'jules-verne') { + posts { + author { + posts { + author { + posts { + author { + ... { + ... # more deep nesting! + } + } + } + } + } + } + } + } +} +``` +##### Configuration and Defaults + +Defaults to 6 levels. + +You can change the default value via the `maxDepth` setting when creating your GraphQL handler. + +```ts +{ + maxDepth: { + enabled: true, + n: 6, + } +} +``` + +#### Max Directives + +This protections is enabled by default. + +Limit the number of directives in a document. Defaults to 50. + +##### Example + +The following example demonstrates that by using the `@include` and `@skip` GraphQL query directives one can design a large request that requires computation, but in fact returns the expected response ... + +```ts +{ + posts { + id @include(if:true) + id @include(if:false) + id @include(if:false) + id @skip(if:true) + id @skip(if:true) + id @skip(if:true)) + title @include(if:true) + title @include(if:false) + title @include(if:false) + title @skip(if:true) + title @skip(if:true) + title @skip(if:true) + } +} +``` + +... of formatted Posts with just a single id and title. + +```ts +{ + "data": { + "posts": [ + { + "id": 1, + "title": "A little more about RedwoodJS" + }, + { + "id": 2, + "title": "What is GraphQL?" + }, + { + "id": 3, + "title": "Welcome to the RedwoodJS Community!" + }, + { + "id": 4, + "title": "10 ways to secure your GraphQL endpoint" + } + ] + } +} +``` + +By limiting the maximum number of directives in the document, malicious queries can be rejected. + +##### Configuration and Defaults + +You can change the default value via the `maxDirectives` setting when creating your GraphQL handler. + +```ts +{ + maxDirectives: { + enabled: true, + n: 50, + } +} +``` +#### Max Tokens + +This protection is enabled by default. + +Limit the number of GraphQL tokens in a document. + + In computer science, lexical analysis, lexing or tokenization is the process of converting a sequence of characters into a sequence of lexical tokens. + + E.g. given the following GraphQL operation. + +```ts + graphql { + me { + id + user + } + } +``` + + The tokens are `query`, `{`, `me`, `{`, `id`, `user`, `}` and `}`. Having a total count of 8 tokens. + +##### Example + +Given the query with 8 tokens: + +```ts + graphql { + me { + id + user + } + } +``` + +And a custom configuration to all a maximum of two tokens: + +``` +const armorConfig = { + maxTokens: { n: 2 }, +} +``` + +An error is raised: + +``` +'Syntax Error: Token limit of 2 exceeded, found 3.' +``` + +:::note + +When reporting the number of found tokens, then number found is not the total tokens, but the value when found that exceeded the limit. + +Therefore found would be n + 1. +::: + +##### Configuration and Defaults + +Defaults to 1000. + +You can change the default value via the `maxTokens` setting when creating your GraphQL handler. + +```ts +{ + maxTokens: { + enabled: true, + n: 1000, + } +} +``` +#### Block Field Suggestions + +This plugin is enabled by default. + +It will prevent suggesting fields in case of an erroneous request. Suggestions can lead to the leak of your schema even with disabled introspection, which can be very detrimental in case of a private API. + +Example of such a suggestion: + +`Cannot query field "sta" on type "Media". Did you mean "stats", "staff", or "status"?` + +##### Example +##### Configuration and Defaults + +Enabled by default. + +You can change the default value via the `blockFieldSuggestions` setting when creating your GraphQL handler. + +```ts +{ + blockFieldSuggestion: { + enabled: true, + } +} +``` +Enabling will hide the field suggestion: + +`Cannot query field "sta" on type "Media". [Suggestion hidden]?` + +Orm if you want a custom mask: + +```ts +{ + + blockFieldSuggestion: { + mask: '<REDACTED>' + }, +} +``` + +``Cannot query field "sta" on type "Media". [REDACTED]?` + + +### Error Masking + +In many GraphQL servers, when an error is thrown, the details of that error are leaked to the outside world. The error and its message are then returned in the response and a client might reveal those errors in logs or even render the message to the user. You could potentially leak sensitive or other information about your app you don't want to share—such as database connection failures or even the presence of certain fields. + +Redwood is here to help! + +Redwood prevents leaking sensitive error-stack information out-of-the-box for unexpected errors. +If an error that isn't one of [Redwood's GraphQL Errors](#redwood-errors) or isn't based on a GraphQLError is thrown: + +- The original error and its message will be logged using the defined GraphQL logger, so you'll know what went wrong +- A default message "Something went wrong" will replace the error message in the response (Note: you can customize this message) + +#### Customizing the Error Message + +But what if you still want to share an error message with client? +Simply use one of [Redwood's GraphQL Errors](#redwood-errors) and your custom message will be shared with your users. + +#### Customizing the Default Error Message + +You can customize the default "Something went wrong" message used when the error is masked via the `defaultError` setting on the `createGraphQLHandler`: + +```tsx +export const handler = createGraphQLHandler({ + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + defaultError: 'Sorry about that', // 👈 Customize the error message + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +#### Redwood Errors + +Redwood Errors are inspired from [Apollo Server Error codes](https://www.apollographql.com/docs/apollo-server/data/errors/#error-codes) for common use cases: + +To use a Redwood Error, import each from `@redwoodjs/graphql-server`. + +- `SyntaxError` - An unspecified error occurred +- `ValidationError` - Invalid input to a service +- `AuthenticationError` - Failed to authenticate +- `ForbiddenError` - Unauthorized to access +- `UserInputError` - Missing input to a service + +If you use one of the errors, then the message provided will not be masked and will be shared in the GraphQL response: + +```tsx +import { UserInputError } from '@redwoodjs/graphql-server' +// ... +throw new UserInputError('An email is required.') +``` + +then the message provided will not be masked and it will be shred in the GraphQL response. + +##### Custom Errors and Uses + +Need you own custom error and message? + +Maybe you're integrating with a third-party api and want to handle errors from that service and also want control of how that error is shared with your user client-side. + +Simply extend from `RedwoodError` and you're all set! + +```tsx +export class MyCustomError extends RedwoodError { + constructor(message: string, extensions?: Record<string, any>) { + super(message, extensions) + } +} +``` + +For example, in your service, you can create and use it to handle the error and return a friendly message: + +```tsx +export class WeatherError extends RedwoodError { + constructor(message: string, extensions?: Record<string, any>) { + super(message, extensions) + } +} + +export const getWeather = async ({ input }: WeatherInput) { + try { + const weather = weatherClient.get(input.zipCode) + } catch(error) { + // rate limit issue + if (error.statusCode = 429) { + throw new WeatherError('Unable to get the latest weather updates at the moment. Please try again shortly.') + } + + // other error + throw new WeatherError(`We could not get the weather for ${input.zipCode}.`) + } +} +``` + +#### CSRF Prevention + +If you have CORS enabled, almost all requests coming from the browser will have a preflight request - however, some requests are deemed "simple" and don't make a preflight. One example of such a request is a good ol' GET request without any headers, this request can be marked as "simple" and have preflight CORS checks skipped therefore skipping the CORS check. + +This attack can be mitigated by saying: "all GET requests must have a custom header set". This would force all clients to manipulate the headers of GET requests, marking them as "_not-_simple" and therefore always executing a preflight request. + +You can achieve this by using the [`@graphql-yoga/plugin-csrf-prevention` GraphQL Yoga plugin](https://the-guild.dev/graphql/yoga-server/docs/features/csrf-prevention). + +## Self-Documenting GraphQL API + +RedwoodJS helps you document your GraphQL API by generating commented SDL used for GraphiQL and the GraphQL Playground explorer -- as well as can be turned into API docs using tools like [Docusaurus](#use-in-docusaurus). + +If you specify the SDL generator with its `--docs` option, any comments (which the [GraphQL spec](https://spec.graphql.org/October2021/#sec-Descriptions) calls "descriptions") will be incorporated into your RedwoodJS app's `graphql.schema` file when generating types. + +If you comment your Prisma schema models, its fields, or enums, the SDL generator will use those comments as the documentation. + +If there is no Prisma comment, then the SDL generator will default a comment that you can then edit. + +:::note +If you re-generate the SDL, any custom comments will be overwritten. +However, if you make those edits in your Prisma schema, then those will be used. +::: + +### Prisma Schema Comments + +Your Prisma schema is documented with triple slash comments (`///`) that precedes: + +* Model names +* Enum names +* each Model field name + +``` +/// A blog post. +model Post { + /// The unique identifier of a post. + id Int @id @default(autoincrement()) + /// The title of a post. + title String + /// The content of a post. + body String + /// When the post was created. + createdAt DateTime @default(now()) +} + +/// A list of allowed colors. +enum Color { + RED + GREEN + BLUE +} +``` + +### SDL Comments + +When used with `--docs` option, [SDL generator](cli-commands#generate-sdl) adds comments for: + +* Directives +* Queries +* Mutations +* Input Types + +:::note +By default, the `--docs` option to the SDL generator is false and comments are not created. +::: + +Comments [enclosed in `"""` or `"`]([GraphQL spec](https://spec.graphql.org/October2021/#sec-Descriptions) in your sdl files will be included in the generated GraphQL schema at the root of your project (.redwood/schema.graphql). + +``` +""" +Use to check whether or not a user is authenticated and is associated +with an optional set of roles. +""" +directive @requireAuth(roles: [String]) on FIELD_DEFINITION + +"""Use to skip authentication checks and allow public access.""" +directive @skipAuth on FIELD_DEFINITION + +""" +Autogenerated input type of InputPost. +""" +input CreatePostInput { + "The content of a post." + body: String! + + "The title of a post." + title: String! +} + +""" +Autogenerated input type of UpdatePost. +""" +input UpdatePostInput { + "The content of a post." + body: String + + "The title of a post." + title: String +} + +""" +A blog post. +""" +type Post { + "The content of a post." + body: String! + + "Description for createdAt." + createdAt: DateTime! + + "The unique identifier of a post." + id: Int! + + "The title of a post." + title: String! +} + +""" +About mutations +""" +type Mutation { + "Creates a new Post." + createPost(input: CreatePostInput!): Post! + + "Deletes an existing Post." + deletePost(id: Int!): Post! + + "Updates an existing Post." + updatePost(id: Int!, input: UpdatePostInput!): Post! +} + +""" +About queries +""" +type Query { + "Fetch a Post by id." + post(id: Int!): Post + + "Fetch Posts." + posts: [Post!]! +} +``` + +#### Root Schema + +Documentation is also generated for the Redwood Root Schema that defines details about Redwood such as the current user and version information. +``` +type Query { + "Fetches the Redwood root schema." + redwood: Redwood +} + +""" +The Redwood Root Schema + +Defines details about Redwood such as the current user and version information. +""" +type Redwood { + "The current user." + currentUser: JSON + + "The version of Prisma." + prismaVersion: String + + "The version of Redwood." + version: String +} + +scalar BigInt +scalar Date +scalar DateTime +scalar JSON +scalar JSONObject +scalar Time + +``` + +### Preview in GraphiQL + +The [GraphQL Playground aka GraphiQL](https://www.graphql-yoga.com/docs/features/graphiql) is a way for you to interact with your schema and try out queries and mutations. It can show you the schema by inspecting it. You can find the GraphQL Playground at [http://localhost:8911/graphql](http://localhost:8911/graphql) when your dev server is running. + +The documentation generated is present when exploring the schema. + +#### Queries + +<img alt="graphiql-queries" src="/img/graphql-api-docs/graphiql-queries.png" width="400" /> + +#### Mutations + +<img alt="graphiql-mutations" src="/img/graphql-api-docs/graphiql-mutations.png" width="400" /> + +#### Model Types + +<img alt="graphiql-type" src="/img/graphql-api-docs/graphiql-type.png" width="400" /> + +#### Input Types + +<img alt="graphiql-input-type" src="/img/graphql-api-docs/graphiql-input-type.png" width="400" /> + +### Use in Docusaurus + +If your project uses [Docusaurus](https://docusaurus.io), the generated commented SDL can be used to publish documentation using the [graphql-markdown](https://graphql-markdown.github.io) plugin. + +#### Basic Setup + +The following is some basic setup information, but please consult [Docusaurus](https://docusaurus.io) and the [graphql-markdown](https://graphql-markdown.github.io) for latest instructions. + +1. Install Docusaurus (if you have not done so already) + +```terminal +npx create-docusaurus@latest docs classic +``` + + +Add `docs` to your `workspaces` in the project's `package.json`: + +``` + "workspaces": { + "packages": [ + "docs", + "api", + "web", + "packages/*" + ] + }, +``` + +2. Ensure a `docs` directory exists at the root of your project + +```terminal +mkdir docs // if needed +``` + +3. Install the GraphQL Generators Plugin + +```terminal +yarn workspace docs add @edno/docusaurus2-graphql-doc-generator graphql +``` + +4. Ensure a Directory for your GraphQL APi generated documentation resides in with the Docusaurus directory `/docs` structure + +```terminal +// Change into the "docs" workspace + +cd docs + +// you should have the "docs" directory and within that a "graphql-api" directory +mkdir docs/graphql-api // if needed +``` + +5. Update `docs/docusaurus.config.js` and configure the plugin and navbar + +``` +// docs/docusaurus.config.js +// ... + plugins: [ + [ + '@edno/docusaurus2-graphql-doc-generator', + { + schema: '../.redwood/schema.graphql', + rootPath: './docs', + baseURL: 'graphql-api', + linkRoot: '../..', + }, + ], + ], +// ... +themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + navbar: { + title: 'My Site', + logo: { + alt: 'My Site Logo', + src: 'img/logo.svg', + }, + items: [ + { + to: '/docs/graphql-api', // adjust the location depending on your baseURL (see configuration) + label: 'GraphQL API', // change the label with yours + position: 'right', + }, +//... +``` +6. Update `docs/sidebars.js` to include the generated `graphql-api/sidebar-schema.js` + +``` +// docs/sidebars.js +/** + * Creating a sidebar enables you to: + * - create an ordered group of docs + * - render a sidebar for each doc of that group + * - provide next/previous navigation + * + * The sidebars can be generated from the filesystem, or explicitly defined here. + * + * Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], + ...require('./docs/graphql-api/sidebar-schema.js'), +} + +module.exports = sidebars +``` + +7. Generate the docs + +`yarn docusaurus graphql-to-doc` + +:::tip +You can overwrite the generated docs and bypass the plugin's diffMethod use `--force`. + +``yarn docusaurus graphql-to-doc --force` +::: + +8. Start Docusaurus + +``` +yarn start +``` + +##### Example Screens + +##### Schema Documentation +![graphql-doc-example-main](/img/graphql-api-docs/schema-doc.png) + +##### Type Example +![graphql-doc-example-type](/img/graphql-api-docs/contact-type.png) + +##### Query Example +![graphql-doc-example-query](/img/graphql-api-docs/contact-query.png) + +##### Mutation Example +![graphql-doc-example-mutation](/img/graphql-api-docs/schema-mutation.png) + +##### Directive Example +![graphql-doc-example-directive](/img/graphql-api-docs/schema-directive.png) + +##### Scalar Example +![graphql-doc-example-scalar](/img/graphql-api-docs/schema-scalar.png) + +## FAQ + +### Why Doesn't Redwood Use Something Like Nexus? + +This might be one of our most frequently asked questions of all time. Here's [Tom's response in the forum](https://community.redwoodjs.com/t/anyone-playing-around-with-nexus-js/360/5): + +> We started with Nexus, but ended up pulling it out because we felt like it was too much of an abstraction over the SDL. It’s so nice being able to just read the raw SDL to see what the GraphQL API is. + +<!-- TODO --> +<!-- This https://community.redwoodjs.com/t/how-to-add-resolvetype-resolver-for-interfaces/432/7 --> + +## Further Reading + +Eager to learn more about GraphQL? Check out some of the resources below: +- [GraphQL.wtf](https://graphql.wtf) covers most aspects of GraphQL and publishes one short video a week +- The official GraphQL Yoga (the GraphQL server powering Redwood) [tutorial](https://www.graphql-yoga.com/tutorial/basic/00-introduction) is the best place to get your hands on GraphQL basics +- And of course, [the official GraphQL docs](https://graphql.org/learn/) are great place to do a deep dive into exactly how GraphQL works diff --git a/docs/versioned_docs/version-7.0/graphql/fragments.md b/docs/versioned_docs/version-7.0/graphql/fragments.md new file mode 100644 index 000000000000..71f693423fa4 --- /dev/null +++ b/docs/versioned_docs/version-7.0/graphql/fragments.md @@ -0,0 +1,310 @@ +# Fragments + +[GraphQL fragments](https://graphql.org/learn/queries/#fragments) are reusable units of GraphQL queries that allow developers to define a set of fields that can be included in multiple queries. Fragments help improve code organization, reduce duplication, and make GraphQL queries more maintainable. They are particularly useful when you want to request the same set of fields on different parts of your data model or when you want to share query structures across multiple components or pages in your application. + +## What are Fragments? + +Here are some key points about GraphQL fragments: + +1. **Reusability**: Fragments allow you to define a set of fields once and reuse them in multiple queries. This reduces redundancy and makes your code more DRY (Don't Repeat Yourself). + +2. **Readability**: Fragments make queries more readable by separating the query structure from the actual query usage. This can lead to cleaner and more maintainable code. + +3. **Maintainability**: When you need to make changes to the requested fields, you only need to update the fragment definition in one place, and all queries using that fragment will automatically reflect the changes. + +## Basic Usage + +Here's a basic example of how you might use GraphQL fragments in developer documentation: + +Let's say you have a GraphQL schema representing books, and you want to create a fragment for retrieving basic book information like title, author, and publication year. + + +```graphql +# Define a GraphQL fragment for book information +fragment BookInfo on Book { + id + title + author + publicationYear +} + +# Example query using the BookInfo fragment +query GetBookDetails($bookId: ID!) { + book(id: $bookId) { + ...BookInfo + description + # Include other fields specific to this query + } +} +``` + +In this example: + +- We've defined a fragment called `BookInfo` that specifies the fields we want for book information. +- In the `GetBookDetails` query, we use the `...BookInfo` spread syntax to include the fields defined in the fragment. +- We also include additional fields specific to this query, such as `description`. + +By using the `BookInfo` fragment, you can maintain a consistent set of fields for book information across different parts of your application without duplicating the field selection in every query. This improves code maintainability and reduces the chance of errors. + +In developer documentation, you can explain the purpose of the fragment, provide examples like the one above, and encourage developers to use fragments to organize and reuse their GraphQL queries effectively. + +## Using Fragments in RedwoodJS + +RedwoodJS makes it easy to use fragments, especially with VS Code and Apollo GraphQL Client. + +First, RedwoodJS instructs the VS Code GraphQL Plugin where to look for fragments by configuring the `documents` attribute of your project's `graphql.config.js`: + +```js +// graphql.config.js + +const { getPaths } = require('@redwoodjs/internal') + +module.exports = { + schema: getPaths().generated.schema, + documents: './web/src/**/!(*.d).{ts,tsx,js,jsx}', // 👈 Tells VS Code plugin where to find fragments +} +``` + +Second, RedwoodJS automatically creates the [fragmentRegistry](https://www.apollographql.com/docs/react/data/fragments/#registering-named-fragments-using-createfragmentregistry) needed for Apollo to know about the fragments in your project without needing to interpolate their declarations. + +Redwood exports ways to interact with fragments in the `@redwoodjs/web/apollo` package. + +``` +import { fragmentRegistry, registerFragment } from '@redwoodjs/web/apollo' +``` + +With `fragmentRegistry`, you can interact with the registry directly. + +With `registerFragment`, you can register a fragment with the registry and get back: + + ```ts + { fragment, typename, getCacheKey, useRegisteredFragment } + ``` + +which can then be used to work with the registered fragment. + +### Setup + +`yarn rw setup graphql fragments` + +See more in [cli commands - setup graphql fragments](../cli-commands.md#setup-graphql-fragments). + +### registerFragment + +To register a fragment, you can simply register it with `registerFragment`. + +```ts +import { registerFragment } from '@redwoodjs/web/apollo' + +registerFragment( + gql` + fragment BookInfo on Book { + id + title + author + publicationYear + } + ` +) +``` + +This makes the `BookInfo` available to use in your query: + + +```ts +import type { GetBookDetails } from 'types/graphql' + +import { useQuery } from '@redwoodjs/web' + +import BookInfo from 'src/components/BookInfo' + +const GET_BOOK_DETAILS = gql` + query GetBookDetails($bookId: ID!) { + book(id: $bookId) { + ...BookInfo + description + # Include other fields specific to this query + } + } + +... + +const { data, loading} = useQuery<GetBookDetails>(GET_BOOK_DETAILS) + +``` + + +You can then access the book info from `data` and render: + +```ts +{!loading && ( + <div key={`book-id-${id}`}> + <h3>Title: {data.title}</h3> + <p>by {data.author} ({data.publicationYear})<> + </div> +)} +``` + +### fragment + +Access the original fragment you registered. + +```ts +import { fragment } from '@redwoodjs/web/apollo' +``` + +### typename + +Access typename of fragment you registered. + +```ts +import { typename } from '@redwoodjs/web/apollo' +``` + +For example, with + +```graphql +# Define a GraphQL fragment for book information +fragment BookInfo on Book { + id + title + author + publicationYear +} +``` + +the `typename` is `Book`. + + +## useCache!!! + +## getCacheKey + +A helper function to create the cache key for the data associated with the fragment in Apollo cache. + +```ts +import { getCacheKey } from '@redwoodjs/web/apollo' +``` + +For example, with + +```graphql +# Define a GraphQL fragment for book information +fragment BookInfo on Book { + id + title + author + publicationYear +} +``` + +the `getCacheKey` is a function where `getCacheKey(42)` would return `Book:42`. + +### useRegisteredFragment + +```ts +import { registerFragment } from '@redwoodjs/web/apollo' + +const { useRegisteredFragment } = registerFragment( + // ... +) +``` + +A helper function relies on Apollo's [`useFragment` hook](https://www.apollographql.com/docs/react/data/fragments/#usefragment) in Apollo cache. + +The useFragment hook represents a lightweight live binding into the Apollo Client Cache. It enables Apollo Client to broadcast specific fragment results to individual components. This hook returns an always-up-to-date view of whatever data the cache currently contains for a given fragment. useFragment never triggers network requests of its own. + + +This means that once the Apollo Client Cache has loaded the data needed for the fragment, one can simply render the data for the fragment component with its id reference. + +Also, anywhere the fragment component is rendered will be updated with teh latest data if any of `useQuery` with uses the fragment received new data. + +```ts +import type { Book } from 'types/graphql' + +import { registerFragment } from '@redwoodjs/web/apollo' + +const { useRegisteredFragment } = registerFragment( + gql` + fragment BookInfo on Book { + id + title + author + publicationYear + } + ` +) + +const Book = ({ id }: { id: string }) => { + const { data, complete } = useRegisteredFragment<Book>(id) + + return ( + complete && ( + <div key={`book-id-${id}`}> + <h3>Title: {data.title}</h3> + <p>by {data.author} ({data.publicationYear})<> + </div> + ) + ) +} + +export default Book +``` + +:::note +In order to use [fragments](#fragments) with [unions](#unions) and interfaces in Apollo Client, you need to tell the client how to discriminate between the different types that implement or belong to a supertype. + +Please see how to [generate possible types from fragments and union types](#generate-possible-types). +::: + + +## Possible Types for Unions + +In order to use [fragments](#fragments) with [unions](#unions) and interfaces in Apollo Client, you need to tell the client how to discriminate between the different types that implement or belong to a supertype. + +You pass a possibleTypes option to the InMemoryCache constructor to specify these relationships in your schema. + +This object maps the name of an interface or union type (the supertype) to the types that implement or belong to it (the subtypes). + +For example: + +```ts +/// web/src/App.tsx + +<RedwoodApolloProvider graphQLClientConfig={{ + cacheConfig: { + possibleTypes: { + Character: ["Jedi", "Droid"], + Test: ["PassingTest", "FailingTest", "SkippedTest"], + Snake: ["Viper", "Python"], + Groceries: ['Fruit', 'Vegetable'], + }, + }, +}}> +``` + +To make this easier to maintain, RedwoodJS GraphQL CodeGen automatically generates `possibleTypes` so you can simply assign it to the `graphQLClientConfig`: + + +```ts +// web/src/App.tsx + +import possibleTypes from 'src/graphql/possibleTypes' + +// ... + +const graphQLClientConfig = { + cacheConfig: { + ...possibleTypes, + }, +} + +<RedwoodApolloProvider graphQLClientConfig={graphQLClientConfig}> +``` + +To generate the `src/graphql/possibleTypes` file, enable fragments in `redwood.toml`: + +```toml title=redwood.toml +[graphql] + fragments = true +``` diff --git a/docs/versioned_docs/version-7.0/graphql/mocking-graphql-requests.md b/docs/versioned_docs/version-7.0/graphql/mocking-graphql-requests.md new file mode 100644 index 000000000000..9251d5ce6717 --- /dev/null +++ b/docs/versioned_docs/version-7.0/graphql/mocking-graphql-requests.md @@ -0,0 +1,161 @@ +--- +description: Mock GraphQL requests to test your components +--- + +# Mocking GraphQL Requests + +Testing and building components without having to rely on the API is a good best practice. Redwood makes this possible via `mockGraphQLQuery` and `mockGraphQLMutation`. + +The argument signatures of these functions are identical. Internally, they target different operation types based on their suffix. + +```jsx +mockGraphQLQuery('OperationName', (variables, { ctx, req }) => { + ctx.delay(1500) // pause for 1.5 seconds + return { + userProfile: { + id: 42, + name: 'peterp', + } + } +}) +``` + +## The operation name + +The first argument is the [operation name](https://graphql.org/learn/queries/#operation-name); it's used to associate mock-data with a query or a mutation: + +```jsx +query UserProfileQuery { /*...*/ } +mockGraphQLQuery('UserProfileQuery', { /*... */ }) +``` + +```jsx +mutation SetUserProfile { /*...*/ } +mockGraphQLMutation('SetUserProfile', { /*... */ }) +``` + +Operation names should be unique. + +## The mock-data + +The second argument can be an object or a function: + +```jsx {1} +mockGraphQLQuery('OperationName', (variables, { ctx }) => { + ctx.delay(1500) // pause for 1.5 seconds + return { + userProfile: { + id: 42, + name: 'peterp', + } + } +}) +``` + +If it's a function, it'll receive two arguments: `variables` and `{ ctx }`. The `ctx` object allows you to make adjustments to the response with the following functions: + +- `ctx.status(code: number, text?: string)`: set a http response code: + +```jsx {2} +mockGraphQLQuery('OperationName', (_variables, { ctx }) => { + ctx.status(404) +}) +``` + +<br/> + +- `ctx.delay(numOfMS)`: delay the response + +```jsx {2} +mockGraphQLQuery('OperationName', (_variables, { ctx }) => { + ctx.delay(1500) // pause for 1.5 seconds + return { id: 42 } +}) +``` + +<br/> + +- `ctx.errors(e: GraphQLError[])`: return an error object in the response: + +```jsx {2} +mockGraphQLQuery('OperationName', (_variables, { ctx }) => { + ctx.errors([{ message: 'Uh, oh!' }]) +}) +``` + +## TypeScript +You can get stricter types by passing types when mocking the query, mutation and its variables: + +```tsx +import type { UserProfileQuery, UserProfileQueryVariables } from 'types/graphql' + +mockGraphQLQuery<UserProfileQuery, UserProfileQueryVariables>('UserProfileQuery', { /*... */ }) +``` +or, you can manually pass your own types: + +```tsx +mockGraphQLQuery<{ + userProfile: { + id: number, + name: string, + } +}>('UserProfileQuery', { /*... */ }) +``` + +## Global mock-requests vs local mock-requests + +Placing your mock-requests in `"<name>.mock.js"` will cause them to be globally scoped in Storybook, making them available to all stories. + +> **All stories?** +> +> In React, it's often the case that a single component will have a deeply nested component that perform a GraphQL query or mutation. Having to mock those requests for every story can be painful and tedious. + +Using `mockGraphQLQuery` or `mockGraphQLMutation` inside a story is locally scoped and will overwrite a globally-scoped mock-request. + +We suggest always starting with globally-scoped mocks. + +## Mocking a Cell's `QUERY` + +To mock a Cell's `QUERY`, find the file ending with with `.mock.js` in your Cell's directory. This file exports a value named `standard`, which is the mock-data that will be returned for your Cell's `QUERY`. + +```jsx {4,5,6,12,13,14} title="UserProfileCell/UserProfileCell.js" +export const QUERY = gql` + query UserProfileQuery { + userProfile { + id + } + } +` + +// UserProfileCell/UserProfileCell.mock.js +export const standard = { + userProfile: { + id: 42 + } +} +``` + +Since the value assigned to `standard` is the mock-data associated with the `QUERY`, modifying the `QUERY` means you also need to modify the mock-data. + +```diff title="UserProfileCell/UserProfileCell.js" +export const QUERY = gql` + query UserProfileQuery { + userProfile { + id ++ name + } + } +` + +// UserProfileCell/UserProfileCell.mock.js +export const standard = { + userProfile: { + id: 42, ++ name: 'peterp', + } +} +``` + +> **Behind the scenes** +> +> Redwood uses the value associated with `standard` as the second argument to `mockGraphQLQuery`. diff --git a/docs/versioned_docs/version-7.0/graphql/realtime.md b/docs/versioned_docs/version-7.0/graphql/realtime.md new file mode 100644 index 000000000000..d9d842c7fa2e --- /dev/null +++ b/docs/versioned_docs/version-7.0/graphql/realtime.md @@ -0,0 +1,9 @@ +# GraphQL Realtime + +In GraphQL, there are two options for real-time updates: **live queries** and **subscriptions**. + +Subscriptions are part of the GraphQL specification, whereas live queries are not. + +There are times where subscriptions are well-suited for a realtime problem — and in some cases live queries may be a better fit. Later we’ll explore the pros and cons of each approach and how best to decide that to use and when. + +See [subscriptions and live queries](../realtime.md#subscriptions-and-live-queries) for setup and usaged. diff --git a/docs/versioned_docs/version-7.0/graphql/trusted-documents.md b/docs/versioned_docs/version-7.0/graphql/trusted-documents.md new file mode 100644 index 000000000000..a8f1aaf98881 --- /dev/null +++ b/docs/versioned_docs/version-7.0/graphql/trusted-documents.md @@ -0,0 +1,152 @@ +# Trusted Documents + +RedwoodJS can be setup to enforce [persisted operations](https://the-guild.dev/graphql/yoga-server/docs/features/persisted-operations) – alternatively called [Trusted Documents](https://benjie.dev/graphql/trusted-documents). + +Use trusted documents if your GraphQL API is only for your own app (which is the case for most GraphQL APIs) for a massively decreased attack-surface, increased performance, and decreased bandwidth usage. + +At app build time, Redwood will extract the GraphQL documents (queries, etc) and make them available to the server. At run time, you can then send "document id" or "hash" instead of the whole document; only accept requests with a known document id. + +This prevents malicious attackers from executing arbitrary GraphQL thus helping with unwanted resolver traversal or information leaking. + +See [Configure Trusted Documents](#configure-trusted-documents) for more information and usage instructions. + +## Trusted Documents Explained + +When configured to use Trusted Documents, your project will: + +1. When generating types, generate files in `web/src/graphql` needed for persisted aka trusted documents, for example: + +```json title=web/src/graphql/persisted-documents.json +{ + "4dd4c49aef34e20af52efb50a1d0ebb0b8062b6d": "query FindAuthorQuery($id: Int!) { __typename author: user(id: $id) { __typename email fullName } }", + "46e9823d95110ebb2ef17ef82fff5c19a468f8a6": "query FindBlogPostQuery($id: Int!) { __typename blogPost: post(id: $id) { __typename author { __typename email fullName } body createdAt id title } }", + "421bcffdde84d448ec1a1b30b36eaeb966f00257": "query BlogPostsQuery { __typename blogPosts: posts { __typename author { __typename email fullName } body createdAt id title } }", + "f6ae606548009c2cd4c69b9aecebad0a730ba23d": "mutation DeleteContactMutation($id: Int!) { __typename deleteContact(id: $id) { __typename id } }", + "f7d2df28fcf87b0c29d225df79363d1c69159916": "query FindContactById($id: Int!) { __typename contact: contact(id: $id) { __typename createdAt email id message name } }", + "7af93a7e454d9c59bbb77c14e0c78e99207fd0c6": "query FindContacts { __typename contacts { __typename createdAt email id message name } }", + "e01ad8e899ac908458eac2d1f989b88160a0494b": "query EditContactById($id: Int!) { __typename contact: contact(id: $id) { __typename createdAt email id message name } }", + "94f51784b918a52e9af64f3c1fd4356903b611f8": "mutation UpdateContactMutation($id: Int!, $input: UpdateContactInput!) { __typename updateContact(id: $id, input: $input) { __typename createdAt email id message name } }", + "da35778949e1e8e27b7d1bb6b2a630749c5d7060": "mutation CreateContactMutation($input: CreateContactInput!) { __typename createContact(input: $input) { __typename id } }", + "4f880f909a16b7fe15898fe33a2ee26933466719": "query EditPostById($id: Int!) { __typename post: post(id: $id) { __typename authorId body createdAt id title } }", + "32b9225df81ff7845fedfa6d5c86c5d4a76073d2": "mutation UpdatePostMutation($id: Int!, $input: UpdatePostInput!) { __typename updatePost(id: $id, input: $input) { __typename authorId body createdAt id title } }", + "daf229dcea085f1beff91102a63c2ba9c88e8481": "mutation CreatePostMutation($input: CreatePostInput!) { __typename createPost(input: $input) { __typename id } }", + "e3405f6dcb6460943dd604423f0f517bc8318aaa": "mutation DeletePostMutation($id: Int!) { __typename deletePost(id: $id) { __typename id } }", + "43a94ad9a150aa7a7a665c73a931a5b18b6cc28b": "query FindPostById($id: Int!) { __typename post: post(id: $id) { __typename authorId body createdAt id title } }", + "76308e971322b1ece4cdff75185bb61d7139e343": "query FindPosts { __typename posts { __typename authorId body createdAt id title } }", + "287beba179ef2c4448b4d3b150701993eddc07d6": "query BlogPostsQueryTrustedPage { __typename blogPosts: posts { __typename author { __typename email fullName } body createdAt id title } }" +} +``` + +2. They contain the query and hash that represents and identifies that query +3. Files with functions to lookup the generated trusted document such as: + +```ts title=web/src/graphql/gql.ts +// ... +export function graphql( + source: "\n query FindPosts {\n posts {\n id\n title\n body\n authorId\n createdAt\n }\n }\n" +): (typeof documents)["\n query FindPosts {\n posts {\n id\n title\n body\n authorId\n createdAt\n }\n }\n"]; +// ... +export function gql(source: string) { + return graphql(source); +} + +``` + +and the generated AST with the hash id in `web/src/graphql/graphql.ts` + +```ts title=web/src/graphql/graphql.ts +// ... +export const FindPostsDocument = {"__meta__":{"hash":"76308e971322b1ece4cdff75185bb61d7139e343"},"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"FindPosts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"posts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"__typename"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"body"}},{"kind":"Field","name":{"kind":"Name","value":"authorId"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]} as unknown as DocumentNode<FindPostsQuery, FindPostsQueryVariables>; +// ... +``` + +so that when a query or mutation is made, the web side GraphQL client doesn't send the query, but rather **just the hash id** so that the GraphQL Server can lookup the pre-generated query to run. + +```http +{"operationName":"FindPosts","variables":{},"extensions":{"persistedQuery":{"version":1,"sha256Hash":"76308e971322b1ece4cdff75185bb61d7139e343"}}} +``` + +It does so by adding a `api/src/lib/trustedDocumentsStore.ts` file for use on the GraphQL api side. + +```ts title=api/src/lib/trustedDocumentsStore.ts +export const store = { + // ... + '76308e971322b1ece4cdff75185bb61d7139e343': + 'query FindPosts { __typename posts { __typename authorId body createdAt id title } }', + // ... +} +``` + +:::note + +See how the `76308e971322b1ece4cdff75185bb61d7139e343` hash ids match? +::: + +Now, when the client requests to make a query for `76308e971322b1ece4cdff75185bb61d7139e343`, the GraphQL server knows to execute the corresponding query associated with that hash. + +This means that because queries are pre-generated and the hash ids ***must match**, there is no way for any un-trusted or ad-hock queries to get executed by the GraphQL server. + +Thus preventing unwanted queries or GraphQl traversal attacks, + +* Configure RedwoodJS to use Trusted Documents via `redwood.toml` +* Configure the GraphQL Server + +## Configure Trusted Documents + +Below are instructions to manually configure Trusted Documents in your RedwoodJS project. + +Alternatively, you can use the `yarn redwood setup graphql trusted-documents` [CLI setup command](../cli-commands.md#setup-graphql-trusted-docs). + + +### Configure redwood.toml + +Setting `trustedDocuments` to true will + +* populate `web/src/graphql` files with the pre-generated documents +* inform Apollo GraphQL client to send the document hashes and not the query itself + +```toml title=redwood.toml +... +[graphql] + trustedDocuments = true +... +``` + +### Configure GraphQL Handler + +As part of GraphQL type and codegen, the `trustedDocumentsStore` is created in `api/src/lib`. + +This is the same information that is created in `web/src/graphql/persisted-documents.json` but wrapped in a `store` that can be easily imported and passed to the GraphQL Handler. + +To enable trusted documents, configure `trustedDocuments` with the store. + +```ts title=api/src/functions/graphql.ts +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +// ... +import { store } from 'src/lib/trustedDocumentsStore' + +export const handler = createGraphQLHandler({ + getCurrentUser, + loggerConfig: { logger, options: {} }, + directives, + sdls, + services, + trustedDocuments: { store }, + onException: () => { + // Disconnect from your database with an unhandled exception. + db.$disconnect() + }, +}) +``` + +If you'd like to customize the message when a query is not permitted, you can set the `persistedQueryOnly` configuration setting in `customErrors`: + +``` + trustedDocuments: { + store, + customErrors: { + persistedQueryOnly: 'This ad-hoc query is not allowed.' + }, + } +``` diff --git a/docs/versioned_docs/version-7.0/how-to/background-worker.md b/docs/versioned_docs/version-7.0/how-to/background-worker.md new file mode 100644 index 000000000000..d9379ffc6bf8 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/background-worker.md @@ -0,0 +1,95 @@ +--- +slug: creating-a-background-worker-with-exec-and-faktory +--- + +# Creating a Background Worker with Exec and Faktory + +In this how to, we'll use Redwood's [exec CLI command](cli-commands.md#exec) to create a background worker using [Faktory](https://contribsys.com/faktory/). + +At a high level, Faktory is a language-agnostic, persistent background-job server. +You can run it [with Docker](https://github.com/contribsys/faktory/wiki/Docker). + +We'll have to have a way of communicating with the server from our Redwood app. +We'll use this [node library](https://github.com/jbielick/faktory_worker_node) to send jobs from our Redwood app to our Faktory server. + +## Creating the Faktory Worker + +Let's create our faktory worker. +First, generate the worker script: + +``` +yarn rw g script faktoryWorker +``` + +We'll start by registering a task called `postSignupTask` in our worker: + +```javascript title="scripts/faktoryWorker.js" +const { postSignupTask } from '$api/src/lib/tasks' +import { logger } from '$api/src/lib/logger' + +import faktory from 'faktory-worker' + +faktory.register('postSignupTask', async (taskArgs) => { + logger.info("running postSignupTask in background worker") + + await postSignupTask(taskArgs) +}) + +export default async ({ _args }) => { + const worker = await faktory + .work({ + url: process.env.FAKTORY_URL, + }) + .catch((error) => { + logger.error(`worker failed to start: ${error}`) + process.exit(1) + }) + + worker.on('fail', ({ _job, error }) => { + logger.error(`worker failed to start: ${error}`) + }) +} +``` + +This won't work yet as we haven't made `postSignupTask` in `api/src/lib/tasks.js` or set `FAKTORY_URL`. +Set `FAKTORY_URL` in `.env` to where your server's running. + +In `postSignupTask`, we may want to perform operations that need to contact external services, such as sending an email. +For this type of work, we typically don't want to hold up the request/response cycle and can perform it in the background: + +```javascript title="api/src/lib/tasks.js" +export const postSignupTask = async ({ userId, emailPayload }) => { + // Send a welcome email to new user. + // You'll have to have an integration with an email service for this to work. + await sendEmailWithTemplate({ + ...emailPayload, + TemplateModel: { + ...emailPayload.TemplateModel, + }, + }) +} +``` + +Once we've created our task, we need to call it in the right place. +For this task, it makes sense to call it right after the user has completed their signup. +This is an example of a Service that'll most likely be called via a GraphQL Mutation. + +```javascript title="src/services/auth/auth.js" +const faktory = require('faktory-worker') + +export const signUp = async ({ input }) => { + // Perform all the signup operations, such as creating an entry in the DB and auth provider + // ... + + // The, send our task to the Faktory server + const client = await faktory.connect() + await client.job('postSignupTask', { ...taskArgs, }).push() + await client.close() +} + +``` + +That's it—we're done! +Run your Faktory server using Docker and run the worker using `yarn rw exec faktoryWorker`. + +If your Faktory server is running and you have set `FAKTORY_URL` correctly, you'll see the server pick up the jobs and your worker process the job. diff --git a/docs/versioned_docs/version-7.0/how-to/build-dashboards-fast-with-tremor.md b/docs/versioned_docs/version-7.0/how-to/build-dashboards-fast-with-tremor.md new file mode 100644 index 000000000000..36a149b5de4b --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/build-dashboards-fast-with-tremor.md @@ -0,0 +1,413 @@ +--- + +description: "Learn how to build dashboards fast using the Tremor React library of data visualization components." +--- + +# Build Dashboards Fast with Tremor + +[Tremor](https://www.tremor.so) is a React library to build dashboards fast. Its modular components are fully open-source, made by data scientists and software engineers with a sweet spot for design. + +In this how to, you'll learn how to + +* setup tremor in a new or existing RedwoodJS app +* use tremor components to layout a new dashboard +* use a chart and card component to visualize static data +* access a GitHub repo to make your dashboard dynamic using an [example RedwoodJS app](https://github.com/redwoodjs/redwoodjs-tremor-dashboard-demo) + +## Live Demo + +See what's possible with a [dynamic dashboard live demo](https://tremor-redwood-dashboard-demo.netlify.app) build with RedwoodJS and Tremor. + +Cool, right? + +Let's get started! + +## Create a New RedwoodJS Project + + +In our terminal, we create a new RedwoodJS project: + +```bash +yarn create redwood-app my-project --ts +``` + +> **Note:** If you already have a RedwoodJS project, you can skip this step and continue with the next section. + +If you do not want a TypeScript project, omit the `--ts` flag. + +> **Important:** RedwoodJS prefers yarn over npm because a project is monorepo with api and web workspaces. You will install tremor and other web packages using yarn workspaces. + + +Use the Redwood setup command to install `TailwindCSS`, its peer dependencies, and create the `tailwind.config.js` file. + + +```bash +yarn rw setup ui tailwindcss +``` + +Install `tremor` in the web workspace from your command line via yarn. + +```bash +yarn workspace web add @tremor/react +``` + +Install `heroicons version 1.0.6` from your command line via yarn. + +```bash +yarn workspace web add @heroicons/react@1.0.6 +``` + +Update tailwind config `web/config/tailwind.config.js` **including the path to the tremor** module. + +```js +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + 'src/**/*.{js,jsx,ts,tsx}', + '../node_modules/@tremor/**/*.{js,ts,jsx,tsx}', + ], + theme: { + extend: {}, + }, + plugins: [], +} +``` + +> **Note:** the path for node_modules is `../` because the web workspace is in a subdirectory of the root directory. + +## Add a Dashboard Page + +Generate a page from your command line. + +```bash +yarn rw g page dashboard / +``` + +You will now have a new page at `web/src/pages/DashboardPage/DashboardPage.tsx` and `web/src/Routes.tsx` will have a new route added at: + +```tsx filename="web/src/Routes.tsx" +// web/src/Routes.tsx` + +<Route path="/" page={DashboardPage} name="dashboard" /> +``` + + +Add simple area chart to the `DashboardPage`: + +```jsx +import { Grid, Col, Card, Title, AreaChart } from '@tremor/react' + +import { MetaTags } from '@redwoodjs/web' + +const DashboardPage = () => { + const chartdata = [ + { + date: 'Jan 22', + SemiAnalysis: 2890, + 'The Pragmatic Engineer': 2338, + }, + { + date: 'Feb 22', + SemiAnalysis: 2756, + 'The Pragmatic Engineer': 2103, + }, + { + date: 'Mar 22', + SemiAnalysis: 3322, + 'The Pragmatic Engineer': 2194, + }, + { + date: 'Apr 22', + SemiAnalysis: 3470, + 'The Pragmatic Engineer': 2108, + }, + { + date: 'May 22', + SemiAnalysis: 3475, + 'The Pragmatic Engineer': 1812, + }, + { + date: 'Jun 22', + SemiAnalysis: 3129, + 'The Pragmatic Engineer': 1726, + }, + ] + + const dataFormatter = (number: number) => { + return '$ ' + Intl.NumberFormat('us').format(number).toString() + } + + return ( + <div className="m-12"> + <MetaTags title="Dashboard" description="Dashboard page" /> + + <h1 className="text-2xl mb-12">Dashboard</h1> + + <Grid numCols={1} numColsSm={2} numColsLg={3} className="my-8 gap-6"> + <Col numColSpan={1} numColSpanLg={3}> + <Card> + <Title>Newsletter revenue over time (USD) + + + + +
+ ) +} + +export default DashboardPage +``` + +Start your RedwoodJS development server + +```bash +yarn rw dev +``` + +Your app will start up and you should see the Dashboard page with an area with two `Newsletter revenue over time (USD)` data series. + +## Add a new component for a KPI Card + +Generate a component for a KPI (Key Performance Indicator) from your command line. + +```bash +yarn rw g component KpiCard +``` + +You will now have a new React component at `/web/src/components/KpiCard/KpiCard.tsx`. + +Update the `KpiCard` component to import the `Card` component and assemble a card using its default +styling. + +To create our first KPI, we import the `Metric` and `Text` component and place them within the card component. We use [Tailwind CSS'](https://tailwindcss.com/docs/utility-first) utilities in the **className** property to reduce the card's width and to center it horizontally. + +To make our KPI card more insightful, we add a `ProgressBar`, providing +contextual details about our metric. To align both text elements, we also import +the `Flex` component. + +```tsx filename="/web/src/components/KpiCard/KpiCard.tsx" +// /web/src/components/KpiCard/KpiCard.tsx + +import { + BadgeDelta, + DeltaType, + Card, + Flex, + Metric, + ProgressBar, + Text, +} from '@tremor/react' + +export type Kpi = { + title: string + metric: string + progress: number + metricTarget: string + delta: string + deltaType: DeltaType +} + +interface Props { + kpi: Kpi +} + +const KpiCard = ({ kpi }: Props) => { + return ( + + +
+ {kpi.title} + {kpi.metric} +
+ {kpi.delta} +
+ + {`${kpi.progress}% (${kpi.metric})`} + {kpi.metricTarget} + + +
+ ) +} + +export default KpiCard +``` + +## Add the KPI Card component to your Dashboard + +Import the `KpiCard` component and `Kpi` type. + +```tsx +import KpiCard from 'src/components/KpiCard/KpiCard' // 👈 Import the KpiCard component +import type { Kpi } from 'src/components/KpiCard/KpiCard' // 👈 Import the Kpi type +``` + +Next, create the `kpi` data collection with sample data + +```tsx + const kpis: Kpi[] = [ // 👈 Create some sample KPI data + { + title: 'Sales', + metric: '$ 12,699', + progress: 15.9, + metricTarget: '$ 80,000', + delta: '13.2%', + deltaType: 'moderateIncrease', + }, + { + title: 'Profit', + metric: '$ 45,564', + progress: 36.5, + metricTarget: '$ 125,000', + delta: '23.9%', + deltaType: 'increase', + }, + { + title: 'Customers', + metric: '1,072', + progress: 53.6, + metricTarget: '2,000', + delta: '10.1%', + deltaType: 'moderateDecrease', + }, + ] +``` + +Then iterate over the collection to add a `KpiCard` inside new `Col` for each KPI data item: + +```tsx + {kpis.map((kpi, i) => ( + + + + ))} +``` + +Your Dashboard page should now look like: + +```tsx +import { Grid, Col, Card, Title, AreaChart } from '@tremor/react' + +import { MetaTags } from '@redwoodjs/web' + +import KpiCard from 'src/components/KpiCard/KpiCard' // 👈 Import the KpiCard component +import type { Kpi } from 'src/components/KpiCard/KpiCard' // 👈 Import the Kpi type + +const DashboardPage = () => { + const chartdata = [ + { + date: 'Jan 22', + SemiAnalysis: 2890, + 'The Pragmatic Engineer': 2338, + }, + { + date: 'Feb 22', + SemiAnalysis: 2756, + 'The Pragmatic Engineer': 2103, + }, + { + date: 'Mar 22', + SemiAnalysis: 3322, + 'The Pragmatic Engineer': 2194, + }, + { + date: 'Apr 22', + SemiAnalysis: 3470, + 'The Pragmatic Engineer': 2108, + }, + { + date: 'May 22', + SemiAnalysis: 3475, + 'The Pragmatic Engineer': 1812, + }, + { + date: 'Jun 22', + SemiAnalysis: 3129, + 'The Pragmatic Engineer': 1726, + }, + ] + + const kpis: Kpi[] = [ // 👈 Create some sample KPI data + { + title: 'Sales', + metric: '$ 12,699', + progress: 15.9, + metricTarget: '$ 80,000', + delta: '13.2%', + deltaType: 'moderateIncrease', + }, + { + title: 'Profit', + metric: '$ 45,564', + progress: 36.5, + metricTarget: '$ 125,000', + delta: '23.9%', + deltaType: 'increase', + }, + { + title: 'Customers', + metric: '1,072', + progress: 53.6, + metricTarget: '2,000', + delta: '10.1%', + deltaType: 'moderateDecrease', + }, + ] + + const dataFormatter = (number: number) => { + return '$ ' + Intl.NumberFormat('us').format(number).toString() + } + + return ( +
+ + +

Dashboard

+ + + {kpis.map((kpi, i) => ( + + + + ))} + + + Newsletter revenue over time (USD) + + + + +
+ ) +} + +export default DashboardPage +``` + +Congratulations! You made your first dashboard. + +## Next Steps + +Now that you have a Dashboard + +1. Explore the other [components](https://www.tremor.so/components) and [blocks](https://www.tremor.so/blocks) that you can use to showcase your data + +2. Learn how to make a [dynamic dashboard using RedwoodJS cells](https://github.com/redwoodjs/redwoodjs-tremor-dashboard-demo) to fetch data from a Prisma-backed database using GraphQL. + +3. See a [dynamic dashboard live demo](https://tremor-redwood-dashboard-demo.netlify.app)! + + diff --git a/docs/versioned_docs/version-7.0/how-to/custom-function.md b/docs/versioned_docs/version-7.0/how-to/custom-function.md new file mode 100644 index 000000000000..a12d41176294 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/custom-function.md @@ -0,0 +1,211 @@ +# Custom Function + +You may not have noticed, but when you're making GraphQL calls, you're actually calling a [Function](https://docs.netlify.com/functions/overview/) (not to be confused with a Javascript `function`) on the API side. Capital-F Functions are meant to be deployed to serverless providers like AWS Lambda. (We're using Netlify's nomenclature when we call them Functions.) + + + + + +Did you know you can create your own Functions that do whatever you want? Normally we recommend that if you have custom behavior, even if it's unrelated to the database, you make it available as a GraphQL field so that your entire application has one, unified API interface. But rules were meant to be broken! + +How about a custom Function that returns the timestamp from the server? + +## Creating a Function + +Step one is to actually create the custom Function. Naturally, we have a generator for that. Let's call our custom Function "serverTime": + +```bash +yarn rw generate function serverTime +``` + +That creates a stub you can test out right away. Make sure your dev server is running (`yarn rw dev`), then point your browser to `http://localhost:8910/.redwood/functions/serverTime`. + +![serverTime Function output](https://user-images.githubusercontent.com/32992335/107839683-609c2300-6d62-11eb-93d7-ff9c1bfb0ff2.png) + +### Interlude: `apiUrl` + +The `.redwood/functions` bit in the link you pointed your browser to is what's called the `apiUrl`. You can configure it in your `redwood.toml`: + +```toml {5} +# redwood.toml + +[web] + port = 8910 + apiUrl = "/.redwood/functions" +``` + +After you setup a deploy (via `yarn rw setup deploy `), it'll change to something more appropriate, like `.netlify/functions` in Netlify's case. + + + + +Why do we need `apiUrl`? Well, when you go to deploy, your serverless functions won't be in the same place as your app; they'll be somewhere else. Sending requests to the `apiUrl` let's your provider handle the hard work of figuring out where they actually are, and making sure that your app can actually access them. + +If you were to try and fetch `http://localhost:8911/serverTime` from the web side, you'd run into an error you'll get to know quite well: CORS. + +#### Interludeception: CORS + +Time for an interlude within an interlude, because that's how you'll always feel when it comes to CORS: you were doing something else, and then `No 'Access-Control-Allow-Origin' header is present on the requested resource`. Now you're doing CORS. + +If you don't know much about CORS, it's something you probably should know some about at some point. CORS stands for Cross Origin Resource Sharing; in a nutshell, by default, browsers aren't allowed to access resources outside their own domain. So, requests from `localhost:8910` can only access resources at `localhost:8910`. Since all your serverless functions are at `localhost:8911`, doing something like + +```javascript +// the `http://` is important! +const serverTime = await fetch('http://localhost:8911/serverTime') +``` + +from the web side would give you an error like: + +``` +Access to fetch at 'http://localhost:8911/serverTime' from origin 'http://localhost:8910' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. +``` + +We could set the headers for `serverTime` to allow requests from any origin... but maybe a better idea would be to never request `8911` from `8910` in the first place. Hence the `apiUrl`! We're making a request to `8910/.redwood/functions/serverTime`—still the same domain—but [Vite](https://github.com/redwoodjs/redwood/blob/main/packages/vite/src/index.ts#L119) proxies them to `localhost:8911/serverTime` for us. + +## Getting the Time + +Ok—back to our custom Function. Let's get the current time and return it in the body of our handler: + +```javascript {4} title="api/src/functions/serverTime.js" +export const handler = async (event, context) => { + return { + statusCode: 200, + body: new Date() + } +} +``` + +![Time output screenshot](https://user-images.githubusercontent.com/300/81352089-87faec80-907a-11ea-96f7-bb05345a86d7.png) + +> Here we're using a [Chrome extension](https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh) that prettifies data that could be identified as JSON. In this case, the date is wrapped in quotes, which is valid JSON, so the extension kicks in. + +How about we make sure the response is a JSON object: + +```javascript {4-5} title="api/src/functions/serverTime.js" +export const handler = async (event, context) => { + return { + statusCode: 200, + headers: { 'Content-Type': 'application/json ' }, + body: JSON.stringify({ time: new Date() }), + } +} +``` + +![JSON time output screenshot](https://user-images.githubusercontent.com/300/81352131-9fd27080-907a-11ea-8db0-6308a4c48b5f.png) + +> Note that Node.js doesn't have ES module support (yet), but we use Babel to transpile during the build phase so you can still use `import` syntax for external packages in your Functions. + +### Bonus: Filtering by Request Method + +Since you are most definitely an elite hacker, you probably noticed that our new endpoint is available via all HTTP methods: **GET**, **POST**, **PATCH**, etc. In the spirit of [REST](https://www.codecademy.com/articles/what-is-rest), this endpoint should really only be accessible via a **GET**. + +> Again, because you're an elite hacker you definitely said "excuse me, actually this endpoint should respond to **HEAD** and **OPTIONS** methods as well." Okay fine, but this is meant to be a quick introduction, cut us some slack! Why don't you write a recipe for us and open a PR, smartypants?? + +Inspecting the `event` argument being sent to `handler` gets us all kinds of juicy details on this request: + +```javascript {2} title="api/src/functions/serverTime.js" +export const handler = async (event, context) => { + console.log(event) + return { + statusCode: 200, + headers: { 'Content-Type': 'application/json ' }, + body: JSON.stringify({ time: new Date() }), + } +} +``` + +Take a look in the terminal window where you're running `yarn rw dev` to see the output: + +```json +{ + "httpMethod": "GET", + "headers": { + "host": "localhost:8911", + "connection": "keep-alive", + "cache-control": "max-age=0", + "dnt": "1", + "upgrade-insecure-requests": "1", + "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36", + "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng;q=0.8,application/signed-exchange;v=b3;q=0.9", + "sec-fetch-site": "none", + "sec-fetch-mode": "navigate", + "sec-fetch-user": "?1", + "sec-fetch-dest": "document", + "accept-encoding": "gzip, deflate, br", + "accept-language": "en-US,en;q=0.9" + }, + "path": "/serverTime", + "queryStringParameters": {}, + "body": "", + "isBase64Encoded": false +} +``` + +That first entry, `httpMethod`, is what we want. Let's check the method and return a 404 if it isn't a **GET**: + +```javascript {2-4} title="api/src/functions/serverTime.js" +export const handler = async (event, context) => { + if (event.httpMethod !== 'GET') { + return { statusCode: 404 } + } + + return { + statusCode: 200, + headers: { 'Content-Type': 'application/json ' }, + body: JSON.stringify({ time: new Date() }), + } +} +``` + +It's tough to test other HTTP methods in the browser without installing an extension, but we can do it from the command line with curl: + +```bash +$ curl -XPOST http://localhost:8911/serverTime -I +``` + +You should see: + +```bash +HTTP/1.1 404 Not Found +X-Powered-By: Express +Date: Thu, 07 May 2020 22:33:55 GMT +Connection: keep-alive +Content-Length: 0 +``` + +And just to be sure, let's make that same request with a **GET** (curl's default method): + +```bash +$ curl http://localhost:8911/serverTime +{"time":"2020-05-07T22:36:12.973Z"} +``` + +> If you leave the `-I` flag on then curl will default to a HEAD request! Okay fine, you were right elite hacker! + +### Super Bonus: Callback Hell + +Redwood uses the async/await version of Function handlers, but you can also use the callback version. In that case your Function would look something like: + +```javascript {1,3,6,10} title="api/src/functions/serverTime.js" +export const handler = (event, context, callback) => { + if (event.httpMethod !== 'GET') { + callback(null, { statusCode: 404 }) + } + + callback(null, { + statusCode: 200, + headers: { 'Content-Type': 'application/json ' }, + body: JSON.stringify({ time: new Date() }), + }) +} +``` + +Yeah, kinda gross. What's with that `null` as the first parameter? That's used if your handler needs to return an error. More on callback-based handlers can be found in [Netlify's docs](https://docs.netlify.com/functions/build-with-javascript/#format). + +The callback syntax may not be _too_ bad for this simple example. But, if you find yourself dealing with Promises inside your handler, and you choose to go use callback syntax, you may want to lie down and rethink the life choices that brought you to this moment. If you still want to use callbacks you had better hope that time travel is invented by the time this code goes into production, so you can go back in time and prevent yourself from ruining your own life. You will, of course, fail because you already chose to use callbacks the first time so you must have been unsuccessful in stopping yourself when you went back. + +Trust us, it's probably best to just stick with async/await instead of tampering with spacetime. + +### Conclusion + +We hope this gave you enough info to get started with custom Functions, and that you learned a little something about the futility of trying to change the past. Now go out and build something awesome! diff --git a/docs/versioned_docs/version-7.0/how-to/dbauth-passwordless.md b/docs/versioned_docs/version-7.0/how-to/dbauth-passwordless.md new file mode 100644 index 000000000000..e07e0bcd4c05 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/dbauth-passwordless.md @@ -0,0 +1,640 @@ +# Setting up dbAuth to be passwordless + +Security is really important. Sometimes you don't want to integrate with a third-party authentication services. Whatever the reason, Redwood has you covered with Redwood's dbAuth to authenticate users. This is a great option. + +One thing though is now you're collecting the user's login and password. If you'd like to not collect that, an alternative is to generate a token in place of the password. The only data needed for passwordless is the users email address. + +In this how-to I'll show you how to set up dbAuth to be passwordless, you'll still need to set up a way to [send emails](../how-to/sending-emails.md), but there's plenty of ways to do that. + +## Background + +Let me start by sharing a little bit about how passwordless works. +### What is a passwordless authentication method? +A passwordless authentication method is a method of authentication where the user is not required to enter a password. Instead, the user is sent a link to their email address. When they click the link, they are logged in. + +Passwordless uses a token that is time-sensitive. So instead of storing a password, we store a token, and an expiration. + +That token is generated randomly and is stored in the database. +## How to do it +### 1. Modify the Prisma schema +First, we need to modify the Prisma schema. + +If you followed the tutorial you'll have a `User` model. Here's is what it looks like with after the changes. + +```jsx {4-6} +model User { + id Int @id @default(autoincrement()) + name String? + email String @unique + loginToken String + loginTokenExpiresAt DateTime? + salt String? +} +``` + +Make note of the optional `salt` field. + +Once you've made the changes, you'll need to migrate your database. + +```bash +yarn rw prisma migrate dev +``` + +### 2. Setting up the generateToken function +Next, we need to create a function that will generate a token and an expiration date. + +If you followed the tutorial, you might not have a `/api/src/services/users/users.js` file. If that's the case, you can create it with the following command using your terminal. + +```bash +yarn rw g service users +``` + +Now that you have the file, let's add the `generateToken` function. + +```javascript {21} title="/api/src/services/users/users.js" +// add this import to the top of the file +import CryptoJS from 'crypto-js' +// add this to the bottom of the file +export const generateLoginToken = async ({ email }) => { + try { + // look up if the user exists + let lookupUser = await db.user.findFirst({ where: { email } }) + if (!lookupUser) return { message: 'Login Request received' } + // here we're going to generate a random password of 6 numbers + let randomNumber = (() => { + let random = CryptoJS.lib.WordArray.random(6) + let randomString = random.toString() + let sixDigitNumber = randomString.replace(/\D/g, '') + if (sixDigitNumber.length < 6) { + sixDigitNumber = sixDigitNumber.padStart(6, '0') + } + if (sixDigitNumber.length > 6) { + sixDigitNumber = sixDigitNumber.slice(0, 6) + } + return sixDigitNumber.toString() + })() + console.log({ randomNumber }) // email the user this number + let salt = CryptoJS.lib.WordArray.random(30) + let loginToken = CryptoJS.PBKDF2(randomNumber, salt, { + keySize: 256 / 32, + }).toString() + // now we'll update the user with the new salt and loginToken + let loginTokenExpiresAt = new Date() + loginTokenExpiresAt.setMinutes(loginTokenExpiresAt.getMinutes() + 15) + let data = { + salt, + loginToken, + loginTokenExpiresAt, + } + await db.user.update({ + where: { id: lookupUser.id }, + data + }) + + return { message: 'Login Request received' } + } catch (error) { + console.log({ error }) + throw new UserInputError(error.message) + } +} + +``` +### 3. Add generateToken to the SDL and secure loginToken + +In addition to the new function, we need to add it to the sdl file. While we're here let's also ensure we do not expose the loginToken. This file may be users.sdl.js or users.sdl.ts depending on if you set up Redwood to use JavaScript or TypeScript. + +```javascript {21} title="/api/src/graphql/users.sdl.js" +export const schema = gql` + type User { + id: Int! + name: String + email: String! + } + input CreateUserInput { + name: String + email: String! + } + input UpdateUserInput { + name: String + email: String! + } + type userTokenResponse { + message: String! + } + type Mutation { + createUser(input: CreateUserInput!): User! @requireAuth + updateUser(id: Int!, input: UpdateUserInput!): User! @requireAuth + deleteUser(id: Int!): User! @requireAuth + generateToken(email: String!): userTokenResponse! @skipAuth + } +``` + +### 4. Modify the auth function + +We need to consider how we want to limit the authentication. I've added a expiration date to the token, so we'll need to check that. + +```js title="/api/src/functions/auth.js" +// ... other functions +const loginOptions = { + handler: async (user) =>{ + let loginExpiresAt = new Date(user?.loginTokenExpiresAt) + let now = new Date() + if (loginExpiresAt < now) throw 'Login token expired' + // if the user logged in with a token we need to break + // the token. We'll do this by clearing the salt and + // expiration + // this will make the token a one-time use + db.user.update({ + where: { id: user.id }, + data: { + loginTokenExpiresAt: null, + salt: null, + } + }) + return user + }, + errors: { + // here I modified the following, feel free to modify the other messages + incorrectPassword: 'Incorrect token', + } +} +// we also need to update the signupOptions +const signupOptions = { + handler: ({ username, hashedPassword, userAttributes }) => { + return db.user.create({ + data: { + email: username, + loginToken: hashedPassword, + salt: null, + name: userAttributes.name, + } + }) + } + // ... othter stuff +} +// and last we need to update the authFields +const authHandler = new DbAuthHandler(event, context, { + db: db, + authModelAccessor: 'user', + authFields: { + id: 'id', + hashedPassword: 'loginToken', + salt: 'salt', + }, + // ... other stuff +}) +``` + +As of right now, nothing works, lets fix that. + +### 5. Making the login form + +We need to make a form that will allow the user to enter their email address. + +Let's start with the generator. + +```bash +yarn rw g component LoginPasswordlessForm +``` + +This created a component in `web/src/components/LoginPasswordlessForm/LoginPasswordlessForm.js`. Let's update it. + +```jsx title="/web/src/components/LoginPasswordlessForm/LoginPasswordlessForm.js" +import { + Form, + Label, + TextField, + PasswordField, + Submit, + FieldError, +} from '@redwoodjs/forms' +import { navigate, routes, Link } from '@redwoodjs/router' +import { MetaTags, useMutation } from '@redwoodjs/web' +import { Toaster, toast } from '@redwoodjs/web/toast' +const GENERATE_LOGIN_TOKEN = gql` + mutation generateLoginToken($email: String!) { + generateLoginToken(email: $email) { + message + } + } +` + +const LoginPasswordlessForm = ({ setWaitingForCode, setEmail }) => { + const [generateLoginToken] = useMutation( + GENERATE_LOGIN_TOKEN, + { + onCompleted: () => { + toast.success('Check your email for a login link') + setWaitingForCode(true) + }, + } + ) + const onSubmit = async (data) => { + setEmail(data.email) + const response = await generateLoginToken({ + variables: { email: data.email }, + fetchPolicy: 'no-cache', + }) + if (response.error) { + toast.error(response.error) + } + } + + return ( + <> + +
+ +
+
+
+

Login

+
+ +
+
+ + + + + +
+ + Send Token + +
+ +
+
+
+
+ Don't have an account?{' '} + + Sign up! + +
+
+
+ + ) +} + +export default LoginPasswordlessForm +``` + +We aren't rendering it anywhere yet, but when we do it will look like this. + +![image](https://user-images.githubusercontent.com/638764/220204773-6c6aaf86-680f-4e2c-877c-3876070254d3.png) + +### 6. Making the login with token form + +Now we also need a form that will accept the code that was sent to the user. + +```bash +yarn rw g component LoginPasswordlessTokenForm +``` + +```jsx title="/web/src/components/LoginPasswordlessTokenForm/LoginPasswordlessTokenForm.js" +import { useEffect, useRef } from 'react' + +import { + Form, + Label, + TextField, + PasswordField, + Submit, + FieldError, +} from '@redwoodjs/forms' +import { navigate, routes, Link } from '@redwoodjs/router' +import { MetaTags, useMutation } from '@redwoodjs/web' +import { Toaster, toast } from '@redwoodjs/web/toast' + +import { useAuth } from 'src/auth' + +const LoginPasswordlessTokenForm = ({ setWaitingForCode, email, code }) => { + const { isAuthenticated, logIn } = useAuth() + useEffect(() => { + if (isAuthenticated) { + navigate(routes.home()) + } + if (email && code) { + console.log('email', email) + logIn({ username: email, password: code }) + } + }, [isAuthenticated, email, code, logIn]) + const onSubmit = async (data) => { + // login expects a username and password for dbauth + // so we are passing them. + const response = await logIn({ username: email, password: data.loginToken }) + if (response.error) { + toast.error(response.error) + } + } + + return ( + <> + +
+ +
+
+
+

+ Login with Token +

+
+ +
+
+
+ + + + + + + + +
+ Login +
+
+ +
+ +
+
+
+
+ Don't have an account?{' '} + + Sign up! + +
+
+
+ + ) +} + +export default LoginPasswordlessTokenForm +``` + +This will be the form loaded after the email is entered. Again, we aren't rendering it anywhere, but we will in the next step. + +Here's a preview of the form. + +![image](https://user-images.githubusercontent.com/638764/220212316-bcc5cde6-53cf-4a65-ab54-0e2763da924a.png) + +### 7. Making the new login page +Now each of those forms are controlled with the props we pass to them. We will make a new page that will control the state of the forms. + +```bash +yarn rw g page LoginPasswordless +``` + +```jsx title="/web/pages/LoginPasswordlessPage/LoginPasswordlessPage.js" +import { useEffect, useState } from 'react' + +import { useLocation } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +import LoginPasswordlessForm from 'src/components/LoginPasswordlessForm/LoginPasswordlessForm' +import LoginPasswordlessTokenForm from 'src/components/LoginPasswordlessTokenForm/LoginPasswordlessTokenForm' + +const LoginPasswordlessPage = () => { + let [waitingForCode, setWaitingForCode] = useState(false) + let [email, setEmail] = useState() + let [code, setCode] = useState() + // onload set email from query string + let { search } = useLocation() + useEffect(() => { + let params = new URLSearchParams(search) + // decode magic param + let magic = params.get('magic') + let decoded = window.atob(params.get('magic')) + // if magic param exists, set email and waitingForCode + if (magic) { + // decoded is email:code + let [email, code] = decoded.split(':') + setEmail(email) + setCode(code) + setWaitingForCode(true) + } + }, [search]) + + return ( + <> + + + {!waitingForCode && ( + + )} + {waitingForCode && ( + + )} + + ) +} + +export default LoginPasswordlessPage +``` +### 8. Updating the signup page +We need to update the signup page to just take the email. + +```jsx title="/web/src/pages/SignupPage/SignupPage.js" +import { useRef } from 'react' +import { useEffect } from 'react' + +import { + Form, + Label, + TextField, + PasswordField, + FieldError, + Submit, +} from '@redwoodjs/forms' +import { Link, navigate, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' +import { toast, Toaster } from '@redwoodjs/web/toast' + +import { useAuth } from 'src/auth' + +const SignupPage = () => { + const { isAuthenticated, signUp } = useAuth() + let randomString = (length) { + if(typeof length == undefined) length = 32; + const characterSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + const array = new Uint8Array(length); + window.crypto.getRandomValues(array); + const returnString = Array.from(array) + .map((value) => characterSet[value % characterSet.length]) + .join(''); + return returnString; + } + useEffect(() => { + if (isAuthenticated) { + navigate(routes.home()) + } + }, [isAuthenticated]) + + // focus on username box on page load + const emailRef = useRef(null) + useEffect(() => { + emailRef.current?.focus() + }, []) + + const onSubmit = async (data) => { + const response = await signUp({ + username: data.email, + password: randomString(), // this is a random string and is not important + }) + + if (response.message) { + toast(response.message) + } else if (response.error) { + toast.error(response.error) + } else { + // user is signed in automatically + toast.success('Welcome!') + } + } + + return ( + <> + + +
+ +
+
+
+

Signup

+
+ +
+
+
+ + + + +
+ + Sign Up + +
+ +
+
+
+
+ Already have an account?{' '} + + Log in! + +
+
+
+ + ) +} + +export default SignupPage +``` + +You should see the changes and it should look like this! + +![image](https://user-images.githubusercontent.com/638764/220204883-800829ab-e037-41e1-a2da-d47923c4d20c.png) + + +### 9. Updating the routes +The last thing we need to to do is update the routes to use the new page. + +```jsx title="/web/src/Routes.js" +const Routes = () => { + // other stuff + return ( + + + + {/*other routes*/} + + ) +} +``` +## You did it! + +Now that you did you can rest easy. Your authentication relies on just your database but also, if some bad actor got access to it the only user data you have is really the email address. diff --git a/docs/versioned_docs/version-7.0/how-to/disable-api-database.md b/docs/versioned_docs/version-7.0/how-to/disable-api-database.md new file mode 100644 index 000000000000..39e380dbb914 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/disable-api-database.md @@ -0,0 +1,416 @@ +# Disable API/Database + +Did you know you could deploy your Redwood app without an API layer or database? Maybe you have a simple static site that doesn't need any external data, or you only need to digest a simple JSON data structure that changes infrequently. So infrequently that changing the data can mean just editing a plain text file and deploying your site again. + +Let's take a look at these scenarios and how you can get them working with Redwood. + +## Assumptions + +We assume you're deploying to Netlify in this recipe. Your mileage may vary for other providers or a custom build process. + +## Remove the /api directory + +Just delete the `/api` directory altogether and your app will still work in dev mode: + +```bash +rm -rf api +``` + +You can also run `yarn install` to cleanup those packages that aren't used any more. + +## Disable Prisma functionality +The `--prisma` and `--dm` flags are set to `true` by default and need to be set to `false` in the build command. + +```toml {4} +[build] + command = "yarn rw deploy netlify --prisma=false --dm=false" +``` + +While omitting these flags won't prevent you from developing the site in a local environment, not setting them to `false` will lead to a `'No Prisma Schema found'` error when you attempt to deploy your site to a production environment, at least when Netlify is the deployment target. + +## Turn off the API build process + +When it comes time to deploy, we need to let Netlify know that it shouldn't bother trying to look for any code to turn into AWS Lambda functions. + +Open up `netlify.toml`. We're going to comment out one line: + +```toml {4} +[build] + command = "yarn rw deploy netlify --prisma=false --dm=false" + publish = "web/dist" + # functions = "api/dist/functions" + +[dev] + command = "yarn rw dev" + +[[redirects]] + from = "/*" + to = "/index.html" + status = 200 +``` + +If you just have a static site that doesn't need any data access at all (even our simple JSON file discussed above) then you're done! Keep reading to see how you can access a local data store that we'll deploy along with the web side of our app. + +## Local JSON Fetch + +Let's display a graph of the weather forecast for the week of Jan 30, 2017 in Moscow, Russia. If this seems like a strangely specific scenario it's because that's the example data we can quickly get from the [OpenWeather API](https://openweathermap.org/forecast16). Get the JSON data [here](https://samples.openweathermap.org/data/2.5/forecast/daily?id=524901&appid=b1b15e88fa797225412429c1c50c122a1) or copy the following and save it to a file at `web/public/forecast.json`: + +```json +{ + "cod": "200", + "message": 0, + "city": { + "geoname_id": 524901, + "name": "Moscow", + "lat": 55.7522, + "lon": 37.6156, + "country": "RU", + "iso2": "RU", + "type": "city", + "population": 0 + }, + "cnt": 7, + "list": [ + { + "dt": 1485766800, + "temp": { + "day": 262.65, + "min": 261.41, + "max": 262.65, + "night": 261.41, + "eve": 262.65, + "morn": 262.65 + }, + "pressure": 1024.53, + "humidity": 76, + "weather": [ + { + "id": 800, + "main": "Clear", + "description": "sky is clear", + "icon": "01d" + } + ], + "speed": 4.57, + "deg": 225, + "clouds": 0, + "snow": 0.01 + }, + { + "dt": 1485853200, + "temp": { + "day": 262.31, + "min": 260.98, + "max": 265.44, + "night": 265.44, + "eve": 264.18, + "morn": 261.46 + }, + "pressure": 1018.1, + "humidity": 91, + "weather": [ + { + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" + } + ], + "speed": 4.1, + "deg": 249, + "clouds": 88, + "snow": 1.44 + }, + { + "dt": 1485939600, + "temp": { + "day": 270.27, + "min": 266.9, + "max": 270.59, + "night": 268.06, + "eve": 269.66, + "morn": 266.9 + }, + "pressure": 1010.85, + "humidity": 92, + "weather": [ + { + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" + } + ], + "speed": 4.53, + "deg": 298, + "clouds": 64, + "snow": 0.92 + }, + { + "dt": 1486026000, + "temp": { + "day": 263.46, + "min": 255.19, + "max": 264.02, + "night": 255.59, + "eve": 259.68, + "morn": 263.38 + }, + "pressure": 1019.32, + "humidity": 84, + "weather": [ + { + "id": 800, + "main": "Clear", + "description": "sky is clear", + "icon": "01d" + } + ], + "speed": 3.06, + "deg": 344, + "clouds": 0 + }, + { + "dt": 1486112400, + "temp": { + "day": 265.69, + "min": 256.55, + "max": 266, + "night": 256.55, + "eve": 260.09, + "morn": 266 + }, + "pressure": 1012.2, + "humidity": 0, + "weather": [ + { + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" + } + ], + "speed": 7.35, + "deg": 24, + "clouds": 45, + "snow": 0.21 + }, + { + "dt": 1486198800, + "temp": { + "day": 259.95, + "min": 254.73, + "max": 259.95, + "night": 257.13, + "eve": 254.73, + "morn": 257.02 + }, + "pressure": 1029.5, + "humidity": 0, + "weather": [ + { + "id": 800, + "main": "Clear", + "description": "sky is clear", + "icon": "01d" + } + ], + "speed": 2.6, + "deg": 331, + "clouds": 29 + }, + { + "dt": 1486285200, + "temp": { + "day": 263.13, + "min": 259.11, + "max": 263.13, + "night": 262.01, + "eve": 261.32, + "morn": 259.11 + }, + "pressure": 1023.21, + "humidity": 0, + "weather": [ + { + "id": 600, + "main": "Snow", + "description": "light snow", + "icon": "13d" + } + ], + "speed": 5.33, + "deg": 234, + "clouds": 46, + "snow": 0.04 + } + ] +} +``` + +Any files that you put in `web/public` will be served by Netlify, skipping any build process. + +Next let's have a React component get that data remotely and then display it on a page. For this example we'll generate a homepage: + +```bash +yarn rw generate page home / +``` + +Next we'll use the browser's builtin `fetch()` function to get the data and then we'll just dump it to the screen to make sure it works: + +```jsx +import { useState, useEffect } from 'react' + +const HomePage = () => { + const [forecast, setForecast] = useState({}) + + useEffect(() => { + fetch('/forecast.json') + .then((response) => response.json()) + .then((json) => setForecast(json)) + }, []) + + return
{JSON.stringify(forecast)}
+} + +export default HomePage +``` + +We use `useState` to keep track of the forecast data and `useEffect` to actually trigger the loading of the data when the component mounts. Now we just need a graph! Let's add [chart.js](https://www.chartjs.org/) for some simple graphing: + +```bash +yarn workspace web add chart.js +``` + +Let's generate a sample graph: + +```jsx {1,2,5,15-32,34} +import { useState, useEffect, useRef } from 'react' +import Chart from 'chart.js' + +const HomePage = () => { + const chartRef = useRef() + + const [forecast, setForecast] = useState({}) + + useEffect(() => { + fetch('/forecast.json') + .then((response) => response.json()) + .then((json) => setForecast(json)) + }, []) + + useEffect(() => { + new Chart(chartRef.current.getContext('2d'), { + type: 'line', + data: { + labels: ['Jan', 'Feb', 'March'], + datasets: [ + { + label: 'High', + data: [86, 67, 91], + }, + { + label: 'Low', + data: [45, 43, 55], + }, + ], + }, + }) + }, [forecast]) + + return +} + +export default HomePage +``` + +![image](https://user-images.githubusercontent.com/300/80657460-7beaab80-8a38-11ea-886d-17040ef8573c.png) + +If that looks good then all that's left is to transform the weather data JSON into the format that Chart.js wants. Here's the final `HomePage` including a couple of functions to transform our data and display the dates properly: + +```jsx +import { useState, useEffect, useRef } from 'react' +import Chart from 'chart.js' + +const MONTHS = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', +] + +const getDates = (forecast) => { + return forecast.list.map((entry) => { + const date = new Date(0) + date.setUTCSeconds(entry.dt) + return `${MONTHS[date.getMonth()]} ${date.getDate()}` + }) +} + +const getTemps = (forecast) => { + return [ + { + label: 'High', + data: forecast.list.map((entry) => kelvinToFahrenheit(entry.temp.max)), + borderColor: 'red', + backgroundColor: 'transparent', + }, + { + label: 'Low', + data: forecast.list.map((entry) => kelvinToFahrenheit(entry.temp.min)), + borderColor: 'blue', + backgroundColor: 'transparent', + }, + ] +} + +const kelvinToFahrenheit = (temp) => { + return ((temp - 273.15) * 9) / 5 + 32 +} + +const HomePage = () => { + const chartRef = useRef() + + const [forecast, setForecast] = useState(null) + + useEffect(() => { + fetch('/forecast.json') + .then((response) => response.json()) + .then((json) => setForecast(json)) + }, []) + + useEffect(() => { + if (forecast) { + new Chart(chartRef.current.getContext('2d'), { + type: 'line', + data: { + labels: getDates(forecast), + datasets: getTemps(forecast), + }, + }) + } + }, [forecast]) + + return +} + +export default HomePage +``` + +If you got all of that right then you should see: + +![Chart screenshot](https://user-images.githubusercontent.com/300/80656934-32e62780-8a37-11ea-963e-0b227d7fe1df.png) + +All that's left is to deploy it to the world! + +## Wrapping Up + +Although we think Redwood will make app developers' lives easier when they need to talk to a database or third party API, it can be used with static sites and even hybrid sites like this when you want to digest and display data, but from a static file at your own URL. diff --git a/docs/versioned_docs/version-7.0/how-to/file-uploads.md b/docs/versioned_docs/version-7.0/how-to/file-uploads.md new file mode 100644 index 000000000000..bfdce858512d --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/file-uploads.md @@ -0,0 +1,508 @@ +# File Uploads + +As you've probably heard, Redwood thinks the future is serverless. This concept introduces some interesting problems you might not have had to worry about in the past. For example, where do files go when you upload them? There's no server! Like many tasks you may have done [yourself](tutorial/chapter4/authentication.md) in the past, this is another job that we can farm out to a third-party service. + +## The Service + +There are many services out there that handle uploading files and serving them from a CDN. Two of the big ones are [Cloudinary](https://cloudinary.com) and [Filestack](https://filestack.com). We're going to demo a Filestack integration here because we've found it easy to integrate. In addition to storing your uploads and making them available via a CDN, they also offer on-the-fly image transformations so that even if someone uploads a Retina-ready 5000px wide headshot, you can shrink it down and only serve a 100px version for their avatar in the upper right corner of your site. You save bandwidth and transfer costs. + +We're going to sign up for a free plan which gives us 100 uploads a month, 1000 transformations (like resizing an image), 1GB of bandwidth, and 0.5GB of storage. That's more than enough for this demo. (And maybe even a low-traffic production site!) + +Head over to https://dev.filestack.com/signup/free/ and sign up. Be sure to use a real email address because they're going to send you a confirmation email before they let you log in. Once you verify your email, you'll be dropped on your dashboard where your API key will be shown in the upper right: + +![New image scaffold](https://user-images.githubusercontent.com/300/82616735-ec41a400-9b82-11ea-9566-f96089e35e52.png) + +Copy that (or at least keep the tab open) because we're going to need it in a minute. (I already changed that key so don't bother trying to steal it!) + +That's it on the Filestack side; on to the application. + +## The App + +Let's create a very simple DAM (Digital Asset Manager) that lets users upload and catalogue images. They'll be able to click the thumbnail to open a full-size version. + +Create a new Redwood app: + +```bash +yarn create redwood-app uploader +cd uploader +``` + +The first thing we'll do is create an environment variable to hold our Filestack API key. This is a best practice so that the key isn't living in our repository for prying eyes to see. Add the key to the `.env` file in the root of our app: + +```bash +REDWOOD_ENV_FILESTACK_API_KEY=AM18i8xV4QpoiGwetoTWd +``` + +> We're prefixing with `REDWOOD_ENV_` here to tell Vite that we want it to replace this variables with its actual value as it's processing pages and statically generating them. Otherwise our generated pages would still contain something like `process.env.FILESTACK_API_KEY`, which wouldn't exist when the pages are static and being served from a CDN. + +Now we can start our development server: + +```bash +yarn rw dev +``` + +### The Database + +We'll create a single model to store our image data: + +```javascript title="api/db/schema.prisma" +model Image { + id Int @id @default(autoincrement()) + title String + url String +} +``` + +`title` will be the user-supplied name for this asset and `url` will contain the public URL that Filestack creates after an upload. + +Create a migration to update the database; when prompted, name it "add image": + +```bash +yarn rw prisma migrate dev +``` + +To make our lives easier, let's scaffold the screens necessary to create/update/delete an image, then we'll worry about adding the uploader: + +```bash +yarn rw generate scaffold image +``` + +Now head to http://localhost:8910/images/new and let's figure this out! + +![New image scaffold](https://user-images.githubusercontent.com/300/82694608-653f0b00-9c18-11ea-8003-4dc4aeac7b86.png) + +## The Uploader + +Filestack has a couple of [React components](https://github.com/filestack/filestack-react) that handle all the uploading for us. Let's add the package: + +```bash +yarn workspace web add filestack-react +``` + +We want the uploader on our scaffolded form, so let's head over to `ImageForm`, import Filestack's inline picker, and try replacing the **Url** input with it: + +```jsx {9,49} title="web/src/components/ImageForm/ImageForm.js" +import { + Form, + FormError, + FieldError, + Label, + TextField, + Submit, +} from '@redwoodjs/forms' +import { PickerInline } from 'filestack-react' + +const formatDatetime = (value) => { + if (value) { + return value.replace(/:\d{2}\.\d{3}\w/, '') + } +} + +const ImageForm = (props) => { + const onSubmit = (data) => { + props.onSave(data, props?.image?.id) + } + + return ( +
+
+ + + + + + + + + +
+ + Save + +
+ +
+ ) +} + +export default ImageForm +``` + +We now have a picker with all kinds of options, like picking a local file, providing a URL, and even grabbing a file from Facebook, Instagram, or Google Drive. Not bad! + +![Filestack picker](https://user-images.githubusercontent.com/32992335/133859676-4086a4b9-8112-4a19-a4fe-5663388aafc0.png) + +You can even try uploading an image to make sure it works: + +![Upload](https://user-images.githubusercontent.com/300/82618035-bb636e00-9b86-11ea-9401-61b8c989f43c.png) + +> Make sure you click the **Upload** button that appears after picking your file. + +If you go over to the Filestack dashboard, you'll see that we've uploaded an image: + +![Filestack dashboard](https://user-images.githubusercontent.com/300/82618057-ccac7a80-9b86-11ea-9cd8-7a9e80a5a20f.png) + +But that doesn't help us attach anything to our database record. Let's do that. + +## The Data + +Let's see what's going on when an upload completes. The Filestack picker takes an `onSuccess` prop with a function to call when complete: + +```jsx {8-10,16} title="web/src/components/ImageForm/ImageForm.js" +// imports and stuff... + +const ImageForm = (props) => { + const onSubmit = (data) => { + props.onSave(data, props?.image?.id) + } + + const onFileUpload = (response) => { + console.info(response) + } + + // form stuff... + + +``` + +Well lookie here: + +![Uploader response](https://user-images.githubusercontent.com/300/82618071-ddf58700-9b86-11ea-9626-e093b4c8d853.png) + +`filesUploaded[0].url` seems to be exactly what we need—the public URL to the image that was just uploaded. Excellent! How about we use a little state to track that for us so it's available when we submit our form: + +```jsx {10,19,26} title="web/src/components/ImageForm/ImageForm.js" +import { + Form, + FormError, + FieldError, + Label, + TextField, + Submit, +} from '@redwoodjs/forms' +import { PickerInline } from 'filestack-react' +import { useState } from 'react' + +const formatDatetime = (value) => { + if (value) { + return value.replace(/:\d{2}\.\d{3}\w/, '') + } +} + +const ImageForm = (props) => { + const [url, setUrl] = useState(props?.image?.url) + + const onSubmit = (data) => { + props.onSave(data, props?.image?.id) + } + + const onFileUpload = (response) => { + setUrl(response.filesUploaded[0].url) + } + + return ( + // component stuff... +``` + +So we'll use `setState` to store the URL for the image. We default it to the existing `url` value, if it exists—remember that scaffolds use this same form for editing of existing records, where we'll already have a value for `url`. If we didn't store that url value somewhere then it would be overridden with `null` if we started editing an existing record! + +The last thing we need to do is set the value of `url` in the `data` object before it gets passed to the `onSave` handler: + +```jsx {2,3} title="web/src/components/ImageForm/ImageForm.js" +const onSubmit = (data) => { + const dataWithUrl = Object.assign(data, { url }) + props.onSave(dataWithUrl, props?.image?.id) +} +``` + +Now try uploading a file and saving the form: + +![Upload done](https://user-images.githubusercontent.com/300/82702493-f5844c80-9c26-11ea-8fc4-0273b92034e4.png) + +It worked! Next let's update the display here to actually show the image as a thumbnail and make it clickable to see the full version: + +```jsx {76-78} title="web/src/components/Images/Images.js" +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' +import { Link, routes } from '@redwoodjs/router' + +import { QUERY } from 'src/components/Image/ImagesCell' + +const DELETE_IMAGE_MUTATION = gql` + mutation DeleteImageMutation($id: Int!) { + deleteImage(id: $id) { + id + } + } +` + +const MAX_STRING_LENGTH = 150 + +const truncate = (text) => { + let output = text + if (text && text.length > MAX_STRING_LENGTH) { + output = output.substring(0, MAX_STRING_LENGTH) + '...' + } + return output +} + +const jsonTruncate = (obj) => { + return truncate(JSON.stringify(obj, null, 2)) +} + +const timeTag = (datetime) => { + return ( + + ) +} + +const checkboxInputTag = (checked) => { + return +} + +const ImagesList = ({ images }) => { + const [deleteImage] = useMutation(DELETE_IMAGE_MUTATION, { + onCompleted: () => { + toast.success('Image deleted') + }, + // This refetches the query on the list page. Read more about other ways to + // update the cache over here: + // https://www.apollographql.com/docs/react/data/mutations/#making-all-other-cache-updates + refetchQueries: [{ query: QUERY }], + awaitRefetchQueries: true, + }) + + const onDeleteClick = (id) => { + if (confirm('Are you sure you want to delete image ' + id + '?')) { + deleteImage({ variables: { id } }) + } + } + + return ( +
+ + + + + + + + + + + {images.map((image) => ( + + + + + + + ))} + +
IdTitleUrl 
{truncate(image.id)}{truncate(image.title)} + + + + + +
+
+ ) +} + +export default ImagesList +``` + +![Image](https://user-images.githubusercontent.com/300/82702575-1fd60a00-9c27-11ea-8d2f-047bcf4e9cae.png) + +## The Transform + +Remember when we mentioned that Filestack can save you bandwidth by transforming images on the fly? This page is a perfect example—the image is never bigger than 50px, why pull down the full resolution just for that tiny display? Here's how we can tell Filestack that whenever we grab this instance of the image, it only needs to be 100px. + +Why 100px? Most phones and many laptops and desktop displays are now 4k or larger. Images are actually displayed at at least double resolution on these displays, so even though it's "50px", it's really 100px when shown on these displays. So you'll usually want to bring down all images at twice their intended display resolution. + +We need to add a special indicator to the URL itself to trigger the transform so let's add a function that does that for a given image URL (this can go either inside or outside of the component definition): + +```jsx title="web/src/components/Images/Images.js" +const thumbnail = (url) => { + const parts = url.split('/') + parts.splice(3, 0, 'resize=width:100') + return parts.join('/') +} +``` + +What this does is turn a URL like + +``` +https://cdn.filestackcontent.com/81m7qIrURxSp7WHcft9a +``` + +into + +``` +https://cdn.filestackcontent.com/resize=width:100/81m7qIrURxSp7WHcft9a +``` + +Now we'll use the result of that function in the `` tag: + +```jsx title="web/src/components/Images/Images.js" + +``` + +Starting with an uploaded image of 157kB, the 100px thumbnail clocks in at only 6.5kB! Optimizing image delivery is almost always worth the extra effort! + +You can read more about the available transforms at [Filestack's API reference](https://www.filestack.com/docs/api/processing/). + +## The Improvements + +It'd be nice if, after uploading, you could see the image you uploaded. Likewise, when editing an image, it'd be helpful to see what's already attached. Let's make those improvements now. + +We're already storing the attached image URL in state, so let's use the existence of that state to show the attached image. In fact, let's also hide the uploader and assume you're done (you'll be able to show it again if needed): + +```jsx {5,8} title="web/src/components/ImageForm/ImageForm.js" + +
+
+ +{url && } +``` + +Now if you create a new image record, you'll see the picker, and as soon as the upload is complete, the uploaded image will pop into place. If you go to edit an image, you'll see the file that's already attached. + +> You should probably use the same resize-URL trick here to make sure it doesn't try to display a 10MB image immediately after uploading it. A max width of 500px may be good... + +Now let's add the ability to bring back the uploader if you decide you want to change the image. We can do that by clearing the image that's in state: + +```jsx {8-18} title="web/src/components/ImageForm/ImageForm.js" + +
+
+ +{url && ( +
+ + +
+)} +``` + +![Replace image button](https://user-images.githubusercontent.com/300/82719274-e7055780-9c5d-11ea-9a8a-8c1c72185983.png) + +We're borrowing the styles from the submit button and making sure that the image has both a top and bottom margin so it doesn't crash into the new button. + +## The Delete + +Having a free plan is great, but if you just load images and never actually remove the unnecessary ones, you'll be in trouble. + +To avoid this, we'd better implement the `deleteImage` mutation. It will enable you to make a call to the Filestack API to remove your resources and, on success, remove the row in the `Image` model. + +You are going to need a new ENV var called `REDWOOD_ENV_FILESTACK_SECRET`, which you can find in **Filestack > Security > Policy & Signature:** App Secret. Put this into your `.env` file (don't use this one of course, paste your own in there): + +```dotenv title=".env" +REDWOOD_ENV_FILESTACK_SECRET= PWRWGEKFZ2HJMXWSBP3YYI5ERZ +``` + +Filestack's library will provide a `getSecurity` method that will allow us to delete a resource, but only if executed on a **nodejs** environment. Hence, we need to execute the `delete` operation on the `api` side. + +Let's add the proper package: + +```shell +yarn workspace api add filestack-js +``` + +Great. Now we can modify our service accordingly: + +```js {4-23} title="api/src/services/image/image.ts" +import * as Filestack from 'filestack-js' + +export const deleteImage = async({ id }) => { + const client = Filestack.init(process.env.REDWOOD_ENV_FILESTACK_API_KEY) + + const image = await db.image.findUnique({ where: { id } }) + + // The `security.handle` is the unique part of the Filestack file's url. + const handle = image.url.split('/').pop() + + const security = Filestack.getSecurity( + { + // We set `expiry` at `now() + 5 minutes`. + expiry: new Date().getTime() + 5 * 60 * 1000, + handle, + call: ['remove'], + }, + process.env.REDWOOD_ENV_FILESTACK_SECRET + ) + + await client.remove(handle, security) + + return db.image.delete({ where: { id } } ) +} +``` + +Great! Now when you click the button in the frontend, the service will make a call to Filestack to remove the image from the service first. We set `expiry` to 20 seconds so that our policy expires 20 seconds after its generation, this is more than enough to protect your access while executing such operation. + +Assuming the request to `remove()` the image succeeded, we then delete it locally. If you wanted to be extra safe you could surround the `remove()` call with a try/catch block and then throw your own error if Filestack ends up throwing an error. + +## The Wrap-up + +Files uploaded! + +There's plenty of ways to integrate a file picker. This is just one, but we think it's simple, yet flexible. We use the same technique on the [example-blog](https://github.com/redwoodjs/example-blog). + +Have fun and get uploading! diff --git a/docs/versioned_docs/version-7.0/how-to/gotrue-auth.md b/docs/versioned_docs/version-7.0/how-to/gotrue-auth.md new file mode 100644 index 000000000000..c6cdbd40eb30 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/gotrue-auth.md @@ -0,0 +1,706 @@ +# GoTrue Auth + +If you've completed the [Authentication section](../tutorial/chapter4/authentication.md) of The Tutorial, you've seen how you can add the [Netlify Identity Widget](https://github.com/netlify/netlify-identity-widget) to your Redwood app in a matter of minutes. +But what do you do if you want to use Netlify Identity, but ditch the widget? There are many cases where we want much more control over our authentication interface and functionality, while still maintaining some _ease-of-use_ when it comes to development. + +Enter [GoTrue-JS](https://github.com/netlify/gotrue-js), a client library for interfacing with Netlify Identity's GoTrue API. + +In this recipe, we'll: + +- [configure Redwood Auth with GoTrue-JS](#generate-auth-configuration), +- [create a Sign Up form](#sign-up), +- [create a Sign In form](#sign-in), +- [create a Sign Out button](#sign-out), +- [add auth links](#auth-links) that display the correct buttons based on our auth state + +But first, some housekeeping... + +## Prerequisites + +Before getting started, there are a few steps you should have completed: + +- [Create a Redwood app](../tutorial/chapter1/installation.md) +- [Create a Netlify account](https://www.netlify.com/) +- [Deploy your Netlify site](../tutorial/chapter4/deployment.md) +- [Enable Netlify Identity](#enable-netlify-identity) +- Fire up a dev server: `yarn redwood dev` + +### Enable Netlify Identity + +Unless you've skipped the [requirements](#prerequisites) section (for shame!), you should already have a Netlify account and a site set up. If you'd be so kind, navigate to your site's **Dashboard**, head to the **Identity** tab, and click **Enable Identity**: + +![Netlify Identity screenshot](https://user-images.githubusercontent.com/300/82271191-f5850380-992b-11ea-8061-cb5f601fa50f.png) + +Now you should see an Identity API endpoint, e.g. `https://my-bodacious-app.netlify.app/.netlify/identity`. Copy and paste that somewhere—we'll need it in a moment when we instantiate GoTrue-JS. + +## Generate Auth Configuration + +Let's start by installing the required packages and generating boilerplate code and files for Redwood Auth, all with this simple [CLI command](../cli-commands.md#setup-auth): + +```bash +yarn redwood setup auth goTrue +``` + +By specifying `goTrue` as the provider, Redwood automatically added the necessary GoTrue-JS config to our App.js. Let's open up `web/src/App.js` and inspect. You should see: + +```jsx {1-2,11-14,18,22} title="web/src/App.js" +import { AuthProvider } from '@redwoodjs/auth' +import GoTrue from 'gotrue-js' +import { FatalErrorBoundary } from '@redwoodjs/web' +import { RedwoodApolloProvider } from '@redwoodjs/web/apollo' + +import FatalErrorPage from 'src/pages/FatalErrorPage' +import Routes from 'src/Routes' + +import './index.css' + +const goTrueClient = new GoTrue({ + APIUrl: 'https://MYAPP.netlify.app/.netlify/identity', + setCookie: true, +}) + +const App = () => ( + + + + + + + +) + +export default App +``` + +Time to use that API endpoint we copied from the Netlify Identity page. Replace the value of `APIUrl` with your API endpoint. For example: + +```jsx {4} title="web/src/App.js" +// imports... + +const goTrueClient = new GoTrue({ + APIUrl: 'https://gotrue-recipe.netlify.app/.netlify/identity', + setCookie: true, +}) +``` + +That's all for configuration. Easy! + +## Sign Up + +Sign Up feels like an appropriate place to start building our interface. + +Our first iteration won't include features like Email Confirmation or Password Recovery. Those, among other features, will be covered in the Advanced Concepts section of this recipe (coming soon). + +To forego email confirmation, head back over to your site's **Netlify Dashboard**, open the **Identity** tab, and click **Settings and usage**. + +![Netlify Identity Settings screenshot](https://user-images.githubusercontent.com/458233/86220685-ed86c900-bb51-11ea-9d74-f1ee4ab0a91b.png) + +In **Emails > Confirmation template**, click **Edit settings**, check **Allow users to sign up without verifying their email address**, and hit **Save**. + +![Netlify Identity Confirmation template](https://user-images.githubusercontent.com/458233/86221090-7140b580-bb52-11ea-8530-b1a7be937c56.png) + +Nicely done. Now, back to our app. + +**The Sign Up Page** + +Let's generate a Sign Up page: + +```bash +yarn redwood generate page Signup +``` + +This adds a Signup [route](../router.md#router-and-route) to our routes file and creates a SignupPage component. + +In the just-generated SignupPage component (`web/src/pages/SignupPage/SignupPage.js`), let's import some [Redwood Form components](../forms.md) and add a very basic form to our render component: + +```jsx title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' + +const SignupPage = () => { + return ( + <> +

Sign Up

+
+ + + Sign Up + + + ) +} + +export default SignupPage +``` + +Did I mention it was basic? If you want to add some polish, you might find both the [Redwood Form docs](https://5efa4336f1e71f00081df803--redwoodjs.netlify.app/docs/form) and the [tutorial section on forms](https://5efa4336f1e71f00081df803--redwoodjs.netlify.app/tutorial/everyone-s-favorite-thing-to-build-forms) quite useful. For our purposes, let's just focus on the functionality. + +Now that we have a form interface, we're going to want to do something when the user submits it. Let's add an `onSubmit` function to our component and pass it as a prop to our Form component: + +```jsx {4-6,11} title="web/src/pages/SignupPage/SignupPage.js" +// imports... + +const SignupPage = () => { + const onSubmit = (data) => { + // do something here + } + + return ( + <> +

Sign Up

+
+ + + Sign Up + + + ) +} +//... +``` + +The _something_ we need to do is—surprise!—sign up. To do this, we'll need a way to communicate with `` and the GoTrue-JS client we passed to it. Look no further than the [`useAuth` hook](https://redwoodjs.com/docs/authentication#api), which lets us subscribe to our auth state and its properties. In our case, we'll be glad to now have access to `client` and, thusly, our GoTrue-JS instance and [all of its functions](https://github.com/netlify/gotrue-js/blob/master/README.md#authentication-examples). + +Let's import `useAuth` and destructure `client` from it in our component: + +```jsx {2,5} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SignupPage = () => { + const { client } = useAuth() + + const onSubmit = (data) => { + // do something here + } + + return ( + <> +

Sign Up

+
+ + + Sign Up + + + ) +} + +export default SignupPage +``` + +And now we'll attempt to create a new user in the `onSubmit` function with [`client.signup()`](https://github.com/netlify/gotrue-js/blob/master/README.md#create-a-new-user) by passing in the `email` and `password` values that we've captured from our form: + +```jsx {8-11} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SignupPage = () => { + const { client } = useAuth() + + const onSubmit = (data) => { + client + .signup(data.email, data.password) + .then((res) => console.log(res)) + .catch((error) => console.log(error)) + } + + return ( + <> +

Sign Up

+
+ + + Sign Up + + + ) +} + +export default SignupPage +``` + +Presently, our sign up will work as is, but simply console-logging the response from `client.signup()` is hardly useful behavior. + +Let's display errors to the user if there is one. To do this, we'll set up `React.useState()` to manage our error state and conditionally render the error message if there is one. We'll also want to reset the error state at the beginning of every submission with `setError(null)`: + +```jsx {6,9,13,20} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SignupPage = () => { + const { client } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + client + .signup(data.email, data.password) + .then((res) => console.log(res)) + .catch((error) => setError(error.message)) + } + + return ( + <> +

Sign Up

+
+ {error &&

{error}

} + + + Sign Up + + + ) +} + +export default SignupPage +``` + +Now we can handle a successful submission. Once a user has signed up, we should direct them to the sign in page that we'll be building out in the next section. + +Start by [generating](../cli-commands.md#generate-page) a sign in page: + +```bash +yarn redwood generate page Signin +``` + +Back in our `SignupPage`, let's import `routes` and `navigate` from [Redwood Router](../router.md#navigate) and use them to redirect on successful sign up: + +```jsx {3,13} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' +import { routes, navigate } from '@redwoodjs/router' + +const SignupPage = () => { + const { client } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + client + .signup(data.email, data.password) + .then(() => navigate(routes.signin())) + .catch((error) => setError(error.message)) + } + + return ( + <> +

Sign Up

+
+ {error &&

{error}

} + + + Sign Up + + + ) +} + +export default SignupPage +``` + +Hoorah! We've just added a sign up page and created a sign up form. We created a function to sign up users and we redirect users to the sign up page upon successful submission. Let's move on to Sign In. + +## Sign In + +Let's get right to it. In the SigninPage we generated in the last section, let's add a basic form with `email` and `password` fields, some error reporting setup, and a hollow `onSubmit` function: + +```jsx title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' + +const SigninPage = () => { + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + // do sign in here + } + + return ( + <> +

Sign In

+
+ {error &&

{error}

} + + + Sign In + + + ) +} + +export default SigninPage +``` + +Then we'll need to import `useAuth` from `@redwoodjs/auth` and destructure `logIn` so that we can use it in our `onSubmit` function: + +```jsx {2,5} title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + // do sign in here + } + + return ( + <> +

Sign In

+
+ {error &&

{error}

} + + + Sign In + + + ) +} + +export default SigninPage +``` + +Now we'll add `logIn` to our `onSubmit` function. This time we'll be passing an object to our function as we're using Redwood Auth's logIn function directly (as opposed to `client`). This object takes an email, password, and a remember boolean. We'll also chain on `then` and `catch` to handle the response: + +```jsx {10-14} title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + logIn({ email: data.email, password: data.password, remember: true }) + .then(() => { + // do something + }) + .catch((error) => setError(error.message)) + } + + return ( + <> +

Sign In

+
+ {error &&

{error}

} + + + Sign In + + + ) +} + +export default SigninPage +``` + +Now then, upon a successful login let's redirect our user back to the home page. First, [generate](../cli-commands.md#generate-page) a homepage (if you haven't already): + +```bash +yarn redwood generate page Home / +``` + +In our `SigninPage`, import `navigate` and `routes` from [`@redwoodjs/router`](../router.md) and add them to the `then` function: + +```jsx {3,12} title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' +import { navigate, routes } from '@redwoodjs/router' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + logIn({ email: data.email, password: data.password, remember: true }) + .then(() => navigate(routes.home())) + .catch((error) => setError(error.message)) + } + + return ( + <> +

Sign In

+
+ {error &&

{error}

} + + + Sign In + + + ) +} + +export default SigninPage +``` + +Well done! We've created a sign in page and form and we successfully handle sign in. Next up... + +## Sign Out + +Sign out is by far the easiest auth functionality to implement: all we need to do is fire off useAuth's `logOut` method. + +Let's start by [generating a component](../cli-commands.md#generate-component) to house our Sign Out Button: + +```bash +yarn redwood generate component SignoutBtn +``` + +In the `web/src/components/SignoutBtn/SignoutBtn.js` file we just generated, let's render a button and add a click handler: + +```jsx title="web/src/components/SignoutBtn/SignoutBtn.js" +const SignoutBtn = () => { + const onClick = () => { + // do sign out here. + } + return +} + +export default SignoutBtn +``` + +Now we can import [`useAuth` from `@redwoodjs/auth`](../authentication.md#api). We'll destructure its `logOut` method and invoke it in the `onClick` function: + +```jsx {1,4,7} title="web/src/components/SignoutBtn/SignoutBtn.js" +import { useAuth } from '@redwoodjs/auth' + +const SignoutBtn = () => { + const { logOut } = useAuth() + + const onClick = () => { + logOut() + } + + return +} + +export default SignoutBtn +``` + +This works as is, but, because the user may be in a private area of your app when the Sign Out button is clicked, we should make sure we also navigate the user away from this page: + +```jsx {2,8} title="web/src/components/SignoutBtn/SignoutBtn.js" +import { useAuth } from '@redwoodjs/auth' +import { navigate, routes } from '@redwoodjs/router' + +const SignoutBtn = () => { + const { logOut } = useAuth() + + const onClick = () => { + logOut().then(() => navigate(routes.home())) + } + + return +} + +export default SignoutBtn +``` + +And that's it for Sign Out! Err, of course, we're not rendering it anywhere in our app yet. In the next section, well add some navigation that conditionally renders the appropriate sign up, sign in, and sign out buttons based on our authentication state. + +## Auth Links + +Here we'll implement some auth-related navigation that conditionally renders the correct links and buttons based on the user's authentication state. + +- When the user is not logged in, we should see **Sign Up** and **Sign In**. +- When the user is logged in, we should see **Log Out**. + +Let's start by [generating a navigation component](../cli-commands.md#generate-component): + +```bash +yarn redwood generate component Navigation +``` + +This creates `web/src/components/Navigation/Navigation.js`. In that file, let's import [the `Link` component and the `routes` object](../router.md#link-and-named-route-functions) from `@redwoodjs/router`. + +We'll also import [`useAuth`](../authentication.md#api) since we'll need to subscribe to the auth state in order for our components to decide what to render: + +```jsx title="web/src/components/Navigation/Navigation.js" +import { Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' + +const Navigation = () => { + return +} + +export default Navigation +``` + +Let's destructure [`isAuthenticated` from the `useAuth`](../authentication.md#api) API and apply it to some conditionals in the render method: + +```jsx {5,8-12} title="web/src/components/Navigation/Navigation.js" +import { Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' + +const Navigation = () => { + const { isAuthenticated } = useAuth() + return ( + + ) +} + +export default Navigation +``` + +Because Redwood Auth uses [React's Context API](https://reactjs.org/docs/context.html) to manage and broadcast the auth state, we can be confident that `isAuthenticated` will always be up-to-date, even if it changes from within another component in the tree (so long as it's a child of ``). In our case, when `isAuthenticated` changes, React will auto-magically take care of rendering the appropriate components. + +So, now let's import our sign out button and add it, as well as sign in and sign up links, to the appropriate blocks in the conditional: + +```jsx {3,9-16} title="web/src/components/Navigation/Navigation.js" +import { Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' +import SignoutBtn from 'src/components/SignoutBtn/SignoutBtn' + +const Navigation = () => { + const { isAuthenticated } = useAuth() + return ( + + ) +} + +export default Navigation +``` + +We have a working navigation component, but we still need to render it somewhere. Let's [generate a layout](../cli-commands.md#generate-layout) called GlobalLayout: + +```bash +yarn redwood generate layout Global +``` + +Then import and render the navigation component in the newly generated `web/src/layouts/GlobalLayout/GlobalLayout.js`: + +```jsx title="web/src/layouts/GlobalLayout/GlobalLayout.js" +import Navigation from 'src/components/Navigation/Navigation' + +const GlobalLayout = ({ children }) => { + return ( + <> +
+ +
+
{children}
+ + ) +} + +export default GlobalLayout +``` + +Finally, we'll import and wrap each of our generated pages in this GlobalLayout component: + +**Home** + +```jsx title="web/src/pages/HomePage/Homepage.js" +import GlobalLayout from 'src/layouts/GlobalLayout/GlobalLayout' + +const HomePage = () => { + return ( + +

Home

+

My Gotrue Redwood Auth

+
+ ) +} + +export default HomePage +``` + +**Sign Up** + +```jsx title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' +import { routes, navigate } from '@redwoodjs/router' + +import GlobalLayout from 'src/layouts/GlobalLayout/GlobalLayout' + +const SignupPage = () => { + const { client } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + client + .signup(data.email, data.password) + .then(() => navigate(routes.signin())) + .catch((error) => setError(error.message)) + } + + return ( + +

Sign Up

+
+ {error &&

{error}

} + + + Sign Up + +
+ ) +} + +export default SignupPage +``` + +**Sign In** + +```jsx title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' +import { navigate, routes } from '@redwoodjs/router' + +import GlobalLayout from 'src/layouts/GlobalLayout/GlobalLayout' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + logIn({ email: data.email, password: data.password, remember: true }) + .then(() => navigate(routes.home())) + .catch((error) => setError(error.message)) + } + + return ( + +

Sign In

+
+ {error &&

{error}

} + + + Sign In + +
+ ) +} + +export default SigninPage +``` + +Now we have navigation that renders the correct links and buttons based on our auth state. When the user signs in, they'll see a **Sign Out** button. When the user signs out, they'll see **Sign Up** and **Sign In** links. + +## Wrapping Up + +We've configured GoTrue with Redwood Auth, created a Sign Up page, a Sign In page, a Sign Out button, and added auth links to our layout. Nicely done! + +Thanks for tuning in! + +> If you spot an error or have trouble completing any part of this recipe, please feel free to open an issue on [Github](https://github.com/redwoodjs/redwood) or create a topic on our [community forum](https://community.redwoodjs.com/). diff --git a/docs/versioned_docs/version-7.0/how-to/mocking-graphql-in-storybook.md b/docs/versioned_docs/version-7.0/how-to/mocking-graphql-in-storybook.md new file mode 100644 index 000000000000..b6353e087a95 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/mocking-graphql-in-storybook.md @@ -0,0 +1,114 @@ +# Mocking GraphQL in Storybook + +## Pre-requisites + +1. Storybook should be running, start it by running `yarn rw storybook` +2. Have a Cell, Query, or Mutation that you would like to mock + +## Where to put mock-requests + +1. Mock-requests placed in a file ending with `.mock.js|ts` are automatically imported and become globally scoped, which means that they will be available in all of your stories. +2. Mock-requests in a story will be locally scoped and will overwrite globally scoped mocks. + +## Mocking a Cell's Query + +Locate the file ending with `.mock.js` in your Cell's folder. This file exports a value named `standard`, which is the mock-data that will be returned for your Cell's `QUERY`. +```jsx {3,4,5,11,12,13} title="UserProfileCell/UserProfileCell.js" +export const QUERY = gql` + query UserProfileQuery { + userProfile { + id + } + } +` + +// UserProfileCell/UserProfileCell.mock.js +export const standard = { + userProfile: { + id: 42 + } +} +``` + +The value assigned to `standard` is the mock-data associated to the `QUERY`, so modifying the `QUERY` means you need to modify the mock-data. +```diff title="UserProfileCell/UserProfileCell.js" +export const QUERY = gql` + query UserProfileQuery { + userProfile { + id ++ name + } + } +` + +// UserProfileCell/UserProfileCell.mock.js +export const standard = { + userProfile: { + id: 42, ++ name: 'peterp', + } +} +``` + +> Behind the scenes: Redwood uses the value associated to `standard` as the second argument to `mockGraphQLQuery`. + +### GraphQL request variables + +If you want to dynamically modify mock-data based on a queries variables the `standard` export can also be a function, and the first parameter will be an object containing the variables: +```jsx {1,6} title="UserProfileCell/UserProfileCell.mock.js" +export const standard = (variables) => { + return { + userProfile: { + id: 42, + name: 'peterp', + profileImage: `https://example.com/profile.png?size=${variables.size}` + } + } +} +``` + +## Mocking a GraphQL Query + +If you're not using a Cell, or if you want to overwrite a globally scoped mock, you can use `mockGraphQLQuery`: + +```jsx title="Header/Header.stories.js" +export const withReallyLongName = () => { + mockGraphQLQuery('UserProfileQuery', () => { + return { + userProfile: { + id: 99, + name: 'Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr.' + } + } + }) + return
+} +``` + +## Mocking a GraphQL Mutation + +Use `mockGraphQLMutation`: + +```jsx title="UserProfileCell/UserProfileCell.mock.js" +export const standard = /* ... */ + +mockGraphQLMutation('UpdateUserName', ({ name }) => { + return { + userProfile: { + id: 99, + name, + } + } +}) +``` + +## Mock-requests that intentionally produce errors + +`mockGraphQLQuery` and `mockGraphQLMutation` have access to `ctx` which allows you to modify the mock-response: + +```jsx +mockGraphQLQuery('UserProfileQuery', (_vars, { ctx }) => { + // Forbidden + ctx.status(403) +}) +``` diff --git a/docs/versioned_docs/version-7.0/how-to/oauth.md b/docs/versioned_docs/version-7.0/how-to/oauth.md new file mode 100644 index 000000000000..4b65257ef5cf --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/oauth.md @@ -0,0 +1,835 @@ +# OAuth + +If you're using an auth provider like [Auth0](/docs/auth/auth0), OAuth login to third party services (GitHub, Google, Facebook) is usually just a setting you can toggle on in your provider's dashboard. But if you're using [dbAuth](/docs/auth/dbauth) you'll only have username/password login to start. But, adding one or more OAuth clients isn't hard. This recipe will walk you through it from scratch, adding OAuth login via GitHub. + +## Prerequisites + +This article assumes you have an app set up and are using dbAuth. We're going to make use of the dbAuth system to validate that you're who you say you are. If you just want to try this code out in a sandbox app, you can create a test blog app from scratch by checking out the [Redwood codebase](https://github.com/redwoodjs/redwood) itself and then running a couple of commands: + +```bash +yarn install +yarn build + +# typescript +yarn run build:test-project ~/oauth-app + +# javascript +yarn run build:test-project ~/oauth-app --javascript +``` + +That will create a simple blog application at `~/oauth-app`. You'll get a login and signup page, which we're going to enhance to include a **Login with GitHub** button. + +Speaking of GitHub, you'll also need a GitHub account so you can create an [OAuth app](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app). + +We also assume you're familiar with the basics of OAuth and the terminology surrounding it. + +## Login Flow + +Here's the logic flow we're going to implement: + +1. User comes to the login page and clicks a **Login with GitHub** button/link. +2. The link directs the browser to GitHub's OAuth process at github.com. +3. The user logs in with their GitHub credentials and approves our app. +4. The browser is redirected back to our app, to a new function `/api/src/functions/oauth/oauth.js`. +5. The function fetches the OAuth **access_token** with a call to GitHub, using the **code** that was included with the redirect from GitHub in the previous step. +6. When the **access_token** is received, the function then requests the user data from GitHub via another fetch to GitHub's API. +7. The function then checks our database for a user identified by GitHub's `id`. If no user is found, the `User` record is created using the info from the fetch in the previous step. +8. The user data from our own database is used to create the same cookie that dbAuth creates on a successful login. +9. The browser is redirected back to our site, and the user is now logged in. + +## GitHub OAuth App Setup + +In order to allow OAuth login with GitHub, we need to create an OAuth App. The instructions below are for creating one on your personal GitHub account, but if your app lives in a separate organization then you can perform the same steps under the org instead. + +First go to your [Settings](https://github.com/settings/profile) and then the [Developer settings](https://github.com/settings/apps) at the bottom left. Finally, click the [OAuth Apps](https://github.com/settings/developers) nav item at left: + +![OAuth app settings screenshot](https://user-images.githubusercontent.com/300/245297416-34821cb6-ace0-4a6a-9bf6-4e434d3cefc5.png) + +Click [**New OAuth App**](https://github.com/settings/applications/new) and fill it in something like this: + +![New OAuth app settings](https://user-images.githubusercontent.com/300/245298106-b35a6abe-6e8c-4ab1-8ab5-7b7e1dcc0a39.png) + +The important part is the **Authorization callback URL** which is where GitHub will redirect you back once authenticated (step 4 of the login flow above). This callback URL assumes you're using the default function location of `/.redwood/functions`. If you've changed that in your app be sure to change it here as well. + +Click **Register application** and then on the screen that follows, click the **Generate a new client secret** button: + +![New client secret button](https://user-images.githubusercontent.com/300/245298639-6e08a201-b0db-4df6-975f-592544bdced7.png) + +You may be asked to use your 2FA code to verify that you're who you say you are, but eventually you should see your new **Client secret**. Copy that, and the **Client ID** above it: + +![Client secret](https://user-images.githubusercontent.com/300/245298897-129b5d00-3bed-4d7e-a40e-f4c9cda8a21f.png) + +Add those to your app's `.env` file (or wherever you're managing your secrets). Note that it's best to have a different OAuth app on GitHub for each environment you deploy to. Consider this one the **dev** app, and you'll create a separate one with a different client ID and secret when you're ready to deploy to production: + +```bash title="/.env" +GITHUB_OAUTH_CLIENT_ID=41a08ae238b5aee4121d +GITHUB_OAUTH_CLIENT_SECRET=92e8662e9c562aca8356d45562911542d89450e1 +``` + +We also need to denote what data we want permission to read from GitHub once someone authorizes our app. We'll want the user's public info, and probably their email address. That's only two scopes, and we can add those as another ENV var: + +```bash title="/.env" +GITHUB_OAUTH_CLIENT_ID=41a08ae238b5aee4121d +GITHUB_OAUTH_CLIENT_SECRET=92e8662e9c562aca8356d45562911542d89450e1 +# highlight-next-line +GITHUB_OAUTH_SCOPES="read:user user:email" +``` + +If you wanted access to more GitHub data, you can specify [additional scopes](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps) here and they'll be listed to the user when they go to authorize your app. You can also change this list in the future, but you'll need to log the user out and the next time they click **Login with GitHub** they'll be asked to authorize your app again, with a new list of requested scopes. + +One more ENV var, this is the same callback URL we told GitHub about. This is used in the link in the **Login with GitHub** button and gives GitHub another chance to verify that you're who you say you are: you're proving that you know where you're supposed to redirect back to: + +```bash title="/.env" +GITHUB_OAUTH_CLIENT_ID=41a08ae238b5aee4121d +GITHUB_OAUTH_CLIENT_SECRET=92e8662e9c562aca8356d45562911542d89450e1 +GITHUB_OAUTH_SCOPES="read:user user:email" +# highlight-next-line +GITHUB_OAUTH_REDIRECT_URI="http://localhost:8910/.redwood/functions/oauth/callback" +``` + +## The Login Button + +This part is pretty easy, we're just going to add a link/button to go directly to GitHub to begin the OAuth process: + +```jsx title="/web/src/pages/LoginPage/LoginPage.jsx" + + Login with GitHub + +``` + +:::info +This example uses Tailwind to style the link to match the rest of the default dbAuth login page +::: + +You can put this same link on your signup page as well, since using the OAuth flow will be dual-purpose: it will log the user in if a local user already exists, or it will create the user and then log them in. + +We're using several of our new ENV vars here, and need to tell Redwood to make them available to the web side during the build process. Add them to the `includeEnvironmentVariables` key in `redwood.toml`: + +```toml title="/redwood.toml" +[web] + title = "Redwood App" + port = "${WEB_DEV_PORT:8910}" + apiUrl = "/.redwood/functions" + # highlight-next-line + includeEnvironmentVariables = ["GITHUB_OAUTH_CLIENT_ID", "GITHUB_OAUTH_REDIRECT_URI", "GITHUB_OAUTH_SCOPES"] +[api] + port = "${API_DEV_PORT:8911}" +[browser] + open = true +[notifications] + versionUpdates = ["latest"] +``` + +Restart your dev server to pick up the new TOML settings, and your link should appear: + +![Login button](https://user-images.githubusercontent.com/300/245899085-0b946a14-cd7c-402a-9d86-b6527fd89c7f.png) + +Go ahead and click it, and you should be taken to GitHub to authorize your GitHub login to work with your app. You'll see the scopes we requested listed under the **Personal User Data** heading: + +![GitHub Oauth Access Page](https://user-images.githubusercontent.com/300/245899872-8ddd7e69-dbfa-4544-ab6f-78fd4ff02da8.png) + +:::warning + +If you get an error here that says "The redirect_uri MUST match the registered callback URL for this application" verify that the redirect URL you entered on GitHub and the one you put into the `GITHUB_OAUTH_REDIRECT_URL` ENV var are identical! + +::: + +Click **authorize** and you should end up seeing some JSON, and an error: + +![/oauth function not found](https://user-images.githubusercontent.com/300/245900327-b21a178e-5539-4c6d-a5d6-9bb736100940.png) + +That's coming from our app because we haven't created the `oauth` function that GitHub redirects to. But you'll see a `code` in the URL, which means GitHub is happy with our flow so far. Now we need to trade that `code` for an `access_token`. We'll do that in our `/oauth` function. + +:::info +This nicely formatted JSON comes from the [JSON Viewer](https://chrome.google.com/webstore/detail/json-viewer/gbmdgpbipfallnflgajpaliibnhdgobh) Chrome extension. +::: + +## The `/oauth` Function + +We can have Redwood generate a shell of our new function for us: + +```bash +yarn rw g function oauth +``` + +That will create the function at `/api/src/functions/oauth/oauth.js`. If we retry the **Login with GitHub** button now, we'll see the output of that function instead of the error: + +![Oauth function responding](https://user-images.githubusercontent.com/300/245903068-760596fa-4139-4d11-b3b3-a90edfbbf496.png) + +Now let's start filling out this function with the code we need to get the `access_token`. + +### Fetching the `access_token` + +We told GitHub to redirect to `/oauth/callback` which *appears* like it would be a subdirectory, or child route of our `oauth` function, but in reality everything after `/oauth` just gets shoved into an `event.path` variable that we'll need to inspect to make sure it has the proper parts (like `/callback`). We can do that in the `hander()`: + +```js title="/api/src/functions/oauth/oauth.js" +export const handler = async (event, _context) => { + switch (event.path) { + case '/oauth/callback': + return await callback(event) + default: + // Whatever this is, it's not correct, so return "Not Found" + return { + statusCode: 404, + } + } +} + +const callback = async (event) => { + return { body: 'ok' } +} +``` + +The `callback()` function is where we'll actually define the rest of our flow. We can verify this is working by trying a couple of different URLs in the browser and see that `/oauth/callback` returns a 200 and "ok" in the body of the page, but anything else returns a 404. + +Now we need to make a request to GitHub to trade the `code` for an `access_token`. This is handled by a `fetch`: + +```js title="/api/src/functions/oauth/oauth.js" +const callback = async (event) => { + // highlight-start + const { code } = event.queryStringParameters + + const response = await fetch(`https://github.com/login/oauth/access_token`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + client_id: process.env.GITHUB_OAUTH_CLIENT_ID, + client_secret: process.env.GITHUB_OAUTH_CLIENT_SECRET, + redirect_uri: process.env.GITHUB_OAUTH_REDIRECT_URI, + code, + }), + }) + + const { access_token, scope, error } = JSON.parse(await response.text()) + + if (error) { + return { statuscode: 400, body: error } + } + + return { + body: JSON.stringify({ access_token, scope, error }) + } + // highlight-end +} +``` + +First we get the `code` out of the query string variables, then make a POST `fetch()` to GitHub, setting the required JSON body to include several of the ENV vars we've set, as well as the `code` we got from the GitHub redirect. Then we parse the response JSON and just return it in the browser to make sure it worked. If something went wrong (`error` is not `undefined`) then we'll output the error message in the body of the page. + +Let's try it: go back to the login page, click the **Login with GitHub** button and see what happens: + +![GitHub OAuth access_token granted](https://user-images.githubusercontent.com/300/245906529-d08f9d6e-4947-4d14-9377-def3645d9c68.png) + +You can also verify that the error response works by, for example, removing the `code` key from the `fetch()`, and see GitHub complain: + +![GitHub OAuth error](https://user-images.githubusercontent.com/300/245906827-703a4a21-b279-428c-be1c-b73c559a72b3.png) + +Great, GitHub has authorized us and now we can get details about the actual user from GitHub. + +### Retrieving GitHub User Details + +We need some unique identifier to tie a user in GitHub to a user in our database. The `access_token` we retrieved allows us to make requests to GitHub's API and return data for the user that the `access_token` is attached to, up to the limits of the `scopes` we requested. GitHub has a unique user `id` that we can use to tie the two together. Let's request that data and dump it to the browser so we can see that the request works. + +To keep things straight in our heads, let's call our local user `user` and the GitHub user the `providerUser` (since GitHub is "providing" the OAuth credentials). + +Let's make the API call to GitHub's user info endpoint and dump the result to the browser: + +```js title="/api/src/functions/oauth/oauth.js" +const callback = async (event) => { + const { code } = event.queryStringParameters + + const response = await fetch(`https://github.com/login/oauth/access_token`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + client_id: process.env.GITHUB_OAUTH_CLIENT_ID, + client_secret: process.env.GITHUB_OAUTH_CLIENT_SECRET, + redirect_uri: process.env.GITHUB_OAUTH_REDIRECT_URI, + code, + }), + }) + + const { access_token, scope, error } = JSON.parse(await response.text()) + + if (error) { + return { statuscode: 400, body: error } + } + + // highlight-start + try { + const providerUser = await getProviderUser(access_token) + return { + body: JSON.stringify(providerUser) + } + } catch (e) { + return { statuscode: 500, body: e.message } + } + // highlight-end +} + +// highlight-start +const getProviderUser = async (token) => { + const response = await fetch('https://api.github.com/user', { + headers: { Authorization: `Bearer ${token}` }, + }) + const body = JSON.parse(await response.text()) + + return body +} +// highlight-end +``` + +If all went well you should get a ton of juicy data: + +![GitHub user output](https://user-images.githubusercontent.com/300/245909925-c984eeb4-f172-46f6-8102-297b72e26bbd.png) + +If something went wrong with the fetch you should get a 500 and the error message output in the body. Try setting the `token` in the `Authorization` header to something like `foobar` to verify: + +![GitHub API error](https://user-images.githubusercontent.com/300/245910198-2975e90e-9af1-49b1-a41a-81b9269ff71d.png) + +Great, we've got the user data, now what do we do with it? + +### Database Updates + +We've got a bunch of user data that we can use to create a `User` in our own database. But we'll want to look up that same user in the future when they log back in. We have a couple of ways we can go about doing this: + +1. Keep our `User` model as-is and create the user in our local database. When the user logs in again, look them by their email address stored in GitHub. **Cons:** If the user changes their email in GitHub we won't be able to find them the next time they log in, and we would create a new user. +2. Keep the `User` model as-is but create the user with the same `id` as the one we get from GitHub. **Cons:** If we keep username/password login, we would need to create new users with an `id` that won't ever clash with the ones from GitHub. +2. Add a column to `User` like `githubId` that stores the GitHub `id` so that we can find the user again the next time they come to login. **Cons:** If we add more providers in the future we'll need to keep adding new `*Id` columns for each. +3. Create a new one-to-many relationship model that stores the GitHub `id` as a single row, tied to the `userId` of the `User` table, and a new row for each ID of any future providers. **Cons:** More complex data structure. + +Option #4 will be the most flexible going forward if we ever decide to add more OAuth providers. And if my experience is any indication, everyone always wants more login providers. + +So let's create a new `Identity` table that stores the name of the provider and the ID in that system. Logically it will look like this: + +``` +┌───────────┐ ┌────────────┐ +│ User │ │ Identity │ +├───────────┤ ├────────────┤ +│ id │•──┐ │ id │ +│ name │ └──<│ userId │ +│ email │ │ provider │ +│ ... │ │ uid │ +└───────────┘ │ ... │ + └────────────┘ +``` + +For now `provider` will always be `github` and the `uid` will be the GitHub's unique ID. `uid` should be a `String`, because although GitHub's ID's are integers, not every OAuth provider is guaranteed to use ints. + +#### Prisma Schema Updates + +Here's the `Identity` model definition: + +```prisma title="/api/db/schema.prisma" +model Identity { + id Int @id @default(autoincrement()) + provider String + uid String + userId Int + user User @relation(fields: [userId], references: [id]) + accessToken String? + scope String? + lastLoginAt DateTime @default(now()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + + @@unique([provider, uid]) + @@index(userId) +} +``` + +We're also storing the `accessToken` and `scope` that we got back from the last time we retrived them from GitHub, as well as a timestamp for the last time the user logged in. Storing the `scope` is useful because if you ever change them, you may want to notify users that have the previous scope definition to re-login so the new scopes can be authorized. + +:::caution + +There's no GraphQL SDL tied to the Identity table, so it is not accessible via our API. But, if you ever did create an SDL and service, be sure that `accessToken` is not in the list of fields exposed publicly! + +::: + +We'll need to add an `identities` relation to the `User` model, and make the previously required `hashedPassword` and `salt` fields optional (since users may want to *only* authenticate via GitHub, they'll never get to enter a password): + +```prisma title="/api/db/schema.prisma" +model User { + id Int @id @default(autoincrement()) + email String @unique + // highlight-start + hashedPassword String? + salt String? + identities Identity[] + // highlight-end + ... +} +``` + +Save these as a migration and apply them to the database: + +```bash +yarn rw prisma migrate dev +``` + +Give it a name like "create identity". That's it for the database. Let's return to the `/oauth` function and start working with our new `Identity` model. + +### Creating Users and Identities + +On a successful GitHub OAuth login we'll want to first check and see if a user already exists with the provider info. If so, we can go ahead and log them in. If not, we'll need to create it first, then log them in. + +Let's add some code that returns the user if found, otherwise it creates the user *and* returns it, so that the rest of our code doesn't have to care. + +:::info +Be sure to import `db` at the top of the file if you haven't already! +::: + +```js title="/api/src/functions/oauth/oauth.js" +// highlight-next-line +import { db } from 'src/lib/db' + +const callback = async (event) => { + const { code } = event.queryStringParameters + + const response = await fetch(`https://github.com/login/oauth/access_token`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + client_id: process.env.GITHUB_OAUTH_CLIENT_ID, + client_secret: process.env.GITHUB_OAUTH_CLIENT_SECRET, + redirect_uri: process.env.GITHUB_OAUTH_REDIRECT_URI, + code, + }), + }) + + const { access_token, scope, error } = JSON.parse(await response.text()) + + if (error) { + return { statuscode: 400, body: error } + } + + try { + const providerUser = await getProviderUser(access_token) + // highlight-start + const user = await getUser({ providerUser, accessToken: access_token, scope }) + return { + body: JSON.stringify(user) + } + // highlight-end + } catch (e) { + return { statuscode: 500, body: e.message } + } +} + +// highlight-start +const getUser = async ({ providerUser, accessToken, scope }) => { + const { user, identity } = await findOrCreateUser(providerUser) + + await db.identity.update({ + where: { id: identity.id }, + data: { accessToken, scope, lastLoginAt: new Date() }, + }) + + return user +} +// highlight-end + +// highlight-start +const findOrCreateUser = async (providerUser) => { + const identity = await db.identity.findFirst({ + where: { provider: 'github', uid: providerUser.id.toString() } + }) + + if (identity) { + // identity exists, return the user + const user = await db.user.findUnique({ where: { id: identity.userId }}) + return { user, identity } + } + + // identity not found, need to create it and the user + return await db.$transaction(async (tx) => { + const user = await tx.user.create({ + data: { + email: providerUser.email, + fullName: providerUser.name, + }, + } + + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString() + } + }) + + return { user, identity } + }) +} +// highlight-end +``` + +Let's break that down. + +```js +const providerUser = await getProviderUser(access_token) +// highlight-next-line +const user = await getUser({ providerUser, accessToken: access_token, scope }) +return { + body: JSON.stringify(user) +} +``` + +After getting the `providerUser` we're going to find our local `user`, and then dump the user to the browser to verify. + +```js +const getUser = async ({ providerUser, accessToken, scope }) => { + const { user, identity } = await getOrCreateUser(providerUser) + + await db.identity.update({ + where: { id: identity.id }, + data: { accessToken, scope, lastLoginAt: new Date() }, + }) + + return user +} +``` + +The `getUser()` function is going to return the user, whether it had to be created or not. Either way, the attached identity is updated with the current value for the `access_token` (note the case change, try not to get confused!), as well as the `scope` and `lastLoginAt` timestamp. `findOrCreateUser()` is going to do the heavy lifting: + +```js +const findOrCreateUser = async (providerUser) => { + const identity = await db.identity.findFirst({ + where: { provider: 'github', uid: providerUser.id.toString() } + }) + + if (identity) { + const user = await db.user.findUnique({ where: { id: identity.userId }}) + return { user, identity } + } + + // ... +} +``` + +If the user already exists, great! Return it, and the attached `identity` so that we can update the details. If the user doesn't exist already: + +```js +const findOrCreateUser = async (providerUser) => { + // ... + + return await db.$transaction(async (tx) => { + const user = await tx.user.create({ + data: { + email: providerUser.email, + fullName: providerUser.name, + }, + } + + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString() + } + }) + + return { user, identity } + }) +} +``` + +We create the `user` and the `identity` records inside a transaction so that if something goes wrong, both records fail to create. The error would bubble up to the try/catch inside `callback()`. (The Redwood test project has a required `fullName` field that we fill with the `name` attribute from GitHub.) + +:::info +Don't forget the `toString()` calls whenever we read or write the `providerUser.id` since we made the `uid` of type `String`. +::: + +If everything worked then on clicking **Login with GitHub** we should now see a dump of the actual user from our local database: + +![User details](https://user-images.githubusercontent.com/300/245922971-caaeb3ed-9231-4edf-aac5-9ea76b488824.png) + +You can take a look in the database and verify that the User and Identity were created. Start up the [Prisma Studio](https://www.prisma.io/studio) (which is already included with Redwood): + +```bash +yarn rw prisma studio +``` + +![Inspecting the Identity record](https://user-images.githubusercontent.com/300/245923393-d61233cc-52d2-4568-858e-9059dfe31bfc.png) + +Great! But, if you go back to your homepage, you'll find that you're not actually logged in. That's because we're not setting the cookie that dbAuth expects to see to consider you logged in. Let's do that, and then our login will be complete! + +### Setting the Login Cookie + +In order to let dbAuth do the work of actually considering us logged in (and handling stuff like reauthentication and logout) we'll just set the same cookie that the username/password login system would have if the user logged in with a username and password. + +Setting a cookie in the browser is a matter of returning a `Set-Cookie` header in the response from the server. We've been responding with a dump of the user object, but now we'll do a real return, including the cookie and a `Location` header to redirect us back to the site. + +Don't forget the new `CryptoJS` import at the top! + +```js title="/api/src/functions/oauth/oauth.js" +// highlight-next-line +import CryptoJS from 'crypto-js' + +const callback = async (event) => { + const { code } = event.queryStringParameters + + const response = await fetch(`https://github.com/login/oauth/access_token`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + client_id: process.env.GITHUB_OAUTH_CLIENT_ID, + client_secret: process.env.GITHUB_OAUTH_CLIENT_SECRET, + redirect_uri: process.env.GITHUB_OAUTH_REDIRECT_URI, + code, + }), + }) + + const { access_token, scope, error } = JSON.parse(await response.text()) + + if (error) { + return { statuscode: 400, body: error } + } + + try { + const providerUser = await getProviderUser(access_token) + const user = await getUser({ + providerUser, + accessToken: access_token, + scope, + }) + // highlight-start + const cookie = secureCookie(user) + + return { + statusCode: 302, + headers: { + 'Set-Cookie': cookie, + Location: '/', + }, + } + // highlight-end + } catch (e) { + return { statuscode: 500, body: e.message } + } +} + +// highlight-start +const secureCookie = (user) => { + const expires = new Date() + expires.setFullYear(expires.getFullYear() + 1) + + const cookieAttrs = [ + `Expires=${expires.toUTCString()}`, + 'HttpOnly=true', + 'Path=/', + 'SameSite=Strict', + `Secure=${process.env.NODE_ENV !== 'development'}`, + ] + const data = JSON.stringify({ id: user.id }) + + const encrypted = CryptoJS.AES.encrypt( + data, + process.env.SESSION_SECRET + ).toString() + + return [`session=${encrypted}`, ...cookieAttrs].join('; ') +} +// highlight-end +``` + +`secureCookie()` takes care of creating the cookie that matches the one set by dbAuth. The attributes that we're setting are actually a copy of the ones set in the `authHandler` in `/api/src/functions/auth.js` and you could remove some duplication between the two by exporting the `cookie` object from `auth.js` and then importing it and using it here. We've set the cookie to expire in a year because, let's admit it, no one likes having to log back in again. + +At the end of `callback()` we set the `Set-Cookie` and `Location` headers to send the browser back to the homepage of our app. + +Try it out, and as long as you have an indication on your site that a user is logged in, you should see it! In the case of the test project, you'll see "Log Out" at the right side of the top nav instead of "Log In". Try logging out and then back again to test the whole flow from scratch. + +## The Complete `/oauth` Function + +Here's the `oauth` function in its entirety: + +```jsx title="/api/src/functions/oauth/oauth.js" +import CryptoJS from 'crypto-js' + +import { db } from 'src/lib/db' + +export const handler = async (event, _context) => { + switch (event.path) { + case '/oauth/callback': + return await callback(event) + default: + // Whatever this is, it's not correct, so return "Not Found" + return { + statusCode: 404, + } + } +} + +const callback = async (event) => { + const { code } = event.queryStringParameters + + const response = await fetch(`https://github.com/login/oauth/access_token`, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + client_id: process.env.GITHUB_OAUTH_CLIENT_ID, + client_secret: process.env.GITHUB_OAUTH_CLIENT_SECRET, + redirect_uri: process.env.GITHUB_OAUTH_REDIRECT_URI, + code, + }), + }) + + const { access_token, scope, error } = JSON.parse(await response.text()) + + if (error) { + return { statuscode: 400, body: error } + } + + try { + const providerUser = await getProviderUser(access_token) + const user = await getUser({ + providerUser, + accessToken: access_token, + scope, + }) + const cookie = secureCookie(user) + + return { + statusCode: 302, + headers: { + 'Set-Cookie': cookie, + Location: '/', + }, + } + } catch (e) { + return { statuscode: 500, body: e.message } + } +} + +const secureCookie = (user) => { + const expires = new Date() + expires.setFullYear(expires.getFullYear() + 1) + + const cookieAttrs = [ + `Expires=${expires.toUTCString()}`, + 'HttpOnly=true', + 'Path=/', + 'SameSite=Strict', + `Secure=${process.env.NODE_ENV !== 'development'}`, + ] + const data = JSON.stringify({ id: user.id }) + + const encrypted = CryptoJS.AES.encrypt( + data, + process.env.SESSION_SECRET + ).toString() + + return [`session=${encrypted}`, ...cookieAttrs].join('; ') +} + +const getProviderUser = async (token) => { + const response = await fetch('https://api.github.com/user', { + headers: { Authorization: `Bearer ${token}` }, + }) + const body = JSON.parse(await response.text()) + + return body +} + +const getUser = async ({ providerUser, accessToken, scope }) => { + const { user, identity } = await findOrCreateUser(providerUser) + + await db.identity.update({ + where: { id: identity.id }, + data: { accessToken, scope, lastLoginAt: new Date() }, + }) + + return user +} + +const findOrCreateUser = async (providerUser) => { + const identity = await db.identity.findFirst({ + where: { provider: 'github', uid: providerUser.id.toString() }, + }) + + if (identity) { + // identity exists, return the user + const user = await db.user.findUnique({ where: { id: identity.userId } }) + return { user, identity } + } + + // identity not found, need to create it and the user + return await db.$transaction(async (tx) => { + const user = await tx.user.create({ + data: { + email: providerUser.email, + fullName: providerUser.name, + }, + }) + + const identity = await tx.identity.create({ + data: { + userId: user.id, + provider: 'github', + uid: providerUser.id.toString(), + }, + }) + + return { user, identity } + }) +} +``` + +## Enhancements + +This is barebones implementation of a single OAuth provider. What can we do to make it better? + +### More Providers + +We hardcoded "github" as the provider in a couple of places, as well as hardcoding GitHub's API endpoint for fetching user data. That obviously limits this implementation to only support GitHub. + +A more flexible version could include the provider as part of the callback URL, and then our code can see that and choose which provider to set and how to get user details. Maybe the OAuth redirect is `/oauth/github/callback` and `/oauth/twitter/callback`. Then parse that out and delegate to a different function altogether, or implement each provider's specific info into separate files and `import` them into the `/oauth` function, invoking each as needed. + +### Changing User Details + +Right now we just copy the user details from GitHub right into our new User object. Maybe we want to give the user a chance to update those details first, or add additional information before saving to the database. One solution could be to create the `Identity` record, but redirect to your real Signup page with the info from GitHub (and the `accessToken`) and prefill the signup fields, giving the user a chance to change or enhance them, adding the `accessToken` to a hidden field. Then when the user submits that form, if the `accessToken` is part of the form, get the user details from GitHub again (so we can get their GitHub `id`) and then create the `Identity` and `User` record as before. + +### Better Error Handling + +Right now if an error occurs in the OAuth flow, the browser just stays on the `/oauth/callback` function and sees a plain text error message. A better experience would be to redirect the user back to the login page, with the error message in a query string variable, something like `http://localhost:8910/login?error=Application+not+authorized` Then in the LoginPage, add a `useParams()` to pull out the query variables, and show a toast message if an error is present: + +```jsx +import { useParams } from '@redwoodjs/router' +import { toast, Toaster } from '@redwoodjs/web/toast' + +const LoginPage = () => { + const params = useParams() + + useEffect(() => { + if (params.error) { + toast.error(error) + } + }, [params] + + return ( + <> + + // ... + + ) +} +``` diff --git a/docs/versioned_docs/version-7.0/how-to/pagination.md b/docs/versioned_docs/version-7.0/how-to/pagination.md new file mode 100644 index 000000000000..d76f75a9b0ff --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/pagination.md @@ -0,0 +1,165 @@ +# Pagination + +This tutorial will show you one way to implement pagination in an app built using RedwoodJS. It builds on top of [the tutorial](../tutorial/foreword.md) and I'll assume you have a folder with the code from the tutorial that you can continue working on. (If you don't, you can clone this repo: https://github.com/thedavidprice/redwood-tutorial-test) + +![redwoodjs-pagination](https://user-images.githubusercontent.com/30793/94778130-ec6d6e00-03c4-11eb-9fd0-97cbcdf68ec2.png) + +The screenshot above shows what we're building. See the pagination at the bottom? The styling is up to you to fix. + +So you have a blog, and probably only a few short posts. But as the blog grows bigger you'll soon need to paginate all your posts. So, go ahead and create a bunch of posts to make this pagination worthwhile. We'll display five posts per page, so begin with creating at least six posts, to get two pages. + +We'll begin by updating the SDL. To our `Query` type a new query is added to get just a single page of posts. We'll pass in the page we want, and when returning the result we'll also include the total number of posts as that'll be needed when building our pagination component. + +```javascript title="api/src/graphql/posts.sdl.js" +export const schema = gql` + # ... + + type PostPage { + posts: [Post!]! + count: Int! + } + + type Query { + postPage(page: Int): PostPage + posts: [Post!]! + post(id: Int!): Post! + } + + # ... + ` +``` + +You might have noticed that we made the page optional. That's because we want to be able to default to the first page if no page is provided. + +Now we need to add a resolver for this new query to our posts service. +```javascript title="api/src/services/posts/posts.js" +const POSTS_PER_PAGE = 5 + +export const postPage = ({ page = 1 }) => { + const offset = (page - 1) * POSTS_PER_PAGE + + return { + posts: db.post.findMany({ + take: POSTS_PER_PAGE, + skip: offset, + orderBy: { createdAt: 'desc' }, + }), + count: db.post.count(), + } +} +``` + +So now we can make a GraphQL request (using [Apollo](https://www.apollographql.com/)) for a specific page of our blog posts. And the resolver we just updated will use [Prisma](https://www.prisma.io/) to fetch the correct posts from our database. + +With these updates to the API side of things done, it's time to move over to the web side. It's the BlogPostsCell component that makes the gql query to display the list of blog posts on the HomePage of the blog, so let's update that query. + +```jsx title="web/src/components/BlogPostsCell/BlogPostsCell.js" +export const QUERY = gql` + query BlogPostsQuery($page: Int) { + postPage(page: $page) { + posts { + id + title + body + createdAt + } + count + } + } +` +``` + +The `Success` component in the same file also needs a bit of an update to handle the new gql query result structure. + +```jsx title="web/src/components/BlogPostsCell/BlogPostsCell.js" +export const Success = ({ postPage }) => { + return postPage.posts.map((post) => ) +} +``` + +Now we need a way to pass a value for the `page` parameter to the query. To do that we'll take advantage of a little RedwoodJS magic. Remember from the tutorial how you made the post id part of the route path `()` and that id was then sent as a prop to the BlogPostPage component? We'll do something similar here for the page number, but instead of making it a part of the url path, we'll make it a url query string. These, too, are magically passed as a prop to the relevant page component. And you don't even have to update the route to make it work! Let's update `HomePage.js` to handle the prop. + +```jsx title="web/src/pages/HomePage/HomePage.js" +const HomePage = ({ page = 1 }) => { + return ( + + + + ) +} +``` + +So now if someone navigates to https://awesomeredwoodjsblog.com?page=2 (and the blog was actually hosted on awesomeredwoodjsblog.com), then `HomePage` would have its `page` prop set to `"2"`, and we then pass that value along to `BlogPostsCell`. If no `?page=` query parameter is provided `page` will default to `1` + +Going back to `BlogPostsCell` there is one me thing to add before the query parameter work. + +```jsx title="web/src/components/BlogPostsCell/BlogPostsCell.js" +export const beforeQuery = ({ page }) => { + page = page ? parseInt(page, 10) : 1 + + return { variables: { page } } +} +``` + +The query parameter is passed to the component as a string, so we need to parse it into a number. + +If you run the project with `yarn rw dev` on the default port 8910 you can now go to http://localhost:8910 and you should only see the first five posts. Change the URL to http://localhost:8910?page=2 and you should see the next five posts (if you have that many, if you only have six posts total you should now see just one post). + +The final thing to add is a page selector, or pagination component, to the end of the list of posts to be able to click and jump between the different pages. + +Generate a new component with`yarn rw g component Pagination` + +```jsx title="web/src/components/Pagination/Pagination.js" +import { Link, routes } from '@redwoodjs/router' + +const POSTS_PER_PAGE = 5 + +const Pagination = ({ count }) => { + const items = [] + + for (let i = 0; i < Math.ceil(count / POSTS_PER_PAGE); i++) { + items.push( +
  • + + {i + 1} + +
  • + ) + } + + return ( + <> +

    Pagination

    +
      {items}
    + + ) +} + +export default Pagination +``` + +Keeping with the theme of the official RedwoodJS tutorial we're not adding any css, but if you wanted the pagination to look a little nicer it'd be easy to remove the bullets from that list, and make it horizontal instead of vertical. + +Finally let's add this new component to the end of `BlogPostsCell`. Don't forget to `import` it at the top as well. + +```jsx title="web/src/components/BlogPostsCell/BlogPostsCell.js" +import Pagination from 'src/components/Pagination' + +// ... + +export const Success = ({ postPage }) => { + return ( + <> + {postPage.posts.map((post) => )} + + + + ) +} +``` + +And there you have it! You have now added pagination to your redwood blog. One technical limitation to the current implementation is that it doesn't handle too many pages very gracefully. Just imagine what that list of pages would look like if you had 100 pages! It's left as an exercise to the reader to build a more fully featured Pagination component. + +Most of the code in this tutorial was copy/pasted from the ["Hammer Blog" RedwoodJS example](https://github.com/redwoodjs/example-blog) + +If you want to learn more about [pagination with Prisma](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/pagination) and [pagination with Apollo](https://www.apollographql.com/docs/react/data/pagination/) they both have excellent docs on the topic. diff --git a/docs/versioned_docs/version-7.0/how-to/role-based-access-control.md b/docs/versioned_docs/version-7.0/how-to/role-based-access-control.md new file mode 100644 index 000000000000..da138d62d71f --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/role-based-access-control.md @@ -0,0 +1,626 @@ +--- +slug: role-based-access-control-rbac +--- + +# Role-based Access Control (RBAC) + +Role-based access control (RBAC) in RedwoodJS aims to be a simple, manageable approach to access management. It adds control over who can access routes, see features, or invoke services or functions to the existing `useAuth()` hook on the web side and `requireAuth()` helper on the api side. + +A **role** is a collection of permissions applied to a set of users based on the part they play in an organization or setting. Using roles makes it easier to add, remove, and adjust these permissions as your user base increases in scale and functionality increases in complexity. + +This how to examines how RBAC is implemented in RedwoodJS and how to protect areas of your app's sides -- web, api, or custom. + +### Quick Links + +- Authentication vs Authorization +- House and Blog Role-access Examples +- Identity as a Service +- How To Code Examples +- Additional Resources + +## Authentication vs Authorization + +How is Authorization different from Authentication? + +- **Authentication** is the act of validating that users are who they claim to be. +- **Authorization** is the process of giving the user permission to access a specific resource or function. + +In even more simpler terms authentication is the _process_ of verifying oneself, while authorization is the _process_ of verifying what you have access to. + +### House and Blog Role-access Examples + +When thinking about security, it helps to think in terms of familiar examples. + +Let's consider one from the physical world -- access to the various rooms of a 🏠 house -- and compare it to a digital example of a Blog. + +#### RBAC Example: House + +Consider a 🏠 while you are away on vacation. + +You are the **_owner_** and have given out 🔑 keys to your **neighbor** and a **plumber** that unlock the 🏠 🚪 door. + +You've assigned them passcodes to turn off the 🚨 alarm that identifies them as either a neighbor or plumber. + +Your neighbor can enter the kitchen to get food to feed your 😸 and the your office to water your 🌵 and also use the 🚽. + +The plumber can access the basement to get at the pipes, use the 🚽, access the laundry or 🍴 kitchen to fix the sink, but not your office. + +Neither of them should be allowed into your 🛏 bedroom. + +The owner knows who they claim to be and has given them keys. + +The passcodes inform what access they have because it says if they are a neighbor or plumber. + +If your 🏠 could enforce RBAC, it needs to know the rules. + +#### Role Matrix for House RBAC + +| Role | Kitchen | Basement | Office | Bathroom | Laundry | Bedroom | +| -------- | :-----: | :------: | :----: | :------: | :-----: | :-----: | +| Neighbor | ✅ | | ✅ | ✅ | | | +| Plumber | ✅ | ✅ | | ✅ | ✅ | | +| Owner | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | + +#### RBAC Example: Blog + +In our Blog example anyone can view Posts (authenticated or not). They are _public_. + +- Authors can write new Posts. +- Editors can update them. +- Publishers can write, review, edit and delete Posts. +- And admins can do it all (and more). + +#### Role Matrix for Blog RBAC + +| Role | View | New | Edit | Delete | Manage Users | +| --------- | :---: | :---: | :---: | :----: | :----------: | +| Author | ✅ | ✅ | | | | +| Editor | ✅ | | ✅ | | | +| Publisher | ✅ | ✅ | ✅ | ✅ | | +| Admin | ✅ | ✅ | ✅ | ✅ | ✅ | + +## Auth and RBAC Checklist + +In order to integrate RBAC in a RedwoodJS app, you will have to: + +- Implement an Identity as a Service/Authentication Provider +- Define and Assign Roles +- Set Roles to Current User +- Enforce Access +- Secure Web and Api sides + +Helps to be familiar with [Blog Tutorial](../tutorial/foreword.md) as well as pages, cells, services, authentication, and routes. + +## Identity as a Service + +> "Doing authentication correctly is as hard, error-prone, and risky as rolling your own encryption." + +Developers no longer need to be responsible for developing their own identity service. The identity service manages authentication and the complexity associated. + +RedwoodJS generates Authentication Providers for several common Identity Services. + +Some offer RBAC support natively together with a UI to manage users and role assignment. + +- Netlify Identity +- Auth0 + +In other cases, you can still use an Identity Service such as: + +- Magic.link +- Custom + +However, in these cases you must provide the `currentUser.roles` information directly, such as from a User to Role database table or other source. + +### Netlify Identity Access Token (JWT) & App Metadata + +The following is a brief example of a **decoded** JSON Web Token (JWT) similar to that issued by Netlify Identity. + +There are the following standard claims: + +- `exp`: When the token expires. +- `sub`: The token's subject, in this case the user identifier. + +Other common claims are `iss` for issuer and `aud` for audience (ie, the recipient for which the JWT is intended). + +Please see [Introduction to JSON Web Tokens](https://jwt.io/introduction/) for a complete discussion. + +This decoded token also includes: + +- `app_metadata`: Stores information (such as, support plan subscriptions, security roles, or access control groups) that can impact a user's core functionality, such as how an application functions or what the user can access. Data stored in app_metadata cannot be edited by users +- `user_metadata`: Stores user attributes such as preferences that do not impact a user's core functionality. Logged in users can edit their data stored in user_metadata typically by making an api call the Identity service user profile endpoint with their access_token to identify themselves. + +Roles may be stored within `app_metadata` or sometimes within `authorization` under `app_metadata`. + +```json +{ + "exp": 1598628532, + "sub": "1d271db5-f0cg-21f4-8b43-a01ddd3be294", + "email": "example+author@example.com", + "app_metadata": { + "roles": ["author"] + }, + "user_metadata": { + "full_name": "Arthur Author", + } +} +``` + +## How To Code Examples + +### Set Roles to Current User + +Roles may be stored within `app_metadata` or sometimes within `authorization` under `app_metadata`. + +The `parseJWT` helper will consider both locations to extract roles on the decoded JWT. + +```javascript title="api/lib/auth.js" +import { parseJWT } from '@redwoodjs/api' + +export const getCurrentUser = async (decoded) => { + return context.currentUser || { ...decoded, roles: parseJWT({ decoded }).roles } +} +``` + +#### Roles from a Database + +If your AuthProvider does not set the role information in the token, you can query roles from a database table. + +Consider the following schema where a `User` has many `UserRoles`. + +```javascript +model User { + id Int @id @default(autoincrement()) + uuid String @unique + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) + userRoles UserRole[] +} + +model UserRole { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) + name String + user User? @relation(fields: [userId], references: [id]) + userId Int? + + @@unique([name, userId]) +} +``` + +You can have seeded the `User` and `UserRole` tables with a new User that has a `uuid` from your identity service and also assigned that user a role of `editor`: + +```javascript +const uuid = '1683d760-5b4d-2ced-a078-23fdfebe2e19' + +const newUser = await db.user.create({ + data: { uuid }, +}) + +const userRole = await db.userRole.create({ + data: { + name: 'editor', + user: { + connect: { uuid }, + }, + }, +}) +``` + +Given that your decoded JWT `sub` claim will contain the `uuid`, you can fetch the roles by querying the `UserRoles` table and join in on the `User` via its `uuid`. + +Once you have the `UserRole`s, then you can set an array of their `name`s on the `currentUser`. + +```javascript title="api/lib/auth.js" +export const getCurrentUser = async (decoded) => { + const userRoles = await db.userRole.findMany({ + where: { user: { uuid: decoded.sub } }, + select: { name: true }, + }) + + const roles = userRoles.map((role) => { + return role.name + }) + + return context.currentUser || { roles } +} +``` + +### Web-side RBAC + +- useAuth() hook +- hasRole also checks if authenticated. + +* Routes +* NavLinks in a Layout +* Cells/Components +* Markup in Page + +#### How to Protect a Route + +To protect a `PrivateSet` route for access by a single role: + +```jsx +import { Router, Route, PrivateSet } from '@redwoodjs/router' + +const Routes = () => { + return ( + + + + + + ) +} +``` + +To protect a `PrivateSet` route for access by a multiple roles: + +```jsx +import { Router, Route, PrivateSet } from '@redwoodjs/router' + +const Routes = () => { + return ( + + + + + + ) +} +``` + +> Note: If you are using `Set` you can use its `private` attribute instead of the `` component. + +If the currentUser is not assigned the role, they will be redirected to the page specified in the `unauthenticated` property. Therefore, you can define a specific page to be seen when attempting to access the protected route and denied access such as a "forbidden" page: + +```jsx +import { Router, Route, PrivateSet } from '@redwoodjs/router' + +const Routes = () => { + return ( + + + + + + + + + + ) +} +``` + +#### How to Protect a NavLink in a Layout + +A `NavLink` is a specialized `Link` used for navigation or menu links that is styled differently when the current route is active. + +To protect the `NavLink` for access by a single role: + +```jsx +import { NavLink, Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' + +const SidebarLayout = ({ children }) => { + const { hasRole } = useAuth() + + return ( + ... + {hasRole('admin') && ( + + Manage Users + + ... + )} + ) +} +``` + +To protect the `NavLink` for access by multiple roles: + +```jsx +import { NavLink, Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' + +const SidebarLayout = ({ children }) => { + const { hasRole } = useAuth() + + return ( + ... + {hasRole(['admin', 'author', 'editor', 'publisher']) && ( + + Manage Posts + + ... + )} + ) +} +``` + +Note that `hasRole()` also checks if the currentUser is authenticated. + +#### How to Protect a Component + +To protect content in a `Component` for access by a single role: + +```jsx +import { useAuth } from '@redwoodjs/auth' + +const Post = ({ post }) => { + const { hasRole } = useAuth() + + return ( + + ) +} +``` + +To protect content in a `Component` for access by multiple roles: + +```jsx +import { useAuth } from '@redwoodjs/auth' + +const Post = ({ post }) => { + const { hasRole } = useAuth() + + return ( + + ) +} +``` + +Note that `hasRole()` also checks if the currentUser is authenticated. + +#### How to Protect Markup in a Page + +To protect markup in a `Page` for access by a single role: + +```jsx +import { useAuth } from "@redwoodjs/auth"; +import SidebarLayout from "src/layouts/SidebarLayout"; + +const SettingsPage = () => { + const { isAuthenticated, userMetadata, hasRole } = useAuth(); + + return ( + {isAuthenticated && ( +
    + {hasRole("admin") && ( + + Edit on Netlify + + )} +
    + )} + )} +} +``` + +To protect markup in a `Page` for access by multiple roles: + +```jsx +import { useAuth } from "@redwoodjs/auth"; +import SidebarLayout from "src/layouts/SidebarLayout"; + +const SettingsPage = () => { + const { isAuthenticated, userMetadata, hasRole } = useAuth(); + + return ( + {isAuthenticated && ( +
    + {hasRole(["admin", "userManager"]) && ( + + Edit on Netlify + + )} +
    + )} + )} +} +``` + +Note that `hasRole()` also checks if the currentUser is authenticated. + +### Api-side RBAC + +- Example `requireAuth()` +- Services +- Functions +- Default Roles using [Netlify Identity Triggers](https://docs.netlify.com/functions/trigger-on-events/) + +#### Example `requireAuth()` + +Use `requireAuth()` in your services to check that a user is logged in, whether or not they are assigned a role, and optionally raise an error if they're not. + +It checks for a single role: + +```javascript +requireAuth({ roles: 'editor' }) +``` + +or multiple roles: + +```javascript +requireAuth({ roles: ['admin', 'author', 'publisher'] }) +``` + +This function should be located in `api/src/lib/auth.js` for your RedwoodJS app (ie, where your `getCurrentUser()` is located). + +```javascript +export const requireAuth = ({ roles } = {}) => { + if (!isAuthenticated()) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (roles && !hasRole(roles)) { + throw new ForbiddenError("You don't have access to do that.") + } +} +``` + +#### How to Protect a Service + +```javascript +import { db } from 'src/lib/db' +import { requireAuth } from 'src/lib/auth' + +const CREATE_POST_ROLES = ['admin', 'author', 'publisher'] + +export const createPost = ({ input }) => { + requireAuth({ role: CREATE_POST_ROLES }) + + return db.post.create({ + data: { + ...input, + authorId: context.currentUser.sub, + publisherId: context.currentUser.sub, + }, + }) +} +``` + +#### How to Protect a Function + +Since `requireAuth()` raises an exception, catch and return a `HTTP 401 Unauthorized` or `HTTP 403 Forbidden` client error status response code. + +```javascript +import { requireAuth } from 'src/lib/auth' +import { AuthenticationError, ForbiddenError } from '@redwoodjs/api' + +export const handler = async (event, context) => { + try { + requireAuth({ roles: 'admin' }) + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: 'Permitted', + }), + } + } catch (e) { + if (e instanceof AuthenticationError) { + return { + statusCode: 401, + } + } else if (e instanceof ForbiddenError) { + return { + statusCode: 403, + } + } else { + return { + statusCode: 400, + } + } + } +} +``` + +#### How to Default Roles on Signup using Netlify Identity Triggers + +You can trigger serverless function calls when certain Identity events happen, like when a user signs up. + +Netlify Identity currently supports the following events: + +- `identity-validate`: Triggered when an Identity user tries to sign up via Identity. +- `identity-signup`: Triggered when an Identity user signs up via Netlify Identity. (Note: this fires for only email+password signups, not for signups via external providers e.g. Google/GitHub) +- `identity-login`: Triggered when an Identity user logs in via Netlify Identity + +To set a serverless function to trigger on one of these events, match the name of the function file to the name of the event. For example, to trigger a serverless function on identity-signup events, name the function file `identity-signup.js`. + +If you return a status other than 200 or 204 from one of these event functions, the signup or login will be blocked. + +If your serverless function returns a 200, you can also return a JSON object with new user_metadata or app_metadata for the Identity user. + +```javascript title="api/src/functions/identity-signup.js" +export const handler = async (req, _context) => { + const body = JSON.parse(req.body) + + const eventType = body.event + const user = body.user + const email = user.email + + let roles = [] + + if (eventType === 'signup') { + if (email.includes('+author')) { + roles.push('author') + } + + if (email.includes('+editor')) { + roles.push('editor') + } + + if (email.includes('+publisher')) { + roles.push('publisher') + } + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ app_metadata: { roles: roles } }), + } + } else { + return { + statusCode: 200, + } + } +} +``` + +#### How to invoke serverless functions while in dev + +So long as `yarn rw dev` is running, `netlify-cli` can be used to invoke your function. Steps are: + +```bash +# Install the cli +yarn add netlify-cli -g + +# Rebuild api after any changes to /functions +yarn rw build api + +# Invoke your function with the CLI, pointing it to the rw dev port +netlify functions:invoke --port 8910 +``` + +`` should be replaced by `identity-validate`, `identity-signup`, `identity-login` or your own function. + +Note that the netlify-cli does not generate fake user data for each invocation of an identity function. It always provides the same `Test Person` data. + +## Additional Resources + +- [RBAC Example & Demo Site](https://redwoodblog-with-identity.netlify.app/) +- [RBAC Example & Demo Site GitHub Repo](https://github.com/dthyresson/redwoodblog-rbac) +- [Netlify Identity](https://docs.netlify.com/visitor-access/identity/) +- [Netlify Identity Triggers](https://docs.netlify.com/functions/trigger-on-events/) +- [JSON Web Tokens (JWT)](https://jwt.io/) +- [5 Massive Benefits Of Identity As A Service](https://auth0.com/blog/5-massive-benefits-of-identity-as-a-service-for-developers/) diff --git a/docs/versioned_docs/version-7.0/how-to/self-hosting-redwood.md b/docs/versioned_docs/version-7.0/how-to/self-hosting-redwood.md new file mode 100644 index 000000000000..870b61ef84a9 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/self-hosting-redwood.md @@ -0,0 +1,164 @@ +# Self-hosting Redwood (Serverful) +:::warning + +This doc has been deprecated in favor of the [Baremetal](../deploy/baremetal.md) docs. + +::: + +Do you prefer hosting Redwood on your own server, the traditional serverful way, instead of all this serverless magic? Well, you can! In this recipe we configure a Redwood app with PM2 and Nginx on a Linux server. + +> A code example can be found at https://github.com/njjkgeerts/redwood-pm2, and can be viewed live at http://redwood-pm2.nickgeerts.com. + +## Requirements + +You should have some basic knowledge of the following tools: + +- [PM2](https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/) +- [Nginx](https://nginx.org/en/docs/) +- Linux +- [Postgres](https://www.postgresql.org/docs/) + +## Configuration + +To self-host, you'll have to do a bit of configuration both to your Redwood app and your Linux server. + +### Adding Dependencies + +First add PM2 as a dev dependency to your project root: + +```termninal +yarn add -D pm2 +``` + +Then create a PM2 ecosystem configuration file. For clarity, it's recommended to rename `ecosystem.config.js` to something like `pm2.config.js`: + +```bash +yarn pm2 init +mv ecosystem.config.js pm2.config.js +``` + +Last but not least, change the API endpoint in `redwood.toml`: + +```diff +- apiUrl = "/.redwood/functions" ++ apiUrl = "/api" +``` + +Optionally, add some scripts to your top-level `package.json`: + +```json +"scripts": { + "deploy:setup": "pm2 deploy pm2.config.js production setup", + "deploy": "pm2 deploy pm2.config.js production deploy" +} +``` + +We'll refer to these later, so even if you don't add them to your project, keep them in mind. + +### Linux server + +Your Linux server should have a user for deployment, configured with an SSH key providing access to your production environment. In this example, the user is named `deploy`. + +### Nginx + +Typically, you keep your Nginx configuration file at `/etc/nginx/sites-available/redwood-pm2` and symlink it to `/etc/nginx/sites-enabled/redwood-pm2`. It should look something like this: + +```nginx {10} +server { + server_name redwood-pm2.example.com; + listen 80; + + location / { + root /home/deploy/redwood-pm2/current/web/dist; + try_files $uri /index.html; + } + + location /api/ { + proxy_pass http://localhost:8911/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } +} +``` + +Please note that the trailing slash in `proxy_pass` is essential to correctly map the API functions. + +### PM2 + +Let's configure PM2 with the `pm2.config.js` file we made earlier. The most important variables are at the top. Note that the port is only used locally on the server and should match the port in the Nginx config: + +```javascript +const name = 'redwood-pm2' // Name to use in PM2 +const repo = 'git@github.com:njjkgeerts/redwood-pm2.git' // Link to your repo +const user = 'deploy' // Server user +const path = `/home/${user}/${name}` // Path on the server to deploy to +const host = 'example.com' // Server hostname +const port = 8911 // Port to use locally on the server +const build = `yarn install && yarn rw build && yarn rw prisma migrate deploy` + +module.exports = { + apps: [ + { + name, + node_args: '-r dotenv/config', + cwd: `${path}/current/`, + script: 'yarn rw serve api', + args: `--port ${port}`, + env: { + NODE_ENV: 'development', + }, + env_production: { + NODE_ENV: 'production', + }, + }, + ], + + deploy: { + production: { + user, + host, + ref: 'origin/master', + repo, + path, + ssh_options: 'ForwardAgent=yes', + 'post-deploy': `${build} && pm2 reload pm2.config.js --env production && pm2 save`, + }, + }, +} +``` + +If you need to seed your production database during your first deployment, `yarn redwood prisma migrate dev` will do that for you. + +> **Caveat:** the API seems to only work in fork mode in PM2, not [cluster mode](https://pm2.keymetrics.io/docs/usage/cluster-mode/). + +## Deploying + +First, we need to create the PM2 directories: + +```bash +yarn install +yarn deploy:setup +``` + +Your server directories are now set, but we haven't configured the `.env` settings yet. SSH into your server and create an `.env` file in the `current` subdirectory of the deploy directory: + +```bash +vim /home/deploy/redwood-pm2/current/.env +``` + +For example, add a `DATABASE_URL` variable: + +```env +DATABASE_URL=postgres://postgres:postgres@localhost:5432/redwood-pm2 +``` + +Now we can deploy the app! Just run the following; it should update the code, take care of database migrations, and restart the app in PM2: + +```bash +yarn deploy +``` + +Enjoy! 😁 diff --git a/docs/versioned_docs/version-7.0/how-to/sending-emails.md b/docs/versioned_docs/version-7.0/how-to/sending-emails.md new file mode 100644 index 000000000000..afeb4580fca5 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/sending-emails.md @@ -0,0 +1,389 @@ +# Sending Emails + +Something a lot of applications will eventually have to do is send emails. To demonstrate how you can do that with RedwoodJS we're going to build a simple list of users and their email addresses, and allow you to trigger an email to them. We'll also include some auditing features, so you get a history of emails you sent to your users. The audit logs will be implemented by using one service from within another service — a powerful RedwoodJS feature. + +The emails will be sent using the npm package [nodemailer](https://www.npmjs.com/package/nodemailer) together with [SendInBlue](https://sendinblue.com). + +## Setup + +The first thing to do is to create a new RedwoodJS project. + +```zsh +yarn create redwood-app --typescript email +``` + +When that's done, go into the `email` directory and install the `nodemailer` package. + +```zsh +yarn workspace api add nodemailer +``` + +### DB design + +Now, fire up your editor of choice and find the `schema.prisma` file and remove the example model. The app we're building is going to have two models. One for our users and one for the audit logs. Paste the following two models in your schema file. + +```graphql +model User { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + email String @unique + name String? + audits Audit[] +} + +model Audit { + id String @id @default(uuid()) + createdAt DateTime @default(now()) + updatedAt DateTime @default(now()) @updatedAt + userId String + user User @relation(fields: [userId], references: [id]) + log String +} +``` + +Technically all we really need in the User model is the email address and the Audit relation field. But personally I have never regretted having an id, and the two timestamps in my models. But I _have_ regretted _not_ having them, having to go back to add them later. So now I always include them from the start. And I also added a `name` field to the user, to make this example at least a little bit realistic 😁. A proper user model would most likely have way more fields. The audit model is also overly simplistic. Especially the single `log` string. A proper audit trail needs way more info. But for demo purposes it's good enough. Final thing I wanted to mention was the relation. We set up a one-to-many relation from the user to the audit logs so that we can easily find all logs belonging to a user by simply following the relation. + +Now we can go ahead and migrate our database and create the SDLs and services needed to interact with the Prisma model using GraphQL. + +```zsh +yarn rw prisma migrate dev --name email +``` + +### Scaffold + +One of Redwood's stand-out features is the scaffolds. We'll be using scaffolds here to quickly get a nice visual list of the users in our database to work with. + +```zsh +yarn rw g scaffold User +``` + +Let's do it for Audit as well + +```zsh +yarn rw g scaffold Audit +``` + +Now let's run the Redwood dev server to see what we've created so far. + +```zsh +yarn rw dev +``` + +Your web browser should open up and show the default Redwood app home page with a list of links to all your pages. Click on the `/users` link and then go ahead and create a few users. Since we're going to send emails to these users, use emails you can actually check. So you can make sure it works. A service I like to use for generating random users with real email addresses is https://www.fakenamegenerator.com. Just click the link on that page to activate the email address and you'll be able to send emails from your app, and see them arrive. + +So if you create three users you should see something like this + +![Screenshot showing list scaffolded list of users, with three example users](https://user-images.githubusercontent.com/30793/150651281-051d49d0-659c-481c-bed3-17a629d290e4.png) + +Clicking to show the details on one of the users you should see a page similar to what I have below here. To that page I've also added a button to send an email to the user. I'll show you how next! + +![Detailed view of single user, with button to send email](https://user-images.githubusercontent.com/30793/150651287-258e923e-9446-4bde-8e9c-c81275b8590c.png) + +### Button to send email + +To add our button, and the actions connected to it, we need to add a fair bit of code to the User component. I've put the full code below to make sure you don't miss anything. + +```tsx title="src/components/User/User.tsx" +import { useMutation } from '@redwoodjs/web' +import { toast } from '@redwoodjs/web/toast' +import { Link, routes, navigate } from '@redwoodjs/router' + +const DELETE_USER_MUTATION = gql` + mutation DeleteUserMutation($id: String!) { + deleteUser(id: $id) { + id + } + } +` + +const EMAIL_USER_MUTATION = gql` + mutation EmailUserMutation($id: String!) { + emailUser(id: $id) { + id + } + } +` + +const timeTag = (datetime) => { + return ( + + ) +} + +const User = ({ user }) => { + const [deleteUser] = useMutation(DELETE_USER_MUTATION, { + onCompleted: () => { + toast.success('User deleted') + navigate(routes.users()) + }, + onError: (error) => { + toast.error(error.message) + }, + }) + + const [emailUser] = useMutation(EMAIL_USER_MUTATION, { + onCompleted: () => { + toast.success('Email sent') + }, + onError: (error) => { + toast.error(error.message) + }, + }) + + const onDeleteClick = (id) => { + if (confirm('Are you sure you want to delete user ' + id + '?')) { + deleteUser({ variables: { id } }) + } + } + + const onEmailClick = (user) => { + if (confirm(`Are you sure you want to send an email to ${user.name}?`)) { + emailUser({ variables: { id: user.id } }) + } + } + + return ( + <> +
    +
    +

    + User {user.id} Detail +

    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    Id{user.id}
    Created at{timeTag(user.createdAt)}
    Updated at{timeTag(user.updatedAt)}
    Email{user.email}
    Name{user.name}
    +
    + + + ) +} + +export default User +``` + +We're using a GraphQL mutation here to trigger the sending of the email. To make that mutation work we need to add it to the users SDL. + +```ts title="users.sdl.ts" +export const schema = gql` + // ... + + type Mutation { + // ... + + emailUser(id: String!): User! @requireAuth + } +` +``` + +And then in the users service we'll just create a dummy method to start with. + +```ts title="users.ts" +// ... + +import type { Prisma } from '@prisma/client' + +// ... + +export const emailUser = async ({ id }: Prisma.UserWhereUniqueInput) => { + const user = await db.user.findUnique({ + where: { id }, + }) + + console.log('Sending email to', user) + + return user +} + +// ... +``` + +Now is a good time to go get a fresh cup of coffee, or other beverage of choice. When you come back we'll create an account at [SendInBlue](https://www.sendinblue.com) and use the credentials from there to send an email. + +## SendInBlue + +To actually send an email you need a mail server that you can talk to using SMTP. `nodemailer` has a really [simple example](https://nodemailer.com/about/#example) on their webpage that uses Ethereal. But that's only for test messages. The emails will never actually be delivered beyond Ethereal. Another option is to use your own GMail address (if you have one). But to get that working reliably you need to set up OAuth2, which isn't very straight forward. So your best bet here is actually to use a dedicated Cloud/SaaS solution. A lot of them have a free tier that lets you send enough emails for a small production app. We'll be using SendInBlue that offers 300 free emails per day. + +So go ahead and create an account with SendInBlue. They'll ask for an address and a phone number. They need it to prevent users from creating accounts to send spam emails from. When your account is created and set up you need to click on the menu in the upper right with your company name and select the "SMTP & API" option. + +![SendInBlue top right menu](https://user-images.githubusercontent.com/30793/150651291-21f5a7bd-6148-4cfe-97a1-2e9c3cab2d81.png) + +Then click on "SMTP" + +![SendInBlue SMTP tab-bar option](https://user-images.githubusercontent.com/30793/150651295-929e671a-da38-46ab-937c-a976b23a0fa0.png) + +Finally you need to generate a new SMTP key. Name it whatever you want, doesn't matter. You should get a dialog that looks like the screenshot below. Copy your key. + +![SendInBlue SMTP key dialog](https://user-images.githubusercontent.com/30793/150651301-523750b3-7732-4a15-bc0e-746811a4bb20.png) + +Now switch to your code editor and open the `.env` file. At the bottom, on a new row, create a new environment variable called SEND_IN_BLUE_KEY. It should look like this, but with your unique key. + +``` +SEND_IN_BLUE_KEY=xsmtpsib-7fa6eb37c244429933ea870185063c493ba1c820f826c5f620877dd815392602-rZgB6GUV1CF2NLAK +``` + +That's it for SendInBlue. It's set up, and you have the key you need to send emails. If you have your dev server still running, you need to restart it for the new environment variable to be picked up. + +## Sending an email + +Now let's write the function that'll fire off the email. On the api side, in the `lib` folder, create a new file named `email.ts`. Paste this code in the file + +```ts title="email.ts" +import * as nodemailer from 'nodemailer' + +interface Options { + to: string | string[] + subject: string + text: string + html: string +} + +export async function sendEmail({ to, subject, text, html }: Options) { + console.log('Sending email to:', to) + + // create reusable transporter object using SendInBlue for SMTP + const transporter = nodemailer.createTransport({ + host: 'smtp-relay.sendinblue.com', + port: 587, + secure: false, // true for 465, false for other ports + auth: { + user: 'your@email.com', + pass: process.env.SEND_IN_BLUE_KEY, + }, + }) + + // send mail with defined transport object + const info = await transporter.sendMail({ + from: '"Your Name" ', + to: Array.isArray(to) ? to : [to], // list of receivers + subject, // Subject line + text, // plain text body + html, // html body + }) + + return info +} +``` + +In the code above you should replace "your@email.com" in two places with the email you used when signing up for SendInBlue. You can also change the name used for "From:". Note: Remember to use the email address as it is shown in the SendInBlue website, it is case sensitive. + +Now let's go back to the users service and add the missing pieces there. At the top, after the db import, add the `sendEmail` import + +```ts title="users.ts" +// ... + +import { sendEmail } from 'src/lib/email' + +// ... +``` + +Then paste this function somewhere in the file + +```ts title="users.ts" +// ... + +function sendTestEmail(emailAddress: string) { + const subject = 'Test Email' + const text = + 'This is a manually triggered test email.\n\n' + + 'It was sent from a RedwoodJS application.' + const html = + 'This is a manually triggered test email.

    ' + + 'It was sent from a RedwoodJS application.' + return sendEmail({ to: emailAddress, subject, text, html }) +} + +// ... +``` + +Finally, replace the `console.log` we left earlier with this code + +```ts title="users.ts" +// ... + +await sendTestEmail(user.email) + +// ... +``` + +You can now test your app's new email sending capabilities by clicking on the email button you added previously. You should see a "Sending email to: horacebcarrier@teleworm.us" message in your terminal, and a few minutes later it should pop up in the users email inbox. (If you're using the email addresses generated by fakenamegenerator you need to be patient, it does take a while before you can see new emails arriving.) + +## Using one service from another service + +The final thing to add is the auditing. When the users service sends an email we want to call the audits service to add a new audit log entry. Redwood makes this really easy. All you have to do is import the service and you can use all the functions it exports! + +One thing I wanted to note here is that this might bypass security measures you have in place. When you call a service from the web side of your project you use GraphQL and the service is then protected by the `@requireAuth` directive. If you have a service that's open for everyone (i.e. that uses `@skipAuth`) and that service imports and uses another service it will be allowed to call any function in there, no matter what directives they use on the graphql side of things. In our case the `emailUser` mutation is using `@requireAuth`, so we're not affected by this. + +With that little PSA out of the way, let's make this auditing stuff happen! + +```ts title="users.ts" +// ... + +import { createAudit } from '../audits/audits' + +// ... + +export const emailUser = async ({ id }: Prisma.UserWhereUniqueInput) => { + // ... + + await sendTestEmail(user.email) + await createAudit({ + input: { userId: id, log: 'Admin sent test email to user' }, + }) + + // ... +} + +// ... +``` + +That's it! We just import the audits service and call the exported `createAudit` function. The syntax for the argument object that is passed to `createAudit` might not be super obvious, but the TypeScript types help a lot with how it should be structured! What we're doing is we're connecting this new audit log with an existing user, and setting the log message. The audit entries will automatically get a timestamp (and a generated id). + +To view the audit logs you can use the scaffolded pages we created earlier. Just navigate to http://localhost:8910/audits and you should see them there. + +Thanks for reading this! If you liked it, or have any questions, don't hesitate to reach out on [our forums](https://community.redwoodjs.com) or in our [Discord chat](https://discord.gg/jjSYEQd). diff --git a/docs/versioned_docs/version-7.0/how-to/supabase-auth.md b/docs/versioned_docs/version-7.0/how-to/supabase-auth.md new file mode 100644 index 000000000000..f5425b735daa --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/supabase-auth.md @@ -0,0 +1,685 @@ +# Supabase Auth + +Let's call this how to a port of the [Redwood GoTrue Auth how to](gotrue-auth.md) to [Supabase](https://supabase.io/). +I won't get original style points because I copy-pasted (and updated, for good measure) the original. +Why? Because Supabase auth is based on [Netlify GoTrue](https://github.com/netlify/gotrue), an API service for handling user registration and authentication. The Supabase folks build on solid open-source foundations. + +Once I connected these dots, the Redwood GoTrue Auth how to became a handy resource as I climbed the auth learning curve (and I started from sea level). Hopefully this Supabase-specific edition will help you climb your own too. + +## Time to Cook + +In this recipe, we'll: + +- Configure a Redwood app with Supabase auth +- Create a Sign Up form, a Sign In form, and a Sign Out button +- Add auth links that display the correct buttons based on our auth state + +But first, some housekeeping... + +## Prerequisites + +Before getting started, there are a few steps you should complete: + +- [Create a Redwood app](../tutorial/chapter1/installation.md) +- [Create a Supabase account](https://www.supabase.io/) +- [Go through the Supabase React Quick Start](https://supabase.io/docs/guides/with-react) +- [Go through the Supabase Redwood Quick Start](https://supabase.io/docs/guides/with-redwoodjs) +- Fire up a dev server: `yarn redwood dev` + +### About the Supabase Quick Starts + +Why the React Quick Start before the Redwood? I found it helpful to first interact directly with the [Supabase Client](https://github.com/supabase/supabase-js). Eventually, you'll use the [Redwood Auth wrapper](../authentication.md#supabase), which provides a level of abstraction and a clean, consistent style. But I needed a couple hours of direct client experimentation to gain comfort in the Redwood one. + +So, just this once, I hereby give you permission to fire-up Create React App as you follow-along the Supabase React Quick Start. I worked through it first. Then I worked through the Supabase Redwood Quick start, observing the slight differences. This helped me understand the details that the Redwood wrapper abstracts for us. + +> **Auth Alphabet Soup** +> +> If you're like me—and I'm pretty sure I'm just human—you may find yourself spinning in jumbled auth jargon. Hang in there, you'll get your auth ducks lined up eventually. +> +> I'm proud to tell you that I now know that the Redwood Supabase auth client wraps the Supabase GoTrueJS client, which is a fork of Netlify’s GoTrueJS client (which is different from Netlify Identity). And dbAuth is a totally separate auth option. Plus, I'll keep it simple and not use RBAC at the moment. +> +> Ahhh! It took me a few weeks to figure this out. + +## Back to Redwood + +Armed with some knowledge and insight from going through the Supabase Quick Starts, let's head back to the Redwood app created as part of the prerequisites. + +Start by installing the required packages and generating boilerplate for Redwood Auth, all with this simple [CLI command](../cli-commands.md#setup-auth): + +```bash +yarn redwood setup auth supabase +``` + +By specifying `supabase` as the provider, Redwood automatically added the necessary Supabase config to our app. Let's open up `web/src/App.[js/tsx]` and inspect. You should see: + +```jsx {1-2,12,17} title="web/src/App.[js/tsx]" +import { AuthProvider } from '@redwoodjs/auth' +import { createClient } from '@supabase/supabase-js' + +import { FatalErrorBoundary, RedwoodProvider } from '@redwoodjs/web' +import { RedwoodApolloProvider } from '@redwoodjs/web/apollo' + +import FatalErrorPage from 'src/pages/FatalErrorPage' +import Routes from 'src/Routes' + +import './index.css' + +const supabaseClient = createClient(process.env.SUPABASE_URL, process.env.SUPABASE_KEY) + +const App = () => ( + + + + + + + + + +) + +export default App +``` + +Now it's time to add the Supabase URL, public API KEY, and JWT SECRET (`SUPABASE_URL`, `SUPABASE_KEY`, and `SUPABASE_JWT_SECRET`) to your `.env` file. +You can find these items in your Supabase management console, under **Settings > API**: + +![Supabase console screen shot](https://user-images.githubusercontent.com/43206213/146407575-71ad2c94-8fa6-48d2-a403-d249f75569ea.png) + +Here's a `.env` example: + +```bash +# .env (in your root project directory) + +SUPABASE_URL=https://replacewithyoursupabaseurl.supabase.co +SUPABASE_KEY=eyJhb_replace_VCJ9.eyJy_with_your_wfQ.0Abb_anon_key_teLJs +SUPABASE_JWT_SECRET=eyJh_replace_CJ9.eyJy_with_your_NTQwOTB9.MGNZN_JWT_secret_JgErqxj4 +``` + +That's (almost) all for configuration. + +## Sign Up + +Sign Up feels like an appropriate place to start building our interface. +Our first iteration won't include features like email confirmation or password recovery. +To forgo email confirmation, turn off "Enable email confirmations" on your Supabase management console, found under `Authentication > Settings`: + +![Supabase email confirmation toggle](https://user-images.githubusercontent.com/43206213/147164458-1b6723ef-d7dd-4c7c-b228-73ca4ba7b1ff.png) + +_Now_ we're done with configuration. Back to our app... + +## The Sign Up Page + +Let's generate a Sign Up page: + +```bash +yarn redwood generate page signup +``` + +This adds a Sign Up [route](../router.md) to our routes file and creates a `SignupPage` component. + +In the just-generated `SignupPage` component (`web/src/pages/SignupPage/SignupPage.[js/tsx]`), let's import some [Redwood Form components](../forms.md) and make a very basic form: + +```jsx title="web/src/pages/SignupPage/SignupPage.[js/tsx]" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' + +const SignupPage = () => { + return ( + <> +

    Sign Up

    +
    + + + Sign Up + + + ) +} + +export default SignupPage +``` + +Did I mention it was basic? If you want to add some polish, you might find both the [Redwood Form docs](../forms.md) and the [tutorial section on forms](../tutorial/chapter3/forms.md) quite useful. For our purposes, let's just focus on the functionality. + +Now that we have a form interface, we're going to want to do something when the user submits it. Let's add an `onSubmit` function to our component and pass it as a prop to our Form component: + +```jsx {4-6,11} title="web/src/pages/SignupPage/SignupPage.[js/tsx]" +// ... + +const SignupPage = () => { + const onSubmit = (data) => { + // do something here + } + + return ( + <> +

    Sign Up

    +
    + + + Sign Up + + + ) +} + +//... +``` + +The _something_ we need to do is—surprise!—sign up. To do this, we'll need a way to communicate with `` and the Supabase GoTrue-JS client we passed to it. Look no further than the [`useAuth` hook](../authentication.md#api), which lets us subscribe to our auth state and its properties. In our case, we'll be glad to now have access to `client` and, thusly, our Supabase GoTrue-JS instance and [all of its functions](https://github.com/supabase/supabase-js). + +Let's import `useAuth` and destructure `client` from it in our component: + +```jsx {2,5} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SignupPage = () => { + const { client } = useAuth() + const onSubmit = (data) => { + // do something here + } + + return ( + <> +

    Sign Up

    +
    + + + Sign Up + + + ) +} + +export default SignupPage +``` + +And now we'll attempt to create a new user in the `onSubmit` function with [`client.auth.signUp()`](https://supabase.io/docs/reference/javascript/auth-signup) by passing the `email` and `password` values that we captured from our form: + +```jsx {8-16} title="web/src/pages/SignupPage/SignupPage.[js/tsx]" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SignupPage = () => { + const { client } = useAuth() + + const onSubmit = async (data) => { + try { + const response = await client.auth.signUp({ + email: data.email, + password: data.password + }) + console.log('response: ', response) + } catch(error) { + console.log('error: ', error) + } + } + + return ( + <> +

    Sign Up

    +
    + + + Sign Up + + + ) +} +export default SignupPage +``` + +Presently, our sign up works as is, but simply console-logging the response from `client.auth.signup()` is hardly useful behavior. + +Let's display errors to the user if there are any. To do this, we'll set up `React.useState()` to manage our error state and conditionally render the error message. We'll also want to reset the error state at the beginning of every submission with `setError(null)`: + +```jsx {6,9,16,18,26} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SignupPage = () => { + const { client } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = async (data) => { + setError(null) + try { + const response = await client.auth.signUp({ + email: data.email, + password: data.password + }) + console.log('response: ', response) + response?.error?.message && setError(response.error.message) + } catch(error) { + setError(error.message) + } + } + + return ( + <> +

    Sign Up

    +
    + {error &&

    {error}

    } + + + Sign Up + + + ) +} +export default SignupPage +``` + +> Errors may be returned in two fashions: +> +> 1. upon promise fulfillment, within the `error` property of the object returned by the promise +> +> 2. upon promise rejection, within an error returned by the promise (you can handle this via the `catch` block) + +Now we can handle a successful submission. If we sign up without email confirmation, then successful sign up also _signs in_ the user. Once they've signed in, we'll want to redirect them back to our app. + +First, if you haven't already, [generate](../cli-commands.md#generate-page) a homepage: + +```bash +yarn redwood generate page home / +``` + +Let's import `routes` and `navigate` from [Redwood Router](../router.md#navigate) and use them to redirect to the home page upon successful sign up: + +```jsx {3,16} title="web/src/pages/SignupPage/SignupPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' +import { routes, navigate } from '@redwoodjs/router' + +const SignupPage = () => { + const { client } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = async (data) => { + setError(null) + try { + const response = await client.auth.signUp({ + email: data.email, + password: data.password + }) + response?.error?.message ? setError(response.error.message) : navigate(routes.home()) + } catch(error) { + setError(error.message) + } + } + + return ( + <> +

    Sign Up

    +
    + {error &&

    {error}

    } + + + Sign Up + + + ) +} +export default SignupPage +``` + +Hoorah! We've just added a sign up page and created a sign up form. We created a function to sign up users and we redirect users to the home page upon successful submission. Let's move on to Sign In. + +## Sign In + +Let's get right to it. Start by [generating](../cli-commands.md#generate-page) a sign in page: + +```bash +yarn redwood generate page signin +``` + +Next we'll add a basic form with `email` and `password` fields, some error reporting, and a hollow `onSubmit` function: + +```jsx title="web/src/pages/SigninPage/SigninPage.[js/tsx]" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' + +const SigninPage = () => { + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + // do sign in here + } + + return ( + <> +

    Sign In

    +
    + {error &&

    {error}

    } + + + Sign In + + + ) +} + +export default SigninPage +``` + +Then we'll need to import `useAuth` from `@redwoodjs/auth` and destructure `logIn` so that we can use it in our `onSubmit` function: + +```jsx {2,5} title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = (data) => { + setError(null) + // do sign in here + } + + return ( + <> +

    Sign In

    +
    + {error &&

    {error}

    } + + + Sign In + + + ) +} + +export default SigninPage +``` + +Now we'll add `logIn` to our `onSubmit` function. This time we'll be passing an object to our function as we're using Redwood Auth's `logIn` function directly (as opposed to `client`). This object takes an email and password. + +```jsx {10-15} title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = async (data) => { + setError(null) + try { + const response = await logIn({ email: data.email, password: data.password }) + // do something + } catch(error) { + setError(error.message) + } + } + + return ( + <> +

    Sign In

    +
    + {error &&

    {error}

    } + + + Sign In + + + ) +} + +export default SigninPage +``` + +Let's redirect our user back to the home page upon a successful login. + +In our `SigninPage`, import `navigate` and `routes` from [`@redwoodjs/router`](../router.md) and add them after awaiting `logIn`: + +```jsx {10-16} title="web/src/pages/SigninPage/SigninPage.js" +import { Form, TextField, PasswordField, Submit } from '@redwoodjs/forms' +import { useAuth } from '@redwoodjs/auth' +import { navigate, routes } from '@redwoodjs/router' + +const SigninPage = () => { + const { logIn } = useAuth() + const [error, setError] = React.useState(null) + + const onSubmit = async (data) => { + setError(null) + try { + const response = await logIn({ email: data.email, password: data.password }) + response?.error?.message ? setError(response.error.message) : navigate(routes.home()) + } catch(error) { + setError(error.message) + } + } + + return ( + <> +

    Sign In

    +
    + {error &&

    {error}

    } + + + Sign In + + + ) +} + +export default SigninPage +``` + +Well done! We've created a sign in page and form that successfully handles sign in. + +> The remainder of the how to is the same as the [Netlify GoTrue Auth](gotrue-auth.md) version. This highlights one of the fun benefits of the Redwood Auth wrappers: code specific to a certain auth implementation scheme can live in a few specific spots, as we walked through above. Then, general Redwood Auth functions can be used elsewhere in the app. + +## Sign Out + +Sign Out is by far the easiest to implement. All we need to do is call `useAuth`'s `logOut` method. + +Let's start by [generating a component](../cli-commands.md#generate-component) to house our Sign Out Button: + +```bash +yarn redwood generate component signoutBtn +``` + +In the `web/src/components/SignoutBtn/SignoutBtn.js` file we just generated, let's render a button and add a click handler: + +```jsx title="web/src/components/SignoutBtn/SignoutBtn.[js/tsx]" +const SignoutBtn = () => { + const onClick = () => { + // do sign out here. + } + return +} + +export default SignoutBtn +``` + +Now let's import `useAuth` from `@redwoodjs/auth`. We'll destructure its `logOut` method and invoke it in `onClick`: + +```jsx {1,4,7} title="web/src/components/SignoutBtn/SignoutBtn.[js/tsx]" +import { useAuth } from '@redwoodjs/auth' + +const SignoutBtn = () => { + const { logOut } = useAuth() + + const onClick = () => { + logOut() + } + return +} + +export default SignoutBtn +``` + +This works as is, but because the user may be in a restricted part of your app when they sign out, we should make sure to navigate them away from this page: + +```jsx {2,8-9} title="web/src/components/SignoutBtn/SignoutBtn.[js/tsx]" +import { useAuth } from '@redwoodjs/auth' +import { navigate, routes } from '@redwoodjs/router' + +const SignoutBtn = () => { + const { logOut } = useAuth() + + const onClick = async () => { + await logOut() + navigate(routes.home()) + } + + return +} + +export default SignoutBtn +``` + +And that's it for Sign Out! Err, of course, we're not rendering it anywhere in our app yet. In the next section, well add some navigation that conditionally renders the appropriate sign up, sign in, and sign out buttons based on our authentication state. + +## Auth Links + +In this section we'll implement some auth-related navigation that conditionally renders the correct links and buttons based on the user's authentication state: + +- when the user's logged out, we should see **Sign Up** and **Sign In** +- when the user's logged in, we should see **Log Out** + +Let's start by [generating a navigation component](../cli-commands.md#generate-component): + +```bash +yarn redwood generate component navigation +``` + +This creates `web/src/components/Navigation/Navigation.js`. In that file, let's import [the `Link` component and the `routes` object](../router.md#link-and-named-route-functions) from `@redwoodjs/router`. +We'll also import [`useAuth`](../authentication.md#api) since we'll need to subscribe to the auth state for our component to decide what to render: + +```jsx title="web/src/components/Navigation/Navigation.js" +import { Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' + +const Navigation = () => { + return +} + +export default Navigation +``` + +Let's destructure `isAuthenticated` from the `useAuth` hook and use it in some conditionals: + +```jsx {5,8-12} title="web/src/components/Navigation/Navigation.js" +import { Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' + +const Navigation = () => { + const { isAuthenticated } = useAuth() + return ( + + ) +} + +export default Navigation +``` + +Because Redwood Auth uses [React's Context API](https://reactjs.org/docs/context.html) to manage and broadcast the auth state, we can be confident that `isAuthenticated` will always be up-to-date, even if it changes from within another component in the tree (so long as it's a child of ``). In our case, when `isAuthenticated` changes, React will auto-magically take care of rendering the appropriate components. + +Now let's import our sign out button and add it, as well as sign in and sign up links, to the appropriate blocks in the conditional: + +```jsx {3,9-16} title="web/src/components/Navigation/Navigation.[js/tsx]" +import { Link, routes } from '@redwoodjs/router' +import { useAuth } from '@redwoodjs/auth' +import SignoutBtn from 'src/components/SignoutBtn/SignoutBtn' + +const Navigation = () => { + const { isAuthenticated } = useAuth() + return ( + + ) +} + +export default Navigation +``` + +We have a working navigation component, but we still need to render it somewhere. Let's [generate a layout](../cli-commands.md#generate-layout) called GlobalLayout: + +```bash +yarn redwood generate layout global +``` + +Then import and render the navigation component in the newly-generated `web/src/layouts/GlobalLayout/GlobalLayout`: + +```jsx title="web/src/layouts/GlobalLayout/GlobalLayout.js" +import Navigation from 'src/components/Navigation/Navigation' + +const GlobalLayout = ({ children }) => { + return ( + <> +
    + +
    +
    {children}
    + + ) +} + +export default GlobalLayout +``` + +Finally, we'll wrap each of our generated pages in this `GlobalLayout` component. To do this efficiently, we'll update the routes defined in our `web\src\Routes.[js/tsx]` file with the [`Set` component](../router.md#sets-of-routes): + +```jsx title="web/src/Routes.[js/tsx]" +import { Router, Route, Set } from '@redwoodjs/router' +import GlobalLayout from 'src/layouts/GlobalLayout/GlobalLayout' + +const Routes = () => { + return ( + + + + + + + + + ) +} + +export default Routes +``` + +Now we have navigation that renders the correct links and buttons based on our auth state. When the user signs in, they'll see a **Sign Out** button. When the user signs out, they'll see **Sign Up** and **Sign In** links. + +## Wrapping Up + +We've configured Supabase GoTrue Auth with Redwood Auth, created a Sign Up page, a Sign In page, and a Sign Out button, and added auth links to our layout. Nicely done! + +As you continue refining your app, the following resources may come in handy: + +- [Redwood Supabase Auth Installation & Setup](../authentication.md#supabase) +- [Redwood Auth Playground](https://redwood-playground-auth.netlify.app/supabase) +- [Redwood Supabase Auth Client Implementation](https://github.com/redwoodjs/redwood/blob/main/packages/auth/src/authClients/supabase.ts) +- [Supabase GoTrue client implementation](https://github.com/supabase/gotrue-js/blob/d7b334a4283027c65814aa81715ffead262f0bfa/src/GoTrueClient.ts) + +Finally, keep the following features in mind (future how to's could go deep into any of these): + +- Authentication state changes can be observed via an event listener. The [Supabase Auth playground](https://github.com/redwoodjs/playground-auth/blob/main/web/src/lib/code-samples/supabase.md) shows an example. +- Authentication options include... + - Passwordless (enter email and get a magic confirmation link) + - Third party (via GitHub, Google, etc) + - Phone one-time password + - Sign in with refresh token (JWTs are a critical part of the auth implementation) + +Thanks for tuning in! + +> If you spot an error or have trouble completing any part of this recipe, please feel free to open an issue on [Github](https://github.com/redwoodjs/redwoodjs.com) or create a topic on our [community forum](https://community.redwoodjs.com/). diff --git a/docs/versioned_docs/version-7.0/how-to/test-in-github-actions.md b/docs/versioned_docs/version-7.0/how-to/test-in-github-actions.md new file mode 100644 index 000000000000..d69484779906 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/test-in-github-actions.md @@ -0,0 +1,385 @@ +# Testing Redwood in GitHub actions + +A good testing strategy is important for any project. Redwood offers a few different types of tests that you can write to make your app more robust—to ship with confidence. In this guide we'll focus on how to run your Redwood tests in GitHub Actions, so you can test your app on every push or pull request. + +We'll set up a tiny project with a few tests and a Postgres database that'll be created and used in every test run on GitHub. If you need to set up tests for an existing project, or if you want to write better tests, check out the (amazing) [Testing](../testing) docs. + +## Background + +Let's start by introducing some concepts and products that we'll use in this guide. Then we'll get to the code. + +### Continuous Integration + +Continuous Integration (CI) is the practice of automatically running your tests on every push or pull request. This is a great way to catch bugs before they're merged into your main branch. + +### Continuous Deployment + +Continuous Deployment (CD) is the practice of automatically deploying your app (and database in this case) to a server after every successful test run. This is a great way to make sure your app or database is always up to date. + +### GitHub Actions and GitHub Secrets + +GitHub Actions is a service that allows you to run a series of commands on a virtual machine. You can use it to run tests, deploy your app, or do anything else you may think of. It's free for public repositories and has a free tier for private ones. For more information, check out [GitHub Actions' docs](https://docs.GitHub.com/en/actions). + +GitHub Secrets is a way to store sensitive information like API keys or passwords needed by GitHub Actions. They are encrypted and only exposed to the GitHub Actions service. You can use them to pass sensitive information to your tests or deploy script. For more information, check out [GitHub Secrets' docs](https://docs.GitHub.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository). + +## How to run tests in GitHub Actions + +All right, let's get to the code. In this how to, we'll focus on how to run your tests in GitHub Actions, but not how to write your tests (see the [Testing](../testing.md) doc for that). + +If you already have a project, you can skip to [4. Set up GitHub Actions](#4-set-up-GitHub-actions). + +### 1. Create a Redwood app + +Start by creating a Redwood app and `cd`ing into it: + +```sh +yarn create redwood-app rw-testing-gh-actions +cd rw-testing-gh-actions +``` + +Then make sure everything is working: + +```sh +yarn rw test +``` + +If it is, you should see something like this: + +```sh +... + + PASS api api/src/directives/requireAuth/requireAuth.test.ts + PASS api api/src/directives/skipAuth/skipAuth.test.ts + +Test Suites: 2 passed, 2 total +Tests: 3 passed, 3 total +Snapshots: 0 total +Time: 1.669 s +Ran all test suites. + +Watch Usage: Press w to show more. +``` + +### 2. Modify the Prisma schema + +For the purpose of this how to, we'll use the `UserExample` model that comes with the Redwood app. +We'll also change the database to Postgres since that's what we'll be using in our GitHub Actions. + +:::note Make sure you have a Postgres instance ready to use + +Here's a handy guide for how to [set it up locally](../local-postgres-setup). We'll need the connection string so our Redwood app knows where to store the data + +::: + +On to the changes. Modify your `schema.prisma` file to look like this: + +```graphql title="api/db/prisma.schema" +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +model UserExample { + id Int @id @default(autoincrement()) + email String @unique + name String? +} +``` + +Then add your connection strings to your `.env` file: + +:::warning + +Make sure you don't commit this file to your repo since it contains sensitive information. + +::: + +```bash +DATABASE_URL=postgres://postgres:postgres@localhost:54322/postgres +TEST_DATABASE_URL=postgres://postgres:postgres@localhost:54322/postgres +``` + +You need one connection string for your development database and one for your test database. Read more about it in the testing doc's [The Test Database](../testing#the-test-database) section. + +Next, navigate to the `scripts/seed.ts` file. Uncomment the contents of the array that contains the "fake" users. We'll also use the `createMany` method for inserting records in the database so we can skip the duplicates (see the [Prisma docs](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany) for more info). When you're all done, it should look like this: + +```ts title="scripts/seed.ts" + ... + + const data: Prisma.UserExampleCreateArgs['data'][] = [ + // To try this example data with the UserExample model in schema.prisma, + // uncomment the lines below and run 'yarn rw prisma migrate dev' + // + { name: 'alice', email: 'alice@example.com' }, + { name: 'mark', email: 'mark@example.com' }, + { name: 'jackie', email: 'jackie@example.com' }, + { name: 'bob', email: 'bob@example.com' }, + ] + console.log( + "\nUsing the default './scripts/seed.{js,ts}' template\nEdit the file to add seed data\n" + ) + + // Note: if using PostgreSQL, using `createMany` to insert multiple records is much faster + // @see: https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#createmany + Promise.all( + // + // Change to match your data model and seeding needs + // + data.map(async (data: Prisma.UserExampleCreateArgs['data']) => { + const record = await db.userExample.createMany({ + data, + skipDuplicates: true, + }) + console.log(record) + }) + ) + + ... +``` + +Finally, migrate your database: + +```sh +yarn rw prisma migrate dev --name init +``` + +### 3. Generate the UserExample scaffold + +We need some real tests to work with. Scaffolding out the `UserExample` model gives us everything we need to create "users" in our app, including some of the services tests which interact with our test database: + +```sh +yarn rw g scaffold UserExample +``` + +Make sure everything is still working: + +```sh +yarn rw test +``` + +You should see something like this: + +```sh + PASS web web/src/lib/formatters.test.tsx + PASS api api/src/services/userExamples/userExamples.test.ts + +Test Suites: 2 passed, 2 total +Tests: 21 passed, 21 total +Snapshots: 0 total +Time: 3.587 s +Ran all test suites related to changed files in 2 projects. +``` + +### 4. Set up GitHub Actions + +Create a new file in the `.github/workflows` directory (create those directories if they don't exist) called `ci.yml` and add the following: + +:::note + +This action only runs when the `main` branch is updated, but you can configure it to run on any other branch. + +::: + +```yml title=".github/workflows/ci.yml" +name: Redwood CI + +on: + push: + branches: ['main'] + pull_request: + branches: ['main'] + +env: + DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres + TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + services: + # Label used to access the service container + postgres: + # Docker Hub image + image: postgres + # Provide the password for postgres + env: + POSTGRES_PASSWORD: postgres + # Set health checks to wait until postgres has started + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps tcp port 5432 on service container to the host + - 5432:5432 + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + # install all the dependencies + - run: yarn install + # build the redwood app + - run: yarn rw build + # run the api tests + - run: yarn rw test api --no-watch + # run the web tests + - run: yarn rw test web --no-watch +``` + +Now push your changes to the `main` branch on GitHub; the "Redwood CI" action we just made will run like this: + +ci-results-1 + +1. Set up the job ("build") +2. Initialize the containers and create the postgres instance +3. Checkout the code +4. Set up Node.js +5. Install the Redwood app's dependencies +6. Build the Redwood app +7. Run the api tests +8. Run the web tests +9. Clean up the environment + +At this point, if all is well, you may start feeling the joy of automated tests! You push a commit, the Action runs, your tests pass, and you get a green checkmark. To savor this moment, consider updating one of your unit tests, making it fail. Push again. Watch it fail. Fix it. Push again. Watch it pass. Repeat and enjoy. + +### 5. Set up CI on pull requests only + +We want tests to run on every pull request so we can make sure that our code is working as expected. +Update the `ci.yml` file by removing the `push` event. The first lines should look like this: + +```yml title=".github/workflows/ci.yml" +name: Redwood CI for Pull Requests + +on: + pull_request: + branches: ['main'] + +... +``` + +Now, if you open or push to a pull request, this action will run and you'll see something like this: + +ci-pr-1 + +Once the action is done running, you can see the results in the "Conversation" tab: + +ci-pr-2 + +### 6. Deploy the database changes to an actual database + +Now for the CD—we want to use another action to deploy the database changes to an actual database, so we can automatically deploy the latest and greatest to a real environment. In this action we'll run the tests one more time against the local database, then deploy the database migrations to the external database. + +Create a new file in the `.github/workflows` directory called `cd.yml` and add the following: + +```yml title=".github/workflows/cd.yml" +name: Redwood CD for database deployment + +on: + push: + branches: ['main'] + +env: + DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres + TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + services: + # Label used to access the service container + postgres: + # Docker Hub image + image: postgres + # Provide the password for postgres + env: + POSTGRES_PASSWORD: postgres + # Set health checks to wait until postgres has started + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps tcp port 5432 on service container to the host + - 5432:5432 + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + # install all the dependencies + - run: yarn install + # build the redwood app + - run: yarn rw build + # run the api tests + - run: yarn rw test api --no-watch + # run the web tests + - run: yarn rw test web --no-watch + # run migrations on the actual database + - run: yarn rw prisma migrate deploy + # run seed script in the actual db + - run: yarn rw prisma db seed +``` + +The main changes are: + +- We only run the action on push events to the `main` branch +- We run the migrations and seed scripts after the tests + +### 7. Set up GitHub Secrets + +Because you're using an actual Postgres instance in your action, you need to set up the secrets for the database connection so that the username and password stay secret. + +Go to the "Settings" tab in your GitHub repo and click "Secrets", then "Actions", then "New repository secret". +In the name field, type `DATABASE_URL`. In the value field, put the actual secret—something like this: + +``` +postgres://[USER_NAME]:[PASSWORD]@[HOST]:[PORT]/postgres +``` + +When you're done, click "Add secret". This creates a new secret that you can use in your GitHub Actions. In this case, it species the connection string for the database we'll deploy changes to. + +You can use the secret in your GitHub Actions by using the `${{ secrets.DATABASE_URL }}` syntax: + +```yml +env: + DATABASE_URL: ${{ secrets.DATABASE_URL }} +``` + +Now you can merge the PR and the database changes will be tested, then deployed to the actual database. + +What's next? It is up to you—refine and streamline! + +As you consider automating your project workflows, keep the following wise philosophical observation in mind... + +
    +

    + Civilization advances by extending the number of important operations we can perform without thinking. +

    + + —Alfred North Whitehead + +
    diff --git a/docs/versioned_docs/version-7.0/how-to/using-a-third-party-api.md b/docs/versioned_docs/version-7.0/how-to/using-a-third-party-api.md new file mode 100644 index 000000000000..54db73a24da7 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/using-a-third-party-api.md @@ -0,0 +1,546 @@ +# Using a Third Party API + +The time will come when you'll need data from a source you don't own. This how to will present the scenario of accessing a third party's API from a Redwood app. We'll show an example of accessing an API from both the client side and the server side. + +We're going to build a simple weather app that will display the current weather in the user's zip code (we'll assume only zip codes in the United States of America to keep the example code as simple as possible). To do this we'll get the current weather from the [OpenWeather API](https://openweathermap.org/) and display it on the only page of our app, the homepage. The final app could look something like this (if you apply a little more styling on top of the basic version we'll build): + +![image](https://user-images.githubusercontent.com/300/79395970-af551280-7f2f-11ea-9b8c-870fc2bfdd36.png) + +> If you just want to skip to the code, you can get the repo for both the client and server implementation here: https://github.com/redwoodjs/cookbook-third-party-apis You will still need a valid API key from OpenWeather, so don't skip the **Setup** steps below! + +## Setup + +You'll need to [create a free account](https://home.openweathermap.org/users/sign_up) on OpenWeather to get an API key. You'll be able to make 1,000 calls per day, which is more than enough for our sample app (with enough left over that you can release this as a private weather station for your family and friends). + +Once you've created your account and verified your email address, go to the API keys tab and copy your default key: + +![image](https://user-images.githubusercontent.com/300/79375024-d0f0d280-7f0c-11ea-81a8-364659755efa.png) + +(That's not a real key so don't even think about trying to steal it!) + +For some reason it can take up to 30 minutes for OpenWeather to enable your API key, so while we're waiting for them let's see what a sample API call will return: https://samples.openweathermap.org/data/2.5/weather?zip=94040,us&appid=439d4b804bc8187953eb36d2a8c26a02 + +```json +{ + "coord": { + "lon": -122.09, + "lat": 37.39 + }, + "weather": [ + { + "id": 500, + "main": "Rain", + "description": "light rain", + "icon": "10d" + } + ], + "base": "stations", + "main": { + "temp": 280.44, + "pressure": 1017, + "humidity": 61, + "temp_min": 279.15, + "temp_max": 281.15 + }, + "visibility": 12874, + "wind": { + "speed": 8.2, + "deg": 340, + "gust": 11.3 + }, + "clouds": { + "all": 1 + }, + "dt": 1519061700, + "sys": { + "type": 1, + "id": 392, + "message": 0.0027, + "country": "US", + "sunrise": 1519051894, + "sunset": 1519091585 + }, + "id": 0, + "name": "Mountain View", + "cod": 200 +} +``` + +Good ol' faithful JSON. Let's see, what can we use here to display on our site? How about the `name` of the city that the zip is in, the `main.temp` (listed here in Kelvin, so we'll need to [convert](https://www.google.com/search?q=297+kelvin+to+fahrenheit&oq=297+kelvin+to+fahrenheit)) and then under the `weather` key we have an array with a `main` that lists the current conditions in english. How about that `icon`? Turns out OpenWeather has some we can use! Just take the icon code and use it in a URL like http://openweathermap.org/img/wn/10d@2x.png + +![rain icon](https://user-images.githubusercontent.com/300/79376259-c33c4c80-7f0e-11ea-8285-701375665451.png) + +If enough time has passed your real API key may be activated. You can try seeing the weather in the geographic center of the US (make sure to append your API key to the end of this URL): https://api.openweathermap.org/data/2.5/weather?zip=66952,us&appid= + +If it's still not ready let's start working on the app and hopefully it will be by the time we're done. You can always use the sample URL and forever see the unchanging weather in Mountain View, California. + +## Create the App + +We'll start our app the way we start all Redwood apps: + +```bash +yarn create redwood-app weatherstation +cd weatherstation +yarn rw dev +``` + +That will open a browser to http://localhost:8910. Let's create a landing page: + +```bash +yarn rw generate page home / +``` + +> If you like typing you can use the full command `yarn redwood generate page home /` + +The browser should have refreshed with a message about where to find our new homepage, `web/src/pages/HomePage/HomePage.js`. Let's open that up and create a form so the user can actually enter their zip code: + +```jsx title="web/src/pages/HomePage/HomePage.js" +import { Form, TextField, Submit } from '@redwoodjs/forms' + +const HomePage = () => { + const onSubmit = (data) => { + console.info(data) + } + + return ( +
    + + Go + + ) +} + +export default HomePage +``` + +This gives us a very simple form and some validation that the user is entering a 5 digit zip code. If you open your Web Inspector and click **Go** you should see the zip code appear in the console: + +![console output](https://user-images.githubusercontent.com/300/79378210-c8e76180-7f11-11ea-949d-2bacae483559.png) + +Now let's talk to the API and get some data for real. We can do that in one of two ways: + +1. Have the client (React app running in the browser) talk to the API directly +2. Have our own server (or serverless function, in the case of Redwood) talk to the API, and have the client talk to *our* server. + +We'll build out an example of both types of integration below. + +## Client-side API Integration + +For the first version of our client-side integration let's access the API directly on the client. What are the pros on cons? + +**Pros** + +* Simplest design: no server design/build needed +* Fewest network calls: one! +* Fast: calling directly to the API + +**Cons** + +* Insecure: users could inspect the page source and get our API key +* No throttling: someone could write a bot to hit the page thousands of times a second + +You'll need to balance these risks in a real-world app so choose carefully! + +### Fetching the weather data + +We've got the zip code in our `onSubmit` handler so it makes sense to simply make the API call from there and then do something with the result. We'll use the browser's built in [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) since it does exactly what we need. For now let's just dump the result to the console (be sure to use your actual API key): + +```jsx title="web/src/pages/HomePage/HomePage.js" +const onSubmit = (data) => { + fetch('https://api.openweathermap.org/data/2.5/weather?zip=66952,us&appid=YOUR_API_KEY') + .then(response => response.json()) + .then(json => console.info(json)) +} +``` + +![image](https://user-images.githubusercontent.com/300/79379271-858df280-7f13-11ea-97f0-5020f875170d.png) + +> If it turns out your API key still isn't ready, you'd think you could just replace the URL in the fetch with the sample response endpoint instead, but this causes a CORS error. At this point you'll just need to wait for your API key to start working! + +Well that was easy! We have the zip code hardcoded into that URL so let's replace that with the actual value from our text box: + +```jsx title="web/src/pages/HomePage/HomePage.js" +const onSubmit = (data) => { + fetch(`https://api.openweathermap.org/data/2.5/weather?zip=${data.zip},us&appid=YOUR_API_KEY`) + .then(response => response.json()) + .then(json => console.info(json)) +} +``` + +### Showing the weather on the page + +We're getting our data just fine but now we need to update the page with the weather. Let's use state to keep track of the result and trigger a refresh in the UI (don't forget the new fragment `<> ` around the form and weather output): + +```jsx title="web/src/pages/HomePage/HomePage.js" +import { useState } from 'react' +import { Form, TextField, Submit } from '@redwoodjs/forms' + +const HomePage = () => { + const [weather, setWeather] = useState() + + const onSubmit = (data) => { + fetch( + `https://api.openweathermap.org/data/2.5/weather?zip=${data.zip},us&appid=YOUR_API_KEY` + ) + .then((response) => response.json()) + .then((json) => setWeather(json)) + } + + return ( + <> +
    + + Go + + {weather && JSON.stringify(weather)} + + ) +} + +export default HomePage +``` + +That should give us a simple text dump of the JSON: + +![image](https://user-images.githubusercontent.com/300/79381373-bae80f80-7f16-11ea-9159-dd08e6ac7ade.png) + +Finally, let's output the actual weather data along with a couple of helper functions to format the output: + +```jsx title="web/src/pages/HomePage/HomePage.js" +import { useState } from 'react' +import { Form, TextField, Submit } from '@redwoodjs/forms' + +const HomePage = () => { + const [weather, setWeather] = useState() + + const onSubmit = (data) => { + fetch( + `https://api.openweathermap.org/data/2.5/weather?zip=${data.zip},us&appid=YOUR_API_KEY` + ) + .then((response) => response.json()) + .then((json) => setWeather(json)) + } + + const temp = () => Math.round(((weather.main.temp - 273.15) * 9) / 5 + 32) + + const condition = () => weather.weather[0].main + + const icon = () => { + return `http://openweathermap.org/img/wn/${weather.weather[0].icon}@2x.png` + } + + return ( + <> +
    + + Go + + {weather && ( +
    +

    {weather.name}

    +

    + + + {temp()}°F and {condition()} + +

    +
    + )} + + ) +} + +export default HomePage +``` + +![image](https://user-images.githubusercontent.com/300/79381535-fbe02400-7f16-11ea-87f8-119bdb121765.png) + +It's not pretty, but it works! We'll leave the styling to you! + +> You can see the final code, with styling, here: https://github.com/redwoodjs/cookbook-third-party-apis/blob/main/web/src/pages/ClientPage/ClientPage.js + +## Server-side API Integration + +If you weighed the pros and cons presented earlier and found too many cons on the client-side implementation, then it looks like we're making our call on the server. To do that we'll need to do two things + +1. Provide a way for the client to talk to our server(less function) +2. A way for our server(less function) to talk to the third party API + +Redwood comes with GraphQL integration built in so that seems like a logical way to get our client talking to our serverless function. Let's create a GraphQL SDL (to define the API interface for the client) and a service (to actually implement the logic of talking to the third-party API). + +> **Doesn't Redwood have a generator for this?** +> +> Redwood does have an SDL generator, but it assumes you have a model defined in `api/db/schema.prisma` and so creates the SDL you need to access that data structure. If you're creating a custom one you're on your own! + +### The GraphQL API + +We can create whatever data structure we want so let's take this opportunity to strip out the data we don't care about coming from OpenWeather and just return the good stuff: + +```javascript title="api/src/graphql/weather.sdl.js" +export const schema = gql` + type Weather { + zip: String! + city: String! + conditions: String! + temp: Int! + icon: String! + } + + type Query { + getWeather(zip: String!): Weather! @skipAuth + } +` +``` + +This data structure returns just the data we care about, and we can even pre-format it on the server (convert Kelvin to Fahrenheit and get the icon URL). We have a Query type `getWeather` that accepts the zip code (note that it's a `String` because it could start with a `0`) and returns our `Weather` type defined above. + +### The Service + +That's it for our client-to-server API interface! Now let's define the GraphQL resolver that will actually get the data from OpenWeather. We'll take it one step at a time and first make sure we can access our new GraphQL endpoint. We'll define the `getWeather` function to just return some dummy data in the format we require. + +In Redwood GraphQL Query types are automatically mapped to functions exported from a service with the same name, so we'll create a `weather.js` service and name the function `getWeather`: + +```javascript title="api/src/services/weather/weather.js" +export const getWeather = ({ zip }) => { + return { + zip, + city: 'City', + conditions: 'Hot Lava', + temp: 1000, + icon: 'https://placekitten.com/100/100', + } +} +``` + +How can we test this out? Redwood ships with a GraphQL playground that you can use to access your API! Open a browser tab to http://localhost:8911/graphql + +![image](https://user-images.githubusercontent.com/300/79391348-3dc49680-7f26-11ea-8d94-8567ae287fa6.png) + +We'll enter our query at the top left and the variables (zip) at the lower left. Click the huge "Play" button in the middle of the screen and you should see the result of our query: + +![image](https://user-images.githubusercontent.com/300/79395014-9cd9d980-7f2d-11ea-83b1-45aaa8506706.png) + +Okay lets pull the real data from OpenWeather now. We'll use a package `@whatwg-node/fetch` that mimics the Fetch API in the browser: + +```bash +yarn workspace api add @whatwg-node/fetch +``` + +And import that into the service and make the fetch. Note that `fetch` returns a Promise so we're going to convert our service to `async`/`await` to simplify things: + +```javascript title="api/src/services/weather/weather.js" +import { fetch } from '@whatwg-node/fetch' + +export const getWeather = async ({ zip }) => { + const response = await fetch( + `http://api.openweathermap.org/data/2.5/weather?zip=${zip},US&appid=YOUR_API_KEY` + ) + const json = await response.json() + + return { + zip, + city: json.name, + conditions: json.weather[0].main, + temp: Math.round(((json.main.temp - 273.15) * 9) / 5 + 32), + icon: `http://openweathermap.org/img/wn/${json.weather[0].icon}@2x.png` + } +} +``` + +If you click "Play" in the GraphQL playground we should see the real data from the API: + +![image](https://user-images.githubusercontent.com/300/79607107-8ce60500-80a7-11ea-8b1d-fe1cd3e1d3dd.png) + +### Displaying the weather + +All that's left now is to display it in the client! Since we're getting data from our GraphQL API we can use a Redwood Cell to simplify all the work that goes around writing API access, displaying a loading state, etc. We can use a generator to get the shell of our Cell: + +```bash +yarn rw generate cell weather +``` + +This will create `web/src/components/WeatherCell/WeatherCell.js`: + +```jsx title="web/src/components/WeatherCell/WeatherCell.js" +export const QUERY = gql` + query FindWeatherQuery($id: Int!) { + weather: weather(id: $id) { + id + } + } +` + +export const Loading = () =>
    Loading...
    + +export const Empty = () =>
    Empty
    + +export const Failure = ({ error }) => ( +
    Error: {error.message}
    +) + +export const Success = ({ weather }) => { + return
    {JSON.stringify(weather)}
    +} +``` + +Let's update the QUERY to match the signature of our API: + +```jsx +export const QUERY = gql` + query GetWeatherQuery($zip: String!) { + weather: getWeather(zip: $zip) { + zip + city + conditions + temp + icon + } + } +` +``` + +Note the `weather: getWeather` part. This will actually call the API endpoint `getWeather` but the response will be renamed to `weather` and then given to the `Success` component. + +Let's leave the display as-is for now to make sure this is working. We'll use the `WeatherCell` in our `HomePage` and introduce some state to keep track of when the zip is submitted: + +```jsx title="web/src/pages/HomePage/HomePage.js" +import { Form, TextField, Submit } from '@redwoodjs/forms' +import { useState } from 'react' +import WeatherCell from 'src/components/WeatherCell' + +const HomePage = () => { + const [zip, setZip] = useState() + + const onSubmit = (data) => { + setZip(data.zip) + } + + return ( + <> +
    + + Go + + {zip && } + + ) +} + +export default HomePage +``` + +If your copy/paste-fu is strong you should get a dump of the JSON from the GraphQL call: + +![image](https://user-images.githubusercontent.com/300/79393218-bb3dd600-7f29-11ea-9b3a-3f2bbd854ed8.png) + +Now all that's left is to format everything a little nicer. How about a little something like this in `WeatherCell`: + +```jsx title="web/src/components/WeatherCell/WeatherCell.js" +export const Success = ({ weather }) => { + return ( +
    +

    {weather.city}

    +

    + + + {weather.temp}°F and {weather.conditions} + +

    +
    + ) +} +``` + +![image](https://user-images.githubusercontent.com/300/79393411-2091c700-7f2a-11ea-8760-8938d55b1ef5.png) + +### Extra Credit! Invalid zip codes? + +What if the user inputs an invalid zip code, like **11111**? + +![image](https://user-images.githubusercontent.com/2321110/137649805-5a9f6f4d-4f66-4758-9e47-f1a8a985bdda.png) + +Gross. This happens when our service tries to parse the response from OpenWeather and can't find one of the data points we're looking for (the array under the `weather` key). We should put together a nicer error message than that. Let's look at the response from OpenWeather when you enter a zip code that doesn't exist: https://api.openweathermap.org/data/2.5/weather?zip=11111,us&appid=YOUR_API_KEY + +```json +{ + "cod": "404", + "message": "city not found" +} +``` + +Okay, let's look for that `cod` and if it's `404` then we know the zip isn't found and can return a more helpful error from our service. Open up the service and let's add a check: + +```javascript {2, 10-12} title="api/src/services/weather/weather.js" +import { fetch } from '@whatwg-node/fetch' +import { UserInputError } from '@redwoodjs/graphql-server' + +export const getWeather = async ({ zip }) => { + const response = await fetch( + `http://api.openweathermap.org/data/2.5/weather?zip=${zip},US&appid=YOUR_API_KEY` + ) + const json = await response.json() + + if (json.cod === '404') { + throw new UserInputError(`${zip} isn't a valid US zip code, please try again`) + } + + return { + zip, + city: json.name, + conditions: json.weather[0].main, + temp: Math.round(((json.main.temp - 273.15) * 9) / 5 + 32), + icon: `http://openweathermap.org/img/wn/${json.weather[0].icon}@2x.png`, + } +} +``` + +And now if we submit **11111**: + +![image](https://user-images.githubusercontent.com/2321110/137649849-49d3aa66-e08b-44f8-93b9-c8a61f1e5ce9.png) + +That's much better! Let's strip out that "Error: " part, and maybe make it look a little more error-like. This is a job for the `Failure` component in our `WeatherCell`: + +```jsx title="web/src/components/WeatherCell/WeatherCell.js" +export const Failure = ({ error }) => ( + + {error.message} + +) +``` + +![image](https://user-images.githubusercontent.com/2321110/137649934-35c7b0e1-9b10-409e-8dbb-6a133aeb14bd.png) + +Much better! + +## Conclusion + +We hope this has given you enough confidence to go out and capture data from some of the amazing APIs of the Information Superhighway and get it (them?) into your Redwood app! + +Picking up any new framework from scratch is a daunting task and even those of us that wrote this one made more than a few trips to Google! If you think we can improve on this recipe, or any other, open an [issue](https://github.com/redwoodjs/redwoodjs.com/issues) or a [pull request](https://github.com/redwoodjs/redwoodjs.com/pulls). diff --git a/docs/versioned_docs/version-7.0/how-to/using-nvm.md b/docs/versioned_docs/version-7.0/how-to/using-nvm.md new file mode 100644 index 000000000000..05ed1f716bca --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/using-nvm.md @@ -0,0 +1,119 @@ +# Using nvm + +## What is nvm? + +[nvm](https://github.com/nvm-sh/nvm) is a Node Version Manager. It's perfect for running multiple versions of Node.js on the same machine. + +## Installing nvm + +:::warning +If you've already installed Node.js on your machine, uninstall Node.js before installing nvm. This will prevent any conflicts between the Node.js and nvm. + +### If you're on a Mac +You can uninstall by running the following command in your terminal: + +```bash +brew uninstall --force node +``` + +Once that's finished, run the following command to remove unused folders and dependencies: +```bash +brew cleanup +``` + +### If you're on Windows + +- Go to the start menu, search and go to **Settings** +- Click on the **Apps** section +- In the search box under **Apps & Features** section, search for **Nodejs** +- Click on **Nodejs** and click on **Uninstall** +- We recommend restarting your machine, even if you're not prompted to do so +::: + +### If you're on a Mac +You can install `nvm` using [Homebrew](https://brew.sh/): + +```bash +brew install nvm +``` + +### If you're on Windows +Reference the [nvm-windows](https://github.com/coreybutler/nvm-windows) repo. + +- Download the [latest installer](https://github.com/coreybutler/nvm-windows/releases) (nvm-setup.zip) +- Locate your zip file (should be in your downloads or wherever you've configured your downloads to be saved) and unzip/extract its contents +- Now, you should have a file called **nvm-setup.exe**. Double click on it to run the installer. +- Follow the instructions in the installer + +:::info +We have a specific doc for [Windows Development Setup.](/docs/how-to/windows-development-setup) +::: + +## How to use nvm + +To confirm that `nvm` was installed correctly, run the following command in your terminal: + +```bash +nvm --version +``` + +You should see the version number of `nvm` printed to your terminal. + +### To install the latest version of Node.js + +```bash +nvm install latest +``` + +### To install a specific version of Node.js + +```bash +nvm install +``` + +To see all the versions of Node that you can install, run the following command: + +```bash +nvm ls-remote +``` + +:::warning +You'll need to [install yarn](https://yarnpkg.com/getting-started/install) **for each version of Node that you install.** + +[Corepack](https://nodejs.org/dist/latest/docs/api/corepack.html) is included with all Node.js >=16.10 installs, but you must opt-in. To enable it, run the following command: + +```bash +corepack enable +``` + +We also have a doc specifically for [working with yarn](./using-yarn). +::: + +### To use a specific version of Node.js + +```bash +nvm use +``` + +:::info +Remember: [Redwood has specific Node.js version requirements.](../tutorial/chapter1/prerequisites.md#nodejs-and-yarn-versions) +::: + +### To see all the versions of Node.js that you have installed + +```bash +nvm ls +``` + +### To set the default version of Node.js + +```bash +nvm alias default <> +``` + +### To uninstall a specific version of Node.js + +```bash +nvm uninstall <> +``` + diff --git a/docs/versioned_docs/version-7.0/how-to/using-yarn.md b/docs/versioned_docs/version-7.0/how-to/using-yarn.md new file mode 100644 index 000000000000..5198209e6e85 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/using-yarn.md @@ -0,0 +1,72 @@ +# Using Yarn + +## What is Yarn? + +[Yarn](https://yarnpkg.com/) is a package manager for JavaScript. It is used to manage and install dependencies for JavaScript projects, particularly for Node.js applications. Yarn offers features like parallel package installations and offline caching and uses a `yarn.lock` file to control and reproduce consistent installations of dependencies across different environments. + +## Installing yarn + +> "The preferred way to manage Yarn is through [Corepack](https://nodejs.org/dist/latest/docs/api/corepack.html), a new binary shipped with all Node.js releases starting from 16.10."
    -[from the Yarn documentation](https://yarnpkg.com/getting-started/install) + +Corepack is included with all Node.js >=16.10 installs, but you must opt-in. To enable it, run the following command: + +```bash +corepack enable +``` + +## Using the correct version of yarn + +To see the version of yarn that you have installed, run the following command: + +```bash +yarn --version +``` + +**Redwood requires Yarn (>=1.22.21)** + +You can upgrade yarn by running the following command: + +```bash +corepack prepare yarn@stable --activate +``` + +:::info +If this command fails, you may need to [uninstall the current version of Yarn first](#uninstalling-yarn). + +```terminal +corepack disable +npm uninstall -g yarn --force +corepack enable +``` +::: + +## Installing packages and dependencies with yarn + +You'll need to run `yarn install` in the root of your project directory to install all the necessary packages and dependencies for your project. + +Redwood separates the backend (`api`) and frontend (`web`) concerns into their own paths in the codebase. ([Yarn refers to these as "workspaces"](https://yarnpkg.com/features/workspaces). In Redwood, we refer to them as "sides.") When you add packages going forward you'll need to specify which workspace they should go in. + +For example to install a package on the `web` or **frontend** side, you would run the following command: + +```bash +yarn workspace web add package-name +``` + +and to install a package on the `api` or **backend** side, you would run the following command: + +```bash +yarn workspace api add package-name +``` + +## Uninstalling yarn + +To uninstall yarn, run the following command: + +```bash +corepack disable +npm uninstall -g yarn --force +``` + +## Additional Information + +For additional information, you can refer directly to the [yarn documentation](https://yarnpkg.com/). diff --git a/docs/versioned_docs/version-7.0/how-to/windows-development-setup.md b/docs/versioned_docs/version-7.0/how-to/windows-development-setup.md new file mode 100644 index 000000000000..adddcef24c63 --- /dev/null +++ b/docs/versioned_docs/version-7.0/how-to/windows-development-setup.md @@ -0,0 +1,62 @@ +# Windows Development Setup + +This guide provides a simple setup to start developing a RedwoodJS project on Windows. Many setup options exist, but this aims to make getting started as easy as possible. This is the recommended setup unless you have experience with some other shell, like PowerShell. + +> If you're interested in using the Windows Subsystem for Linux instead, there is a [community guide for that](https://community.redwoodjs.com/t/windows-subsystem-for-linux-setup/2439). + +### Git Bash + +Download the latest release of [**Git for Windows**](https://git-scm.com/download/win) and install it. +When installing Git, you can add the icon on the Desktop and add Git Bash profile to Windows Terminal if you use it, but it is optional. + +![1-git_components.png](https://user-images.githubusercontent.com/18013532/146685298-b12ed1a5-fe99-4286-ab12-69cf0a7be139.png) + +Next, set VS Code as Git default editor (or pick any other editor you're comfortable with). + +![2-git_editor.png](https://user-images.githubusercontent.com/18013532/146685299-0e067554-a5a8-46b9-91ac-ffcd6f738b80.png) + +For all other steps, we recommended keeping the default choices. + +### Node.js environment (and npm) + +We recommend you install the latest `nvm-setup.zip` of [**nvm-windows**](https://github.com/coreybutler/nvm-windows/releases) to manage multiple version installations of Node.js. When the installation of nvm is complete, run Git Bash as administrator to install Node with npm. + +![3-git_run_as_admin.png](https://user-images.githubusercontent.com/18013532/146685300-1762a00a-26cb-4f8b-b480-c6aba4e26b89.png) + +Redwood uses the LTS version of Node. To install, run the following commands inside the terminal: + +```bash +$ nvm install lts --latest-npm +// installs latest LTS and npm; e.g. 16.13.1 for the following examples +$ nvm use 16.13.1 +``` + +### Yarn + +Now you have both Node and npm installed! Redwood also uses yarn, which you can now install using npm: + +```bash + npm install -g yarn +``` + +*Example of Node.js, npm, and Yarn installation steps* + +![4-install_yarn.png](https://user-images.githubusercontent.com/18013532/146685297-b361ebea-7229-4d8c-bc90-472773d06816.png) + +## Congrats! + +You now have everything ready to build your Redwood app. + +Next, you should start the amazing [**Redwood Tutorial**](tutorial/chapter1/installation.md) to learn how to use the framework. + +Or run `yarn create redwood-app myApp` to get started with a new project. + +## Troubleshooting + +### Beware case-insensitivity + +On Windows Git Bash, `cd myapp` and `cd myApp` will select the same directory because Windows is case-insensitive. But make sure you type the original capitalization to avoid strange errors in your Redwood project. + +### Microsoft Visual C++ Redistributable + +If your machine doesn't have Microsoft Visual C++ Redistributable, then you need to install it from [here](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022). diff --git a/docs/versioned_docs/version-7.0/intro-to-servers.md b/docs/versioned_docs/version-7.0/intro-to-servers.md new file mode 100644 index 000000000000..121097e67e6f --- /dev/null +++ b/docs/versioned_docs/version-7.0/intro-to-servers.md @@ -0,0 +1,474 @@ +--- +description: How to get started connecting to and deploying to a real server +--- + +# Introduction to Servers + +If you're looking at deploying to a real, physical server using something like the [Baremetal](/docs/deploy/baremetal) deploy option, you're going to need to get familiar with connecting to remote servers. On *nix-based systems (but also Windows after installing something like Powershell) this is handled by the [SSH](https://en.wikipedia.org/wiki/Secure_Shell) utility. In this doc we'll learn about the various strategies that SSH can use to connect: + +* Username & password +* Private key +* Public key + +## Terminology + +Let's define a few terms so we're on the same page going forward: + +* SSH - Secure Shell Protocol (where'd the P go in the acronym?) is the protocol used by the `ssh` command line utility we'll be using throughout this doc +* `ssh` - when shown in code font like this it's referring to the actual command line utility, rather than the all-encompassing "SSH" concept +* `ssh-agent` - another utility that keeps track of public and private keys and makes them available for use by the `ssh` utility + +## First Connect + +Before we can do anything else, we want to make sure that we can remotely connect to our server via SSH manually, as *nix folks have been doing for hundreds of years using SSH. Depending on how the server is configured, you'll connect with either a username and password, a private key known to the server, or a public key known to the server. We'll look at each one below. + +A requirement of all of these authentication methods is that you know the username of the account you're connecting to. You'll need to get this from your hosting/cloud provider, and it could be pretty different depending on who your host is: + +* If you use AWS and create an EC2 instance from an Ubuntu image, the user will be `ubuntu` +* If you use Amazon's own Linux image, it'll be `ec2user` +* If you create a Digital Ocean Droplet the user will be `root` + +Et cetera. Whatever it is, you'll need to know that before connecting. + +But first, a note about a yes/no prompt you'll see the first time using any of these connection methods... + +## Fingerprint Prompt + +Using any of the auth methods below will lead to the following prompt the first time you connect, and it's because you've never connected to that server before: + +``` +The authenticity of host '192.168.0.122 (192.168.0.122)' can't be established. +ED25519 key fingerprint is SHA256:FHQDzxsqA68c+BhLPUkyN8aAVrznDtekhPg/99JXk8Q. +This key is not known by any other names +Are you sure you want to continue connecting (yes/no/[fingerprint])? +``` + +This is a quick security check making sure that you're actually connecting to the computer that you think you are. You can be reasonably sure that it is, so just type "yes". You'll get a note letting you know that it's been added to the list of known hosts (and you won't be prompted when connecting to this server again): + +``` +Warning: Permanently added '192.168.0.122' (ED25519) to the list of known hosts. +``` + +You can see a list of all known servers by looking in this file: + +``` +~/.ssh/known_hosts +``` + +:::info Reusing IP addresses + +If you're connecting to cloud-based servers, turning them on and off, and potentially reusing IP addresses, you'll get an error message the next time you try to connect to that IP (because the signature of the server itself is now different than what's recorded in `known_hosts`. Find that line and delete it from `~/.ssh/known_hosts` and you'll be able to connect again. + +::: + +Once you're past that prompt you'll then either be prompted for your password, or logged in automatically (when using a private or public key). Let's look at each one in detail. + +:::warning Baremetal First Deploy Woes? + +If you're having trouble deploying to your server with Baremetal, and you've never connected to your server manually via SSH, this could be why: Baremetal provides no interactive prompt to accept this server fingerprint. You need to connect manually at least once before Baremetal can connect. + +::: + +### Username/Password + +Using username/password auth is pretty straight forward, just denote the user and server you want to connect to, either by its domain name or IP address. You will have created the password at the time you started your server, or maybe the host generated a random one. + +``` +ssh user@server.com +``` + +As a real example, here's how you would connect to a Digital Ocean Droplet. The user is `root` and the IP is `192.168.0.122`: + +``` +ssh root@192.168.0.122 +``` + +You will be prompted to enter the server's password, and your keystrokes are hidden which for some reason makes typing a password exponentially harder: + +``` +root@192.168.0.122's password: +``` + +You'll get three tries to get the password correct. + +Whether or not you connected successfully, skip ahead to the [Connected](#connected) section. + +### Private Key + +Some providers, like AWS, will give you a private key at the time the server is created, rather than a password. This file usually ends in `.pem`. Make sure you know where you put this file on your computer because, for now, it's the only way you'll be able to connect to your server. If you lose it, you'll need to terminate that instance and start a new one. I generally put them in the `~/.ssh` folder to keep all SSH-related stuff together, usually in a subdirectory. (I also move this directory to iCloud and then create a symlink back to `~/.ssh` so that it's synchronized across all of my systems.) + +:::info More About Public/Private Keypairs + +Learn more about [public/private key authentication](https://www.ssh.com/academy/ssh/public-key-authentication). But the gist is that you create two keys, one public and one private. Either one can encrypt a document, but, only the private key can *decrypt* it. This means that anyone can have the public key and it can be freely distrubted (thus the "public" name), and the owner of the private key can always verify that it was encrypted using the related public key. A related technique can happen in reverse: the private key can be used to create a signature of a document, and the public key can be used to *verify* that the signature was created by the matching private key. So you can get the original message, and after verifying the signature, trust that it was sent by the owner of the private key. + +You can't *decrypt* something with the public key that was encrypted with the private key, however. That would defeat the purpose of sharing the public key: anyone could read your message! If you need two-way encryption of messages then both parties could share their public keys and each would encrypt using the other party's public key. + +::: + +If you try connecting using that private key now, you'll most likely get a big scary message: + +``` +ssh -i ~/.ssh/keyname.pem ubuntu@192.168.0.122 + +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@ WARNING: UNPROTECTED PRIVATE KEY FILE! @ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +Permissions 0666 for '/Users/rob/.ssh/shared/algostake.pem' are too open. +It is required that your private key files are NOT accessible by others. +This private key will be ignored. +``` + +This is because files downloaded from the internet are given permissions that make them readable by anyone on the system. SSH doesn't like this. It wants you, and only you, to have access to this file. So we need to make it readable and writeable by only your user. + +Permission changes are handled by the `chmod` command. The [octal version](https://chmodcommand.com/chmod-600/) of the permissions you want to set is the number `600` (which sets read/write permissions for the owner of file, and nothing for anyone else). To change the permission of the file: + +``` +chmod 600 ~/.ssh/keyname.pem +``` + +Where `keyname` is whatever the actual name of the file is. Once you do this you're ready to use it to connect. You still need the username and address of the server, but we're also going to set the `-i` flag which instructs SSH to use a private key at a given path: + +``` +ssh -i ~/.ssh/keyname.pem ubuntu@192.168.0.122 +``` + +Skip ahead to the [Connected](#connected) section. + +### Public Key + +Some providers, like Digital Ocean, give you the opportunity to put your public key on the server automatically when it's created. This lets you avoid password and private key authentication completely, and is actually the preferred method of connecting via SSH that we'll end up with at [the end](#adding-your-ssh-public-key-to-the-server) of this guide! + +If you don't really know what a public key is, where yours is at, or what it means to put it on the server, then skip ahead to the [Creating a Public Key](#creating-a-public-key) section. + +You'll need your username and server address and that's it: + +``` +ssh ubuntu@192.168.0.122 +``` + +If you have a public key, but your server doesn't let you pre-load it onto the server, you'll need to do it manually. See [Adding Your SSH Public Key to the Server](#adding-your-ssh-public-key-to-the-server) below. + +## Connected + +Whatever auth method you go with, you should now be connected! If you get an error message that looks like this: + +``` +ubuntu@192.168.0.122: Permission denied (publickey,password). +``` + +It could be one of several things: + +* The username is wrong +* The password is wrong +* The public key your system is trying to connect with is not found on the server in its `~/.ssh/authorized_keys` file +* The private key you passed with the `-i` flag is not found on the server + +If you run the command again with the `-v` flag (verbose) you'll see everything that SSH is trying when it tries to log in. There are lots of resources on the internet to help you [troubleshoot](https://docs.digitalocean.com/support/how-to-troubleshoot-ssh-connectivity-issues/). + +Assuming you did not get an error, you should be logged in: + +``` +Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-41-generic x86_64) + + * Documentation: https://help.ubuntu.com + * Management: https://landscape.canonical.com + * Support: https://ubuntu.com/advantage + + System information as of Wed Aug 3 21:09:41 UTC 2022 + + System load: 0.25439453125 Users logged in: 0 + Usage of /: 6.3% of 24.05GB IPv4 address for eth0: 192.168.0.122 + Memory usage: 22% IPv4 address for eth0: 10.48.0.5 + Swap usage: 0% IPv4 address for eth1: 10.124.0.2 + Processes: 97 + +0 updates can be applied immediately. + +The programs included with the Ubuntu system are free software; +the exact distribution terms for each program are described in the +individual files in /usr/share/doc/*/copyright. + +Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by +applicable law. + +root@remote-server:~# +``` + +This is the welcome message on an Ubuntu machine, yours may be different. + +The last line is actually your prompt where you can start typing commands. + +## Disconnecting + +Disconnecting from the server is just a simple `exit` command. You can also just close your terminal window and the connection will be terminated: + +```bash +root@remote-server:~# exit + +Connection to 192.168.0.122 closed. +``` + +## Simplifying Access + +Having to type your username or include a private key each time is not fun. Luckily SSH uses public/private key cryptography, and can verify your identity using your public key. You've probably uploaded your public key to GitHub in the **Settings > SSH and GPG keys** section. We'll do something similar here: put our local machine's public key on the server so that it knows it's us when we connect, and skip the password. + +:::info + +If you're already using [public key auth](#public-key) then you can probably skip this section—you're already doing it! + +::: + +You can have multiple public keys from multiple development machines on the server so you can connect from multiple computers. This comes in very handy when working on a team: when someone leaves you just remove their public key from the server. Contrast this with password authentication, where you either need to share the password to a single deploy user to all of your teammates, and then change the password when someone leaves, or give everyone a copy of the server's private key and change *that* every time someone leaves. Just adding their public keys is much simpler to manage. + +### Public/Private Keypairs + +You may already have a public/private keypair! Check in `~/.ssh` and look for two files with the same name before the extension, one with `.pub` on the end (`id_ed25519` and `id_ed25519.pub`, for example). If you don't remember actually putting these files in the directory, then they were probably generated by a program like `ssh-keygen`, and SSH is already using them! + +To see which of your keys SSH is already aware of, you can run this command to list them: + +``` +ssh-add -L +``` + +You should get zero or more lines containing public SSH keys, something like this: + +``` +ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABCU90x/khqD1sDW= rob@computer.local +``` + +If I compare that to the content of my `~/.ssh/id_ed25519.pub` file I can see that they match! Great, so SSH is already using our public key when it tries to connect. But what if you don't have a public/private keypair? + +### Generating a Public/Private Keypair + +There's a simple command to generate a new keypair: + +``` +ssh-keygen -t ed25519 +``` + +This tells the program to generate a key using the ED25519 algorithm. There are [many algorithms](https://goteleport.com/blog/comparing-ssh-keys/) available, but not all of them are supported everywhere. The linked article goes into depth into the various algorithms and their pros and cons. + +You will be prompted for a couple of questions: + +``` +Generating public/private ed25519 key pair. +Enter file in which to save the key (/Users/rob/.ssh/id_ed25519): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +``` + +If you don't have any keys, go ahead and use the default name `id_ed25519` by just hitting ENTER. + +A Passphrase is an additional line of security on your key. However, it also adds some inconvenience around using your public key: you'll need to enter the passpharse each time your private key is accessed. Which is great for security, but kind of defeats the purpose of sharing your public key with the server to make access easier. As long as you protect your private key, you shouldn't need to worry about adding a passphrase. Press ENTER (twice) to create your keypair without a passphrase. + +``` +Your identification has been saved in id_ed25519 +Your public key has been saved in id_ed25519.pub +The key fingerprint is: +SHA256:6Qg7RQRGp1AtfVIOucEt1HtZWkYMU1LZYBVwBsXwTWQ rob@computer.local +The key's randomart image is: ++--[ED25519 256]--+ +| .B&@O+ .E +==| +| o=*= .** . o .o| +| . o . . . .| +| .o o . o ..| +| o . A * + .| +| = + = + | +| o . * . | +| . o | +| | ++----[SHA256]-----+ +``` + +:::info What's this randomart thing? + +From this [Super User answer](https://superuser.com/a/22541): + +> Validation is normally done by a comparison of meaningless strings (i.e. the hexadecimal representation of the key fingerprint), which humans are pretty slow and inaccurate at comparing. Randomart replaces this with structured images that are faster and easier to compare. + +I suppose the idea is that if humans ever needed to compare public keys they could use the randomart version and know pretty quickly whether they're the same (instead of comparing a bunch of random number and letters by eye!) + +::: + +### Adding to ssh-agent + +Our key exists but does SSH know to use it yet? Let's ask `ssh-agent` (the tool that manages keys and makes them available to the actual `ssh` process): + +``` +ssh-add -L +``` + +Do you see your new public key listed? If not, we just have to let `ssh-agent` know where it is and to start using it (note that you give the path to the private key): + +``` +ssh-add ~/.ssh/id_ed25519 +``` + +Now running `ssh-add -L` should list our key. + +:::info Missing key after computer restart + +I've had cases where my key was unknown to `ssh-agent` after a computer restart. I added the following to the `~/.zshrc` file on my computer (not the server) so that the key is added every time I start a new terminal session: + +``` +ssh-add ~/.ssh/id_ed25519 +``` + +::: + +### Adding Your SSH Public Key to the Server + +So SSH is now presenting the key to the server, but the server doesn't know what to do with it. We'll now copy our *public* key to the server so that it allows connections from it. Write your public key to the terminal so that you can copy it: + +``` +cat ~/.ssh/id_ed25519.pub +``` + +:::info + +On MacOS you can copy the key into your clipboard with this two-part command: + +``` +cat ~/.ssh/id_ed25519.pub | pbcopy +``` + +::: + +Now, connect to the server with ssh as usual (using your username/password or private key) and then open up the `~/.ssh/authorized_keys` file for editing. The `nano` editor is usually built in and is simple to use, but `vi` is another choice (if you can figure out how to exit): + +``` +nano ~/.ssh/authorized_keys +``` + +Now just paste your key into this file on a new line. It helps to add a comment above so you know which computer this key is from, maybe with the person's name and the hostname of their system. As you upgrade computers or give coworkers access to this machine you'll quickly lose track of which keys are which if you don't label them: + +``` +# Rob Cameron (optimus-prime) +ssh-ed25519 AAAAB3NzaC1yc2EAAAADAQABCU90x/khqD1sDW= rob@computer.local +``` + +Save the file and exit. Now, disconnect from the SSH session with `exit` and reconnect, but this time you shouldn't need a password or private key (if you were using `-i` you can leave that off) and simply connect with: + +``` +ssh root@192.168.0.122 +``` + +And you should be in! + +## SSH Agent Forwarding + +When connecting to a remote server, it would be nice if you could also SSH into other machines and have them identify you as *you*, on your personal computer, not as the server itself. By default this doesn't happen: making an SSH connection from your remote server uses the credentials on the server itself, meaning you'd have to go through all of the steps above to now treat the remote server as the client as whatever server *that* server wants to connect to as the host, allowing you to connect with your public key. Ugh. + +Luckily SSH has a mechanism that supports this: SSH Agent Forwarding. + +This is most useful when trying to deploy a codebase from GitHub to your remote server: you're already connected to the remote server as you, and you're already authorized to connect to GitHub, so just use those credentials. You can verify if this is already working for you: + +``` +ssh -T git@github.com +``` + +If you get a message like this: + +``` +Hi cannikin! You've successfully authenticated, but GitHub does not provide shell access. +Connection to github.com closed. +``` + +Then agent forwarding is already enabled! GitHub recognized you as your username and gave you access. The remote server forwarded on your public key (the same one that was used to connect to your remote server) and everything just worked. + +If instead you see this message: + +``` +git@github.com: Permission denied (publickey). +``` + +Then agent forwarding is not enabled. In this case we recommend this excellent guide from GitHub which walks you through enabling it: https://docs.github.com/en/developers/overview/using-ssh-agent-forwarding + +## Deploy Keys + +You may not want to use your own personal SSH keys during deploy time. One con to Agent Forwarding is that it requires that you personally (or a deploy system acting on your behalf) SSH into a machine to perform deploys, rather than letting a CI/CD system do them. Another is security: presumably your SSH keys allow full access to your repos, which is more than the read-only access needed for a deploy. + +For these reasons you may want to consider using **deploy keys**. The idea is that you generate a public/private keypair that's unique to the server(s), and then let GitHub know about the public key. Now the server(s) can connect to GitHub and clone your codebase without you being involved. And you can lock down access to that key to a single repo with read-only access. + +GitHub has a great guide for adding deploy keys to your account: https://docs.github.com/en/developers/overview/managing-deploy-keys#deploy-keys + +## Customizing the Prompt + +When deploying an app to production it can be very helpful to get a reminder of what server you're connected to, rather that seeing an IP address or random hostname at the prompt: + +``` +root@remote-server:~# +# or +user@192.168.0.122 +``` + +Is that production? Staging? Which server in the cluster? Luckily you can customize this prompt pretty easily. I like to use the app name, the environment, an a simple integer of which server ID (if its in a cluster). So if my app is called "ruby" and it's the first server in the production environment cluster, I like to see my prompt as: + +``` +root@ruby-prod1:~# +``` + +This prompt is usually specified in one of these files: + +``` +~/.bashrc +~/.bash_profile +~/.zshrc +~/.zprofile +``` + +If you you use a shell other than `bash` or `zsh` the files are going to be named differently, but the idea is the same. Open the file in `nano` or `vi` and look for a line that starts with `PS1=` (you may see a couple of lines like this): + +```bash +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +``` + +In the config snippet above, the first `PS1` is used for color prompts and the second is for black and white. You'll want to change them both. + +Within all of that gobledy gook you should see a few special escape characters: `\u`, `\h` and `\w`. These are the **user**, **hostname** and **working directory**. You may have all or only some of these present. The rest of the characters, like `[\033[00m\]` are color codes, which we can ignore for now. + +For our simple case, just replace the `\h` with the string we want to show for the hostname: + +```bash +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@ruby-prod1\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@ruby-prod1:\w\$ +fi +``` + +Now save the file, and run `source` to load up the variables into the current session: + +``` +source ~/.bashrc +``` + +You should see your prompt change to and you new custom hostname! Now whenever you connect to your server you'll be sure not to run `rm -rf *` in the wrong environment. + +If you want to get real fancy with your prompt, there are some [PS1 generators](hhttps://ezprompt.net) out there that let you create the string containing all kinds of fancy stuff, and easily customize the colors. + +## Aliases for Even Easier Connections + +Seeing `ruby-prod1` helps keep track of which server we're on, but wouldn't it be great if you could just type that as a command and connect automatically? You can! + +On your local computer's `.zshrc`, `.bash_profile` whichever file, add a line like the following: + +``` +alias ruby-prod1='ssh root@192.168.0.122' +``` + +Then run `source ~/.zshrc` to execute it. Now you should be able to connect by just using the name of the server, and skip the SSH command altogether: + +``` +ruby-prod1 +``` + +It doesn't get much easier than that! + +## What's Next? + +You should now be ready to get to the next step(s) using the [Baremetal](/docs/deploy/baremetal) deploy! Baremetal does the same thing you're doing manually (SSHing into the remote server and running commands), so if you can connect to your server manually then Baremetal should be able to as well. diff --git a/docs/versioned_docs/version-7.0/introduction.md b/docs/versioned_docs/version-7.0/introduction.md new file mode 100644 index 000000000000..7a89099ca8d1 --- /dev/null +++ b/docs/versioned_docs/version-7.0/introduction.md @@ -0,0 +1,60 @@ +--- +description: Redwood is the full-stack web framework designed to help you grow from side project to startup +--- + +# Introduction + +Redwood is the full-stack web framework designed to help you grow from side project to startup. +Redwood features an end-to-end development workflow that weaves together the best parts of [React](https://reactjs.org/), [GraphQL](https://graphql.org/), [Prisma](https://www.prisma.io/), [TypeScript](https://www.typescriptlang.org/), [Jest](https://jestjs.io/), and [Storybook](https://storybook.js.org/). +For full inspiration and vision, see Redwood's [README](https://github.com/redwoodjs/redwood/blob/main/README.md). + +Development on Redwood happens in the [redwoodjs/redwood repo on GitHub](https://github.com/redwoodjs/redwood). +The docs are [there too](https://github.com/redwoodjs/redwood/tree/main/docs). +While Redwood's [leadership and maintainers](https://github.com/redwoodjs/redwood#core-team-leadership) +handle most of the high-priority items and the day-to-day, Redwood wouldn't be +where it is without [all its contributors](https://github.com/redwoodjs/redwood#all-contributors)! +Feel free to reach out to us on the [forums](https://community.redwoodjs.com) or on [Discord](https://discord.gg/redwoodjs), and follow us on [Twitter](https://twitter.com/redwoodjs) for updates. + +## Getting the Most out of Redwood + +To get the most out of Redwood, do two things: + +- [Start the tutorial](tutorial/foreword.md) +- [Join the community](https://redwoodjs.com/community) + +The tutorial is the best way to start your Redwood adventure. +It's readable, feature-ful, and fun. +You'll go all the way from `git clone` to Netlify deploy! +And by the end, you should feel comfortable enough to start that side project. + +After you've read the tutorial and started your side project, come say hi and tell us all about it by joining the community. +Redwood wouldn't be where it is without the people who use and contribute to it. +We warmly welcome you! + +## How these Docs are Organized + +As you can probably tell from the sidebar, Redwood's docs are organized into three sections: + +- [Tutorial](tutorial/foreword.md) +- [Reference](index) +- [How To](how-to/index) + +The order isn't arbitrary. +This is more or less the learning journey we have in mind for you. + +While we expect you to read the tutorial from top to bottom (maybe even more than once?), we of course don't expect you to read the Reference and How To sections that way. +The content in those sections is there on an as-needed basis. +You need to know about the Router? Check out the [Router](router.md) reference. +You need to upload files? Check out the [File Uploads](how-to/file-uploads.md) how to. + +That said, there are some references you should consider reading at some point in your Redwood learning journey. +Especially if you want to become an advanced user. +For example, [Services](services.md) are fundamental to Redwood. +It's worth getting to know them inside and out. +And if you're not writing [tests](testing.md) and [stories](storybook.md), you're not using Redwood to its full potential. + +> **We realize that the content doesn't always match the organization** +> +> For example, half the [Testing](testing.md) reference reads like a tutorial, and half the [Logger](logger.md) reference read like a how to. +> Till now, we've focused on coverage, making sure we had content on all of Redwood's feature somewhere at least. +> We'll shift our focus to organization and pay more attention to how we can curate the experience. diff --git a/docs/versioned_docs/version-7.0/local-postgres-setup.md b/docs/versioned_docs/version-7.0/local-postgres-setup.md new file mode 100644 index 000000000000..5facde1d7929 --- /dev/null +++ b/docs/versioned_docs/version-7.0/local-postgres-setup.md @@ -0,0 +1,166 @@ +--- +description: Setup a Postgres database to develop locally +--- + +# Local Postgres Setup + +RedwoodJS uses a SQLite database by default. While SQLite makes local development easy, you're +likely going to want to run the same database you use in production locally at some point. And since the odds of that database being Postgres are high, here's how to set up Postgres. + +## Install Postgres +### Mac +If you're on a Mac, we recommend using Homebrew: + +```bash +brew install postgresql@14 +``` + +> **Install Postgres? I've messed up my Postgres installation so many times, I wish I could just uninstall everything and start over!** +> +> We've been there before. For those of you on a Mac, [this video](https://www.youtube.com/watch?v=1aybOgni7lI) is a great resource on how to wipe the various Postgres installs off your machine so you can get back to a blank slate. +> Obviously, warning! This resource will teach you how to wipe the various Postgres installs off your machine. Please only do it if you know you can! + +### Windows and Other Platforms +If you're using another platform, see Prisma's [Data Guide](https://www.prisma.io/docs/guides/database-workflows/setting-up-a-database/postgresql) for detailed instructions on how to get up and running. + +## Creating a database + +If everything went well, then Postgres should be running and you should have a few commands at your disposal (namely, `psql`, `createdb`, and `dropdb`). + +Check that Postgres is running with `brew services` (the `$(whoami)` bit in the code block below is just where your username should appear): + +```bash +$ brew services +Name Status User Plist +postgresql started $(whoami) /Users/$(whoami)/Library/LaunchAgents/homebrew.mxcl.postgresql.plist +``` + +If it's not started, start it with: + +```bash +brew services start postgresql +``` + +Great. Now let's try running the PostgresQL interactive terminal, `psql`: + +```bash +$ psql +``` + +You'll probably get an error like: + +```bash +psql: error: FATAL: database $(whoami) does not exist +``` + +This is because `psql` tries to log you into a database of the same name as your user. But if you just installed Postgres, odds are that database doesn't exist. + +Luckily it's super easy to create one using another of the commands you got, `createdb`: + +```bash +$ createdb $(whoami) +``` + +Now try: + +``` +$ psql +psql (13.1) +Type "help" for help. + +$(whoami)=# +``` + +If it worked, you should see a prompt like the one above—your username followed by `=#`. You're in the PostgreSQL interactive terminal! While we won't get into `psql`, here's a few the commands you should know: + +- `\q` — quit (super important!) +- `\l` — list databases +- `\?` — get a list of commands + +If you'd rather not follow any of the advice here and create another Postgres user instead of a Postgres database, follow [this](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04#step-3-%E2%80%94-creating-a-new-role). + +## Update the Prisma Schema + +Tell Prisma to use a Postgres database instead of SQLite by updating the `provider` attribute in your +`schema.prisma` file: + +```graphql title="api/db/schema.prisma" +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} +``` +> Note: If you run into a "PrismaClientInitializationError" then you may need to regenerate the prisma client using: `yarn rw prisma generate` + +## Connect to Postgres + +Add a `DATABASE_URL` to your `.env` file with the URL of the database you'd like to use locally. The +following example uses `redwoodblog_dev` for the database. It also has `postgres` setup as a +superuser for ease of use. +```env +DATABASE_URL="postgresql://postgres@localhost:5432/redwoodblog_dev?connection_limit=1" +``` + +Note the `connection_limit` parameter. This is [recommended by Prisma](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/deployment#recommended-connection-limit) when working with +relational databases in a Serverless context. You should also append this parameter to your production +`DATABASE_URL` when configuring your deployments. + +### Local Test DB +You should also set up a test database similarly by adding `TEST_DATABASE_URL` to your `.env` file. +```env +TEST_DATABASE_URL="postgresql://postgres@localhost:5432/redwoodblog_test?connection_limit=1" +``` + +> Note: local postgres server will need manual start/stop -- this is not handled automatically by RW CLI in a manner similar to sqlite + +### Base URL and path + +Here is an example of the structure of the base URL and the path using placeholder values in uppercase letters: +```bash +postgresql://USER:PASSWORD@HOST:PORT/DATABASE +``` +The following components make up the base URL of your database, they are always required: + +| Name | Placeholder | Description | +| ------ | ------ | ------| +| Host | `HOST`| IP address/domain of your database server, e.g. `localhost` | +| Port | `PORT` | Port on which your database server is running, e.g. `5432` | +| User | `USER` | Name of your database user, e.g. `postgres` | +| Password | `PASSWORD` | password of your database user | +| Database | `DATABASE` | Name of the database you want to use, e.g. `redwoodblog_dev` | + +## Migrations +Migrations are snapshots of your DB structure, which, when applied, manage the structure of both your local development DB and your production DB. + +To create and apply a migration to the Postgres database specified in your `.env`, run the _migrate_ command. (Did this return an error? If so, see "Migrate from SQLite..." below.): +```bash +yarn redwood prisma migrate dev +``` + +### Migrate from SQLite to Postgres +If you've already created migrations using SQLite, e.g. you have a migrations directory at `api/db/migrations`, follow this two-step process. + +#### 1. Remove existing migrations +**For Linux and Mac OS** +From your project root directory, run either command corresponding to your OS. +```bash +rm -rf api/db/migrations +``` + +**For Windows OS** +```bash +rmdir /s api\db\migrations +``` + +> Note: depending on your project configuration, your migrations may instead be located in `api/prisma/migrations` + +#### 2. Create a new migration +Run this command to create and apply a new migration to your local Postgres DB: +```bash +yarn redwood prisma migrate dev +``` + +## DB Management Tools +Here are our recommendations in case you need a tool to manage your databases: +- [TablePlus](https://tableplus.com/) (Mac, Windows) +- [Beekeeper Studio](https://www.beekeeperstudio.io/) (Linux, Mac, Windows - Open Source) diff --git a/docs/versioned_docs/version-7.0/logger.md b/docs/versioned_docs/version-7.0/logger.md new file mode 100644 index 000000000000..e93ad213d7ee --- /dev/null +++ b/docs/versioned_docs/version-7.0/logger.md @@ -0,0 +1,788 @@ +--- +title: Logging +description: Use the Logger to observe your application +--- + +# Logger + +RedwoodJS provides an opinionated logger with sensible, practical defaults that grants you visibility into the applications while you're developing and after you have deployed. + +Logging in the serverless ecosystem is not trivial and neither is its configuration. Redwood aims to make this easier. + +When choosing a Node.js logger to add to the framework, RedwoodJS required that it: + +- Have a low-overhead, and be fast +- Output helpful, readable information in development +- Be highly configurable to set log levels, time formatting, and more +- Support key redaction to prevent passwords or tokens from leaking out +- Save to a file in local (or other) environments that can write to the file system +- Stream to third-party log and application monitoring services vital to production logging in serverless environments like [LogFlare](https://logflare.app/), [Datadog](https://www.datadoghq.com/) or [LogDNA](https://www.logdna.com/) +- Hook into [Prisma logging](https://www.prisma.io/docs/concepts/components/prisma-client/working-with-prismaclient/logging) to give visibility into connection issues, slow queries, and any unexpected errors +- Have a solid Developer experience (DX) to get logging out-of-the-gate quickly +- Use a compact configuration to set how to log (its `options`) and where to log -- file, stdout, or remote transport stream -- (its `destination`) + +With those criteria in mind, Redwood includes [pino](https://github.com/pinojs/pino) with its rich [features](https://github.com/pinojs/pino/blob/master/docs/api.md), [ecosystem](https://github.com/pinojs/pino/blob/master/docs/ecosystem.md) and [community](https://github.com/pinojs/pino/blob/master/docs/ecosystem.md#community). + +Plus ... pino means 🌲 pine tree! How perfect is that for RedwoodJS? + +Note: RedwoodJS logging is setup for its api side only. For browser and web side error reporting or exception handling, these features will be considered in future releases. + +## Quick Start + +To start 🌲🪓 api-side logging, just + +- import the logger in your service, function, or any other lib +- use `logger` with the level just as you might have with `console` + +```jsx title="api/lib/logger.ts" +import { createLogger } from '@redwoodjs/api/logger' + +/** + * Creates a logger. Options define how to log. Destination defines where to log. + * If no destination, std out. + */ +export const logger = createLogger({}) + +// then, in your api service, lib, or function +import { logger } from 'src/lib/logger' + +//... + +logger.trace(`>> items service -> About to save item ${item.name}`) +logger.info(`Saving item ${item.name}`) +logger.debug({ item }, `Item ${item.name} detail`) +logger.warn(item, `Item ${item.id} is missing a name`) +logger.warn({ missing: { name: item.name } }, `Item ${item.id} is missing values`) +logger.error(error, `Failed to save item`) +``` + +That's it! + +### Manual Setup for RedwoodJS Upgrade + +If you are upgrading an existing RedwoodJS app older than v0.28 and would like to include logging, you simply need to copy over files from the "Create Redwood Application" template: + +- Copy [`packages/create-redwood-app/template/api/src/lib/logger.ts`](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/template/api/src/lib/logger.ts) to `api/src/lib/logger.ts`. Required. + +For optional Prisma logging: + +- Copy [`packages/create-redwood-app/template/api/src/lib/db.ts`](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/template/api/src/lib/db.ts) and replace `api/src/lib/db.ts` (or `api/src/lib/db.js`). _Optional_. + +The first file `logger.ts` defines the logger instance. You will import `logger` and use in your services, functions or other libraries. You may then replace existing `console.log()` statements with `logger.info()` or `logger.debug()`. + +The second `db.ts` replaces how the `db` Prisma client instance is declared and exported. It configures Prisma logging, if desired. See below for more information on Prisma logging options. + +## Options aka How to Log + +In addition to the rich [features](https://github.com/pinojs/pino/blob/master/docs/api.md) that [pino](https://github.com/pinojs/pino) offers, RedwoodJS has added some sensible, practical defaults to make the logger DX first-rate. + +### Log Level + +One of 'fatal', 'error', 'warn', 'info', 'debug', 'trace' or 'silent'. + +The logger detects your current environment and will default to a sensible minimum log level. + +> **_NOTE:_** In Development, the default is `trace` while in Production, the default is `warn`. +> This means that output in your dev server can be verbose, but when you deploy you won't miss out on critical issues. + +You can override the default log level via the `LOG_LEVEL` environment variable or the `level` LoggerOption. + +The 'silent' level disables logging. + +### Troubleshooting + +> If you are not seeing log output when deployed, consider setting the level to `info` or `debug`. + +```jsx +import { createLogger } from '@redwoodjs/api/logger' + +/** + * Creates a logger with RedwoodLoggerOptions + * + * These extend and override default LoggerOptions, + * can define a destination like a file or other supported pino log transport stream, + * and sets whether or not to show the logger configuration settings (defaults to false) + * + * @param RedwoodLoggerOptions + * + * RedwoodLoggerOptions have + * @param {options} LoggerOptions - defines how to log, such as redaction and format + * @param {string | DestinationStream} destination - defines where to log, such as a transport stream or file + * @param {boolean} showConfig - whether to display logger configuration on initialization + */ +export const logger = createLogger({ options: { level: 'info' } }) +``` + +Please refer to the [Pino options documentation](https://github.com/pinojs/pino/blob/master/docs/api.md#options) for a complete list. + +### Redaction + +Everyone has heard of reports that Company X logged emails, or passwords, to files or systems that may not have been secured. While RedwoodJS logging won't necessarily prevent that, it does provide you with the mechanism to ensure that it won't happen. + +To redact sensitive information, you can supply paths to keys that hold sensitive data using the [redact option](https://github.com/pinojs/pino/blob/master/docs/redaction.md). + +We've included a default set called the `redactionsList` that includes keys such as + +``` + 'access_token', + 'accessToken', + 'DATABASE_URL', + 'email', + 'event.headers.authorization', + 'host', + 'jwt', + 'JWT', + 'password', + 'params', + 'secret', +``` + +You may wish to augment these defaults via the `redact` configuration setting, here adding a Social Security Number and Credit Card Number key to the list. + +```jsx +/** + * Custom redaction list + */ +import { redactionsList } from '@redwoodjs/api/logger' + +//... + +export const logger = createLogger({ + options: { redact: [...redactionsList, 'ssn,credit_card_number'] }, +}) +``` + +Note: Unless you provide the current `redactionsList` with the defaults, just the keys `'ssn,credit_card_number'` will be redacted. + +### Log Formatter (formerly known as "Pretty Printing") + +> **_Important:_** As of version 0.41, "pretty printing" with pino is no longer supported due to pino having deprecated the `pino-pretty` package and the accepted practice of not pretty printing in production due to overhead and not being able to send these formatted logs to transports. + +No log is worth logging if you cannot read it. + +RedwoodJS provides a `LogFormatter` that adds color, emoji, time formatting and level reporting so you can quickly see what is going on. + +It is based on [pino-colada](https://github.com/lrlna/pino-colada/blob/master/README.md): a cute [ndjson](http://ndjson.org) formatter for [pino](https://github.com/pinojs/pino). + +#### Command + +The `LogFormatter` is distributed as a bin that can be invoke via the `yarn rw-log-formatter` command + +To pipe logs to the formatter: + +```bash +echo "{\"level\": 30, \"message\": \"Hello RedwoodJS\"}" | yarn rw-log-formatter +``` + +Output: + +```bash +11:00:28 🌲 Hello RedwoodJS +✨ Done in 0.14s. +``` + +#### Usage + +Log formatting is automatically setup in the `yarn rw dev` command. + +```bash +yarn rw dev +``` + +You may also pipe logs to the formatter when using `rw serve`: + +```bash +yarn rw serve | yarn rw-log-formatter +yarn rw serve api | yarn rw-log-formatter +``` + +> Note: Since `rw serve` sets the Node environment to `production` you will not see log non-warn/error output unless you configure your logging level to `debug` or below. + +You'll see that formatted output by default when you launch your RedwoodJS app using: + +```bash +yarn rw dev +``` + +### Examples + +The following examples and screenshots show how log formatting output may look in your development environment. + +Notice how the emoji help identify the level, such as 🐛 for `debug` and 🌲 for `info`. + +#### Basic + +Simple request and with basic GraphQL output. + +![Screen Shot 2021-12-22 at 1 41 46 PM](https://user-images.githubusercontent.com/1051633/147141091-ab27e5f0-4b90-4114-9452-c095df5e2516.png) + +#### With a Custom Payload + +Sometimes you will want to log a 🗒 Custom message or payload object that isn't one of the predefined `query` or `data` options. + +> In these examples, the `post` is a blog post with a `id`, `title`, `commentCount`, and `description`. + +You can use the `custom` option: + +```tsx +logger.debug({ custom: post.title }, 'The title of a Post') +``` + +Or, you can also log a custom object payload: + +```tsx +logger.debug( + { + custom: { + title: post.title, + comments: post.commentCount, + }, + }, + 'Post with count of comments' +) +``` + +Or, a more nested payload: + +```tsx +logger.debug( + { + custom: { + title: post.title, + details: { + id: post.id, + description: post.description, + comments: post.commentCount, + }, + }, + }, + 'Post details' +) +``` + +Or, an entire object: + +```tsx +logger.debug( + { + custom: post, + }, + 'Post details' +) +``` + +#### With GraphQL Options + +Logging with extended GraphQL output that includes: + +- 🏷 GraphQL Operation Name +- 🔭 GraphQL Query +- 📦 GraphQL Data + +![Screen Shot 2021-12-22 at 1 43 11 PM](https://user-images.githubusercontent.com/1051633/147141089-20a41441-1038-4fee-a599-12f78d83a31d.png) + +#### With Prisma Queries + +Logging with Prisma query statement output. + +![Screen Shot 2021-12-22 at 1 44 20 PM](https://user-images.githubusercontent.com/1051633/147141082-7cfd417a-28bf-4020-8547-96c33972b7ce.png) + +#### GraphQL Logging + +Redwood-specific [GraphQL log data](graphql.md#logging) included by the the `useRedwoodLogger` envelop plug-in is supported: + +- Request Id +- User-Agent +- GraphQL Operation Name +- GraphQL Query +- GraphQL Data + +#### Production Logging + +By the way, when logging in production, you may want to: + +- send the logs as [ndjson](http://ndjson.org) to your host's log handler or application monitoring service to process, store and display. Therefore, you would not format your logs with `LogFormatter`. +- log only `warn` and `errors` to avoid chatty `info` or `debug` messages (that would be better suited for a staging or integration environment) + +### Nested Logging + +Since you can log metadata information alongside your message as seen in: + +```jsx +logger.debug({ item }, `Item ${item.name} detail`) +logger.warn(item, `Item ${item.id} is missing a name`) +logger.warn({ missing: { name: item.name } }, `Item ${item.id} is missing values`) +logger.error(error, `Failed to save item`) +``` + +There could be cases where a key in that metadata collides with a key needed by pino or your third-party transport. + +To prevent collisions and overwriting values, you can nest your metadata in `log` or `payload` (or some other attribute). + +```jsx +nestedKey: 'log', +``` + +Note: If you use `nestedKey` logging, you will have to manually set any `redact` options to include the `nestedKey` values as a prefix. + +For example, if your nestedKey is `'log`, then instead of redacting `email` you will have to redact `log.email`. + +### Destination aka Where to Log + +The `destination` option allows you to specify where to send the api-side log statements: to standard output, file, or transport stream. + +### Dev Server + +When in your development environment, logs will be output to the dev server's standard output. + +### Log to File + +If you are in your development environment (or another environment in which you have write access to the filesystem) you can set the `destination` to the location of your file. + +Note: logging to a file is not permitted if deployed to Netlify or Vercel. + +```jsx +/** + * Log to a File + */ +export const logger = createLogger({ + //options: {}, + destination: '/path/to/file/api.log', +}) +``` + +### Transport Streams + +Since each serverless function is ephemeral, its logging output is, too. Unless you monitor that function log just at the right time, you'll miss critical warnings, errors, or exceptions. + +It's recommended then to log to a "transport" stream when deployed to production so that logs are stored and searchable. + +Pino offers [several transports](https://github.com/pinojs/pino/blob/HEAD/docs/transports.md#known-transports) that can send your logs to a remote destination. A ["transport"](https://github.com/pinojs/pino/blob/HEAD/docs/transports.md) for pino is a supplementary tool which consumes pino logs. + +See below for examples of how to configure Logflare and Datadog. + +Note that not all [known pino transports](https://github.com/pinojs/pino/blob/HEAD/docs/transports.md#known-transports) can be used in a serverless environment. + +## Default Configuration Overview + +RedwoodJS provides an opinionated logger with sensible, practical defaults. These include: + +- Colorize and emojify output with a custom LogFormatter +- Ignore certain event attributes like hostname and pid for cleaner log statements +- Prefix the log output with log level +- Use a shorted log message that omits server name +- Humanize time in GMT +- Set the default log level in dev or test to trace +- Set the default log level in prod to warn +- Note you may override the default log level via the LOG_LEVEL environment variable +- Redact the host and other keys via a set redactionsList + +## Configuration Examples + +Some examples of common configurations and overrides that demonstrate how you can have control over both how and where you log. + +### Override Log Level + +You can set the minimum [level](#log-level) to log via the `level` option. This is useful if you need to override the default Production settings (just `warn` and `error`) to in this case `debug`. + +```jsx +/** + * Override minimum log level to debug + */ +export const logger = createLogger({ + options: { level: 'debug' }, +}) +``` + +### Customize a Redactions List + +While the logger provides a default redaction list, you can specify additional keys to redact by either appending them to the list or setting the `redact` option to a new array of keys. + +Please see [pino's redaction documentation](https://github.com/pinojs/pino/blob/master/docs/redaction.md) for other `redact` options, such as removing both keys and values and path matching. + +```jsx +/** + * Customize a redactions list to add `my_secret_key` + */ +import { redactionsList } from '@redwoodjs/api/logger' + +export const logger = createLogger({ + options: { redact: [...redactionsList, 'my_secret_key'] }, +}) +``` + +### Log to a Physical File + +If in your development environment or another environment in which you have write access to the filesystem, can can set the `destination` to the location of your file. + +Note: logging to a file is not permitted if deployed to Netlify or Vercel. + +```jsx +/** + * Log to a File + */ +export const logger = createLogger({ + options: {}, + destination: '/path/to/file/api.log', +}) +``` + +### Customize your own Transport Stream Destination, eg: with Honeybadger + +If `pino` doesn't have a transport package for your service, you can write one with the class `Write` from the `stream` package. You can adapt this example to your own logging needs but here, we will use [Honeybadger.io](https://honeybadger.io). + +- Install the `stream` package into `api` + +```shell +yarn workspace api add stream +``` + +- Install the `honeybadger-io/js` package into `api`, or any other package that suits you + +```shell +yarn workspace api add @honeybadger-io/js +``` + +- Import both `stream` and `@honeybadger-io/js` into `api/src/lib/logger.ts` + +```jsx +import { createLogger } from '@redwoodjs/api/logger' +import { Writable } from 'stream' + +const Honeybadger = require('@honeybadger-io/js') + +Honeybadger.configure({ + apiKey: process.env.HONEYBADGER_API_KEY, +}) + +const HoneybadgerStream = () => { + const stream = new Writable({ + write(chunk: any, encoding: BufferEncoding, fnOnFlush: (error?: Error | null) => void) { + Honeybadger.notify(chunk.toString()) + fnOnFlush() + }, + }) + + return stream +} + +/** + * Creates a logger. Options define how to log. Destination defines where to log. + * If no destination, std out. + */ +export const logger = createLogger({ + options: { level: 'debug' }, + destination: HoneybadgerStream(), +}) +``` + +- For the sake of our example, make sure you have a `HONEYBADGER_API_KEY` variable in your environment. + +Documentation on the `Write` class can be found here: [https://nodejs.org/api/stream.html](https://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback) + +### Log to Datadog using a Transport Stream Destination + +To stream your logs to [Datadog](https://www.datadoghq.com/), you can + +- Install the [`pino-datadog`](https://www.npmjs.com/package/pino-datadog) package into `api` + +```bash +yarn workspace api add pino-datadog +``` + +- Import `pino-datadog` into `api/src/lib/logger.ts` +- Configure the `stream` with your API key and [settings](https://github.com/ovhemert/pino-datadog/blob/master/docs/API.md) +- Set the logger `destination` to the `stream` + +```jsx +/** + * Stream logs to Datadog + */ +// api/src/lib/logger.ts +import datadog from 'pino-datadog' + +/** + * Creates a synchronous pino-datadog stream + * + * @param {object} options - Datadog options including your account's API Key + * + * @typedef {DestinationStream} + */ +export const stream = datadog.createWriteStreamSync({ + apiKey: process.env.DATADOG_API_KEY, + ddsource: 'my-source-name', + ddtags: 'tag,not,it', + service: 'my-service-name', + size: 1, +}) + +/** + * Creates a logger with RedwoodLoggerOptions + * + * These extend and override default LoggerOptions, + * can define a destination like a file or other supported pino log transport stream, + * and sets whether or not to show the logger configuration settings (defaults to false) + * + * @param RedwoodLoggerOptions + * + * RedwoodLoggerOptions have + * @param {options} LoggerOptions - defines how to log, such as redaction and format + * @param {string | DestinationStream} destination - defines where to log, such as a transport stream or file + * @param {boolean} showConfig - whether to display logger configuration on initialization + */ +export const logger = createLogger({ + options: {}, + destination: stream, +}) +``` + +### Log to Logflare using a Transport Stream Destination + +- Install the [`pino-logflare`](https://www.npmjs.com/package/pino-logflare) package into `api` + +```bash +yarn workspace api add pino-logflare +``` + +- Import `pino-logflare` into `api/src/lib/logger.ts` +- Configure the `stream` with your [API key and sourceToken](https://github.com/Logflare/pino-logflare/blob/master/docs/API.md) +- Set the logger `destination` to the `stream` + +```jsx title="api/src/lib/logger.ts" +import { createWriteStream } from 'pino-logflare' + +/** + * Creates a pino-logflare stream + * + * @param {object} options - Logflare options including + * your account's API Key and source token id + * + * @typedef {DestinationStream} + */ +export const stream = createWriteStream({ + apiKey: process.env.LOGFLARE_API_KEY, + sourceToken: process.env.LOGFLARE_SOURCE_TOKEN, +}) + +export const logger = createLogger({ + options: {}, + destination: stream, +}) +``` + +### Log to logDNA using a Transport Stream Destination + +- Install the [pino-logdna](https://www.npmjs.com/package/pino-logdna) package into `api` + +```bash +yarn workspace api add pino-logdna +``` + +- Import `pino-logdna` into `api/src/lib/logger.ts` +- Configure the `stream` with your [ingestion key](https://github.com/Logflare/pino-logflare/blob/master/docs/API.md) +- Set the logger `destination` to the `stream` + +```jsx title="api/src/lib/logger.ts" +import pinoLogDna from 'pino-logdna' + +const stream = pinoLogDna({ + key: process.env.LOGDNA_INGESTION_KEY, + onError: console.error, +}) + +/** + * Creates a logger with RedwoodLoggerOptions + * + * These extend and override default LoggerOptions, + * can define a destination like a file or other supported pino log transport stream, + * and sets whether or not to show the logger configuration settings (defaults to false) + * + * @param RedwoodLoggerOptions + * + * RedwoodLoggerOptions have + * @param {options} LoggerOptions - defines how to log, such as redaction and format + * @param {string | DestinationStream} destination - defines where to log, such as a transport stream or file + * @param {boolean} showConfig - whether to display logger configuration on initialization + */ +export const logger = createLogger({ + options: {}, + destination: stream, +}) +``` + +### Log to Papertrail using a Transport Stream Destination + +- Install the [pino-papertrail](https://www.npmjs.com/package/pino-papertrail) package into `api` + +```bash +yarn workspace api add pino-papertrail +``` + +- Import `pino-papertrail` into `logger.ts` +- Configure the `stream` in your Papertrail `options` with your appname's [configuration settings](https://github.com/ovhemert/pino-papertrail/blob/master/docs/API.md#options) +- Set the logger `destination` to the `stream` + +```jsx +import papertrail from 'pino-papertrail' + +const stream = papertrail.createWriteStream({ + appname: 'my-app', + host: '*****.papertrailapp.com', + port: '*****', +}) + +/** + * Creates a logger with RedwoodLoggerOptions + * + * These extend and override default LoggerOptions, + * can define a destination like a file or other supported pino log transport stream, + * and sets whether or not to show the logger configuration settings (defaults to false) + * + * @param RedwoodLoggerOptions + * + * RedwoodLoggerOptions have + * @param {options} LoggerOptions - defines how to log, such as redaction and format + * @param {string | DestinationStream} destination - defines where to log, such as a transport stream or file + * @param {boolean} showConfig - whether to display logger configuration on initialization + */ +export const logger = createLogger({ + options: {}, + destination: stream, +}) +``` + +## Papertrail Options + +You can pass the [following properties](https://github.com/ovhemert/pino-papertrail/blob/master/docs/API.md) in an options object: + +| Property | Type | Description | +| ------------------------------------------------------- | ----------------- | --------------------------------------------------- | +| appname (default: pino) | string | Application name | +| host (default: localhost) | string | Papertrail destination address | +| port (default: 1234) | number | Papertrail destination port | +| connection (default: udp) | string | Papertrail connection method (tls/tcp/udp) | +| echo (default: true) | boolean | Echo messages to the console | +| message-only (default: false) | boolean | Only send msg property as message to papertrail | +| backoff-strategy (default: `new ExponentialStrategy()`) | [BackoffStrategy] | Retry backoff strategy for any tls/tcp socket error | + +[backoffstrategy]: https://github.com/MathieuTurcotte/node-backoff#interface-backoffstrategy + +### Prisma Logging + +Redwood declares an instance of the PrismaClient + +Prisma is configured to log at the: + +- info +- warn +- error + +levels via `emitLogLevels`. + +One may also log _every_ query by adding the `query` level to + +```jsx +log: emitLogLevels(['info', 'warn', 'error', 'query']), +``` + +If you wish to remove `info` logging, then you can define a set of levels, such as `['warn', 'error']`. + +To configure Prisma logging, you first create the client and set the `log` options to emit the levels you wish to be logged via `emitLogLevels`. Second, you instruct the `logger` to handle the events emitted by the Prisma client in `handlePrismaLogging` setting the instance of the Prisma Client you've created in `db`, the `logger` instances, and then the same levels you've told the client to emit. + +Both `emitLogLevels` and `handlePrismaLogging` are `@redwoodjs/api/logger` package exports. + +```jsx +/* + * Instance of the Prisma Client + */ +export const db = new PrismaClient({ + log: emitLogLevels(['info', 'warn', 'error']), +}) + +handlePrismaLogging({ + db, + logger, + logLevels: ['info', 'warn', 'error'], +}) +``` + +See: The Prisma Client References documentation on [Logging](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#log). + +#### Slow Queries + +If `query` Prisma level logging is enabled and the `debug` level is enabled on the Logger then all query statements will be logged. + +Otherwise, any query exceeding a threshold duration will be logged on the `warn` level. + +The default threshold duration is 2 seconds. You can also pass `slowQueryThreshold` as an option to customize this duration when setting up Prisma logger. For example: + +```jsx +handlePrismaLogging({ + db, + logger, + logLevels: ['query', 'info', 'warn', 'error'], + slowQueryThreshold: 5_000, // in ms +}) +``` + +### Advanced Use + +There are situations when you may wish to add information to every log statement. + +This may be accomplished via [child loggers](https://github.com/pinojs/pino/blob/master/docs/child-loggers.md). + +#### GraphQL Service / Event Logger + +Examples to come. (PRs welcome.) + +#### Flushing the Log + +Flush the content of the buffer when an asynchronous destination: + +```jsx +logger.flush() +``` + +The use case is primarily for asynchronous logging, which may buffer log lines while others are being written. + +#### Child Loggers + +A child logger let's you add information to every log statement output. + +See: [pino's Child Loggers documentation](https://github.com/pinojs/pino/blob/master/docs/child-loggers.md) + +For example: + +```jsx +import { db } from 'src/lib/db' +import { logger } from 'src/lib/logger' + +export const userExamples = ({}, { info }) => { + // Adds path to the log + const childLogger = logger.child({ path: info.fieldName }) + childLogger.trace('I am in find many user examples resolver') + return db.userExample.findMany() +} + +export const userExample = async ({ id }, { info }) => { + // Adds id and the path to the log + const childLogger = logger.child({ id, path: info.fieldName }) + childLogger.trace('I am in the find a user example by id resolver') + const result = await db.userExample.findUnique({ + where: { id }, + }) + + // Since this is the child logger, here id and path will be included as well + childLogger.debug({ ...result }, 'This is the detail for the user') + + return result +} +``` + +The Redwood logger uses a child logger to inject the Prisma Client version into every Prisma log statement: + +```jsx +logger.child({ + prisma: { clientVersion: db['_clientVersion'] }, +}) +``` diff --git a/docs/versioned_docs/version-7.0/mailer.md b/docs/versioned_docs/version-7.0/mailer.md new file mode 100644 index 000000000000..923077849f7f --- /dev/null +++ b/docs/versioned_docs/version-7.0/mailer.md @@ -0,0 +1,283 @@ +# Mailer + +RedwoodJS offers a convenient Mailer for sending emails to your users. It's not just about sending an email; delivery matters too. The way you deliver the feature requiring email is as significant as how you prepare the mail to be delivered by the infrastructure that sends emails over the internet. + +When designing the Mailer, it was crucial that mail could be: + +* sent by popular third-party services like [Resend](), [SendGrid](), [Postmark](), [Amazon SES](), and others. +* sent by [Nodemailer]() as a self-hosted OSS solution. +* use different providers depending on the use case. For instance, some transactional emails might be sent via Resend and some digest emails sent by SES. You should be able to choose the method for a specific email. +* send safely in both development and test environments in a "sandbox" without worrying that emails might accidentally leak. +* be sent as text and/or html and composed using templates by popular tools like [React Email]() or [MJML](), with support for more methods in the future. +* unit tested to set the proper to, from, cc, subject, body, and more. +* integrated with RedwoodJS Studio to help design and preview templates. + +The RedwoodJS Mailer does more than "just send an email". It is a complete end-to-end design, development, and testing package for emails. + +## Overview + +The RedwoodJS Mailer consists of [handlers](#handlers) and [renderers](#renderers), which carry out the core functionality of sending (handling) your emails and composing (rendering) your emails, respectively. This is combined with a few required files which define the necessary configuration. + +A high-level overview of the Mailer Flow is shown in the diagram below, and each case is covered in more detail below the diagram. +mailer-flow + +### Renderers + +A **renderer** transforms your React components into strings of text or HTML that can be sent as an email. + +Mailer currently offers the following renderers: +* [@redwoodjs/mailer-renderer-react-email]() based on [React Email]() +* [@redwoodjs/mailer-renderer-mjml-react]() based on [MJML]() + +You can find community-maintained renderers by searching across npm, our forums, and other community spaces. + +:::important + +Email clients are notoriously inconsistent in how they render HTML into the visual email content. Consider using a robust react library to help you write components that produce attractive emails, rendered consistently across email clients. + +::: + +### Handlers + +A **handler** is responsible for taking your rendered content and passing it on to a service that can send your email to the intended recipients, e.g., Nodemailer or Amazon SES. + +Mailer currently offers the following handlers: +* [@redwoodjs/mailer-handler-in-memory](), a simple in-memory handler typically used for testing. +* [@redwoodjs/mailer-handler-nodemailer](), which uses [Nodemailer](). +* [@redwoodjs/mailer-handler-studio](), which sends emails to the RedwoodJS Studio using nodemailer internally. +* [@redwoodjs/mailer-handler-resend](), which uses [Resend](). + +You can find community-maintained handlers by searching across npm, our forums, and other community spaces. + +### Files & Directories + +The core file for the Mailer functions is `api/src/lib/mailer.ts`. This file contains configuration defining which handlers and renderers to use and when. It starts out looking like this: +```ts title=api/src/lib/mailer.ts +import { Mailer } from '@redwoodjs/mailer-core' +import { NodemailerMailHandler } from '@redwoodjs/mailer-handler-nodemailer' +import { ReactEmailRenderer } from '@redwoodjs/mailer-renderer-react-email' + +import { logger } from 'src/lib/logger' + +export const mailer = new Mailer({ + handling: { + handlers: { + // TODO: Update this handler config or switch it out for a different handler completely + nodemailer: new NodemailerMailHandler({ + transport: { + host: 'localhost', + port: 4319, + secure: false, + }, + }), + }, + default: 'nodemailer', + }, + + rendering: { + renderers: { + reactEmail: new ReactEmailRenderer(), + }, + default: 'reactEmail', + }, + + logger, +}) +``` + +In the above, you can see how handlers and renderers are defined. Handlers are defined in the `handling` object where the keys are any name you wish to give, and the values are instances of the handler you want to use. Similarly for renderers, which are defined in the `rendering` object. Each must have a `default` provided, specifying which option to use by default in production. + +Mailer also expects you to put your mail react components inside the `api/src/mail` directory. For example, if you had a welcome email, it should be found in `api/src/mail/Welcome/Welcome.tsx`. + +## Setup + +The Mailer is not set up by default when you create a new RedwoodJS app, but it is easy to do so. Simply run the following CLI command: + +```bash title="RedwoodJS CLI" +yarn rw setup mailer +``` + +This command sets up the necessary files and dependencies. You can find more information on this command at [this](https://redwoodjs.com/docs/cli-commands#setup-mailer) specific section of our docs. + +## Usage + +### Example + +The best way to understand using the Mailer is with an example. + +In the tutorial, we built out a blog site. Let's say we have added a contact us functionality and the contact us form takes a name, email, and message and stores it in the database. + +For this example, suppose we want to also send an email to some internal inbox with this contact us submission. + +The service would be updated like so: + +```ts title=api/src/services/contacts.ts +import { mailer } from 'src/lib/mailer' +import { ContactUsEmail } from 'src/mail/Example/Example' + +// ... + +export const createContact: MutationResolvers['createContact'] = async ({ + input, +}) => { + const contact = await db.contact.create({ + data: input, + }) + + // Send email + await mailer.send( + ContactUsEmail({ + name: input.name, + email: input.email, + // Note the date is hardcoded here for the sake of test snapshot consistency + when: new Date(0).toLocaleString(), + }), + { + to: 'inbox@example.com', + subject: 'New Contact Us Submission', + replyTo: input.email, + from: 'contact-us@example.com', + } + ) + + return contact +} +``` + +In the code above, we do the following: + +- Import the Mailer and our mail template. +- Call the `mailer.send` function with: + - Our template, which we pass props into based on the user input. + - A set of send options to specify to, from, etc. + +In the example above, we specified a `replyTo` because that suited our business logic. However, we probably don't want to write `replyTo: 'no-reply@example.com'` in all our other emails where we might want that to be set. + +In that case, we can use the `defaults` property in our `api/src/lib/mailer.ts` config: + +```ts title=api/src/lib/mailer.ts +defaults: { + replyTo: 'no-reply@example.com', +}, +``` + +Now that we implemented our example, we might start to think about testing or how to try this out ourselves during development. + +The Mailer behaves slightly differently based on which environment you are running in. + +This helps improve your experience as you don't have to worry about sending real emails during testing or development. + +### Testing + +When your `NODE_ENV` is set to `test`, then the Mailer will start in test mode. In this mode, all mail will be sent using a test handler rather than the default production one or any specific one set when calling `send` or `sendWithoutRendering`. + +By default, when the Mailer is created, it will check if the `@redwoodjs/mailer-handler-in-memory` package is available. If it is, this will become the test handler; otherwise, the test handler will be a no-op that does nothing. The `yarn rw setup mailer` command adds this `@redwoodjs/mailer-handler-in-memory` package as a `devDependency` automatically for you. + +If you want control over this test mode behavior, you can include the following configuration in the `mailer.ts` file: + +```ts title=api/src/lib/mailer.ts +test: { + when: process.env.NODE_ENV === 'test', + handler: 'someOtherHandler', +} +``` + +The `when` property can either be a boolean or a function that returns a boolean. This decides if the Mailer starts in test mode when it is created. The `handler` property can specify a different handler to use in test mode. + +As an example of how this helps with testing, let's work off the example we created above. Let's now test our email functionality in the corresponding test file: + +```ts title=api/src/services/contacts/contacts.test.ts +describe('contacts', () => { + scenario('creates a contact', async () => { + const result = await createContact({ + input: { name: 'String', email: 'String', message: 'String' }, + }) + + expect(result.name).toEqual('String') + expect(result.email).toEqual('String') + expect(result.message).toEqual('String') + + // Mail + const testHandler = mailer.getTestHandler() as InMemoryMailHandler + expect(testHandler.inbox.length).toBe(1) + const sentMail = testHandler.inbox[0] + expect({ + ...sentMail, + htmlContent: undefined, + textContent: undefined, + }).toMatchInlineSnapshot(` + { + "attachments": [], + "bcc": [], + "cc": [], + "from": "contact-us@example.com", + "handler": "nodemailer", + "handlerOptions": undefined, + "headers": {}, + "htmlContent": undefined, + "renderer": "reactEmail", + "rendererOptions": {}, + "replyTo": "String", + "subject": "New Contact Us Submission", + "textContent": undefined, + "to": [ + "inbox@example.com", + ], + } + `) + expect(sentMail.htmlContent).toMatchSnapshot() + expect(sentMail.textContent).toMatchSnapshot() + }) +}) +``` + +Above we tested that our service did the following: + +- Sent one email. +- All the send options (such as to, from, what handler, etc.) match a set of expected values (the inline snapshot). +- The rendered text and HTML content match the expected value (the snapshots). + +### Development + +Similar to the test mode, the Mailer also has a development mode. This mode is selected automatically when the Mailer is created if `NODE_ENV` is **not** set to `production`. This mode behaves similarly to the test mode and by default will attempt to use the `@redwoodjs/mailer-handler-studio` package if it is available. + +You can control the development mode behavior with the following configuration in the `mailer.ts` file: + +```ts title=api/src/lib/mailer.ts +development: { + when: process.env.NODE_ENV !== 'production', + handler: 'someOtherHandler', +}, +``` + +:::tip + +The Mailer studio has some helpful features when it comes to using the Mailer during development. It can provide a mail inbox so that you can send mail to your local machine and see the results. It can also provide live previews of your rendered mail templates as a guide to what they will likely look like when sent to your end users. + +::: + +### Production + +If neither the test nor development mode conditions are met, the Mailer will start in production mode. In this mode, there is no rerouting of your mail to different handlers. Instead, your mail will go directly to your default handler unless you specifically state a different one in your send options. + +### Studio + +Redwood Studio is tightly integrated with the mailer. The goal is to provide you with not just the ability to send mail but also the development tools to make your experience easier and more enjoyable. + +#### Template Previews +mailer-template-preview + +You can have a preview of what your mail templates will look like. These will rerender live as you update your template code and you can even provide a JSON payload which will be used as the props to your template component. These previews are approximate but should easily get you 90% of the way there. + +#### Local Inbox +mailer-local-inbox + +When running in development mode, using the default `@redwoodjs/mailer-handler-studio` development handler, your mail will be sent to a local SMTP inbox running inside of Studio. This allows you to use your app and have full emails sent without worrying about setting up a local inbox yourself or using some other online temporary inbox service. + +## Need a Renderer or Handler? + +If the Mailer does not currenly provide a [handler](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#handlers) or [renderer](notion://www.notion.so/redwoodjs/133467eb46b744fd8ae60df2d493d7d0#renderers) for the service or technology you wish to use, this doesn't prevent you from using the Mailer. Instead, you can create your own handler or renderer which you can then open source to the wider RedwoodJS community. + +To do this, read over the existing implementations for handlers [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/handlers) and renderers [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/renderers). You can also find the interfaces that a handler or mailer must satisfy [here](https://github.com/redwoodjs/redwood/tree/main/packages/mailer/core) in the `@redwoodjs/mailer-core` package. + +Be sure to check out the community forum for people working on similar work, to document your own creations, or to get help on anything. diff --git a/docs/versioned_docs/version-7.0/monitoring/sentry.md b/docs/versioned_docs/version-7.0/monitoring/sentry.md new file mode 100644 index 000000000000..700b28809337 --- /dev/null +++ b/docs/versioned_docs/version-7.0/monitoring/sentry.md @@ -0,0 +1,177 @@ +--- +description: Monitor errors, performance and more in your Redwood app using Sentry +--- + +# Sentry + +**Setup [Sentry](https://sentry.io/welcome/) error and performance monitoring across your Redwood application.** + +From your command line, run: +``` +yarn redwood setup monitoring sentry +``` + +This command installs and sets up [`@sentry/node`](https://docs.sentry.io/platforms/node/) and [`@sentry/react`](https://docs.sentry.io/platforms/javascript/guides/react/), enabling [Prisma](https://docs.sentry.io/platforms/node/performance/database/opt-in/#prisma-orm-integration) and [Browser](https://docs.sentry.io/platforms/javascript/performance/instrumentation/automatic-instrumentation/) tracing to capture 100% of events. The following sections detail how you may further integrate Sentry in your Redwood application. + +## Sentry Envelop Plugin + +The setup command will install and attempt to setup the [`@envelop/sentry`](https://the-guild.dev/graphql/envelop/plugins/use-sentry) plugin in your application's GraphQL handler. If there is a problem installing it, the following can be used to do so manually. + + + + +```js title="api/src/functions/graphql.js" +import { useSentry } from '@envelop/sentry' + +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +import 'src/lib/sentry' + +... + +export const handler = createGraphQLHandler({ + directives, + sdls, + services, + extraPlugins: [useSentry()], + ... +}) +``` + + + + + +```ts title="api/src/functions/graphql.ts" +import { useSentry } from '@envelop/sentry' + +import { createGraphQLHandler } from '@redwoodjs/graphql-server' + +import directives from 'src/directives/**/*.{js,ts}' +import sdls from 'src/graphql/**/*.sdl.{js,ts}' +import services from 'src/services/**/*.{js,ts}' + +import 'src/lib/sentry' + +... + +export const handler = createGraphQLHandler({ + directives, + sdls, + services, + extraPlugins: [useSentry()], + ... +}) +``` + + + + +## Setting the current user + +You can associate error and performance events with a unique identity using [`Sentry.setUser`](https://docs.sentry.io/platforms/node/enriching-events/identify-user/). Below is an example of doing so on the API by setting the identity to the user returned by `getCurrentUser`. + + + + +```js title="api/src/lib/auth.js" +import Sentry from 'src/lib/sentry' + +export const getCurrentUser = async (...) => { + const user = await db.user.findUnique(...) + + Sentry.setUser(user) + + ... +} +``` + + + + +```ts title="api/src/lib/auth.ts" +import Sentry from 'src/lib/sentry' + +export const getCurrentUser = async (...) => { + const user = await db.user.findUnique(...) + + Sentry.setUser(user) + + ... +} +``` + + + + +Below we set the current user on the web-side from within a [layout](#generate-layout). Note that the `useEffect` dependency array may vary depending on where you place `Sentry.setUser` in your own application. + + + + +```jsx title="web/src/layouts/SentryLayout/SentryLayout.jsx" +import { useEffect } from 'react' + +import { useAuth } from 'src/lib/auth' +import Sentry from 'src/lib/sentry' + +const SentryLayout = ({ children }) => { + const { currentUser } = useAuth() + + useEffect(() => Sentry.setUser(currentUser), [currentUser]) + + return <>{children} +} + +export default SentryLayout + +``` + + + + +```tsx title="web/src/layouts/SentryLayout/SentryLayout.tsx" +import React, { useEffect } from 'react' + +import { useAuth } from 'src/lib/auth' +import Sentry from 'src/lib/sentry' + +interface Props { + children: React.ReactNode +} + +const SentryLayout = ({ children }: Props) => { + const { currentUser } = useAuth() + + useEffect(() => Sentry.setUser(currentUser), [currentUser]) + + return <>{children} +} + +export default SentryLayout + +``` + + + + + +## Capturing exceptions + +You can make use of Sentry to capture exceptions which occur while executing API [Functions](#generate-function). + +```ts title="api/src/functions/foo.{js,ts}" +import Sentry from 'src/lib/sentry' + +export const handler = async (event, context) => { + try { + ... + } catch (err) { + Sentry.captureException(err) + } +} +``` diff --git a/docs/versioned_docs/version-7.0/prerender.md b/docs/versioned_docs/version-7.0/prerender.md new file mode 100644 index 000000000000..2ac27195086f --- /dev/null +++ b/docs/versioned_docs/version-7.0/prerender.md @@ -0,0 +1,401 @@ +--- +description: Render pages ahead of time +--- + +# Prerender + +Prerendering is great for providing a faster experience for your end users. Your pages will be rendered at build-time, saving your user's browser from having to do that job. + +We thought a lot about what the developer experience should be for route-based prerendering. The result is one of the smallest APIs imaginable! + +:::info How's Prerendering different from SSR/SSG/SWR/ISSG/...? +As Danny said in his [Prerender demo](https://www.youtube.com/watch?v=iorKyMlASZc&t=2844s) at our Community Meetup, the thing all of these have in common is that they render your markup in a Node.js context to produce HTML. The difference is when (build or runtime) and how often. + +Redwood currently supports prerendering at _build_ time. So before you deploy your web side, Redwood will render your pages into HTML, and once the JavaScript has been loaded on the browser, the page becomes dynamic. +::: + + + +## Prerendering a Page + +Prerendering a page is as easy as it gets. Just add the `prerender` prop to the Route that you want to prerender: + +```jsx {3} title="Routes.js" + +``` + +Then run `yarn rw build` and enjoy the performance boost! + + + + +### Prerendering all pages in a Set + +Just add the `prerender` prop to the Set that wraps all Pages you want to prerender: + +```jsx {1} title="Routes.js" + + + + +``` + +### Not found page + +You can also prerender your not found page (a.k.a your 404 page). Just add—you guessed it—the `prerender` prop: + +```diff +- ++ +``` + +This will prerender your NotFoundPage to `404.html` in your dist folder. Note that there's no need to specify a path. + +## Private Routes + +For Private Routes, Redwood prerenders your Private Routes' `whileLoadingAuth` prop: + +```jsx + + // Loading is shown while we're checking to see if the user's logged in + } prerender/> + +``` + +### Rendering skeletons while authenticating +Sometimes you want to render the shell of the page, while you wait for your authentication checks to happen. This can make the experience feel a lot snappier to the user, since they don't wait on a blank screen while their credentials are checked. + +To do this, make use of the `whileLoadingAuth` prop on `` in your Routes file. For example, if we have a dashboard that you need to be logged in to access: + +```js ./web/src/Routes.{tsx,js} +// This renders the layout with skeleton loaders in the content area +// highlight-next-line +const DashboardLoader = () => + + +const Routes = () => { + return ( + + + + + {/* ... */} +``` + +## Dynamic routes & Route Hooks + + + +Let's say you have a route like this + +```jsx + +``` + +To be able to prerender this route you need to let Redwood know what `id`s to use. Why? Because when we are prerendering your pages - at build time - we don't know the full URL i.e. `site.com/blog-post/1` vs `site.com/blog-post/3`. It's up to you to decide whether you want to prerender _all_ of the ids, or if there are too many to do that, if you want to only prerender the most popular or most likely ones. + +You do this by creating a `BlogPostPage.routeHooks.js` file next to the page file itself (so next to `BlogPostPage.js` in this case). It should export a function called `routeParameters` that returns an array of objects that specify the route parameters that should be used for prerendering. + +So for example, for the route `/blogPost/{Id:Int}` - you would return `[ {id: 55}, {id: 77} ]` which would tell Redwood to prerender `/blogPost/55` and `/blogPost/77` + +A single Page component can be used for different routes too! Metadata about the current route will be passed as an argument to `routeParameters` so you can return different route parameters depending on what route it is, if you need to. An example will hopefully make all this clearer. + +For the example route above, all you need is this: + +```js title="BlogPostPage.routeHooks.js" +export function routeParameters() { + return [{ id: 1 }, { id: 2 }, { id: 3 }] +} +``` + +Or, if you wanted to get fancy + +```js title="BlogPostPage.routeHooks.js" +export function routeParameters(route) { + + // If we are reusing the BlogPostPage in multiple routes, e.g. /odd/{id} and + // /blogPost/{id} we can choose what parameters to pass to each route during + // prerendering + // highlight-next-line + if (route.name === 'odd') { + return [{ id: 1 }, { id: 3 }, { id: 5 }] + } else { + return [{ id: 2 }, { id: 4 }, { id: 6 }] + } +} +``` + +With the config above three separate pages will be written: `web/dist/blog-post/1.html`, `web/dist/blog-post/2.html`, `web/dist/blog-post/3.html`. A word of warning - if it's just a few pages like this, it's no problem - but this can easily and quickly explode to thousands of pages, which could slow down your builds and deployments significantly (and make them costly, depending on how you're billed). + +In these routeHooks scripts you have full access to your database using prisma and all your services, should you need it. You use `import { db } from '$api/src/lib/db'` to get access to the `db` object. + +```js title="BlogPostPage.routeHooks.js" +import { db } from '$api/src/lib/db' + +export async function routeParameters() { + return (await db.post.findMany({ take: 7 })).map((post) => ({ id: post.id })) +} +``` + +Take note of the special syntax for the import, with a dollar-sign in front of api. This lets our tooling (typescript and babel) know that you want to break out of the web side the page is in to access code on the api side. This only works in the routeHook scripts (and scripts in the root /scripts directory). + +--- + +## Prerender Utils + +Sometimes you need more fine-grained control over whether something gets prerendered. This may be because the component or library you're using needs access to browser APIs like `window` or `localStorage`. Redwood has three utils to help you handle these situations: + +- `` +- `useIsBrowser` +- `isBrowser` + +:::tip Heads-up! +If you're prerendering a page that uses a third-party library, make sure it's "universal". If it's not, try calling the library after doing a browser check using one of the utils above. + +Look for these key words when choosing a library: _universal module, SSR compatible, server compatible_—all these indicate that the library also works in Node.js. +::: + +### `` component + +This higher-order component is great for JSX: + +```jsx +import { BrowserOnly } from '@redwoodjs/prerender/browserUtils' + +const MyFancyComponent = () => { +

    👋🏾 I render on both the server and the browser

    + +

    🙋‍♀️ I only render on the browser

    +
    +} +``` + +### `useIsBrowser` hook + +If you prefer hooks, you can use the `useIsBrowser` hook: + +```jsx +import { useIsBrowser } from '@redwoodjs/prerender/browserUtils' + +const MySpecialComponent = () => { + const browser = useIsBrowser() + + return ( +
    +

    Render info:

    + + {browser ?

    Browser

    :

    Prerendered

    } +
    + ) +} +``` + +### `isBrowser` boolean + +If you need to guard against prerendering outside React, you can use the `isBrowser` boolean. This is especially handy when running initializing code that only works in the browser: + +```jsx +import { isBrowser } from '@redwoodjs/prerender/browserUtils' + +if (isBrowser) { + netlifyIdentity.init() +} +``` + +### Debugging + +If you just want to debug your app, or check for possible prerendering errors, after you've built it, you can run this command: + +```bash +yarn rw prerender --dry-run +``` + +We're actively looking for feedback! Do let us know if: everything built ok? you encountered specific libraries that you were using that didn’t work? + +--- + +## Images and Assets + + + +Images and assets continue to work the way they used to. For more, see [this doc](assets-and-files.md). + +Note that there's a subtlety in how SVGs are handled. Importing an SVG and using it in a component works great: + +```jsx {1} +import logo from './my-logo.svg' + +function Header() { + return +} +``` + +But re-exporting the SVG as a component requires a small change: + +```jsx +// ❌ due to how Redwood handles SVGs, this syntax isn't supported. +import Logo from './Logo.svg' +export default Logo +``` + +```jsx +// ✅ use this instead. +import Logo from './Logo.svg' + +const LogoComponent = () => + +export default LogoComponent +``` + +--- +## Cell prerendering +As of v3.x, Redwood supports prerendering your Cells with the data you were querying. There's no special config to do here, but a couple of things to note: + +#### 1. Prerendering always happens as an unauthenticated user + +Because prerendering happens at _build_ time, before any authentication is set, all your queries on a Route marked for prerender will be made as a public user + +#### 2. We use your graphql handler to make queries during prerendering + +When prerendering we look for your graphql function defined in `./api/src/functions/graphql.{ts,js}` and use it to run queries against it. + + +### Common Warnings & Errors + +#### Could not load your GraphQL handler - the Loading fallback + +During builds if you encounter this warning +```shell + ⚠️ Could not load your GraphQL handler. + Your Cells have been prerendered in the "Loading" state. +``` + +It could mean one of two things: + +a) We couldn't locate the GraphQL handler at the usual path + +or + +b) There was an error when trying to import your GraphQL handler - maybe due to missing dependencies or an error in the code + + + +If you've moved this GraphQL function, or we encounter an error executing it, it won't break your builds. All your Cells will be prerendered in their `Loading` state, and will update once the JavaScript loads on the browser. This is effectively skipping prerendering your Cells, but they'll still work! + + +#### Cannot prerender the query \{queryName\} as it requires auth. +This error happens during builds when you have a Cell on a page you're prerendering that makes a query marked with `@requireAuth` in your SDL. + +During prerender you are not logged in ([see point 1](#1-prerendering-always-happens-as-an-unauthenticated-user)), so you'll have to conditionally render the Cell - for example: + +```js +import { useAuth } from '@redwoodjs/auth' + +const HomePage = () => { + // highlight-next-line + const { isAuthenticated } = useAuth + + return ( + <> + // highlight-next-line + { isAuthenticated ? : } + +``` + +--- +## Optimization Tips + + +### Dynamically loading large libraries + +If you dynamically load third-party libraries that aren't part of your JS bundle, using these prerendering utils can help you avoid loading them at build time: + +```jsx +import { useIsBrowser } from '@redwoodjs/prerender/browserUtils' + +const ComponentUsingAnExternalLibrary = () => { + const browser = useIsBrowser() + + // if `browser` evaluates to false, this won't be included + if (browser) { + loadMyLargeExternalLibrary() + } + + return ( + // ... + ) +``` + +### Configuring redirects + +Depending on what pages you're prerendering, you may want to change your redirect settings. Keep in mind your redirect settings will vary a lot based on what routes you are prerendering, and the settings of your deployment provider. + + +Using Netlify as an example: + +
    +If you prerender your `notFoundPage`, and all your other routes + +You can remove the default redirect to index in your `netlify.toml`. This means the browser will accurately receive 404 statuses when navigating to a route that doesn't exist: + +```diff +[[redirects]] +- from = "/*" +- to = "/index.html" +- status = 200 +``` + +This makes your app behave much more like a traditional website, where all the possible routes are defined up front. But take care to make sure you are prerendering all your pages, otherwise you will receive 404s on pages that do exist, but that Netlify hasn't been told about. +
    + +
    + +If you don't prerender your 404s, but prerender all your other pages + +You can add a 404 redirect if you want: + +```diff +[[redirects]] + from = "/*" + to = "/index.html" +- status = 200 ++ status = 404 +``` + +This makes your app behave much more like a traditional website, where all the possible routes are defined up front. But take care to make sure you are prerendering all your pages, otherwise you will receive 404s on pages that do exist, but that Netlify hasn't been told about. +
    + + + +### Flash after page load + +You might notice a flash after page load. Prerendering pages still has various benefits (such as SEO), but may seem jarring to users if there's a flash. + +A quick workaround for this is to make sure whatever page you're seeing the flash on isn't dynamically loaded i.e. prevent code splitting. You can do this by explicitly importing the page in `Routes.js`: + +```jsx +import { Router, Route } from '@redwoodjs/router' +// We don't want HomePage to be dynamically loaded +// highlight-next-line +import HomePage from 'src/pages/HomePage' + +const Routes = () => { + return ( + + + + + + ) +} + +export default Routes +``` diff --git a/docs/versioned_docs/version-7.0/project-configuration-dev-test-build.mdx b/docs/versioned_docs/version-7.0/project-configuration-dev-test-build.mdx new file mode 100644 index 000000000000..37df966dafeb --- /dev/null +++ b/docs/versioned_docs/version-7.0/project-configuration-dev-test-build.mdx @@ -0,0 +1,238 @@ +--- +title: Project Configuration +description: Advanced project configuration +--- + +import ReactPlayer from 'react-player' + +# Project Configuration: Dev, Test, Build + +## Babel + +Out of the box Redwood configures [Babel](https://babeljs.io/) so that you can write modern JavaScript and TypeScript without needing to worry about transpilation at all. +GraphQL tags, JSX, SVG imports—all of it's handled for you. + +For those well-versed in Babel config, you can find Redwood's in [@redwoodjs/internal](https://github.com/redwoodjs/redwood/tree/main/packages/internal/src/build/babel). + +### Configuring Babel + +For most projects, you won't need to configure Babel at all, but if you need to you can configure each side (web, api) individually using side-specific `babel.config.js` files. + +> **Heads up** +> +> `.babelrc{.js}` files are ignored. +> You have to put your custom config in the appropriate side's `babel.config.js`: `web/babel.config.js` for web and `api/babel.config.js` for api. + +Let's go over an example. + +#### Example: Adding Emotion + +Let's say we want to add the styling library [emotion](https://emotion.sh), which requires adding a Babel plugin. + +1. Create a `babel.config.js` file in `web`: +```shell +touch web/babel.config.js +``` +
    + +2. Add the `@emotion/babel-plugin` as a dependency: +```shell +yarn workspace web add --dev @emotion/babel-plugin +``` +
    + +3. Add the plugin to `web/babel.config.js`: +```jsx title="web/babel.config.js" +module.exports = { + plugins: ["@emotion"] // 👈 add the emotion plugin +} + +// ℹ️ Notice how we don't need the `extends` property +``` + +That's it! +Now your custom web-side Babel config will be merged with Redwood's. + +## Jest + +Redwood uses [Jest](https://jestjs.io/) for testing. +Let's take a peek at how it's all configured. + +At the root of your project is `jest.config.js`. +It should look like this: + +```jsx title="jest.config.js" +module.exports = { + rootDir: '.', + projects: ['/{*,!(node_modules)/**/}/jest.config.js'], +} +``` + +This just tells Jest that the actual config files sit in each side, allowing Jest to pick up the individual settings for each. +`rootDir` also makes sure that if you're running Jest with the `--collectCoverage` flag, it'll produce the report in the root directory. + +#### Web Jest Config + +The web side's configuration sits in `./web/jest.config.js` + +```jsx +const config = { + rootDir: '../', + preset: '@redwoodjs/testing/config/jest/web', + // ☝️ load the built-in Redwood Jest configuration +} + +module.exports = config +``` + +> You can always see Redwood's latest configuration templates in the [create-redwood-app package](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/web/jest.config.js). + +The preset includes all the setup required to test everything that's going on in web: rendering React components and transforming JSX, automatically mocking Cells, transpiling with Babel, mocking the Router and the GraphQL client—the list goes on! +You can find all the details in the [source](https://github.com/redwoodjs/redwood/blob/main/packages/testing/config/jest/web/jest-preset.js). + +#### Api Side Config + +The api side is configured similarly, with the configuration sitting in `./api/jest.config.js`. +But the api preset is slightly different in that: + +- it's configured to run tests serially (because Scenarios seed your test database) +- it has setup code to make sure your database is 1) seeded before running tests 2) reset between Scenarios + +You can find all the details in the [source](https://github.com/redwoodjs/redwood/blob/main/packages/testing/config/jest/api/jest-preset.js). + +## GraphQL Codegen + +You can customize the types that Redwood generates from your project too! This is documented in a bit more detail in the [Generated Types](typescript/generated-types#customising-codegen-config) doc. + +## Debug configurations + +### Dev Server +The `yarn rw dev` command is configured by default to open a browser and a debugger on the port `18911` and your redwood app ships with several default configurations to debug with VSCode. + +#### Customizing the configuration +**a) Using the redwood.toml** + +Add/change the `debugPort` or `open` under your api settings + +```toml title="redwood.toml" +[web] + # . +[api] + # . + // highlight-next-line + debugPort = 18911 # change me! +[browser] + // highlight-next-line + open = true # change me! +``` + +**b) Pass a flag to `rw dev` command** + +You can also pass a flag when you launch your dev servers, for example: + +```bash +yarn rw dev --debugPort 75028 +``` +The flag passed in the CLI will always take precedence over your setting in the `redwood.toml` + +Just remember to also change the port you are attaching to in your `./vscode/launch.json` + +### API and Web Debuggers +Simply run your dev server, then attach the debugger from the "run and debug" panel. Quick demo below: + + + +### Compound Debugger +The compound configuration is a combination of the dev, api and web configurations. +It allows you to start all debugging configurations at once, facilitating simultaneous debugging of server and client-side code. + +
    + +> **ℹ️ Tip: Can't see the debug configurations?** In VSCode +> +> You can grab the latest launch.json from the Redwood template [here](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/.vscode/launch.json). Copy the contents into your project's `.vscode/launch.json` + +## Ignoring the `.yarn` folder + +The `.yarn` folder contains the most recent Yarn executable that Redwood supports +which is the [recommended way](https://github.com/yarnpkg/yarn/issues/7741) +to ensure things run smoothly for everyone. From VSCode's perspective, this of course +is just another folder containing code, so it will + +1. include its contents in project-wide, full-text searches +2. display it in the file browser +3. watch its contents for changes + +… which, depending on your personal preference, is something you may not need or want. + +Fortunately, all these aspects are configurable via VSCode's `settings.json`. You have the +choice of making these changes to your local Redwood project's configuration +found in `.vscode/settings.json` or globally (so they apply to other projects as +well). For global changes, hit F1 or Ctrl+Shift+P +(that's +Shift+P if you're on Mac) +and search for "Preferences: Open User Settings (JSON)". + +Note that the local workspace configuration always overrules your user settings. +The VSCode website [provides an extensive explanation](https://code.visualstudio.com/docs/getstarted/settings#_settings-precedence) +on how its config inheritance works. It also has a complete reference of +[all available settings and their defaults](https://code.visualstudio.com/docs/getstarted/settings#_default-settings). + +### Excluding a folder from search results only + +Adding the following would exclude any `.yarn` folder encountered anywhere in +the project (that's what the +`**` [glob pattern](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) +does) from search results: + +```json + "search.exclude": { + "**/.yarn": true + } +``` + +### Excluding a folder from the file browser and searching + +```json + "files.exclude": { + "**/.yarn": true + } +``` + +This setting also excludes all matching folders and files from search results, +so there's no point in adding a `search.exclude` setting separately. + +Don't worry: this setting won't influence change detection in your "Source Control" +tab—that would be managed via `.gitignore`. + +### Excluding a folder from watching + +```json + "files.watcherExclude": { + "**/.yarn": true + } +``` + +This setting works independently of the ones above and so it needs to be added +separately. It's important to note that files or folders matched by this +setting will no longer immediately appear (or disappear): +- from existing search results (but as soon as you search again or change the search term, they'll be discovered) +- in your "Source Control" tab, unless you hit the "Refresh" button + +Admittedly, the `.yarn` folder won't change that often, so this may not be +the best example. But we thought we'd share this technique with you +so that you'd know how to apply it to any folders that you know change very often, +and how to tell VSCode not to bother wasting any CPU cycles on them. + +## Trailing whitespace + +If you're using VS Code, or another editor that supports +[EditorConfig](https://editorconfig.org), trailing whitespace will be trimmed +in source files, but preserved in html, markdown and mjml files when saving. + +This behavior is controlled by `.vscode/settings` or `.editorconfig` depending +on your editor. + +In JavaScript and TypeScript files trailing whitespace has no significance, +but for html, markdown and mjml it does. That's why the behavior is different +for those files. If you don't like the default behavior Redwood has configured +for you, you're free to change the settings in those two files. diff --git a/docs/versioned_docs/version-7.0/quick-start.md b/docs/versioned_docs/version-7.0/quick-start.md new file mode 100644 index 000000000000..e9c078e1958e --- /dev/null +++ b/docs/versioned_docs/version-7.0/quick-start.md @@ -0,0 +1,149 @@ +--- +description: Redwood quick start +--- + +# Quick Start + +:::info Prerequisites + +- Redwood requires [Node.js](https://nodejs.org/en/) (=20.x) and [Yarn](https://yarnpkg.com/) (>=1.22.21) +- Are you on Windows? For best results, follow our [Windows development setup](how-to/windows-development-setup.md) guide + +::: + +Create a Redwood project with `yarn create redwood-app`: + +``` +yarn create redwood-app my-redwood-project +``` + +:::tip Prefer TypeScript? + +Redwood comes with full TypeScript support from the get-go: + +``` +yarn create redwood-app my-redwood-project --typescript +``` + +::: + +Then change into that directory, yarn install, and start the development server: + +``` +cd my-redwood-project +yarn install +yarn redwood dev +``` + +Your browser should automatically open to [http://localhost:8910](http://localhost:8910) where you'll see the Welcome Page, which links out to many great resources: + +Redwood Welcome Page + +Redwood Welcome Page + +Congratulations on running your first Redwood CLI command! +From dev to deploy, the CLI is with you the whole way. +And there's quite a few commands at your disposal: +``` +yarn redwood --help +``` +For all the details, see the [CLI reference](cli-commands.md). + +## Prisma and the database + +Redwood wouldn't be a full-stack framework without a database. It all starts with the schema. Open the `schema.prisma` file in `api/db` and replace the `UserExample` model with the following `Post` model: + +```js title="api/db/schema.prisma" +model Post { + id Int @id @default(autoincrement()) + title String + body String + createdAt DateTime @default(now()) +} +``` + +Redwood uses [Prisma](https://www.prisma.io/), a next-gen Node.js and TypeScript ORM, to talk to the database. Prisma's schema offers a declarative way of defining your app's data models. And Prisma [Migrate](https://www.prisma.io/migrate) uses that schema to make database migrations hassle-free: + +``` +yarn rw prisma migrate dev + +# ... + +? Enter a name for the new migration: › create posts +``` + +:::tip + +`rw` is short for `redwood` + +::: + +You'll be prompted for the name of your migration. `create posts` will do. + +Now let's generate everything we need to perform all the CRUD (Create, Retrieve, Update, Delete) actions on our `Post` model: + +``` +yarn redwood generate scaffold post +``` + +Navigate to [http://localhost:8910/posts/new](http://localhost:8910/posts/new), fill in the title and body, and click "Save": + +Create a new post + +Did we just create a post in the database? Yup! With `yarn rw generate scaffold `, Redwood created all the pages, components, and services necessary to perform all CRUD actions on our posts table. + +## Frontend first with Storybook + +Don't know what your data models look like? +That's more than ok—Redwood integrates Storybook so that you can work on design without worrying about data. +Mockup, build, and verify your React components, even in complete isolation from the backend: + +``` +yarn rw storybook +``` + +Seeing "Couldn't find any stories"? +That's because you need a `*.stories.{tsx,jsx}` file. +The Redwood CLI makes getting one easy enough—try generating a [Cell](./cells), Redwood's data-fetching abstraction: + +``` +yarn rw generate cell examplePosts +``` + +The Storybook server should hot reload and now you'll have four stories to work with. +They'll probably look a little bland since there's no styling. +See if the Redwood CLI's `setup ui` command has your favorite styling library: + +``` +yarn rw setup ui --help +``` + +## Testing with Jest + +It'd be hard to scale from side project to startup without a few tests. +Redwood fully integrates Jest with both the front- and back-ends, and makes it easy to keep your whole app covered by generating test files with all your components and services: + +``` +yarn rw test +``` + +To make the integration even more seamless, Redwood augments Jest with database [scenarios](testing.md#scenarios) and [GraphQL mocking](testing.md#mocking-graphql-calls). + +## Ship it + +Redwood is designed for both serverless deploy targets like Netlify and Vercel and serverful deploy targets like Render and AWS: + +``` +yarn rw setup deploy --help +``` + +Don't go live without auth! +Lock down your app with Redwood's built-in, database-backed authentication system ([dbAuth](authentication.md#self-hosted-auth-installation-and-setup)), or integrate with nearly a dozen third-party auth providers: + +``` +yarn rw setup auth --help +``` + +## Next Steps + +The best way to learn Redwood is by going through the comprehensive [tutorial](tutorial/foreword.md) and joining the community (via the [Discourse forum](https://community.redwoodjs.com) or the [Discord server](https://discord.gg/redwoodjs)). diff --git a/docs/versioned_docs/version-7.0/realtime.md b/docs/versioned_docs/version-7.0/realtime.md new file mode 100644 index 000000000000..3a247671160e --- /dev/null +++ b/docs/versioned_docs/version-7.0/realtime.md @@ -0,0 +1,675 @@ +# Realtime + +One of the most often-asked questions of Redwood before and after the launch of V1 was, “When will Redwood support a realtime solution?” + +The answer is: **now**. + +## What is Realtime? + +Redwood's initial realtime solution leverages GraphQL and relies on a serverful deployment to maintain a long-running connection between the client and server. + +:::info + +This means that your cannot use Realtime when deploying to Netlify or Vercel. + +See one of Redwood's many [other Deploy providers](./deploy/introduction.md), and the [Docker setup](./docker.md) for good measure. + +::: + +Redwood's GraphQL server uses the [GraphQL over Server-Sent Events](https://github.com/enisdenjo/graphql-sse/blob/master/PROTOCOL.md#distinct-connections-mode) spec's "distinct connections mode" for subscriptions. + +Advantages of SSE over WebSockets include: + +* Transported over simple HTTP instead of a custom protocol +* Built in support for re-connection and event-id +* Simpler protocol +* No trouble with corporate firewalls doing packet inspection + +### Subscriptions and Live Queries + +In GraphQL, there are two options for real-time updates: **live queries** and **subscriptions**. + +Subscriptions are part of the GraphQL specification, whereas live queries are not. + +There are times where subscriptions are well-suited for a realtime problem and in some cases live queries may be a better fit. Later we’ll explore the pros and cons of each approach and how best to decide which to use and when. + +### Defer and Stream + +[Defer and stream](https://the-guild.dev/graphql/yoga-server/docs/features/defer-stream) are directives that allow you to improve latency for clients by sending the most important data as soon as it's ready. + +As applications grow, the GraphQL operation documents can get bigger. The server will only send the response back once all the data requested in the query is ready. But not all requested data is of equal importance, and the client may not need all of the data at once. + +#### Using Defer + +The `@defer` directive allows you to postpone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. + +#### Using Stream + +The `@stream` directive allows you to stream the individual items of a field of the list type as the items are available. + +:::info +The `@stream` directive is currently **not** supported by Apollo GraphQL client. +::: + +## Features + +Realtime handles the hard parts of a GraphQL realtime implementation by automatically: + +- allowing GraphQL Subscription operations to be handled +- merging in your subscriptions types and mapping their handler functions (subscribe and resolve) to your GraphQL schema letting you keep your subscription logic organized and apart from services (your subscription may use a service to respond to an event) +- authenticating subscription requests using the same `@requireAuth` directives already protecting other queries and mutations (or you can implement your own validator directive) +- adding in the `@live` query directive to your GraphQL schema and setting up the `useLiveQuery` envelop plugin to handle requests, invalidation, and managing the storage mechanism needed +- creating and configuring in-memory and persisted Redis stores used by the PubSub transport for subscriptions and Live Queries (and letting you switch between them in development and production) +- placing the pubSub transport and stores into the GraphQL context so you can use them in services, subscription resolvers, or elsewhere (like a webhook, function, or job) to publish an event or invalidate data +- typing your subscription channel event payloads +- support `@defer` and `@stream` directives + +It provides a first-class developer experience for real-time updates with GraphQL so you can easily + +- respond to an event (e.g. NewPost, NewUserNotification) +- respond to a data change (e.g. Post 123's title updated) + +and have the latest data reflected in your app. + +Lastly, the Redwood CLI has commands to generate a boilerplate implementation and sample code needed to create your custom subscriptions and Live Queries. + +Regardless of the implementation chosen, **a stateful server and store are needed** to track changes, invalidation, and who wants to be informed about changes. + +### What can I build with Realtime? + +- Application alerts and messages +- User notifications +- Live charts +- Location updates +- Auction bid updates +- Messaging +- OpenAI streaming responses + +## Redwood Realtime Setup + +To setup realtime in an existing Redwood project, run the following commands: + +* `yarn rw setup server-file` +* `yarn rw setup realtime` + +You'll get: + +* `api/server.ts` where you can configure your Fastify server +* `api/lib/realtime.ts` where you consume your subscriptions and configure realtime with an in-memory or Redis store +* Usage examples for live queries, subscriptions, defer, and stream. You'll get sdl, services/subscriptions for each +* The [`auction` live query](#auction-live-query-example) example +* The [`countdown timer` subscription](#countdown-timer-example) example +* The [`chat` subscription](#chatnew-message-example) examples +* The [`alphabet` stream](#alphabet-stream-example) example +* The [`slow and fast` field defer](#slow-and-fast-field-defer-example) example + +:::note +There is no UI set up for these examples. You can find information on how to try them out using the GraphiQL playground. +::: + +Just add the realtime configuration to your GraphQL handler in `api/src/functions/graphql.ts` and you're good to go: + +```diff title="api/src/functions/graphql.ts" ++ import { realtime } from 'src/lib/realtime' + + export const handler = createGraphQLHandler({ + // ... ++ realtime, + }) +``` + +### Realtime Configuration + +By default, Redwood's realtime configures an in-memory store for the Pub Sub client used with subscriptions and live query invalidation. + +Realtime supports in-memory and Redis stores: + +- In-memory stores are useful for development and testing. +- Redis stores are useful for production. + +To enable defer and streaming, set `enableDeferStream` to true. + +Configure a Redis store and defer and stream in: + +```ts title="api/lib/realtime.ts" +import { RedwoodRealtimeOptions } from '@redwoodjs/realtime' + +import subscriptions from 'src/subscriptions/**/*.{js,ts}' + +// if using a Redis store +// import { Redis } from 'ioredis' +// const publishClient = new Redis() +// const subscribeClient = new Redis() + +/** + * Configure RedwoodJS Realtime + * + * See https://redwoodjs.com/docs/realtime + * + * Realtime supports Live Queries and Subscriptions over GraphQL SSE. + * + * Live Queries are GraphQL queries that are automatically re-run when the data they depend on changes. + * + * Subscriptions are GraphQL queries that are run when a client subscribes to a channel. + * + * Redwood Realtime + * - uses a publish/subscribe model to broadcast data to clients. + * - uses a store to persist Live Query and Subscription data. + * + * Redwood Realtime supports in-memory and Redis stores: + * - In-memory stores are useful for development and testing. + * - Redis stores are useful for production. + */ +export const realtime: RedwoodRealtimeOptions = { + subscriptions: { + subscriptions, + store: 'in-memory', + // if using a Redis store + // store: { redis: { publishClient, subscribeClient } }, + }, + liveQueries: { + store: 'in-memory', + // if using a Redis store + // store: { redis: { publishClient, subscribeClient } }, + }, + // To enable defer and streaming, set to true. + // enableDeferStream: true, +} +``` + +#### PubSub and LiveQueryStore + +By setting up realtime, the GraphQL server adds two helpers on the context: + +* pubSub +* liveQueryStory + +With `context.pubSub` you can subscribe to and publish messages via `context.pubSub.publish('the-topic', id, id2)`. + +With `context.liveQueryStore.` you can `context.liveQueryStore.invalidate(key)` where your key may be a reference or schema coordinate: + +##### Reference +Where the query is: `auction(id: ID!): Auction @requireAuth`: + +* `"Auction:123"` + +##### Schema Coordinate +When the query is: `auctions: [Auction!]! @requireAuth`: + +* `"Query.auctions"` + +## Subscriptions + +Redwood has a first-class developer experience for GraphQL subscriptions. + +#### Subscribe to Events + +- Granular information on what data changed +- Why has the data changed? +- Spec compliant + +### Chat/New Message Example + +```graphql +type Subscription { + newMessage(roomId: ID!): Message! @requireAuth +} +``` + +1. I subscribed to a "newMessage” in room “2” +2. Someone added a message to room “2” with a from and body +3. A "NewMessage" event to Room 2 gets published +4. I find out and see who the message is from and what they messaged (the body) + +### Countdown Timer Example + +Counts down from a starting values by an interval. + +```graphql +subscription CountdownFromInterval { + countdown(from: 100, interval: 10) +} +``` + +This example showcases how a subscription yields its own response. + +## Live Queries + +Redwood has made it super easy to add live queries to your GraphQL server! You can push new data to your clients automatically once the data selected by a GraphQL operation becomes stale by annotating your query operation with the `@live` directive. + +The invalidation mechanism is based on GraphQL ID fields and schema coordinates. Once a query operation has been invalidated, the query is re-executed, and the result is pushed to the client. + +##### Listen for Data Changes + +- I'm not interested in what exactly changed it. +- Just give me the data. +- This is not part of the GraphQL specification. +- There can be multiple root fields. + +### Auction Live Query Example + +```graphql +query GetCurrentAuctionBids @live { + auction(id: "1") { + bids { + amount + } + highestBid { + amount + } + id + title + } +} + +mutation MakeBid { + bid(input: { auctionId: "1", amount: 10 }) { + amount + } +} +``` + +1. I listen for changes to Auction 1 by querying the auction. +2. A bid was placed on Auction 1. +3. The information for Auction 1 is no longer valid. +4. My query automatically refetches the latest Auction and Bid details. + +## Defer Directive + +The `@defer` directive allows you to postpone the delivery of one or more (slow) fields grouped in an inlined or spread fragment. + +### Slow and Fast Field Defer Example + +Here, the GraphQL schema defines two queries for a "fast" and a "slow" (i.e., delayed) information. + +```graphql +export const schema = gql` + type Query { + """ + A field that resolves fast. + """ + fastField: String! @skipAuth + + """ + A field that resolves slowly. + Maybe you want to @defer this field ;) + """ + slowField(waitFor: Int! = 5000): String @skipAuth + } +` +``` + +The Redwood services for these queries return the `fastField` immediately and the `showField` after some delay. + +```ts +import { logger } from 'src/lib/logger' + +const wait = (time: number) => + new Promise((resolve) => setTimeout(resolve, time)) + +export const fastField = async () => { + return 'I am speedy' +} + +export const slowField = async (_, { waitFor = 5000 }) => { + logger.debug('deferring slowField until ...') + await wait(waitFor) + logger.debug('now!') + + return 'I am slow' +} +``` + +When making the query: + +```graphql +query SlowAndFastFieldWithDefer { + ... on Query @defer { + slowField + } + fastField +} +``` + +The response returns: + +```json +{ + "data": { + "fastField": "I am speedy" + } +} +``` + +and will await the deferred field to then present: + +```json +{ + "data": { + "fastField": "I am speedy", + "slowField": "I am slow" + } +} +``` + +## Stream Directive + +The `@stream` directive allows you to stream the individual items of a field of the list type as the items are available. + +### Alphabet Stream Example + +Here, the GraphQL schema defines a query to return the letters of the alphabet: + +```graphql +export const schema = gql` + type Query { + alphabet: [String!]! @skipAuth +` +``` + +The service uses `Repeater` to write a safe stream resolver. + +:::info +[AsyncGenerators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator) as declared via the `async *` keywords are prone to memory leaks and leaking timers. For real-world usage, use Repeater. +::: + +```ts +import { Repeater } from '@redwoodjs/realtime' + +import { logger } from 'src/lib/logger' + +export const alphabet = async () => { + return new Repeater(async (push, stop) => { + const values = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] + const publish = () => { + const value = values.shift() + + if (value) { + logger.debug({ value }, 'publishing') + + push(value) + } + + if (values.length === 0) { + stop() + } + } + + const interval = setInterval(publish, 1000) + + stop.then(() => { + logger.debug('cancel') + clearInterval(interval) + }) + + publish() + }) +} +``` + +### What does the incremental stream look like? + +Since Apollo Client does not yet support the `@stream` directive, you can use them in the GraphiQL Playground or see them in action via CURL. + +When making the request with the `@stream` directive: + +```bash +curl -g -X POST \ + -H "accept:multipart/mixed" \ + -H "content-type: application/json" \ + -d '{"query":"query StreamAlphabet { alphabet @stream }"}' \ + http://localhost:8911/graphql +``` + +Here you see the initial response has `[]` for alphabet data. +Then on each push to the Repeater, an incremental update to the list of letters is sent. +The stream ends when `hasNext` is false: + +```bash +* Connected to localhost (127.0.0.1) port 8911 (#0) +> POST /graphql HTTP/1.1 +> Host: localhost:8911 +> User-Agent: curl/8.1.2 +> accept:multipart/mixed +> content-type: application/json +> Content-Length: 53 +> +< HTTP/1.1 200 OK +< connection: keep-alive +< content-type: multipart/mixed; boundary="-" +< transfer-encoding: chunked +< +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 39 + +{"data":{"alphabet":[]},"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["a"],"path":["alphabet",0]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["b"],"path":["alphabet",1]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["c"],"path":["alphabet",2]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["d"],"path":["alphabet",3]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["e"],"path":["alphabet",4]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["f"],"path":["alphabet",5]}],"hasNext":true} +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 70 + +{"incremental":[{"items":["g"],"path":["alphabet",6]}],"hasNext":true} +--- +... + +--- +Content-Type: application/json; charset=utf-8 +Content-Length: 17 + +{"hasNext":false} +----- +``` + +## How do I choose Subscriptions or Live Queries? + +![image](https://github.com/ahaywood/redwoodjs-streaming-realtime-demos/assets/1051633/e3c51908-434c-4396-856a-8bee7329bcdd) + +When deciding on how to offer realtime data updates, you’ll want to consider: + +- How frequently do your users require information updates? + - Determine the value of "real-time" versus "near real-time" to your users. Do they need to know in less than 1-2 seconds, or is 10, 30, or 60 seconds acceptable for them to receive updates? + - Consider the criticality of the data update. Is it low, such as a change in shipment status, or higher, such as a change in stock price for an investment app? + - Consider the cost of maintaining connections and tracking updates across your user base. Is the infrastructure cost justifiable? + - If you don't require "real" real-time, consider polling for data updates on a reasonable interval. According to Apollo, [in most cases](https://www.apollographql.com/docs/react/data/subscriptions/), your client should not use subscriptions to stay up to date with your backend. Instead, you should poll intermittently with queries or re-execute queries on demand when a user performs a relevant action, such as clicking a button. +- How are you deploying? Serverless or serverful? + - Real-time options depend on your deployment method. + - If you are using a serverless architecture, your application cannot maintain a stateful connection to your users' applications. Therefore, it's not easy to "push," "publish," or "stream" data updates to the web client. + - In this case, you may need to look for third-party solutions that manage the infrastructure to maintain such stateful connections to your web client, such as [Supabase Realtime](https://supabase.com/realtime), [SendBird](https://sendbird.com/), [Pusher](https://pusher.com/), or consider creating your own [AWS SNS-based](https://docs.aws.amazon.com/sns/latest/dg/welcome.html) functionality. + + + +## Showcase Demos + +Please see our [showcase realtime app](https://realtime-demo.fly.dev) for examples of subscriptions and live queries. It also demonstrates how you can handle streaming responses, like those used by OpenAI chat completions. + +### Chat Room (Subscription) + +Sends a message to one of four Chat Rooms. + +Each room subscribes to its new messages via the `NewMessage` channel aka topic. + +```ts +context.pubSub.publish('newMessage', roomId, { from, body }) +``` + +#### Simulate + +```bash +./scripts/simulate_chat.sh -h +Usage: ./scripts/simulate_chat.sh -r [roomId] -n [num_messages] + ./scripts/simulate_chat.sh -h + +Options: + -r roomId Specify the room ID (1-4) for sending chat messages. + -n num_messages Specify the number of chat messages to send. If not provided, the script will run with a random number of messages. +``` +#### Test + +```ts +/** + * To test this NewMessage subscription, run the following in one GraphQL Playground to subscribe: + * + * subscription ListenForNewMessagesInRoom { + * newMessage(roomId: "1") { + * body + * from + * } + * } + * + * + * And run the following in another GraphQL Playground to publish and send a message to the room: + * + * mutation SendMessageToRoom { + * sendMessage(input: {roomId: "1", from: "hello", body: "bob"}) { + * body + * from + * } + * } + */ + ``` + +### Auction Bids (Live Query) + +Bid on a fancy pair of new sneaks! + +When a bid is made, the auction updates via a Live Query due to the invalidation of the auction key. + +```ts + const key = `Auction:${auctionId}` + context.liveQueryStore.invalidate(key) + ``` + +#### Simulate + +```bash +./scripts/simulate_bids.sh -h +Usage: ./scripts/simulate_bids.sh [options] + +Options: + -a Specify the auction ID (1-5) for which to send bids (optional). + -n Specify the number of bids to send (optional). + -h, --help Display this help message. + ``` + +#### Test + +```ts +/** + * To test this live query, run the following in the GraphQL Playground: + * + * query GetCurrentAuctionBids @live { + * auction(id: "1") { + * bids { + * amount + * } + * highestBid { + * amount + * } + * id + * title + * } + * } + * + * And then make a bid with the following mutation: + * + * mutation MakeBid { + * bid(input: {auctionId: "1", amount: 10}) { + * amount + * } + * } + */ +``` + +### Countdown (Streaming Subscription) + +> It started slowly and I thought it was my heart +> But then I realised that this time it was for real + +Counts down from a starting values by an interval. + +This example showcases how a subscription can yields its own response. + +#### Test + +```ts +/** + * To test this Countdown subscription, run the following in the GraphQL Playground: + * + * subscription CountdownFromInterval { + * countdown(from: 100, interval: 10) + * } + */ +``` + +### Bedtime Story (Subscription with OpenAI Streaming) + +> Tell me a story about a happy, purple penguin that goes to a concert. + +Showcases how to use OpenAI to stream a chat completion via a prompt that writes a bedtime story: + +```ts +const PROMPT = `Write a short children's bedtime story about an Animal that is a given Color and that does a given Activity. + +Give the animal a cute descriptive and memorable name. + +The story should teach a lesson. + +The story should be told in a quality, style and feeling of the given Adjective. + +The story should be no longer than 3 paragraphs. + +Format the story using Markdown.` + +``` + +The story updates on each stream content delta via a `newStory` subscription topic event. + +```ts +context.pubSub.publish('newStory', id, story) +``` + +### Movie Mashup (Live Query with OpenAI Streaming) + +> It's Out of Africa meets Pretty Woman. + +> So it's a psychic, political, thriller comedy with a heart With a heart, not unlike Ghost meets Manchurian Candidate. + +-- The Player, 1992 + +Mashup some of your favorite movies to create something new and Netflix-worthy to watch. + +Powered by OpenAI, this movie tagline and treatment updates on each stream content delta via a Live Query by invalidating the `MovieMashup key. + +```ts +context.liveQueryStore.invalidate(`MovieMashup:${id}`) +``` diff --git a/docs/versioned_docs/version-7.0/redwoodrecord.md b/docs/versioned_docs/version-7.0/redwoodrecord.md new file mode 100644 index 000000000000..827428f47767 --- /dev/null +++ b/docs/versioned_docs/version-7.0/redwoodrecord.md @@ -0,0 +1,418 @@ +--- +description: An ORM with a natural interface +--- + +# RedwoodRecord + +> RedwoodRecord is currently considered to be **Experimental**. We are hoping folks will start using it and give us feedback to help shape its development and developer experience. + +RedwoodRecord is an ORM ([Object-relational Mapping](https://en.wikipedia.org/wiki/Object%E2%80%93relational_mapping)) built on top of Prisma. It may be extended in the future to wrap other database-access packages. + +RedwoodRecord is heavily inspired by [ActiveRecord](https://guides.rubyonrails.org/active_record_basics.html) which ships with [Ruby on Rails](https://rubyonrails.org). It presents a natural interface to the underlying data in your database, without worry about the particulars of SQL syntax. + +## Background and Terminology + +Before you can use RedwoodRecord you need to create classes for each database table you intend to access. Let's say we have a blog with three database tables: + +``` +┌───────────┐ ┌────────────┐ ┌────────────┐ +│ User │ │ Post │ │ Comment │ +├───────────┤ ├────────────┤ ├────────────┤ +│ id │•──┐ │ id │•──┐ │ id │ +│ name │ └──<│ userId │ └─<│ postId │ +│ email │ │ title │ │ name │ +└───────────┘ │ body │ │ message │ + └────────────┘ └────────────┘ +``` + +In database-speak we say that these tables have *one-to-many* relationships between them when moving from left to right in the diagram above: one User can have many Posts associated to it, and a Post can have many Comments. The "one" is denoted with a `•` on the arrow above and a `<` denotes the "many." + +You can leave it at that, as saying one-to-many explains both sides of the relationship, but it's sometimes convenient to refer to the relation in the "opposite" direction. Reading the diagram from right to left we could say that a comment *belongs to* a post (it has a foreign key `postId` that points to Post via `Comment.postId` → `Post.id`) and a Post belongs to a User (`Post.userId` → `User.id`) + +There are also *many-to-many* relationships, such as a Product and Category—a Product can have many different Categories, and a Category will have many different Products connected to it: + +``` +┌───────────┐ ┌────────────┐ +│ Product │ │ Category │ +├───────────┤ ├────────────┤ +│ id │>─────<│ id │ +│ name │ │ name │ +│ upc │ │ shelf │ +└───────────┘ └────────────┘ +``` + +These tables don't have any foreign keys (`productId` or `categoryId`) so how do they keep track of each other? Generally you'll create a *join table* between the two that references each other's foreign key: + +``` +┌───────────┐ ┌───────────────────┐ ┌────────────┐ +│ Product │ │ ProductCategory │ │ Category │ +├───────────┤ ├───────────────────┤ ├────────────┤ +│ id │•────<│ productId │ ┌──•│ id │ +│ name │ │ categoryId │>──┘ │ name │ +│ upc │ └───────────────────┘ │ shelf │ +└───────────┘ └────────────┘ +``` + +Now we're back to one-to-many relationships. In Prisma this join table is created and maintained for you. It will be named `_CategoryToPost` and the foreign keys will simply be named `A` and `B` and point to the two separate tables. Prisma refers to this as an [implicit many-to-many](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#implicit-many-to-many-relations) relationship. + +If you want to create the join table yourself and potentially store additional data there (like a timestamp of when the product was categorized) then this is simply a one-to-many relationship on both sides: a Product has many ProductCategories and a Category has many ProductCategories. Prisma refers to this as an [explicitly many-to-many](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#explicit-many-to-many-relations) relationship. + +> TODO: We'll be adding logic soon that will let you get to the categories from a product record (and vice versa) in explicit many-to-manys without having to manually go through ProductCategory. From this: +> ``` +> const product = await Product.find(1) +> const productCategories = await product.productCategories.all() +> const categories = productCategories.map(async (pc) => await pc.categories.all()).flat() +> ``` +> To this: +> ``` +> const product = await Product.find(1) +> const categories = await product.categories.all() +> ``` + +The only other terminology to keep in mind are the terms *model* and *record*. A *model* is the name for the class that represents one database table. The example above has three models: User, Post and Comment. Prisma also calls each database-table declaration in their `schema.prisma` declaration file a "model", but when we refer to a "model" in this doc it will mean the class that extends `RedwoodRecord`. A *record* is a single instance of our model that now represents a single row of data in the database. + +So: I use the User model to find a given user in the database, and, assuming they are found, I now have a single user record (an instance of the User model). + +## Usage + +You'll want to add RedwoodRecord's package to the api side: + +``` +yarn workspace api add @redwoodjs/record +``` + +First you'll need to create a model to represent the database table you want to access. In our blog example, let's create a User model: + +```jsx title="api/src/models/User.js" +import { RedwoodRecord } from '@redwoodjs/record' + +export default class User extends RedwoodRecord { } +``` + +Now we need to parse the Prisma schema, store it as a cached JSON file, and create an `index.js` file with a couple of config settings: + +``` +yarn rw record init +``` + +You'll see that this created `api/src/models/datamodel.js` and `api/src/models/index.js`. + +Believe it or not, that's enough to get started! Let's try using the Redwood console to make some quick queries without worrying about starting up any servers: + +> TODO: Models don't quite work correctly in the console. The require and fetching of records below will work, but actually trying to read any properties returns `undefined`. For now you'll need to test out RedwoodRecord directly in your app. + +``` +yarn rw c +``` + +Now we've got a standard Node REPL but with a bunch of Redwood goodness loaded up for us already. First, let's require our model: + +```jsx +const { User } = require('./api/src/models') +``` + +And now we can start querying and modifying our data: + +```jsx +await User.all() +const newUser = await User.create({ name: 'Rob', email: 'rob@redwoodjs.com' }) +newUser.name = 'Robert' +await newUser.save() +await User.find(1) +await User.findBy({ email: 'rob@redwoodjs.com' }) +await newUser.destroy() +``` + +### Initializing New Records + +To create a new record in memory only (not yet saved to the database) use `build()`: + +```jsx +const user = User.build({ firstName: 'David', lastName: 'Price' }) +``` + +Note that `build` simply builds the record in memory, and thus is not asynchronous, whereas other model methods that interact with Prisma/the DB are. + +See [create/save](#save) below for saving this record to the database. + +### Errors + +When a record cannot be saved to the database, either because of database errors or [validation](#validation) errors, the `errors` property will be populated with the error message(s). + +```jsx +const user = User.build({ name: 'Rob Cameron' }) +await user.save() // => false +user.hasError() // => true +user.errors // => { base: [], email: ['must not be null'] } +user.errors.email // => ['must not be null'] +``` + +> `base` is a special key in the errors object and is for errors that don't apply to a single attribute, like `email`. For example, if you try to delete a record that doesn't exist (maybe someone else deleted it between when you retrieved it from the database and when you tried to delete it) you'll get an error on the `base` attribute: +> +> `user.errors.base // => ['User record to destroy not found']` + +You can preemptively check for errors before attempting to modify the record, but only for errors that would be caught with [validation](#validation), by using `isValid`: + +```jsx +const user = User.build({ name: 'Rob Cameron' }) +user.isValid // => false +user.errors.email // => ['must be formatted like an email address'] +``` + +### Validation + +Records can be checked for valid data before saving to the database by using the same [validation types](services.md#absence) available to [Service Validations](services.md#service-validations): + +```jsx +export default class User extends RedwoodRecord { + static validates = { + email: { presence: true, email: true }, + username: { length: { min: 2, max: 50 } } + } +} + +const user = User.build({ username: 'r' }) +await user.save() // => false +user.errors.email = ['must be present'] +user.errors.username = ['must be at least 2 characters'] +user.email = 'rob@redwoodjs.com' +user.username = 'rob' +await user.save() +``` + +### Finding Records + +There are a few different ways to find records for a model. Sometimes you want to find multiple records (all that match certain criteria) and sometimes only one (the one record with a certain email address). + +#### where() + +`where()` is for finding multiple records. It returns an array of model records. The first argument is the properties that you would normally set as the `where` value in Prisma's [`findMany()` function](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#findmany). The second argument (optional) is any additional properties (like ordering or limiting) that you want to perform on the resulting records: + +```jsx +await User.where() // would return all records +await User.where({ emailPreference: 'weekly' }) +await User.where({ theme: 'dark' }, { orderBy: { createdAt: 'desc' } }) +``` + +#### all() + +`all()` is simply a synonym for `where()` but makes it clearer that your intention is truly to select all records (and optionally sort/order them). The first (and only) argument is now the additional properties (like `sort` and `orderBy`): + +```jsx +await User.all() +await User.all({ orderBy: { lastName: 'asc' } }) +``` + +#### find() + +Finds a single record by that record's primary key. By default that is `id` but you can change the primary key of a model by defining it in the class definition: + +```jsx +export default class User extends RecordRecord { + static primaryKey = 'ident' +} +``` + +This call will throw an error if the record is not found: if you are trying to select a user by ID, presumably you expect that user to exist. So, it not existing is an exceptional condition. Behind the scenes this uses Prisma's [`findFirst()` function](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#findfirst). + +```jsx +await User.find(123) +``` + +#### findBy() + +Finds a single record by certain criteria. Similar to `where()`, but will only return the first record that matches. The first argument is the properties that you would normally set as the `where` value to Prisma's [`findFirst()` function](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#findmany). The second argument (optional) is any additional properties (like ordering or limiting) that you want to perform on the resulting records before selecting one: + +```jsx +await User.findBy({ email: 'rob@redwoodjs.com' }) +await User.findBy({ email: { endsWith: { 'redwoodjs.com' } } }, { orderBy: { lastName: 'asc' }, take: 10 }) +``` + +If no record matching your query was found, it returns `null`. + +#### first() + +Alias for `findBy()`. This function can be used in your code to show your intention to only use the first of potentially multiple records that could match with `findBy()`. + +```jsx +const randomCoreMember = await User.first({ email: { endsWith: { 'redwoodjs.com' } } }) +``` + +### Creating Records + +You can create new records with your RedwoodRecord model in two ways: + +#### create() + +Initializes a new record and saves it. If the save fails, `create` will return `false` instead of the instance of your record. If you need your new model instance (even on a failed save) use the `build()` version next. + +The first argument is the data that would be given to Prisma's `create()` function. The (optional) second argument are any additional properties that are passed on to Prisma: + +```jsx +await User.create({ name: 'Tom Preston-Werner' }) +await User.create({ firstName: 'Rob', email: 'rob@redwoodjs.com' }, { select: ['email'] }) +``` + +#### save() + +When calling `save()` on a record that hasn't been saved to the database, a new record will be created. If the record cannot be saved this call will return `false`. You can have it throw an error instead by including `{ throw: true }` in the first argument. + +If the record cannot be saved you can inspect it for errors. + +```jsx +const user = User.build({ firstName: 'Peter', lastName: 'Pistorius' }) +await user.save() +// or +await user.save({ throw: true }) +// check for errors +user.hasErrors // => true +user.errors.email // => ['can't be null'] +``` + +### Updating Records + +There are two ways to update a record. You can either 1) list all of the attributes to change in a call to `update()`, or 2) set the attributes manually and then call `save()`. + +#### update() + +Call `update()` on a record, including the attributes to change as the first argument. The second (optional) argument are any properties to forward to Prisma on updating. Returns `false` if the record did not save, otherwise returns itself with the newly saves attributes. + +```jsx +const user = await User.find(123) +await user.update({ email: 'rob.cameron@redwoodjs.com' }) +// or +await user.update({ email: 'rob.cameron@redwoodjs.com' }, { throw: true }) +``` + +#### save() + +Save changes made to a record. The first (optional) argument includes any properties to be forwarded to Prisma, as well as the option to throw an error on a failed save: + +```jsx +const user = await User.find(123) +user.email = 'rob.cameron@redwoodjs.com' +await user.save() +// or +await user.save({ throw: true }) +``` + +### Deleting Records + +Records can be deleted easily enough. Coming soon will be class functions for deleting one or multiple records, without having to instantiate an instance of the model first. + +#### destroy() + +Call on a record to delete it in the database. The first (optional) argument are any properties to forward to Prisma when deleting, as well as the option to throw an error if the delete fails. This function returns `false` if the record could not be deleted, otherwise returns the record itself. + +```jsx +const user = await User.find(123) +await user.destroy() +// or +await user.destroy({ throw: true }) +``` + +### Relationships + +As shown in [Background and Terminology](#background-and-terminology) above, RedwoodRecord provides a way to get data from related models. For example, to get the posts belonging to a user via what we call a *relation proxy*: + +```jsx +const user = await User.find(123) +const posts = await user.posts.all() +``` + +In this example `posts` is the proxy. All of the normal finder methods available on a model (`where()`, `all()`, `find()` and `findBy()`) are all available to be called on the relation proxy. But that's not all: you can create records as well and they will automatically be associated to the parent record: + +```jsx +const user = await User.find(123) +const post = await user.posts.create({ title: 'Related post!' }) +post.userId // => 123 +``` + +#### One-to-many + +The *many* records are accessible through the relation proxy: + +```jsx +const user = await User.find(123) +const post = await user.posts.first() +const comments = await post.comments.all() +``` + +You can also create a record: + + +```jsx +const user = await User.find(123) +const post = await user.posts.create({ title: 'Related post!' }) +``` + +#### Belongs-to + +A belongs-to relationship implies that you have the child record and want the parent. In a belongs-to relationship there is only ever a single parent, so there is no need for a relationship proxy property: there is only one record that will ever be returned. + +```jsx +const post = await Post.first() +const user = await post.user +``` + +> You cannot currently create a belongs-to record through the parent, but we're working on syntax to enable this! + +#### Many-to-many + +If you have an implicit many-to-many relationship then you will access the records similar to the one-to-many type: + +```jsx +const product = await Product.find(123) +const categories = await product.categories.all() +``` + +If you have an explicit many-to-many relationship then you need to treat it as a two-step request. First, get the one-to-many relationships for the join table, then a belongs-to relationship for the data you actually want: + +``` +Product -> one-to-many -> ProductCategories -> belongs-to -> Category +------- ----------------- -------- +``` + +```jsx +const product = await Product.find(123) +const productCategories = await product.productCategories.all() +const categories = await Promise.all(productCategories.map(async (pc) => await pc.category)) +``` + +If you wanted to create a new record this way, you would need to create the join table record after having already created/retrieved the records on either side of the relation: + +```jsx +const product = await Product.find(123) +const category = await Category.find(234) +await ProductCategory.create({ productId: product.id, categoryId: category.id }) +``` + +> We're working on improving this syntax to make interacting with these records as simple as the implicit version. Stay tuned! + +## Coming Soon + +The following features are in development but are not available in this experimental release. + +### Lifecycle Callbacks + +Coming soon will be the ability create functions around the lifecycle of a record. For example, to set a newly-created user's default preferences, you may want an `afterCreate` callback that invokes a function (syntax not final): + +```jsx +export default class User extends RedwoodRecord { + static afterCreate = async (user) => { + await user.preferences.create({ email: 'weekly' }) + } +} +``` + +Or make sure that a user has transferred ownership of some data before closing their account: + +```jsx +export default class User extends RedwoodRecord { + static beforeDestroy = async (user) => { + if (await user.teams.count() !== 0) { + throw new Error('Please transfer ownership of your teams first') + } + } +} +``` diff --git a/docs/versioned_docs/version-7.0/router.md b/docs/versioned_docs/version-7.0/router.md new file mode 100644 index 000000000000..860327c1fcda --- /dev/null +++ b/docs/versioned_docs/version-7.0/router.md @@ -0,0 +1,870 @@ +--- +description: About the built-in router for Redwood apps +--- + +# Router + +This is the built-in router for Redwood apps. It takes inspiration from Ruby on Rails, React Router, and Reach Router, but is very opinionated in its own way. + +The router is designed to list all routes in a single file, with limited nesting. We prefer this design, as it makes it very easy to track which routes map to which pages. + +## Router and Route + +The first thing you need is a `Router`. It will contain all of your routes. The router will attempt to match the current URL to each route in turn, and only render those with a matching `path`. The only exception to this is the `notfound` route, which can be placed anywhere in the list and only matches when no other routes do. + +:::note The `notfound` route can't be nested in a `Set` + +If you want to wrap your custom notfound page in a `Layout`, then you should add the `Layout` to the page instead. See [customizing the NotFoundPage](#customizing-the-notfoundpage). + +::: + +Each route is specified with a `Route`. Our first route will tell the router what to render when no other route matches: + +```jsx title="Routes.js" +import { Router, Route } from '@redwoodjs/router' + +const Routes = () => ( + + + +) + +export default Routes +``` + +The router expects a single `Route` with a `notfound` prop. When no other route is found to match, the component in the `page` prop will be rendered. + +To create a route to a normal Page, you'll pass three props: `path`, `page`, and `name`: + +```jsx title="Routes.js" + +``` + +The `path` prop specifies the URL path to match, starting with the beginning slash. The `page` prop specifies the Page component to render when the path is matched. The `name` prop is used to specify the name of the _named route function_. + +## Private Routes + +Some pages should only be visible to authenticated users. We support this using the `PrivateSet` component. Read more [further down](#privateset). + +## Sets of Routes + +You can group Routes into sets using the `Set` component. `Set` allows you to wrap a set of Routes in another component or array of components—usually a Context, a Layout, or both: + +```jsx title="Routes.js" +import { Router, Route, Set } from '@redwoodjs/router' +import BlogContext from 'src/contexts/BlogContext' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + + + + + + + + + ) +} + +export default Routes +``` + +The `wrap` prop accepts a single component or an array of components. Components are rendered in the same order they're passed, so in the example above, Set expands to: + +```jsx + + + + // ... + + +``` + +Conceptually, this fits with how we think about Context and Layouts as things that wrap Pages and contain content that’s outside the scope of the Pages themselves. Crucially, since they're higher in the tree, `BlogContext` and `BlogLayout` won't rerender across Pages in the same Set. + +There's a lot of flexibility here. You can even nest `Sets` to great effect: + +```jsx title="Routes.js" +import { Router, Route, Set } from '@redwoodjs/router' +import BlogContext from 'src/contexts/BlogContext' +import BlogLayout from 'src/layouts/BlogLayout' +import BlogNavLayout from 'src/layouts/BlogNavLayout' + +const Routes = () => { + return ( + + + + + + + + + + + ) +} +``` + +### Forwarding props + +All props you give to `` (except for `wrap`) will be passed to the wrapper components. + +So this... + +```jsx + + + +``` + +becomes... + +```jsx + + + +``` + +### `PrivateSet` + +A `PrivateSet` makes all Routes inside that Set require authentication. When a user isn't authenticated and attempts to visit one of the Routes in the `PrivateSet`, they'll be redirected to the Route passed as the `PrivateSet`'s `unauthenticated` prop. The originally-requested Route's path is added to the query string as a `redirectTo` param. This lets you send the user to the page they originally requested once they're logged-in. + +Here's an example of how you'd use a `PrivateSet`: + +```jsx title="Routes.js" + + + + + + +``` + +For more fine-grained control, you can specify `roles` (which takes a string for a single role or an array of roles), and the router will check to see that the current user is authorized before giving them access to the Route. If they're not, they will be redirected to the page specified in the `unauthenticated` prop, such as a "forbidden" page. Read more about Role-based Access Control in Redwood [here](how-to/role-based-access-control.md). + +To protect private routes for access by a single role: + +```jsx title="Routes.js" + + + + + + + +``` + +To protect private routes for access by multiple roles: + +```jsx title="Routes.js" + + + + + + + +``` + +Redwood uses the `useAuth` hook under the hood to determine if the user is authenticated. Read more about authentication in Redwood [here](tutorial/chapter4/authentication.md). + +## Link and named route functions + +When it comes to routing, matching URLs to Pages is only half the equation. The other half is generating links to your pages. The router makes this really simple without having to hardcode URL paths. In a Page component, you can do this (only relevant bits are shown in code samples from now on): + +```jsx title="SomePage.js" +import { Link, routes } from '@redwoodjs/router' + +// Given the route in the last section, this produces: +const SomePage = () => +``` + +You use a `Link` to generate a link to one of your routes and can access URL generators for any of your routes from the `routes` object. We call the functions on the `routes` object _named route functions_ and they are named after whatever you specify in the `name` prop of the `Route`. + +Named route functions simply return a string, so you can still pass in hardcoded strings to the `to` prop of the `Link` component, but using the proper named route function is easier and safer. Plus, if you ever decide to change the `path` of a route, you don't need to change any of the `Link`s to it (as long as you keep the `name` the same)! + +## Active links + +`NavLink` is a special version of `Link` that will add an `activeClassName` to the rendered element when it matches **exactly** the current URL. + +```jsx title="MainMenu.js" +import { NavLink, routes } from '@redwoodjs/router' + +// Will render respectively when on the page +const MainMenu = () => +
      +
    • + + + Home + +
    • +
    • + + + Home > Tutorial + +
    • +
    +``` + +Alternatively, you can add the `activeMatchParams` prop to your `NavLink` to match the current URL **partially** + +```jsx +import { NavLink, routes } from '@redwoodjs/router' + +// Will render
    when on any of Home tutorial pages +const MainMenu = () => ( +
  • + + Home > Tutorial + +
  • +) +``` + +> Note `activeMatchParams` is an array of `string` _(key only)_ or `Record` _(key and value)_ + +More granular match, `page` key only and `tab=tutorial` + +```jsx +// Match /?tab=tutorial&page=* +activeMatchParams={[{ tab: 'tutorial' }, 'page' ]} +``` + +### useMatch + +You can use `useMatch` to create your own component with active styles. + +> `NavLink` uses it internally! + +```jsx +import { Link, routes, useMatch } from '@redwoodjs/router' + +const CustomLink = ({ to, ...rest }) => { + const matchInfo = useMatch(to) + + return +} + +const MainMenu = () => { + return +} +``` + +`useMatch` accepts `searchParams` in the `options` for matching granularity which is exactly the same as `activeMatchParams` of `NavLink` + +```jsx +import { Link, routes, useMatch } from '@redwoodjs/router' + +const CustomLink = ({ to, ...rest }) => { + const matchInfo = useMatch(to, { searchParams: [{ tab: 'tutorial' }, 'page'] }) + + return +} +``` + +Passing in `routeParams` you can make it match only on specific route parameter +values. + +```jsx +const match = useMatch('/product/{category}/{id}', { + routeParams: { category: 'shirts' } +}) +``` + +The above example will match /product/shirts/213, but not /product/pants/213 +(whereas not specifying `routeParams` at all would match both). + +To get the path you need to pass to `useMatch` you can use +[`useRoutePaths`](#useroutepaths) or [`useRoutePath`](#useroutepath) + +Here's an example: + +```jsx + + +const animalRoutePath = useRoutePath('animal') +// => '/{animal}/{name}' + +const matchOnlyDog = useMatch(animalRoutePath, { routeParams: { animal: 'dog' }}) +const matchFullyDynamic = useMatch(animalRoutePath) +``` + +In the above example, if the current page url was +`https://example.org/dog/fido` then both `matchOnlyDog` and `matchFullyDynamic` +would have `match: true`. + +If the current page instead was `https://example.org/cat/garfield` then only +`matchFullyDynamic` would match + +See below for more info on route parameters. + +## Route parameters + +To match variable data in a path, you can use route parameters, which are specified by a parameter name surrounded by curly braces: + +```jsx title="Routes.js" + +``` + +This route will match URLs like `/user/7` or `/user/mojombo`. You can have as many route parameters as you like: + +```jsx title="Routes.js" + +``` + +By default, route parameters will match up to the next slash or end-of-string. Once extracted, the route parameters are sent as props to the Page component. In the 2nd example above, you can receive them like so: + +```jsx title="PostPage.js" +const PostPage = ({ year, month, day, slug }) => { ... } +``` + +## Named route functions with parameters + +If a route has route parameters, then its named route function will take an object of those same parameters as an argument: + +```jsx title="SomePage.js" +... +``` + +All parameters will be converted to strings before being inserted into the generated URL. If you don't like the default JavaScript behavior of how this conversion happens, make sure to convert to a string before passing it into the named route function. + +If you specify parameters to the named route function that do not correspond to parameters defined on the route, they will be appended to the end of the generated URL as search params in `key=val` format: + +```jsx title="SomePage.js" +... +// => "/users?sort=desc&filter=all" +``` + +## Route parameter types + +Route parameters are extracted as strings by default, but they will often represent typed data. The router offers a convenient way to auto-convert certain types right in the `path` specification: + +```jsx title="Routes.js" + +``` + +By adding `:Int` onto the route parameter, you are telling the router to only match `/\d+/` and then use `Number()` to convert the parameter into a number. Now, instead of a string being sent to the Page, a number will be sent! This means you could have both a route that matches numeric user IDs **and** a route that matches string IDs: + +```jsx title="Routes.js" + + +``` + +Now, if a request for `/user/mojombo` comes in, it will fail to match the first route, but will succeed in matching the second. + +## Core route parameter types + +We call built-in parameter types _core parameter types_. All core parameter types begin with a capital letter. Here are the types: + +- `Int` - Matches and converts an integer. +- `Float` - Matches and converts a Float. +- `Boolean` - Matches and converts Boolean (true or false only) + +> Note on TypeScript support +> Redwood will automatically generate types for your named routes, but you do have to run `yarn redwood dev` or `yarn redwood build` at least once for your `Routes.{js,ts}` to be parsed + +### Glob Type + +There is one more core type that is a bit different: the glob type. Instead of matching to the next `/` or the end of the string, it will greedily match as much as possible (including `/` characters) and capture the match as a string. + +```jsx title="Routes.js" + +``` + +In this example, we want to take everything after `/file/` and have it sent to the Page as `filePath`. So for the path `/file/api/src/lib/auth.js`, `filePath` would contain `api/src/lib/auth.js`. + +You can use multiple globs in your paths: + +```jsx title="Routes.js" + +``` + +This will match a path like `/from/2021/11/03/to/2021/11/17`. Note that for this to work, there must be some static string between the globs so the router can determine where the boundaries of the matches should be. + +## User route parameter types + +The router goes even further, allowing you to define your own route parameter types. Your custom types must begin with a lowercase letter. You can specify them like so: + +```jsx title="Routes.js" +const userRouteParamTypes = { + slug: { + match: /\w+-\w+/, + parse: (param) => param.split('-'), + }, +} + + + + +``` + +Here we've created a custom `slug` route parameter type. It is defined by `match` and `parse`. Both are optional; the default `match` regexp is `/[^/]+/` and the default `parse` function is `(param) => param`. + +In the route we've specified a route parameter of `{name:slug}` which will invoke our custom route parameter type and if we have a request for `/post/redwood-router`, the resulting `name` prop delivered to `PostPage` will be `['redwood', 'router']`. + +## Trailing slashes + +The router by default removes all trailing slashes before attempting to match the route you are trying to navigate to. + +For example, if you attempt to navigate to `/about` and you enter `/about/`, the router will remove the trailing `/` and will match `path="/about"` + +There are 3 values that can be used with the `trailingSlashes` prop + +1. **never** (default): strips trailing slashes before matching ("/about/" -> "/about") +2. **always**: always adds trailing slashes before matching ("/about" -> "/about/") +3. **preserve** -> paths without a slash won't match paths with a slash ("/about" -> "/about", "/about/" -> "/about/") + +If you need to match trailing slashes exactly, use the `preserve` value. +In the following example, `/about/` will _not_ match `/about` and you will be sent to the `NotFoundPage` + +```jsx + + + + + +``` + +## useParams + +Sometimes it's convenient to receive route parameters as the props to the Page, but in the case where a deeply nested component needs access to the route parameters, it quickly becomes tedious to pass those props through every intervening component. The router solves this with the `useParams` hook: + +```jsx title="SomeDeeplyNestedComponent.js" +import { useParams } from '@redwoodjs/router' + +const SomeDeeplyNestedComponent = () => { + const { id } = useParams() + ... +} +``` + +In the above example, we've pulled in the `id` route parameter without needing to have it passed in to us from anywhere. + +## useLocation + +If you'd like to get access to the current URL, `useLocation` returns a read-only location object representing it. The location object has three properties, [pathname](https://developer.mozilla.org/en-US/docs/Web/API/Location/pathname), [search](https://developer.mozilla.org/en-US/docs/Web/API/Location/search), and [hash](https://developer.mozilla.org/en-US/docs/Web/API/Location/hash), that update when the URL changes. This makes it easy to fire off navigation side effects or use the URL as if it were state: + +```jsx +import { useLocation } from '@redwoodjs/router' + +const App = () => { + const { pathname, search, hash } = useLocation() + + // log the URL when the pathname changes + React.useEffect(() => { + myLogger(pathname) + }, [pathname]) + + // initiate a query state with the search val + const [query, setQuery] = React.useState(search) + + // conditionally render based on hash + if (hash === '#ping') { + return + } + + return <>... +} +``` + +## useRoutePaths + +`useRoutePaths()` is a React hook you can use to get a map of all routes mapped to their literal paths, as they're defined in your routes file. + +Example usage: + +```jsx +const routePaths = useRoutePaths() + +return
    {JSON.stringify(routePaths, undefined, 2)}
    +``` + +Example output: + +``` +{ + "home": "/" + "about": "/about", + "login": "/login", + "signup": "/signup", + "forgotPassword": "/forgot-password", + "resetPassword": "/reset-password", + "newContact": "/contacts/new", + "editContact": "/contacts/{id:Int}/edit", + "contact": "/contacts/{id:Int}", + "contacts": "/contacts", +} +``` + +## useRoutePath + +Use this hook when you only want the path for a single route. By default it +will give you the path for the current route +```jsx +// returns "/about" if you're currently on https://example.org/about +const aboutPath = useRoutePath() +``` + +You can also pass in the name of a route and get the path for that route +```jsx +// returns "/about" +const aboutPath = useRoutePath('about') +``` + +Note that the above is the same as +```jsx +const routePaths = useRoutePaths() +// returns "/about" +const aboutPath = routePaths.about +``` + +## useRouteName + +Use the `useRouteName()` hook to get the name of the current route (the page +the user is currently visiting). The name can then also be used with `routes` +if you need to dynamically get the url to the current page: + +```jsx +const routeName = useRouteName() +const routeUrl = routeName ? routes[routeName]() : undefined +``` + +## Navigation + +### navigate + +If you'd like to programmatically navigate to a different page, you can simply use the `navigate` function: + +```jsx title="SomePage.js" +import { navigate, routes } from '@redwoodjs/router' + +const SomePage = () => { + const onSomeAction = () => { + navigate(routes.home()) + } + ... +} +``` + +The browser keeps track of the browsing history in a stack. By default when you navigate to a new page a new item is pushed to the history stack. But sometimes you want to replace the top item on the stack instead of appending to the stack. This is how you do that in Redwood: `navigate(routes.home(), { replace: true })`. As you can see you need to pass an options object as the second parameter to `navigate` with the option `replace` set to `true`. + +### back + +Going back is as easy as using the `back()` function that's exported from the router. + +```jsx title="SomePage.js" +import { back } from '@redwoodjs/router' + +const SomePage = () => { + const onSomeAction = () => { + back() + } + ... +} +``` + +## Redirect + +If you want to declaratively redirect to a different page, use the `` component. + +In the example below, SomePage will redirect to the home page. + +```jsx title="SomePage.js" +import { Redirect, routes } from '@redwoodjs/router' + +const SomePage = () => +``` + +In addition to the `to` prop, `` also takes an `options` prop. This is the same as [`navigate()`](#navigate)'s second argument: `navigate(_, { replace: true })`. We can use it to *replace* the top item of the browser history stack (instead of pushing a new one). This is how you use it to have this effect: ``. + +## Code-splitting + +By default, the router will code-split on every Page, creating a separate lazy-loaded bundle for each. When navigating from page to page, the router will wait until the new Page module is loaded before re-rendering, thus preventing the "white-flash" effect. + +## Not code splitting + +If you'd like to override the default lazy-loading behavior and include certain Pages in the main bundle, you can simply add the import statement to the `Routes.js` file: + +```jsx title="Routes.js" +import HomePage from 'src/pages/HomePage' +``` + +Redwood will detect your explicit import and refrain from splitting that page into a separate bundle. Be careful with this feature, as you can easily bloat the size of your main bundle to the point where your initial page load time becomes unacceptable. + +## Page loaders & PageLoadingContext + +### Loader while page chunks load + +Because lazily-loaded pages can take a non-negligible amount of time to load (depending on bundle size and network connection), you may want to show a loading indicator to signal to the user that something is happening after they click a link. + +In order to show a loader as your page chunks are loading, you simply add the `whileLoadingPage` prop to your route, `Set` or `PrivateSet` component. + +```jsx title="Routes.js" +import SkeletonLoader from 'src/components/SkeletonLoader' + + + + + + +``` + +After adding this to your app you will probably not see it when navigating between pages. This is because having a loading indicator is nice, but can get annoying when it shows up every single time you navigate to a new page. In fact, this behavior makes it feel like your pages take even longer to load than they actually do! The router takes this into account and, by default, will only show the loader when it takes more than 1000 milliseconds for the page to load. You can change this to whatever you like with the `pageLoadingDelay` prop on `Router`: + +```jsx title="Routes.js" +... +``` + +Now the loader will show up after 500ms of load time. To see your loading indicator, you can set this value to 0 or, even better, [change the network speed](https://developers.google.com/web/tools/chrome-devtools/network#throttle) in developer tools to "Slow 3G" or another agonizingly slow connection speed. + +#### Using PageLoadingContext + +An alternative way to implement whileLoadingPage is to use `usePageLoadingContext`: + +> **VIDEO:** If you'd prefer to watch a video, there's one accompanying this section: https://www.youtube.com/watch?v=BVkyXjUQADs&feature=youtu.be + +```jsx title="SomeLayout.js" +import { usePageLoadingContext } from '@redwoodjs/router' + +const SomeLayout = (props) => { + const { loading } = usePageLoadingContext() + return ( +
    + {loading &&
    Loading...
    } +
    {props.children}
    +
    + ) +} +``` + +When the lazy-loaded page is loading, `PageLoadingContext.Consumer` will pass `{ loading: true }` to the render function, or false otherwise. You can use this context wherever you like in your application! + +### Loader while auth details are being retrieved + +Let's say you have a dashboard area on your Redwood app, which can only be accessed after logging in. When Redwood Router renders your private page, it will first fetch the user's details, and only render the page if it determines the user is indeed logged in. + +In order to display a loader while auth details are being retrieved you can add the `whileLoadingAuth` prop to your `PrivateSet` component: + +```jsx +//Routes.js + + + + + + {/* other routes */} + + +``` + +## `FatalErrorPage` + +Every Redwood project ships with a default `FatalErrorPage` located in `web/src/pages/FatalErrorPage`. +This page gets rendered when an error makes its way all the way to the top of your app without being handled by a catch block or a React error boundary. + +Note that this page behaves differently in development than in production. + +### In Development + +In development, the `FatalErrorPage` provides helpful debugging information about the error and any GraphQL request that's involved. + +For example, if there's a missing component that's causing an error, this's what you'll see: + +![fatal_error_message](/img/router/fatal_error_message.png) + +Or if the variable passed as a prop to a component can't be found: + +![fatal_error_message_query](/img/router/fatal_error_message_query.png) + +And if the page has a Cell, you'll see the Cell's request and response which may have contributed to the error: + +![fatal_error_message_request](/img/router/fatal_error_request.png) + +### In Production + +By default, the `FatalErrorPage` in production is barebones: + +![fatal_something_went_wrong](/img/router/fatal_something_went_wrong.png) + +### Customizing the `FatalErrorPage` + +You can customize the production `FatalErrorPage`, but it's important to keep things simple to avoid the possibility that it'll cause its own error. +If it does, the router still renders a generic error page, but your users will appreciate something a bit more thoughtful: + +![fatal_something_went_wrong_custom](/img/router/fatal_something_went_wrong_custom.png) + +```jsx title="web/src/pages/FatalErrorPage/FatalErrorPage.js" +import { Link, routes } from '@redwoodjs/router' + +// ... + +export default RedwoodDevFatalErrorPage || + (() => ( +
    +
    +
    +

    + 🤦‍♂️ Oops. +

    +
    +
    +

    + Something went wrong +

    +

    + Sorry about that. Please contact support for help. +

    +
    +
    + + Home + + + Contact Support + +
    +
    +
    +
    +
    + )) + ``` + +Note that if you're copy-pasting this example, it uses [Tailwind CSS](https://tailwindcss.com), so you'll have to set that up first. See the [setup ui](./cli-commands.md#setup-ui) CLI command to add it to your project. + +:::note Can I customize the development one? + +As it's part of the RedwoodJS framework, you can't _change_ the dev fatal error page, but you can always build your own that takes the same props. If there's a feature you want to add to the built-in version, let us know on the [forums](https://community.redwoodjs.com/). + +::: + +## `NotFoundPage` + +Every Redwood project ships with a default `NotFoundPage` located in `web/src/pages/NotFoundPage`. + +But just because it's called `NotFoundPage` doesn't mean the router knows that. The only way the router knows which page is the `NotFoundPage` is via the `notfound` prop, which tells the router what to render when no routes match: + +```jsx title="web/src/Routes.js" +import { Router, Route } from '@redwoodjs/router' + +const Routes = () => ( + + // highlight-next-line + + +) + +export default Routes +``` + +### Customizing the `NotFoundPage` + +By default, the `NotFoundPage` is a basic HTML page with internal styles: + +```jsx title="web/src/pages/NotFoundPage/NotFoundPage.js" +export default () => ( +
    + // ... some custom css +
    +

    + 404 Page Not Found +

    +
    +
    +) +``` + +You're free to customize it however you like. You can change the markup and even use CSS or UI libraries to style it. +Here's an example using [Tailwind CSS](https://tailwindcss.com). +(See the [setup ui](./cli-commands.md#setup-ui) CLI command to add it to your project.) + +![custom_not_found](/img/router/custom_not_found_page.png) + +```jsx title="web/src/pages/NotFoundPage/NotFoundPage.js" +import { Link, routes } from '@redwoodjs/router' + +export default () => ( +
    +
    +
    +

    404

    +
    +
    +

    + Page not found +

    +

    + Check the URL in the address bar and please try again. +

    +
    +
    + + Home + + + Get Help + +
    +
    +
    +
    +
    +) +``` + +While the `notfound` route can't be nested in a `Set` like other routes, you can still wrap it in Layouts by importing them into the page: + +```jsx title="web/src/pages/NotFoundPage/NotFoundPage.js" +// highlight-next-line +import MainLayout from 'src/layouts/MainLayout/MainLayout' + +export default () => ( + // highlight-next-line + +
    +
    +

    + 404 Page Not Found +

    +
    +
    + // highlight-next-line +
    +) +``` + +This means that the `NotFoundPage` can use Redwood features like Cells or auth to construct navigation options or detailed header and footer content to help your users find their way back to the main application. diff --git a/docs/versioned_docs/version-7.0/schema-relations.md b/docs/versioned_docs/version-7.0/schema-relations.md new file mode 100644 index 000000000000..0d0b3add404b --- /dev/null +++ b/docs/versioned_docs/version-7.0/schema-relations.md @@ -0,0 +1,240 @@ +--- +description: How Prisma relations work with scaffolds +--- + +# Prisma Relations and Redwood's Generators + +## Many-to-many Relationships + +A many-to-many relationship is accomplished by creating a "join" or "lookup" table between two other tables. +For example, if a **Product** can have many **Tag**s, any given **Tag** can also have many **Product**s that it is attached to. +A database diagram for this relationship could look like: + +``` +┌───────────┐ ┌─────────────────┐ ┌───────────┐ +│ Product │ │ ProductsOnTag │ │ Tag │ +├───────────┤ ├─────────────────┤ ├───────────┤ +│ id │────<│ productId │ ┌──│ id │ +│ title │ │ tagId │>──┘ │ name │ +│ desc │ └─────────────────┘ └───────────┘ +└───────────┘ +``` + +[Here](https://www.prisma.io/docs/concepts/components/prisma-schema/relations#many-to-many-relations) +are Prisma's docs for creating many-to-many relationships. +The `schema.prisma` syntax to create this relationship looks like: + +```jsx +model Product { + id Int @id @default(autoincrement()) + title String + desc String + tags Tag[] +} + +model Tag { + id Int @id @default(autoincrement()) + name String + products Product[] +} +``` + +These relationships can be [implicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#implicit-many-to-many-relations) (as this diagram shows) or [explicit](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#explicit-many-to-many-relations) (explained below). Redwood's SDL generator (which is also used by the scaffold generator) only supports an **explicit** many-to-many relationship when generating with the `--crud` flag. What's up with that? + +## CRUD Requires an `@id` + +CRUD (Create, Retrieve, Update, Delete) actions in Redwood currently require a single, unique field in order to retrieve, update or delete a record. This field must be denoted with Prisma's [`@id`](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#id) attribute, marking it as the tables's primary key. This field is guaranteed to be unique and so can be used to find a specific record. + +Prisma's implicit many-to-many relationships create a table _without_ a single field marked with the `@id` attribute. Instead, it uses a similar attribute: [`@@id`](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#id-1) to define a *multi-field ID*. This multi-field ID will become the tables's primary key. The diagram above shows the result of letting Prisma create an implicit relationship. + +Since there's no single `@id` field in implicit many-to-many relationships, you can't use the SDL generator with the `--crud` flag. Likewise, you can't use the scaffold generator, which uses the SDL generator (with `--crud`) behind the scenes. + +## Supported Table Structure + +To support both CRUD actions and to remain consistent with Prisma's many-to-many relationships, a combination of the `@id` and [`@@unique`](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#unique-1) attributes can be used. With this, `@id` is used to create a primary key on the lookup-table; and `@@unique` is used to maintain the table's unique index, which was previously accomplished by the primary key created with `@@id`. + +> Removing `@@unique` would let a specific **Product** reference a particular **Tag** more than a single time. + +You can get this working by creating an explicit relationship—defining the table structure yourself: + +```jsx +model Product { + id Int @id @default(autoincrement()) + title String + desc String + tags ProductsOnTag[] +} + +model Tag { + id Int @id @default(autoincrement()) + name String + products ProductsOnTag[] +} + +model ProductsOnTag { + id Int @id @default(autoincrement()) + tagId Int + tag Tag @relation(fields: [tagId], references: [id]) + productId Int + product Product @relation(fields: [productId], references: [id]) + + @@unique([tagId, productId]) +} +``` + +Which creates a table structure like: + +``` +┌───────────┐ ┌──────────────────┐ ┌───────────┐ +│ Product │ │ ProductsOnTags │ │ Tag │ +├───────────┤ ├──────────────────┤ ├───────────┤ +│ id │──┐ │ id │ ┌──│ id │ +│ title │ └──<│ productId │ │ │ name │ +│ desc │ │ tagId │>─┘ └───────────┘ +└───────────┘ └──────────────────┘ + +``` + +Almost identical! But now there's an `id` and the SDL/scaffold generators will work as expected. The explicit syntax gives you a couple additional benefits—you can customize the table name and even add more fields. Maybe you want to track which user tagged a product—add a `userId` column to `ProductsOnTags` and now you know. + +## Troubleshooting Generators + +Are you getting errors when generating SDLs or scaffolds for your Prisma models? +There's a known limitation in Redwood's GraphQL type generation that happens when generating SDL for, or scaffolding out, a Prisma model that has relations before the SDL for the related model exists. + +This may sound a little abstract, so let's look at an example. Let's say that you're modeling bookshelves. Your prisma schema has two data models, `Book` and `Shelf`. This is a one to many relationship: a shelf has many books, but a book can only be on one shelf: + +```js +model Book { + id Int @id @default(autoincrement()) + title String @unique + // highlight-start + shelf Shelf? @relation(fields: [shelfId], references: [id]) + shelfId Int? + // highlight-end +} + +model Shelf { + id Int @id @default(autoincrement()) + name String @unique + // highlight-next-line + books Book[] +} +``` + +The data model looks great. Let's make it real with SDLs and services: + +``` +yarn rw g sdl Book +``` + +Here's how the output from the command starts: + +```bash + ✔ Generating SDL files... + ✔ Successfully wrote file `./api/src/graphql/books.sdl.js` + ✔ Successfully wrote file `./api/src/services/books/books.scenarios.js` + ✔ Successfully wrote file `./api/src/services/books/books.test.js` + ✔ Successfully wrote file `./api/src/services/books/books.js` +``` + +Looks like it's working so far. The SDL and service files generated! +But, when the command starts generating types... 💥 + +``` + ⠙ Generating types ... +Failed to load schema + +# ... + +type Query { + redwood: Redwood +},graphql/**/*.sdl.{js,ts},directives/**/*.{js,ts}: + + Unknown type: "Shelf". + Error: Unknown type: "Shelf". +``` + +What happened? +Remember, the first thing to do when you get an error: _read the error message_. +The key is `Unknown type: "Shelf"`. +The type of `Book`'s `shelf` field is `Shelf`. +But we didn't generate the SDL for `Shelf` yet, so it doesn't exist. +And naturally, types can't be generated for it. + +But fear not. +This should be an easy fix. +There are two ways you can go about it. + +You can generate the SDLs for all the models in the relation, ignoring the errors. This way the last model in the relation should generate cleanly. + +Or, you can remove or comment out the relations: + +```js +model Book { + id Int @id @default(autoincrement()) + title String @unique + // highlight-start + // Shelf Shelf? @relation(fields: [shelfId], references: [id]) + // shelfId Int? + // highlight-end +} + +model Shelf { + id Int @id @default(autoincrement()) + name String @unique + // highlight-next-line + // books Book[] +} +``` + +Then, generate the SDL for, or scaffold out, each model separately: + +``` +yarn rw g sdl Book +# ... + +yarn rw g sdl Shelf +# ... +``` + +And lastly, add or comment in the relationships and regenerate their SDLs or scaffolds using the `--force` flag to overwrite the existing files, adding the `--no-tests` flag to preserve your tests and scenario files (if needed): + +``` +yarn rw g sdl Book --force --no-tests +# ... + +yarn rw g sdl Shelf --force --no-tests +# ... +``` + +### Self-Relations + +[Self-relations](https://www.prisma.io/docs/concepts/components/prisma-schema/relations/self-relations#one-to-many-self-relations) are useful for modeling parent-child relationships where the parent and child are the "same type of thing". +For example, in a business, everyone is an employee with a role and possibly someone to directly report to: + +* President—no direct report (for the purposes of this example) +* Director—reports to the President +* Manager—reports to a Director +* Employee—reports to a Manager, but has no direct reports + +Let's use a self-relation to model this in our Prisma schema: + +```js +model Employee { + id Int @id @default(autoincrement()) + name String + jobTitle String + // highlight-start + reportsToId Int? @unique + reportsTo Employee? @relation("OrgChart", fields: [reportsToId], references: [id]) + directReports Employee? @relation("OrgChart") + // highlight-end +} +``` + +For the generators, what's important here is that the related models are optional. +`reportsToId`, `reportsTo`, and `directReports` use Prisma's `?` syntax to indicate that they're optional—not required. +The Redwood generators may complain or fail if you try to force a requirement here. + +It's important because if you're at the top—say you're the President—then you don't have a `reportsTo`, and if you're just an Employee, then you don't have anyone that directly reports to you. diff --git a/docs/versioned_docs/version-7.0/security.md b/docs/versioned_docs/version-7.0/security.md new file mode 100644 index 000000000000..1493da1f2d10 --- /dev/null +++ b/docs/versioned_docs/version-7.0/security.md @@ -0,0 +1,77 @@ +--- +description: Build and deploy secure applications +--- + +# Security + +RedwoodJS wants you to be able build and deploy secure applications and takes the topic of security seriously. + +* [RedwoodJS Security](https://github.com/redwoodjs/redwood/security) on GitHub +* [CodeQL code scanning](https://github.com/features/security) +* [Authentication](authentication.md) +* [Webhook signature verification](webhooks.md) +* [Ways to keep your serverless functions secure](serverless-functions.md#security-considerations) +* [Environment variables for secure keys and tokens](environment-variables.md) + +> ⚠️ **Security is Your Responsibility** +> While Redwood offers the tools, practices, and information to keep your application secure, it remains your responsibility to put these in place. Proper password, token, and key protection using disciplined communication, password management systems, and environment management services like [Doppler](https://www.doppler.com) are strongly encouraged. + +> **Security Policy and Contact Information** +> The RedwoodJS Security Policy is located [in the codebase repository on GitHub](https://github.com/redwoodjs/redwood/security/policy). +> +> To report a potential security vulnerability, contact us at [security@redwoodjs.com](mailto:security@redwoodjs.com). + +## Authentication + +`@redwoodjs/auth` is a lightweight wrapper around popular SPA authentication libraries. We currently support [the following authentication providers](authentication.md) as well as a self-hosted solution ([dbAuth](auth/dbauth.md)): + +* Netlify Identity Widget +* Auth0 +* Azure Active Directory +* Netlify GoTrue-JS +* Magic Links - Magic.js +* Firebase's GoogleAuthProvider +* Ethereum +* Supabase +* Nhost + +For example implementations, please see [Authentication](https://github.com/redwoodjs/redwood/tree/main/packages/auth) and the use of the `getCurrentUser` and `requireAuth` helpers. + +For a demonstration, check out the [Auth Playground](https://redwood-playground-auth.netlify.app). + +## GraphQL + +GraphQL is a fundamental part of Redwood. For details on how Redwood uses GraphQL and handles important security considerations, please see the [GraphQL Security](graphql.md#security) section and the [Secure Services](services.md#secure-services) section. + +### Malicious Document Requests + +The RedwoodJS GraphQL handler sets [reasonable defaults](graphql.md#security) to prevent abusive queries that attackers often use to exploit systems. +### Disable Introspection and Playground + +Because both introspection and the playground share possibly sensitive information about your data model, your data, your queries and mutations, best practices for deploying a GraphQL Server call to [disable these in production](graphql.md#introspection-and-playground-disabled-in-production), by default RedwoodJS **only enables introspection and the playground when running in development**. + +:::note + +For more information on how to enable introspection in production, please see the [GraphQL Docs](graphql.md#introspection-and-playground-disabled-in-production). +::: + +## Functions + +When deployed, a [serverless function](serverless-functions.md) is an open API endpoint. That means anyone can access it and perform any tasks it's asked to do. In many cases, this is completely appropriate and desired behavior. But there are often times you need to restrict access to a function, and Redwood can help you do that using a [variety of methods and approaches](serverless-functions.md#security-considerations). + +For details on how to keep your functions secure, please see the [Serverless functions & Security considerations](serverless-functions.md#security-considerations) section in the RedwoodJS documentation. + +## Webhooks + +[Webhooks](webhooks.md) are a common way that third-party services notify your RedwoodJS application when an event of interest happens. + +They are a form of messaging or automation and allows web applications to communicate with each other and send real-time data from one application to another whenever a given event occurs. + +Since each of these webhooks will call a function endpoint in your RedwoodJS api, you need to ensure that these run **only when they should**. That means you need to: + +* Verify it comes from the place you expect +* Trust the party +* Know the payload sent in the hook hasn't been tampered with +* Ensure that the hook isn't reprocessed or replayed + +For details on how to keep your incoming webhooks secure and how to sign your outgoing webhooks, please see [Webhooks](webhooks.md). diff --git a/docs/versioned_docs/version-7.0/seo-head.md b/docs/versioned_docs/version-7.0/seo-head.md new file mode 100644 index 000000000000..7cb5772edd62 --- /dev/null +++ b/docs/versioned_docs/version-7.0/seo-head.md @@ -0,0 +1,356 @@ +--- +description: Use meta tags to set page info for SEO +--- + +# SEO & `` tags + +Search Engine Optimization is a dark art that some folks dedicate their entire lives to. We've add a couple of features to Redwood to make HTML-based SEO fairly simple. + +## Adding a Title + +You certainly want to change the title of your Redwood app from the default of "Redwood App." You can start by adding or modifying `title` inside of `/redwood.toml` + +```diff title=redwood.toml +[web] +- title = "Redwood App" ++ title = "My Cool App" + port = 8910 + apiUrl = "/.redwood/functions" +``` + +This title (the app title) is used by default for all your pages if you don't define another one. +It will also be use for the title template. + +### Title Template + +Now that you have the app title set, you probably want some consistence with the page title, that's what the title template is for. + +Add `titleTemplate` as a prop for `RedwoodProvider` to have a title template for every pages + +```diff title=web/src/App.(tsx|jsx) +- ++ + /* ... */ + +``` + +You can use whatever formatting you'd like in here. Some examples: + +```jsx +"%PageTitle | %AppTitle" => "Home Page | Redwood App" + +"%AppTitle · %PageTitle" => "Redwood App · Home Page" + +"%PageTitle : %AppTitle" => "Home Page : Redwood App" +``` + +## Adding to Page `` + +So you want to change the title of your page, or add elements to the `` of the page? We've got you! + +Let's say you want to change the title of your About page, Redwood provides a built in `` component, which you can use like this: + +```diff title=web/src/pages/AboutPage/AboutPage.(tsx|jsx) ++import { Head } from '@redwoodjs/web' + +const AboutPage = () => { + return ( +
    +

    AboutPage

    ++ ++ About the team ++ +``` + +You can include any valid `` tag in here that you like. However, Redwood also provides a utility component [<Metadata>](#setting-meta-tags-and-opengraph-directives-with-metadata). + +:::caution `` Deprecation + +Prior to Redwood 6.6.0 this component was called `` and had several special hard-coded props like `ogContentUrl`, which didn't properly map to the OpenGraph spec. We'll still render `` for the foreseeable future, but it's deprecated and you should migrate to `` if you have an existing app. + +::: + +### What About Nested Tags? + +Redwood uses [react-helmet-async](https://github.com/staylor/react-helmet-async) underneath, which will use the tags furthest down your component tree. + +For example, if you set title in your Layout, and a title in your Page, it'll render the one in Page - this way you can override the tags you wish, while sharing the tags defined in Layout. + +:::info Bots & `` Tags + +For these headers to appear to bots and scrapers e.g. for twitter to show your title, you have to make sure your page is prerendered. If your content is static you can use Redwood's built in [Prerender](prerender.md). For dynamic tags, check the [Dynamic head tags](#dynamic-tags) + +::: + +## Setting `` Tags and OpenGraph Directives with `` + +Often we want to set more than just the title and description of the page—most commonly [OpenGraph](https://ogp.me/) headers. + +Redwood provides a convenience component `` to help you create most of these `` tags for you with a more concise syntax. But, you can also pass children and define any custom content that you want. + +Here's an example setting some common meta, including a page title, description, `og:image` and an `http-equiv`: + +```jsx +import { Metadata } from '@redwoodjs/web' + +const AboutPage = () => { + return ( +
    + + + + +

    About Page

    +

    This is the about page!

    +
    + ) +} + +export default AboutPage +``` + +This code would be transformed into this HTML and injected into the `` tag: + +```html +About page + + + + + + + + + +``` + +Setting an `og:image` is how sites like Facebook and Slack can show a preview of a URL when pasted into a post (also known as "unfurling"): + +![Typical URL unfurl](/img/facebook_unfurl.png) + +Sites like GitHub go a step farther than a generic image by actually creating an image for a repo on the fly, including details about the repo itself: + +![GitHub's og:image for the redwood repo](https://opengraph.githubassets.com/322ce8081bb85a86397a59494eab1c0fbe942b5104461f625e2c973c46ae4179/redwoodjs/redwood) + +If you want to write your own `` tags, skipping the interpolation that `` does for you, you can pass them as children to `` or just write them into the `` tag as normal. + +### `` Props + +For the most part `` creates simple `` tags based on the structure of the props you pass in. There are a couple of special behaviors described below. + +#### Plain Key/Value Props + +Any "plain" key/value prop will be turned into a `` tag with `name` and `content` attributes: + +```jsx + +// generates + +``` + +Child elements are just copied 1:1 to the resulting output: + +```jsx + + + +// generates + + +``` + +#### Passing Objects to Props + +Any props that contain an object will create a `` tag with `property` and `content` attributes, and the `property` being the names of the nested keys with a `:` between each: + +```jsx + +// generates + +``` + +This is most commonly used to create the "nested" structure that a spec like OpenGraph uses: + +```jsx + +// generates + +``` + +You can create multiple `` tags with the same name/property (allowed by the OpenGraph spec) by using an array: + +```jsx + +// generates + + +``` + +You can combine nested objects with strings to create any structure you like: + +```jsx + +// generates + + + + + + + +``` + +#### Special OpenGraph Helpers + +If you define _any_ `og` prop, we will copy any `title` and `description` to an `og:title` and `og:description`: + +```jsx + +// generates + + +``` + +You can override this behavior by explicitly setting `og:title` or `og:description` to `null`: + +```jsx + +// generates + +``` + +Of course, if you don't want any auto-generated `og` tags, then don't include any `og` prop at all! + +In addition to `og:title` and `og:description`, if you define _any_ `og` prop we will generate an `og:type` set to `website`: + +```jsx + +// generates + +``` + +You can override the `og:type` by setting it directly: + +```jsx + +// generates + +``` + +#### Other Special Cases + +If you define a `title` prop we will automatically prepend a `` tag to the output: + +```jsx +<Metadata title="My Website" /> +// generates +<title>My Website + +``` + +If you define a `charSet` prop we will create a `` tag with the `charset` attribute: + +```jsx + +// generates + +``` + +We simplified some of the examples above by excluding the generated `` and `og:type` tags, so here's the real output if you included `title` and `og` props: + +```jsx +<Metadata title="My Website" og /> +// generates +<title>My Website + + + + +``` + +:::info Do I need to apply these same tags over and over in every page? + +Some `` tags, like `charset` or `locale` are probably applicable to the entire site, in which case it would be simpler to just include these once in your `index.html` instead of having to set them manually on each and every page/cell of your site. + +::: + +This should allow you to create a fairly full-featured set of `` tags with minimal special syntax! A typical `` invocation could look like: + +```jsx + +``` + +## Dynamic tags + +Bots will pick up our tags if we've prerendered the page, but what if we want to set the `` based on the output of the Cell? + +:::info Prerendering + +As of v3.x, Redwood supports prerendering your [Cells](https://redwoodjs.com/docs/cells) with the data you were querying. For more information please refer [to this section](https://redwoodjs.com/docs/prerender#cell-prerendering). + +::: + +Let's say in our `PostCell`, we want to set the title to match the `Post`. + +```jsx +import { Metadata } from '@redwoodjs/web' + +import Post from 'src/components/Post/Post' + +export const QUERY = gql` + query FindPostById($id: Int!) { + post: post(id: $id) { + title + snippet + author { + name + } + } + } +` + +export const Loading = /* ... */ + +export const Empty = /* ... */ + +export const Success = ({ post }) => { + return ( + <> + + + + ) +} +``` + +Once the `Success` component renders, it will update your page's `` and set the relevant `<meta>` tags for you! diff --git a/docs/versioned_docs/version-7.0/serverless-functions.md b/docs/versioned_docs/version-7.0/serverless-functions.md new file mode 100644 index 000000000000..c0c53fc8a846 --- /dev/null +++ b/docs/versioned_docs/version-7.0/serverless-functions.md @@ -0,0 +1,895 @@ +--- +description: Create, develop, and run serverless functions +--- + +# Serverless Functions (API Endpoints) + +<!-- `redwood.toml`—`api/src/functions` by default. --> + + +:::info + +You can think of serverless functions as API Endpoints, and in the future we'll update the terminology used. + +Originally, Redwood apps were intended to be deployed as serverless functions to AWS Lambda. Whenever a Redwood app is deployed to a "serverful" environment such as Fly or Render, a Fastify server is started and your Redwood app's functions in `api/src/functions` are automatically registered onto the server. Request adapters are also automatically configured to handle the translation between Fastify's request and reply objects to the functions' AWS Lambda signature. + +::: + +Redwood looks for serverless functions in `api/src/functions`. Each function is mapped to a URI based on its filename. For example, you can find `api/src/functions/graphql.js` at `http://localhost:8911/graphql`. + +## Creating Serverless Functions + +Creating serverless functions is easy with Redwood's function generator: + +```bash +yarn rw g function <name> +``` + +This will generate a stub serverless function in the folder `api/src/functions/<name>`, along with a test and an empty scenarios file. + +_Example of a bare minimum handler you need to get going:_ + +```jsx +export const handler = async (event, context) => { + return { + statusCode: 200, + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + data: '${name} function', + }), + } +} +``` + +## The handler + +For a lambda function to be a lambda function, it must export a handler that returns a status code. The handler receives two arguments: `event` and `context`. Whatever it returns is the `response`, which should include a `statusCode` at the very least. + +> **File/Folder Structure** +> +> For example, with a target function endpoint name of /hello, you could save the function file in one of the following ways: +> +> - `./api/src/functions/hello.{js,ts}` +> - `./api/src/functions/hello/hello.{js,ts}` +> - `./api/src/functions/hello/index.{js,ts}` +> +> Other files in the folder will _not_ be exposed as an endpoint + +### Re-using/Sharing code + +You can use code in `api/src` in your serverless function, some examples: + +```jsx +// importing `db` directly +import { db } from 'src/lib/db' + +// importing services +import { update } from 'src/services/subscriptions' + +// importing a custom shared library +import { reportError } from 'src/lib/errorHandling' +``` + +If you just want to move some logic into another file, that's totally fine too! + +```bash +api/src +├── functions +│   ├── graphql.ts +│   └── helloWorld +│   ├── helloWorld.scenarios.ts +│   ├── helloWorld.test.ts +│   └── helloWorld.ts # <-- imports hellWorldLib +│   └── helloWorldLib.ts # <-- exports can be used in the helloWorld +``` + +## Developing locally + +When you run `yarn rw dev` - it'll watch for changes and make your functions available at: + +- `localhost:8911/{functionName}` and +- `localhost:8910/.redwood/functions/{functionName}` (used by the web side). + +Note that the `.redwood/functions` path is determined by your setting in your [redwood.toml](app-configuration-redwood-toml.md#web) - and is used both in development and in the deployed Redwood app + +## Testing + +You can write tests and scenarios for your serverless functions very much like you would for services, but it's important to properly mock the information that the function `handler` needs. + +To help you mock the `event` and `context` information, we've provided several api testing fixture utilities: + +| Mock | Usage | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `mockHttpEvent` | Use this to mock out the http request `event` that is received by your function in unit tests. Here you can set `headers`, `httpMethod`, `queryStringParameters` as well as the `body` and if the body `isBase64Encoded`. The `event` contains information from the invoker as JSON-formatted string whose structure will vary. See [Working with AWS Lambda proxy integrations for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html) for the payload format. | +| `mockContext` | Use this function to mock the http `context`. Your function handler receives a context object with properties that provide information about the invocation, function, and execution environment. See [AWS Lambda context object in Node.js](https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html) for what context properties you can mock. | +| `mockSignedWebhook` | Use this function to mock a signed webhook. This is a specialized `mockHttpEvent` mock that also signs the payload and adds a signature header needed to verify that the webhook is trustworthy. See [How to Receive and Verify an Incoming Webhook](webhooks.md#how-to-receive-and-verify-an-incoming-webhook) to learn more about signing and verifying webhooks. | + +### How to Test Serverless Functions + +Let's learn how to test a serverless function by first creating a simple function that divides two numbers. + +As with all serverless lambda functions, the handler accepts an `APIGatewayEvent` which contains information from the invoker. +That means it will have the HTTP headers, the querystring parameters, the method (GET, POST, PUT, etc), cookies, and the body of the request. +See [Working with AWS Lambda proxy integrations for HTTP APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html) for the payload format. + +Let's generate our function: + +```bash +yarn rw generate function divide +``` + +We'll use the querystring to pass the `dividend` and `divisor` to the function handler on the event as seen here to divide 10 by 2. + +```bash +// request +http://localhost:8911/divide?dividend=10&divisor=2 +``` + +If the function can successfully divide the two numbers, the function returns a body payload back in the response with a [HTTP 200 Success](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200) status: + +```bash +// response +{"message":"10 / 2 = 5","dividend":"10","divisor":"2","quotient":5} +``` + +And, we'll have some error handling to consider the case when either the dividend or divisor is missing and return a [HTTP 400 Bad Request](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400) status code; or, if we try to divide by zero or something else goes wrong, we return a [500 Internal Server Error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500). + +```tsx title="api/src/functions/divide/divide.ts" +import type { APIGatewayEvent } from 'aws-lambda' + +export const handler = async (event: APIGatewayEvent) => { + // sets the default response + let statusCode = 200 + let message = '' + + try { + // get the two numbers to divide from the event query string + const { dividend, divisor } = event.queryStringParameters + + // make sure the values to divide are provided + if (dividend === undefined || divisor === undefined) { + statusCode = 400 + message = `Please specify both a dividend and divisor.` + throw Error(message) + } + + // divide the two numbers + const quotient = parseInt(dividend) / parseInt(divisor) + message = `${dividend} / ${divisor} = ${quotient}` + + // check if the numbers could be divided + if (!isFinite(quotient)) { + statusCode = 500 + message = `Sorry. Could not divide ${dividend} by ${divisor}` + throw Error(message) + } + + return { + statusCode, + body: { + message, + dividend, + divisor, + quotient, + }, + } + } catch (error) { + return { + statusCode, + body: { + message: error.message, + }, + } + } +} +``` + +Sure, you could launch a browser or use Curl or some other manual approach and try out various combinations to test the success and error cases, but we want to automate the tests as part of our app's CI. + +That means we need to write some tests. + +#### Function Unit Tests + +To test a serverless function, you'll work with the test script associated with the function. You'll find it in the same directory as your function: + +```bash +api +├── src +│ ├── functions +│ │ ├── divide +│ │ │ ├── divide.ts +│ │ │ ├── divide.test.ts +``` + +The setup steps are to: + +- write your test cases by mocking the event using `mockHttpEvent` to contain the information you want to give the handler +- invoke the handler with the mocked event +- extract the result body +- test that the values match what you expect + +The boilerplate steps are generated automatically for you by the function generator +Let's look at a series of tests that mock the event with different information in each. + +First, let's write a test that divides 20 by 5 and we'll expect to get 4 as the quotient: + +```jsx title="api/src/functions/divideBy/divide.test.ts" +import { mockHttpEvent } from '@redwoodjs/testing/api' +import { handler } from './divide' + +describe('divide serverless function', () => { + it('divides two numbers successfully', async () => { + const httpEvent = mockHttpEvent({ + queryStringParameters: { + dividend: '20', + divisor: '5', + }, + }) + + const result = await handler(httpEvent) + const body = result.body + + expect(result.statusCode).toBe(200) + expect(body.message).toContain('=') + expect(body.quotient).toEqual(4) + }) +``` + +Then we can also add a test to handle the error when we don't provide a dividend: + +```jsx title="api/src/functions/divideBy/divide.test.ts" +it('requires a dividend', async () => { + const httpEvent = mockHttpEvent({ + queryStringParameters: { + divisor: '5', + }, + }) + + const result = await handler(httpEvent) + const body = result.body + expect(result.statusCode).toBe(400) + expect(body.message).toContain('Please specify both') + expect(body.quotient).toBeUndefined +}) +``` + +And finally, we can also add a test to handle the error when we try to divide by 0: + +```jsx + it('cannot divide by 0', async () => { + const httpEvent = mockHttpEvent({ + queryStringParameters: { + dividend: '20', + divisor: '0', + }, + }) + + const result = await handler(httpEvent) + const body = result.body + + expect(result.statusCode).toBe(500) + expect(body.message).toContain('Could not divide') + expect(body.quotient).toBeUndefined + }) +}) + +``` + +The `divide` function is a simple example, but you can use the `mockHttpEvent` to set any event values you handler needs to test more complex functions. + +You can also `mockContext` and pass the mocked `context` to the handler and even create scenario data if your function interacts with your database. For an example of using scenarios when test functions, please look at a specialized serverless function: the [webhook below](#how-to-test-webhooks). + +#### Running Function Tests + +To run an individual serverless function test: + +```bash +yarn rw test api divide +``` + +When the test run completes (and succeeds), you see the results: + +```bash + PASS api api/src/functions/divide/divide.test.ts (12.69 s) + divide serverless function + ✓ divides two numbers successfully (153 ms) + ✓ requires a dividend (48 ms) + ✓ requires a divisor (45 ms) + ✓ cannot divide by 0 (47 ms) + +Test Suites: 1 passed, 1 total +Tests: 4 passed, 4 total +Snapshots: 0 total +Time: 13.155 s +Ran all test suites matching /divide.test.ts|divide.test.ts|false/i. +``` + +If the test fails, you can update your function or test script and the test will automatically re-run. + +### Using Test Fixtures + +Often times your serverless function will have a variety of test cases, but because it may not interact with the database, you don't want to use scenarios (since that creates records in your test database). But, you still want a way to define these cases in a more declarative way for readability and maintainability -- and you can using fixtures. + +First, let's create a fixture for the `divide` function alongside your function and test as `divide.fixtures.ts`: + +```bash +api +├── src +│ ├── functions +│ │ ├── divide +│ │ │ ├── divide.ts +│ │ │ ├── divide.test.ts +│ │ │ ├── divide.fixtures.ts // <-- your fixture +``` + +Let's define a fixture for a new test case: when the function is invoked, but it is missing a divisor: + +```jsx title="api/src/functions/divide/divide.fixtures.ts" +import { mockHttpEvent } from '@redwoodjs/testing/api' + +export const missingDivisor = () => + mockHttpEvent({ + queryStringParameters: { + dividend: '20', + }, + }) +``` + +The `missingDivisor()` fixture constructs and mocks the event for the test case -- that is, we don't provide a divisor value in the `queryStringParameters` in the mocked http event. + +Now, let's use this fixture in a test by providing the handler with the event we mocked in the fixture: + +```jsx title="api/src/functions/divide/divide.test.ts" +import { missingDivisor } from './divide.fixtures' + +describe('divide serverless function', () => { + // ... other test cases + + it('requires a divisor', async () => { + const result = await handler(missingDivisor()) + + const body = result.body + + expect(result.statusCode).toBe(400) + expect(body.message).toContain('Please specify both') + expect(body.quotient).toBeUndefined + }) + + // ... +}) +``` + +Now, if we decide to change the test case date, we simply modify the fixture and re-run our tests. + +You can then define multiple fixtures to define all the cases in a central place, export each, and then use in your tests for more maintainable and readable tests. + +### How to Test Webhooks + +[Webhooks](webhooks.md) are specialized serverless functions that will verify a signature header to ensure you can trust the incoming request and use the payload with confidence. + +:::note + +Want to learn more about webhooks? See a [Detailed discussion of webhooks](webhooks.md) to find out how webhooks can give your app the power to create complex workflows, build one-to-one automation, and sync data between apps. + +::: + +In the following example, we'll have the webhook interact with our app's database, so we can see how we can use **scenario testing** to create data that the handler can access and modify. + +:::tip **Why testing webhooks is hard** + +Because your webhook is typically sent from a third-party's system, manually testing webhooks can be difficult. For one thing, you often have to create some kind of event in their system that will trigger the event -- and you'll often have to do that in a production environment with real data. Second, for each case you'll have to find data that represents each case and issue a hook for each -- which can take a lot of time and is tedious. + +Also, you'll be using production secrets to sign the payload. And finally, since your third-party needs to send you the incoming webhook you'll most likely have to launch a local tunnel to expose your development machine publicly in order to receive them. + +Instead, we can automate and mock the webhook to contain a signed payload that we can use to test the handler. + +By writing these tests, you can iterate and implement the webhook logic much faster and easier without having to rely on a third party to send you data, or setting up tunneling, or triggering events on the external system. + +::: + +For our webhook test example, we'll create a webhook that updates a Order's Status by looking up the order by its Tracking Number and then updating the status to by Delivered (if our rules allow it). + +Because we'll be interacting with data, our app has an `Order` model defined in the Prisma schema that has a unique `trackingNumber` and `status`: + +```jsx title="/api/db/schema.prisma" +model Order { + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + trackingNumber String @unique + status String @default("UNKNOWN") + + @@unique([trackingNumber, status]) +} +``` + +Let's generate our webhook function: + +```bash +yarn rw generate function updateOrderStatus +``` + +```bash +api +├── src +│ ├── functions +│ │ ├── updateOrderStatus +│ │ │ ├── updateOrderStatus.ts +│ │ │ ├── updateOrderStatus.scenarios.ts +│ │ │ ├── updateOrderStatus.test.ts + +``` + +The `updateOrderStatus` webhook will expect: + +- a signature header named `X-Webhook-Signature` +- that the signature in that header will signed using the [SHA256 method](webhooks.md#sha256-verifier-used-by-github-discourse) +- verify the signature and throw an [401 Unauthorized](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401) error if the event cannot be trusted (that is, it failed signature verification) +- if verified, then proceed to +- find the order by the tracking number provided +- check that the order's current status allows the status to be changed +- and if so, update the error and return the order and message +- or if not, return a [500 internal server error](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) with a message that the order couldn't be updated + +```tsx +import type { APIGatewayEvent } from 'aws-lambda' +import { verifyEvent, VerifyOptions, WebhookVerificationError } from '@redwoodjs/api/webhooks' +import { db } from 'src/lib/db' + +export const handler = async (event: APIGatewayEvent) => { + let currentOrderStatus = 'UNKNOWN' + + try { + const options = { + signatureHeader: 'X-Webhook-Signature', + } as VerifyOptions + + verifyEvent('sha256Verifier', { + event, + secret: 'MY-VOICE-IS-MY-PASSPORT-VERIFY-ME', + options, + }) + + // Safely use the validated webhook payload body + const body = JSON.parse(event.body) + const trackingNumber = body.trackingNumber + const status = body.status + + // You can only update the status if the order's current status allows + switch (status) { + case 'PLACED': + currentOrderStatus = 'UNKNOWN' + break + case 'SHIPPED': + currentOrderStatus = 'PLACED' + break + case 'DELIVERED': + currentOrderStatus = 'SHIPPED' + break + default: + currentOrderStatus = 'UNKNOWN' + } + + // updated the order with the new status + // using the trackingNumber provided + const order = await db.order.update({ + where: { trackingNumber_status: { trackingNumber, status: currentOrderStatus } }, + data: { status: status }, + }) + + return { + statusCode: 200, // Success!!! + body: JSON.stringify({ + order, + message: `Updated order ${order.id} to ${order.status} at ${order.updatedAt}`, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + return { + statusCode: 401, // Unauthorized + } + } else { + return { + statusCode: 500, // An error + body: JSON.stringify({ + error: error.message, + message: `Unable to update the order status`, + }), + } + } + } +} +``` + +#### Webhook Test Scenarios + +Since our `updateOrderStatus` webhook will query an order by its tracking number and then attempt to update its status, we'll want to seed our test run with some scenario data that helps us have records we can use to test that the webhook does what we expect it to in each situation. + +Let's create three orders for with different status: `PLACED`, `SHIPPED`, and `DELIVERED`. + +We'll use these to test that you cannot update an order to the delivered status unless it is currently "shipped:. + +We can refer to these individual orders in our tests as `scenario.order.placed`, `scenario.order.shipped` , or `scenario.order.delivered`. + +```tsx title="api/src/functions/updateOrderStatus/updateOrderStatus.scenarios.ts" +export const standard = defineScenario({ + order: { + placed: { + data: { trackingNumber: '1ZP1LC3D0Rd3R000001', status: 'PLACED' }, + }, + shipped: { + data: { trackingNumber: '1ZSH1PP3D000002', status: 'SHIPPED' }, + }, + delivered: { + data: { trackingNumber: '1ZD31IV3R3D000003', status: 'DELIVERED' }, + }, + }, +}) +``` + +#### Webhook Unit Tests + +The webhook test setup needs to: + +- import your api testing utilities, such as `mockSignedWebhook` +- import your function handler + +In each test scenario we will: + +- get the scenario order data +- create a webhook payload with a tracking number and a status what we want to change its order to +- mock and sign the webhook using `mockSignedWebhook` that specifies the verifier method, signature header, and the secret that will verify that signature +- invoke the handler with the mocked signed event +- extract the result body (and parse it since it will be JSON data) +- test that the values match what you expect + +In our first scenario, we'll use the shipped order to test that we can update the order given a valid tracking number and change its status to delivered: + +```tsx title="api/src/functions/updateOrderStatus/updateOrderStatus.test.ts" +import { mockSignedWebhook } from '@redwoodjs/testing/api' +import { handler } from './updateOrderStatus' + +describe('updates an order via a webhook', () => { + scenario('with a shipped order, updates the status to DELIVERED', + async (scenario) => { + + const order = scenario.order.shipped + + const payload = { trackingNumber: order.trackingNumber, + status: 'DELIVERED' } + + const event = mockSignedWebhook({ payload, + signatureType: 'sha256Verifier', + signatureHeader: 'X-Webhook-Signature', + secret: 'MY-VOICE-IS-MY-PASSPORT-VERIFY-ME' }) + + const result = await handler(event) + + const body = JSON.parse(result.body) + + expect(result.statusCode).toBe(200) + expect(body.message).toContain(`Updated order ${order.id}`) + expect(body.message).toContain(`to ${payload.status}`) + expect(body.order.id).toEqual(order.id) + expect(body.order.status).toEqual(payload.status) + }) +``` + +But, we also want to test what happens if the webhook receives an invalid signature header like `X-Webhook-Signature-Invalid`. + +Because the header isn't what the webhook expects (it wants to see a header named `X-Webhook-Signature`), this request is not verified and will return a 401 Unauthorized and not try to update the order at all. + +:::note + +For brevity we didn't test that the order's status wasn't changed, but that could be checked as well + +::: + +```jsx +scenario('with an invalid signature header, the webhook is unauthorized', async (scenario) => { + const order = scenario.order.placed + + const payload = { trackingNumber: order.trackingNumber, status: 'DELIVERED' } + const event = mockSignedWebhook({ + payload, + signatureType: 'sha256Verifier', + signatureHeader: 'X-Webhook-Signature-Invalid', + secret: 'MY-VOICE-IS-MY-PASSPORT-VERIFY-ME', + }) + + const result = await handler(event) + + expect(result.statusCode).toBe(401) +}) +``` + +Next, we test what happens if the event payload is signed, but with a different secret than it expects; that is it was signed using the wrong secret (`MY-NAME-IS-WERNER-BRANDES-VERIFY-ME` and not `MY-VOICE-IS-MY-PASSPORT-VERIFY-ME`). + +Again, we expect as 401 Unauthorized response. + +```jsx +scenario('with the wrong webhook secret the webhook is unauthorized', async (scenario) => { + const order = scenario.order.placed + + const payload = { trackingNumber: order.trackingNumber, status: 'DELIVERED' } + const event = mockSignedWebhook({ + payload, + signatureType: 'sha256Verifier', + signatureHeader: 'X-Webhook-Signature', + secret: 'MY-NAME-IS-WERNER-BRANDES-VERIFY-ME', + }) + + const result = await handler(event) + + expect(result.statusCode).toBe(401) +}) +``` + +Next, what happens if the order cannot be found? We'll try a tracking number that doesn't exist (that is we did not create it in our scenario order data): + +```jsx +scenario('when the tracking number cannot be found, returns an error', async (scenario) => { + const order = scenario.order.placed + + const payload = { trackingNumber: '1Z-DOES-NOT-EXIST', status: 'DELIVERED' } + const event = mockSignedWebhook({ + payload, + signatureType: 'sha256Verifier', + signatureHeader: 'X-Webhook-Signature', + secret: 'MY-VOICE-IS-MY-PASSPORT-VERIFY-ME', + }) + + const result = await handler(event) + + const body = JSON.parse(result.body) + + expect(result.statusCode).toBe(500) + expect(body).toHaveProperty('error') +}) +``` + +Last, we want to test a business rule that says you cannot update an order to be delivered if it already is delivered + +Therefore our scenario uses the `scenario.order.delivered` data where the order has a placed status. + +:::tip + +You'll have additional tests here to check that if the order is placed you cannot update it to be delivered and if the order is shipped you cannot update to be placed, etc + +::: + +```jsx + scenario('when the order has already been delivered, returns an error', + async (scenario) => { + const order = scenario.order.delivered + + const payload = { trackingNumber: order.trackingNumber, + status: 'DELIVERED'} + const event = mockSignedWebhook({payload, + signatureType: 'sha256Verifier', + signatureHeader: 'X-Webhook-Signature', + secret: 'MY-VOICE-IS-MY-PASSPORT-VERIFY-ME' }) + + const result = await handler(event) + + const body = JSON.parse(result.body) + + expect(result.statusCode).toBe(500) + expect(body).toHaveProperty('error') + expect(body.message).toEqual('Unable to update the order status') + }) +}) +``` + +As with other serverless function testing, you can also `mockContext` and pass the mocked context to the handler if your webhook requires that information. + +#### Running Webhook Tests + +To run an individual webhook test: + +```bash +yarn rw test api updateOrderStatus +``` + +When the test run completes (and succeeds), you see the results: + +```bash + PASS api api/src/functions/updateOrderStatus/updateOrderStatus.test.ts (10.3 s) + updates an order via a webhook + ✓ with a shipped order, updates the status to DELIVERED (549 ms) + ✓ with an invalid signature header, the webhook is unauthorized (51 ms) + ✓ with the wrong webhook secret the webhook is unauthorized (44 ms) + ✓ when the tracking number cannot be found, returns an error (54 ms) + ✓ when the order has not yet shipped, returns an error (57 ms) + ✓ when the order has already been delivered, returns an error (73 ms) + +Test Suites: 1 passed, 1 total +Tests: 6 passed, 6 total +Snapshots: 0 total +Time: 10.694 s, estimated 36 s +Ran all test suites matching /updateOrderStatus.test.ts|updateOrderStatus.test.ts|false/i. +``` + +If the test fails, you can update your function or test script and the test will automatically re-run. + +## Security considerations + +When deployed, **a custom serverless function is an open API endpoint and is your responsibility to secure appropriately**. 🔐 + +That means _anyone_ can access your function and perform any tasks it's asked to do. In many cases, this is completely appropriate and desired behavior. + +But, in some cases, for example when the function interacts with third parties, like sending email, or when it retrieves sensitive information from a database, you may want to ensure that only verified requests from trusted sources can invoke your function. + +And, in some other cases, you may even want to limit how often the function is called over a set period of time to avoid denial-of-service-type attacks. + +### Webhooks + +If your function receives an incoming Webhook from a third party, see [Webhooks](webhooks.md) in the RedwoodJS documentation to verify and trust its payload. + +### Serverless Functions with Redwood User Authentication + +Serverless functions can use the same user-authentication strategy used by GraphQL Directives to [secure your services](graphql.md#secure-services) via the `useRequireAuth` wrapper. + +:::tip + + If you need to protect an endpoint via authentication that isn't user-based, you should consider using [Webhooks](webhooks.md) with a signed payload and verifier. + +::: + +#### How to Secure a Function with Redwood Auth + +The `useRequireAuth` wrapper configures your handler's `context` so that you can use any of the `requireAuth`-related authentication helpers in your serverless function: + +- import `useRequireAuth` from `@redwoodjs/graphql-server` +- import your app's custom `getCurrentUser` and the `isAuthenticated` check from `src/lib/auth` +- import your auth provider's `authDecoder` +- implement your serverless function as you would, but do not `export` it (see `myHandler` below). +- pass your implementation, `getCurrentUser` and `authDecoder` to the `useRequireAuth` wrapper and export its return +- check if the user `isAuthenticated()` and, if not, handle the unauthenticated case by returning a `401` status code (for example) + +```tsx +import type { APIGatewayEvent, Context } from 'aws-lambda' + +// highlight-next-line +import { authDecoder } from '@redwoodjs/auth-dbauth-api' +// highlight-next-line +import { useRequireAuth } from '@redwoodjs/graphql-server' + +// highlight-next-line +import { getCurrentUser, isAuthenticated } from 'src/lib/auth' +import { logger } from 'src/lib/logger' + +const myHandler = async (event: APIGatewayEvent, context: Context) => { + logger.info('Invoked myHandler') + + // highlight-next-line + if (isAuthenticated()) { + logger.info('Access myHandler as authenticated user') + + return { + statusCode: 200, + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + data: 'myHandler function', + }), + } + // highlight-start + } else { + logger.error('Access to myHandler was denied') + + return { + statusCode: 401, + } + } + // highlight-end +} + +export const handler = useRequireAuth({ + handlerFn: myHandler, + getCurrentUser, + authDecoder, +}) +``` + +Now anywhere `context` is used, such as in services or when using `hasRole()` or `isAuthenticated()` from your `auth` lib, `currentUser` will be set and `requireAuth`-related functions will be able to verify the authentication state or if the user has the required roles. + +In short, you can now use any of your auth functions like `isAuthenticated()`, `hasRole()`, or `requireAuth()` in your serverless function. + +:::note + +If you intend to implement a feature that requires user authentication, then using GraphQL, auth directives, and services is the preferred approach. + +::: + +#### Using your Authenticated Serverless Function + +As there is no login flow when using functions, the `useRequireAuth` check assumes that your user is already authenticated and you have access to their JWT access token. + +In your request, you must include the following headers: + +- the auth provider type that your application is using, e.g. `dbAuth` +- the Bearer token (JWT access token) +- if using dbAuth, then also the dbAuth Cookie + +For example: + +```bash +Authorization: Bearer myJWT.accesstoken.signature +auth-provider: supabase +Content-Type: application/json +``` + + +### Other security considerations + +In addition to securing your serverless functions, you may consider logging, rate limiting and whitelisting as ways to protect your functions from abuse or misuse. + +#### Visibility via Logging + +Logging in production — and monitoring for suspicious activity, unknown IP addresses, errors, etc. — can be a critical part of keeping your serverless functions and your application safe. + +Third-party log services like [logFlare](https://logflare.app/), [Datadog](https://www.datadoghq.com/) and [LogDNA](https://www.logdna.com/) all have features that store logs for inspection, but also can trigger alerts and notifications if something you deem untoward occurs. + +See [Logger](logger.md) in the RedwoodJS docs for more information about how to setup and use logging services. + +#### Rate Limiting + +Rate limiting (or throttling) how often a function executes by a particular IP addresses or user account is a common way of stemming api abuse (for example, a distributed Denial-of-Service, or DDoS, attack). + +As LogRocket [says](https://blog.logrocket.com/rate-limiting-node-js/): + +:::info + +Rate limiting is a very powerful feature for securing backend APIs from malicious attacks and for handling unwanted streams of requests from users. In general terms, it allows us to control the rate at which user requests are processed by our server. + +::: + +API Gateways like [Kong](https://docs.konghq.com/hub/kong-inc/rate-limiting/) offer plugins to configure how many HTTP requests can be made in a given period of seconds, minutes, hours, days, months, or years. + +Currently, RedwoodJS does not offer rate limiting in the framework, but your deployment target infrastructure may. This is a feature RedwoodJS will investigate for future releases. + +For more information about Rate Limiting in Node.js, consider: + +- [Understanding and implementing rate limiting in Node.js](https://blog.logrocket.com/rate-limiting-node-js/) on LogRocket + +#### IP Address Whitelisting + +Because the `event` passed to the function handler contains the request's IP address, you could decide to whitelist only certain known and trusted IP addresses. + +```jsx +const ipAddress = ({ event }) => { + return event?.headers?.['client-ip'] || event?.requestContext?.identity?.sourceIp || 'localhost' +} +``` + +If the IP address in the event does not match, then you can raise an error and return `401 Unauthorized` status. + +## Returning Binary Data + +By default, RedwoodJS functions return strings or JSON. If you need to return binary data, your function will need to encode it as Base64 and then set the `isBase64Encoded` response parameter to `true`. Note that this is best suited to relatively small responses. The entire response body will be loaded into memory as a string, and many serverless hosting environments will limit your function to eg. 10 seconds, so if your file takes longer than that to process and download it may get cut off. For larger or static files, it may be better to upload files to an object store like S3 and generate a [pre-signed URL](https://stackoverflow.com/questions/38831829/nodejs-aws-sdk-s3-generate-presigned-url) that the client can use to download the file directly. + +Here's an example of how to return a binary file from the filesystem: + +```typescript title="api/src/functions/myCustomFunction.ts" +import type { APIGatewayEvent, Context } from 'aws-lambda' +import fs from 'fs' + +export const handler = async (event: APIGatewayEvent, context: Context) => { + const file = await fs.promises.readFile('/path/to/image.png') + + return { + statusCode: 200, + headers: { + 'Content-Type': 'image/png', + 'Content-Length': file.length, + }, + body: file.toString('base64'), + isBase64Encoded: true, + } +} +``` diff --git a/docs/versioned_docs/version-7.0/services.md b/docs/versioned_docs/version-7.0/services.md new file mode 100644 index 000000000000..52bb916f0a8a --- /dev/null +++ b/docs/versioned_docs/version-7.0/services.md @@ -0,0 +1,1136 @@ +--- +description: Put all your business logic in one place +--- + +# Services + +Redwood aims to put all your business logic in one place—Services. These can be used by your GraphQL API or any other place in your backend code. Redwood does all the annoying stuff for you, just write your business logic! + +## Overview + +What do we mean by "business logic?" [One definition](https://www.investopedia.com/terms/b/businesslogic.asp) states: "Business logic is the custom rules or algorithms that handle the exchange of information between a database and user interface." In Redwood, those custom rules and algorithms go in Services. You can't put that logic in the client because it's open to the world and could be manipulated. Imagine having the code to determine a valid withdrawal or deposit to someone's bank balance living in the client, and the server just receives API calls of where to move the money, doing no additional verification of those numbers! Your bank would quickly go insolvent. As you'll hear many times throughout our docs, and your development career—never trust the client. + +But how does the client get access to the output of these Services? By default, that's through GraphQL. GraphQL is an API, accessible to clients, that relies on getting data from "somewhere" before returning it. That somewhere is a function backed by what's known as a [**resolver**](https://graphql.org/learn/execution/) in GraphQL. And in Redwood, those resolvers are your Services! + +``` +┌───────────┐ ┌───────────┐ ┌───────────┐ +│ Browser │ ───> │ GraphQL │ ───> │ Service │ +└───────────┘ └───────────┘ └───────────┘ +``` + +Remember: Service are just functions. That means they can be used not only as GraphQL resolvers, but from other Services, or serverless functions, or anywhere else you invoke a function on the api side. + +> **Can I use Service functions on the web side?** +> +> The short answer is no because our build process doesn't support it yet. +> +> Generally, in a full-stack application, Services will concern themselves with getting data in and out of a database. The libraries we use for this, like Prisma, do not run in the browser. However, even if it did, it would happily pass on whatever SQL-equivalent commands you give it, like `db.user.deleteMany()`, which would remove all user records! That kind of power in the hands of the client would wreak havoc the likes of which you have never seen. + +Service functions can also call each other. For example, that theoretical Service function that handles transferring money between two accounts: it certainly comes in handy when a user initiates a transfer through a GraphQL call, but our business logic for what constitutes a transfer lives in that function. That function should be the only one responsible for moving money between two accounts, so we should make use of it anywhere we need to do a transfer—imagine an async task that moves $100 between a checking and savings account every 1st of the month. + +``` +┌───────────┐ ┌───────────┐ +│ Service │ ───> │ Service │ +└───────────┘ └───────────┘ +``` + +Finally, Services can also be called from [serverless functions](serverless-functions.md). Confusingly, these are also called "functions", but are meant to be run in a serverless environment where the code only exists long enough to complete a task and is then shut down. Redwood loves serverless functions. In fact, your GraphQL endpoint is, itself, a serverless function! In Redwood, these go in `api/src/functions`. Serverless functions can make use of Services, rather than duplicating business logic inside of themselves. In our bank transfer example, a third party service could initiate a webhook call to one of our serverless functions saying that Alice just got paid. Our (serverless) function can then call our (Service) function to make the transfer from the third party to Alice. + +``` +┌───────────────────────┐ ┌───────────┐ +│ Serverless Function │ ───> │ Service │ +└───────────────────────┘ └───────────┘ +``` + +## Service Validations + +Redwood includes a feature we call Service Validations. These simplify an extremely common task: making sure that incoming data is formatted properly before continuing. These validations are meant to be included at the start of your Service function and will throw an error if conditions are not met: + +```jsx +import { validate, validateWith, validateWithSync, validateUniqueness } from '@redwoodjs/api' + +export const createUser = async ({ input }) => { + validate(input.firstName, 'First name', { + presence: true, + exclusion: { in: ['Admin', 'Owner'], message: 'That name is reserved, sorry!' }, + length: { min: 2, max: 255 } + }) + validateWithSync(() => { + if (input.role === 'Manager' && !context.currentUser.roles.includes('admin')) { + throw 'Only Admins can create new Managers' + } + }) + await validateWith(async () => { + const inviteCount = await db.invites.count({ where: { userId: currentUser.id } }) + if (inviteCount >= 10) { + throw 'You have already invited your max of 10 users' + } + }) + + return validateUniqueness('user', { username: input.username }, (db) => { + return db.user.create({ data: input }) + }) +} +``` + +> **What's the difference between Service Validations and Validator Directives?** +> +> [Validator Directives](directives.md#validators) were added to Redwood in v0.37 and provide a way to validate whether data going through GraphQL is allowed based on the user that's currently requesting it (the user that is logged in). These directives control *access* to data, while Service Validators operate on a different level, outside of GraphQL, and make sure data is formatted properly before, most commonly, putting it into a database. +> +> You could use these in combination to, for example, prevent a client from accessing the email addresses of any users that aren't themselves (Validator Directives) while also verifying that when creating a user, an email address is present, formatted correctly, and unique (Service Validations). + +### Displaying to the User + +If you're using [Redwood's scaffolds](cli-commands.md#generate-scaffold) then you'll see requisite error messages when trying to save a form that runs into these validation errors automatically: + +![image](https://user-images.githubusercontent.com/300/138919184-89eddd9e-8ee7-4956-b7ed-ba8daaa0f6ea.png) + +Otherwise you'll need to use the `error` property that you can [destructure](https://www.apollographql.com/docs/react/data/mutations/#executing-a-mutation) from `useMutation()` and display an element containing the error message (Redwood's [form helpers](/docs/forms) will do some of the heavy lifting for you for displaying the error): + +```jsx {13,21} +import { Form, FormError, Label, TextField, Submit } from '@redwoodjs/forms' +import { useMutation } from '@redwoodjs/web' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: ContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + const [create, { loading, error }] = useMutation(CREATE_CONTACT) + + const onSubmit = (data) => { + create({ variables: { input: data }}) + } + + return ( + <Form onSubmit={onSubmit}> + <FormError error={error}> + <Label name="email">Email Address</Label> + <TextField name="email" /> + <Submit disabled={loading}>Save</Submit> + </Form> + ) +} +``` + +### Importing + +You'll import the three functions below from `@redwoodjs/api`: + +```jsx +import { validate, validateWith, validateUniqueness } from '@redwoodjs/api' +``` + +### validate() + +This is the main function to call when you have a piece of data to validate. There are two forms of this function call, one with 2 arguments and one with 3. The first argument is always the variable to validate and the last argument is an object with all the validations you want to run against the first argument. The (optional) second argument is the name of the field to be used in a default error message if you do not provide a custom one: + +```jsx +// Two argument form: validate(value, validations) +validate(input.email, { email: { message: 'Please provide a valid email address' } }) + +// Three argument form: validate(value, name, validations) +validate(input.email, 'Email Address', { email: true } +``` + +All validations provide a generic error message if you do not specify one yourself (great for quickly getting your app working). In the three argument version, you provide the "name" of the field (in this case `'Email Address'`) and that will be used in the error message: + +``` +Email Address must be formatted like an email address +``` + +Using the two argument version will use your custom error message in the validations object properties: + +``` +Please provide a valid email address +``` + +#### Multiple Validations + +You can provide multiple validations in the last argument object, some with custom messages and some without. If you include only *some* custom messages, make sure to use the 3-argument version as the ones without custom messages will need a variable name to include their messages: + +```jsx +validate(input.name, 'Name', { + presence: true, + exclusion: { + in: ['Admin', 'Owner'], + message: 'Sorry that name is reserved' + }, + length: { + min: 2, + max: 255, + message: 'Please provide a name at least two characters long, but no more than 255' + }, + format: { + pattern: /^[A-Za-z]+$/, + message: 'Name can only contain letters' + } +) +``` + +Note that the validations object properties often take two forms: a simple form without a custom message, and a nested object when you do need a custom message: + +```jsx +{ email: true } +{ email: { message: 'Must provide an email' } } + +{ exclusion: ['Admin', 'Owner'] } +{ exclusion: { in: ['Admin', 'Owner' ], message: 'That name is reserved' } } +``` + +This keeps the syntax as simple as possible when a custom message is not required. Details on the options for each validation are detailed below. + +#### Absence + +Requires that a field NOT be present, meaning it must be `null` or `undefined`. +Opposite of the [presence](#presence) validator. + +```jsx +validate(input.value, 'Value', { + absence: true +}) +``` + +##### Options + +* `allowEmptyString` will count an empty string as being absent (that is, `null`, `undefined` and `""` will pass this validation) + +```jsx +validate(input.honeypot, 'Honeypot', { + absence: { allowEmptyString: true } +}) +``` + +* `message`: a message to be shown if the validation fails + +```jsx +validate(input.value, { + absence: { message: 'Value must be absent' } +}) +``` + +#### Acceptance + +Requires that the passed value be `true`, or within an array of allowed values that will be considered "true". + +```jsx +validate(input.terms, 'Terms of Service', { + acceptance: true +}) +``` + +##### Options + +* `in`: an array of values that, if any match, will pass the validation + +```jsx +validate(input.terms, 'Terms of Service', { + acceptance: { in: [true, 'true', 1, '1'] } +}) +``` + +* `message`: a custom message if validation fails + +```jsx +validate(input.terms, { + acceptance: { message: 'Please accept the Terms of Service' } +}) +``` + +#### Email + +Requires that the value be formatted like an email address by comparing against a regular expression. The regex is extremely lax: `/^[^@\s]+@[^.\s]+\.[^\s]+$/` This says that the value: + +* Must start with one or more characters that aren't a whitespace or literal `@` +* Followed by a `@` +* Followed by one or more characters that aren't a whitespace or literal `.` +* Followed by a `.` +* Ending with one or more characters that aren't whitespace + +Since the [official email regex](http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html) is around 6,300 characters long, we though this one was good enough. If you have a different, preferred email validation regular expression, use the [format](#format) validation. + +```jsx +validate(input.email, 'Email', { + email: true +}) +``` + +##### Options + +* `message`: a custom message if validation fails + +```jsx +validate(input.email, { + email: { message: 'Please provide a valid email address' +}) +``` + +#### Exclusion + +Requires that the given value *not* equal to any in a list of given values. Opposite of the [inclusion](#inclusion) validation. + +```jsx +validate(input.name, 'Name', { + exclusion: ['Admin', 'Owner'] +}) +``` + +##### Options + +* `in`: the list of values that cannot be used +* `caseSensitive`: toggles case sensitivity; default: `true` + +```jsx +validate(input.name, 'Name', { + exclusion: { in: ['Admin', 'Owner'] } +}) +``` + +* `message`: a custom error message if validation fails + +```jsx +validate(input.name, { + exclusion: { + in: ['Admin', 'Owner'], + message: 'That name is reserved, try another' + } +}) +``` + +#### Format + +Requires that the value match a given regular expression. + +```jsx +validate(input.usPhone, 'US Phone Number', { + format: /^[0-9-]{10,12}$/ +}) +``` + +##### Options + +* `pattern`: the regular expression to use + +```jsx +validate(input.usPhone, 'US Phone Number', { + format: { pattern: /^[0-9-]{10,12}$/ } +}) +``` + +* `message`: a custom error message if validation fails + + +```jsx +validate(input.usPhone, { + format: { + pattern: /^[0-9-]{10,12}$/, + message: 'Can only contain numbers and dashes' + } +}) +``` + +#### Inclusion + +Requires that the given value *is* equal to one in a list of given values. Opposite of the [exclusion](#exclusion) validation. + +```jsx +validate(input.role, 'Role', { + inclusion: ['Guest', 'Member', 'Manager'] +}) +``` + +##### Options + +* `in`: the list of values that can be used +* `caseSensitive`: toggles case sensitivity; default: `true` + +```jsx +validate(input.role, 'Role', { + inclusion: { in: ['Guest', 'Member', 'Manager'] } +}) +``` + +* `message`: a custom error message if validation fails + +```jsx +validate(input.role, 'Role', { + inclusion: { + in: ['Guest', 'Member', 'Manager'] , + message: 'Please select a proper role' + } +}) +``` + +#### Length + +Requires that the value meet one or more of a number of string length validations. + +```jsx +validate(input.answer, 'Answer', { + length: { min: 6, max: 200 } +}) +``` + +##### Options + +* `min`: must be at least this number of characters long + +```jsx +validate(input.name, 'Name', { + length: { min: 2 } +}) +``` + +* `max`: must be no more than this number of characters long + +```jsx +validate(input.company, 'Company', { + length: { max: 255 } +}) +``` + +* `equal`: must be exactly this number of characters long + +```jsx +validate(input.pin, 'PIN', { + length: { equal: 4 } +}) +``` + +* `between`: convenience syntax for defining min and max as an array + +```jsx +validate(input.title, 'Title', { + length: { between: [2, 255] } +}) +``` + +* `message`: a custom message if validation fails. Can use length options as string interpolations in the message itself, including `name` which is the name of the field provided in the second argument + +```jsx +validate(input.title, 'Title', { + length: { min: 2, max: 255, message: '${name} must be between ${min} and ${max} characters' } +}) +``` + +> Note that you cannot use backticks to define the string here—that would cause the value(s) to be interpolated immediately, and `min` and `max` are not actually available yet. This must be a plain string using single or double quotes, but using the `${}` interpolation syntax inside. + +#### Numericality + +The awesomely-named Numericality Validation requires that the value passed meet one or more criteria that are all number related. + +```jsx +validate(input.year, 'Year', { + numericality: { greaterThan: 1900, lessThanOrEqual: 2021 } +}) +``` + +##### Options + +* `integer`: the number must be an integer + +```jsx +validate(input.age, 'Age', { + numericality: { integer: true } +}) +``` + +* `lessThan`: the number must be less than the given value + +```jsx +validate(input.temp, 'Temperature', { + numericality: { lessThan: 100 } +}) +``` + +* `lessThanOrEqual`: the number must be less than or equal to the given value + +```jsx +validate(input.temp, 'Temperature', { + numericality: { lessThanOrEqual: 100 } +}) +``` + +* `greaterThan`: the number must be greater than the given value + +```jsx +validate(input.temp, 'Temperature', { + numericality: { greaterThan: 32 } +}) +``` + +* `greaterThanOrEqual`: the number must be greater than or equal to the given number + +```jsx +validate(input.temp, 'Temperature', { + numericality: { greaterThanOrEqual: 32 } +}) +``` + +* `equal`: the number must be equal to the given number + +```jsx +validate(input.guess, 'Guess', { + numericality: { equal: 6 } +}) +``` + +* `otherThan`: the number must not be equal to the given number + +```jsx +validate(input.floor, 'Floor', { + numericality: { otherThan: 13 } +}) +``` + +* `even`: the number must be even + +```jsx +validate(input.skip, 'Skip', { + numericality: { even: true } +}) +``` + +* `odd`: the number must be odd + +```jsx +validate(input.zenGarden, 'Zen Garden', { + numericality: { odd: true } +}) +``` + +* `positive`: the number must be positive (greater than 0) + +```jsx +validate(input.balance, 'Balance', { + numericality: { positive: true } +}) +``` + +* `negative`: the number must be negative (less than 0) + +```jsx +validate(input.debt, 'Debt', { + numericality: { negative: true } +}) +``` + +* `message`: a custom message if validation fails. Some options can be used in string interpolation: `lessThan`, `lessThanOrEqual`, `greaterThan`, `greaterThanOrEqual`, `equal`, and `otherThan` + +```jsx +validate(input.floor, 'Floor', { + numericality: { otherThan: 13, message: 'You cannot go to floor ${otherThan}' } +}) +``` + +> Note that you cannot use backticks to define the string here—that would cause the value(s) to be interpolated immediately. This must be a plain string using single or double quotes, but using the `${}` interpolation syntax inside. + +#### Presence + +Requires that a field be present, meaning it must not be `null` or `undefined`. +Opposite of the [absence](#absence) validator. + +```jsx +validate(input.value, 'Value', { + presence: true +}) +``` + +##### Options + +* `allowNull`: whether or not to allow `null` to be considered present (default is `false`) + +```jsx +validate(input.value, 'Value', { + presence: { allowNull: true } +}) +// `null` passes +// `undefined` fails +// "" passes +``` + +* `allowUndefined`: whether or not to allow `undefined` to be considered present (default is `false`) + +```jsx +validate(input.value, 'Value', { + presence: { allowUndefined: true } +}) +// `null` fails +// `undefined` passes +// "" passes +``` + +* `allowEmptyString`: whether or not to allow an empty string `""` to be considered present (default is `true`) + +```jsx +validate(input.value, 'Value', { + presence: { allowEmptyString: false } +}) +// `null` fails +// `undefined` fails +// "" fails +``` + +* `message`: a message to be shown if the validation fails + +```jsx +validate(input.lastName, { + presence: { allowEmptyString: false, message: "Can't leave last name empty" } +}) +``` + +#### Custom + +Run a custom validation function passed as `with` which should either throw or return nothing. +If the function throws an error, the error message will be used as the message of the validation error associated with the field. + +```jsx +validate(input.value, 'Value', { + custom: { + with: () => { + if (isInvalid) { + throw new Error('Value is invalid') + } + } + } +}) +``` + +##### Options + +* `message`: a custom error message if validation fails + +```jsx +validate(input.value, 'Value', { + custom: { + with: () => { + if (isInvalid) { + throw new Error('Value is invalid') + } + }, + message: 'Please specify a different value' + } +}) +``` +### validateWithSync() + +`validateWithSync()` is simply given a function to execute. This function should throw with a message if there is a problem, otherwise do nothing. + +```jsx +validateWithSync(() => { + if (input.name === 'Name') { + throw "You'll have to be more creative than that" + } +}) + +validateWithSync(() => { + if (input.name === 'Name') { + throw new Error("You'll have to be more creative than that") + } +}) +``` + +Either of these errors will be caught and re-thrown as a `ServiceValidationError` with your text as the `message` of the error (although technically you should always throw errors with `new Error()` like in the second example). + +You could just write your own function and throw whatever you like, without using `validateWithSync()`. But, when accessing your Service function through GraphQL, that error would be swallowed and the user would simply see "Something went wrong" for security reasons: error messages could reveal source code or other sensitive information so most are hidden. Errors thrown by Service Validations are considered "safe" and allowed to be shown to the client. + +### validateWith() + +The same behavior as `validateWithSync()` but works with Promises. Remember to `await` the validation. + +```jsx +await validateWith(async () => { + if (await db.products.count() >= 100) { + throw "There can only be a maximum of 100 products in your store" + } +}) +``` + +### validateUniqueness() + +This validation guarantees that the field(s) given in the first argument are unique in the database before executing the callback given in the last argument. If a record is found with the given fields then an error is thrown and the callback is not invoked. + +The uniqueness guarantee is handled through Prisma's [transaction API](https://www.prisma.io/docs/concepts/components/prisma-client/transactions). Given this example validation: + +```jsx +return validateUniqueness('user', { username: input.username }, (db) => { + return db.user.create({ data: input }) +}) +``` + +It is functionally equivalent to: + +```jsx +return await db.$transaction(async (db) => { + if (await db.user.findFirst({ username: input.username })) { + throw new ServiceValidationError('Username is not unique') + } else { + return db.user.create({ data: input }) + } +}) +``` + +So `validateUniqueness()` first tries to find a record with the given fields, and if found raise an error, if not then executes the callback. + +> **Why use this when the database can verify uniqueness with a UNIQUE INDEX database constraint?** +> +> You may be in a situation where you can't have a unique index (supporting a legacy schema, perhaps), but still want to make sure the data is unique before proceeding. There is also the belief that you shouldn't have to count on the database to validate your data—that's a core concern of your business logic, and your business logic should live in your Services in a Redwood app. +> +> Another issue is that the error raised by Prisma when a record validates a unique index is swallowed by GraphQL and so you can't report it to the user (there are still ways around this, but it involves catching and re-throwing a different error). The error raised by `validateUniqueness()` is already safe-listed and allowed to be sent to the browser. + +#### Arguments + +1. The name of the db table accessor that will be checked (what you would call on `db` in a normal Prisma call). If you'd call `db.user` then this value is `"user"`. +2. An object, containing the db fields/values to check for uniqueness, like `{ email: 'rob@redwoodjs.com' }`. Can also include additional options explained below that provide for a narrower scope for uniqueness requirements, and a way for the record to identify itself and not create a false positive for an existing record. +3. [Optional] An object with options. `message` - custom error message. `db` - custom instance of the PrismaClient to use +4. Callback to be invoked if record is found to be unique. + +In its most basic usage, say you want to make sure that a user's email address is unique before creating the record. `input` is an object containing all the user fields to save to the database, including `email` which must be unique: + +```jsx +const createUser = (input) => { + return validateUniqueness('user', { email: input.email }, (db) => { + return db.user.create({ data: input }) + }) +} +``` + +You can provide a custom message if the validation failed with the optional third argument: + +```jsx +const createUser = (input) => { + return validateUniqueness('user', + { email: input.email }, + { message: 'Your email is already in use' }, + (db) => db.user.create({ data: input }) + ) +} +``` + +You can provide the PrismaClient to be used for the transaction and callback. +```jsx +import { db } from 'src/lib/db' + +const createUser = (input) => { + return validateUniqueness('user', + { email: input.email }, + { db }, + (db) => db.user.create({ data: input }) + ) +} +``` + +> If you are overwriting the DATABASE_URL in your `src/lib/db` instantiation of the PrismaClient, you need to use this option. If not provided, a vanilla `new PrismaClient()` is used to run the callback that will not respect any custom configurations not represented in your `prisma.schema` + +Be sure that both your callback and the surrounding `validateUniqueness()` function are `return`ed or else your service function will have nothing to return to its consumers, like GraphQL. + +##### $self + +What about updating an existing record? In its default usage, an update with this same `validateUniqueness` check will fail because the existing record will be found in the database and so think the email address is already in use, even though its in use by itself! In this case, pass an extra `$self` prop to the list of fields containing a check on how to identify the record as itself: + +```jsx +const updateUser = (id, input) => { + return validateUniqueness('user', { + email: input.email, + $self: { id } + }, (db) => db.user.create({ data: input }) +} +``` + +Now the check for whether a record exists will exclude those records whose `id` is the same as this record's `id`. + +##### $scope + +Sometimes we may only want to check uniqueness against a subset of records, say only those owned by the same user. Two different users can create the same blog post with the same title, but a single user can't create two posts with the same title. If the `Post` table contains a foreign key to the user that created it, called `userId`, we can use that to **scope** the uniqueness check: + +```jsx +const createPost = (input) => { + return validateUniqueness('post', { + title: input.title, + $scope: { userId: context.currentUser.id } + }, (db) => { + return db.user.create({ data: input }) + }) +} +``` + +This makes sure that the user that's logged in and creating the post cannot reuse the same blog post title as one of their own posts. + +## Caching + +Redwood provides a simple [LRU cache](https://www.baeldung.com/java-lru-cache) for your services. With an LRU cache you never need to worry about manually expiring or updating cache items. You either read an existing item (if its **key** is found) or create a new cached item if it isn't. This means that over time the cache will get bigger and bigger until it hits a memory or disk usage limit, but you don't care: the cache software is responsible for removing the oldest/least used members to make more room. For many applications, its entire database resultset may fit in cache! + +How does a cache work? At its simplest, a cache is just a big chunk of memory or disk that stores key/value pairs. A unique key is used to lookup a value—the value being what you wanted to cache. The trick with a cache is selecting a key that makes the data unique among all the other data being cached, but that it itself (the key) contains enough uniqueness that you can safely discard it when something in the computed value changes, and you want to save a new value instead. More on that in [Choosing a Good Key](#choosing-a-good-key) below. + +Why use a cache? If you have an expensive or time-consuming process in your service that doesn't change on every request, this is a great candidate. For example, for a store front, you may want to show the most popular products. This may be computed by a combination of purchases, views, time spent on the product page, social media posts, or a whole host of additional information. Aggregating this data may take seconds or more, but the list of popular products probably doesn't change that often. There's no reason to make every user wait all that time just to see the same list of products. With service caching, just wrap this computation in the `cache()` function, and give it an expiration time of 24 hours, and now the result is returned in milliseconds for every user (except the first one in a 24 hour period, it has to be computed from scratch and then stored in the cache again). You can even remove this first user's wait by "warming" the cache: trigging the service function by a process you run on the server, rather than by a user's first visit, on a 24 hour schedule so that it's the one that ends up waiting for the results to be computed. + +:::info What about GraphQL caching? + +You could also cache data at the [GraphQL layer](https://community.redwoodjs.com/t/guide-power-of-graphql-caching/2624) which has some of the same benefits. Using Envelop plugins you can add a response cache _after_ your services (resolver functions in the context of GraphQL) run - with a global configuration. + +However, by placing the cache one level "lower," at the service level, you get the benefit of caching even when one service calls another internally, or when a service is called via another serverless function, and finer grained control of what you're caching. + +In our example above you could cache the GraphQL query for the most popular products. But if you had an internal admin function which was a different query, augmenting the popular products with additional information, you now need to cache that query as well. With service caching, that admin service function can call the same popular product function that's already cached and get the speed benefit automatically. + +::: + +### Clients + +As of this writing, Redwood ships with clients for the two most popular cache backends: [Memcached](https://memcached.org/) and [Redis](https://redis.io/). Service caching wraps each of these in an adapter, which makes it easy to add more clients in the future. If you're interested in adding an adapter for your favorite cache client, [open a issue](https://github.com/redwoodjs/redwood/issues) and tell us about it! Instructions for getting started with the code are [below](#creating-your-own-client). + +:::info + +If you need to access functionality in your cache client that the `cache()` and `cacheFindMany()` functions do not handle, you can always get access to the underlying raw client library and use it however you want: + +```javascript +import { cacheClient } from 'src/lib/cache' + +export const updatePost = async ({ id, input }) => { + const post = await db.post.update({ + data: input, + where: { id }, + }) + // highlight-next-line + await cacheClient.MSET(`post-${id}`, JSON.stringify(post), `blogpost-${id}`, JSON.stringify(post)) + + return post +} +``` + +::: + +### What Can Be Cached + +The service cache mechanism can only store strings, so whatever data you want to cache needs to be able to survive a round trip through `JSON.stringify()` and `JSON.parse()`. That means that if you have a real `Date` instance, you'd need to re-initialize it as a `Date`, because it's going to return from the cache as a string like `"2022-08-24T17:50:05.679Z"`. + +A function will not survive being serialized as a string so those are right out. + +Most Prisma datasets can be serialized just fine, as long as you're mindful of dates and things like BLOBs, which may contain binary data and could get mangled. + +We have an [outstanding issue](https://github.com/redwoodjs/redwood/issues/6282) which will add support for caching instances of custom classes and getting them back out of the cache as that instance, rather than a generic object which you would normally get after a `JSON.stringify`! + +### Expiration + +You can set a number of seconds after which to automatically expire the key. After this time the call to `cache()` will set the key/value in the store again. See the function descriptions below for usage examples. + +### Choosing a Good Key + +As the old saying goes "there are only two hard problems in computer science: cache, and naming things." The reason cache is included in this list is, funnily enough, many times because of naming something—the key for the cache. + +Consider a product that you want to cache. At first thought you may think "I'll use the name of the product as its key" and so your key is `led light strip`. One problem is that you must make absolutely sure that your product name is unique across your shop. This may not be a viable solution for your store: you could have two manufacturers with the same product name. + +Okay, let's use the product's database ID as the key: `41443`. It's definitely going to be unique now, but what if you later add a cache for users? Could a user record in the database have that same ID? Probably, so now you may think you're retrieving a cached user, but you'll get the product instead. + +What if we add a "type" into the cache key, so we know what type of thing we're caching: `product-41442`. Now we're getting somewhere. Users will have a cache key `user-41442` and the two won't clash. But what happens if you change some data about that product, like the description? Remember that we can only get an existing key/value, or create a key/value in the cache, we can't update an existing key. How we can encapsulate the "knowledge" that a product's data has changed into the cache key? + +One solution would be to put all of the data that we care about changing into the key, like: `product-41442-${description}`. The problem here is that keys can only be so long (in Memcached it's 250 bytes). Another option could be to hash the entire product object and use that as the key (this can encompass the `product` part of the key as well as the ID itself, since *any* data in the object being different will result in a new hash): + +```js +import { md5 } from "blueimp-md5" + +cache(md5(JSON.stringify(product)), () => { + // ... +}) +``` + +This works, but it's the nicest to look at in the code, and computing a hash isn't free (it's fast, but not 0 seconds). + +For this reason we always recommend that you add an `updatedAt` column to all of your models. This will automatically be set by Prisma to a timestamp whenever it updates that row in the database. This means we can count on this value being different whenever a record changes, regardless of what column actually changed. Now our key can look like `product-${id}-${updatedAt.getTime()}`. We use `getTime()` so that the timestamp is returned as a nice integer `1661464626032` rather than some string like `Thu Aug 25 2022 14:56:25 GMT-0700 (Pacific Daylight Time)`. + +:::info + +If you're using [Redwood Record](/docs/redwoodrecord) pretty soon you'll be able to cache a record by just passing the instance as the key, and it will automatically create the same key behind the scenes for you: + +```js +cache(product, () => { + // ... +}) +``` +::: + +One drawback to this key is in potentially responding to *too many* data changes, even ones we don't care about caching. Imagine that a product has a `views` field that tracks how many times it has been viewed in the browser. This number will be changing all the time, but if we don't display that count to the user then we're constantly re-creating the cache for the product even though no data the user will see is changing. There's no way to tell Prisma "set the `updatedAt` when the record changes, but not if the `views` column changes." This cache key is too variable. One solution would be to move the `views` column to another table with a `productId` pointing back to this record. Now the `product` is back to just containing data we care about caching. + +What if you want to expire a cache regardless of whether the data itself has changed? Maybe you make a UI change where you now show a product's SKU on the page where you didn't before. You weren't previously selecting the `sku` field out of the database, and so it hasn't been cached. But now that you're showing it you'll need to add it the list of fields to return from the service. One solution would be forcibly update all of the `updatedAt` fields in the database. But a) Prisma won't easily let you do this since it think it controls that column, and b) every product is going to appear to have been edited at the same time, when in fact nothing changed—you just needed to bust the cache. + +An easier solution to this problem would be to add some kind of version number to your cache key that you are in control of and can change whenever you like. Something like appending a `v1` to the key: `v1-product-${id}-${updatedAt}` + +And this key is our final form: a unique, but flexible key that allows us to expire the cache on demand (change the version) or automatically expire it when the record itself changes. + +:::info + +One more case: what if the underlying `Product` model itself changes, adding a new field, for example? Each product will now have new data, but no changes will occur to `updatedAt` as a result of adding this column. There are a couple things you could do here: + +* Increment the version on the key, if you have one: `v1` => `v2` +* "Touch" all of the Product records in a script, forcing them to have their `updatedAt` timestamp changed +* Incorporate a hash of all the keys of a `product` into the cache key + +How does that last one work? We get a list of all the keys and then apply a hashing algorithm like MD5 to get a string that's unique based on that list of database columns. Then if one is ever added or removed, the hash will change, which will change the key, which will bust the cache: + +```javascript +const product = db.product.findUnique({ where: { id } }) +const columns = Object.keys(product) // ['id', 'name', 'sku', ...] +const hash = md5(columns.join(',')) // "e4d7f1b4ed2e42d15898f4b27b019da4" + +cache(`v1-product-${hash}-${id}-${updatedAt}`, () => { + // ... +}) +``` + +Note that this has the side effect of having to select at least one record from the database so that you know what the column names are, but presumably this is much less overhead that whatever computation you're trying to avoid by caching: the slow work that happens inside of the function passed to `cache()` will still be avoided on subsequent calls (and selecting a single record from the database by an indexed column like `id` should be very fast). + +::: + +#### Expiration-based Keys + +You can skirt these issues about what data is changing and what to include or not include in the key by just setting an expiration time on this cache entry. You may decide that if a change is made to a product, it's okay if users don't see the change for, say, an hour. In this case just set the expiration time to 3600 seconds and it will automatically be re-built, whether something changed in the record or not: + +```js +cache(`product-${id}`, () => { + // ... +}, { expires: 3600 }) +``` + +This leads to your product cache being rebuilt every hour, even though you haven't made any changes that are of consequence to the user. But that may be we worth the tradeoff versus rebuilding the cache when *no* useful data has changed (like the `views` column being updated). + +#### Global Cache Key Prefix + +Just like the `v1` we added to the `product` cache key above, you can globally prefix a string to *all* of your cache keys: + +```js title="api/src/lib/cache.js" +export const { cache, cacheFindMany } = createCache(client, { + logger, + timeout: 500, + // highlight-next-line + prefix: 'alpha', +}) +``` + +This would turn a key like `posts-123` into `alpha-posts-123` before giving it to the cache client. If you prefixed with `v1` in the individual cache key, you'd now have `alpha-v1-posts-123`. + +This gives you a nuclear option to invalidate all cache keys globally in your app. Let's say you launched a new redesign, or other visual change to your site where you may be showing more or less data from your GraphQL queries. If your data was purely based on the DB data (like `id` and `updatedAt`) there would be no way to refresh all of these keys without changing each and every cache key manually in every service, or by manually updating *all* `updatedAt` timestamps in the database. This gives you a fallback to refreshing all data at once. + +#### Caching User-specific Data + +Sometimes you want to cache data unique to a user. Imagine a Recommended Products feature on our store: it should recommend products based on the user's previous purchase history, views, etc. In this case we'd way to include something unique about the user itself in the key: + +```js +cache(`recommended-${context.currentUser.id}`, () => { + // ... +}) +``` + +If every page the user visits has a different list of recommended products for every page (meaning that the full computation will need to run at least once, before it's cached) then creating this cache may not be worth it: how often does the user revisit the same product page more than once? Conversely, if you show the *same* recommended products on every page then this cache would definitely improve the user's experience. + +The *key* to writing a good key (!) is to think carefully about the circumstances in which the key needs to expire, and include those bits of information into the key string/array. Adding caching can lead to weird bugs you don't expect, but in these cases the root cause will usually be the cache key not containing enough bits of information to expire it correctly. When in doubt, restart the app with the cache server (memcached or redis) disabled and see if the same behavior is still present. If not, the cache key is the culprit! + +### Setup + +We have a setup command which creates a file `api/src/lib/cache.js` and include basic initialization for Memcached or Redis: + +```bash +yarn rw setup cache memcached +yarn rw setup cache redis +``` + +This generates the following (memcached example shown): + +```js title="api/src/lib/cache.js" +import { createCache, MemcachedClient } from '@redwoodjs/api/cache' + +import { logger } from './logger' + +const memJsFormattedLogger = { + log: (msg) => logger.error(msg), +} + +let client +try { + client = new MemcachedClient('localhost:11211', { + logger: memJsFormattedLogger, + }) +} catch (e) { + console.error(`Could not connect to cache: ${e.message}`) +} + +export const { cache, cacheFindMany } = createCache(client, { + logger, + timeout: 500, +}) +``` + +When the time comes, you can replace the hardcoded `localhost:11211` with an ENV var that can be set per-environment. + +#### Logging + +You'll see two different instances of passing `logger` as arguments here. The first: + +```js +client = new MemcachedClient(process.env.CACHE_SERVER, { + logger: memJsFormattedLogger, +}) +``` + +passes it to the `MemcachedClient` initializer, which passes it on to the MemJS library underneath so that it (MemJS) can report errors. `memJsFormattedLogger` just wraps the Redwood logger call in another function, which is the format expected by the MemJS library. + +The second usage of the logger argument: + +```js +export const { cache, cacheFindMany } = createCache(client, { + logger, + timeout: 500 +}) +``` + +is passing it to Redwood's own service cache code, so that it can log cache hits, misses, or errors. + +#### Options + +There are several options you can pass to the `createCache()` call: + +* `logger`: an instance of the Redwood logger. Defaults to `null`, but if you want any feedback about what the cache is doing, make sure to set this! +* `timeout`: how long to wait for the cache server to respond during a get/set before giving up and just executing the function containing what you want to cache and returning the result directly. Defaults to `500` milliseconds. +* `prefix`: a global cache key prefix. Defaults to `null`. +* `fields`: an object that maps the model field names for the `id` and `updatedAt` fields if your database has another name for them. For example: `fields: { id: 'post_id', updatedAt: 'updated_at' }`. Even if only one of your names is different, you need to provide both properties to this option. Defaults to `{ id: 'id', updatedAt: 'updatedAt' }` + +### `cache()` + +Use this function when you want to cache some data, optionally including a number of seconds before it expires: + +```js +// cache forever +const post = ({ id }) => { + return cache(`posts`, () => { + return db.post.findMany() + }) +} + +// cache for 1 hour +const post = ({ id }) => { + return cache(`posts`, () => { + return db.post.findMany() + }, { expires: 3600 }) +} +``` + +Note that a key can be a string or an array: + +```js +const post = ({ id }) => { + return cache(`posts-${id}-${updatedAt.getTime()}`, () => { + return db.post.findMany() + }) +} + +// or + +const post = ({ id }) => { + return cache(['posts', id, updatedAt.getTime()], () => { + return db.post.findMany() + }) +} +``` + +:::info + +`cache()` returns a Promise so you'll want to `await` it if you need the data for further processing in your service. If you're only using your service as a GraphQL resolver then you can just return `cache()` directly. + +::: + +### `cacheFindMany()` + +Use this function if you want to cache the results of a `findMany()` call from Prisma, but only until one or more of the records in the set is updated. This is sort of a best of both worlds cache scenario where you can cache as much data as possible, but also expire and re-cache as soon as any piece of it changes, without going through every record manually to see if it's changed: whenever *any* record changes the cache will be discarded. + +This function will always execute a `findFirst()` query to get the latest record that's changed, then use its `id` and `updatedAt` timestamp as the cache key for the full query. This means you'll always incur the overhead of a single DB call, but not the bigger `findMany()` unless something has changed. Note you still need to include a cache key prefix: + +```js +const post = ({ id }) => { + return cacheFindMany(`users`, db.user) +} +``` + +The above is the simplest usage example. If you need to pass a `where`, or any other object that `findMany()` accepts, include a `conditions` key in an object as the third argument: + +```js +const post = ({ id }) => { + return cacheFindMany(`users`, db.user, { + conditions: { where: { roles: 'admin' } } + }) +} +``` + +This is functionally equivalent to the following: + +```js +const latest = await db.user.findFirst({ + where: { roles: 'admin' } }, + orderBy: { updatedAt: 'desc' }, + select: { id: true, updatedAt: true } +}) + +return cache(`posts-${latest.id}-${latest.updatedAt.getTime()}`, () => { + return db.post.findMany({ where: { roles: 'admin' } }) +}) +``` + +If you also want to pass an `expires` option, do it in the same object as `conditions`: + +```js +const post = ({ id }) => { + return cacheFindMany( + `users`, db.user, { + conditions: { where: { roles: 'admin' } }, + expires: 86400 + } + ) +} +``` + +:::info + +`cacheFindMany()` returns a Promise so you'll want to `await` it if you need the data for further processing in your service. If you're only using your service as a GraphQL resolver than you can just return the Promise. + +::: + +### `deleteCacheKey()` + +There may be instances where you want to explicitly remove something from the cache so that it gets re-created with the same cache key. A good example is caching a single user, using only their `id` as the cache key. By default, the cache would never bust because a user's `id` is not going to change, no matter how many other fields on user are updated. With `deleteCacheKey()` you can choose to delete the key, for example, when the `updateUser()` service is called. The next time `user()` is called, it will be re-cached with the same key, but it will now contain whatever data was updated. + +```javascript +import { cache, deleteCacheKey } from 'src/lib/cache' + +const user = ({ id }) => { + return cache(`user-${id}`, () => { + return db.user.findUnique({ where: { id } }) + }) +}) + +const updateUser = async ({ id, input }) => { + await deleteCacheKey(`user-${id}`) + return db.user.update({ where: { id }, data: { input } }) +}) +``` + +:::warning + +When explicitly deleting cache keys like this you could find yourself going down a rabbit hole. What if there is another service somewhere that also updates user? Or another service that updates an organization, as well as all of its underlying child users at the same time? You'll need to be sure to call `deleteCacheKey()` in these places as well. As a general guideline, it's better to come up with a cache key that encapsulates any triggers for when the data has changed (like the `updatedAt` timestamp, which will change no matter who updates the user, anywhere in your codebase). + +Scenarios like this are what people are talking about when they say that caching is hard! + +::: + + +### Testing what you cache +We wouldn't just give you all of these caching APIs and not show you how to test it right? You'll find all the details in the [Caching section in the testing doc](testing.md#testing-caching). + +### Creating Your Own Client + +If Memcached or Redis don't serve your needs, you can create your own client adapter. In the Redwood codebase take a look at `packages/api/src/cache/clients` as a reference for writing your own. The interface is extremely simple: + +* Extend from the `BaseClient` class. +* A constructor that takes whatever arguments you want, passing them through to the client's initialization code. +* A `get()` function that accepts a `key` argument and returns the data from the cache if found, otherwise `null`. Note that in the Memcached and Redis clients the value returned is first run through `JSON.parse()` but if your cache client supports native JS objects then you wouldn't need to do this. +* A `set()` function that accepts a string `key`, the `value` to be cached, and an optional `options` object containing at least an `expires` key. Note that `value` can be a real JavaScript objects at this point, but in Memcached and Redis the value is run through `JSON.stringify()` before being sent to the client library. You may or may not need to do the same thing, depending on what your cache client supports. diff --git a/docs/versioned_docs/version-7.0/storybook.md b/docs/versioned_docs/version-7.0/storybook.md new file mode 100644 index 000000000000..0bfc41bfd573 --- /dev/null +++ b/docs/versioned_docs/version-7.0/storybook.md @@ -0,0 +1,85 @@ +--- +description: A component-driven development workflow +--- + +# Storybook + +Storybook enables a kind of frontend-first, component-driven development workflow that we've always wanted. +By developing your UI components in isolation, you get to focus exclusively on your UI's needs, +saving you from getting too caught up in the details of your API too early. + +Storybook also makes debugging a lot easier. +You don't have to start the dev server, login as a user, tab through dropdowns, and click buttons just for that one bug to show up. +Or render a whole page and make six GraphQL calls just to change the color of a modal. +You can set it all up as a story, tweak it there as you see fit, and even test it for good measure. + +## Getting Started with Storybook + +You can start Storybook with `yarn rw storybook`: + +``` +yarn rw storybook +``` + +If this is your first time running Storybook, the Redwood CLI will install it. +From then on, you can run it straightaway. +Once Storybook is installed, it'll spin up on port `7910`. + +## Configuring Storybook + +You only have to configure Storybook if you want to extend Redwood's default configuration, which handles things like how to find stories, configuring Webpack, starting Mock Service Worker, etc. + +There are two files you can add to your project's `web/config` directory to configure Storybook: `storybook.config.js` and `storybook.preview.js`. Note that you may have to create the `web/config` directory: + +``` +cd redwood-project/web +mkdir config +touch config/storybook.config.js config/storybook.preview.js +``` + +`storybook.config.js` configures Storybook's server and `storybook.preview.js` configures the way stories render. +All of these files get merged with Redwood's default configurations, which you can find in the `@redwoodjs/testing` package: + +- [main.js](https://github.com/redwoodjs/redwood/blob/main/packages/testing/config/storybook/main.js)—gets merged with your project's `storybook.config.js` +- [preview.js](https://github.com/redwoodjs/redwood/blob/main/packages/testing/config/storybook/preview.js)—gets merged with your project's `storybook.preview.js` + +### Configuring the Server with `storybook.config.js` + +:::tip You may have to restart Storybook + +Since `storybook.config.js` configures Storybook's server, changes you make may require restarting Storybook. + +::: + +While you can configure [any of Storybook server's available options](https://storybook.js.org/docs/react/configure/overview#configure-your-storybook-project) in `storybook.config.js`, you'll probably only want to configure `addons`: + +```javascript title="web/config/storybook.config.js" +module.exports = { + /** + * This line adds all of Storybook's essential addons. + * + * @see {@link https://storybook.js.org/addons/tag/essentials} + */ + addons: ['@storybook/addon-essentials'], +} +``` + +### Configuring Rendering with `storybook.preview.js` + +Sometimes you want to change the way all your stories render. +It'd be mixing concerns to add that logic to your actual components, and it'd get old fast to add it to every single `.stories.{jsx,tsx}` file. +Instead decorate all your stories with any custom rendering logic you want in `storybook.preview.js`. + +For example, something you may want to do is add some margin to all your stories so that they're not glued to the top left corner: + +```jsx title="web/config/storybook.preview.js" +export const decorators = [ + (Story) => ( + <div style={{ margin: '48px' }}> + <Story /> + </div> + ), +] +``` + +For more, see the Storybook docs on [configuring how stories render](https://storybook.js.org/docs/react/configure/overview#configure-story-rendering). diff --git a/docs/versioned_docs/version-7.0/studio.md b/docs/versioned_docs/version-7.0/studio.md new file mode 100644 index 000000000000..09694100cc93 --- /dev/null +++ b/docs/versioned_docs/version-7.0/studio.md @@ -0,0 +1,125 @@ +--- +description: RedwoodJS Studio is a package used during development to gain runtime insights into a project. +--- + +# Studio + +RedwoodJS Studio is a package used during development to gain runtime insights into a project. + +## Motivation + +Redwood provides tools that lets developers "get to work on what makes your application special, instead of wasting cycles choosing and re-choosing various technologies and configurations."[1](https://github.com/redwoodjs/redwood/blob/main/README.md). + +Much happens while your app processes a request: Invoke a function; handle a GraphQL request; resolve the request with a service; build and execute a SQL statement; connect to the database; handle the query response; further resolve the response so in contains all the data needed; return the result ... and more. + +While [logging](https://redwoodjs.com/docs/logger) can show you some of these steps, there is no easy way to see how they relate to each other, compare, or break down individual timings. Observability needed to debug, iterate, try out, and refactor your code is lacking. + +We hope Studio helps solve this problem with an observability tool that combines: + +* Tracing with OpenTelemetry (service and GraphQL) + +* SQL statement logging + +* general metrics (how many invocations) + +* GraphiQL playground with impersonated authentication + +With Studio, it is easier to: + +* identify slow running SQL statements without reviewing captured log files + +* identify and improve N+1 queries by comparing before and after traces + +* impersonate the user authentication headers in GraphiQL + +Redwood Studio is a command line tool which offers a web UI aimed at providing insights into your application via OpenTelemetry ingestion and other development conveniences like auth-impersonation within GraphiQL. + +### Demo +<div class="video-container"> + <iframe width="560" height="315" src="https://www.youtube.com/embed/zAViN-J-iFs?si=YywnOvMT1Fy3hKzd" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> +</div> + +### Setup +There is no setup needed to begin using the studio; simply execute the following command to start the studio at `localhost:4318`: +```bash +yarn rw studio +``` +The first time you run this command it will likely install the studio package which may take a small amount of time. + +#### OpenTelemetry +If you want studio to pick up telemetry from you app automatically please ensure you've setup opentelemetry. A guide on this can be found [here](https://community.redwoodjs.com/t/opentelemetry-support-experimental/4772) + +### Features + +#### GraphiQL Auth Impersonation + +You need to configure Studio using settings inside `redwood.toml` for auth +impersonation to work. See the sections below for detailed information. + +##### DbAuth + +Requires a `SESSION_SECRET` environment variable for cookie encryption. + +`redwood.toml` example: + +```toml +[studio.graphiql.authImpersonation] + authProvider = "dbAuth" + email = "user@example.com" + userId = "1" +``` + +##### Netlify + +Since Netlify does not expose the JWT secret used to sign the token in +production, impersonation requires a `jwtSecret` to encode and decode the auth +token. + +`redwood.toml` example: + +```toml +[studio.graphiql.authImpersonation] + authProvider = "netlify" + email = "user@example.com" + userId = "1" + jwtSecret = "some-secret-setting" +``` + +##### Supabase + +Requires a `SUPABASE_JWT_SECRET` environment variable for JWT signing. + +`redwood.toml` example: + +```toml +[studio.graphiql.authImpersonation] + authProvider = "supabase" + email = "user@example.com" + userId = "1" +``` + +### Settings + +All settings for Studio are located in `redwood.toml`, which you can find at +the root of your Redwood project. + +* `[studio.graphiql.authImpersonation].*` – Used to gain access to GraphQL + endpoints that require authentication. See section above on auth + impersonation for more details. +* `[studio].basePort` – Studio's web front-end will run on this port (default: + 4318). It is also used to calculate the port for the mailer integration and + other things. Please choose a port that is not already in use, and that has a + few more free ports available next to it. + +### Database File +Studio stores the ingested telemetry to `studio/prisma.db` within the +`.redwood` folder. You should not need to touch this file other than if you +wish to delete it to erase any existing telemetry data. + +## Availability +Along the release of Redwood v7, Studio has been rewritten and is available as +a stable version. Just run `yarn rw studio` to start it! Prior to RW v7 Studio +was available as an experimental feature. If you're still not using the stable +version of RW v7, see this forum topic for information on the old experimental +version of Studio +https://community.redwoodjs.com/t/redwood-studio-experimental/4771 diff --git a/docs/versioned_docs/version-7.0/testing.md b/docs/versioned_docs/version-7.0/testing.md new file mode 100644 index 000000000000..46304dbaa622 --- /dev/null +++ b/docs/versioned_docs/version-7.0/testing.md @@ -0,0 +1,2095 @@ +--- +description: A comprehensive reference for testing your app +--- + +# Testing + +Testing. For some it's an essential part of their development workflow. For others it's something they know they *should* do, but for whatever reason it hasn't struck their fancy yet. For others still it's something they ignore completely, hoping the whole concept will go away. But tests are here to stay, and maybe Redwood can change some opinions about testing being awesome and fun. + +## Introduction to Testing + +If you're already familiar with the ins and outs of testing and just want to know how to do it in Redwood, feel free to [skip ahead](#redwood-and-testing). Or, keep reading for a refresher. In the following section, we'll build a simple test runner from scratch to help clarify the concepts of testing in our minds. + +## Building a Test Runner + +The idea of testing is pretty simple: for each "unit" of code you write, you write additional code that exercises that unit and makes sure it works as expected. What's a "unit" of code? That's for you to decide: it could be an entire class, a single function, or even a single line! In general, the smaller the unit, the better. Your tests will stay fast and focused on just one thing, which makes them easy to update when you refactor. The important thing is that you start *somewhere* and codify your code's functionality in a repeatable, verifiable way. + +Let's say we write a function that adds two numbers together: + +```jsx +const add = (a, b) => { + return a + b +} +``` + +You test this code by writing another piece of code (which usually lives in a separate file and can be run in isolation), just including the functionality from the real codebase that you need for the test to run. For our examples here we'll put the code and its test side-by-side so that everything can be run at once. Our first test will call the `add()` function and make sure that it does indeed add two numbers together: + +```jsx {5-9} +const add = (a, b) => { + return a + b +} + +if (add(1, 1) === 2) { + console.log('pass') +} else { + console.error('fail') +} +``` + +Pretty simple, right? The secret is that this simple check *is the basis of all testing*. Yes, that's it. So no matter how convoluted and theoretical the discussions on testing get, just remember that at the end of the day you're testing whether a condition is true or false. + +### Running a Test + +You can [run that code with Node](https://nodejs.dev/learn/run-nodejs-scripts-from-the-command-line) or just copy/paste it into the [web console of a browser](https://developers.google.com/web/tools/chrome-devtools/console/javascript). You can also run it in a dedicated web development environment like JSFiddle. Switch to the **Javascript** tab below to see the code: + +<iframe width="100%" height="300" src="//jsfiddle.net/cannikin/mgy4ja1q/2/embedded/result,js/dark/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0" class="border"></iframe> + +> Note that you'll see `document.write()` in the JSFiddle examples instead of `console.log`; this is just so that you can actually see something in the **Result** tab, which is HTML output. + +You should see "pass" written to the output. To verify that our test is working as expected, try changing the `+` in the `add()` function to a `-` (effectively turning it into a `subtract()` function) and run the test again. Now you should see "fail". + +### Terminology + +Let's get to some terminology: + +* The entire code block that checks the functionality of `add()` is what's considered a single **test** +* The specific check that `add(1, 1) === 2` is known as an **assertion** +* The `add()` function itself is the **subject** of the test, or the code that is **under test** +* The value you expect to get (in our example, that's the number `2`) is sometimes called the **expected value** +* The value you actually get (whatever the output of `add(1, 1)` is) is sometimes called the **actual** or **received value** +* The file that contains the test is a **test file** +* Multiple test files, all run together, is known as a **test suite** +* You'll generally run your test files and suites with another piece of software. In Redwood that's Jest, and it's known as a **test runner** +* The amount of code you have that is exercised by tests is referred to as **coverage** and is usually reported as a percentage. If every single line of code is touched as a result of running your test suite then you have 100% coverage! + +This is the basic idea behind all the tests you'll write: when you add code, you'll add another piece of code that uses the first and verifies that the result is what you expect. + +Tests can also help drive new development. For example, what happens to our `add()` function if you leave out one of the arguments? We can drive these changes by writing a test of what we *want* to happen, and then modify the code that's being tested (the subject) to make it satisfy the assertion(s). + +### Expecting Errors + +So, what does happen if we leave off an argument when calling `add()`? Well, what do we *want* to happen? We'll answer that question by writing a test for what we expect. For this example let's have it throw an error. We'll write the test first that expects the error: + +```jsx +try { + add(1) +} catch (e) { + if (e === 'add() requires two arguments') { + console.log('pass') + } else { + console.error('fail') + } +} +``` + +This is interesting because we actually *expect* an error to be thrown, but we don't want that error to stop the test suite in it's tracks—we want the error to be raised, we just want to make sure it's exactly what we expect it to be! So we'll surround the code that's going to error in a try/catch block and inspect the error message. If it's what we want, then the test actually passes. + +> Remember: we're testing for what we *want* to happen. Usually you think of errors as being "bad" but in this case we *want* the code to throw an error, so if it does, that's actually good! Raising an error passes the test, not raising the error (or raising the wrong error) is a failure. + +Run this test and what happens? (If you previously made a change to `add()` to see the test fail, change it back now): + +<iframe width="100%" height="300" src="//jsfiddle.net/cannikin/mgy4ja1q/6/embedded/result,js/dark/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0" class="border"></iframe> + +Where did *that* come from? Well, our subject `add()` didn't raise any errors (Javascript doesn't care about the number of arguments passed to a function) and so it tried to add `1` to `undefined`, and that's Not A Number. We didn't think about that! Testing is already helping us catch edge cases. + +To respond properly to this case we'll make one slight modification: add another "fail" log message if the code somehow gets past the call to `add(1)` *without* throwing an error: + +```jsx {3,8} +try { + add(1) + console.error('fail: no error thrown') +} catch (e) { + if (e === 'add() requires two arguments') { + console.log('pass') + } else { + console.error('fail: wrong error') + } +} +``` + +We also added a little more information to the "fail" messages so we know which one we encountered. Try running that code again and you should see "fail: no error thrown" in the console. + +<iframe width="100%" height="300" src="//jsfiddle.net/cannikin/mgy4ja1q/7/embedded/result,js/dark/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0" class="border"></iframe> + +Now we'll actually update `add()` to behave as we expect: by throwing an error if less than two arguments are passed. + +```jsx +const add = (...nums) => { + if (nums.length !== 2) { + throw 'add() requires two arguments' + } + return nums[0] + nums[1] +} +``` + +Javascript doesn't have a simple way to check how many arguments were passed to a function, so we've converted the incoming arguments to an array via [spread syntax](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax) and then we check the length of that instead. + +<iframe width="100%" height="300" src="//jsfiddle.net/cannikin/mgy4ja1q/10/embedded/result,js/dark/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0" class="border"></iframe> + +We've covered passing too few arguments, what if we pass too many? We'll leave writing that test as homework, but you should have everything you need, and you won't even need any changes to the `add()` function to make it work! + +### Our Test Runner Compared to Jest + +Our tests are a little verbose (10 lines of code to test that the right number of arguments were passed). Luckily, the test runner that Redwood uses, Jest, provides a simpler syntax for the same assertions. Here's the complete test file, but using Jest's provided helpers: + +```jsx +describe('add()', () => { + it('adds two numbers', () => { + expect(add(1, 1)).toEqual(2) + }) + + it('throws an error for too few arguments', () => { + expect(() => add(1)).toThrow('add requires 2 arguments') + }) +}) +``` + +Jest lets us be very clear about our subject in the first argument to the `describe()` function, letting us know what we're testing. Note that it's just a string and doesn't have to be exactly the same as the function/class you're testing (but usually is for clarity). + +Likewise, each test is given a descriptive name as the first argument to the `it()` functions ("it" being the subject under test). Functions like `expect()` and `toEqual()` make it clear what values we expect to receive when running the test suite. If the expectation fails, Jest will indicate that in the output letting us know the name of the test that failed and what went wrong (the expected and actual values didn't match, or an error was thrown that we didn't expect). + +Jest also has a nicer output than our cobbled-together test runner using `console.log`: + +![image](https://user-images.githubusercontent.com/300/105783200-c6974680-5f2a-11eb-98af-d1884ecf2f99.png) + +Are you convinced? Let's keep going and see what Redwood brings to the table. + +## Redwood and Testing + +Redwood relies on several packages to do the heavy lifting, but many are wrapped in Redwood's own functionality which makes them even better suited to their individual jobs: + +* [Jest](https://jestjs.io/) +* [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) +* [Mock Service Worker](https://mswjs.io/) or **msw** for short. + +Redwood Generators get your test suite bootstrapped. Redwood also includes [Storybook](https://storybook.js.org/), which isn't technically a test suite, but can help in other ways. + +Let's explore each one and how they're integrated with Redwood. + +### Jest + +[Jest](https://jestjs.io/) is Redwood's test runner. By default, starting Jest via `yarn rw test` will start a watch process that monitors your files for changes and re-runs the test(s) that are affected by that changed file (either the test itself, or the subject under test). + +### React Testing Library + +[React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) is an extension of [DOM Testing Library](https://testing-library.com/docs/dom-testing-library/intro), adding functionality specifically for React. React Testing Library lets us render a single component in isolation and test that expected text is present or a certain HTML structure has been built. + +### Mock Service Worker + +Among other things, Mock Service Worker (msw) lets you simulate the response from API calls. Where this comes into play with Redwood is how the web-side constantly calls to the api-side using GraphQL: rather than make actual GraphQL calls, which would slow down the test suite and put a bunch of unrelated code under test, Redwood uses MSW to intercept GraphQL calls and return a canned response, which you include in your test. + +### Storybook + +Storybook itself doesn't appear to be related to testing at all—it's for building and styling components in isolation from your main application—but it can serve as a sanity check for an overlooked part of testing: the user interface. Your tests will only be as good as you write them, and testing things like the alignment of text on the page, the inclusion of images, or animation can be very difficult without investing huge amounts of time and effort. These tests are also very brittle since, depending on how they're written, they can break without any code changes at all! Imagine an integration with a CMS that allows a marketing person to make text/style changes. These changes will probably not be covered by your test suite, but could make your site unusable depending on how bad they are. + +Storybook can provide a quick way to inspect all visual aspects of your site without the tried-and-true method of having a QA person log in and exercise every possible function. Unfortunately, checking those UI elements is not something that Storybook can automate for you, and so can't be part of a continuous integration system. But it makes it *possible* to do so, even if it currently requires a human touch. + +### Redwood Generators + +Redwood's generators will include test files for basic functionality automatically with any Components, Pages, Cells, or Services you generate. These will test very basic functionality, but they're a solid foundation and will not automatically break as soon as you start building out custom features. + +## Test Commands + +You can use a single command to run your entire suite : + +```bash +yarn rw test +``` + +This will start Jest in "watch" mode which will continually run and monitor the file system for changes. If you change a test or the component that's being tested, Jest will re-run any associated test file. This is handy when you're spending the afternoon writing tests and always want to verify the code you're adding without swapping back and forth to a terminal and pressing `↑` `Enter` to run the last command again. + +To start the process without watching, add the `--no-watch` flag: + +```bash +yarn rw test --no-watch +``` + +This one is handy before committing some changes to be sure you didn't inadvertently break something you didn't expect, or before a deploy to production. + + +### Filtering what tests to run + +You can run only the web- or api-side test suites by including the side as another argument to the command: + +```bash +yarn rw test web +yarn rw test api +``` + +Let's say you have a test file called `CommentForm.test.js`. In order to only watch and run tests in this file you can run + +```bash +yarn rw test CommentForm +``` + +If you need to be more specific, you can combine side filters, with other filters + +```bash +yarn rw test api Comment +``` +which will only run test specs matching "Comment" in the API side + +## Testing Components + +Let's start with the things you're probably most familiar with if you've done any React work (with or without Redwood): components. The simplest test for a component would be matching against the exact HTML that's rendered by React (this doesn't actually work so don't bother trying): + +```jsx title="web/src/components/Article/Article.js" +const Article = ({ article }) => { + return <article>{ article.title }</article> +} + +// web/src/components/Article/Article.test.js + +import { render } from '@redwoodjs/testing/web' +import Article from 'src/components/Article' + +describe('Article', () => { + it('renders an article', () => { + expect(render(<Article article={ title: 'Foobar' } />)) + .toEqual('<article>Foobar</article>') + }) +}) +``` + +This test (if it worked) would prove that you are indeed rendering an article. But it's also extremely brittle: any change to the component, even adding a `className` attribute for styling, will cause the test to break. That's not ideal, especially when you're just starting out building your components and will constantly be making changes as you improve them. + +:::info Why do we keep saying this test won't work? +Because as far as we can tell there's no easy way to simply render to a string. `render` actually returns an object that has several functions for testing different parts of the output. Those are what we'll look into in the next section. + +Note that Redwood's `render` function is based on React Testing Library's. The only difference is that Redwood's wraps everything with mock providers for the various providers in Redwood, such as auth, the GraphQL client, the router, etc. + +If you were to use React Testing Library's `render` function, you'd need to provide your own wrapper function. In this case you probably want to compose the mock providers from `@redwoodjs/testing/web`: + +```jsx +import { render, MockProviders } from '@redwoodjs/testing/web' + +// ... + +render(<Article article={ title: 'Foobar' } />, { + wrapper: ({ children }) => ( + <MockProviders> + <MyCustomProvider>{children}</MyCustomProvider> + </MockProviders> + ) +}) +``` +::: + +### Mocking useLocation + +To mock `useLocation` in your component tests, wrap the component with `LocationProvider`: + +```jsx +import { LocationProvider } from '@redwoodjs/router' + +render( + <LocationProvider location={{ pathname: '', search: '?cancelled=true' }}> + <Component /> + </LocationProvider> +) +``` + +### Mocking useParams + +To mock `useParams` in your component tests, wrap the component with `ParamsProvider`: + +```jsx +import { ParamsProvider } from '@redwoodjs/router'; + +render( + <ParamsProvider allParams={{ param1: 'val1', param2: 'val2' }}> + <Component /> + </ParamsProvider> +) +``` + +The `allParams` argument accepts an object that will provide parameters as you expect them from the query parameters of a URL string. In the above example, we are assuming the URL looks like `/?param1=val1¶m2=val2`. + +### Queries + +In most cases you will want to exclude the design elements and structure of your components from your test. Then you're free to redesign the component all you want without also having to make the same changes to your test suite. Let's look at some of the functions that React Testing Library provides (they call them "[queries](https://testing-library.com/docs/queries/about/)") that let you check for *parts* of the rendered component, rather than a full string match. + +#### getByText() + +In our **<Article>** component it seems like we really just want to test that the title of the product is rendered. *How* and *what it looks like* aren't really a concern for this test. Let's update the test to just check for the presence of the title itself: + +```jsx {3,7-9} title="web/src/components/Article/Article.test.js" +import { render, screen } from '@redwoodjs/testing/web' + +describe('Article', () => { + it('renders an article', () => { + render(<Article article={ title: 'Foobar' } />) + + expect(screen.getByText('Foobar')).toBeInTheDocument() + }) +}) +``` + +Note the additional `screen` import. This is a convenience helper from React Testing Library that automatically puts you in the `document.body` context before any of the following checks. + +We can use `getByText()` to find text content anywhere in the rendered DOM nodes. `toBeInTheDocument()` is a [matcher](https://jestjs.io/docs/en/expect) added to Jest by React Testing Library that returns true if the `getByText()` query finds the given text in the document. + +So, the above test in plain English says "if there is any DOM node containing the text 'Foobar' anywhere in the document, return true." + +#### queryByText() + +Why not use `getByText()` for everything? Because it will raise an error if the text is *not* found in the document. That means if you want to explicitly test that some text is *not* present, you can't—you'll always get an error. + +Consider an update to our **<Article>** component: + +```jsx title="web/src/components/Article/Article.js" +import { Link, routes } from '@redwoodjs/router' + +const Article = ({ article, summary }) => { + return ( + <article> + <h1>{article.title}</h1> + <div> + {summary ? article.body.substring(0, 100) + '...' : article.body} + {summary && <Link to={routes.article(article.id)}>Read more</Link>} + </div> + </article> + ) +} + +export default Article +``` + +If we're only displaying the summary of an article then we'll only show the first 100 characters with an ellipsis on the end ("...") and include a link to "Read more" to see the full article. A reasonable test for this component would be that when the `summary` prop is `true` then the "Read more" text should be present. If `summary` is `false` then it should *not* be present. That's where `queryByText()` comes in (relevant test lines are highlighted): + +```jsx {22} title="web/src/components/Article/Article.test.js" +import { render, screen } from '@redwoodjs/testing/web' +import Article from 'src/components/Article' + +describe('Article', () => { + const article = { id: 1, title: 'Foobar', body: 'Lorem ipsum...' } + + it('renders the title of an article', () => { + render(<Article article={article} />) + + expect(screen.getByText('Foobar')).toBeInTheDocument() + }) + + it('renders a summary version', () => { + render(<Article article={article} summary={true} />) + + expect(screen.getByText('Read more')).toBeInTheDocument() + }) + + it('renders a full version', () => { + render(<Article article={article} summary={false} />) + + expect(screen.queryByText('Read more')).not.toBeInTheDocument() + }) +}) +``` + +#### getByRole() / queryByRole() + +`getByRole()` allows you to look up elements by their "role", which is an ARIA element that assists in accessibility features. Many HTML elements have a [default role](https://www.w3.org/TR/html-aria/#docconformance) (including `<button>` and `<a>`) but you can also define one yourself with a `role` attribute on an element. + +Sometimes it may not be enough to say "this text must be on the page." You may want to test that an actual *link* is present on the page. Maybe you have a list of users' names and each name should be a link to a detail page. We could test that like so: + +```jsx +it('renders a link with a name', () => { + render(<List data={[{ name: 'Rob' }, { name: 'Tom' }]} />) + + expect(screen.getByRole('link', { name: 'Rob' })).toBeInTheDocument() + expect(screen.getByRole('link', { name: 'Tom' })).toBeInTheDocument() +}) +``` + +`getByRole()` expects the role (`<a>` elements have a default role of `link`) and then an object with options, one of which is `name` which refers to the text content inside the element. Check out [the docs for the `*ByRole` queries](https://testing-library.com/docs/queries/byrole). + +If we wanted to eliminate some duplication (and make it easy to expand or change the names in the future): + +```jsx +it('renders a link with a name', () => { + const data = [{ name: 'Rob' }, { name: 'Tom' }] + + render(<List data={data} />) + + data.forEach((datum) => { + expect(screen.getByRole('link', { name: datum.name })).toBeInTheDocument() + }) +}) +``` + +But what if we wanted to check the `href` of the link itself to be sure it's correct? In that case we can capture the `screen.getByRole()` return and run expectations on that as well (the `forEach()` loop has been removed here for simplicity): + +```jsx {1,6-8} +import { routes } from '@redwoodjs/router' + +it('renders a link with a name', () => { + render(<List data={[{ id: 1, name: 'Rob' }]} />) + + const element = screen.getByRole('link', { name: data.name }) + expect(element).toBeInTheDocument() + expect(element).toHaveAttribute('href', routes.user({ id: data.id })) +}) +``` + +> **Why so many empty lines in the middle of the test?** +> +> You may have noticed a pattern of steps begin to emerge in your tests: +> +> 1. Set variables or otherwise prepare some code +> 2. `render` or execute the function under test +> 3. `expect`s to verify output +> +> Most tests will contain at least the last two, but sometimes all three of these parts, and in some communities it's become standard to include a newline between each "section". Remember the acronym SEA: setup, execute, assert. + +#### Jest Expect: Type Considerations + +Redwood uses [prisma](https://www.prisma.io/) as an ORM for connecting to different databases like PostgreSQL, MySQL, and many more. The database models are defined in the `schema.prisma` file. Prisma schema supports [`model` field scaler types](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#model-field-scalar-types) which is used to define the data types for the models properties. + +Due to this, there are some exceptions that can occur while testing your API and UI components. + +#### Floats and Decimals +Prisma recommends using `Decimal` instead of `Float` because of accuracy in precision. Float is inaccurate in the number of digits after decimal whereas Prisma returns a string for Decimal value which preserves all the digits after the decimal point. + +e.g., using `Float` type +```jsx {4} +Expected: 1498892.0256940164 +Received: 1498892.025694016 + +expect(result.floatingNumber).toEqual(1498892.0256940164) +``` + +e.g., using `Decimal` type +```jsx {4} +Expected: 7420440.088194787 +Received: "7420440.088194787" + +expect(result.floatingNumber).toEqual(7420440.088194787) +``` + +In the above examples, we can see expect doesn't preserve the floating numbers. Using decimals, the number is matched with the expected result. + +> For cases where using decimal is not optimal, see the [Jest Expect documentation](https://jestjs.io/docs/expect) for other options and methods. + +#### DateTime + +Prisma returns [DateTime](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#datetime) as ISO 8601-formatted strings. So, you can convert the date to ISO String in JavaScript: + +```jsx {1} +// Output: '2021-10-15T19:40:33.000Z' +const isoString = new Date("2021-10-15T19:40:33Z").toISOString() +``` + +#### Other Queries/Matchers + +There are several other node/text types you can query against with React Testing Library, including `title`, `role` and `alt` attributes, Form labels, placeholder text, and more. + +If you still can't access the node or text you're looking for there's a fallback attribute you can add to any DOM element that can always be found: `data-testid` which you can access using `getByTestId`, `queryByTestId` and others (but it involves including that attribute in your rendered HTML always, not just when running the test suite). + +You can refer to the [Cheatsheet](https://testing-library.com/docs/react-testing-library/cheatsheet/) from React Testing Library with the various permutations of `getBy`, `queryBy` and siblings. + +The full list of available matchers like `toBeInTheDocument()` and `toHaveAttribute()` don't seem to have nice docs on the Testing Library site, but you can find them in the [README](https://github.com/testing-library/jest-dom) inside the main repo. + +In addition to testing for static things like text and attributes, you can also use fire events and check that the DOM responds as expected. + +You can read more about these in below documentations: + + +- [React Testing Library User Events](https://testing-library.com/docs/ecosystem-user-event) +- [React Testing Library Jest DOM](https://testing-library.com/docs/ecosystem-jest-dom) +- [Official Testing Library](https://testing-library.com/docs/). + +### Mocking GraphQL Calls + +If you're using GraphQL inside your components, you can mock them to return the exact response you want and then focus on the content of the component being correct based on that data. Returning to our **<Article>** component, let's make an update where only the `id` of the article is passed to the component as a prop and then the component itself is responsible for fetching the content from GraphQL: + +> Normally we recommend using a cell for exactly this functionality, but for the sake of completeness we're showing how to test when doing GraphQL queries the manual way! + +```jsx title="web/src/components/Article/Article.js" +import { useQuery } from '@redwoodjs/web' + +const GET_ARTICLE = gql` + query getArticle($id: Int!) { + article(id: $id) { + id + title + body + } + } +` + +const Article = ({ id }) => { + const { data } = useQuery(GET_ARTICLE, { variables: { id } }) + + if (data) { + return ( + <article> + <h1>{data.article.title}</h1> + <div>{data.article.body}</div> + </article> + ) + } else { + return 'Loading...' + } +} + +export default Article +``` + +#### mockGraphQLQuery() + +Redwood provides the test function `mockGraphQLQuery()` for providing the result of a given named GraphQL. In this case our query is named `getArticle` and we can mock that in our test as follows: + +```jsx {6-14,18} title="web/src/components/Article/Article.test.js" +import { render, screen } from '@redwoodjs/testing/web' +import Article from 'src/components/Article' + +describe('Article', () => { + it('renders the title of an article', async () => { + mockGraphQLQuery('getArticle', (variables) => { + return { + article: { + id: variables.id, + title: 'Foobar', + body: 'Lorem ipsum...', + } + } + }) + + render(<Article id={1} />) + + expect(await screen.findByText('Foobar')).toBeInTheDocument() + }) +}) +``` + +We're using a new query here, `findByText()`, which allows us to find things that may not be present in the first render of the component. In our case, when the component first renders, the data hasn't loaded yet, so it will render only "Loading..." which does *not* include the title of our article. Without it the test would immediately fail, but `findByText()` is smart and waits for subsequent renders or a maximum amount of time before giving up. + +Note that you need to make the test function `async` and put an `await` before the `findByText()` call. Read more about `findBy*()` queries and the higher level `waitFor()` utility [here](https://testing-library.com/docs/dom-testing-library/api-async). + +The function that's given as the second argument to `mockGraphQLQuery` will be sent a couple of arguments. The first—and only one we're using here—is `variables` which will contain the variables given to the query when `useQuery` was called. In this test we passed an `id` of `1` to the **<Article>** component when test rendering, so `variables` will contain `{id: 1}`. Using this variable in the callback function to `mockGraphQLQuery` allows us to reference those same variables in the body of our response. Here we're making sure that the returned article's `id` is the same as the one that was requested: + +```jsx {3} +return { + article: { + id: variables.id, + title: 'Foobar', + body: 'Lorem ipsum...', + } +} +``` + +Along with `variables` there is a second argument: an object which you can destructure a couple of properties from. One of them is `ctx` which is the context around the GraphQL response. One thing you can do with `ctx` is simulate your GraphQL call returning an error: + +```jsx +mockGraphQLQuery('getArticle', (variables, { ctx }) => { + ctx.errors([{ message: 'Error' }]) +}) +``` + +You could then test that you show a proper error message in your component: + +```jsx {2,6-8,18-20,24} title="web/src/components/Article/Article.js" +const Article = ({ id }) => { + const { data, error } = useQuery(GET_ARTICLE, { + variables: { id }, + }) + + if (error) { + return <div>Sorry, there was an error</div> + } + + if (data) { + // ... + } +} + +// web/src/components/Article/Article.test.js + +it('renders an error message', async () => { + mockGraphQLQuery('getArticle', (variables, { ctx }) => { + ctx.errors([{ message: 'Error' }]) + }) + + render(<Article id={1} />) + + expect(await screen.findByText('Sorry, there was an error')).toBeInTheDocument() +}) +``` + +#### mockGraphQLMutation() + +Similar to how we mocked GraphQL queries, we can mock mutations as well. Read more about GraphQL mocking in our [Mocking GraphQL requests](graphql/mocking-graphql-requests.md) docs. + +### Mocking Auth + +Most applications will eventually add [Authentication/Authorization](authentication.md) to the mix. How do we test that a component behaves a certain way when someone is logged in, or has a certain role? + +Consider the following component (that happens to be a page) which displays a "welcome" message if the user is logged in, and a button to log in if they aren't: + +```jsx title="web/src/pages/HomePage/HomePage.js" +import { useAuth } from '@redwoodjs/auth' + +const HomePage = () => { + const { isAuthenticated, currentUser, logIn } = useAuth() + + return ( + <> + <header> + { isAuthenticated && <h1>Welcome back {currentUser.name}</h1> } + </header> + <main> + { !isAuthenticated && <button onClick={logIn}>Login</button> } + </main> + </> + ) +} +``` + +If we didn't do anything special, there would be no user logged in and we could only ever test the not-logged-in state: + +```jsx title="web/src/pages/HomePage/HomePage.test.js" +import { render, screen } from '@redwoodjs/testing/web' +import HomePage from './HomePage' + +describe('HomePage', () => { + it('renders a login button', () => { + render(<HomePage />) + + expect(screen.getByRole('button', { name: 'Login' })).toBeInTheDocument() + }) +}) +``` + +This test is a little more explicit in that it expects an actual `<button>` element to exist and that it's label (name) be "Login". Being explicit with something as important as the login button can be a good idea, especially if you want to be sure that your site is friendly to screen-readers or another assistive browsing devices. + +#### mockCurrentUser() on the Web-side + +How do we test that when a user *is* logged in, it outputs a message welcoming them, and that the button is *not* present? Similar to `mockGraphQLQuery()` Redwood also provides a `mockCurrentUser()` which tells Redwood what to return when the `getCurrentUser()` function of `api/src/lib/auth.js` is invoked: + +```jsx title="web/src/pages/HomePage/HomePage.test.js" +import { render, screen, waitFor } from '@redwoodjs/testing/web' +import HomePage from './HomePage' + +describe('HomePage', () => { + it('renders a login button when logged out', () => { + render(<HomePage />) + + expect(screen.getByRole('button', { name: 'Login' })).toBeInTheDocument() + }) + + it('does not render a login button when logged in', async () => { + mockCurrentUser({ name: 'Rob' }) + + render(<HomePage />) + + await waitFor(() => { + expect( + screen.queryByRole('button', { name: 'Login' }) + ).not.toBeInTheDocument() + }) + }) + + it('renders a welcome message when logged in', async () => { + mockCurrentUser({ name: 'Rob' }) + + render(<HomePage />) + + expect(await screen.findByText('Welcome back Rob')).toBeInTheDocument() + }) +}) +``` + +Here we call `mockCurrentUser()` before the `render()` call. Right now our code only references the `name` of the current user, but you would want this object to include everything a real user contains, maybe an `email` and an array of `roles`. + +We introduced `waitFor()` which waits for a render update before passing/failing the expectation. Although `findByRole()` will wait for an update, it will raise an error if the element is not found (similar to `getByRole()`). So here we had to switch to `queryByRole()`, but that version isn't async, so we added `waitFor()` to get the async behavior back. + +The async behavior here is important. Even after setting the user with `mockCurrentUser()`, `currentUser` may be `null` during the initial render because it's being resolved. Waiting for a render update before passing/failing the exception gives the resolver a chance to execute and populate `currentUser`. + +> Figuring out which assertions need to be async and which ones don't can be frustrating, we know. If you get a failing test when using `screen` you'll see the output of the DOM dumped along with the failure message, which helps find what went wrong. You can see exactly what the test saw (or didn't see) in the DOM at the time of the failure. +> +> If you see some text rendering that you're sure shouldn't be there (because maybe you have a conditional around whether or not to display it) this is a good indication that the test isn't waiting for a render update that would cause that conditional to render the opposite output. Change to a `findBy*` query or wrap the `expect()` in a `waitFor()` and you should be good to go! + +You may have noticed above that we created two tests, one for checking the button and one for checking the "welcome" message. This is a best practice in testing: keep your tests as small as possible by only testing one "thing" in each. If you find that you're using the word "and" in the name of your test (like "does not render a login button *and* renders a welcome message") that's a sign that your test is doing too much. + +#### Mocking Roles + +By including a list of `roles` in the object returned from `mockCurrentUser()` you are also mocking out calls to `hasRole()` in your components so that they respond correctly as to whether `currentUser` has an expected role or not. + +Given a component that does something like this: + +```jsx +const { currentUser, hasRole } = useAuth() + +return ( + { hasRole('admin') && <button onClick={deleteUser}>Delete User</button> } +) +``` + +You can test both cases (user does and does not have the "admin" role) with two separate mocks: + +```jsx +mockCurrentUser({ roles: ['admin'] }) +mockCurrentUser({ roles: [] }) +``` + +That's it! + +### Handling Duplication + +We had to duplicate the `mockCurrentUser()` call and duplication is usually another sign that things can be refactored. In Jest you can nest `describe` blocks and include setup that is shared by the members of that block: + +```jsx +describe('HomePage', () => { + describe('logged out', () => { + it('renders a login button when logged out', () => { + render(<HomePage />) + + expect(screen.getByRole('button', { name: 'Login' })).toBeInTheDocument() + }) + }) + + describe('log in', () => { + beforeEach(() => { + mockCurrentUser({ name: 'Rob' }) + + render(<HomePage />) + }) + + it('does not render a login button when logged in', async () => { + await waitFor(() => { + expect( + screen.queryByRole('button', { name: 'Login' }) + ).not.toBeInTheDocument() + }) + }) + + it('renders a welcome message when logged in', async () => { + expect(await screen.findByText('Welcome back Rob')).toBeInTheDocument() + }) + }) +}) +``` + +While the primordial developer inside of you probably breathed a sign of relief seeing this refactor, heed this warning: the more deeply nested your tests become, the harder it is to read through the file and figure out what's in scope and what's not by the time your actual test is invoked. In our test above, if you just focused on the last test, you would have no idea that `currentUser` is being mocked. Imagine a test file with dozens of tests and multiple levels of nested `describe`s—it becomes a chore to scroll through and mentally keep track of what variables are in scope as you look for nested `beforeEach()` blocks. + +Some schools of thought say you should keep your test files flat (that is, no nesting) which trades ease of readability for duplication: when flat, each test is completely self contained and you know you can rely on just the code inside that test to determine what's in scope. It makes future test modifications easier because each test only relies on the code inside of itself. You may get nervous thinking about changing 10 identical instances of `mockCurrentUser()` but that kind of thing is exactly what your IDE is good at! + +> For what it's worth, your humble author endorses the flat tests style. + +## Testing Custom Hooks + +Custom hooks are a great way to encapsulate non-presentational code. +To test custom hooks, we'll use the `renderHook` function from `@redwoodjs/testing/web`. + +:::info +Note that Redwood's `renderHook` function is based on React Testing Library's. The only difference is that Redwood's wraps everything with mock providers for the various providers in Redwood, such as auth, the GraphQL client, the router, etc. + +If you were to use React Testing Library's `renderHook` function, you'd need to provide your own wrapper function. In this case you probably want to compose the mock providers from `@redwoodjs/testing/web`: + +```jsx +import { renderHook, MockProviders } from '@redwoodjs/testing/web' + +// ... + +renderHook(() => myCustomHook(), { + wrapper: ({ children }) => ( + <MockProviders> + <MyCustomProvider>{children}</MyCustomProvider> + </MockProviders> + ) +}) +``` +::: + +To use `renderHook`: +1. Call your custom hook from an inline function passed to `renderHook`. For example: +```js +const { result } = renderHook(() => useAccumulator(0)) +``` +2. `renderHook` will return an object with the following properties: +- `result`: holds the return value of the hook in its `current` property (so `result.current`). Think of `result` as a `ref` for the most recently returned value +- `rerender`: a function to render the previously rendered hook with new props + +Let's go through an example. Given the following custom hook: + +```js title="web/src/hooks/useAccumulator/useAccumulator.js" +const useAccumulator = (initialValue) => { + const [total, setTotal] = useState(initialValue) + + const add = (value) => { + const newTotal = total + value + setTotal(newTotal) + return newTotal + } + + return { total, add } +} +``` + +The test could look as follows: + +```js title="web/src/hooks/useAccumulator/useAccumulator.test.js" +import { renderHook } from '@redwoodjs/testing/web' +import { useAccumulator } from './useAccumulator' + +describe('useAccumulator hook example in docs', () => { + it('has the correct initial state', () => { + const { result } = renderHook(() => useAccumulator(42)) + expect(result.current.total).toBe(42) + }) + + it('adds a value', () => { + const { result } = renderHook(() => useAccumulator(1)) + result.current.add(5) + expect(result.current.total).toBe(6) + }) + + it('adds multiple values', () => { + const { result } = renderHook(() => useAccumulator(0)) + result.current.add(5) + result.current.add(10) + expect(result.current.total).toBe(15) + }) + + it('re-initializes the accumulator if passed a new initializing value', () => { + const { result, rerender } = renderHook( + (initialValue) => useAccumulator(initialValue), + { + initialProps: 0, + } + ) + result.current.add(5) + rerender(99) + expect(result.current.total).toBe(99) + }) +}) +``` + +While `renderHook` lets you test a custom hook directly, there are cases where encapsulating the custom hook in a component is more robust. See https://kentcdodds.com/blog/how-to-test-custom-react-hooks. + +## Testing Pages & Layouts + +Pages and Layouts are just regular components so all the same techniques apply! + +## Testing Cells + +Testing Cells is very similar to testing components: something is rendered to the DOM and you generally want to make sure that certain expected elements are present. + +Two situations make testing Cells unique: + +1. A single Cell can export up to four separate components +2. There's a GraphQL query taking place + +The first situation is really no different from regular component testing: you just test more than one component in your test. For example: + +```jsx title="web/src/components/ArticleCell/ArticleCell.js" +import Article from 'src/components/Article' + +export const QUERY = gql` + query GetArticle($id: Int!) { + article(id: $id) { + id + title + body + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => <div>Error: {error.message}</div> + +export const Success = ({ article }) => { + return <Article article={article} /> +} +``` + +Here we're exporting four components and if you created this Cell with the [Cell generator](cli-commands.md#generate-cell) then you'll already have four tests that make sure that each component renders without errors: + +```jsx title="web/src/components/ArticleCell/ArticleCell.test.js" +import { render, screen } from '@redwoodjs/testing/web' +import { Loading, Empty, Failure, Success } from './ArticleCell' +import { standard } from './ArticleCell.mock' + +describe('ArticleCell', () => { + it('renders Loading successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + it('renders Empty successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + it('renders Failure successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + it('renders Success successfully', async () => { + expect(() => { + render(<Success article={standard().article} />) + }).not.toThrow() + }) +}) +``` + +You might think that "rendering without errors" is a pretty lame test, but it's actually a great start. In React something usually renders successfully or fails spectacularly, so here we're making sure that there are no obvious issues with each component. + +You can expand on these tests just as you would with a regular component test: by checking that certain text in each component is present. + +### Cell Mocks + +When the **<Success>** component is tested, what's this `standard()` function that's passed as the `article` prop? + +If you used the Cell generator, you'll get a `mocks.js` file along with the cell component and the test file: + +```jsx title="web/src/components/ArticleCell.mocks.js" +export const standard = () => ({ + article: { + id: 42, + } +}) +``` + +Each mock will start with a `standard()` function which has special significance (more on that later). The return of this function is the data you want to be returned from the GraphQL `QUERY` defined at the top of your cell. + +> Something to note is that the structure of the data returned by your `QUERY` and the structure of the object returned by the mock is in no way required to be identical as far as Redwood is concerned. You could be querying for an `article` but have the mock return an `animal` and the test will happily pass. Redwood just intercepts the GraphQL query and returns the mock data. This is something to keep in mind if you make major changes to your `QUERY`—be sure to make similar changes to your returned mock data or you could get falsely passing tests! + +Why not just include this data inline in the test? We're about to reveal the answer in the next section, but before we do just a little more info about working with these `mocks.js` file... + +Once you start testing more scenarios you can add custom mocks with different names for use in your tests. For example, maybe you have a case where an article has no body, only a title, and you want to be sure that your component still renders correctly. You could create an additional mock that simulates this condition: + +```jsx title="web/src/components/ArticleCell.mocks.js" +export const standard = () => ({ + article: { + id: 1, + title: 'Foobar', + body: 'Lorem ipsum...' + } +}) + +export const missingBody = { + article: { + id: 2, + title: 'Barbaz', + body: null + } +} +``` + +And then you just reference that new mock in your test: + +```jsx title="web/src/components/ArticleCell/ArticleCell.test.js" +import { render, screen } from '@redwoodjs/testing/web' +import { Loading, Empty, Failure, Success } from './ArticleCell' +import { standard, missingBody } from './ArticleCell.mock' + +describe('ArticleCell', () => { + /// other tests... + + it('Success renders successfully', async () => { + expect(() => { + render(<Success article={standard().article} />) + }).not.toThrow() + }) + + + it('Success renders successfully without a body', async () => { + expect(() => { + render(<Success article={missingBody.article} />) + }).not.toThrow() + }) +}) +``` + +Note that this second mock simply returns an object instead of a function. In the simplest case all you need your mock to return is an object. But there are cases where you may want to include logic in your mock, and in these cases you'll appreciate the function container. Especially in the following scenario... + +### Testing Components That Include Cells + +Consider the case where you have a page which renders a cell inside of it. You write a test for the page (using regular component testing techniques mentioned above). But if the page includes a cell, and a cell wants to run a GraphQL query, what happens when the page is rendered? + +This is where the specially named `standard()` mock comes into play: the GraphQL query in the cell will be intercepted and the response will be *the content of the `standard()` mock*. This means that no matter how deeply nested your component/cell structure becomes, you can count on every cell in that stack rendering in a predictable way. + +And this is where `standard()` being a function becomes important. The GraphQL call is intercepted behind the scenes with the same `mockGraphQLQuery()` function we learned about [earlier](#mocking-graphql). And since it's using that same function, the second argument (the function which runs to return the mocked data) receives the same arguments (`variables` and an object with keys like `ctx`). + +So, all of that is to say that when `standard()` is called it will receive the variables and context that goes along with every GraphQL query, and you can make use of that data in the `standard()` mock. That means it's possible to, for example, look at the `variables` that were passed in and conditionally return a different object. + +Perhaps you have a products page that renders either in stock or out of stock products. You could inspect the `status` that's passed into via `variables.status` and return a different inventory count depending on whether the calling code wants in-stock or out-of-stock items: + +```jsx title="web/src/components/ProductCell/ProductCell.mock.js" +export const standard = (variables) => { + return { + products: [ + { + id: variables.id, + name: 'T-shirt', + inventory: variables.status === 'instock' ? 100 : 0 + } + ] + } +}) +``` + +Assuming you had a **<ProductPage>** component: + +```jsx title="web/src/pages/ProductPage/ProductPage.js" +import ProductCell from 'src/components/ProductCell' + +const ProductPage = ({ status }) => { + return { + <div> + <h1>{ status === 'instock' ? 'In Stock' : 'Out of Stock' }</h1> + <ProductsCell status={status} /> + </div> + } +} +``` + +Which, in your page test, would let you do something like: + +```jsx title="web/src/pages/ProductPage/ProductPage.test.js" +import { render, screen } from '@redwoodjs/testing/web' +import ArticleCell from 'src/components/ArticleCell' + +describe('ProductPage', () => { + it('renders in stock products', () => { + render(<ProductPage status='instock' />) + + expect(screen.getByText('In Stock')).toBeInTheDocument() + }) + + it('renders out of stock products', async () => { + render(<ProductPage status='outofstock' />) + + expect(screen.getByText('Out of Stock')).toBeInTheDocument() + }) +}) +``` + +Be aware that if you do this, and continue to use the `standard()` mock in your regular cell tests, you'll either need to start passing in `variables` yourself: + +```jsx {8} title="web/src/components/ArticleCell/ArticleCell.test.js" +describe('ArticleCell', () => { + /// other tests... + test('Success renders successfully', async () => { + expect(() => { + render(<Success article={standard({ status: 'instock' }).article} />) + }).not.toThrow() + }) +}) +``` + +Or conditionally check that `variables` exists at all before basing any logic on them: + +```jsx {4,15} title="web/src/components/ArticleCell/ArticleCell.mock.js" +export const standard = (variables) => { + return { + product: { + id: variables?.id || 1, + name: 'T-shirt', + inventory: variables && variables.status === 'instock' ? 100 : 0 + } + } +}) +``` + +## Testing Forms + +> An alternative explanation, written in TypeScript and featuring a Storybook example, [can be found on the RedwoodJS forum](https://community.redwoodjs.com/t/testing-forms-using-testing-library-user-event/2058). + +To test our forms, we can make use of of the [`@testing-library/user-event`](https://testing-library.com/docs/ecosystem-user-event/) library which helps us approximate the the events that would actually happen in the browser if a real user were interacting with our forms. For example, calling `userEvent.click(checkbox)` toggles a checkbox as if a user had clicked it. + +### Installing `@testing-library/user-event` + +`user-event` can be installed in the web side of your application by running: + +```bash +yarn workspace web add -D @testing-library/user-event +``` + +### Building a Form + +Let's assume you've already created a component using `yarn rw g component`. This component is built using the `@redwoodjs/forms` package and provides a simple interface for using the form: we subscribe to changes via an `onSubmit` callback-prop. + +```jsx title="NameForm.js" +import { Form, Submit, TextField } from '@redwoodjs/forms' + +const NameForm = ({ onSubmit }) => { + return ( + <Form onSubmit={onSubmit}> + <TextField + name="name" + placeholder="Name" + validation={{ + required: true, + }} + /> + <TextField + name="nickname" + placeholder="Nickname" + validation={{ + required: false, + }} + /> + <Submit>Submit</Submit> + </Form> + ) +} + +export default NameForm +``` + +### Testing the Form + +Now, we can extend the `test` file which Redwood generated. We're going to want to: + +1. Import `waitFor` from the `@redwoodjs/testing/web` library. +2. Add an import to `@testing-library/user-event` for its `default`. +3. Provide an `onSubmit` prop to our "renders successfully" test. + +```jsx title="NameForm.test.js" +import { render, screen, waitFor } from '@redwoodjs/testing/web' +import userEvent from '@testing-library/user-event' + +import NameForm from './NameForm' + +describe('NameForm', () => { + it('renders successfully', () => { + expect(() => { + const onSubmit = jest.fn() + + render(<NameForm onSubmit={onSubmit} />) + }).not.toThrow() + }) +}) +``` + +Finally, we'll create three simple tests which ensure our form works as expected. + +1. Does our component NOT submit when required fields are empty? +2. Does our component submit when required fields are populated? +3. Does our component submit, passing our (submit) handler the data we entered? + +The important takeaways are: + +* We use `await` because our form's state will change multiple times; otherwise, our `expect`-ation would trigger prematurely. +* We use `waitFor` because `user-event`'s methods are synchronous, which contradicts the above. + * `waitFor` acts as our declaration of [`act`](https://reactjs.org/docs/test-utils.html#act), required when updating the state of a React component from a test. + +```jsx title="NameForm.test.js" +import { render, screen, waitFor } from '@redwoodjs/testing/web' +import userEvent from '@testing-library/user-event' + +import NameForm from './NameForm' + +describe('NameForm', () => { + + it('does not submit when required fields are empty', async () => { + const onSubmit = jest.fn() + + render(<NameForm onSubmit={onSubmit} />) + + const submitButton = screen.getByText('Submit') + + await waitFor(() => userEvent.click(submitButton)) + + expect(onSubmit).not.toHaveBeenCalled() + }) + + it('submits when required fields are entered', async () => { + const name = 'My Name' + const nickname = '' + + const onSubmit = jest.fn() + + render(<NameForm onSubmit={onSubmit} />) + + const nameField = screen.getByPlaceholderText('Name') + const submitButton = screen.getByText('Submit') + + await waitFor(() => userEvent.type(nameField, name)) + await waitFor(() => userEvent.click(submitButton)) + + expect(onSubmit).toHaveBeenCalledTimes(1) + expect(onSubmit).toHaveBeenCalled() + expect(onSubmit).toHaveBeenCalledWith( + { name, nickname }, + expect.objectContaining({ + _reactName: 'onSubmit', + type: 'submit', + }) + ) + }) + + it('submits with the expected, entered data', async () => { + const name = 'My Name' + const nickname = 'My Nickname' + + const onSubmit = jest.fn() + + render(<NameForm onSubmit={onSubmit} />) + + const nameField = screen.getByPlaceholderText('Name') + const nicknameField = screen.getByPlaceholderText('Nickname') + const submitButton = screen.getByText('Submit') + + await waitFor(() => userEvent.type(nameField, name)) + await waitFor(() => userEvent.type(nicknameField, nickname)) + await waitFor(() => userEvent.click(submitButton)) + + expect(onSubmit).toHaveBeenCalledTimes(1) + expect(onSubmit).toHaveBeenCalled() + expect(onSubmit).toHaveBeenCalledWith( + { name, nickname }, + expect.objectContaining({ + _reactName: 'onSubmit', + type: 'submit', + }) + ) + }) + +// }) +``` + +## Testing Services + +Until now we've only tested things on the web-side of our app. When we test the api-side that means testing our Services. + +In some ways testing a Service feels more "concrete" than testing components—Services deal with hard data coming out of a database or third party API, while components deal with messy things like language, layout, and even design elements. + +Services will usually contain most of your business logic which is important to verify for correctness—crediting or debiting the wrong account number on the Services side could put a swift end to your business! + +### The Test Database + +To simplify Service testing, rather than mess with your development database, Redwood creates a test database that it executes queries against. By default this database will be located at the location defined by a `TEST_DATABASE_URL` environment variable and will fall back to `.redwood/test.db` if that var does not exist. + +If you're using Postgres or MySQL locally you'll want to set that env var to your connection string for a test database in those services. + +:::info + +Does anyone else find it confusing that the software itself is called a "database", but the container that actually holds your data is also called a "database," and you can have multiple databases (containers) within one instance of a database (software)? + +::: + +When you start your test suite you may notice some output from Prisma talking about migrating the database. Redwood will automatically run `yarn rw prisma db push` against your test database to make sure it's up-to-date. + +:::warning What if I have custom migration SQL? + +The `prisma db push` command only restores a snapshot of the current database schema (so that it runs as fast as possible). **It does not actually run migrations in sequence.** This can cause a [problem](https://github.com/redwoodjs/redwood/issues/5818) if you have certain database configuration that *must* occur as a result of the SQL statements inside the migration files. + +In order to preserve those statements in your test database, you can set an additional ENV var which will use the command `yarn rw prisma migrate reset` instead. This will run each migration in sequence against your test database. The tradeoff is that starting your test suite will take a little longer depending on how many migrations you have: + +```.env title="/.env" +TEST_DATABASE_STRATEGY=reset +``` + +Set the variable to `push`, or remove it completely, and it will use the default behavior of running `yarn rw prisma db push`. + +::: + +### Writing Service Tests + +A Service test can be just as simple as a component test: + +```jsx title="api/src/services/users/users.js" +export const createUser = ({ input }) => { + return db.user.create({ data: input }) +} + +// api/src/services/users/users.test.js +import { createUser } from './users' + +describe('users service', () => { + it('creates a user', async () => { + const record = await createUser({ name: 'David' }) + + expect(record.id).not.toBeNull() + expect(record.name).toEqual('David') + }) +}) +``` + +This test creates a user and then verifies that it now has an `id` and that the name is what we sent in as the `input`. Note the use of `async`/`await`: although the service itself doesn't use `async`/`await`, when the service is invoked as a GraphQL resolver, the GraphQL provider sees that it's a Promise and waits for it to resolve before returning the response. We don't have that middleman here in the test suite so we need to `await` manually. + +Did a user really get created somewhere? Yes: in the test database! + +> In theory, it would be possible to mock out the calls to `db` to avoid talking to the database completely, but we felt that the juice wouldn't be worth the squeeze—you will end up mocking tons of functionality that is also under active development (Prisma) and you'd constantly be chasing your tail trying to keep up. So we give devs a real database to access and remove a whole class of frustrating bugs and false test passes/failures because of out-of-date mocks. + +### Database Seeding + +What about testing code that retrieves a record from the database? Easy, just pre-seed the data into the database first, then test the retrieval. **Seeding** refers to setting some data in the database that some other code requires to be present to get its job done. In a production deployment this could be a list of pre-set tags that users can apply to forum posts. In our tests it refers to data that needs to be present for our *actual* test to use. + +In the following code, the "David" user is the seed. What we're actually testing is the `users()` and `user()` functions. We verify that the data returned by them matches the structure and content of the seed: + +```jsx +it('retrieves all users', async () => { + const data = await createUser({ name: 'David' }) + + const list = await users({ id: data.id }) + + expect(list.length).toEqual(1) +}) + +it('retrieves a single user', async () => { + const data = await createUser({ name: 'David' }) + + const record = await user({ id: data.id }) + + expect(record.id).toEqual(data.id) + expect(record.name).toEqual(data.name) +}) +``` + +Notice that the string "David" only appears once (in the seed) and the expectations are comparing against values in `data`, not the raw strings again. This is a best practice and makes it easy to update your test data in one place and have the expectations continue to pass without edits. + +Did your spidey sense tingle when you saw that exact same seed duplicated in each test? We probably have other tests that check that a user is editable and deletable, both of which would require the same seed again! Even more tingles! When there's obvious duplication like this you should know by now that Redwood is going to try and remove it. + +### Scenarios + +Redwood created the concept of "scenarios" to cover this common case. A scenario is a set of seed data that you can count on existing at the start of your test and removed again at the end. This means that each test lives in isolation, starts with the exact same database state as every other one, and any changes you make are only around for the length of that one test, they won't cause side-effects in any other. + +When you use any of the generators that create a service (scaffold, sdl or service) you'll get a `scenarios.js` file alongside the service and test files: + +```jsx +export const standard = defineScenario({ + user: { + one: { + data: { + name: 'String', + }, + }, + two: { + data: { + name: 'String', + }, + } + }, +}) +``` + +This scenario creates two user records. The generator can't determine the intent of your fields, it can only tell the datatypes, so strings get prefilled with just 'String'. What's up with the `one` and `two` keys? Those are friendly names you can use to reference your scenario data in your test. + +The `data` key is one of Prisma's [create options](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#create). It's the same as in your Services—everything in the `one` and `two` keys actually just gets passed to Prisma's create. You can even create [relationships](#relationships) if you want. + +Let's look at a better example. We'll update the scenario with some additional data and give them a more distinctive name: + +```jsx +export const standard = defineScenario({ + user: { + anthony: { + data : { + name: 'Anthony Campolo', + email: 'anthony@redwoodjs.com' + }, + }, + dom: { + data: { + name: 'Dom Saadi', + email: 'dom@redwoodjs.com' + }, + } + }, +}) +``` + +Note that even though we are creating two users we don't use array syntax and instead just pass several objects. Why will become clear in a moment. + +Now in our test we replace the `it()` function with `scenario()`: + +```jsx +scenario('retrieves all users', async (scenario) => { + const list = await users() + + expect(list.length).toEqual(Object.keys(scenario.user).length) +}) + +scenario('retrieves a single user', async (scenario) => { + const record = await user({ id: scenario.user.dom.id }) + + expect(record.id).toEqual(scenario.user.dom.id) +}) +``` + +The `scenario` argument passed to the function contains the scenario data *after being inserted into the database* which means it now contains the real `id` that the database assigned the record. Any other fields that contain a database default value will be populated, included DateTime fields like `createdAt`. We can reference individual model records by name, like `scenario.user.dom`. This is why scenario records aren't created with array syntax: otherwise we'd be referencing them with syntax like `scenario.user[1]`. Yuck. + +#### Named Scenarios + +You may have noticed that the scenario we used was once again named `standard`. This means it's the "default" scenario if you don't specify a different name. This implies that you can create more than one scenario and somehow use it in your tests. And you can: + +```jsx +export const standard = defineScenario({ + user: { + anthony: { + data : { + name: 'Anthony Campolo', + email: 'anthony@redwoodjs.com' + }, + }, + dom: { + data: { + name: 'Dom Saadi', + email: 'dom@redwoodjs.com' + }, + } + }, +}) + +export const incomplete = defineScenario({ + user: { + david: { + data: { + name: 'David Thyresson', + email: 'dt@redwoodjs.com' + }, + }, + forrest: { + data: { + name: '', + email: 'forrest@redwoodjs.com' + }, + } + } +}) +``` + +```jsx +scenario('incomplete', 'retrieves only incomplete users', async (scenario) => { + const list = await users({ complete: false }) + expect(list).toMatchObject([scenario.user.forrest]) +}) +``` + +The name of the scenario you want to use is passed as the *first* argument to `scenario()` and now those will be the only records present in the database at the time the test is run. Assume that the `users()` function contains some logic to determine whether a user record is "complete" or not. If you pass `{ complete: false }` then it should return only those that it determines are not complete, which in this case includes users who have not entered their name yet. We seed the database with the scenario where one user is complete and one is not, then check that the return of `users()` only contains the user without the name. + +#### Multiple Models + +You're not limited to only creating a single model type in your scenario, you can populate every table in the database if you want. + +```jsx +export const standard = defineScenario({ + product: { + shirt: { + data: { + name: 'T-shirt', + inventory: 5 + }, + } + }, + order: { + first: { + data: { + poNumber: 'ABC12345' + }, + } + }, + paymentMethod: { + credit: { + data: { + type: 'Visa', + last4: 1234 + }, + } + } +}) +``` + +And you reference all of these on your `scenario` object as you would expect + +```jsx +scenario.product.shirt +scenario.order.first +scenario.paymentMethod.credit +``` + +#### Relationships + +What if your models have relationships to each other? For example, a blog **Comment** has a parent **Post**. Scenarios are passed off to Prisma's [create](https://www.prisma.io/docs/concepts/components/prisma-client/crud#create) function, which includes the ability to create nested relationship records simultaneously: + +```jsx +export const standard = defineScenario({ + comment: { + first: { + data: { + name: 'Tobbe', + body: 'But it uses some letters twice' + post: { + create: { + title: 'Every Letter', + body: 'The quick brown fox jumped over the lazy dog.' + } + } + }, + } + } +}) +``` + +Now you'll have both the comment and the post it's associated to in the database and available to your tests. For example, to test that you are able to create a second comment on this post: + +```jsx +scenario('creates a second comment', async (scenario) => { + const comment = await createComment({ + input: { + name: 'Billy Bob', + body: "A tree's bark is worse than its bite", + postId: scenario.comment.jane.postId, + }, + }) + + const list = await comments({ postId: scenario.comment.jane.postId }) + + expect(list.length).toEqual(Object.keys(scenario.comment).length + 1) +}) +``` + +`postId` is created by Prisma after creating the nested `post` model and associating it back to the `comment`. + +Why check against `Object.keys(scenario.comment).length + 1` and not just `2`? Because if we ever update the scenario to add more records (maybe to support another test) this test will keep working because it only assumes what *it itself* did: add one comment to existing count of comments in the scenario. + +You can also [include](https://www.prisma.io/docs/concepts/components/prisma-client/select-fields/) the post object (or `select` specific fields from it): + +``` javascript +export const standard = defineScenario({ + comment: { + first: { + data: { + name: 'Rob', + body: 'Something really interesting' + post: { + create: { + title: 'Brand new post', + body: 'Introducing dbAuth' + } + } + }, + include: { + post: true + } + } + } +}) +``` + +Then you’ll have both the `comment` and its `post`: + +```jsx +scenario('retrieves a comment with post', async (scenario) => { + const comment = await commentWithPost({ id: scenario.comment.first.id }) + + expect(comment.post.title).toEqual(scenario.comment.first.post.title) +}) +``` + +#### Relationships with Existing Records + +If your models have relationships and you need to connect new records to existing ones, using the object syntax just isn't going to cut it. + +Consider a `Comment`: it has a parent `Post`, and both of them have an `Author`. Using the object syntax, there's no way of accessing the `authorId` of the `Author` we just created. We could potentially hardcode it, but that's bad practice. + +```jsx +export const standard = defineScenario({ + post: { + first: { + data: { + name: 'First Post', + author: { create: { name: 'Kris' }}, + comments: { + create: [ + { + name: 'First Comment', + body: 'String', + authorId: // Here we want a different author... + }, + { + name: 'First Comment Response', + body: 'String', + authorId: // But here we want the same author as the post... + }, + ], + }, + } + }), + }, +}) +``` + +When you run into this, you can access an existing `scenario` record using the distinctive name key as a function that returns an object: + +```jsx +export const standard = defineScenario({ + author: { + kris: { + data: { name: 'Kris' } + } + rob: { + data: { name: 'rob' } + } + }, + post: { + first: (scenario) => ({ + data: { + name: 'First Post', + authorId: scenario.author.kris.id, + comments: { + create: [ + { + name: 'First Comment', + body: 'String', + authorId: scenario.author.rob.id, + }, + { + name: 'First Comment Response', + body: 'String', + authorId: scenario.author.kris.id, + }, + ], + }, + } + }), + }, +}) +``` + +Since [ES2015](https://tc39.es/ecma262/#sec-ordinaryownpropertykeys), object property keys are in ascending order of creation. This means that a key in `defineScenario` has access to key(s) created before it. We can leverage this like so: + +```jsx +export const standard = defineScenario({ + user: { + kris: { + data: { name: 'Kris' } + } + }, + post: { + first: (scenario) => ({ + // Here you have access to the user above via `scenario.user` + }), + }, + comment: { + first: (scenario) => ({ + // Here you have access to both `scenario.user` and `scenario.post` + }) + } +}) +``` + +:::tip + +Looking for info on how TypeScript works with Scenarios? Check out the [Utility Types](typescript/utility-types.md#scenarios--testing) doc + +::: + +#### Which Scenarios Are Seeded? + +Only the scenarios named for your test are included at the time the test is run. This means that if you have: + +* `posts.test.js` +* `posts.scenarios.js` +* `comments.test.js` +* `comments.scenarios.js` + +Only the posts scenarios will be present in the database when running the `posts.test.js` and only comments scenarios will be present when running `comments.test.js`. And within those scenarios, only the `standard` scenario will be loaded for each test unless you specify a differently named scenario to use instead. + +During the run of any single test, there is only ever one scenario's worth of data present in the database: users.standard *or* users.incomplete. + +### describeScenario - a performance optimization + +The scenario feature described above should be the base starting point for setting up test that depend on the database. The scenario sets up the database before each scenario _test_, runs the test, and then tears down (deletes) the database scenario. This ensures that each of your tests are isolated, and that they do not affect each other. + +**However**, there are some situations where you as the developer may want additional control regarding when the database is setup and torn down - maybe to run your test suite faster. + +The `describeScenario` function is utilized to run a sequence of multiple tests, with a single database setup and tear-down. + +```js +// highlight-next-line +describeScenario('contacts', (getScenario) => { + // You can imagine the scenario setup happens here + + // All these tests now use the same setup 👇 + it('xxx', () => { + // Notice that the scenario has to be retrieved using the getter + // highlight-next-line + const scenario = getScenario() + //... + }) + + it('xxx', () => { + const scenario = getScenario() + /... + }) + +}) +``` + +> **CAUTION**: With describeScenario, your tests are no longer isolated. The results, or side-effects, of prior tests can affect later tests. + +Rationale for using `describeScenario` include: +<ul> +<li>Create multi-step tests where the next test is dependent upon the results of the previous test (Note caution above).</li> +<li>Reduce testing run time. There is an overhead to setting up and tearing down the db on each test, and in some cases a reduced testing run time may be of significant benefit. This may be of benefit where the likelihood of side-effects is low, such as in query testing</li> +</ul> + +### describeScenario Examples + +Following is an example of the use of `describeScenario` to speed up testing of a user query service function, where the risk of side-effects is low. + +```ts +// highlight-next-line +describeScenario<StandardScenario>('user query service', (getScenario) => { + + let scenario: StandardScenario + + beforeEach(() => { + // Grab the scenario before each test + // highlight-next-line + scenario = getScenario() + }) + + it('retrieves a single user for a validated user', async () => { + mockCurrentUser({ id: 123, name: 'Admin' }) + + const record = await user({ id: scenario.user.dom.id }) + + expect(record.id).toEqual(scenario.user.dom.id) + }) + + it('throws an error upon an invalid user id', async () => { + mockCurrentUser({ id: 123, name: 'Admin' }) + + const fcn = async () => await user({ id: null as unknown as number }) + + await expect(fcn).rejects.toThrow() + }) + + it('throws an error if not authenticated', async () => { + const fcn = async () => await user({ id: scenario.user.dom.id }) + + await expect(fcn).rejects.toThrow(AuthenticationError) + }) + + it('throws an error if the user is not authorized to query the user', async () => { + mockCurrentUser({ id: 999, name: 'BaseLevelUser' }) + + const fcn = async () => await user({ id: scenario.user.dom.id }) + + await expect(fcn).rejects.toThrow(ForbiddenError) + }) +}) +``` + +:::tip Using named scenarios with describeScenario + +If you have multiple scenarios, you can also use named scenario with `describeScenario` + +For example: +```js + // If we have a paymentDeclined scenario defined in the .scenario.{js,ts} file + // The second parameter is the name of the "describe" block + describeScenario('paymentDeclined', 'Retrieving details', () => { + // .... + }) +``` +::: + + + +### mockCurrentUser() on the API-side + +Just like when testing the web-side, we can use `mockCurrentUser()` to mock out the user that's currently logged in (or not) on the api-side. + +Let's say our blog, when commenting, would attach a comment to a user record if that user was logged in while commenting. Otherwise the comment would be anonymous: + +```jsx title="api/src/services/comments/comments.js" +export const createComment = ({ input }) => { + if (context.currentUser) { + return db.comment.create({ data: { userId: context.currentUser.id, ...input }}) + } else { + return db.comment.create({ data: input }) + } +} +``` + +We could include a couple of tests that verify this functionality like so: + +```jsx title="api/src/services/comments/comments.test.js" +scenario('attaches a comment to a logged in user', async (scenario) => { + mockCurrentUser({ id: 123, name: 'Rob' }) + + const comment = await createComment({ + input: { + body: "It is the nature of all greatness not to be exact.", + postId: scenario.comment.jane.postId, + }, + }) + + expect(comment.userId).toEqual(123) +}) + +scenario('creates anonymous comment if logged out', async (scenario) => { + // currentUser will return `null` by default in tests, but it's + // always nice to be explicit in tests that are testing specific + // behavior (logged in or not)—future devs may not go in with the + // same knowledge/assumptions as us! + mockCurrentUser(null) + + const comment = await createComment({ + input: { + body: "When we build, let us think that we build for ever.", + postId: scenario.comment.jane.postId, + }, + }) + + expect(comment.userId).toEqual(null) +}) +``` + +## Testing Functions + +Testing [serverless functions](serverless-functions.md) and [webhooks](webhooks.md) can be difficult and time-consuming because you have to construct the event and context information that the function handler needs. + +Webhook testing is even more complex because you might need to open a http tunnel to a running dev server to accept an incoming request, then you'll have to sign the webhook payload so that the request is trusted, and then you might even trigger events from your third-party service ... all manually. Every. Time. + +Luckily, RedwoodJS has several api testing utilities to make [testing functions and webhooks](serverless-functions.md#how-to-test-serverless-functions) a breeze -- and without having to run a dev server. + +> Want to learn to [How to Test Serverless Functions](serverless-functions.md#how-to-test-serverless-functions) and [Webhooks](serverless-functions.md#how-to-test-webhooks)? +> +> We have an entire testing section in the [Serverless Functions documentation](serverless-functions.md) that will walk your through an example of a function and a webhook. + +## Testing GraphQL Directives + +Please refer to the [Directives documentation](./directives.md) for details on how to write Redwood [Validator](./directives.md#writing-validator-tests) or [Transformer](./directives.md#writing-transformer-tests) Directives tests. + + +## Testing Caching +If you're using Redwood's [caching](services#caching), we provide a handful of utilities and patterns to help you test this too! + +Let's say you have a service where you cache the result of products, and individual products: + +```ts +export const listProducts: QueryResolvers['listProducts'] = () => { + // highlight-next-line + return cacheFindMany('products-list', db.product, { + expires: 3600, + }) +} + +export const product: QueryResolvers['product'] = async ({ id }) => { + // highlight-next-line + return cache( + `cached-product-${id}`, + () => + db.product.findUnique({ + where: { id }, + }), + { expires: 3600 } + ) +} +``` + +With this code, we'll be caching an array of products (from the find many), and individual products that get queried too. + + +:::tip +It's important to note that when you write scenario or unit tests, it will use the `InMemoryClient`. + +The InMemoryClient has a few extra features to help with testing. + +1. Allows you to call `cacheClient.clear()` so each of your tests have a fresh cache state +2. Allows you to get all its contents (without cache-keys) with the `cacheClient.contents` getter +::: + + +There's a few different things you may want to test, but let's start with the basics. + +In your test let's import your cache client and clear after each test: + + +```ts +import type { InMemoryClient } from '@redwoodjs/api/cache' +import { client } from 'src/lib/cache' + +// For TypeScript users +const testCacheClient = client as InMemoryClient + +describe('products', () => { + // highlight-start + afterEach(() => { + testCacheClient.clear() + }) + // highlight-end + //.... +}) +``` + +### The `toHaveCached` matcher +We have a custom Jest matcher included in Redwood to make things a little easier. To use it simply add an import to the top of your test file: + +```ts +// highlight-next-line +import '@redwoodjs/testing/cache' +// ^^ make `.toHaveCached` available +``` + +The `toHaveCached` matcher can take three forms: + +`expect(testCacheClient)` +1. `.toHaveCached(expectedData)` - check for an exact match of the data, regardless of the key +2. `.toHaveCached('expected-key', expectedData)` - check that the data is cached in the key you supply +3. `.toHaveCached(/key-regex.*/, expectedData)` - check that data is cached in a key that matches the regex supplied + + +Let's see these in action now: + +```ts +scenario('returns a single product', async (scenario: StandardScenario) => { + await product({ id: scenario.product.three.id }) + +// Pattern 1: Only check that the data is present in the cache + expect(testCacheClient).toHaveCached(scenario.product.three) + +// Pattern 2: Check that data is cached, at a specific key + expect(testCacheClient).toHaveCached( + `cached-product-${scenario.product.three.id}`, + scenario.product.three + ) + +// Pattern 3: Check that data is cached, in a key matching the regex + expect(testCacheClient).toHaveCached( + /cached-.*/, + scenario.product.three + ) +``` + + +:::info Serialized Objects in Cache +Remember that the cache only ever contains serialized objects. So if you passed an object like this: +```js +{ + id: 5, + published: new Date('12/10/1995') +} + +``` + +The published key will be serialized and stored as a string. To make testing easier for you, we serialize the object you are passing when you use the `toHaveCached` matcher, before we compare it against the value in the cache. +::: + +### Partial Matching +It can be a little tedious to check that every key in the object you are looking for matches. This is especially true if you have autogenerated values such as `updatedAt` and `cuid` IDs. + +To help with this, we've provided a helper for partial matching! + +```ts +// highlight-next-line +import { partialMatch } from '@redwoodjs/testing/cache' + +scenario('returns all products', async (scenario: StandardScenario) => { + await products() + + // Partial match using the toHaveCached, if you supply a key + expect(testCacheClient).toHaveCached( + /cached-products.*/, + // highlight-next-line + partialMatch([{ name: 'LS50', brand: 'KEF' }]) + ) + + // Or you can use the .contents getter + expect(testCacheClient.contents).toContainEqual( + // check that an array contains an object matching + // highlight-next-line + partialMatch([{ name: 'LS50', brand: 'KEF' }]) + ) +} + +scenario('finds a single product', () = { + await product({id: 5}) + + // You can also check for a partial match of an object + expect(testCacheClient).toHaveCached( + /cached-.*/, + // highlight-start + partialMatch({ + name: 'LS50', + brand: 'KEF' + }) + ) + // highlight-end +}) +``` + +Partial match is just syntactic sugar—underneath it uses Jest's `expect.objectContaining` and `expect.arrayContaining`. + +The `partialMatch` helper takes two forms of arguments: + +- If you supply an object, you are expecting a partial match of that object +- If you supply an array of objects, you are expecting an array containing a partial match of each of the objects + + +:::tip +Note that you cannot use `partialMatch` with toHaveCached without supplying a key! + +```ts +// 🛑 Will never pass! +expect(testCacheClient).toHaveCached(partialMatch({name: 'LS50'})) +``` + +For partial matches, you either have to supply a key to `toHaveCached` or use the `cacheClient.contents` helper. +::: + + +### Strict Matching + +If you'd like stricter checking (i.e. you do not want helpers to automatically serialize/deserialize your _expected_ value), you can use the `.contents` getter in test cache client. Note that the `.contents` helper will still de-serialize the values in your cache (to make it easier to compare), just not the expected value. + +For example: + +```ts + +const expectedValue = { + // Note that this is a date 👇 + publishDate: new Date('12/10/1988'), + title: 'A book from the eighties', + id: 1988 +} + +// ✅ will pass, because we will serialize the publishedDate for you +expect(testCacheClient).toHaveCached(expectedValue) + + +// 🛑 won't pass, because publishDate in cache is a string, but you supplied a Date object +expect(testCacheClient.contents).toContainEqual(expectedValue) + +// ✅ will pass, because you serialized the date +expect(testCacheClient.contents).toContainEqual({ + ...expectedValue, + publishDate: expectedValue.publishDate.toISOString() +}) + +// And if you wanted to view the raw contents of the cache +console.log(testCacheClient.storage) +``` + +This is mainly helpful when you are testing for a very specific value, or have edgecases in how the serialization/deserialization works in the cache. + + +## Testing Mailer + +If your project uses [RedwoodJS Mailer](./mailer.md) to send emails, you can [also write tests](./mailer.md#testing) to make sure that email: + +* is sent to an sandbox inbox +* renders properly +* sets the expected to, from, cc, bcc, subject attributes based on the email sending logic +* checks that the html and text content is set correctly + +Since these tests send mail to a sandbox inbox, you can be confident that no emails accidentally get sent into the wild as part of your test or CI runs. + + +## Wrapping Up + +So that's the world of testing according to Redwood. Did we miss anything? Can we make it even more awesome? Stop by [the community](https://community.redwoodjs.com) and ask questions, or if you've thought of a way to make this doc even better then [open a PR](https://github.com/redwoodjs/redwoodjs.com/pulls). + +Now go out and create (and test!) something amazing! diff --git a/docs/versioned_docs/version-7.0/toast-notifications.md b/docs/versioned_docs/version-7.0/toast-notifications.md new file mode 100644 index 000000000000..9b22ee524bd4 --- /dev/null +++ b/docs/versioned_docs/version-7.0/toast-notifications.md @@ -0,0 +1,133 @@ +--- +description: Toast notifications with react-hot-toast +--- + +# Toast Notifications + +Did you know that those little popup notifications that you sometimes see at the top of a page after you've performed an action are affectionately known as "toast" notifications? +Because they pop up like a piece of toast from a toaster! + +![Example toast animation](https://user-images.githubusercontent.com/300/110032806-71024680-7ced-11eb-8d69-7f462929815e.gif) + +Redwood supports these notifications out of the box thanks to the [react-hot-toast](https://react-hot-toast.com/) package. +We'll refer you to their [docs](https://react-hot-toast.com/docs) since they're very thorough, but here's enough to get you going. + +### Add the `Toaster` Component + +To render toast notifications, start by adding the `Toaster` component. +It's usually better to add it at the App or Layout-level than the Page: + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +// highlight-next-line +import { Toaster } from '@redwoodjs/web/toast' + +const MainLayout = ({ children }) => { + return ( + <> + // highlight-next-line + <Toaster /> + <main>{children}</main> + </> + ) +} + +export default MainLayout +``` + +### Call the `toast` function + +To render a basic toast notification with default styles, call the `toast` function: + +```jsx title="web/src/layouts/MainLayout/MainLayout.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION) + + const onSubmit = async (data) => { + try { + await create({ variables: { input: data }}) + // highlight-next-line + toast('Post created') + } + catch (e) { + // highlight-next-line + toast('Error creating post') + } + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +### Call the `toast` variants + +To render a toast notification with default icons and default styles, call the `toast` variants: + +```jsx title="web/src/components/PostForm/PostForm.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION, { + onCompleted: () => { + // highlight-next-line + toast.success('Post created') + } + onError: () => { + // highlight-next-line + toast.error('Error creating post') + } + }) + + const onSubmit = (data) => { + create({ variables: { input: data }}) + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +or render an async toast by calling the `toast.promise` function: + +```jsx title="web/src/components/PostForm/PostForm.js" +import { toast } from '@redwoodjs/web/toast' + +// ... + +const PostForm = () => { + const [create, { loading, error }] = useMutation(CREATE_POST_MUTATION) + + const onSubmit = (data) => { + // highlight-next-line + toast.promise(create({ variables: { input: data }}), { + loading: 'Creating post...', + success: 'Post created', + error: 'Error creating post', + }) + } + + return ( + // <Form onSubmit={onSubmit}> ... </Form> + ) +}) + +export default PostForm +``` + +:::warning + +You can't use the [onError](https://www.apollographql.com/docs/react/api/react/hooks/#onerror) callback in combination with the `toast.promise` function. + +::: diff --git a/docs/versioned_docs/version-7.0/tutorial/afterword.md b/docs/versioned_docs/version-7.0/tutorial/afterword.md new file mode 100644 index 000000000000..7ba3db0b8c85 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/afterword.md @@ -0,0 +1,28 @@ + +# Afterword + +You made it! Get yourself some ice cream or a slice of pie: you definitely deserve it. + +Will there be a chapters 8+ of the tutorial? We've spent a lot of time getting our features working but not much time with optimization and polish. [Premature optimization is the root of all evil](http://wiki.c2.com/?PrematureOptimization), but once your site is live and you've got real users on it you'll get a sense of what could be faster, prettier or more efficient. That's when time spent optimizing can pay huge dividends. But, discovering the techniques and best practices for those optimizations...that's a whole different story. The kind of story that Redwood loves to help you write! + +So until next time, a bit of wisdom to help combat that next bout of every developer's nemesis, imposter syndrome: + +> _"There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self."_ — Ernest Hemingway + +## What's Next + +Want to add some more features to your app? Check out some of our how to's like [calling to a third party API](../how-to/using-a-third-party-api.md) and [deploying an app without an API at all](../how-to/disable-api-database.md). We've also got lots of [guides](https://redwoodjs.com/docs/index) for more info on Redwood's internals. + +## Roadmap + +Check out our [Roadmap](https://redwoodjs.com/roadmap) to see where we're headed and how we're going to get there. If you're interested in helping with anything you see, just let us know over on the [RedwoodJS Forum](https://community.redwoodjs.com/) and we'll be happy to get you set up. + +## Help Us! + +What do you think of Redwood? Is it the Next Step for JS frameworks? What can it do better? We've got a lot more planned. Want to help us build these upcoming features? + +- [Open a PR](https://github.com/redwoodjs/redwood/pulls) +- [Write some docs](https://redwoodjs.com/docs/introduction) +- [Join the community](https://community.redwoodjs.com) + +Thanks for following along. Now go out and build something amazing! diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter0/what-is-redwood.md b/docs/versioned_docs/version-7.0/tutorial/chapter0/what-is-redwood.md new file mode 100644 index 000000000000..e779cafefdf2 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter0/what-is-redwood.md @@ -0,0 +1,345 @@ +# What is Redwood? + +*What follows is a high-level description of Redwood and how it works. If you want to get right to the meat and potatoes of building something, skip ahead to [Chapter 1](../chapter1/prerequisites.md).* + +Redwood is a React framework with lots of pre-installed packages and configuration that makes it easy to build full-stack web applications. + +Now that the elevator pitch is out of the way, what does that actually *mean*? At its core, Redwood is React plus a bunch of stuff that makes your life as a developer easier. Some of that stuff includes: + +* GraphQL +* Prisma +* Jest +* Storybook +* vite +* Babel +* Typescript + +What do we mean when we say a "full-stack web application?" We're talking about your classic web app: a UI that's visible in the browser (the frontend), backed by a server and database (the backend). Until React Server Components came along (more on those later) React had no idea a server and/or database existed: it was up to you to somehow get data into your app. Maybe this was done with a `fetch()` or in a build step which would pre-bake some of the data needed right into your components. However the data got there, it wasn't an ideal solution. + +One of the core principals behind Redwood was that getting data from the backend should be as simple as possible, going so far as to create conventions around it so that retrieving data for display in a component was as easy as adding a couple of lines of code directly into the component itself. Oh and while we're at it, Redwood will automatically show a loading message while waiting for the data, a different state if there's an error, and even a separate message if the data returned from the server is empty (the classic "blank slate"). + +## How a Redwood App Works + +A Redwood app is actually two apps: a frontend (that's the React part) and a backend, which is your server and talks to a database and other third party systems. Your app is technically a monorepo with two top-level directories: `web` containing the frontend code and `api` containing the backend. + +You can start them both with a single command: `yarn redwood dev` + +## The Frontend + +### The Router + +When you open your web app in a browser, React does its thing initializing your app and monitoring the history for changes so that new content can be shown. Redwood features a custom, declarative Router that lets you specify URLs and the requisite pages (just a React component) will be shown. A simple routes file may look something like: + +```jsx +import { Route, Router, Set, PrivateSet } from '@redwoodjs/router' +import ApplicationLayout from 'src/layouts/ApplicationLayout' +import { useAuth } from './auth' + +const Routes = () => { + return ( + <Router useAuth={useAuth}> + <Set wrap={ApplicationLayout}> + <Route path="/login" page={LoginPage} name="login" /> + <Route path="/signup" page={SignupPage} name="signup" /> + <PrivateSet unauthenticated="login"> + <Route path="/dashboard" page={DashboardPage} name="dashboard" /> + <Route path="/products/{sku}" page={ProductsPage} name="products" /> + </PrivateSet> + </Set> + + <Route path="/" page={HomePage} name="home" /> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} +``` + +You can probably get a sense of how all of this works without ever having seen a Redwood route before! Some routes can be marked as `<PrivateSet>` and will not be accessible without being logged in. Others can be wrapped in a "layout" (again, just a React component) to provide common styling shared between pages in your app. + +#### Prerender + +If you have content on your page that can be purely static (like public facing marketing-focused pages) you can simply add the `prerender` attribute to your route and that page will be completely rendered (no matter how deeply nested the internal components go) into an HTML page. This page loads instantly, but still contains the JS needed to include React. Once React loads, the page is rehydrated and becomes interactive. + +You can also prerender pages that contain variables pulled from the URL, like the `/products/{sku}` route above. Redwood will [iterate](../../prerender.md#dynamic-routes--route-hooks) through all available skus and generate a page for each. + +This is Redwood's version of static site generation, aka SSG. + +### Authentication + +The `<PrivateSet>` route limits access to users that are authenticated, but how do they authenticate? Redwood includes integrations to many popular third party authentication hosts (including [Auth0](https://auth0.com/), [Supabase](https://supabase.com/docs/guides/auth) and [Clerk](https://clerk.com/)). You can also [host your own auth](https://redwoodjs.com/docs/auth/dbauth), or write your own [custom authentication](https://redwoodjs.com/docs/auth/custom) option. If going self-hosted, we include login, signup, and reset password pages, as well as the option to include TouchID/FaceID and third party biometric readers! + +Once authenticated, how do you know what a user is allowed to do or not do? Redwood includes helpers for [role-based access control](https://redwoodjs.com/docs/how-to/role-based-access-control-rbac) that integrates on both the front- and backend. + +The homepage is accessible *without* being logged in, browsing to `/` will load the `HomePage` page (component) which itself is just composed of more React components, nothing special there. But, what if the homepage, say, displayed some testimonials from the database? Ahh, now things are getting interesting. Here's where Redwood's handpicked selection of technologies start to take the spotlight. + +### GraphQL + +Redwood uses GraphQL as the glue between the front- and backends: whenever you want data from the server/database, you're going to retrieve it via GraphQL. Now, we could have just given you raw access to some GraphQL library and let you make those calls yourself. We use [Apollo Client](https://www.apollographql.com/apollo-client) on the frontend and Apollo provides hooks like [useQuery()](https://www.apollographql.com/tutorials/lift-off-part1/10-the-usequery-hook) and [useMutation()](https://www.apollographql.com/tutorials/lift-off-part4/08-the-usemutation-hook) to retrieve and set data, respectively. But Redwood has a much deeper integration. + +What if you could have a component that was not only responsible for its own display *but even its own data retrieval*? Meaning everything that component needed in order to display itself could all be self-contained. That includes the code to display while the data is loading, or if something goes wrong. These kinds of uber-components are real, and Redwood calls "cells." + +### Cells + +A cell is still just a React component (also called a [single file component](https://www.swyx.io/react-sfcs-here)), it just happens to follow a couple of conventions that make it work as described above: + +1. The name of the file ends in `Cell" +2. The file exports several named components, at the very least one named `QUERY` and another named `Success` +3. The file can optionally export several other components, like `Loading`, `Failure` and `Empty`. You can probably guess what those are for! + +So, any time React is about to render a cell, the following lifecycle occurs: + +1. The `Loading` component is displayed +2. A `useQuery()` hook is fired, using the exported `QUERY` +3. Assuming the data returns successfully, the `Success` component is rendered with one of the props being the data returned from `useQuery()` + +As an alternative to step 3, if something went wrong then `Failure` is rendered. If the query returned `null` or an empty array, the `Empty` component is rendered. If you don't export either of those then `Success` will be rendered and it would be up to you to show the error or empty state through conditional code. + +Going back to our testimonals hypothetical, a cell to fetch and display them may look something like: + +```js +export const QUERY = gql` + query GetTestimonials { + testimonials { + id + author + quote + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Failure = ({ error }) => <div>An error occured! {error.message}</div> + +export const Success = ({ testimonials }) => { + return ( + <ul> + {testimonials.map((test) => { + <li key={test.id}>{test.quote} — {test.author}</li> + })} + </ul> + ) +} +``` + +(In this case we don't export `Empty` so that if there aren't any testimonials, that section of the final page won't render anything, not even indicating to the user that something is missing.) + +If you ever create additional clients for your server (a mobile app, perhaps) you'll be giving yourself a huge advantage by using GraphQL from the start. + +Oh, and prerendering also works with cells! At build time, Redwood will start up the GraphQL server and make requests, just as if a user was accessing the pages, rendering the result to plain HTML, ready to be loaded instantly by the browser. + +### Apollo Cache + +The Apollo Client library also intelligently caches the results of that `QUERY` above, and so if the user browses away and returns to the homepage, the `Success` component is now rendered *immediately* from the cache! Simultaneously, the query is made to the server again to see if any data has changed since the cache was populated. If so, the new data is merged into the cache and the component will re-render to show any new testimonials since the last time it was viewed. + +So, you get performance benefits of an instant display of cached data, but with the guarantee that you won't only see stale data: it's constantly being kept in sync with the latest from the server. + +You can also directly manipulate the cache to add or remove entries, or even use it for [state management](https://www.apollographql.com/docs/react/local-state/local-state-management/). + +If you're familiar with GraphQL then you know that on the backend you define the structure of data that GraphQL queries will return with "resolvers." But GraphQL itself doesn't know anything about talking to databases. How does the raw data in the database make it into those resolvers? That's where our next package comes in. + +### Accessibility + +Redwood includes a couple of components to [aid screen readers](https://redwoodjs.com/docs/accessibility) in properly navigating your app. The `<RouteAnnouncement>` component tells a screen reader to read something aloud, even though it isn't visible in the browser. And the `<RouteFocus>` tells a reader to skip verbose navigation options at the top of a page and get to the content. + +## The Backend + +Now we're into the backend code in the `api` directory. + +### Prisma + +[Prisma](https://www.prisma.io/) is the package Redwood uses to talk to your database, and provides automated migrations, type-safety and auto-completion in your IDE. Your Redwood app will contain a file called `schema.prisma` that will reflect your current database schema: + +```prisma +datasource db { + provider = "postgresql" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +model Testimonial { + id Int @id @default(autoincrement()) + author String @unique + quote String + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt +} +``` + +Prisma has a couple of command line tools that take changes to this file and turn them into [SQL DDL commands](https://www.sqlshack.com/sql-ddl-getting-started-with-sql-ddl-commands-in-sql-server/) which are executed against your database to update its structure to match. + +#### GraphQL + +Redwood abstracts the concept of GraphQL resolver into a "service." You will generally start with one service function per GraphQL query/mutation. For example, going back to our testimonials example, you would have a service function named `testimonials()` that returns the data for the GraphQL query named `testimonials`. That function uses Prisma to query the database: + +```js +import { db } from 'src/lib/db' + +export const testimonials = () => { + return db.testimonial.findMany() +} +``` + +How does GraphQL know to go here for its `testimonials` resolver? Redwood introduces an "SDL" file, which contains the mapping from GraphQL to the world of services: + +```js +export const schema = gql` + type Testimonial { + id: Int! + author: String! + quote: String! + createdAt: DateTime! + updatedAt: DateTime! + } + + type Query { + testimonials: [Testimonial!] @skipAuth + } +` +``` + +Any definitions listed in the `type Query` section are expected to have a service function with the same name: `testimonials` -> `testimonials()` + +### Security + +Redwood is secure-by-default: no GraphQL request will be fulfilled if made by an unauthenticated user. You can choose to allow access to certain query/mutations to the public, but you'll have to enable that manually for each option. Consider a more complete Testimonials SDL file: + +```js +export const schema = gql` + type Testimonial { + id: Int! + author: String! + quote: String! + createdAt: DateTime! + updatedAt: DateTime! + } + + type CreateTestimonialInput { + author: String! + quote: String! + } + + type Query { + testimonials: [Testimonial!] @skipAuth + } + + type Mutation { + createTestimonal($input: CreateTestimonialInput!): Testimonial! @requireAuth + deleteTestimonal($id: Int!): Testimonial! @requireAuth + } +` +``` + +The `testimonials` query is marked with the [GraphQL directive](../../directives.md) `@skipAuth` meaning that requests here should *not* be limited to authenticated users. However, the critical `createTestimonial` and `deleteTestimonial` mutations are marked `@requireAuth`, and so can only be called by a logged in user. + +Redwood's backend GraphQL server is powered by [GraphQL Yoga](https://the-guild.dev/graphql/yoga-server) and so you have access to everything that makes Yoga secure and performant: rate and depth limiting, logging, directives, and a ton more. + +#### Auth + +If a user is logged in, they will be available in any of your services in the `context` object, available everywhere, all the time: + +```js +import { db } from 'src/lib/db' +import { AuthenticationError } from '@redwoodjs/graphql-server' + +export const createTestimonial = ({ data }) => { + if (context.currentUser.roles.includes('admin')) { + return db.testimonial.create({ data }) + } else { + throw new AuthenticationError("You are not authorized to create testimonials") + } +} +``` + +So `@requireAuth` and `@skipAuth` provide a gate around entire GraphQL queries for authenticated users, but once inside you can be more fine-grained based on who the user actually is. + +## Generators + +Let's take a look at an often overlooked tool in many frameworks' kit: the command line tools. Redwood has focused extensively on these, and one of the most powerful are the "generators." These are used to create files, setup integrations, execute scripts, start the dev server, and more. + +A huge timesaver is generating layouts, pages and cells. There isn't much boilerplate in Redwood's files, but it's still nice to have them built out for, even going so far as creating tests for the bare functionality (more on tests in a minute). + +They also provide easy access to dev tools like Graphiql (for executing GraphQL functions against your server) and Prisma Studio (providing a full GUI for your database). + +![image](https://github.com/redwoodjs/redwood/assets/300/18c928ff-aa34-4f06-941b-69c8035cee61) + +![image](https://github.com/redwoodjs/redwood/assets/300/11f7553e-26a5-4a8f-b618-b9464828cafa) + +Redwood has setup commands for UI libraries like [Tailwind](https://tailwindcss.com/) and [Mantine](https://mantine.dev/), and even provides access to experimental new features, making it easy to enable and disable them on the fly. + +There's even an interactive console that lets you, for example, execute Prisma queries to fetch data from the database. This comes in handy when you want to double check that your query is fetching the data you think it is, without dropping a bunch of `console.log()` statements in your code and reloading the browser. + +## Jest + +Being able to develop a full-stack application this easily is great, but how do you verify that it's working as intended? That's where a great test suite comes in. [Jest](https://jestjs.io/) is a test framework that, as they say, focuses on simplicity. We felt that it was a natural fit with Redwood, and so most files you can generate will include the related test file automatically (pre-filled with some tests, even!). + +Redwood includes several Jest helpers and matchers, allowing you to mock out GraphQL requests, database data, logged in users, and more. + +* [Scenarios](../../testing#scenarios) accept a simple JSON object and pre-populate your database with just that data so it's in a known state that you can test against. +* [Mock Service Worker](../../testing#mock-service-worker) allow you to simulate the response from API calls, including GraphQL +* `mockCurrentUser()` is a helper that allows you to stub out the user that's logged in on either the `web` or `api` codebase, without having to worry about actually passing them through your auth provider + +![image](https://github.com/redwoodjs/redwood/assets/300/614d9867-9765-474f-8b8b-c9217f3f7dcf) + +You can write Jest tests in both the front- and backend of your app. + +## Storybook + +While Jest can test your code, [Storybook](https://storybook.js.org/) can be used to catalog and test your UI. They call themselves a "frontend workshop for building UI components in isolation" and we couldn't agree more. Build your components separate from your app, even having props be dynamic while viewing their effects. All you have to do is run `yarn redwood storybook`. + +Redwood adds data mocking for Storybook so that you can display components that would normally be populated with data from GraphQL, but without needing a server running. + +![image](https://github.com/redwoodjs/redwood/assets/300/2753a292-01d4-41b9-9975-edc1f8c1c3ac) + +Storybook is strictly a frontend codebase concern. + +## vite, Babel and Typescript + +Notice at no point above did we say "and then we need to write configuration for this package..." Redwood has done all of that for you and will continue to do that with every release of a new version. We're sure you won't miss spending hours or days trying to add and configure a package in your application. You can eject from our default configs, and add custom code if needed, but most apps will never need to do this: everything Just Works. + +We use vite as our bundler, packaging up the frontend code and automatically code splitting on pages. It also serves the frontend (the `web` directory). The backend (the `api` directory) is compiled by Babel and served with [Fastify](https://fastify.dev/). + +The entire framework is ([strictly](https://redwoodjs.com/docs/typescript/strict-mode)) typed so you can autocomplete all the things in your IDE. + +## Deployment + +Redwood's job doesn't end until your application is deployed to the world! That's why we include deploy commands and config to get your app running on the most popular hosts (whether they are serverless or traditional server infrastructure) including: + +* [AWS](https://aws.amazon.com/) +* [Vercel](https://vercel.com/) +* [Google Cloud](https://cloud.google.com/) +* [Azure](https://azure.microsoft.com/en-us/) +* [Render](https://render.com/) +* [Flightcontrol](https://www.flightcontrol.dev/) +* [Netlify](https://www.netlify.com/) +* anywhere [Docker](https://www.docker.com) is accepted + +You can even deploy to your own server via SSH commands (we call that our [Baremetal](../../deploy/baremetal.md) deploy). + +## Coming Soon + +Redwood is still in active development, and we're working on some [features](https://community.redwoodjs.com/c/experimental-features/25) that are on the cutting edge of the React ecosystem: + +* [React Server Components](https://community.redwoodjs.com/t/react-server-components-rsc/5081) and a new transparent, non-GraphQL API +* [SSR/Streaming](https://community.redwoodjs.com/t/render-modes-ssr-streaming-experimental/4858) +* [Realtime and GraphQL Subscriptions](https://community.redwoodjs.com/t/redwoodjs-realtime/5002) +* [Redwood Studio](https://community.redwoodjs.com/t/redwood-studio-experimental/4771) for getting runtime insights into your project +* [Mailer](https://github.com/redwoodjs/redwood/pull/9058) + +These are just a few highlights from our current [Bighorn Epoch](https://tom.preston-werner.com/2023/05/30/redwoods-next-epoch-all-in-on-rsc). You can see the full list and follow along via our Roadmap project board at [www.redwoodjs.com/roadmap](https://redwoodjs.com/roadmap). + +## Backing + +Redwood was created by Tom Preston-Werner, cofounder of GitHub and projects like Semantic Versioning, TOML, Jekyll, and many more. Tom believes that JavaScript applications, specifically full-stack JS applications, are the future of the web, and Redwood has his full support. + +## Updates + +Redwood is constantly being updated and sticks strictly to semantic versioning requirements. You can be sure that there won't be any sudden, breaking changes without a major version revision. Redwood is famous for its [copious release notes](https://community.redwoodjs.com/t/redwood-3-0-0-is-now-available/3989) and comprehensive upgrade guides, and if code changes need to be made to your app, we make every effort to include a codemod script that will make the changes for you. + +## Community + +There's a very active community around Redwood, including a [Discourse forum](https://community.redwoodjs.com/) and [Discord chat](https://discord.gg/redwoodjs), where even members of the core team can be found answering questions. We're building this framework for users like you, and we need your feedback if we're going to be successful! diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter1/file-structure.md b/docs/versioned_docs/version-7.0/tutorial/chapter1/file-structure.md new file mode 100644 index 000000000000..cbf375035bc8 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter1/file-structure.md @@ -0,0 +1,150 @@ +# Redwood File Structure + +Let's take a look at the files and directories that were created for us (config files have been excluded for now): + +:::info + +Don't worry about trying to memorize this directory structure right now, it's just a brief overview to get you oriented. Seeing dozens of files before you've even written a single line of code can be daunting, but there's a great organizational structure here, promise. You can also ignore this all for now and we'll touch upon many of these files and directories as we go. + +::: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +``` +├── api +│ ├── db +│ │ └── schema.prisma +│ └── src +│ ├── directives +│ │ ├── requireAuth +│ │ └── skipAuth +│ ├── functions +│ │ └── graphql.js +│ ├── graphql +│ ├── lib +│ │ ├── auth.js +│ │ ├── db.js +│ │ └── logger.js +│ └── services +│ +├── scripts +│ └── seed.js +│ +└── web + ├── public + │ ├── favicon.png + │ ├── README.md + │ └── robots.txt + └── src + ├── components + ├── layouts + ├── pages + │ ├── FatalErrorPage + │ │ └── FatalErrorPage.jsx + │ └── NotFoundPage + │ └── NotFoundPage.jsx + ├── App.jsx + ├── entry.client.jsx + ├── index.css + ├── index.html + └── Routes.jsx +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +``` +├── api +│ ├── db +│ │ └── schema.prisma +│ └── src +│ ├── directives +│ │ ├── requireAuth +│ │ └── skipAuth +│ ├── functions +│ │ └── graphql.ts +│ ├── graphql +│ ├── lib +│ │ ├── auth.ts +│ │ ├── db.ts +│ │ └── logger.ts +│ └── services +│ +├── scripts +│ └── seed.ts +│ +└── web + ├── public + │ ├── favicon.png + │ ├── README.md + │ └── robots.txt + └── src + ├── components + ├── layouts + ├── pages + │ ├── FatalErrorPage + │ │ └── FatalErrorPage.tsx + │ └── NotFoundPage + │ └── NotFoundPage.tsx + ├── App.tsx + ├── entry.client.tsx + ├── index.css + ├── index.html + └── Routes.tsx +``` + +</TabItem> +</Tabs> + +At the top level we have three directories, `api`, `scripts` and `web`. Redwood separates the backend (`api`) and frontend (`web`) concerns into their own paths in the codebase. ([Yarn refers to these as "workspaces"](https://yarnpkg.com/features/workspaces). In Redwood, we refer to them as "sides.") When you add packages going forward you'll need to specify which workspace they should go in. For example (**don't run these commands**, we're just looking at the syntax): + +```bash +yarn workspace web add marked +yarn workspace api add better-fs +``` + +`scripts` is meant to hold any Node scripts you may need to run from the command line that aren't directly related to the api or web sides. The file that's in there, `seed.{js,ts}` is used to populate your database with any data that needs to exist for your app to run at all (maybe an admin user or site configuration). + +### The /api Directory + +Within `api` there are four directories: + +- `db` contains the plumbing for the database: + - `schema.prisma` contains the database schema (tables and columns) + + After we add our first database table, there will also be a SQLite database file named `dev.db` and a directory called `migrations` created for us. `migrations` contains the files that act as snapshots of the database schema changing over time. + +- `dist` contains the compiled code for the api side and can be ignored when developing. + +- `src` contains all your backend code. `api/src` contains five more directories: + - `directives` will contain GraphQL [schema directives](https://www.graphql-tools.com/docs/schema-directives) for controlling access to queries and transforming values. + - `functions` will contain any [lambda functions](https://docs.netlify.com/functions/overview/) your app needs in addition to the `graphql.{js,ts}` file auto-generated by Redwood. This file is required to use the GraphQL API. + - `graphql` contains your GraphQL schema written in a Schema Definition Language (the files will end in `.sdl.{js,ts}`). + - `lib` contains a few files:`auth.{js,ts}` starts as a placeholder for adding auth functionality and has a couple of bare-bones functions in it to start, `db.{js,ts}` instantiates the Prisma database client so we can talk to a database and `logger.{js,ts}` which configures, well, logging. You can use this directory for other code related to the API side that doesn't really belong anywhere else. + - `services` contains business logic related to your data. When you're querying or mutating data for GraphQL (known as **resolvers**), that code ends up here, but in a format that's reusable in other places in your application. + +- And finally `types` contains automatically compiled GraphQL types and can be ignored during development + +That's it for the backend. + +### The /web Directory + +- `public` contains assets not used by React components (they will be copied over unmodified to the final app's root directory): + - `favicon.png` is the icon that goes in a browser tab when your page is open (apps start with the RedwoodJS logo). + - `README.md` explains how, and when, to use the `public` folder for static assets. It also covers best practices for importing assets within components via Vite. You can also [read this README.md file on GitHub](https://github.com/redwoodjs/redwood/blob/main/packages/create-redwood-app/templates/ts/web/public). + - `robots.txt` can be used to control what web indexers are [allowed to do](https://www.robotstxt.org/robotstxt.html). + +- `src` contains several subdirectories: + - `components` contains your traditional React components as well as Redwood _Cells_ (more about those soon). + - `layouts` contain HTML/components that wrap your content and are shared across _Pages_. + - `pages` contain components and are optionally wrapped inside _Layouts_ and are the "landing page" for a given URL (a URL like `/articles/hello-world` will map to one page and `/contact-us` will map to another). There are two pages included in a new app: + - `NotFoundPage.{jsx,tsx}` will be served when no other route is found (see `Routes.{jsx,tsx}` below). + - `FatalErrorPage.{jsx,tsx}` will be rendered when there is an uncaught error that can't be recovered from and would otherwise cause our application to really blow up (normally rendering a blank page). + - `App.{jsx,tsx}` the bootstrapping code to get our Redwood app up and running. + - `entry.client.{jsx,tsx}` is the standard React starting point for our app. + - `index.css` is a good starting place for custom CSS, but there are many options (we like [TailwindCSS](https://tailwindcss.com/) which, believe it or not, may not require you to write any custom CSS for the life of your app!) + - `index.html` is what's first sent to a visitor's browser. It fetches `entry.client.{jsx,tsx}`. + - `Routes.{jsx,tsx}` the route definitions for our app which map a URL to a _Page_. + +We'll dip in and out of these directories and files (and create some new ones) as we work through the tutorial. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter1/first-page.md b/docs/versioned_docs/version-7.0/tutorial/chapter1/first-page.md new file mode 100644 index 000000000000..877488339e73 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter1/first-page.md @@ -0,0 +1,165 @@ +# Our First Page + +Let's give our users something to look at besides the (awesome) Redwood welcome page (thanks [@alicelovescake](https://github.com/alicelovescake)!). We'll use the `redwood` command line tool to create a page for us: + +```bash +yarn redwood generate page home / +``` + +The command above does four things: + +- Creates `web/src/pages/HomePage/HomePage.{jsx,tsx}`. Redwood takes the name you specified as the first argument after `page` and [PascalCases](https://techterms.com/definition/pascalcase) it, then appends "Page" to construct your new page component. So "home" becomes "HomePage". +- Creates a test file to go along with this new page component at `web/src/pages/HomePage/HomePage.test.{jsx,tsx}` with a single, passing test. You _do_ write tests for your components, _don't you??_ +- Creates a Storybook file for this component at `web/src/pages/HomePage/HomePage.stories.{jsx,tsx}`. Storybook is a wonderful tool for efficiently developing and organizing UI components. (If you want to take a peek ahead, we learn about Storybook in [chapter 5 of the tutorial](../chapter5/storybook.md)). +- Adds a `<Route>` in `web/src/Routes.{jsx,tsx}` that maps the path `/` to the new _HomePage_ page. + +:::info Automatic import of pages in the Routes file + +If you look in Routes you'll notice that we're referencing a component, `HomePage`, that isn't imported anywhere. Redwood automatically imports all pages in the Routes file since we're going to need to reference them all anyway. It saves a potentially huge `import` declaration from cluttering up the routes file. + +::: + +In case you didn't notice, this page is already live (your browser automatically reloaded): + +![Default HomePage render](https://user-images.githubusercontent.com/300/148600239-6a147031-74bb-43e8-b4ef-776b4e2a2cc5.png) + +It's not pretty, but it's a start! Open the page in your editor, change some text and save. Your browser should reload with your new text. + +### Routing + +Open up `web/src/Routes.{jsx,tsx}` and take a look at the route that was created: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +import { Router, Route } from '@redwoodjs/router' + +const Routes = () => { + return ( + <Router> + // highlight-next-line + <Route path="/" page={HomePage} name="home" /> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/Routes.tsx" +import { Router, Route } from '@redwoodjs/router' + +const Routes = () => { + return ( + <Router> + // highlight-next-line + <Route path="/" page={HomePage} name="home" /> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +</Tabs> + +As long as you have a route with path `/`, you'll never see the initial Redwood splash screen again. + +When no route can be found that matches the requested URL, Redwood will render the `NotFoundPage`. + +Try changing the route to something like: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx +<Route path="/hello" page={HomePage} name="home" /> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx +<Route path="/hello" page={HomePage} name="home" /> +``` + +</TabItem> +</Tabs> + +The splash screen is available again at [http://localhost:8910/](http://localhost:8910/), giving you a list of all the available URLs in your app. + +![Redwood Splash Screen](https://user-images.githubusercontent.com/17789536/160120107-1157af8e-4cbd-4ec8-b3aa-8adb28ea6eaf.png) + +Go to `/hello` and you should see the homepage again. + +Change the route path back to `/` before continuing! + +### Simple Styles + +Previous versions of this tutorial had you build everything without any styling, so we could really focus on the code, but let's face it: an unstyled site is pretty ugly. Let's add a really simple stylesheet that will just make things a *little* easier on the eyes as we build out the site. Paste the following into `web/src/index.css`: + +```css title="web/src/index.css" +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} +ul { + list-style-type: none; + margin: 1rem 0; + padding: 0; +} +li { + display: inline-block; + margin: 0 1rem 0 0 ; +} +h1 > a { + text-decoration: none; + color: black; +} +button, input, label, textarea { + display: block; + outline: none; +} +label { + margin-top: 1rem; +} +.error { + color: red; +} +input.error, textarea.error { + border: 1px solid red; +} +.form-error { + color: red; + background-color: lavenderblush; + padding: 1rem; + display: inline-block; +} +.form-error ul { + list-style-type: disc; + margin: 1rem; + padding: 1rem; +} +.form-error li { + display: list-item; +} +.flex-between { + display: flex; + justify-content: space-between; +} +.flex-between button { + display: inline; +} +``` + +These styles will switch to whatever your OS's system font is, put a little margin between things, and just generally clean things up. Feel free to tweak it to your liking (or ignore these styles completely and stick with the browser default) but keep in mind that the following screenshots are made against this base stylesheet so your experience may vary. + +![Default homepage with custom styles](https://user-images.githubusercontent.com/300/148600516-f8e048aa-451f-46f0-9749-078d63fe7b07.png) + +Looking better already! diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter1/installation.md b/docs/versioned_docs/version-7.0/tutorial/chapter1/installation.md new file mode 100644 index 000000000000..266664f74687 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter1/installation.md @@ -0,0 +1,55 @@ +# Installation & Starting Development + +We'll use yarn ([yarn](https://yarnpkg.com/getting-started/install) is a requirement) to create the basic structure of our app: + + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```bash +yarn create redwood-app ./redwoodblog +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```bash +yarn create redwood-app --ts ./redwoodblog +``` + +</TabItem> +</Tabs> + +You'll have a new directory `redwoodblog` containing several directories and files. Change to that directory and we'll start the development server: + +```bash +cd redwoodblog +yarn install +yarn redwood dev +``` + +A browser should automatically open to [http://localhost:8910](http://localhost:8910) and you will see the Redwood welcome page: + +![Redwood Welcome Page](https://user-images.githubusercontent.com/300/145314717-431cdb7a-1c45-4aca-9bbc-74df4f05cc3b.png) + +:::tip + +Remembering the port number is as easy as counting: 8-9-10! + +::: + +The splash page gives you links to many resources, but don't get distracted: we've got a job to do! + +### First Commit + +Now that we have the skeleton of our Redwood app in place, it's a good idea to save the current state of the app as your first commit...just in case. + +```bash +git init +git add . +git commit -m 'First commit' +``` + +[git](https://git-scm.com/) is another of those concepts we assume you know, but you *can* complete the tutorial without it. Well, almost: you won't be able to deploy! At the end we'll be deploying to a provider that requires your codebase to be hosted in either [GitHub](https://github.com) or [GitLab](https://gitlab.com). + +If you're not worried about deployment for now, you can go ahead and complete the tutorial without using `git` at all. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter1/layouts.md b/docs/versioned_docs/version-7.0/tutorial/chapter1/layouts.md new file mode 100644 index 000000000000..4efbd849f81f --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter1/layouts.md @@ -0,0 +1,397 @@ +# Layouts + +One way to solve the duplication of the `<header>` would be to create a `<Header>` component and include it in both `HomePage` and `AboutPage`. That works, but is there a better solution? Ideally there should only be one reference to the `<header>` anywhere in our code. + +When you look at these two pages what do they really care about? They have some content they want to display. They really shouldn't have to care what comes before (like a `<header>`) or after (like a `<footer>`). That's where layouts come in: they wrap a page in a component that then renders the page as its child. The layout can contain any content that's outside the page itself. Conceptually, the final rendered document will be structured something like: + +<img src="https://user-images.githubusercontent.com/300/70486228-dc874500-1aa5-11ea-81d2-eab69eb96ec0.png" alt="Layouts structure diagram" width="300"/> + +Let's create a layout to hold that `<header>`: + +```bash +yarn redwood g layout blog +``` + +:::tip + +From now on we'll use the shorter `g` alias instead of `generate` + +::: + +That created `web/src/layouts/BlogLayout/BlogLayout.{jsx,tsx}` and associated test and stories files. We're calling this the "blog" layout because we may have other layouts at some point in the future (an "admin" layout, perhaps?). + +Cut the `<header>` from both `HomePage` and `AboutPage` and paste it in the layout instead. Let's take out the duplicated `<main>` tag as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.jsx" +// highlight-next-line +import { Link, routes } from '@redwoodjs/router' + +const BlogLayout = ({ children }) => { + return ( + // highlight-start + <> + <header> + <h1>Redwood Blog</h1> + <nav> + <ul> + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + // highlight-end + ) +} + +export default BlogLayout +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.tsx" +// highlight-next-line +import { Link, routes } from '@redwoodjs/router' + +type BlogLayoutProps = { + children?: React.ReactNode +} + +const BlogLayout = ({ children }: BlogLayoutProps) => { + return ( + // highlight-start + <> + <header> + <h1>Redwood Blog</h1> + <nav> + <ul> + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + // highlight-end + ) +} + +export default BlogLayout +``` + +</TabItem> +</Tabs> + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/AboutPage/AboutPage.jsx" +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const AboutPage = () => { + return ( + <> + <MetaTags title="About" description="About page" /> + + <p> + This site was created to demonstrate my mastery of Redwood: Look on my + works, ye mighty, and despair! + </p> + <Link to={routes.home()}>Return home</Link> + </> + ) +} + +export default AboutPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/AboutPage/AboutPage.tsx" +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const AboutPage = () => { + return ( + <> + <MetaTags title="About" description="About page" /> + + <p> + This site was created to demonstrate my mastery of Redwood: Look on my + works, ye mighty, and despair! + </p> + <Link to={routes.home()}>Return home</Link> + </> + ) +} + +export default AboutPage +``` + +</TabItem> +</Tabs> + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/HomePage/HomePage.jsx" +import { MetaTags } from '@redwoodjs/web' + +const HomePage = () => { + return ( + <> + <MetaTags title="Home" description="Home page" /> + Home + </> + ) +} + +export default HomePage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/HomePage/HomePage.tsx" +import { MetaTags } from '@redwoodjs/web' + +const HomePage = () => { + return ( + <> + <MetaTags title="Home" description="Home page" /> + Home + </> + ) +} + +export default HomePage +``` + +</TabItem> +</Tabs> + +In `BlogLayout.{jsx,tsx}`, `children` is where the magic will happen. Any page content given to the layout will be rendered here. And now the pages are back to focusing on the content they care about (we can remove the import for `Link` and `routes` from `HomePage` since those are in the Layout instead). + +To actually render our layout we'll need to make a change to our routes files. We'll wrap `HomePage` and `AboutPage` with the `BlogLayout`, using a `<Set>`. Unlike pages, we do actually need an `import` statement for layouts: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +// highlight-start +import { Router, Route, Set } from '@redwoodjs/router' +import BlogLayout from 'src/layouts/BlogLayout' +// highlight-end + +const Routes = () => { + return ( + <Router> + // highlight-start + <Set wrap={BlogLayout}> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + // highlight-end + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/Routes.tsx" +// highlight-start +import { Router, Route, Set } from '@redwoodjs/router' +import BlogLayout from 'src/layouts/BlogLayout' +// highlight-end + +const Routes = () => { + return ( + <Router> + // highlight-start + <Set wrap={BlogLayout}> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + // highlight-end + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +</Tabs> + +:::info The `src` alias + +Notice that the import statement uses `src/layouts/BlogLayout` and not `../src/layouts/BlogLayout` or `./src/layouts/BlogLayout`. Being able to use just `src` is a convenience feature provided by Redwood: `src` is an alias to the `src` path in the current workspace. So if you're working in `web` then `src` points to `web/src` and in `api` it points to `api/src`. + +::: + +Back to the browser (you may need to manually refresh) and you should see...nothing different. But that's good, it means our layout is working! + +:::info Why are things named the way they are? + +You may have noticed some duplication in Redwood's file names. Pages live in a directory called `/pages` and also contain `Page` in their name. Same with Layouts. What's the deal? + +When you have dozens of files open in your editor it's easy to get lost, especially when you have several files with names that are similar or even the same (they happen to be in different directories). Imagine a dozen files named `index.{js,ts}` and then trying to find the one you're looking for in your open tabs! We've found that the extra duplication in the names of files is worth the productivity benefit when scanning for a specific open file. + +If you're using the [React Developer Tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) plugin this also helps disambiguate when browsing through your component stack: + +<img src="https://user-images.githubusercontent.com/300/145901282-e4b6ec92-8cee-42d0-97ea-1ffe99328e53.png" width="400"/> + +::: + +### Back Home Again + +A couple more `<Link>`s: let's have the title/logo link back to the homepage, and we'll add a nav link to Home as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.jsx" +import { Link, routes } from '@redwoodjs/router' + +const BlogLayout = ({ children }) => { + return ( + <> + <header> + // highlight-start + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + // highlight-end + <nav> + <ul> + // highlight-start + <li> + <Link to={routes.home()}>Home</Link> + </li> + // highlight-end + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.tsx" +import { Link, routes } from '@redwoodjs/router' + +type BlogLayoutProps = { + children?: React.ReactNode +} + +const BlogLayout = ({ children }: BlogLayoutProps) => { + return ( + <> + <header> + // highlight-start + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + // highlight-end + <nav> + <ul> + // highlight-start + <li> + <Link to={routes.home()}>Home</Link> + </li> + // highlight-end + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +</Tabs> + +And then we can remove the extra "Return to Home" link (and Link/routes import) that we had on the About page: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/AboutPage/AboutPage.jsx" +import { MetaTags } from '@redwoodjs/web' + +const AboutPage = () => { + return ( + <> + <MetaTags title="About" description="About page" /> + + <p> + This site was created to demonstrate my mastery of Redwood: Look on my + works, ye mighty, and despair! + </p> + </> + ) +} + +export default AboutPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/AboutPage/AboutPage.tsx" +import { MetaTags } from '@redwoodjs/web' + +const AboutPage = () => { + return ( + <> + <MetaTags title="About" description="About page" /> + + <p> + This site was created to demonstrate my mastery of Redwood: Look on my + works, ye mighty, and despair! + </p> + </> + ) +} + +export default AboutPage +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/145901020-1c33bb74-78f9-415e-a8c8-c8873bd6630f.png) + +Now we're getting somewhere! We removed all of that duplication and our header content (logo and navigation) are all in one place. + +Everything we've done so far has been on the web side, which is all in the browser. Let's start getting the backend involved and see what all the hoopla is about GraphQL, Prisma and databases. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter1/prerequisites.md b/docs/versioned_docs/version-7.0/tutorial/chapter1/prerequisites.md new file mode 100644 index 000000000000..2fe986a41784 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter1/prerequisites.md @@ -0,0 +1,70 @@ +# Prerequisites + +<div class="video-container"> + <iframe src="https://www.youtube.com/embed/HJOzmp8oCIQ?rel=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; modestbranding; showinfo=0; fullscreen"></iframe> +</div> + +Redwood is composed of several popular libraries to make full-stack web development easier. Unfortunately, we can't teach all of those technologies from scratch during this tutorial, so we're going to assume you are already familiar with a few core concepts: + +- [React](https://react.dev/) +- [GraphQL](https://graphql.org/) +- [Prisma](https://prisma.io/) +- [Jamstack Deployment](https://jamstack.org/) + +**Don't panic!** You can work through this tutorial without knowing much of anything about these technologies. You may find yourself getting lost in terminology that we don't stop and take the time to explain, but that's okay: just know that the nitty-gritty details of how those technologies work is out there and there will be plenty of time to learn them. As you learn more about them you'll start to see the lines between what Redwood provides on top of the stock implementations of these projects. + +You could definitely learn them all at once, but it will be harder to determine where one ends and another begins, which makes it more difficult to find help once you're past the tutorial and want to dive deeper into one technology or another. Our advice? Make it through the tutorial and then start building something on your own! When you find that what you learned in the tutorial doesn't exactly apply to a feature you're trying to build, Google for where you're stuck ("prisma select only some fields") and you'll be an expert in no time. And don't forget our [Discourse](https://community.redwoodjs.com/) and [Discord](https://discord.gg/jjSYEQd) where you can get help from the creators of the framework, as well as tons of helpful community members. + +### Redwood Versions + +You will want to be on at least version 7.0.0 to complete the tutorial. If this is your first time using Redwood then no worries: the latest version will be installed automatically when you create your app skeleton! + +If you have an existing site created with a prior version, you'll need to upgrade and (most likely) apply code modifications. Follow this two step process: + +1. For _each_ version included in your upgrade, follow the "Code Modifications" section or "Upgrade Guide" of the specific version's Release Notes: + - [Redwood Releases](https://github.com/redwoodjs/redwood/releases) +2. Then upgrade to the latest version. Run the command: + - `yarn redwood upgrade` + +### Node.js and Yarn Versions + +During installation, RedwoodJS checks if your system meets version requirements for Node and Yarn: + +- node: "=20.x" +- yarn: ">=1.22.21" + +If you're using a version of Node or Yarn that's **less** than what's required, _the installation bootstrap will result in an ERROR_. To check, please run the following from your terminal command line: + +```bash +node --version +yarn --version +``` + +Please do upgrade accordingly. Then proceed to the Redwood installation when you're ready! + +:::info Installing Node and Yarn + +There are many ways to install and manage both Node.js and Yarn. If you're installing for the first time, we recommend the following: + +**1. Node.js** +Using the recommended [LTS version from Nodejs.org](https://nodejs.org/en/) is preferred. + +- `nvm` is a great tool for managing multiple versions of Node on one system. It takes a bit more effort to set up and learn, however. Follow the [nvm installation instructions](https://github.com/nvm-sh/nvm#installing-and-updating). (Windows users should go to [nvm-windows](https://github.com/coreybutler/nvm-windows/releases)). For **Mac** users with Homebrew installed, you can alternatively use it to [install `nvm`](https://formulae.brew.sh/formula/nvm). Or, refer to our how to guide [using nvm](../../how-to/using-nvm.md). + +**2. Yarn** +As of Node.js v18+, Node.js ships with a CLI tool called [Corepack](https://nodejs.org/docs/latest-v18.x/api/corepack.html) to manage package managers. All you have to do is enable it, then you'll have Yarn: + +``` +corepack enable +yarn -v +``` + +The version of Yarn will probably be `1.22.21`, but don't worry—in your Redwood project, Corepack will know to use a modern version of Yarn because of the `packageManager` field in the root `package.json`. + +**Windows:** Recommended Development Setup + +- JavaScript development on Windows has specific requirements in addition to Yarn and npm. Follow our simple setup guide: + + [Recommended Windows Development Setup](../../how-to/windows-development-setup.md) + +::: diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter1/second-page.md b/docs/versioned_docs/version-7.0/tutorial/chapter1/second-page.md new file mode 100644 index 000000000000..fa25bc7eb26a --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter1/second-page.md @@ -0,0 +1,186 @@ +# A Second Page and a Link + +Let's create an "About" page for our blog so everyone knows about the geniuses behind this achievement. We'll create another page using `redwood`: + +```bash +yarn redwood generate page about +``` + +Notice that we didn't specify a route path this time. If you leave it off the `redwood generate page` command, Redwood will create a `Route` and give it a path that is the same as the page name you specified, prepended with a slash. In this case it will be `/about`. + +:::info Code-splitting each page + +As you add more pages to your app, you may start to worry that more and more code has to be downloaded by the client on any initial page load. Fear not! Redwood will automatically code-split on each Page, which means that initial page loads can be blazingly fast, and you can create as many Pages as you want without having to worry about impacting overall bundle size. If, however, you do want specific Pages to be included in the main bundle, you can [override the default behavior](../../router.md#not-code-splitting). + +::: + +[http://localhost:8910/about](http://localhost:8910/about) should show our new page: + +![About page](https://user-images.githubusercontent.com/300/145647906-56b02a6c-b92c-40c6-9d37-860584ffaa6b.png) + +But no one's going to find it by manually changing the URL so let's add a link from our homepage to the About page and vice versa. We'll start by creating a simple header and nav bar at the same time on the HomePage: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/HomePage/HomePage.jsx" +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const HomePage = () => { + return ( + <> + <MetaTags title="Home" description="Home page" /> + + // highlight-start + <header> + <h1>Redwood Blog</h1> + <nav> + <ul> + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main>Home</main> + // highlight-end + </> + ) +} + +export default HomePage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/HomePage/HomePage.tsx" +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const HomePage = () => { + return ( + <> + <MetaTags title="Home" description="Home page" /> + + // highlight-start + <header> + <h1>Redwood Blog</h1> + <nav> + <ul> + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main>Home</main> + // highlight-end + </> + ) +} + +export default HomePage +``` + +</TabItem> +</Tabs> + +Let's point out a few things here: + +- Redwood loves [Function Components](https://www.robinwieruch.de/react-function-component). We'll make extensive use of [React Hooks](https://react.dev/reference/react) as we go and these are only enabled in function components. Now that Redwood is on React 18, we discourage using class components since they won't be able to take advantage of React's concurrent rendering features. +- Redwood's `<Link>` tag, in its most basic usage, takes a single `to` attribute. That `to` attribute calls a [_named route function_](../../router.md#link-and-named-route-functions) to generate the correct URL. The function has the same name as the `name` attribute on the `<Route>`: + + `<Route path="/about" page={AboutPage} name="about" />` + + If you don't like the name or path that `redwood generate` created for your route, feel free to change it in `Routes.{jsx,tsx}`! Named routes are awesome because if you ever change the path associated with a route (like going from `/about` to `/about-us`), you need only change it in `Routes.{jsx,tsx}` and every link using a named route function (`routes.about()`) will still point to the correct place! You can also pass a string to the `to` prop (`to="/about"`), but now if your path ever changed you would need to find and replace every instance of `/about` to `/about-us`. + +### Back Home + +Once we get to the About page we don't have any way to get back so let's add a link there as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/AboutPage/AboutPage.jsx" +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const AboutPage = () => { + return ( + <> + <MetaTags title="About" description="About page" /> + + // highlight-start + <header> + <h1>Redwood Blog</h1> + <nav> + <ul> + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main> + <p> + This site was created to demonstrate my mastery of Redwood: Look on my + works, ye mighty, and despair! + </p> + <Link to={routes.home()}>Return home</Link> + </main> + // highlight-end + </> + ) +} + +export default AboutPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/AboutPage/AboutPage.tsx" +import { Link, routes } from '@redwoodjs/router' +import { MetaTags } from '@redwoodjs/web' + +const AboutPage = () => { + return ( + <> + <MetaTags title="About" description="About page" /> + + // highlight-start + <header> + <h1>Redwood Blog</h1> + <nav> + <ul> + <li> + <Link to={routes.about()}>About</Link> + </li> + </ul> + </nav> + </header> + <main> + <p> + This site was created to demonstrate my mastery of Redwood: Look on my + works, ye mighty, and despair! + </p> + <Link to={routes.home()}>Return home</Link> + </main> + // highlight-end + </> + ) +} + +export default AboutPage +``` + +</TabItem> +</Tabs> + +Great! Try that out in the browser and verify that you can get back and forth. + +![image](https://user-images.githubusercontent.com/300/145899850-2906c2e3-4ec1-4f8a-9c95-e43b0f7da73f.png) + +As a world-class developer you probably saw that copy-and-pasted `<header>` and gasped in disgust. We feel you. That's why Redwood has a little something called _Layouts_. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter2/cells.md b/docs/versioned_docs/version-7.0/tutorial/chapter2/cells.md new file mode 100644 index 000000000000..e6de453bd3c7 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter2/cells.md @@ -0,0 +1,672 @@ +# Cells + +The features we listed at the end of the last page (loading state, error messaging, blank slate text) are common in most web apps. We wanted to see if there was something we could do to make developers' lives easier when it comes to adding them to a typical component. We think we've come up with something to help. We call them _Cells_. Cells provide a simpler and more declarative approach to data fetching. ([Read the full documentation about Cells](../../cells.md).) + +In addition to these states, cells are also responsible for their own data fetching. This means that rather than fetching data in some parent component and then passing props down to the child components that need them, a cell is completely self-contained and fetches and displays its own data! Let's add one to our blog to get a feel for how they work. + +When you create a cell you export several specially named constants and then Redwood takes it from there. A typical cell may look something like: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx +export const QUERY = gql` + query FindPosts { + posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>No posts yet!</div> + +export const Failure = ({ error }) => ( + <div>Error loading posts: {error.message}</div> +) + +export const Success = ({ posts }) => { + return posts.map((post) => ( + <article key={post.id}> + <h2>{post.title}</h2> + <div>{post.body}</div> + </article> + )) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx +import type { FindPosts } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query FindPosts { + posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>No posts yet!</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div>Error loading posts: {error.message}</div> +) + +export const Success = ({ posts }: CellSuccessProps<FindPosts>) => { + return posts.map((post) => ( + <article key={post.id}> + <h2>{post.title}</h2> + <div>{post.body}</div> + </article> + )) +} +``` + +</TabItem> +</Tabs> + +When React renders this component, Redwood will perform the `QUERY` and display the `Loading` component until a response is received. + +Once the query returns, it will display one of three states: + - If there was an error, the `Failure` component + - If the data return is empty (`null` or empty array), the `Empty` component + - Otherwise, the `Success` component + +There are also some lifecycle helpers like `beforeQuery` (for manipulating any props before being given to the `QUERY`) and `afterQuery` (for manipulating the data returned from GraphQL but before being sent to the `Success` component). + +The minimum you need for a cell are the `QUERY` and `Success` exports. If you don't export an `Empty` component, empty results will be sent to your `Success` component. If you don't provide a `Failure` component, you'll get error output sent to the console. + +A guideline for when to use cells is if your component needs some data from the database or other service that may be delayed in responding. Let Redwood worry about juggling what is displayed when and you can focus on the happy path of the final, rendered component populated with data. + + +<ShowForTs> + +:::tip Wait... what are those types? + +Redwood comes with some built-in utility types. You can see two of them in the example above: `CellSuccessProps` and `CellFailureProps`. Read more about them [here](typescript/utility-types.md). + +Also notice the `FindPosts` type imported from `types/graphql`. This and other types are generated for you automatically—when you have the dev server running—based on the GraphQL query in your Cell. More about generated types [here](typescript/generated-types.md). + +::: + +</ShowForTs> + +### Our First Cell + +Usually in a blog the homepage will display a list of recent posts. This list is a perfect candidate for our first cell. + +:::info Wait, don't we already have a home page? + +We do, but you will generally want to use a *cell* when you need data from the database. A best practice for Redwood is to create a Page for each unique URL your app has, but that you fetch and display data in Cells. So the existing HomePage will render this new cell as a child. + +::: + +As you'll see repeatedly going forward, Redwood has a generator for this feature! Let's call this the "Articles" cell, since "Posts" was already used by our scaffold generator, and although the names won't clash (the scaffold files were created in the `Post` directory), it will be easier to keep them straight in our heads if the names are fairly different from each other. We're going to be showing multiple things, so we'll use the plural version "Articles," rather than "Article": + +```bash +yarn rw g cell Articles +``` + +This command will result in a new file at `/web/src/components/ArticlesCell/ArticlesCell.{jsx,tsx}` (and `test.{jsx,tsx}` `mock.{js,ts}` and `stories.{jsx,tsx}` files—more on those in [chapter 5 of the tutorial](../chapter5/storybook.md)!). This file will contain some boilerplate to get you started: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +export const QUERY = gql` + query ArticlesQuery { + articles { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ articles }) => { + return ( + <ul> + {articles.map((item) => { + return <li key={item.id}>{JSON.stringify(item)}</li> + })} + </ul> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +import type { ArticlesQuery } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query ArticlesQuery { + articles { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + <ul> + {articles.map((item) => { + return <li key={item.id}>{JSON.stringify(item)}</li> + })} + </ul> + ) +} +``` + +</TabItem> +</Tabs> + +:::info Indicating Multiplicity to the Cell Generator + +When generating a cell you can use any case you'd like and Redwood will do the right thing when it comes to naming. These will all create the same filename (`web/src/components/BlogArticlesCell/BlogArticlesCell.{jsx,tsx}`): + +```bash +yarn rw g cell blog_articles +yarn rw g cell blog-articles +yarn rw g cell blogArticles +yarn rw g cell BlogArticles +``` + +You will need _some_ kind of indication that you're using more than one word: either snake_case (`blog_articles`), kebab-case (`blog-articles`), camelCase (`blogArticles`) or PascalCase (`BlogArticles`). + +Calling `yarn redwood g cell blogarticles` (without any indication that we're using two words) will generate a file at `web/src/components/BlogarticlesCell/BlogarticlesCell.{jsx,tsx}`. + +::: + +To get you off and running as quickly as possible the generator assumes you've got a root GraphQL query named the same thing as your cell and gives you the minimum query needed to get something out of the database. In this case the query is named `articles`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + articles { + id + } + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + articles { + id + } + } +` +``` + +</TabItem> +</Tabs> + +However, this is not a valid query name for our existing Posts SDL (`api/src/graphql/posts.sdl.{js,ts}`) and Service (`api/src/services/posts/posts.{js,ts}`). (To see where these files come from, go back to the [Creating a Post Editor section](getting-dynamic.md#creating-a-post-editor) in the *Getting Dynamic* part.) Redwood names the query elements after the cell itself for convenience (more often than not you'll be creating a cell for a specific model), but in this case our cell name doesn't match our model name so we'll need to make some manual tweaks. + +We'll have to rename them to `posts` in both the query name and in the prop name in `Success`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + posts { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +// highlight-next-line +export const Success = ({ posts }) => { + return ( + <ul> + // highlight-next-line + {posts.map((item) => { + return <li key={item.id}>{JSON.stringify(item)}</li> + })} + </ul> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +import type { ArticlesQuery } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + posts { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +// highlight-next-line +export const Success = ({ posts }: CellSuccessProps<ArticlesQuery>) => { + return ( + <ul> + // highlight-next-line + {posts.map((item) => { + return <li key={item.id}>{JSON.stringify(item)}</li> + })} + </ul> + ) +} +``` + +</TabItem> +</Tabs> + +<ShowForTs> + +:::tip Using generated types + +At this point, you might see an error in your Cell while trying to import from `types/graphql`: "The type ArticlesQuery does not exist" + +When you have the dev server (via `yarn rw dev`) running, the CLI watches files for changes and triggers type generation automatically, but you can trigger it manually too by running: + +```bash +yarn rw g types +``` + +This looks at your Cell's `QUERY` and—as long as it's valid—tries to automatically create a TypeScript type for you to use in your code. + +::: + +</ShowForTs> + +Let's plug this cell into our `HomePage` and see what happens: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/HomePage/HomePage.jsx" +import { MetaTags } from '@redwoodjs/web' + +// highlight-next-line +import ArticlesCell from 'src/components/ArticlesCell' + +const HomePage = () => { + return ( + <> + <MetaTags title="Home" description="Home page" /> + // highlight-next-line + <ArticlesCell /> + </> + ) +} + +export default HomePage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/HomePage/HomePage.tsx" +import { MetaTags } from '@redwoodjs/web' + +// highlight-next-line +import ArticlesCell from 'src/components/ArticlesCell' + +const HomePage = () => { + return ( + <> + <MetaTags title="Home" description="Home page" /> + // highlight-next-line + <ArticlesCell /> + </> + ) +} + +export default HomePage +``` + +</TabItem> +</Tabs> + +The browser should actually show the `id` and a GraphQL-specific `__typename` properties for any posts in the database. If you just see "Empty" then return to the scaffold we created [last time](getting-dynamic.md#creating-a-post-editor) and add a couple. Neat! + +<img src="https://user-images.githubusercontent.com/300/145910525-6a9814d1-0808-4f7e-aeab-303bd5dbac5e.png" alt="Showing articles in the database" /> + +:::info + +**In the `Success` component, where did `posts` come from?** + +In the `QUERY` statement, the query we're calling is `posts`. Whatever the name of this query is, that's the name of the prop that will be available in `Success` with your data. + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + posts { + id + } + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + posts { + id + } + } +` +``` + +</TabItem> +</Tabs> + +You can also alias the name of the variable containing the result of the GraphQL query, and that will be the name of the prop: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + articles: posts { + id + } + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + articles: posts { + id + } + } +` +``` + +</TabItem> +</Tabs> + +Now `articles` will be available in `Success` instead of `posts`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript +export const Success = ({ articles }) => { ... } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { ... } +``` + +</TabItem> +</Tabs> + +::: + +In fact, let's use the aforementioned alias so that the name of our cell, and the data we're iterating over, is consistent: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + articles: posts { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +// highlight-next-line +export const Success = ({ articles }) => { + return ( + <ul> + // highlight-next-line + {articles.map((item) => { + return <li key={item.id}>{JSON.stringify(item)}</li> + })} + </ul> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +export const QUERY = gql` + query ArticlesQuery { + // highlight-next-line + articles: posts { + id + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +// highlight-next-line +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + <ul> + // highlight-next-line + {articles.map((item) => { + return <li key={item.id}>{JSON.stringify(item)}</li> + })} + </ul> + ) +} +``` + +</TabItem> +</Tabs> + +In addition to the `id` that was added to the `query` by the generator, let's get the `title`, `body`, and `createdAt` values as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="web/src/components/ArticlesCell/ArticlesCell.jsx" +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + // highlight-start + title + body + createdAt + // highlight-end + } + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + // highlight-start + title + body + createdAt + // highlight-end + } + } +` +``` + +</TabItem> +</Tabs> + +The page should now show a dump of all the data you created for any blog posts you scaffolded: + +<img src="https://user-images.githubusercontent.com/300/145911009-b83fd07f-0412-489c-a088-4e89faceea1c.png" alt="Articles with all DB values" /> + +Now we're in the realm of good ol' React components, so just build out the `Success` component to display the blog post in a nicer format: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +export const Success = ({ articles }) => { + return ( + // highlight-start + <> + {articles.map((article) => ( + <article key={article.id}> + <header> + <h2>{article.title}</h2> + </header> + <p>{article.body}</p> + <div>Posted at: {article.createdAt}</div> + </article> + ))} + </> + // highlight-end + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + // highlight-start + <> + {articles.map((article) => ( + <article key={article.id}> + <header> + <h2>{article.title}</h2> + </header> + <p>{article.body}</p> + <div>Posted at: {article.createdAt}</div> + </article> + ))} + </> + // highlight-end + ) +} +``` + +</TabItem> +</Tabs> + +And just like that we have a blog! It may be the most basic blog that ever graced the internet, but it's something! You can create/edit/delete posts and the world can view them on the homepage. (Don't worry, we've got more features to add.) + +![Nicely formatted blog articles](https://user-images.githubusercontent.com/300/145911342-b3a4bb44-e635-4bc5-8df7-a824661b2714.png) + +### Summary + +To recap, what did we actually do to get this far? + +1. Generate the homepage +2. Generate the blog layout +3. Define the database schema +4. Run migrations to update the database and create a table +5. Scaffold a CRUD interface to the database table +6. Create a cell to load the data and take care of loading/empty/failure/success states +7. Add the cell to the page + +The last few steps will become a standard lifecycle of new features as you build a Redwood app. + +So far, other than a little HTML, we haven't had to do much by hand. And we especially didn't have to write a bunch of plumbing just to move data from one place to another. It makes web development a little more enjoyable, don't you think? + +We're going to add some more features to our app, but first let's take a detour to learn about how Redwood accesses our database and what these SDL and services files are for. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter2/getting-dynamic.md b/docs/versioned_docs/version-7.0/tutorial/chapter2/getting-dynamic.md new file mode 100644 index 000000000000..c67b0712b314 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter2/getting-dynamic.md @@ -0,0 +1,203 @@ +# Getting Dynamic + +<div class="video-container"> + <iframe src="https://www.youtube.com/embed/cb_PseqpoG8?rel=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; modestbranding; showinfo=0; fullscreen"></iframe> +</div> + +These two pages are great and all but where are the actual blog posts in this blog? Let's work on those next. + +For the purposes of our tutorial we're going to get our blog posts from a database. Because relational databases are still the workhorses of many complex (and not-so-complex) web applications, we've made SQL access first-class. For Redwood apps, it all starts with the schema. + +### Creating the Database Schema + +We need to decide what data we'll need for a blog post. We'll expand on this at some point, but at a minimum we'll want to start with: + +- `id` the unique identifier for this blog post (all of our database tables will have one of these) +- `title` something click-baity like "Top 10 JavaScript Frameworks Named After Trees—You Won't Believe Number 4!" +- `body` the actual content of the blog post +- `createdAt` a timestamp of when this record was created in the database + +We use [Prisma](https://www.prisma.io/) to talk to the database. Prisma has another library called [Migrate](https://www.prisma.io/docs/concepts/components/prisma-migrate) that lets us update the database's schema in a predictable way and snapshot each of those changes. Each change is called a _migration_ and Migrate will create one when we make changes to our schema. + +First let's define the data structure for a post in the database. Open up `api/db/schema.prisma` and add the definition of our Post table (remove any "sample" models that are present in the file, like the `UserExample` model). Once you're done, the entire schema file should look like: + +```javascript title="api/db/schema.prisma" +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +// highlight-start +model Post { + id Int @id @default(autoincrement()) + title String + body String + createdAt DateTime @default(now()) +} +// highlight-end +``` + +This says that we want a table called `Post` and it should have: + +- An `id` column of type `Int` lets Prisma know this is the column it should use as the `@id` (for it to create relationships to other tables) and that the `@default` value should be Prisma's special `autoincrement()` method letting it know that the DB should set it automatically when new records are created +- A `title` field that will contain a `String` +- A `body` field that will contain a `String` +- A `createdAt` field that will be a `DateTime` and will `@default` to `now()` when we create a new record (so we don't have to set the time manually in our app, the database will do it for us) + +:::info Integer vs. String IDs + +For the tutorial we're keeping things simple and using an integer for our ID column. Some apps may want to use a CUID or a UUID, which Prisma supports. In that case you would use `String` for the datatype instead of `Int` and use `cuid()` or `uuid()` instead of `autoincrement()`: + +`id String @id @default(cuid())` + +Integers make for nicer URLs like https://redwoodblog.com/posts/123 instead of https://redwoodblog.com/posts/eebb026c-b661-42fe-93bf-f1a373421a13. + +Take a look at the [official Prisma documentation](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-schema/data-model#defining-an-id-field) for more on ID fields. + +::: + +### Migrations + +Now we'll want to snapshot the schema changes as a migration: + +```bash +yarn rw prisma migrate dev +``` + +:::tip + +From now on we'll use the shorter `rw` alias instead of the full `redwood` argument. + +::: + +You'll be prompted to give this migration a name. Something that describes what it does is ideal, so how about "create post" (without the quotes, of course). This is for your own benefit—neither Redwood nor Prisma care about the migration's name, it's just a reference when looking through old migrations and trying to find when you created or modified something specific. + +After the command completes you'll see a new subdirectory created under `api/db/migrations` that has a timestamp and the name you gave the migration. It will contain a single file named `migration.sql` that contains the SQL necessary to bring the database structure up-to-date with whatever `schema.prisma` looked like at the time the migration was created. So, you always have a single `schema.prisma` file that describes what the database structure should look like right *now* and the migrations trace the history of the changes that took place to get to the current state. It's kind of like version control for your database structure, which can be pretty handy. + +In addition to creating the migration file, the above command will also execute the SQL against the database, which "applies" the migration. The final result is a new database table called `Post` with the fields we defined above. + +### Prisma Studio + +A database is a pretty abstract thing: where's the data? What's it look like? How can I access it without creating a UI in my web app? Prisma provides a tool called [Studio](https://www.prisma.io/studio) which provides a nice web app view into your database: + +![image](https://user-images.githubusercontent.com/300/145903848-2615027c-dea1-4aff-bc11-02f03ba68de0.png) + +(Ours won't have any data there yet.) To open Prisma Studio, run the command: + +```bash +yarn rw prisma studio +``` + +A new browser should open to [http://localhost:5555](http://localhost:5555) and now you can view and manipulate data in the database directly! + +![image](https://user-images.githubusercontent.com/300/148606893-8d899ce7-4996-4f5e-a7f5-7c8c8483860c.png) + +Click on "Post" and you'll see an empty database table. Let's have our app start putting some posts in there! + +### Creating a Post Editor + +We haven't decided on the look and feel of our site yet, but wouldn't it be amazing if we could play around with posts without having to build a bunch of pages that we'll probably throw away once the design team gets back to us? As you can imagine, we wouldn't have thrown around this scenario unless Redwood had a solution! + +Let's generate everything we need to perform all the CRUD (Create, Retrieve, Update, Delete) actions on posts so we can not only verify that we've got the right fields in the database, but that it will let us get some sample posts in there so we can start laying out our pages and see real content. Redwood has a *generator* for just this occasion: + +```bash +yarn rw g scaffold post +``` + +Let's point the browser to [http://localhost:8910/posts](http://localhost:8910/posts) and see what we have: + +<img src="https://user-images.githubusercontent.com/300/73027952-53c03080-3de9-11ea-8f5b-d62a3676bbef.png" /> + +Well that's barely more than we got when we generated a page. What happens if we click that "New Post" button? + +<img src="https://user-images.githubusercontent.com/300/73028004-72262c00-3de9-11ea-8924-66d1cc1fceb6.png" /> + +Okay, now we're getting somewhere. Fill in the title and body and click "Save". + +<img src="https://user-images.githubusercontent.com/300/73028757-08a71d00-3deb-11ea-8813-046c8479b439.png" /> + +Did we just create a post in the database? And then show that post here on this page? Yup! Try creating another: + +<img src="https://user-images.githubusercontent.com/300/73028839-312f1700-3deb-11ea-8e83-0012a3cf689d.png" /> + +But what if we click "Edit" on one of those posts? + +<img src="https://user-images.githubusercontent.com/300/73031307-9802ff00-3df0-11ea-9dc1-ea9af8f21890.png" /> + +Okay but what if we click "Delete"? + +<img src="https://user-images.githubusercontent.com/300/73031339-aea95600-3df0-11ea-9d58-475d9ef43988.png" /> + +So, Redwood just created all the pages, components and services necessary to perform all CRUD actions on our posts table. No need to even open Prisma Studio or login through a terminal window and write SQL from scratch. Redwood calls these _scaffolds_. + +:::warning + +If you head back to VSCode at some point and get a notice in one of the generated Post cells about `Cannot query "posts" on type "Query"` don't worry: we've seen this from time to time on some systems. There are two easy fixes: + +1. Run `yarn rw g types` in a terminal +2. Reload the GraphQL engine in VSCode: open the Command Palette (Cmd+Shift+P for Mac, Ctrl+Shift+P for Windows) and find "VSCode GraphQL: Manual Restart" + +::: + +Here's what happened when we ran that `yarn rw g scaffold post` command: + +- Created several _pages_ in `web/src/pages/Post`: + - `EditPostPage` for editing a post + - `NewPostPage` for creating a new post + - `PostPage` for showing the detail of a post + - `PostsPage` for listing all the posts +- Created a _layout_ file in `web/src/layouts/ScaffoldLayout/ScaffoldLayout.{jsx,tsx}` that serves as a container for pages with common elements like page heading and "New Posts" button +- Created routes wrapped in the `Set` component with the layout as `ScaffoldLayout` for those pages in `web/src/Routes.{jsx,tsx}` +- Created three _cells_ in `web/src/components/Post`: + - `EditPostCell` gets the post to edit in the database + - `PostCell` gets the post to display + - `PostsCell` gets all the posts +- Created four _components_, also in `web/src/components/Post`: + - `NewPost` displays the form for creating a new post + - `Post` displays a single post + - `PostForm` the actual form used by both the New and Edit components + - `Posts` displays the table of all posts +- Added an _SDL_ file to define several GraphQL queries and mutations in `api/src/graphql/posts.sdl.{jsx,ts}` +- Added a _services_ file in `api/src/services/posts/posts.{js,ts}` that makes the Prisma client calls to get data in and out of the database + +Pages and components/cells are nicely contained in `Post` directories to keep them organized while the layout is at the top level since there's only one of them. + +Whew! That may seem like a lot of stuff but we wanted to follow best-practices and separate out common functionality into individual components, just like you'd do in a real app. Sure we could have crammed all of this functionality into a single component, but we wanted these scaffolds to set an example of good development habits: we have to practice what we preach! + +:::info Generator Naming Conventions + +You'll notice that some of the generated parts have plural names and some have singular. This convention is borrowed from Ruby on Rails which uses a more "human" naming convention: if you're dealing with multiple of something (like the list of all posts) it will be plural. If you're only dealing with a single something (like creating a new post) it will be singular. It sounds natural when speaking, too: "show me a list of all the posts" and "I'm going to create a new post." + +As far as the generators are concerned: + +- Services filenames are always plural. +- The methods in the services will be singular or plural depending on if they are expected to return multiple posts or a single post (`posts` vs. `createPost`). +- SDL filenames are plural. +- Pages that come with the scaffolds are plural or singular depending on whether they deal with many or one post. When using the `page` generator it will stick with whatever name you give on the command line. +- Layouts use the name you give them on the command line. +- Components and cells, like pages, will be plural or singular depending on context when created by the scaffold generator, otherwise they'll use the given name on the command line. +- Route names for scaffolded pages are singular or plural, the same as the pages they're routing to, otherwise they are identical to the name of the page you generated. + +Also note that it's the model name part that's singular or plural, not the whole word. So it's `PostsCell` and `PostsPage`, not `PostCells` or `PostPages`. + +You don't have to follow this convention once you start creating your own parts but we recommend doing so. The Ruby on Rails community has come to love this nomenclature even though many people complained when first exposed to it! + +::: + +### Creating a Blog Homepage + +We could start replacing these pages one by one as we settle on a look and feel for our blog, but do we need to? The public facing site won't let viewers create, edit or delete posts, so there's no reason to re-create the wheel or update these pages with a look and feel that matches the public facing site. Why don't we keep these as our admin pages and create new ones for the public facing site. + +Let's think about what the general public can do and that will inform what pages we need to build: + +1. View a list of posts (without links to edit/delete) +2. View a single post + +Starting with #1, we already have a `HomePage` which would be a logical place to view the list of posts, so let's just add the posts to the existing page. We need to get the content from the database and we don't want the user to just see a blank screen in the meantime (depending on network conditions, server location, etc), so we'll want to show some kind of loading message or animation. And if there's an error retrieving the data we should handle that as well. And what about when we open source this blog engine and someone puts it live without any content in the database? It'd be nice if there was some kind of blank slate message until their first post is created. + +Oh boy, our first page with data and we already have to worry about loading states, errors, and blank slates...or do we? diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter2/routing-params.md b/docs/versioned_docs/version-7.0/tutorial/chapter2/routing-params.md new file mode 100644 index 000000000000..ff502bb040ac --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter2/routing-params.md @@ -0,0 +1,828 @@ +# Routing Params + +Now that we have our homepage listing all the posts, let's build the "detail" page—a canonical URL that displays a single post. First we'll generate the page and route: + +```bash +yarn rw g page Article +``` + +Now let's link the title of the post on the homepage to the detail page (and include the `import` for `Link` and `routes`): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +// highlight-next-line +import { Link, routes } from '@redwoodjs/router' + +// QUERY, Loading, Empty and Failure definitions... + +export const Success = ({ articles }) => { + return ( + <> + {articles.map((article) => ( + <article key={article.id}> + <header> + <h2> + // highlight-next-line + <Link to={routes.article()}>{article.title}</Link> + </h2> + </header> + <p>{article.body}</p> + <div>Posted at: {article.createdAt}</div> + </article> + ))} + </> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +// highlight-next-line +import { Link, routes } from '@redwoodjs/router' + +// QUERY, Loading, Empty and Failure definitions... + +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + <> + {articles.map((article) => ( + <article key={article.id}> + <header> + <h2> + // highlight-next-line + <Link to={routes.article()}>{article.title}</Link> + </h2> + </header> + <p>{article.body}</p> + <div>Posted at: {article.createdAt}</div> + </article> + ))} + </> + ) +} +``` + +</TabItem> +</Tabs> + +If you click the link on the title of the blog post you should see the boilerplate text on `ArticlePage`: + +![Article page](https://user-images.githubusercontent.com/300/146100107-895a37af-7549-46fe-8802-2628fe6b49ed.png) + +But what we really need is to specify _which_ post we want to view on this page. It would be nice to be able to specify the ID of the post in the URL with something like `/article/1`. Let's tell the `<Route>` to expect another part of the URL, and when it does, give that part a name that we can reference later: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +<Route path="/article/{id}" page={ArticlePage} name="article" /> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/Routes.tsx" +<Route path="/article/{id}" page={ArticlePage} name="article" /> +``` + +</TabItem> +</Tabs> + +Notice the `{id}`. Redwood calls these _route parameters_. They say "whatever value is in this position in the path, let me reference it by the name inside the curly braces". And while we're in the routes file, lets move the route inside the `Set` with the `BlogLayout`. + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +import { Router, Route, Set } from '@redwoodjs/router' +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + <Router> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/posts" page={PostPostsPage} name="posts" /> + </Set> + <Set wrap={BlogLayout}> + // highlight-next-line + <Route path="/article/{id}" page={ArticlePage} name="article" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/Routes.tsx" +import { Router, Route, Set } from '@redwoodjs/router' +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + <Router> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/posts" page={PostPostsPage} name="posts" /> + </Set> + <Set wrap={BlogLayout}> + // highlight-next-line + <Route path="/article/{id}" page={ArticlePage} name="article" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +</Tabs> + +Cool, cool, cool. Now we need to construct a link that has the ID of a post in it: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +<h2> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> +</h2> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +<h2> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> +</h2> +``` + +</TabItem> +</Tabs> + +<ShowForTs> + +:::info Wait... why am I getting a TypeScript error? + +When you have your dev server running, the Redwood CLI will watch your project and generate types. You can regenerate these types manually too, by running `yarn rw g types`. + +In this case, the path `/article/{id}` doesn't specify the type of `id` - so it defaults to `string` - where as our article id is actually a `number`. We'll tackle this in the next few sections - so you can ignore the red squiggle for now, and power through! +::: + +</ShowForTs> + + +For routes with route parameters, the named route function expects an object where you specify a value for each parameter. If you click on the link now, it will indeed take you to `/article/1` (or `/article/2`, etc, depending on the ID of the post). + +You may have noticed that when trying to view the new single-article page that you're getting an error. This is because the boilerplate code included with the page when it was generated includes a link to the page itself—a link which now requires an `id`. Remove the link and your page should be working again: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```diff title="web/src/pages/ArticlePage.js" +- import { Link, routes } from '@redwoodjs/router' + import { MetaTags } from '@redwoodjs/web' + + const ArticlePage = () => { + return ( + <> + <MetaTags title="Article" description="Article page" /> + + <h1>ArticlePage</h1> + <p> + Find me in <code>./web/src/pages/ArticlePage/ArticlePage.js</code> + </p> + <p> + My default route is named <code>article</code>, link to me with ` +- <Link to={routes.article()}>Article</Link>` + </p> + </> + ) + } + + export default ArticlePage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```diff title="web/src/pages/ArticlePage.tsx" +- import { Link, routes } from '@redwoodjs/router' + import { MetaTags } from '@redwoodjs/web' + + const ArticlePage = () => { + return ( + <> + <MetaTags title="Article" description="Article page" /> + + <h1>ArticlePage</h1> + <p> + Find me in <code>./web/src/pages/ArticlePage/ArticlePage.tsx</code> + </p> + <p> + My default route is named <code>article</code>, link to me with ` +- <Link to={routes.article()}>Article</Link>` + </p> + </> + ) + } + + export default ArticlePage +``` + +</TabItem> +</Tabs> + +### Using the Param + +Ok, so the ID is in the URL. What do we need next in order to display a specific post? It sounds like we'll be doing some data retrieval from the database, which means we want a cell. Note the singular `Article` here since we're only displaying one: + +```bash +yarn rw g cell Article +``` + +And then we'll use that cell in `ArticlePage`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ArticlePage/ArticlePage.jsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import ArticleCell from 'src/components/ArticleCell' + +const ArticlePage = () => { + return ( + <> + <MetaTags title="Article" description="Article page" /> + + // highlight-next-line + <ArticleCell /> + </> + ) +} + +export default ArticlePage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/ArticlePage/ArticlePage.tsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import ArticleCell from 'src/components/ArticleCell' + +const ArticlePage = () => { + return ( + <> + <MetaTags title="Article" description="Article page" /> + + // highlight-next-line + <ArticleCell /> + </> + ) +} + +export default ArticlePage +``` + +</TabItem> +</Tabs> + +Now over to the cell, we need access to that `{id}` route param so we can look up the ID of the post in the database. Let's alias the real query name `post` to `article` and retrieve some more fields: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticleCell/ArticleCell.jsx" +export const QUERY = gql` + query FindArticleQuery($id: Int!) { + // highlight-next-line + article: post(id: $id) { + id + // highlight-start + title + body + createdAt + // highlight-end + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ article }) => { + return <div>{JSON.stringify(article)}</div> +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticleCell/ArticleCell.tsx" +import type { FindArticleQuery, FindArticleQueryVariables } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query FindArticleQuery($id: Int!) { + // highlight-next-line + article: post(id: $id) { + id + // highlight-start + title + body + createdAt + // highlight-end + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ article }: CellSuccessProps<FindArticleQuery, FindArticleQueryVariables>) => { + return <div>{JSON.stringify(article)}</div> +} +``` + +</TabItem> +</Tabs> + +Okay, we're getting closer. Still, where will that `$id` come from? Redwood has another trick up its sleeve. Whenever you put a route param in a route, that param is automatically made available to the page that route renders. Which means we can update `ArticlePage` to look like this: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ArticlePage/ArticlePage.jsx" +import { MetaTags } from '@redwoodjs/web' +import ArticleCell from 'src/components/ArticleCell' + +// highlight-next-line +const ArticlePage = ({ id }) => { + return ( + <> + <MetaTags title="Article" description="Article page" /> + + // highlight-next-line + <ArticleCell id={id} /> + </> + ) +} + +export default ArticlePage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/ArticlePage/ArticlePage.tsx" +import { MetaTags } from '@redwoodjs/web' +import ArticleCell from 'src/components/ArticleCell' + +// highlight-start +interface Props { + id: number +} +// highlight-end + +// highlight-next-line +const ArticlePage = ({ id }: Props) => { + return ( + <> + <MetaTags title="Article" description="Article page" /> + + // highlight-next-line + <ArticleCell id={id} /> + </> + ) +} + +export default ArticlePage +``` + +</TabItem> +</Tabs> + +`id` already exists since we named our route param `{id}`. Thanks Redwood! But how does that `id` end up as the `$id` GraphQL parameter? If you've learned anything about Redwood by now, you should know it's going to take care of that for you. By default, any props you give to a cell will automatically be turned into variables and given to the query. "No way," you're saying. Way. + +We can prove it! Try going to the detail page for a post in the browser and—uh oh. Hmm: + +![Article error message](https://user-images.githubusercontent.com/300/146100555-cea8806a-70aa-43e5-b2b4-d49d84014c4e.png) + +:::tip + +This error message you're seeing is thanks to the `Failure` section of our Cell! + +::: + +``` +Error: Variable "$id" got invalid value "1"; Int cannot represent non-integer value: "1" +``` + +It turns out that route params are extracted as strings from the URL, but GraphQL wants an integer for the `id`. We could use `parseInt()` to convert it to a number before passing it into `ArticleCell`, but we can do better than that. + +### Route Param Types + +What if you could request the conversion right in the route's path? Introducing **route param types**. It's as easy as adding `:Int` to our existing route param: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +<Route path="/article/{id:Int}" page={ArticlePage} name="article" /> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/Routes.tsx" +<Route path="/article/{id:Int}" page={ArticlePage} name="article" /> +``` + +</TabItem> +</Tabs> + +Voilà! Not only will this convert the `id` param to a number before passing it to your Page, it will prevent the route from matching unless the `id` path segment consists entirely of digits. If any non-digits are found, the router will keep trying other routes, eventually showing the `NotFoundPage` if no routes match. + +:::info What if I want to pass some other prop to the cell that I don't need in the query, but do need in the Success/Loader/etc. components? + +All of the props you give to the cell will be automatically available as props in the render components. Only the ones that match the GraphQL variables list will be given to the query. You get the best of both worlds! In our post display above, if you wanted to display some random number along with the post (for some contrived, tutorial-like reason), just pass that prop: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx +<ArticleCell id={id} rand={Math.random()} /> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx +<ArticleCell id={id} rand={Math.random()} /> +``` + +</TabItem> +</Tabs> + +And get it, along with the query result (and even the original `id` if you want) in the component: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript +export const Success = ({ article, id, rand }) => { + // ... +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx +interface Props extends CellSuccessProps<FindArticleQuery, FindArticleQueryVariables> { + id: number + rand: number +} + +export const Success = ({ article, id, rand }: Props) => { + // ... +} +``` + +</TabItem> +</Tabs> + +Thanks again, Redwood! + +::: + +### Displaying a Blog Post + +Now let's display the actual post instead of just dumping the query result. We could copy the display from the articles on the homepage, but that's not very reusable! This is the perfect place for a good old fashioned component—define the display once and then reuse the component on the homepage and the article display page. Both `ArticlesCell` and `ArticleCell` will display our new component. Let's Redwood-up a component (I just invented that phrase): + +```bash +yarn rw g component Article +``` + +Which creates `web/src/components/Article/Article.{jsx,tsx}` (and corresponding test and more!) as a super simple React component: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +const Article = () => { + return ( + <div> + <h2>{'Article'}</h2> + <p>{'Find me in ./web/src/components/Article/Article.jsx'}</p> + </div> + ) +} + +export default Article +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/Article/Article.tsx" +const Article = () => { + return ( + <div> + <h2>{'Article'}</h2> + <p>{'Find me in ./web/src/components/Article/Article.tsx'}</p> + </div> + ) +} + +export default Article +``` + +</TabItem> +</Tabs> + +:::info + +You may notice we don't have any explicit `import` statements for `React` itself. We (the Redwood dev team) got tired of constantly importing it over and over again in every file so we automatically import it for you! + +::: + +Let's copy the `<article>` section from `ArticlesCell` and put it here instead, taking the `article` itself in as a prop: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +// highlight-next-line +import { Link, routes } from '@redwoodjs/router' + +// highlight-next-line +const Article = ({ article }) => { + return ( + // highlight-start + <article> + <header> + <h2> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div>{article.body}</div> + <div>Posted at: {article.createdAt}</div> + </article> + // highlight-end + ) +} + +export default Article +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/Article/Article.tsx" +// highlight-next-line +import { Link, routes } from '@redwoodjs/router' + +// highlight-next-line +import type { Post } from 'types/graphql' + +// highlight-start +interface Props { + article: Post +} +// highlight-end + +// highlight-next-line +const Article = ({ article }: Props) => { + return ( + // highlight-start + <article> + <header> + <h2> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div>{article.body}</div> + <div>Posted at: {article.createdAt}</div> + </article> + // highlight-end + ) +} + +export default Article +``` + +</TabItem> +</Tabs> + +And update `ArticlesCell` to use this new component instead: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +// highlight-next-line +import Article from 'src/components/Article' + +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ articles }) => { + return ( + <> + {articles.map((article) => ( + // highlight-next-line + <Article key={article.id} article={article} /> + ))} + </> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +// highlight-next-line +import Article from 'src/components/Article' + +import type { ArticlesQuery } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + <> + {articles.map((article) => ( + // highlight-next-line + <Article key={article.id} article={article} /> + ))} + </> + ) +} +``` + +</TabItem> +</Tabs> + +Last but not least we can update the `ArticleCell` to properly display our blog posts as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticleCell/ArticleCell.jsx" +// highlight-next-line +import Article from 'src/components/Article' + +export const QUERY = gql` + query FindArticleQuery($id: Int!) { + article: post(id: $id) { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ article }) => { + // highlight-next-line + return <Article article={article} /> +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/ArticleCell/ArticleCell.tsx" +// highlight-next-line +import Article from 'src/components/Article' + +import type { FindArticleQuery, FindArticleQueryVariables } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query FindArticleQuery($id: Int!) { + article: post(id: $id) { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ article }: CellSuccessProps<FindArticleQuery, FindArticleQueryVariables>) => { + // highlight-next-line + return <Article article={article} /> +} +``` + +</TabItem> +</Tabs> + +And there we go! We should be able to move back and forth between the homepage and the detail page. If you've only got one blog post then the homepage and single-article page will be identical! Head to the posts admin and create a couple more, won't you? + +![Article page showing an article](https://user-images.githubusercontent.com/300/146101296-f1d43812-45df-4f1e-a3da-4f6a085bfc08.png) + +:::info + +If you like what you've been seeing from the router, you can dive deeper into the [Redwood Router](../../router.md) guide. + +::: + +### Summary + +To recap: + +1. We created a new page to show a single post (the "detail" page). +2. We added a route to handle the `id` of the post and turn it into a route param, even coercing it into an integer. +3. We created a cell to fetch and display the post. +4. Redwood made the world a better place by making that `id` available to us at several key junctions in our code and even turning it into a number automatically. +5. We turned the actual post display into a standard React component and used it in both the homepage and new detail page. + diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter2/side-quest.md b/docs/versioned_docs/version-7.0/tutorial/chapter2/side-quest.md new file mode 100644 index 000000000000..6e0e31f28066 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter2/side-quest.md @@ -0,0 +1,194 @@ +# Side Quest: How Redwood Works with Data + +Redwood likes GraphQL. We think it's the API of the future. Our GraphQL implementation is built with [Apollo](https://www.apollographql.com/) (on the client) and [GraphQL Yoga & Envelop](https://www.graphql-yoga.com) (on the server). Remember in our file system layout, there was a directory `api/src/functions` and a single file in there, `graphql.{js,ts}`. If you were to deploy your app to a [serverless](https://en.wikipedia.org/wiki/Serverless_computing) stack (which we will do later in the [Deployment](../chapter4/deployment.md) section), that `graphql.{js,ts}` file would be compiled into a serverless function and would become the GraphQL API endpoint. Here's how a typical GraphQL query works its way through your app: + +![Redwood Data Flow](https://user-images.githubusercontent.com/300/75402679-50bdd180-58ba-11ea-92c9-bb5a5f4da659.png) + +The front-end uses [Apollo Client](https://www.apollographql.com/docs/react/) to create a GraphQL payload sent to [GraphQL Yoga](https://www.graphql-yoga.com) and [Envelop](https://www.envelop.dev/docs), which that `graphql.{js,ts}` file acts as the entry-point to. + +The `*.sdl.{js,ts}` files in `api/src/graphql` define the GraphQL [Object](https://www.apollographql.com/docs/tutorial/schema/#object-types), [Query](https://www.apollographql.com/docs/tutorial/schema/#the-query-type) and [Mutation](https://www.apollographql.com/docs/tutorial/schema/#the-mutation-type) types and thus the interface of your API. + +Normally you would write a [resolver map](https://www.graphql-tools.com/docs/resolvers) that contains all your resolvers and explains to your GraphQL server how to map them to your SDL. But putting business logic directly in the resolver map would result in a very big file and horrible reusability, so you'd be well advised to extract all the logic out into a library of functions, import them, and call them from the resolver map, remembering to pass all the arguments through. Ugh, that's a lot of effort and boilerplate, and still doesn't result in very good reusability. + +Redwood has a better way! Remember the `api/src/services` directory? Redwood will automatically import and map resolvers from the corresponding **services** file onto your SDL. At the same time, it allows you to write those resolvers in a way that makes them easy to call as regular functions from other resolvers or services. That's a lot of awesomeness to contemplate, so let's show an example. + +Consider the following SDL JavaScript snippet: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/posts.sdl.js" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + } + + type Query { + posts: [Post!]! + post(id: Int!): Post! + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/posts.sdl.ts" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + } + + type Query { + posts: [Post!]! + post(id: Int!): Post! + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth + } +` +``` + +</TabItem> +</Tabs> + +In this example, Redwood will look in `api/src/services/posts/posts.{js,ts}` for the following five resolvers: + +- `posts()` +- `post({ id })` +- `createPost({ input })` +- `updatePost({ id, input })` +- `deletePost({ id })` + +To implement these, simply export them from the services file. They will usually get your data from a database, but they can do anything you want, as long as they return the proper types that GraphQL Yoga expects based on what you defined in `posts.sdl.{js,ts}`. + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/posts/posts.js" +import { db } from 'src/lib/db' + +export const posts = () => { + return db.post.findMany() +} + +export const post = ({ id }) => { + return db.post.findUnique({ + where: { id }, + }) +} + +export const createPost = ({ input }) => { + return db.post.create({ + data: input, + }) +} + +export const updatePost = ({ id, input }) => { + return db.post.update({ + data: input, + where: { id }, + }) +} + +export const deletePost = ({ id }) => { + return db.post.delete({ + where: { id }, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="api/src/services/posts/posts.ts" +import { db } from 'src/lib/db' +import type { QueryResolvers, MutationResolvers } from 'types/graphql' + +export const posts: QueryResolvers['posts'] = () => { + return db.post.findMany() +} + +export const post: QueryResolvers['post'] = ({ id }) => { + return db.post.findUnique({ + where: { id }, + }) +} + +export const createPost: MutationResolvers['createPost'] = ({ input }) => { + return db.post.create({ + data: input, + }) +} + +export const updatePost: MutationResolvers['updatePost'] = ({ id, input }) => { + return db.post.update({ + data: input, + where: { id }, + }) +} + +export const deletePost: MutationResolvers['deletePost'] = ({ id }) => { + return db.post.delete({ + where: { id }, + }) +} +``` + +</TabItem> +</Tabs> + +:::info + +Yoga/Envelop assumes these functions return promises, which `db` (an instance of `PrismaClient`) does. Yoga/Envelop waits for them to resolve before responding with your query results, so you don't need to worry about `async`/`await` or mess with callbacks yourself. + +::: + +You may be wondering why we call these implementation files "services". While this example blog doesn't get complex enough to show it off, services are intended to be an abstraction **above** single database tables. For example, a more complex app may have a "billing" service that uses both a `transactions` table and a `subscriptions` table. Some of the functionality of this service may be exposed via GraphQL, but only as much as you like. + +You don't have to make each function in your service available via GraphQL—leave it out of your `Query` and `Mutation` types and it won't exist as far as GraphQL is concerned. But you could still use it yourself—services are just JavaScript functions so you can use them anywhere you'd like: + +- From another service +- In a custom lambda function +- From a completely separate, custom API + +By dividing your app into well-defined services and providing an API for those services (both for internal use **and** for GraphQL), you will naturally start to enforce separation of concerns and increases the maintainability of your codebase. + +Back to our data flow: Yoga/Envelop has called the resolver which, in our case, retrieved data from the database. Yoga/Envelop digs into the object and returns only the key/values that were asked for in the GraphQL query. It then packages up the response in a GraphQL payload and returns it to the browser. + +If you're using a Redwood **cell** then this data will be available to you in your `Success` component ready to be looped through and/or displayed like any other React component. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter3/forms.md b/docs/versioned_docs/version-7.0/tutorial/chapter3/forms.md new file mode 100644 index 000000000000..f6e09f2bd305 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter3/forms.md @@ -0,0 +1,1321 @@ +# Building a Form + +<div class="video-container"> + <iframe src="https://www.youtube.com/embed/b0x8an_UZ98?rel=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; modestbranding; showinfo=0; fullscreen"></iframe> +</div> + +Wait, don't close your browser! You had to know this was coming eventually, didn't you? And you've probably realized by now we wouldn't even have this section in the tutorial unless Redwood had figured out a way to make forms less soul-sucking than usual. In fact, Redwood might even make you _love_ building forms. + +Well, love is a strong word. _Like_ building forms? + +_Tolerate_ building them? + +We already have a form or two in our app; remember our posts scaffold? And those work pretty well! How hard can it be? (Hopefully you haven't sneaked a peek at that code—what's coming next will be much more impressive if you haven't.) + +Let's build the simplest form that still makes sense for our blog, a "Contact Us" form. + +### The Page + +```bash +yarn rw g page contact +``` + +We can put a link to Contact in our layout's header: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.jsx" +import { Link, routes } from '@redwoodjs/router' + +const BlogLayout = ({ children }) => { + return ( + <> + <header> + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + <nav> + <ul> + <li> + <Link to={routes.home()}>Home</Link> + </li> + <li> + <Link to={routes.about()}>About</Link> + </li> + // highlight-start + <li> + <Link to={routes.contact()}>Contact</Link> + </li> + // highlight-end + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/layouts/BlogLayout/BlogLayout.tsx" +import { Link, routes } from '@redwoodjs/router' + +type BlogLayoutProps = { + children?: React.ReactNode +} + +const BlogLayout = ({ children }: BlogLayoutProps) => { + return ( + <> + <header> + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + <nav> + <ul> + <li> + <Link to={routes.home()}>Home</Link> + </li> + <li> + <Link to={routes.about()}>About</Link> + </li> + // highlight-start + <li> + <Link to={routes.contact()}>Contact</Link> + </li> + // highlight-end + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +</Tabs> + +And then use the `BlogLayout` for the `ContactPage` by making sure its wrapped by the same `<Set>` as the other pages in the routes file: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +import { Router, Route, Set } from '@redwoodjs/router' +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + <Router> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/posts" page={PostPostsPage} name="posts" /> + </Set> + <Set wrap={BlogLayout}> + <Route path="/article/{id:Int}" page={ArticlePage} name="article" /> + // highlight-next-line + <Route path="/contact" page={ContactPage} name="contact" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/Routes.tsx" +import { Router, Route, Set } from '@redwoodjs/router' +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + <Router> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/posts" page={PostPostsPage} name="posts" /> + </Set> + <Set wrap={BlogLayout}> + <Route path="/article/{id:Int}" page={ArticlePage} name="article" /> + // highlight-next-line + <Route path="/contact" page={ContactPage} name="contact" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +</Tabs> + +Double check that everything looks good and then let's get to the good stuff. + +### Introducing Form Helpers + +Forms in React are infamously annoying to work with. There are [Controlled Components](https://reactjs.org/docs/forms.html#controlled-components) and [Uncontrolled Components](https://reactjs.org/docs/uncontrolled-components.html) and [third party libraries](https://jaredpalmer.com/formik/) and many more workarounds to try and make forms in React as simple as they were originally intended to be in the HTML spec: an `<input>` field with a `name` attribute that gets submitted somewhere when you click a button. + +We think Redwood is a step or two in the right direction by not only freeing you from writing controlled component plumbing, but also dealing with validation and errors automatically. Let's see how it works. + +We won't be pulling any data from the database on our Contact page so we won't create a cell. Let's create the form right in the page. Redwood forms start with the...wait for it...`<Form>` tag: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form } from '@redwoodjs/forms' + +const ContactPage = () => { + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + // highlight-next-line + <Form></Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form } from '@redwoodjs/forms' + +const ContactPage = () => { + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + // highlight-next-line + <Form></Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +Well that was anticlimactic. You can't even see it in the browser. Let's add a form field so we can at least see something. Redwood ships with several inputs and a plain text input box is the `<TextField>`. We'll also give the field a `name` attribute so that once there are multiple inputs on this page we'll know which contains which data: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form, TextField } from '@redwoodjs/forms' + +const ContactPage = () => { + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form> + // highlight-next-line + <TextField name="input" /> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form, TextField } from '@redwoodjs/forms' + +const ContactPage = () => { + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form> + // highlight-next-line + <TextField name="input" /> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146102866-a1adaad2-b0b3-4bd8-b42d-4ed918bd3c82.png" /> + +Something is showing! Still, pretty boring. How about adding a submit button? + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form, TextField, Submit } from '@redwoodjs/forms' + +const ContactPage = () => { + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form> + <TextField name="input" /> + // highlight-next-line + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form, TextField, Submit } from '@redwoodjs/forms' + +const ContactPage = () => { + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form> + <TextField name="input" /> + // highlight-next-line + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146102817-e2f6c020-ef64-45bb-bdbb-48a484218678.png" /> + +We have what might actually be considered a real, bonafide form here. Try typing something in and clicking "Save". Nothing blew up on the page but we have no indication that the form submitted or what happened to the data. Next we'll get the data from our fields. + +### onSubmit + +Similar to a plain HTML form we'll give `<Form>` an `onSubmit` handler. That handler will be called with a single argument—an object containing all of the submitted form fields: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { Form, TextField, Submit } from '@redwoodjs/forms' + +const ContactPage = () => { + // highlight-start + const onSubmit = (data) => { + console.log(data) + } + // highlight-end + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + // highlight-next-line + <Form onSubmit={onSubmit}> + <TextField name="input" /> + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form, TextField, Submit, SubmitHandler } from '@redwoodjs/forms' + +// highlight-start +interface FormValues { + input: string +} +// highlight-end + +const ContactPage = () => { + // highlight-start + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + // highlight-end + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + // highlight-next-line + <Form onSubmit={onSubmit}> + <TextField name="input" /> + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +Now try filling in some data and submitting, then checking out the console in Web Inspector: + +<img src="https://user-images.githubusercontent.com/300/146102943-dd0155e5-3bcb-45c5-b27f-65bfacb65c91.png" /> + +Great! Let's turn this into a more useful form by adding a couple fields. We'll rename the existing one to "name" and add "email" and "message": + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-next-line +import { Form, TextField, TextAreaField, Submit } from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + // highlight-start + <TextField name="name" /> + <TextField name="email" /> + <TextAreaField name="message" /> + // highlight-end + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +// highlight-start +import { + Form, + TextField, + TextAreaField, + Submit, + SubmitHandler +} from '@redwoodjs/forms' +// highlight-end + +interface FormValues { + // highlight-start + name: string + email: string + message: string + // highlight-end +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + // highlight-start + <TextField name="name" /> + <TextField name="email" /> + <TextAreaField name="message" /> + // highlight-end + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +See the new `<TextAreaField>` component here which generates an HTML `<textarea>` but that contains Redwood's form goodness: + +<img src="https://user-images.githubusercontent.com/300/146103219-c8dc958d-ea2b-4bea-8cb8-62dcd0be6783.png" /> + +Let's add some labels: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { Form, TextField, TextAreaField, Submit } from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + // highlight-next-line + <label htmlFor="name">Name</label> + <TextField name="name" /> + + // highlight-next-line + <label htmlFor="email">Email</label> + <TextField name="email" /> + + // highlight-next-line + <label htmlFor="message">Message</label> + <TextAreaField name="message" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +import { + Form, + TextField, + TextAreaField, + Submit, + SubmitHandler +} from '@redwoodjs/forms' + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + // highlight-next-line + <label htmlFor="name">Name</label> + <TextField name="name" /> + + // highlight-next-line + <label htmlFor="email">Email</label> + <TextField name="email" /> + + // highlight-next-line + <label htmlFor="message">Message</label> + <TextAreaField name="message" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146103401-b3d84a6c-091c-4ebc-a28c-f82c57561057.png" /> + +Try filling out the form and submitting and you should get a console message with all three fields now. + +### Validation + +"Okay, Redwood tutorial author," you're saying, "what's the big deal? You built up Redwood's form helpers as The Next Big Thing but there are plenty of libraries that will let me skip creating controlled inputs manually. So what?" And you're right! Anyone can fill out a form _correctly_ (although there are plenty of QA folks who would challenge that statement), but what happens when someone leaves something out, or makes a mistake, or tries to haxorz our form? Now who's going to be there to help? Redwood, that's who! + +All three of these fields should be required in order for someone to send a message to us. Let's enforce that with the standard HTML `required` attribute: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +return ( + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + // highlight-next-line + <TextField name="name" required /> + + <label htmlFor="email">Email</label> + // highlight-next-line + <TextField name="email" required /> + + <label htmlFor="message">Message</label> + // highlight-next-line + <TextAreaField name="message" required /> + + <Submit>Save</Submit> + </Form> +) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +return ( + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + // highlight-next-line + <TextField name="name" required /> + + <label htmlFor="email">Email</label> + // highlight-next-line + <TextField name="email" required /> + + <label htmlFor="message">Message</label> + // highlight-next-line + <TextAreaField name="message" required /> + + <Submit>Save</Submit> + </Form> +) +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146103473-ad762364-c456-49ae-8de7-3b26b10b38ff.png" /> + +Now when trying to submit there'll be message from the browser noting that a field must be filled in. This is better than nothing, but these messages can't be styled. Can we do better? + +Yes! Let's update that `required` call to instead be an object we pass to a custom attribute on Redwood form helpers called `validation`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +return ( + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + // highlight-next-line + <TextField name="name" validation={{ required: true }} /> + + <label htmlFor="email">Email</label> + // highlight-next-line + <TextField name="email" validation={{ required: true }} /> + + <label htmlFor="message">Message</label> + // highlight-next-line + <TextAreaField name="message" validation={{ required: true }} /> + + <Submit>Save</Submit> + </Form> +) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +return ( + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + // highlight-next-line + <TextField name="name" validation={{ required: true }} /> + + <label htmlFor="email">Email</label> + // highlight-next-line + <TextField name="email" validation={{ required: true }} /> + + <label htmlFor="message">Message</label> + // highlight-next-line + <TextAreaField name="message" validation={{ required: true }} /> + + <Submit>Save</Submit> + </Form> +) +``` + +</TabItem> +</Tabs> + +And now when we submit the form with blank fields...the Name field gets focus. Boring. But this is just a stepping stone to our amazing reveal! We have one more form helper component to add—the one that displays errors on a field. Oh, it just so happens that it's plain HTML so we can style it however we want! + +### `<FieldError>` + +Introducing `<FieldError>` (don't forget to include it in the `import` statement at the top): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { + // highlight-next-line + FieldError, + Form, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + <TextField name="name" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="name" /> + + <label htmlFor="email">Email</label> + <TextField name="email" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="email" /> + + <label htmlFor="message">Message</label> + <TextAreaField name="message" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="message" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +import { + // highlight-next-line + FieldError, + Form, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + <TextField name="name" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="name" /> + + <label htmlFor="email">Email</label> + <TextField name="email" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="email" /> + + <label htmlFor="message">Message</label> + <TextAreaField name="message" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="message" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +Note that the `name` attribute matches the `name` of the input field above it. That's so it knows which field to display errors for. Try submitting that form now. + +<img src="https://user-images.githubusercontent.com/300/146103580-1ebff2bb-d51d-4087-95de-3230b304e65e.png" /> + +But this is just the beginning. Let's make sure folks realize this is an error message. Remember the basic styles we added to `index.css` back at the start? There's an `.error` class in there that we can use. Set the `className` attribute on `<FieldError>`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + <TextField name="name" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="name" className="error" /> + + <label htmlFor="email">Email</label> + <TextField name="email" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="email" className="error" /> + + <label htmlFor="message">Message</label> + <TextAreaField name="message" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + TextField, + TextAreaField, + Submit, + SubmitHandler +} from '@redwoodjs/forms' + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + <TextField name="name" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="name" className="error" /> + + <label htmlFor="email">Email</label> + <TextField name="email" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="email" className="error" /> + + <label htmlFor="message">Message</label> + <TextAreaField name="message" validation={{ required: true }} /> + // highlight-next-line + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146104378-1066882c-1fe7-49e1-9547-44437338155d.png" /> + +You know what would be nice? If the input itself somehow displayed the fact that there was an error. Check out the `errorClassName` attributes on the inputs: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + <TextField + name="name" + validation={{ required: true }} + // highlight-next-line + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <label htmlFor="email">Email</label> + <TextField + name="email" + validation={{ required: true }} + // highlight-next-line + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <label htmlFor="message">Message</label> + <TextAreaField + name="message" + validation={{ required: true }} + // highlight-next-line + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + <label htmlFor="name">Name</label> + <TextField + name="name" + validation={{ required: true }} + // highlight-next-line + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <label htmlFor="email">Email</label> + <TextField + name="email" + validation={{ required: true }} + // highlight-next-line + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <label htmlFor="message">Message</label> + <TextAreaField + name="message" + validation={{ required: true }} + // highlight-next-line + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146104498-8b24ef5c-66e7-48a2-b4ad-0432fff181dd.png" /> + +Oooo, what if the _label_ could change as well? It can, but we'll need Redwood's custom `<Label>` component for that. Note that the `htmlFor` attribute of `<label>` becomes the `name` prop on `<Label>`, just like with the other Redwood form components. And don't forget the import: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + // highlight-next-line + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + // highlight-start + <Label name="name" errorClassName="error"> + Name + </Label> + // highlight-end + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + // highlight-start + <Label name="email" errorClassName="error"> + Email + </Label> + // highlight-end + <TextField + name="email" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + // highlight-start + <Label name="message" errorClassName="error"> + Message + </Label> + // highlight-end + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + // highlight-next-line + Label, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit}> + // highlight-start + <Label name="name" errorClassName="error"> + Name + </Label> + // highlight-end + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + // highlight-start + <Label name="email" errorClassName="error"> + Email + </Label> + // highlight-end + <TextField + name="email" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + // highlight-start + <Label name="message" errorClassName="error"> + Message + </Label> + // highlight-end + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146104647-25f1b2cf-a3cd-4737-aa2d-9aa984c08e39.png" /> + +:::info Error styling + +In addition to `className` and `errorClassName` you can also use `style` and `errorStyle`. Check out the [Form docs](../../forms.md) for more details on error styling. + +::: + +And notice that if you fill in something in a field that's marked as an error, the error instantly goes away! This is great feedback for our users that they're doing what we want, and they don't have to wait to click the "Save" button again just to see if what they changed is now correct. + +### Validating Input Format + +We should make sure the email field actually contains an email, by providing a `pattern`. +This is definitely not the end-all-be-all for email address validation, but for now let us pretend it's bulletproof. +Let's also change the message on the email validation to be a little more friendly: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +<TextField + name="email" + validation={{ + required: true, + // highlight-start + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + // highlight-end + }} + errorClassName="error" +/> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +<TextField + name="email" + validation={{ + required: true, + // highlight-start + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + // highlight-end + }} + errorClassName="error" +/> +``` + +</TabItem> +</Tabs> + +<img src="https://user-images.githubusercontent.com/300/146105001-96b76f12-e011-46c3-a490-7dd51b872498.png" /> + +:::info + +When a validation error appears it will _disappear_ as soon as you fix the content of the field. You don't have to click "Submit" again to remove the error messages. This is great feedback for users (and eagle-eyed QA testers) since they receive instant feedback what they changed is now correct. + +::: + +Finally, you know what would _really_ be nice? If the fields were validated as soon as the user leaves each one so they don't fill out the whole thing and submit just to see multiple errors appear. Let's do that: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +<Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +<Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> +``` + +</TabItem> +</Tabs> + +Well, what do you think? Was it worth the hype? A couple of new components and you've got forms that handle validation and wrap up submitted values in a nice data object, all for free. + +:::info + +Redwood's forms are built on top of [React Hook Form](https://react-hook-form.com/) so there is even more functionality available than we've documented here. Visit the [Form docs](../../forms.md) to learn more about all form functionalities. + +::: + +Redwood has one more trick up its sleeve when it comes to forms but we'll save that for when we're actually submitting one to the server. + +Having a contact form is great, but only if you actually get the contact somehow. Let's create a database table to hold the submitted data and create our first GraphQL mutation. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter3/saving-data.md b/docs/versioned_docs/version-7.0/tutorial/chapter3/saving-data.md new file mode 100644 index 000000000000..7b4732c5c14a --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter3/saving-data.md @@ -0,0 +1,2047 @@ +# Saving Data + +### Add a Contact Model + +Let's add a new database table. Open up `api/db/schema.prisma` and add a Contact model after the Post model that's there now: + +```js title="api/db/schema.prisma" +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +model Post { + id Int @id @default(autoincrement()) + title String + body String + createdAt DateTime @default(now()) +} + +// highlight-start +model Contact { + id Int @id @default(autoincrement()) + name String + email String + message String + createdAt DateTime @default(now()) +} +// highlight-end +``` + +:::tip + +To mark a field as optional (that is, allowing `NULL` as a value) you can suffix the datatype with a question mark, e.g. `name String?`. This will allow `name`'s value to be either a `String` or `NULL`. + +::: + +Next we create and apply a migration: + +```bash +yarn rw prisma migrate dev +``` + +We can name this one something like "create contact". + +### Create an SDL & Service + +Now we'll create the GraphQL interface to access this table. We haven't used this `generate` command yet (although the `scaffold` command did use it behind the scenes): + +```bash +yarn rw g sdl Contact +``` + +Just like the `scaffold` command, this will create a few new files under the `api` directory: + +1. `api/src/graphql/contacts.sdl.{js,ts}`: defines the GraphQL schema in GraphQL's schema definition language +2. `api/src/services/contacts/contacts.{js,ts}`: contains your app's business logic (also creates associated test files) + +If you remember our discussion in [how Redwood works with data](../chapter2/side-quest.md) you'll recall that queries and mutations in an SDL file are automatically mapped to resolvers defined in a service, so when you generate an SDL file you'll get a service file as well, since one requires the other. + +Open up `api/src/graphql/contacts.sdl.{js,ts}` and you'll see the same Query and Mutation types defined for Contact that were created for the Post scaffold. `Contact`, `CreateContactInput` and `UpdateContactInput` types, as well as a `Query` type with `contacts` and `contact`, and a `Mutation` type with `createContact`, `updateContact` and `deleteContact`. + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/contacts.sdl.js" +export const schema = gql` + type Contact { + id: Int! + name: String! + email: String! + message: String! + createdAt: DateTime! + } + + type Query { + contacts: [Contact!]! @requireAuth + contact(id: Int!): Contact @requireAuth + } + + input CreateContactInput { + name: String! + email: String! + message: String! + } + + input UpdateContactInput { + name: String + email: String + message: String + } + + type Mutation { + createContact(input: CreateContactInput!): Contact! @requireAuth + updateContact(id: Int!, input: UpdateContactInput!): Contact! @requireAuth + deleteContact(id: Int!): Contact! @requireAuth + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/contacts.sdl.ts" +export const schema = gql` + type Contact { + id: Int! + name: String! + email: String! + message: String! + createdAt: DateTime! + } + + type Query { + contacts: [Contact!]! @requireAuth + contact(id: Int!): Contact @requireAuth + } + + input CreateContactInput { + name: String! + email: String! + message: String! + } + + input UpdateContactInput { + name: String + email: String + message: String + } + + type Mutation { + createContact(input: CreateContactInput!): Contact! @requireAuth + updateContact(id: Int!, input: UpdateContactInput!): Contact! @requireAuth + deleteContact(id: Int!): Contact! @requireAuth + } +` +``` + +</TabItem> +</Tabs> + +The `@requireAuth` string you see after the `Query` and `Mutation` types is a [schema directive](https://www.graphql-tools.com/docs/schema-directives) which says that in order to access this GraphQL query the user is required to be authenticated. We haven't added authentication yet, so this won't have any effect—anyone will be able to query it, logged in or not, because until you add authentication the function behind `@requireAuth` always returns `true`. + +What's `CreateContactInput` and `UpdateContactInput`? Redwood follows the GraphQL recommendation of using [Input Types](https://graphql.org/graphql-js/mutations-and-input-types/) in mutations rather than listing out each and every field that can be set. Any fields required in `schema.prisma` are also required in `CreateContactInput` (you can't create a valid record without them) but nothing is explicitly required in `UpdateContactInput`. This is because you could want to update only a single field, or two fields, or all fields. The alternative would be to create separate Input types for every permutation of fields you would want to update. We felt that only having one update input type was a good compromise for optimal developer experience. + +:::info + +Redwood assumes your code won't try to set a value on any field named `id` or `createdAt` so it left those out of the Input types, but if your database allowed either of those to be set manually you can update `CreateContactInput` or `UpdateContactInput` and add them. + +::: + +Since all of the DB columns were required in the `schema.prisma` file they are marked as required in the GraphQL Types with the `!` suffix on the datatype (e.g. `name: String!`). + +:::tip + +GraphQL's SDL syntax requires an extra `!` when a field _is_ required. Remember: `schema.prisma` syntax requires an extra `?` character when a field is _not_ required. + +::: + +As described in [Side Quest: How Redwood Deals with Data](../chapter2/side-quest.md), there are no explicit resolvers defined in the SDL file. Redwood follows a simple naming convention: each field listed in the `Query` and `Mutation` types in the `sdl` file (`api/src/graphql/contacts.sdl.{js,ts}`) maps to a function with the same name in the `services` file (`api/src/services/contacts/contacts.{js,ts}`). + +:::tip + +*Psssstttt* I'll let you in on a little secret: if you just need a simple read-only SDL, you can skip creating the create/update/delete mutations by passing a flag to the SDL generator like so: + +`yarn rw g sdl Contact --no-crud` + +You'd only get a single `contacts` type to return them all. + +::: + +We'll only need `createContact` for our contact page. It accepts a single variable, `input`, that is an object that conforms to what we expect for a `CreateContactInput`, namely `{ name, email, message }`. This mutation should be able to be accessed by anyone, so we'll need to change `@requireAuth` to `@skipAuth`. This one says that authentication is *not* required and will allow anyone to anonymously send us a message. Note that having at least one schema directive is required for each `Query` and `Mutation` or you'll get an error: Redwood embraces the idea of "secure by default" meaning that we try and keep your application safe, even if you do nothing special to prevent access. In this case it's much safer to throw an error than to accidentally expose all of your users' data to the internet! + +:::info + +Serendipitously, the default schema directive of `@requireAuth` is exactly what we want for the `contacts` query that returns ALL contacts—only we, the owners of the blog, should have access to read them all. + +::: + +We're not going to let anyone update or delete a message, so we can remove those fields completely. Here's what the SDL file looks like after the changes: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/contacts.sdl.js" +export const schema = gql` + type Contact { + id: Int! + name: String! + email: String! + message: String! + createdAt: DateTime! + } + + type Query { + contacts: [Contact!]! @requireAuth + contact(id: Int!): Contact @requireAuth + } + + input CreateContactInput { + name: String! + email: String! + message: String! + } + + // highlight-start + type Mutation { + createContact(input: CreateContactInput!): Contact! @skipAuth + } + // highlight-end +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/contacts.sdl.ts" +export const schema = gql` + type Contact { + id: Int! + name: String! + email: String! + message: String! + createdAt: DateTime! + } + + type Query { + contacts: [Contact!]! @requireAuth + contact(id: Int!): Contact @requireAuth + } + + input CreateContactInput { + name: String! + email: String! + message: String! + } + + // highlight-start + type Mutation { + createContact(input: CreateContactInput!): Contact! @skipAuth + } + // highlight-end +` +``` + +</TabItem> +</Tabs> + +That's it for the SDL file, let's take a look at the service: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```js title="api/src/services/contacts/contacts.js" +import { db } from 'src/lib/db' + +export const contacts = () => { + return db.contact.findMany() +} + +export const contact = ({ id }) => { + return db.contact.findUnique({ + where: { id }, + }) +} + +export const createContact = ({ input }) => { + return db.contact.create({ + data: input, + }) +} + +export const updateContact = ({ id, input }) => { + return db.contact.update({ + data: input, + where: { id }, + }) +} + +export const deleteContact = ({ id }) => { + return db.contact.delete({ + where: { id }, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```js title="api/src/services/contacts/contacts.ts" +import type { QueryResolvers, MutationResolvers } from 'types/graphql' + +import { db } from 'src/lib/db' + +export const contacts: QueryResolvers['contacts'] = () => { + return db.contact.findMany() +} + +export const contact: QueryResolvers['contact'] = ({ id }) => { + return db.contact.findUnique({ + where: { id }, + }) +} + +export const createContact: MutationResolvers['createContact'] = ({ input }) => { + return db.contact.create({ + data: input, + }) +} + +export const updateContact: MutationResolvers['updateContact'] = ({ id, input }) => { + return db.contact.update({ + data: input, + where: { id }, + }) +} + +export const deleteContact: MutationResolvers['deleteContact'] = ({ id }) => { + return db.contact.delete({ + where: { id }, + }) +} +``` + +</TabItem> +</Tabs> + +Pretty simple. You can see here how the `createContact()` function expects the `input` argument and just passes that on to Prisma in the `create()` call. + +You can delete `updateContact` and `deleteContact` here if you want, but since there's no longer an accessible GraphQL field for them they can't be used by the client anyway. + +Before we plug this into the UI, let's take a look at a nifty GUI you get just by running `yarn redwood dev`. + +### GraphQL Playground + +Often it's nice to experiment and call your API in a more "raw" form before you get too far down the path of implementation only to find out something is missing. Is there a typo in the API layer or the web layer? Let's find out by accessing just the API layer. + +When you started development with `yarn redwood dev` (or `yarn rw dev`) you actually started a second process running at the same time. Open a new browser tab and head to [http://localhost:8911/graphql](http://localhost:8911/graphql) This is GraphQL Yoga's [GraphiQL](https://www.graphql-yoga.com/docs/features/graphiql), a web-based GUI for GraphQL APIs: + +<img width="1410" alt="image" src="https://user-images.githubusercontent.com/22184161/226866579-896e8edc-4ac0-48bd-80f0-2ba28da677b5.png" /> + +Not very exciting yet, but select the "Docs" tab on the top left and click on `query: Query`. + +<img width="1410" alt="image" src="https://user-images.githubusercontent.com/22184161/226866573-41697d10-a056-4e3a-add3-b940147de802.png" /> + +It's the complete schema as defined by our SDL files! The Playground will ingest these definitions and give you autocomplete hints on the left to help you build queries from scratch. Try getting the IDs of all the posts in the database; type the query at the left and then click the "Play" button to execute: + +<img width="1410" alt="image" src="https://user-images.githubusercontent.com/22184161/226866554-3daefe7f-7b4d-4503-aaa0-9895ee5bd38e.png" /> + +The GraphQL Playground is a great way to experiment with your API or troubleshoot when you come across a query or mutation that isn't behaving in the way you expect. + +### Creating a Contact + +Our GraphQL mutation is ready to go on the backend so all that's left is to invoke it on the frontend. Everything related to our form is in `ContactPage` so that's where we'll put the mutation call. First we define the mutation as a constant that we call later (this can be defined outside of the component itself, right after the `import` statements): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +// highlight-start +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` +// highlight-end + +const ContactPage = () => { + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags } from '@redwoodjs/web' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +// highlight-start +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` +// highlight-end + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +We reference the `createContact` mutation we defined in the Contacts SDL passing it an `input` object which will contain the actual name, email and message values. + +Next we'll call the `useMutation` hook provided by Redwood which will allow us to execute the mutation when we're ready (don't forget to `import` it): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +// highlight-next-line +import { MetaTags, useMutation } from '@redwoodjs/web' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + // highlight-next-line + const [create] = useMutation(CREATE_CONTACT) + + const onSubmit = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +// highlight-next-line +import { MetaTags, useMutation } from '@redwoodjs/web' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +// highlight-start +import { + CreateContactMutation, + CreateContactMutationVariables, +} from 'types/graphql' +// highlight-end + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + // highlight-start + const [create] = useMutation< + CreateContactMutation, + CreateContactMutationVariables + >(CREATE_CONTACT) + // highlight-end + + const onSubmit: SubmitHandler<FormValues> = (data) => { + console.log(data) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +<ShowForTs> + +:::tip Reminder about generated types + +Just a quick reminder that Redwood will automatically generate types for your GraphQL queries and mutations if you have the dev server running (or if you run `yarn rw generate types`). + +Once you define the `CreateContactMutation` (the GraphQL one), Redwood will generate the `CreateContactMutation` and `CreateContactMutationVariables` types from it for you. + +Take a look at our [Generated Types](typescript/generated-types.md) docs for a deeper dive! + +::: + +</ShowForTs> + +`create` is a function that invokes the mutation and takes an object with a `variables` key, containing another object with an `input` key. As an example, we could call it like: + +```js +create({ + variables: { + input: { + name: 'Rob', + email: 'rob@redwoodjs.com', + message: 'I love Redwood!', + }, + }, +}) +``` + +If you'll recall `<Form>` gives us all of the fields in a nice object where the key is the name of the field, which means the `data` object we're receiving in `onSubmit` is already in the proper format that we need for the `input`! + +That means we can update the `onSubmit` function to invoke the mutation with the data it receives: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + const [create] = useMutation(CREATE_CONTACT) + + const onSubmit = (data) => { + // highlight-next-line + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +import { + CreateContactMutation, + CreateContactMutationVariables, +} from 'types/graphql' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const [create] = useMutation< + CreateContactMutation, + CreateContactMutationVariables + >(CREATE_CONTACT) + + const onSubmit: SubmitHandler<FormValues> = (data) => { + // highlight-next-line + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +Try filling out the form and submitting—you should have a new Contact in the database! You can verify that with [Prisma Studio](/docs/tutorial/chapter2/getting-dynamic#prisma-studio) or [GraphQL Playground](#graphql-playground) if you were so inclined: + +<img width="1410" alt="image" src="https://user-images.githubusercontent.com/32992335/161488540-a7ad1a57-7432-4171-bd75-500eeaa17bcb.png" /> + +:::info Wait, I thought you said this was secure by default and someone couldn't view all contacts without being logged in? + +Remember: we haven't added authentication yet, so the concept of someone being logged in is meaningless right now. In order to prevent frustrating errors in a new application, the `@requireAuth` directive simply returns `true` until you setup an authentication system. At that point the directive will use real logic for determining if the user is logged in or not and behave accordingly. + +::: + +### Improving the Contact Form + +Our contact form works but it has a couple of issues at the moment: + +* Clicking the submit button multiple times will result in multiple submits +* The user has no idea if their submission was successful +* If an error was to occur on the server, we have no way of notifying the user + +Let's address these issues. + +#### Disable Save on Loading + +The `useMutation` hook returns a couple more elements along with the function to invoke it. We can destructure these as the second element in the array that's returned. The two we care about are `loading` and `error`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +// ... + +const ContactPage = () => { + // highlight-next-line + const [create, { loading, error }] = useMutation(CREATE_CONTACT) + + const onSubmit = (data) => { + create({ variables: { input: data } }) + } + + return (...) +} + +// ... +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +// ... + +const ContactPage = () => { + // highlight-next-line + const [create, { loading, error }] = useMutation< + CreateContactMutation, + CreateContactMutationVariables + >(CREATE_CONTACT) + + const onSubmit: SubmitHandler<FormValues> = (data) => { + create({ variables: { input: data } }) + } + + return (...) +} + +// ... +``` + +</TabItem> +</Tabs> + +Now we know if the database call is still in progress by looking at `loading`. An easy fix for our multiple submit issue would be to disable the submit button if the response is still in progress. We can set the `disabled` attribute on the "Save" button to the value of `loading`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +return ( + // ... + // highlight-next-line + <Submit disabled={loading}>Save</Submit> + // ... +) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +return ( + // ... + // highlight-next-line + <Submit disabled={loading}>Save</Submit> + // ... +) +``` + +</TabItem> +</Tabs> + +It may be hard to see a difference in development because the submit is so fast, but you could enable network throttling via the Network tab Chrome's Web Inspector to simulate a slow connection: + +<img src="https://user-images.githubusercontent.com/300/71037869-6dc56f80-20d5-11ea-8b26-3dadb8a1ed86.png" /> + +You'll see that the "Save" button become disabled for a second or two while waiting for the response. + +#### Notification on Save + +Next, let's show a notification to let the user know their submission was successful. Redwood includes [react-hot-toast](https://react-hot-toast.com/) to quickly show a popup notification on a page. + +`useMutation` accepts an options object as a second argument. One of the options is a callback function, `onCompleted`, that will be invoked when the mutation successfully completes. We'll use that callback to invoke a `toast()` function which will add a message to be displayed in a **<Toaster>** component. + +Add the `onCompleted` callback to `useMutation` and include the **<Toaster>** component in our `return`, just before the **<Form>**: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +// highlight-next-line +import { toast, Toaster } from '@redwoodjs/web/toast' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + // highlight-start + const [create, { loading, error }] = useMutation(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + }, + }) + // highlight-end + + const onSubmit = (data) => { + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + // highlight-next-line + <Toaster /> + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit disabled={loading}>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +// highlight-next-line +import { toast, Toaster } from '@redwoodjs/web/toast' +import { + FieldError, + Form, + Label, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +import { + CreateContactMutation, + CreateContactMutationVariables, +} from 'types/graphql' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + // highlight-start + const [create, { loading, error }] = useMutation< + CreateContactMutation, + CreateContactMutationVariables + >(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + }, + }) + // highlight-end + + const onSubmit: SubmitHandler<FormValues> = (data) => { + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + // highlight-next-line + <Toaster /> + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }}> + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit disabled={loading}>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +![Toast notification on successful submission](https://user-images.githubusercontent.com/300/146271487-f6b77e76-99c1-43e8-bcda-5ba3c9b03137.png) + +You can read the full documentation for Toast [here](../../toast-notifications.md). + +### Displaying Server Errors + +Next we'll inform the user of any server errors. So far we've only notified the user of _client_ errors: a field was missing or formatted incorrectly. But if we have server-side constraints in place `<Form>` can't know about those, but we still need to let the user know something went wrong. + +We have email validation on the client, but any developer worth their silicon knows [never trust the client](https://www.codebyamir.com/blog/never-trust-data-from-the-browser). Let's add the email validation into the api side as well to be sure no bad data gets into our database, even if someone somehow bypassed our client-side validation (l33t hackers do this all the time). + +:::info No server-side validation for some fields? + +Why don't we need server-side validation for the existence of name, email and message? Because GraphQL is already doing that for us! You may remember the `String!` declaration in our SDL file for the `Contact` type: that adds a constraint that those fields cannot be `null` as soon as it arrives on the api side. If it is, GraphQL would reject the request and throw an error back to us on the client. + +However, if you start using one service from within another, there would be no validation! GraphQL is only involved if an "outside" party is making a request (like a browser). If you really want to make sure that a field is present or formatted correctly, you'll need to add validation inside the Service itself. Then, no matter who is calling that service function (GraphQL or another Service) your data is guaranteed to be checked. + +We do have an additional layer of validation for free: because name, email and message were set as required in our `schema.prisma` file, the database itself will prevent any `null`s from being recorded. It's usually recommended to not rely solely on the database for input validation: what format your data should be in is a concern of your business logic, and in a Redwood app the business logic lives in the Services! + +::: + +We talked about business logic belonging in our services files and this is a perfect example. And since validating inputs is such a common requirement, Redwood once again makes our lives easier with [Service Validations](../../services.md#service-validations). + +We'll make a call to a new `validate` function to our `contacts` service, which will do the work of making sure that the `email` field is actually formatted like an email address: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```js title="api/src/services/contacts/contacts.js" +// highlight-next-line +import { validate } from '@redwoodjs/api' + +// ... + +export const createContact = ({ input }) => { + // highlight-next-line + validate(input.email, 'email', { email: true }) + return db.contact.create({ data: input }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/contacts/contacts.ts" +import type { QueryResolvers, MutationResolvers } from 'types/graphql' + +// highlight-next-line +import { validate } from '@redwoodjs/api' + +// ... + +export const createContact: MutationResolvers['createContact'] = ({ input }) => { + // highlight-next-line + validate(input.email, 'email', { email: true }) + return db.contact.create({ data: input }) +} +``` + +</TabItem> +</Tabs> + +That's a lot of references to `email` so let's break them down: + +1. The first argument is the value that we want to check. In this case `input` contains all our contact data and the value of `email` is the one we want to check +2. The second argument is the `name` prop from the `<TextField>`, so that we know which input field on the page has an error +3. The third argument is an object containing the **validation directives** we want to invoke. In this case it's just one, and `email: true` means we want to use the built-in email validator + +So when `createContact` is called it will first validate the inputs and only if no errors are thrown will it continue to actually create the record in the database. + +Right now we won't even be able to test our validation on the server because we're already checking that the input is formatted like an email address with the `validation` prop in `<TextField>`. Let's temporarily remove it so that the bad data will be sent up to the server: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```diff title="web/src/pages/ContactPage/ContactPage.js" + <TextField + name="email" + validation={{ + required: true, +- pattern: { +- value: /^[^@]+@[^.]+\..+$/, +- message: 'Please enter a valid email address', +- }, + }} + errorClassName="error" + /> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```diff title="web/src/pages/ContactPage/ContactPage.tsx" + <TextField + name="email" + validation={{ + required: true, +- pattern: { +- value: /^[^@]+@[^.]+\..+$/, +- message: 'Please enter a valid email address', +- }, + }} + errorClassName="error" + /> +``` + +</TabItem> +</Tabs> + +Remember when we said that `<Form>` had one more trick up its sleeve? Here it comes! + +Add a `<FormError>` component, passing the `error` constant we got from `useMutation` and a little bit of styling to `wrapperStyle` (don't forget the `import`). We'll also pass `error` to `<Form>` so it can setup a context: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +import { toast, Toaster } from '@redwoodjs/web/toast' +import { + FieldError, + Form, + // highlight-next-line + FormError, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + const [create, { loading, error }] = useMutation(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + }, + }) + + const onSubmit = (data) => { + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Toaster /> + // highlight-start + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }} error={error}> + <FormError error={error} wrapperClassName="form-error" /> + // highlight-end + + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit disabled={loading}>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +import { toast, Toaster } from '@redwoodjs/web/toast' +import { + FieldError, + Form, + // highlight-next-line + FormError, + Label, + TextField, + TextAreaField, + Submit, + SubmitHandler, +} from '@redwoodjs/forms' + +import { + CreateContactMutation, + CreateContactMutationVariables, +} from 'types/graphql' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const [create, { loading, error }] = useMutation< + CreateContactMutation, + CreateContactMutationVariables + >(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + }, + }) + + const onSubmit: SubmitHandler<FormValues> = (data) => { + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Toaster /> + // highlight-start + <Form onSubmit={onSubmit} config={{ mode: 'onBlur' }} error={error}> + <FormError error={error} wrapperClassName="form-error" /> + // highlight-end + + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit disabled={loading}>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +Now submit a message with an invalid email address: + +![Email error from the server side](https://user-images.githubusercontent.com/300/158897801-8a3f7ae8-6e67-4fc0-b828-3095c264507e.png) + +We get that error message at the top saying something went wrong in plain English _and_ the actual field is highlighted for us, just like the inline validation! The message at the top may be overkill for such a short form, but it can be key if a form is multiple screens long; the user gets a summary of what went wrong all in one place and they don't have to resort to hunting through a long form looking for red boxes. You don't *have* to use that message box at the top, though; just remove `<FormError>` and the field will still be highlighted as expected. + +:::info + +`<FormError>` has several styling options which are attached to different parts of the message: + +* `wrapperStyle` / `wrapperClassName`: the container for the entire message +* `titleStyle` / `titleClassName`: the "Errors prevented this form..." title +* `listStyle` / `listClassName`: the `<ul>` that contains the list of errors +* `listItemStyle` / `listItemClassName`: each individual `<li>` around each error + +::: + +This just scratches the surface of what Service Validations can do. You can perform more complex validations, including combining multiple directives in a single call. What if we had a model representing a `Car`, and users could submit them to us for sale on our exclusive car shopping site. How do we make sure we only get the cream of the crop of motorized vehicles? Service validations would allow us to be very particular about the values someone would be allowed to submit, all without any custom checks, just built-in `validate()` calls: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```js +export const createCar = ({ input }) => { + validate(input.make, 'make', { + inclusion: ['Audi', 'BMW', 'Ferrari', 'Lexus', 'Tesla'], + }) + validate(input.color, 'color', { + exclusion: { in: ['Beige', 'Mauve'], message: "No one wants that color" } + }) + validate(input.hasDamage, 'hasDamage', { + absence: true + }) + validate(input.vin, 'vin', { + format: /[A-Z0-9]+/, + length: { equal: 17 } + }) + validate(input.odometer, 'odometer', { + numericality: { positive: true, lessThanOrEqual: 10000 } + }) + + return db.car.create({ data: input }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts +export const createCar = ({ input }: Car) => { + validate(input.make, 'make', { + inclusion: ['Audi', 'BMW', 'Ferrari', 'Lexus', 'Tesla'], + }) + validate(input.color, 'color', { + exclusion: { in: ['Beige', 'Mauve'], message: "No one wants that color" } + }) + validate(input.hasDamage, 'hasDamage', { + absence: true + }) + validate(input.vin, 'vin', { + format: /[A-Z0-9]+/, + length: { equal: 17 } + }) + validate(input.odometer, 'odometer', { + numericality: { positive: true, lessThanOrEqual: 10000 } + }) + + return db.car.create({ data: input }) +} +``` + +</TabItem> +</Tabs> + +You can still include your own custom validation logic and have the errors handled in the same manner as the built-in validations: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```js +validateWith(() => { + const oneWeekAgo = new Date() + oneWeekAgo.setDate(oneWeekAgo.getDate() - 7) + + if (input.lastCarWashDate < oneWeekAgo) { + throw new Error("We don't accept dirty cars") + } +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```js +validateWith(() => { + const oneWeekAgo = new Date() + oneWeekAgo.setDate(oneWeekAgo.getDate() - 7) + + if (input.lastCarWashDate < oneWeekAgo) { + throw new Error("We don't accept dirty cars") + } +}) +``` + +</TabItem> +</Tabs> + +Now you can be sure you won't be getting some old jalopy! + +### One more thing... + +Since we're not redirecting after the form submits, we should at least clear out the form fields. This requires we get access to a `reset()` function that's part of [React Hook Form](https://react-hook-form.com/), but we don't have access to it with the basic usage of `<Form>` (like we're currently using). + +Redwood includes a hook called `useForm()` (from React Hook Form) which is normally called for us within `<Form>`. In order to reset the form we need to invoke that hook ourselves. But the functionality that `useForm()` provides still needs to be used in `Form`. Here's how we do that. + +First we'll import `useForm`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { + FieldError, + Form, + FormError, + Label, + Submit, + TextAreaField, + TextField, + // highlight-next-line + useForm, +} from '@redwoodjs/forms' +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { + FieldError, + Form, + FormError, + Label, + Submit, + TextAreaField, + TextField, + // highlight-next-line + useForm, +} from '@redwoodjs/forms' +``` + +</TabItem> +</Tabs> + +And now call it inside of our component: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +const ContactPage = () => { + // highlight-next-line + const formMethods = useForm() + //... +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.tsx" +const ContactPage = () => { + // highlight-next-line + const formMethods = useForm() + //... +``` + +</TabItem> +</Tabs> + +Finally we'll tell `<Form>` to use the `formMethods` we just got from `useForm()` instead of doing it itself: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +return ( + <> + <Toaster /> + <Form + onSubmit={onSubmit} + config={{ mode: 'onBlur' }} + error={error} + // highlight-next-line + formMethods={formMethods} + > + // ... +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +return ( + <> + <Toaster /> + <Form + onSubmit={onSubmit} + config={{ mode: 'onBlur' }} + error={error} + // highlight-next-line + formMethods={formMethods} + > + // ... +``` + +</TabItem> +</Tabs> + +Now we can call `reset()` on `formMethods` after we call `toast()`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +// ... + +const [create, { loading, error }] = useMutation(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + // highlight-next-line + formMethods.reset() + }, +}) + +// ... +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +// ... + +const [create, { loading, error }] = useMutation< + CreateContactMutation, + CreateContactMutationVariables +>(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + // highlight-next-line + formMethods.reset() + }, +}) + +// ... +``` + +</TabItem> +</Tabs> + +:::warning + +You can put the email validation back into the `<TextField>` now, but you should leave the server validation in place, just in case. + +::: + +Here's the entire page: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +import { toast, Toaster } from '@redwoodjs/web/toast' +import { + FieldError, + Form, + FormError, + Label, + Submit, + TextAreaField, + TextField, + useForm, +} from '@redwoodjs/forms' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +const ContactPage = () => { + const formMethods = useForm() + + const [create, { loading, error }] = useMutation(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + formMethods.reset() + }, + }) + + const onSubmit = (data) => { + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Toaster /> + <Form + onSubmit={onSubmit} + config={{ mode: 'onBlur' }} + error={error} + formMethods={formMethods} + > + <FormError error={error} wrapperClassName="form-error" /> + + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit disabled={loading}>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +import { MetaTags, useMutation } from '@redwoodjs/web' +import { toast, Toaster } from '@redwoodjs/web/toast' +import { + FieldError, + Form, + FormError, + Label, + Submit, + SubmitHandler, + TextAreaField, + TextField, + useForm, +} from '@redwoodjs/forms' + +import { + CreateContactMutation, + CreateContactMutationVariables, +} from 'types/graphql' + +const CREATE_CONTACT = gql` + mutation CreateContactMutation($input: CreateContactInput!) { + createContact(input: $input) { + id + } + } +` + +interface FormValues { + name: string + email: string + message: string +} + +const ContactPage = () => { + const formMethods = useForm() + + const [create, { loading, error }] = useMutation< + CreateContactMutation, + CreateContactMutationVariables + >(CREATE_CONTACT, { + onCompleted: () => { + toast.success('Thank you for your submission!') + formMethods.reset() + }, + }) + + const onSubmit: SubmitHandler<FormValues> = (data) => { + create({ variables: { input: data } }) + } + + return ( + <> + <MetaTags title="Contact" description="Contact page" /> + + <Toaster /> + <Form + onSubmit={onSubmit} + config={{ mode: 'onBlur' }} + error={error} + formMethods={formMethods} + > + <FormError error={error} wrapperClassName="form-error" /> + + <Label name="name" errorClassName="error"> + Name + </Label> + <TextField + name="name" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="name" className="error" /> + + <Label name="email" errorClassName="error"> + Email + </Label> + <TextField + name="email" + validation={{ + required: true, + pattern: { + value: /^[^@]+@[^.]+\..+$/, + message: 'Please enter a valid email address', + }, + }} + errorClassName="error" + /> + <FieldError name="email" className="error" /> + + <Label name="message" errorClassName="error"> + Message + </Label> + <TextAreaField + name="message" + validation={{ required: true }} + errorClassName="error" + /> + <FieldError name="message" className="error" /> + + <Submit disabled={loading}>Save</Submit> + </Form> + </> + ) +} + +export default ContactPage +``` + +</TabItem> +</Tabs> + +That's it! [React Hook Form](https://react-hook-form.com/) provides a bunch of [functionality](https://react-hook-form.com/docs) that `<Form>` doesn't expose. When you want to get to that functionality you can call `useForm()` yourself, but make sure to pass the returned object (we called it `formMethods`) as a prop to `<Form>` so that the validation and other functionality keeps working. + +:::info + +You may have noticed that the onBlur form config stopped working once you started calling `useForm()` yourself. That's because Redwood calls `useForm()` behind the scenes and automatically passes it the `config` prop that you gave to `<Form>`. Redwood is no longer calling `useForm()` for you so if you need some options passed you need to do it manually: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/pages/ContactPage/ContactPage.jsx" +const ContactPage = () => { + const formMethods = useForm({ mode: 'onBlur' }) + //... +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/pages/ContactPage/ContactPage.tsx" +const ContactPage = () => { + const formMethods = useForm({ mode: 'onBlur' }) + //... +``` + +</TabItem> +</Tabs> + +::: + +The public site is looking pretty good. How about the administrative features that let us create and edit posts? We should move them to some kind of admin section and put them behind a login so that random users poking around at URLs can't create ads for discount pharmaceuticals. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter4/authentication.md b/docs/versioned_docs/version-7.0/tutorial/chapter4/authentication.md new file mode 100644 index 000000000000..c42b3fb7d393 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter4/authentication.md @@ -0,0 +1,899 @@ +# Authentication + +## An Admin Section + +Having the admin screens at `/admin` is a reasonable thing to do. Let's update the routes to make that happen by updating the four routes where the URL begins with `/posts` to start with `/admin/posts` instead: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +import { Router, Route, Set } from '@redwoodjs/router' +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + <Router> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + // highlight-start + <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/admin/posts" page={PostPostsPage} name="posts" /> + // highlight-end + </Set> + <Set wrap={BlogLayout}> + <Route path="/article/{id:Int}" page={ArticlePage} name="article" /> + <Route path="/contact" page={ContactPage} name="contact" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/Routes.tsx" +import { Router, Route, Set } from '@redwoodjs/router' +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +const Routes = () => { + return ( + <Router> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + // highlight-start + <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/admin/posts" page={PostPostsPage} name="posts" /> + // highlight-end + </Set> + <Set wrap={BlogLayout}> + <Route path="/article/{id:Int}" page={ArticlePage} name="article" /> + <Route path="/contact" page={ContactPage} name="contact" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +</Tabs> + +Head to [http://localhost:8910/admin/posts](http://localhost:8910/admin/posts) and our generated scaffold page should come up. Thanks to named routes we don't have to update any of the `<Link>`s that were generated by the scaffolds since the `name`s of the pages didn't change! + +Having the admin at a different path is great, but nothing is stopping someone from just browsing to that new path and messing with our blog posts. How do we keep prying eyes away? + +## Authentication + +"Authentication" is a blanket term for all of the stuff that goes into making sure that a user, often identified with an email address and password, is allowed to access something. Authentication can be [famously fickle](https://www.rdegges.com/2017/authentication-still-sucks/) to do right both from a technical and developer-happiness standpoint. + +"Credentials" are the pieces of information a user provides to prove they are who they say they are: commonly a username (usually email) and password. + +Redwood includes two authentication paths out of the box: + +* Self-hosted, where user credentials are stored in your own database +* Third-party hosted, where user credentials are stored with the third party + +In both cases you end up with an authenticated user that you can access in both the web and api sides of your app. + +Redwood includes [integrations](../../authentication.md) for several of the most popular third-party auth providers: + +- [Auth0](https://auth0.com/) +- [Clerk](https://clerk.dev/) +- [Netlify Identity](https://docs.netlify.com/visitor-access/identity/) +- [Firebase's GoogleAuthProvider](https://firebase.google.com/docs/reference/js/v8/firebase.auth.GoogleAuthProvider) +- [Supabase](https://supabase.io/docs/guides/auth) +- [SuperTokens](https://supertokens.com) + +As for our blog, we're going to use self-hosted authentication (named *dbAuth* in Redwood) since it's the simplest to get started with and doesn't involve any third party signups. + +:::info Authentication vs. Authorization + +There are two terms which contain a lot of letters, starting with an "A" and ending in "ation" (which means you could rhyme them if you wanted to) that become involved in most discussions about login: + +* Authentication +* Authorization + +Here is how Redwood uses these terms: + +* **Authentication** deals with determining whether someone is who they say they are, generally by "logging in" with an email and password, or a third party provider like Auth0. +* **Authorization** is whether a user (who has usually already been authenticated) is allowed to do something they want to do. This generally involves some combination of roles and permission checking before allowing access to a URL or feature of your site. + +This section of the tutorial focuses on **Authentication** only. See [chapter 7 of the tutorial](../chapter7/rbac.md) to learn about Authorization in Redwood. + +::: + +## Auth Setup + +As you probably have guessed, Redwood has a couple of generators to get you going. One installs the backend components needed for dbAuth, the other creates login, signup and forgot password pages. + +Run this setup command to get the internals of dbAuth added to our app: + +```bash +yarn rw setup auth dbAuth +``` + +When prompted to "Enable WebAuthn support", pick no—this is a separate piece of functionality we won't need for the tutorial. You'll see that the process creates several files and includes some post-install instructions for the last couple of customizations you'll need to make. Let's go through them now. + +### Create a User Model + +First we'll need to add a couple of fields to our `User` model. We don't even have a `User` model yet, so we'll create one along with the required fields at the same time. + +Open up `schema.prisma` and add: + +```javascript title="api/db/schema.prisma" +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +model Post { + id Int @id @default(autoincrement()) + title String + body String + createdAt DateTime @default(now()) +} + +model Contact { + id Int @id @default(autoincrement()) + name String + email String + message String + createdAt DateTime @default(now()) +} + +// highlight-start +model User { + id Int @id @default(autoincrement()) + name String? + email String @unique + hashedPassword String + salt String + resetToken String? + resetTokenExpiresAt DateTime? +} +// highlight-end +``` + +This gives us a user with a name and email, as well as four fields that dbAuth will control: + +* **hashedPassword**: stores the result of combining the user's password with a `salt` and then [hashed](https://searchsqlserver.techtarget.com/definition/hashing) +* **salt**: a unique string that combines with the hashedPassword to prevent [rainbow table attacks](https://dev.to/salothom/rainbow-tables-why-to-add-salt-45l9) +* **resetToken**: if the user forgets their password, dbAuth inserts a token in here that must be present when the user returns to reset their password +* **resetTokenExpiresAt**: a timestamp after which the `resetToken` will be considered expired and no longer valid (the user will need to fill out the forgot password form again) + +Let's create the user model by migrating the database, naming it something like "create user": + +```bash +yarn rw prisma migrate dev +``` + +That's it for the database setup! + +## Private Routes + +Try reloading the Posts admin and we'll see something that's 50% correct: + +![image](https://user-images.githubusercontent.com/300/146462761-d21c93f0-289a-4e11-bccf-8e4e68f21438.png) + +Going to the admin section now prevents a non-logged in user from seeing posts, great! This is the result of the `@requireAuth` directive in `api/src/graphql/posts.sdl.{js,ts}`: you're not authenticated so GraphQL will not respond to your request for data. But, ideally they wouldn't be able to see the admin pages themselves. Let's fix that with a new component in the Routes file, `<PrivateSet>`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +// highlight-next-line +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' + +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +import { useAuth } from './auth' + +const Routes = () => { + return ( + <Router useAuth={useAuth}> + // highlight-next-line + <PrivateSet unauthenticated="home"> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/admin/posts" page={PostPostsPage} name="posts" /> + </Set> + // highlight-next-line + </PrivateSet> + <Set wrap={BlogLayout}> + <Route path="/article/{id:Int}" page={ArticlePage} name="article" /> + <Route path="/contact" page={ContactPage} name="contact" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/Routes.tsx" +// highlight-next-line +import { PrivateSet, Router, Route, Set } from '@redwoodjs/router' + +import ScaffoldLayout from 'src/layouts/ScaffoldLayout' +import BlogLayout from 'src/layouts/BlogLayout' + +import { useAuth } from './auth' + +const Routes = () => { + return ( + <Router useAuth={useAuth}> + // highlight-next-line + <PrivateSet unauthenticated="home"> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/admin/posts" page={PostPostsPage} name="posts" /> + </Set> + // highlight-next-line + </PrivateSet> + <Set wrap={BlogLayout}> + <Route path="/article/{id:Int}" page={ArticlePage} name="article" /> + <Route path="/contact" page={ContactPage} name="contact" /> + <Route path="/about" page={AboutPage} name="about" /> + <Route path="/" page={HomePage} name="home" /> + </Set> + <Route notfound page={NotFoundPage} /> + </Router> + ) +} + +export default Routes +``` + +</TabItem> +</Tabs> + +We wrap the routes we want to be private (that is, only accessible when logged in) in the `<PrivateSet>` component, and tell our app where to send them if they are unauthenticated. In this case they should go to the `home` route. + +Try going back to [http://localhost:8910/admin/posts](http://localhost:8910/admin/posts) now and—yikes! + +![Homepage showing user does not have permission to view](https://user-images.githubusercontent.com/300/146463430-f7bc7fc9-a966-4149-9cb6-382d89d9d636.png) + +Well, we couldn't get to the admin pages, but we also can't see our blog posts any more. Do you know why we're seeing the same message here that we saw in the posts admin page? + +It's because the `posts` query in `posts.sdl.{js,ts}` is used by both the homepage *and* the posts admin page. Since it has the `@requireAuth` directive, it's locked down and can only be accessed when logged in. But we *do* want people that aren't logged in to be able to view the posts on the homepage! + +Now that our admin pages are behind a `<PrivateSet>` route, what if we set the `posts` query to be `@skipAuth` instead? Let's try: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/posts.sdl.js" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + } + + type Query { + // highlight-next-line + posts: [Post!]! @skipAuth + post(id: Int!): Post @requireAuth + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/posts.sdl.ts" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + } + + type Query { + // highlight-next-line + posts: [Post!]! @skipAuth + post(id: Int!): Post @requireAuth + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth + } +` +``` + +</TabItem> +</Tabs> + +Reload the homepage and: + +![image](https://user-images.githubusercontent.com/300/146463788-7ab8afbb-8cd8-4c16-b8d2-02a00bcd7b46.png) + +They're back! Let's just check that if we click on one of our posts that we can see it... UGH: + +![image](https://user-images.githubusercontent.com/300/146463841-cb9c95b6-3cc8-4697-9056-97fdebb49c51.png) + +This page shows a single post, using the `post` query, not `posts`! So, we need to `@skipAuth` on that one as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/posts.sdl.js" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + } + + type Query { + posts: [Post!]! @skipAuth + // highlight-next-line + post(id: Int!): Post @skipAuth + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/posts.sdl.ts" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + } + + type Query { + posts: [Post!]! @skipAuth + // highlight-next-line + post(id: Int!): Post @skipAuth + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth + deletePost(id: Int!): Post! @requireAuth + } +` +``` + +</TabItem> +</Tabs> + +Cross your fingers and reload! + +![image](https://user-images.githubusercontent.com/300/146463959-c59c8721-484f-45de-a663-e6ab3b2591dc.png) + +We're back in business! Once you add authentication into your app you'll probably run into several situations like this where you need to go back and forth, re-allowing access to some pages or queries that inadvertently got locked down by default. Remember, Redwood is secure by default—we'd rather you accidentally expose too *little* of your app than too *much*! + +Now that our pages are behind login, let's actually create a login page so that we can see them again. + +:::info Skipping auth altogether for `posts` and `post` feels bad somehow... + +Ahh, good eye. While posts don't currently expose any particularly secret information, what if we eventually add a field like `publishStatus` where you could mark a post as `draft` so that it doesn't show on the homepage. But, if you knew enough about GraphQL, you could easily request all posts in the database and be able to read all the drafts! + +It would be more future-proof to create a *new* endpoint for public display of posts, something like `publicPosts` and `publicPost` that will have built-in logic to only ever return a minimal amount of data and leave the default `posts` and `post` queries returning all the data for a post, something that only the admin will have access to. (Or do the opposite: keep `posts` and `post` as public and create new `adminPosts` and `adminPost` endpoints that can contain sensitive information.) + +::: + +## Login & Signup Pages + +Yet another generator is here for you, this time one that will create pages for login, signup and forgot password pages: + +```bash +yarn rw g dbAuth +``` + +Again several pages will be created and some post-install instructions will describe next steps. But for now, try going to [http://localhost:8910/login](http://localhost:8910/login): + +![Generated login page](https://user-images.githubusercontent.com/300/146464693-a8fc4cf9-7fed-474f-8335-bb4c80fe0a5e.png) + +That was easy! We don't have a user to login with, so try going to the signup page instead (there's a link under the Login button, or just head to [http://localhost:8910/signup](http://localhost:8910/signup)): + +![Generated signup page](https://user-images.githubusercontent.com/300/146464785-a5996b19-27c5-493c-8fb3-1c753add31a6.png) + +dbAuth defaults to the generic "Username" for the first field, but in our case the username will be an email address (we can change that label in a moment). Create yourself a user with email and password: + +![image](https://user-images.githubusercontent.com/300/146464870-cb859f8b-175f-4170-8da4-5286facd1fe5.png) + +And after clicking "Signup" you should end up back on the homepage, where everything looks the same! Yay? But now try going to [http://localhost:8910/admin/posts](http://localhost:8910/admin/posts): + +![Posts admin](https://user-images.githubusercontent.com/300/146465485-c169a4b8-f398-47ec-8412-4fc15a666976.png) + +Awesome! Signing up will automatically log you in (although this behavior [can be changed](../../auth/dbauth.md#signuphandler)) and if you look in the code for the `SignupPage` you'll see where the redirect to the homepage takes place (hint: check out line 21). + +## Add a Logout Link + +Now that we're logged in, how do we log out? Let's add a link to the `BlogLayout` so that it's present on all pages, and also include an indicator of who you're actually logged in as. + +Redwood provides a [hook](../../authentication.md#destructuring-the-useauth-hook) `useAuth` which we can use in our components to determine the state of the user's login-ness, get their user info, and more. In `BlogLayout` we want to destructure the `isAuthenticated`, `currentUser` and `logOut` properties from `useAuth()`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.jsx" +import { Link, routes } from '@redwoodjs/router' + +// highlight-next-line +import { useAuth } from 'src/auth' + +const BlogLayout = ({ children }) => { + // highlight-next-line + const { isAuthenticated, currentUser, logOut } = useAuth() + + return ( + <> + <header> + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + <nav> + <ul> + <li> + <Link to={routes.home()}>Home</Link> + </li> + <li> + <Link to={routes.about()}>About</Link> + </li> + <li> + <Link to={routes.contact()}>Contact</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.tsx" +import { Link, routes } from '@redwoodjs/router' + +// highlight-next-line +import { useAuth } from 'src/auth' + +type BlogLayoutProps = { + children?: React.ReactNode +} + +const BlogLayout = ({ children }: BlogLayoutProps) => { + // highlight-next-line + const { isAuthenticated, currentUser, logOut } = useAuth() + + return ( + <> + <header> + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + <nav> + <ul> + <li> + <Link to={routes.home()}>Home</Link> + </li> + <li> + <Link to={routes.about()}>About</Link> + </li> + <li> + <Link to={routes.contact()}>Contact</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +</Tabs> + +As you can probably tell by the names: + +* **isAuthenticated**: a boolean as to whether or not a user is logged in +* **currentUser**: any details the app has on that user (more on this in a moment) +* **logOut**: removes the user's session and logs them out + +At the top right of the page, let's show the email address of the user (if they're logged in) as well as a link to log out. If they're not logged in, let's show a link to do just that: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.jsx" +import { Link, routes } from '@redwoodjs/router' + +import { useAuth } from 'src/auth' + +const BlogLayout = ({ children }) => { + const { isAuthenticated, currentUser, logOut } = useAuth() + + return ( + <> + <header> + // highlight-next-line + <div className="flex-between"> + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + // highlight-start + {isAuthenticated ? ( + <div> + <span>Logged in as {currentUser.email}</span>{' '} + <button type="button" onClick={logOut}> + Logout + </button> + </div> + ) : ( + <Link to={routes.login()}>Login</Link> + )} + </div> + // highlight-end + <nav> + <ul> + <li> + <Link to={routes.home()}>Home</Link> + </li> + <li> + <Link to={routes.about()}>About</Link> + </li> + <li> + <Link to={routes.contact()}>Contact</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.tsx" +import { Link, routes } from '@redwoodjs/router' + +import { useAuth } from 'src/auth' + +type BlogLayoutProps = { + children?: React.ReactNode +} + +const BlogLayout = ({ children }: BlogLayoutProps) => { + const { isAuthenticated, currentUser, logOut } = useAuth() + + return ( + <> + <header> + // highlight-next-line + <div className="flex-between"> + <h1> + <Link to={routes.home()}>Redwood Blog</Link> + </h1> + // highlight-start + {isAuthenticated ? ( + <div> + <span>Logged in as {currentUser.email}</span>{' '} + <button type="button" onClick={logOut}> + Logout + </button> + </div> + ) : ( + <Link to={routes.login()}>Login</Link> + )} + </div> + // highlight-end + <nav> + <ul> + <li> + <Link to={routes.home()}>Home</Link> + </li> + <li> + <Link to={routes.about()}>About</Link> + </li> + <li> + <Link to={routes.contact()}>Contact</Link> + </li> + </ul> + </nav> + </header> + <main>{children}</main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/146466685-cd91d9e6-e341-4698-81a6-cc404d6b3098.png) + +Well, it's almost right! Where's our email address? By default, the function that determines what's in `currentUser` only returns that user's `id` field for security reasons (better to expose too little than too much, remember!). To add email to that list, check out `api/src/lib/auth.{js,ts}`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/lib/auth.js" +import { AuthenticationError, ForbiddenError } from '@redwoodjs/graphql-server' +import { db } from './db' + +export const getCurrentUser = async (session) => { + return await db.user.findUnique({ + where: { id: session.id }, + select: { id: true }, + }) +} + +export const isAuthenticated = () => { + return !!context.currentUser +} + +export const hasRole = (roles) => { + if (!isAuthenticated()) { + return false + } + + const currentUserRoles = context.currentUser?.roles + + if (typeof roles === 'string') { + if (typeof currentUserRoles === 'string') { + // roles to check is a string, currentUser.roles is a string + return currentUserRoles === roles + } else if (Array.isArray(currentUserRoles)) { + // roles to check is a string, currentUser.roles is an array + return currentUserRoles?.some((allowedRole) => roles === allowedRole) + } + } + + if (Array.isArray(roles)) { + if (Array.isArray(currentUserRoles)) { + // roles to check is an array, currentUser.roles is an array + return currentUserRoles?.some((allowedRole) => + roles.includes(allowedRole) + ) + } else if (typeof currentUserRoles === 'string') { + // roles to check is an array, currentUser.roles is a string + return roles.some((allowedRole) => currentUserRoles === allowedRole) + } + } + + // roles not found + return false +} + +export const requireAuth = ({ roles } = {}) => { + if (!isAuthenticated()) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (roles && !hasRole(roles)) { + throw new ForbiddenError("You don't have access to do that.") + } +} +``` +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/lib/auth.ts" +import { AuthenticationError, ForbiddenError } from '@redwoodjs/graphql-server' +import { db } from './db' + +import type { DbAuthSession } from '@redwoodjs/api' + +export const getCurrentUser = async (session: DbAuthSession<number>) => { + return await db.user.findUnique({ + where: { id: session.id }, + select: { id: true }, + }) +} + +export const isAuthenticated = (): boolean => { + return !!context.currentUser +} + +type AllowedRoles = string | string[] | undefined + +export const hasRole = (roles: AllowedRoles): boolean => { + if (!isAuthenticated()) { + return false + } + + const currentUserRoles = context.currentUser?.roles + + if (typeof roles === 'string') { + if (typeof currentUserRoles === 'string') { + // roles to check is a string, currentUser.roles is a string + return currentUserRoles === roles + } else if (Array.isArray(currentUserRoles)) { + // roles to check is a string, currentUser.roles is an array + return currentUserRoles?.some((allowedRole) => roles === allowedRole) + } + } + + if (Array.isArray(roles)) { + if (Array.isArray(currentUserRoles)) { + // roles to check is an array, currentUser.roles is an array + return currentUserRoles?.some((allowedRole) => + roles.includes(allowedRole) + ) + } else if (typeof currentUserRoles === 'string') { + // roles to check is an array, currentUser.roles is a string + return roles.some((allowedRole) => currentUserRoles === allowedRole) + } + } + + // roles not found + return false +} + +export const requireAuth = ({ roles }: { roles?: AllowedRoles } = {}) => { + if (!isAuthenticated()) { + throw new AuthenticationError("You don't have permission to do that.") + } + + if (roles && !hasRole(roles)) { + throw new ForbiddenError("You don't have access to do that.") + } +} +``` +</TabItem> +</Tabs> + +The `getCurrentUser()` function is where the magic happens: whatever is returned by this function is the content of `currentUser`, in both the web and api sides! In the case of dbAuth, the single argument passed in, `session`, contains the `id` of the user that's logged in. It then looks up the user in the database with Prisma, selecting just the `id`. Let's add `email` to this list: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/lib/auth.js" +export const getCurrentUser = async (session) => { + return await db.user.findUnique({ + where: { id: session.id }, + // highlight-next-line + select: { id: true, email: true}, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/lib/auth.ts" +export const getCurrentUser = async (session) => { + return await db.user.findUnique({ + where: { id: session.id }, + // highlight-next-line + select: { id: true, email: true}, + }) +} +``` + +</TabItem> +</Tabs> + +Now our email should be present at the upper right on the homepage: + +![image](https://user-images.githubusercontent.com/300/146467129-c0446c1a-3648-4787-9675-d66eb80b8ab6.png) + +Before we leave this file, take a look at `requireAuth()`. Remember when we talked about the `@requireAuth` directive and how when we first installed authentication we saw the message "You don't have permission to do that."? This is where that came from! + +## Session Secret + +After the initial `setup` command, which installed dbAuth, you may have noticed that an edit was made to the `.env` file in the root of your project. The `setup` script appended a new ENV var called `SESSION_SECRET` along with a big random string of numbers and letters. This is the encryption key for the cookies that are stored in the user's browser when they log in. This secret should never be shared, never checked into your repo, and should be re-generated for each environment you deploy to. + +You can generate a new value with the `yarn rw g secret` command. It only outputs it to the terminal, you'll need to copy/paste to your `.env` file. Note that if you change this secret in a production environment, all users will be logged out on their next request because the cookie they currently have cannot be decrypted with the new key! They'll need to log in again to a new cookie encrypted with the new key. + +## Wrapping Up + +Believe it or not, that's pretty much it for authentication! You can use the combination of `@requireAuth` and `@skipAuth` directives to lock down access to GraphQL query/mutations, and the `<PrivateSet>` component to restrict access to entire pages of your app. If you only want to restrict access to certain components, or certain parts of a component, you can always get `isAuthenticated` from the `useAuth()` hook and then render one thing or another. + +Head over to the Redwood docs to read more about [self-hosted](../../auth/dbauth.md) and [third-party authentication](../../authentication.md#official-integrations). + +## One More Thing + +Remember the GraphQL Playground exercise at the end of [Creating a Contact](../chapter3/saving-data.md#creating-a-contact)? Try to run that again now that authentication is in place and you should get that error we've been talking about because of the `@requireAuth` directive! But, creating a *new* contact should still work just fine (because we're using `@skipAuth` on that mutation). + +However, simulating a logged-in user through the GraphQL Playground is no picnic. But, we're working on improving the experience! diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter4/deployment.md b/docs/versioned_docs/version-7.0/tutorial/chapter4/deployment.md new file mode 100644 index 000000000000..bf7376195eb3 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter4/deployment.md @@ -0,0 +1,190 @@ +# Deployment + +The whole reason we started building Redwood was to make full-stack web apps easier to build and deploy on the Jamstack. While technically we already deployed in the previous section, it doesn't actually work yet. Let's fix that. + +### Git + +Remember at the start of the tutorial when we said that you didn't *really* need to use git if you didn't want to? Well, if you want to follow along with this deploy, you'll need to start using it now. Sorry! Commit your changes and push up to GitHub, GitLab or Bitbucket if you want to continue to follow along. Need a git primer? The most concise one we've seen is to simply create a new repo on GitHub. You'll be shown the list of commands necessary to get your local code committed and pushed up: + +![image](https://user-images.githubusercontent.com/300/152596271-7921c9dc-fe83-4827-b7e4-2740e826fb42.png) + +But instead of just `git add README.md` use `git add .` since you've got an entire codebase ready to go. + +### The Database + +We'll need a database somewhere on the internet to store our data. We've been using SQLite locally, but the kind of deployment we're going to do doesn't have a persistent disk store that we can put SQLite's file-based database on. So, for this part of this tutorial, we will use Postgres. (Prisma currently supports SQLite, Postgres, MySQL and SQL Server.) Don't worry if you aren't familiar with Postgres, Prisma will do all the heavy lifting. We just need to get a database available to the outside world so it can be accessed by our app. + +:::danger + +Prisma only supports one database provider at a time, and since we can't use SQLite in production and *must* switch to Postgres or MySQL, that means we need to use the same database on our local development system after making this change. See our [Local Postgres Setup](../../local-postgres-setup.md) guide to get you started. + +::: + +There are several hosting providers where you can quickly start up a Postgres instance: + +- [Railway](https://railway.app/) +- [Heroku](https://www.heroku.com/postgres) +- [Digital Ocean](https://www.digitalocean.com/products/managed-databases) +- [AWS](https://aws.amazon.com/rds/postgresql/) + +We're going to go with Railway for now because it's a) free and b) ridiculously easy to get started, by far the easiest we've found. You don't even need to create a login! The only limitation is that if you *don't* create an account, your database will be removed after one day. If you think you can finish everything you need to do in the next 24 hours, go for it! Otherwise just create an account first and it'll stick around. + +Head over to Railway and click **Start a New Project**: + +![image](https://user-images.githubusercontent.com/300/152593861-3063732c-b459-4ee9-86ee-e00b28c003fb.png) + +And then Provision PostgreSQL: + +![image](https://user-images.githubusercontent.com/300/152593907-1f8b599e-b4fb-4930-a841-866505e3b79d.png) + +And believe it or not, we're done! Now we just need the connection URL. Click on **PostgreSQL** at the left, and then the **Connect** tab. Copy the **Postgres Connection URL**, the one that starts with `postgresql://`: + +![image](https://user-images.githubusercontent.com/300/107562577-da7eb180-6b94-11eb-8731-e86a1c7127af.png) + +### Change Database Provider + +We need to let Prisma know that we intend to use Postgres instead of SQLite from now on. Update the `provider` entry in `schema.prisma`: + +```javascript +provider = "postgresql" +``` + +### Recreate Migrations + +We will need to re-create our database migrations in a Postgres-compatible format. First, we need to tell Prisma where our new database lives so that it can access it from our dev environment. Open up `.env` and uncomment the `DATABASE_URL` var and update it to be the URL you copied from Railway, and save. + +:::info + +Note that `.env` is not checked into git by default, and should not be checked in under any circumstances! This file will be used to contain any secrets that your codebase needs (like database URLs and API keys) that should never been seen publicly. If you were to check this file in your repo, and your repo was public, anyone on the internet can see your secret stuff! + +The `.env.defaults` file is meant for other environment variables (like non-sensitive config options for libraries, log levels, etc.) that are safe to be seen by the public and is meant to be checked into your repo and shared with other devs. + +::: + +Next, delete the `api/db/migrations` folder completely. + +Finally, run: + +```bash +yarn rw prisma migrate dev +``` + +All of the changes we made will be consolidated into a single, new migration file and applied to the Railway database instance. You can name this one something like "initial schema". + +That's it for the database setup! Now to let Netlify know about it. + +### Netlify + +So the database is settled, but we need to actually put our code on the internet somewhere. That's where Netlify comes in. + +Before we setup Netlify we'll need to setup our code with a setup command. Setup! + +```bash +yarn rw setup deploy netlify +``` + +This adds a `netlify.toml` config file in the root of the project that is good to go as-is, but you can tweak it as your app grows (check out the comments at the top of the file for links to resources about customizing). Make sure you commit and push up these code changes to your repo. + +And with that, we're ready to setup Netlify itself. + +:::warning +While you may be tempted to use the [Netlify CLI](https://cli.netlify.com) commands to [build](https://cli.netlify.com/commands/build) and [deploy](https://cli.netlify.com/commands/deploy) your project directly from you local project directory, doing so **will lead to errors when deploying and/or when running functions**. I.e. errors in the function needed for the GraphQL server, but also other serverless functions. + +The main reason for this is that these Netlify CLI commands simply build and deploy -- they build your project locally and then push the dist folder. That means that when building a RedwoodJS project, the [Prisma client is generated with binaries matching the operating system at build time](https://cli.netlify.com/commands/link) -- and not the [OS compatible](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#binarytargets-options) with running functions on Netlify. Your Prisma client engine may be `darwin` for OSX or `windows` for Windows, but it needs to be `debian-openssl-1.1.x` or `rhel-openssl-1.1.x`. If the client is incompatible, your functions will fail. + + +Therefore, **please follow the instructions below** to sync your GitHub (or other compatible source control service) repository with Netlify and allow their build and deploy system to manage deployments. +::: + +#### Signup + +[Create a Netlify account](https://app.netlify.com/signup) if you don't have one already. Once you've signed up and verified your email done just click the **New site from Git** button at the upper right: + +![Netlify New Site picker](https://user-images.githubusercontent.com/300/73697486-85f84a80-4693-11ea-922f-0f134a3e9031.png) + +Now just authorize Netlify to connect to your git hosting provider and find your repo. When the deploy settings come up you can leave everything as the defaults and click **Deploy site**. + +Netlify will start building your app and it will eventually say the deployment failed. Why? We haven't told it where to find our database yet! + +#### Environment Variables + +Go back to the main site page and then to **Site settings** at the top, and then **Environment variables**. Click **Add a Variable** and this is where we'll paste the database connection URI we got from Railway (note the **Key** is "DATABASE_URL"). After pasting the value, append `?connection_limit=1` to the end. The URI will have the following format: `postgresql://<user>:<pass>@<url>/<db>?connection_limit=1`. The default values for Scopes and Values can be left as is. Click **Create variable** to proceed. + +:::tip + +This connection limit setting is [recommended by Prisma](https://www.prisma.io/docs/guides/performance-and-optimization/connection-management#recommended-connection-pool-size-1) when working with relational databases in a Serverless context. +::: + +We'll need to add one more environment variable, `SESSION_SECRET` which contains a big long string that's used to encrypt the session cookies for dbAuth. This was included in development when you installed dbAuth, but now we need to tell Netlify about it. If you look in your `.env` file you'll see it at the bottom, but we want to create a unique one for every environment we deploy to (each developer should have a unique one as well). We've got a CLI command to create a new one: + +```bash +yarn rw g secret +``` + +Copy that over to Netlify along with `DATABASE_URL`: + +![Adding ENV var](https://user-images.githubusercontent.com/2931245/204148740-f8aaa276-e9b1-4ffc-a842-7602a1e0111a.png) + +#### IT'S ALIVE + +Now go over to the **Deploys** tab in the top nav and open the **Trigger deploy** dropdown on the right, then finally choose **Deploy site**: + +![Trigger deploy](https://user-images.githubusercontent.com/300/83187760-835aae80-a0e3-11ea-9733-ff54969bba1f.png) + +With a little luck (and SCIENCE) it will complete successfully! You can click the **Preview** button at the top of the deploy log page, or go back and click the URL of your Netlify site towards the top: + +![Netlify URL](https://user-images.githubusercontent.com/300/83187909-bef57880-a0e3-11ea-97dc-e557248acd3a.png) + +:::info + +If you view a deploy via the **Preview** button notice that the URL contains a hash of the latest commit. Netlify will create one of these for every push to `main` but it will only ever show this exact commit, so if you deploy again and refresh you won't see any changes. The real URL for your site (the one you get from your site's homepage in Netlify) will always show the latest successful deploy. See [Branch Deploys](#branch-deploys) below for more info. + +::: + +Did it work? If you see "Empty" under the About and Contact links then it did! Yay! You're seeing "Empty" because you don't have any posts in your brand new production database so head to `/admin/posts` and create a couple, then go back to the homepage to see them. + +If the deploy failed, check the log output in Netlify and see if you can make sense of the error. If the deploy was successful but the site doesn't come up, try opening the web inspector and look for errors. Are you sure you pasted the entire Postgres connection string correctly? If you're really, really stuck head over to the [Redwood Community](https://community.redwoodjs.com) and ask for help. + +#### Custom Subdomain + +You can customize the subdomain that your site is published at (who wants to go to `agitated-mongoose-849e99.netlify.app`??) by going to **Site Settings > Domain Management > Domains > Custom Domains**. Open up the **Options** menu and select **Edit site name**. Your site should be available at your custom subdomain (`redwood-tutorial.netlify.app` is much nicer) almost immediately. + +![image](https://user-images.githubusercontent.com/300/154521450-ee64c77c-e658-4045-9dd6-119858b6739e.png) + +Note that your subdomain needs to be unique across all of Netlify, so `blog.netlify.app` is probably already taken! You can also connect a completely custom domain: click the **Add custom domain** button. + +#### Branch Deploys + +Another neat feature of Netlify is _Branch Deploys_. When you create a branch and push it up to your repo, Netlify will build that branch at a unique URL so that you can test your changes, leaving the main site alone. Once your branch is merged to `main` then a deploy at your main site will run and your changes will show to the world. To enable Branch Deploys go to **Site settings** > **Build & deploy** > **Continuous Deployment** and under the **Branches** section click **Edit settings** and change **Branch deploys** to "All". You can also enable _Deploy previews_ which will create them for any pull requests against your repo. + +![Netlify settings screenshot](https://user-images.githubusercontent.com/7134153/182321177-2d845d77-36f4-4146-9fb9-55ae83a30983.png) + +:::tip + +You also have the ability to "lock" the `main` branch so that deploys do not automatically occur on every push—you need to manually tell Netlify to deploy the latest, either by going to the site or using the [Netlify CLI](https://cli.netlify.com/). + +::: + +### Database Concerns + +#### Connections + +In this tutorial, your serverless functions will be connecting directly to the Postgres database. Because Postgres has a limited number of concurrent connections it will accept, this does not scale—imagine a flood of traffic to your site which causes a 100x increase in the number of serverless function calls. Netlify (and behind the scenes, AWS) will happily spin up 100+ serverless Lambda instances to handle the traffic. The problem is that each one will open its own connection to your database, potentially exhausting the number of available connections. The proper solution is to put a connection pooling service in front of Postgres and connect to that from your lambda functions. To learn how to do that, see the [Connection Pooling](../../connection-pooling.md) guide. + +#### Security + +Your database will need to be open to the world because you never know what IP address a serverless function will have when it runs. You could potentially get the CIDR block for ALL IP addresses that your hosting provider has and only allow connections from that list, but those ranges usually change over time and keeping them in sync is not trivial. As long as you keep your DB username/password secure you should be safe, but we understand this is not the ideal solution. + +As this form of full-stack Jamstack gains more prominence we're counting on database providers to provide more robust, secure solutions that address these issues. Our team is working closely with several of them and will hopefully have good news to share in the near future! + +##### The Signup Problem + +Speaking of security, you may have noticed a glaring security hole in our build: anyone can come along and sign up for a new account and start creating blog posts! That's not ideal. A quick and easy solution would be to remove the `signup` route after you've created your own account: now there's no signup page accessible and a normal human will give up. But what about devious hackers? + +dbAuth provides an API for signup and login that the client knows how to call, but if someone were crafty enough they could make their own API calls to that same endpoint and still create a new user even without the signup page! Ahhhh! We finally made it through this long (but fun!) tutorial, can't we just take a break and put our feet up? Unfortunately, the war against bad actors never really ends. + +To close this hole, check out `api/src/functions/auth.js`, this is where the configuration for dbAuth lives. Take a gander at the `signupOptions` object, specifically the `handler()` function. This defines what to do with the user data that's submitted on the signup form. If you simply have this function return `false`, instead of creating a user, we will have effectively shut the door on the API signup hack. + +Commit your changes and push your repo, and Netlify will re-deploy your site. Take that you hacking [snollygosters](https://www.merriam-webster.com/dictionary/snollygoster)! + +![100% accurate portrayal of hacking](https://user-images.githubusercontent.com/300/152592915-609747f9-3d68-4d72-8cd8-e120ef83b640.gif) diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter5/first-story.md b/docs/versioned_docs/version-7.0/tutorial/chapter5/first-story.md new file mode 100644 index 000000000000..8b111bfa990d --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter5/first-story.md @@ -0,0 +1,247 @@ +# Our First Story + +Let's say that on our homepage we only want to show the first couple of sentences in our blog post as a short summary, and then you'll have to click through to see the full post. + +First let's update the `Article` component to contain that functionality: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +import { Link, routes } from '@redwoodjs/router' + +// highlight-start +const truncate = (text, length) => { + return text.substring(0, length) + '...' +} +// highlight-end + +// highlight-next-line +const Article = ({ article, summary = false }) => { + return ( + <article className="mt-10"> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + // highlight-next-line + {summary ? truncate(article.body, 100) : article.body} + </div> + </article> + ) +} + +export default Article +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Article/Article.tsx" +import { Link, routes } from '@redwoodjs/router' + +import type { Post } from 'types/graphql' + +// highlight-start +const truncate = (text: string, length: number) => { + return text.substring(0, length) + '...' +} +// highlight-end + +interface Props { + // highlight-start + article: Omit<Post, 'createdAt'> + summary?: boolean + // highlight-end +} + +// highlight-next-line +const Article = ({ article, summary = false }: Props) => { + return ( + <article className="mt-10"> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + // highlight-next-line + {summary ? truncate(article.body, 100) : article.body} + </div> + </article> + ) +} + +export default Article +``` + +</TabItem> +</Tabs> + + +We'll pass an additional `summary` prop to the component to let it know if it should show just the summary or the whole thing. We default it to `false` to preserve the existing behavior—always showing the full body. + +Now in the Storybook story let's create a `summary` story that uses the `Article` component the same way that `generated` does, but adds the new `summary` prop. We'll take the content of the sample post and put that in a constant that both stories will use. We'll also rename `generated` to `full` to make it clear what's different between the two: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/components/Article/Article.stories.jsx" +import Article from './Article' + +// highlight-start +const ARTICLE = { + id: 1, + title: 'First Post', + body: `Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Street art next level umami squid. Hammock hexagon glossier 8-bit banjo. Neutra la croix mixtape echo park four loko semiotics kitsch forage chambray. Semiotics salvia selfies jianbing hella shaman. Letterpress helvetica vaporware cronut, shaman butcher YOLO poke fixie hoodie gentrify woke heirloom.`, +} +// highlight-end + +// highlight-start +export const full = () => { + return <Article article={ARTICLE} /> +} +// highlight-end + +// highlight-start +export const summary = () => { + return <Article article={ARTICLE} summary={true} /> +} +// highlight-end + +export default { title: 'Components/Article' } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/components/Article/Article.stories.tsx" +import Article from './Article' + +// highlight-start +const ARTICLE = { + id: 1, + title: 'First Post', + body: `Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Street art next level umami squid. Hammock hexagon glossier 8-bit banjo. Neutra la croix mixtape echo park four loko semiotics kitsch forage chambray. Semiotics salvia selfies jianbing hella shaman. Letterpress helvetica vaporware cronut, shaman butcher YOLO poke fixie hoodie gentrify woke heirloom.`, +} +// highlight-end + +// highlight-start +export const full = () => { + return <Article article={ARTICLE} /> +} +// highlight-end + +// highlight-start +export const summary = () => { + return <Article article={ARTICLE} summary={true} /> +} +// highlight-end + +export default { title: 'Components/Article' } +``` + +</TabItem> +</Tabs> + +As soon as you save the change the stories Storybook should refresh and may show an error: there's no longer a "Generated" story to show! In the tree on the left, expand "Article" and the "Full" version should show right away. Click on "Summary" to see the difference: + +![image](https://user-images.githubusercontent.com/300/153311838-595b8b38-d899-4d7b-891b-a492f0c8f2e2.png) + +### Displaying the Summary + +Great! Now to complete the picture let's use the summary in our home page display of blog posts. The actual Home page isn't what references the `Article` component though, that's in the `ArticlesCell`. We'll add the `summary` prop and then check the result in Storybook: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.jsx" +import Article from 'src/components/Article' + +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => <div>Error: {error.message}</div> + +export const Success = ({ articles }) => { + return ( + <div className="space-y-10"> + {articles.map((article) => ( + // highlight-next-line + <Article article={article} key={article.id} summary={true} /> + ))} + </div> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell/ArticlesCell.tsx" +import Article from 'src/components/Article' + +import type { ArticlesQuery } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + title + body + createdAt + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div>Error: {error.message}</div> +) + +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + <div className="space-y-10"> + {articles.map((article) => ( + // highlight-next-line + <Article article={article} key={article.id} summary={true} /> + ))} + </div> + ) +} +``` + +</TabItem> +</Tabs> + +Check out the story to see the new summary view: + +![image](https://user-images.githubusercontent.com/300/153312022-1cfbf696-b2cb-4fca-b640-4111643fb396.png) + +And if you head to the real site you'll see the summary there as well: + +![image](https://user-images.githubusercontent.com/300/101545160-b2d45880-395b-11eb-9a32-f8cb8106de7f.png) + +We can double check that our original usage of `Article` (the one without the `summary` prop) in `ArticleCell` still renders the entire post, not just the truncated version: + +![image](https://user-images.githubusercontent.com/300/153312180-2a80df75-ea95-4e7b-9eb5-45fa900333e9.png) + +Storybook makes it easy to create and modify your components in isolation and actually helps enforce a general best practice when building React applications: components should be self-contained and reusable by just changing the props that are sent in. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter5/first-test.md b/docs/versioned_docs/version-7.0/tutorial/chapter5/first-test.md new file mode 100644 index 000000000000..f5d13ed06fe4 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter5/first-test.md @@ -0,0 +1,500 @@ +# Our First Test + +So if Storybook is the first phase of creating/updating a component, phase two must be confirming the functionality with a test. Let's add a test for our new summary feature. + +If you've never done any kind of testing before this may be a little hard to follow. We've got a great document [all about testing](../../testing.md) (including some philosophy, for those so inclined) if you want a good overview of testing in general. We even build a super-simple test runner from scratch in plain JavaScript to take some of the mystery out of how this all works! + +If you still have the test process running from the previous page then then you can just press `a` to run **a**ll tests. If you stopped your test process, you can start it again with: + +```bash +yarn rw test +``` + +Can you guess what broke in this test? + +![image](https://user-images.githubusercontent.com/300/153312402-dd7f08bc-e23d-4acc-8202-cdfc9798a911.png) + +The test was looking for the full text of the blog post, but remember that in `ArticlesCell` we had `Article` only display the *summary* of the post. This test is looking for the full text match, which is no longer present on the page. + +Let's update the test so that it checks for the expected behavior instead. There are entire books written on the best way to test, so no matter what we decide on testing in this code there will be someone out there to tell us we're doing it wrong. As just one example, the simplest test would be to just copy what's output and use that for the text in the test: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell.test.jsx" +test('Success renders successfully', async () => { + const articles = standard().articles + render(<Success articles={articles} />) + + // highlight-start + expect(screen.getByText(articles[0].title)).toBeInTheDocument() + expect( + screen.getByText( + 'Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Str...' + ) + ).toBeInTheDocument() + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell.test.tsx" +test('Success renders successfully', async () => { + const articles = standard().articles + render(<Success articles={articles} />) + + // highlight-start + expect(screen.getByText(articles[0].title)).toBeInTheDocument() + expect( + screen.getByText( + 'Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Str...' + ) + ).toBeInTheDocument() + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +But the truncation length could change later, so how do we encapsulate that in our test? Or should we? The number of characters to truncate to is hardcoded in the `Article` component, which this component shouldn't really care about: it should be up to the page that's presenting the article to determine much or how little to show (based on space concerns, design constraints, etc.) don't you think? Even if we refactored the `truncate()` function into a shared place and imported it into both `Article` and this test, the test will still be knowing too much about `Article`—why should it have detailed knowledge of the internals of `Article` and that it's making use of this `truncate()` function at all? It shouldn't! One theory of testing says that the thing you're testing should be a black box: you can't see inside of it, all you can test is what data comes out when you send certain data in. + +Let's compromise—by virtue of the fact that this functionality has a prop called "summary" we can guess that it's doing *something* to shorten the text. So what if we test three things that we can make reasonable assumptions about right now: + +1. The full body of the post body *is not* present +2. But, at least the first couple of words of the post *are* present +3. The text that is shown ends in "..." + +This gives us a buffer if we decide to truncate to something like 25 words, or even if we go up to a couple of hundred. What it *doesn't* encompass, however, is the case where the body of the blog post is shorter than the truncate limit. In that case the full text *would* be present, and we should probably update the `truncate()` function to not add the `...` in that case. We'll leave adding that functionality and test case up to you to add in your free time. ;) + +### Adding the Test + +Okay, let's do this: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell.test.jsx" +// highlight-next-line +import { render, screen, within } from '@redwoodjs/testing' + +import { Loading, Empty, Failure, Success } from './ArticlesCell' +import { standard } from './ArticlesCell.mock' + +describe('ArticlesCell', () => { + test('Loading renders successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + test('Empty renders successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + test('Failure renders successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + test('Success renders successfully', async () => { + const articles = standard().articles + render(<Success articles={articles} />) + + // highlight-start + articles.forEach((article) => { + const truncatedBody = article.body.substring(0, 10) + const matchedBody = screen.getByText(truncatedBody, { exact: false }) + const ellipsis = within(matchedBody).getByText('...', { exact: false }) + + expect(screen.getByText(article.title)).toBeInTheDocument() + expect(screen.queryByText(article.body)).not.toBeInTheDocument() + expect(matchedBody).toBeInTheDocument() + expect(ellipsis).toBeInTheDocument() + }) + // highlight-end + }) +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell.test.tsx" +// highlight-next-line +import { render, screen, within } from '@redwoodjs/testing' + +import { Loading, Empty, Failure, Success } from './ArticlesCell' +import { standard } from './ArticlesCell.mock' + +describe('ArticlesCell', () => { + test('Loading renders successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + test('Empty renders successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + test('Failure renders successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + test('Success renders successfully', async () => { + const articles = standard().articles + render(<Success articles={articles} />) + + // highlight-start + articles.forEach((article) => { + const truncatedBody = article.body.substring(0, 10) + const matchedBody = screen.getByText(truncatedBody, { exact: false }) + const ellipsis = within(matchedBody).getByText('...', { exact: false }) + + expect(screen.getByText(article.title)).toBeInTheDocument() + expect(screen.queryByText(article.body)).not.toBeInTheDocument() + expect(matchedBody).toBeInTheDocument() + expect(ellipsis).toBeInTheDocument() + }) + // highlight-end + }) +}) +``` + +</TabItem> +</Tabs> + +This loops through each article in our `standard()` mock and for each one: + +```javascript +const truncatedBody = article.body.substring(0, 10) +``` + +Create a variable `truncatedBody` containing the first 10 characters of the post body. + +```javascript +const matchedBody = screen.getByText(truncatedBody, { exact: false }) +``` + +Search through the rendered HTML on the screen and find the HTML element that contains the truncated body (note the `{ exact: false }` here, as normally the exact text, and only that text, would need to be present, but in this case there's probably more than just the 10 characters). + +```javascript +const ellipsis = within(matchedBody).getByText('...', { exact: false }) +``` + +Within the HTML element that was found in the previous line, find `...`, again without an exact match. + +```javascript +expect(screen.getByText(article.title)).toBeInTheDocument() +``` + +Find the title of the article in the page. + +```javascript +expect(screen.queryByText(article.body)).not.toBeInTheDocument() +``` +When trying to find the *full* text of the body, it should *not* be present. + +```javascript +expect(matchedBody).toBeInTheDocument() +``` +Assert that the truncated text is . + +```javascript +expect(ellipsis).toBeInTheDocument() +``` +Assert that the ellipsis is present. + +:::info What's the difference between `getByText()` and `queryByText()`? + +`getByText()` will throw an error if the text isn't found in the document, whereas `queryByText()` will return `null` and let you continue with your testing (and is one way to test that some text is *not* present on the page). You can read more about these in the [DOM Testing Library Queries](https://testing-library.com/docs/dom-testing-library/api-queries) docs. + +::: + +As soon as you saved that test file the test should have run and passed! Press `a` to run the whole suite if you want to make sure nothing else broke. Remember to press `o` to go back to only testing changes again. (There's nothing wrong with running the full test suite each time, but it will take longer than only testing the things that have changed since the last time you committed your code.) + +To double check that we're testing what we think we're testing, open up `ArticlesCell.jsx` and remove the `summary={true}` prop (or set it to `false`) and the test should fail: now the full body of the post *is* on the page and the expectation in our test `expect(screen.queryByText(article.body)).not.toBeInTheDocument()` fails because the full body *is* in the document! Make sure to put the `summary={true}` back before we continue. + +### What's the Deal with Mocks? + +Did you wonder where the articles were coming from in our test? Was it the development database? Nope: that data came from a **Mock**. That's the `ArticlesCell.mock.js` file that lives next to your component, test and stories files. Mocks are used when you want to define the data that would normally be returned by GraphQL in your Storybook stories or tests. In cells, a GraphQL call goes out (the query defined by the variable `QUERY` at the top of the file) and returned to the `Success` component. We don't want to have to run the api-side server and have real data in the database just for Storybook or our tests, so Redwood intercepts those GraphQL calls and returns the data from the mock instead. + +:::info If the server is being mocked, how do we test the api-side code? + +We'll get to that next when we create a new feature for our blog from scratch! + +::: + +The names you give your mocks are then available in your tests and stories files. Just import the one you want to use (`standard` is imported for you in generated test files) and you can use the spread syntax to pass it through to your **Success** component. + +Let's say our mock looks like this: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript +export const standard = () => ({ + articles: [ + { + id: 1, + title: 'First Post', + body: `Neutra tacos hot chicken prism raw denim...`, + createdAt: '2020-01-01T12:34:56Z', + }, + { + id: 2, + title: 'Second Post', + body: `Master cleanse gentrify irony put a bird on it...`, + createdAt: '2020-01-01T12:34:56Z', + }, + ], +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript +export const standard = () => ({ + articles: [ + { + id: 1, + title: 'First Post', + body: `Neutra tacos hot chicken prism raw denim...`, + createdAt: '2020-01-01T12:34:56Z', + }, + { + id: 2, + title: 'Second Post', + body: `Master cleanse gentrify irony put a bird on it...`, + createdAt: '2020-01-01T12:34:56Z', + }, + ], +}) +``` + +</TabItem> +</Tabs> + +The first key in the object that's returned is named `articles`. That's also the name of the prop that's expected to be sent into **Success** in the cell: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx +// highlight-next-line +export const Success = ({ articles }) => { + return ( + { articles.map((article) => <Article article={article} />) } + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx +// highlight-next-line +export const Success = ({ articles }: CellSuccessProps<ArticlesQuery>) => { + return ( + { articles.map((article) => <Article article={article} />) } + ) +} +``` + +</TabItem> +</Tabs> + +So we can just spread the result of `standard()` in a story or test when using the **Success** component and everything works out: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.stories.jsx" +import { Success } from './ArticlesCell' +import { standard } from './ArticlesCell.mock' + +export const success = () => { + // highlight-next-line + return Success ? <Success {...standard()} /> : null +} + +export default { title: 'Cells/ArticlesCell' } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell/ArticlesCell.stories.tsx" +import { Success } from './ArticlesCell' +import { standard } from './ArticlesCell.mock' + +export const success = () => { + // highlight-next-line + return Success ? <Success {...standard()} /> : null +} + +export default { title: 'Cells/ArticlesCell' } +``` + +</TabItem> +</Tabs> + +Some folks find this syntax a little *too* succinct and would rather see the `<Success>` component being invoked the same way it is in their actual code. If that sounds like you, skip the spread syntax and just call the `articles` property on `standard()` the old fashioned way: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.stories.jsx" +import { Success } from './ArticlesCell' +import { standard } from './ArticlesCell.mock' + +export const success = () => { + // highlight-next-line + return Success ? <Success articles={standard().articles} /> : null +} + +export default { title: 'Cells/ArticlesCell' } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/ArticlesCell/ArticlesCell.stories.tsx" +import { Success } from './ArticlesCell' +import { standard } from './ArticlesCell.mock' + +export const success = () => { + // highlight-next-line + return Success ? <Success articles={standard().articles} /> : null +} + +export default { title: 'Cells/ArticlesCell' } +``` + +</TabItem> +</Tabs> + +You can have as many mocks as you want, just import the names of the ones you need and send them in as props to your components. + +### Testing Article + +Our test suite is passing again but it's a trick! We never added a test for the actual `summary` functionality that we added to the `Article` component. We tested that `ArticlesCell` renders (that eventually render an `Article`) include a summary, but what it means to render a summary is knowledge that only `Article` contains. + +When you get into the flow of building your app it can be very easy to overlook testing functionality like this. Wasn't it Winston Churchill who said "a thorough test suite requires eternal vigilance"? Techniques like [Test Driven Development](https://en.wikipedia.org/wiki/Test-driven_development) (TDD) were established to help combat this tendency: when you want to write a new feature, write the test first, watch it fail, then write the code to make the test pass so that you know every line of real code you write is backed by a test. What we're doing is affectionately known as [Development Driven Testing](https://medium.com/table-xi/development-driven-testing-673d3959dac2). You'll probably settle somewhere in the middle but one maxim is always true: some tests are better than no tests. + +The summary functionality in `Article` is pretty simple, but there are a couple of different ways we could test it: + +* Export the `truncate()` function and test it directly +* Test the final rendered state of the component + +In this case `truncate()` "belongs to" `Article` and the outside world really shouldn't need to worry about it or know that it exists. If we came to a point in development where another component needed to truncate text then that would be a perfect time to move this function to a shared location and import it into both components that need it. `truncate()` could then have its own dedicated test. But for now let's keep our separation of concerns and test the one thing that's "public" about this component—the result of the render. + +In this case let's just test that the output matches an exact string. Since the knowledge of how long to make the summary is contained in `Article` itself, at this point it feels okay to have the test tightly coupled to the render result of this particular component. (`ArticlesCell` itself didn't know about how long to truncate, just that *something* was shortening the text.) You could spin yourself in circles trying to refactor the code to make it absolutely bulletproof to code changes breaking the tests, but will you ever actually need that level of flexibility? It's always a trade-off! + +We'll move the sample article data in the test to a constant and then use it in both the existing test (which tests that not passing the `summary` prop at all results in the full body being rendered) and our new test that checks for the summary version being rendered: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.test.jsx" +import { render, screen } from '@redwoodjs/testing' + +import Article from './Article' + +// highlight-start +const ARTICLE = { + id: 1, + title: 'First post', + body: `Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Street art next level umami squid. Hammock hexagon glossier 8-bit banjo. Neutra la croix mixtape echo park four loko semiotics kitsch forage chambray. Semiotics salvia selfies jianbing hella shaman. Letterpress helvetica vaporware cronut, shaman butcher YOLO poke fixie hoodie gentrify woke heirloom.`, + createdAt: new Date().toISOString(), +} +// highlight-end + +describe('Article', () => { + it('renders a blog post', () => { + // highlight-next-line + render(<Article article={ARTICLE} />) + + // highlight-start + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect(screen.getByText(ARTICLE.body)).toBeInTheDocument() + // highlight-end + }) + + // highlight-start + it('renders a summary of a blog post', () => { + render(<Article article={ARTICLE} summary={true} />) + + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect( + screen.getByText( + 'Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Str...' + ) + ).toBeInTheDocument() + }) + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/Article/Article.test.tsx" +import { render, screen } from '@redwoodjs/testing' + +import Article from './Article' + +// highlight-start +const ARTICLE = { + id: 1, + title: 'First post', + body: `Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Street art next level umami squid. Hammock hexagon glossier 8-bit banjo. Neutra la croix mixtape echo park four loko semiotics kitsch forage chambray. Semiotics salvia selfies jianbing hella shaman. Letterpress helvetica vaporware cronut, shaman butcher YOLO poke fixie hoodie gentrify woke heirloom.`, + createdAt: new Date().toISOString(), +} +// highlight-end + +describe('Article', () => { + it('renders a blog post', () => { + // highlight-next-line + render(<Article article={ARTICLE} />) + + // highlight-start + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect(screen.getByText(ARTICLE.body)).toBeInTheDocument() + // highlight-end + }) + + // highlight-start + it('renders a summary of a blog post', () => { + render(<Article article={ARTICLE} summary={true} />) + + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect( + screen.getByText( + 'Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Str...' + ) + ).toBeInTheDocument() + }) + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +Saving that change should run the tests and we'll see that our suite is still happy! + +### One Last Thing + +Remember we set the `summary` prop to default to `false` if it doesn't exist, which is tested by the first test case (passing no `summary` prop at all). However, we don't have a test that checks what happens if `false` is set explicitly. Feel free to add that now if you want [100% Code Coverage](https://www.functionize.com/blog/the-myth-of-100-code-coverage)! diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter5/storybook.md b/docs/versioned_docs/version-7.0/tutorial/chapter5/storybook.md new file mode 100644 index 000000000000..b07d92ae1210 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter5/storybook.md @@ -0,0 +1,139 @@ +# Introduction to Storybook + +Let's see what this Storybook thing is all about. Run this command to start up the Storybook server (you could stop your dev or test runners and then run this, or start another new terminal instance): + +```bash +yarn rw storybook +``` + +After some compiling you should get a message saying that Storybook has started and it's available at [http://localhost:7910](http://localhost:7910) + +![image](https://user-images.githubusercontent.com/300/153311732-21a62ee8-5bdf-45b7-b163-35a5ec0ce318.png) + +If you poke around at the file tree on the left you'll see all of the components, cells, layouts and pages we created during the tutorial. Where did they come from? You may recall that every time we generated a new page/cell/component we actually created at least *three* files: + +* `Article.{jsx,tsx}` +* `Article.stories.{jsx,tsx}` +* `Article.test.{jsx,tsx}` + +:::info + +If you generated a cell then you also got a `.mock.{js,ts}` file (more on those later). + +::: + +Those `.stories.{jsx,tsx}` files are what makes the tree on the left side of the Storybook browser possible! From their [homepage](https://storybook.js.org/), Storybook describes itself as: + +*"...an open source tool for developing UI components in isolation for React, Vue, Angular, and more. It makes building stunning UIs organized and efficient."* + +So, the idea here is that you can build out your components/cells/pages in isolation, get them looking the way you want and displaying the correct data, then plug them into your full application. + +When Storybook opened it should have opened **Components > Article > Generated** which is the generated component we created to display a single blog post. If you open `web/src/components/Article/Article.stories.{jsx,tsx}` you'll see what it takes to explain this component to Storybook, and it isn't much: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.stories.jsx" +import Article from './Article' + +export const generated = () => { + return ( + <Article + article={{ + id: 1, + title: 'First Post', + body: `Neutra tacos hot chicken prism raw denim, put + a bird on it enamel pin post-ironic vape cred + DIY. Street art next level umami squid. + Hammock hexagon glossier 8-bit banjo. Neutra + la croix mixtape echo park four loko semiotics + kitsch forage chambray. Semiotics salvia + selfies jianbing hella shaman. Letterpress + helvetica vaporware cronut, shaman butcher + YOLO poke fixie hoodie gentrify woke + heirloom.`, + createdAt: '2020-01-01T12:34:45Z' + }} + /> + ) +} + +export default { title: 'Components/Article' } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Article/Article.stories.tsx" +import Article from './Article' + +export const generated = () => { + return ( + <Article + article={{ + id: 1, + title: 'First Post', + body: `Neutra tacos hot chicken prism raw denim, put + a bird on it enamel pin post-ironic vape cred + DIY. Street art next level umami squid. + Hammock hexagon glossier 8-bit banjo. Neutra + la croix mixtape echo park four loko semiotics + kitsch forage chambray. Semiotics salvia + selfies jianbing hella shaman. Letterpress + helvetica vaporware cronut, shaman butcher + YOLO poke fixie hoodie gentrify woke + heirloom.`, + createdAt: '2020-01-01T12:34:45Z' + }} + /> + ) +} + +export default { title: 'Components/Article' } +``` + +</TabItem> +</Tabs> + +You import the component you want to use and then all of the named exports in the file will be a single "story" as displayed in Storybook. In this case the generator named it "generated" which shows as the "Generated" story in the tree view: + +``` +Components +└── Article + └── Generated +``` + +This makes it easy to create variants of your component and have them all displayed together. + +:::info Where did that sample blog post data come from? + +In your actual app you'd use this component like so: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx +<Article article={article} /> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx +<Article article={article} /> +``` + +</TabItem> +</Tabs> + +Where the `article` in that prop comes from somewhere outside of this component. Here in Storybook there is no "outside" of this component, so we just send the article object into the prop directly. + +**But where did the pre-filled article data come from?** + +We (the Redwood team) added that to the story in the `redwood-tutorial` repo to show you what a story might look like after you hook up some sample data. Several of the stories need data like this, some inline and some in those `.mock.{js,ts}` files. The rest of the tutorial will be showing you how to do this yourself with new components as you create them. + +**Where did the *actual* text in the body come from?** + +[Hipster Ipsum](https://hipsum.co/), a fun alternative to Lorem Ipsum filler text! + +::: diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter5/testing.md b/docs/versioned_docs/version-7.0/tutorial/chapter5/testing.md new file mode 100644 index 000000000000..17b08c048898 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter5/testing.md @@ -0,0 +1,56 @@ +# Introduction to Testing + +Let's run the test suite to make sure everything is working as expected (you can keep the dev server running and start this in a new terminal window): + +```bash +yarn rw test +``` + +The `test` command starts a persistent process which watches for file changes and automatically runs any tests associated with the changed file(s) (changing a component *or* its tests will trigger a test run). + +Since we just started the suite, and we haven't changed any files yet, it may not actually run any tests at all. Hit `a` to tell it run **a**ll tests and we should get something like this: + +![tests_running](https://user-images.githubusercontent.com/46945607/165376937-89ed9254-0d8e-4945-a0d9-17178764a4b0.png) + +If you cloned the example repo during the intermission and followed along with the Storybook tutorial in this chapter, the test run should finish and you will see something like this: + +![suite_finished](https://user-images.githubusercontent.com/46945607/165378519-2859dd0d-d46a-448f-a62e-0b8f91c55a87.png) + +:::info + +If you decided to keep your codebase from the first part of the tutorial, then you'll get the following error after running + +```bash +yarn rw test + +Error: Get config: Schema Parsing P1012 + +error: Error validating datasource `db`: the URL must start with the protocol `postgresql://` or `postgres://`. + --> schema.prisma:3 + | + 2 | provider = "postgresql" + 3 | url = env("DATABASE_URL") + | + +Validation Error Count: 1 + +error Command failed with exit code 1. +``` + +To clear the error and to proceed with running the test suite, head over to your `.env` file and add the following line: + +```bash +TEST_DATABASE_URL=<the same url as DATABASE_URL> +``` + +::: + +Note that the summary on the bottom indicates that there was 1 test that failed. If you feel curious, you can scroll up in your terminal and see more details on the test that failed. We'll also take a look at that failed test shortly. + +If you continued with your own repo from chapters 1-4, you may see some other failures here or none at all: we made a lot of changes to the pages, components and cells we generated, but didn't update the tests to reflect the changes we made. (Another reason to start with the [example repo](../intermission.md#using-the-example-repo-recommended)!) + +To switch back to the default mode where test are **o**nly run for changed files, press `o` now (or quit and restart `yarn rw test`). + +What we want to aim for is all green in that left column and no failed tests. In fact best practices tell us you should not even commit any code to your repo unless the test suite passes locally. Not everyone adheres to this policy quite as strictly as others...*<cough, cough>* + +We've got an excellent document on [Testing](../../testing.md) which you should definitely read if you're brand new to testing, especially the [Terminology](../../testing.md#terminology) and [Redwood and Testing](../../testing.md#redwood-and-testing) sections. For now though, proceed to the next section and we'll go over our approach to getting that last failed test passing. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter6/comment-form.md b/docs/versioned_docs/version-7.0/tutorial/chapter6/comment-form.md new file mode 100644 index 000000000000..ddcef47b56ea --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter6/comment-form.md @@ -0,0 +1,1715 @@ +# Creating a Comment Form + +Let's generate a component to house our new comment form, build it out and integrate it via Storybook, then add some tests: + +```bash +yarn rw g component CommentForm +``` + +And startup Storybook again if it isn't still running: + +```bash +yarn rw storybook +``` + +You'll see that there's a **CommentForm** entry in Storybook now, ready for us to get started. + +![image](https://user-images.githubusercontent.com/300/153927943-648c62d2-b0c3-40f2-9bad-3aa81170d7c2.png) + +### Storybook + +Let's build a simple form to take the user's name and their comment and add some styling to match it to the blog: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.jsx" +import { + Form, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const CommentForm = () => { + return ( + <div> + <h3 className="font-light text-lg text-gray-600">Leave a Comment</h3> + <Form className="mt-4 w-full"> + <Label name="name" className="block text-sm text-gray-600 uppercase"> + Name + </Label> + <TextField + name="name" + className="block w-full p-1 border rounded text-xs " + validation={{ required: true }} + /> + + <Label + name="body" + className="block mt-4 text-sm text-gray-600 uppercase" + > + Comment + </Label> + <TextAreaField + name="body" + className="block w-full p-1 border rounded h-24 text-xs" + validation={{ required: true }} + /> + + <Submit + className="block mt-4 bg-blue-500 text-white text-xs font-semibold uppercase tracking-wide rounded px-3 py-2 disabled:opacity-50" + > + Submit + </Submit> + </Form> + </div> + ) +} + +export default CommentForm +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentForm/CommentForm.tsx" +import { + Form, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' + +const CommentForm = () => { + return ( + <div> + <h3 className="font-light text-lg text-gray-600">Leave a Comment</h3> + <Form className="mt-4 w-full"> + <Label name="name" className="block text-sm text-gray-600 uppercase"> + Name + </Label> + <TextField + name="name" + className="block w-full p-1 border rounded text-xs" + validation={{ required: true }} + /> + + <Label + name="body" + className="block mt-4 text-sm text-gray-600 uppercase" + > + Comment + </Label> + <TextAreaField + name="body" + className="block w-full p-1 border rounded h-24 text-xs" + validation={{ required: true }} + /> + + <Submit + className="block mt-4 bg-blue-500 text-white text-xs font-semibold uppercase tracking-wide rounded px-3 py-2 disabled:opacity-50" + > + Submit + </Submit> + </Form> + </div> + ) +} + +export default CommentForm +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/153928306-5e0979c6-2049-4039-87a2-284a4010283a.png) + +Note that the form and its inputs are set to 100% width. Again, the form shouldn't be dictating anything about its layout that its parent should be responsible for, like how wide the inputs are. Those should be determined by whatever contains it so that it looks good with the rest of the content on the page. So the form will be 100% wide and the parent (whoever that ends up being) will decide how wide it really is on the page. + +You can even try submitting the form right in Storybook! If you leave "name" or "comment" blank then they should get focus when you try to submit, indicating that they are required. If you fill them both in and click **Submit** nothing happens because we haven't hooked up the submit yet. Let's do that now. + +### Submitting + +Submitting the form should use the `createComment` function we added to our services and GraphQL. We'll need to add a mutation to the form component and an `onSubmit` handler to the form so that the create can be called with the data in the form. And since `createComment` could return an error we'll add the **FormError** component to display it: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.jsx" +import { + Form, + // highlight-next-line + FormError, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' +// highlight-next-line +import { useMutation } from '@redwoodjs/web' + +// highlight-start +const CREATE = gql` + mutation CreateCommentMutation($input: CreateCommentInput!) { + createComment(input: $input) { + id + name + body + createdAt + } + } +` +// highlight-end + +const CommentForm = () => { + // highlight-next-line + const [createComment, { loading, error }] = useMutation(CREATE) + + // highlight-start + const onSubmit = (input) => { + createComment({ variables: { input } }) + } + // highlight-end + + return ( + <div> + <h3 className="font-light text-lg text-gray-600">Leave a Comment</h3> + // highlight-start + <Form className="mt-4 w-full" onSubmit={onSubmit}> + <FormError + error={error} + titleClassName="font-semibold" + wrapperClassName="bg-red-100 text-red-900 text-sm p-3 rounded" + /> + // highlight-end + <Label + name="name" + className="block text-xs font-semibold text-gray-500 uppercase" + > + Name + </Label> + <TextField + name="name" + className="block w-full p-1 border rounded text-sm " + validation={{ required: true }} + /> + + <Label + name="body" + className="block mt-4 text-xs font-semibold text-gray-500 uppercase" + > + Comment + </Label> + <TextAreaField + name="body" + className="block w-full p-1 border rounded h-24 text-sm" + validation={{ required: true }} + /> + + <Submit + // highlight-next-line + disabled={loading} + className="block mt-4 bg-blue-500 text-white text-xs font-semibold uppercase tracking-wide rounded px-3 py-2 disabled:opacity-50" + > + Submit + </Submit> + </Form> + </div> + ) +} + +export default CommentForm +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.tsx" +import { + Form, + // highlight-next-line + FormError, + Label, + TextField, + TextAreaField, + Submit, + // highlight-next-line + SubmitHandler, +} from '@redwoodjs/forms' +// highlight-next-line +import { useMutation } from '@redwoodjs/web' + +// highlight-start +const CREATE = gql` + mutation CreateCommentMutation($input: CreateCommentInput!) { + createComment(input: $input) { + id + name + body + createdAt + } + } +` +// highlight-end + +// highlight-start +interface FormValues { + name: string + comment: string +} +// highlight-end + +const CommentForm = () => { + // highlight-next-line + const [createComment, { loading, error }] = useMutation(CREATE) + + // highlight-start + const onSubmit: SubmitHandler<FormValues> = (input) => { + createComment({ variables: { input } }) + } + // highlight-end + + return ( + <div> + <h3 className="font-light text-lg text-gray-600">Leave a Comment</h3> + // highlight-start + <Form className="mt-4 w-full" onSubmit={onSubmit}> + <FormError + error={error} + titleClassName="font-semibold" + wrapperClassName="bg-red-100 text-red-900 text-sm p-3 rounded" + /> + // highlight-end + <Label + name="name" + className="block text-xs font-semibold text-gray-500 uppercase" + > + Name + </Label> + <TextField + name="name" + className="block w-full p-1 border rounded text-sm " + validation={{ required: true }} + /> + + <Label + name="body" + className="block mt-4 text-xs font-semibold text-gray-500 uppercase" + > + Comment + </Label> + <TextAreaField + name="body" + className="block w-full p-1 border rounded h-24 text-sm" + validation={{ required: true }} + /> + + <Submit + // highlight-next-line + disabled={loading} + className="block mt-4 bg-blue-500 text-white text-xs font-semibold uppercase tracking-wide rounded px-3 py-2 disabled:opacity-50" + > + Submit + </Submit> + </Form> + </div> + ) +} + +export default CommentForm +``` + +</TabItem> +</Tabs> + +If you try to submit the form you'll get an error in the web console—Storybook will automatically mock GraphQL queries, but not mutations. But, we can mock the request in the story and handle the response manually: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.stories.jsx" +import CommentForm from './CommentForm' + +export const generated = () => { + // highlight-start + mockGraphQLMutation('CreateCommentMutation', (variables, { ctx }) => { + const id = Math.floor(Math.random() * 1000) + ctx.delay(1000) + + return { + createComment: { + id, + name: variables.input.name, + body: variables.input.body, + createdAt: new Date().toISOString(), + }, + } + }) + // highlight-end + + return <CommentForm /> +} + +export default { title: 'Components/CommentForm' } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentForm/CommentForm.stories.tsx" +import CommentForm from './CommentForm' + +// highlight-start +import type { + CreateCommentMutation, + CreateCommentMutationVariables, +} from 'types/graphql' +// highlight-end + +export const generated = () => { + // highlight-start + mockGraphQLMutation<CreateCommentMutation, CreateCommentMutationVariables>( + 'CreateCommentMutation', + (variables, { ctx }) => { + const id = Math.floor(Math.random() * 1000) + ctx.delay(1000) + + return { + createComment: { + id, + name: variables.input.name, + body: variables.input.body, + createdAt: new Date().toISOString(), + }, + } + } + ) + // highlight-end + + return <CommentForm /> +} + +export default { title: 'Components/CommentForm' } +``` + +</TabItem> +</Tabs> + +:::info + +If you still get an error, try reloading the Storybook tab in the browser. + +::: + +To use `mockGraphQLMutation` you call it with the name of the mutation you want to intercept and then the function that will handle the interception and return a response. The arguments passed to that function give us some flexibility in how we handle the response. + +In our case we want the `variables` that were passed to the mutation (the `name` and `body`) as well as the context object (abbreviated as `ctx`) so that we can add a delay to simulate a round trip to the server. This will let us test that the **Submit** button is disabled for that one second and you can't submit a second comment while the first one is still being saved. + +Try out the form now and the error should be gone. Also the **Submit** button should become visually disabled and clicking it during that one second delay does nothing. + +### Adding the Form to the Blog Post + +Right above the display of existing comments on a blog post is probably where our form should go. So should we add it to the `Article` component along with the `CommentsCell` component? If wherever we display a list of comments we'll also include the form to add a new one, that feels like it may as well just go into the `CommentsCell` component itself. However, this presents a problem: + +If we put the `CommentForm` in the `Success` component of `CommentsCell` then what happens when there are no comments yet? The `Empty` component renders, which doesn't include the form! So it becomes impossible to add the first comment. + +We could copy the `CommentForm` to the `Empty` component as well, but as soon as you find yourself duplicating code like this it can be a hint that you need to rethink something about your design. + +Maybe `CommentsCell` should really only be responsible for retrieving and displaying comments. Having it also accept user input seems outside of its primary concern. + +So let's use `Article` as the cleaning house for where all these disparate parts are combined—the actual blog post, the form to add a new comment, and the list of comments (and a little margin between them): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +import { Link, routes } from '@redwoodjs/router' + +// highlight-next-line +import CommentForm from 'src/components/CommentForm' +import CommentsCell from 'src/components/CommentsCell' + +const truncate = (text, length) => { + return text.substring(0, length) + '...' +} + +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + {!summary && ( + // highlight-start + <div className="mt-12"> + <CommentForm /> + // highlight-end + <div className="mt-12"> + <CommentsCell /> + </div> + // highlight-next-line + </div> + )} + </article> + ) +} + +export default Article +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Article/Article.tsx" +import { Link, routes } from '@redwoodjs/router' + +// highlight-next-line +import CommentForm from 'src/components/CommentForm' +import CommentsCell from 'src/components/CommentsCell' + +import type { Post } from 'types/graphql' + +const truncate = (text: string, length: number) => { + return text.substring(0, length) + '...' +} + +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + {!summary && ( + // highlight-start + <div className="mt-12"> + <CommentForm /> + // highlight-end + <div className="mt-12"> + <CommentsCell /> + </div> + // highlight-next-line + </div> + )} + </article> + ) +} + +export default Article +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/153929564-59bcafd6-f3a3-437e-86d9-b92753b7fe9b.png) + +Looks great in Storybook, how about on the real site? + +![image](https://user-images.githubusercontent.com/300/153929680-a33e5332-2e02-423e-9ca5-4757ad8dbbb5.png) + +Now comes the ultimate test: creating a comment! LET'S DO IT: + +![image](https://user-images.githubusercontent.com/300/153929833-f2a3e38d-c70e-4f64-ade1-4327a7f47193.png) + +What happened here? Notice towards the end of the error message: `Field "postId" of required type "Int!" was not provided`. When we created our data schema we said that a post belongs to a comment via the `postId` field. And that field is required, so the GraphQL server is rejecting the request because we're not including that field. We're only sending `name` and `body`. Luckily we have access to the ID of the post we're commenting on thanks to the `article` object that's being passed into `Article` itself! + +:::info Why didn't the Storybook story we wrote earlier expose this problem? + +We manually mocked the GraphQL response in the story, and our mock always returns a correct response, regardless of the input! + +There's always a tradeoff when creating mock data—it greatly simplifies testing by not having to rely on the entire GraphQL stack, but that means if you want it to be as accurate as the real thing you basically need to *re-write the real thing in your mock*. In this case, leaving out the `postId` was a one-time fix so it's probably not worth going through the work of creating a story/mock/test that simulates what would happen if we left it off. + +But, if `CommentForm` ended up being a component that was re-used throughout your application, or the code itself will go through a lot of churn because other developers will constantly be making changes to it, it might be worth investing the time to make sure the interface (the props passed to it and the expected return) are exactly what you want them to be. + +::: + +First let's pass the post's ID as a prop to `CommentForm`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +import { Link, routes } from '@redwoodjs/router' +import CommentsCell from 'src/components/CommentsCell' +import CommentForm from 'src/components/CommentForm' + +const truncate = (text, length) => { + return text.substring(0, length) + '...' +} + +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + {!summary && ( + <div className="mt-12"> + // highlight-next-line + <CommentForm postId={article.id} /> + <div className="mt-12"> + <CommentsCell /> + </div> + </div> + )} + </article> + ) +} + +export default Article +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/Article/Article.tsx" +import { Link, routes } from '@redwoodjs/router' +import CommentsCell from 'src/components/CommentsCell' +import CommentForm from 'src/components/CommentForm' + +const truncate = (text: string, length: number) => { + return text.substring(0, length) + '...' +} + +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + {!summary && ( + <div className="mt-12"> + // highlight-next-line + <CommentForm postId={article.id} /> + <div className="mt-12"> + <CommentsCell /> + </div> + </div> + )} + </article> + ) +} + +export default Article +``` + +</TabItem> +</Tabs> + +And then we'll append that ID to the `input` object that's being passed to `createComment` in the `CommentForm`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.jsx" +// highlight-next-line +const CommentForm = ({ postId }) => { + const [createComment, { loading, error }] = useMutation(CREATE) + + const onSubmit = (input) => { + // highlight-next-line + createComment({ variables: { input: { postId, ...input } } }) + } + + return ( + //... + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.tsx" +// highlight-start +interface Props { + postId: number +} +// highlight-end + +// highlight-next-line +const CommentForm = ({ postId }: Props) => { + const [createComment, { loading, error }] = useMutation(CREATE) + + const onSubmit: SubmitHandler<FormValues> = (input) => { + // highlight-next-line + createComment({ variables: { input: { postId, ...input } } }) + } + + return ( + //... + ) +} +``` + +</TabItem> +</Tabs> + +Now fill out the comment form and submit! And...nothing happened! Believe it or not that's actually an improvement in the situation—no more error! What if we reload the page? + +![image](https://user-images.githubusercontent.com/300/153930645-c5233fb5-ad7f-4a03-8707-3cd6164bb277.png) + +Yay! It would have been nicer if that comment appeared as soon as we submitted the comment, so maybe that's a half-yay? Also, the text boxes stayed filled with our name/messages (before we reloaded the page) which isn't ideal. But, we can fix both of those. One involves telling the GraphQL client (Apollo) that we created a new record and, if it would be so kind, to try the query again that gets the comments for this page, and we'll fix the other by just removing the form from the page completely when a new comment is submitted. + +### GraphQL Query Caching + +Much has been written about the [complexities](https://medium.com/swlh/how-i-met-apollo-cache-ee804e6485e9) of [Apollo](https://medium.com/@galen.corey/understanding-apollo-fetch-policies-705b5ad71980) [caching](https://levelup.gitconnected.com/basics-of-caching-data-in-graphql-7ce9489dac15), but for the sake of brevity (and sanity) we're going to do the easiest thing that works, and that's tell Apollo to just re-run the query that shows comments in the cell, known as "refetching." + +Along with the variables you pass to a mutation function (`createComment` in our case) there's an option named `refetchQueries` where you pass an array of queries that should be re-run because, presumably, the data you just mutated is reflected in the result of those queries. In our case there's a single query, the `QUERY` export of `CommentsCell`. We'll import that at the top of `CommentForm` (and rename so it's clear what it is to the rest of our code) and then pass it along to the `refetchQueries` option: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.jsx" +import { + Form, + FormError, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' +import { useMutation } from '@redwoodjs/web' + +// highlight-next-line +import { QUERY as CommentsQuery } from 'src/components/CommentsCell' + +// ... + +const CommentForm = ({ postId }) => { + // highlight-start + const [createComment, { loading, error }] = useMutation(CREATE, { + refetchQueries: [{ query: CommentsQuery }], + }) + // highlight-end + + //... +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.tsx" +import { + Form, + FormError, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' +import { useMutation } from '@redwoodjs/web' + +// highlight-next-line +import { QUERY as CommentsQuery } from 'src/components/CommentsCell' + +// ... + +const CommentForm = ({ postId }: Props) => { + // highlight-start + const [createComment, { loading, error }] = useMutation(CREATE, { + refetchQueries: [{ query: CommentsQuery }], + }) + // highlight-end + + //... +} +``` + +</TabItem> +</Tabs> + +Now when we create a comment it appears right away! It might be hard to tell because it's at the bottom of the comments list (which is a fine position if you want to read comments in chronological order, oldest to newest). Let's pop up a little notification that the comment was successful to let the user know their contribution was successful in case they don't realize it was added to the end of the page. + +We'll make use of good old fashioned React state to keep track of whether a comment has been posted in the form yet or not. If so, let's remove the comment form completely and show a "Thanks for your comment" message. Redwood includes [react-hot-toast](https://react-hot-toast.com/) for showing popup notifications, so let's use that to thank the user for their comment. We'll remove the form with just a couple of CSS classes: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.jsx" +// highlight-next-line +import { useState } from 'react' + +import { + Form, + FormError, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' +import { useMutation } from '@redwoodjs/web' +// highlight-next-line +import { toast } from '@redwoodjs/web/toast' + +import { QUERY as CommentsQuery } from 'src/components/CommentsCell' + +const CREATE = gql` + mutation CreateCommentMutation($input: CreateCommentInput!) { + createComment(input: $input) { + id + name + body + createdAt + } + } +` + +const CommentForm = ({ postId }) => { + // highlight-next-line + const [hasPosted, setHasPosted] = useState(false) + const [createComment, { loading, error }] = useMutation(CREATE, { + // highlight-start + onCompleted: () => { + setHasPosted(true) + toast.success('Thank you for your comment!') + }, + // highlight-end + refetchQueries: [{ query: CommentsQuery }], + }) + + const onSubmit = (input) => { + createComment({ variables: { input: { postId, ...input } } }) + } + + return ( + // highlight-next-line + <div className={hasPosted ? 'hidden' : ''}> + <h3 className="font-light text-lg text-gray-600">Leave a Comment</h3> + <Form className="mt-4 w-full" onSubmit={onSubmit}> + <FormError + error={error} + titleClassName="font-semibold" + wrapperClassName="bg-red-100 text-red-900 text-sm p-3 rounded" + /> + <Label + name="name" + className="block text-xs font-semibold text-gray-500 uppercase" + > + Name + </Label> + <TextField + name="name" + className="block w-full p-1 border rounded text-sm " + validation={{ required: true }} + /> + + <Label + name="body" + className="block mt-4 text-xs font-semibold text-gray-500 uppercase" + > + Comment + </Label> + <TextAreaField + name="body" + className="block w-full p-1 border rounded h-24 text-sm" + validation={{ required: true }} + /> + + <Submit + disabled={loading} + className="block mt-4 bg-blue-500 text-white text-xs font-semibold uppercase tracking-wide rounded px-3 py-2 disabled:opacity-50" + > + Submit + </Submit> + </Form> + </div> + ) +} + +export default CommentForm +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.tsx" +// highlight-next-line +import { useState } from 'react' + +import { + Form, + FormError, + Label, + TextField, + TextAreaField, + Submit, +} from '@redwoodjs/forms' +import { useMutation } from '@redwoodjs/web' +// highlight-next-line +import { toast } from '@redwoodjs/web/toast' + +import { QUERY as CommentsQuery } from 'src/components/CommentsCell' + +const CREATE = gql` + mutation CreateCommentMutation($input: CreateCommentInput!) { + createComment(input: $input) { + id + name + body + createdAt + } + } +` + +interface FormValues { + name: string + email: string + message: string +} + +interface Props { + postId: number +} + +const CommentForm = ({ postId }: Props) => { + // highlight-next-line + const [hasPosted, setHasPosted] = useState(false) + const [createComment, { loading, error }] = useMutation(CREATE, { + // highlight-start + onCompleted: () => { + setHasPosted(true) + toast.success('Thank you for your comment!') + }, + // highlight-end + refetchQueries: [{ query: CommentsQuery }], + }) + + const onSubmit: SubmitHandler<FormValues> = (input) => { + createComment({ variables: { input: { postId, ...input } } }) + } + + return ( + // highlight-next-line + <div className={hasPosted ? 'hidden' : ''}> + <h3 className="font-light text-lg text-gray-600">Leave a Comment</h3> + <Form className="mt-4 w-full" onSubmit={onSubmit}> + <FormError + error={error} + titleClassName="font-semibold" + wrapperClassName="bg-red-100 text-red-900 text-sm p-3 rounded" + /> + <Label + name="name" + className="block text-xs font-semibold text-gray-500 uppercase" + > + Name + </Label> + <TextField + name="name" + className="block w-full p-1 border rounded text-sm " + validation={{ required: true }} + /> + + <Label + name="body" + className="block mt-4 text-xs font-semibold text-gray-500 uppercase" + > + Comment + </Label> + <TextAreaField + name="body" + className="block w-full p-1 border rounded h-24 text-sm" + validation={{ required: true }} + /> + + <Submit + disabled={loading} + className="block mt-4 bg-blue-500 text-white text-xs font-semibold uppercase tracking-wide rounded px-3 py-2 disabled:opacity-50" + > + Submit + </Submit> + </Form> + </div> + ) +} + +export default CommentForm +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/153932278-6e504b6b-9e8e-400e-98fb-8bfeefbe3812.png) + +We used `hidden` to just hide the form and "Leave a comment" title completely from the page, but keeps the component itself mounted. But where's our "Thank you for your comment" notification? We still need to add the `Toaster` component (from react-hot-toast) somewhere in our app so that the message can actually be displayed. We could just add it here, in `CommentForm`, but what if we want other code to be able to post notifications, even when `CommentForm` isn't mounted? Where's the one place we put UI elements that should be visible everywhere? The `BlogLayout`! + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.jsx" +import { Link, routes } from '@redwoodjs/router' +// highlight-next-line +import { Toaster } from '@redwoodjs/web/toast' + +import { useAuth } from 'src/auth' + +const BlogLayout = ({ children }) => { + const { logOut, isAuthenticated, currentUser } = useAuth() + + return ( + <> + // highlight-next-line + <Toaster /> + <header className="relative flex justify-between items-center py-4 px-8 bg-blue-700 text-white"> + <h1 className="text-5xl font-semibold tracking-tight"> + <Link + className="text-blue-400 hover:text-blue-100 transition duration-100" + to={routes.home()} + > + Redwood Blog + </Link> + </h1> + <nav> + <ul className="relative flex items-center font-light"> + <li> + <Link + className="py-2 px-4 hover:bg-blue-600 transition duration-100 rounded" + to={routes.about()} + > + About + </Link> + </li> + <li> + <Link + className="py-2 px-4 hover:bg-blue-600 transition duration-100 rounded" + to={routes.contact()} + > + Contact + </Link> + </li> + <li> + {isAuthenticated ? ( + <div> + <button type="button" onClick={logOut} className="py-2 px-4"> + Logout + </button> + </div> + ) : ( + <Link to={routes.login()} className="py-2 px-4"> + Login + </Link> + )} + </li> + </ul> + {isAuthenticated && ( + <div className="absolute bottom-1 right-0 mr-12 text-xs text-blue-300"> + {currentUser.email} + </div> + )} + </nav> + </header> + <main className="max-w-4xl mx-auto p-12 bg-white shadow rounded-b"> + {children} + </main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/layouts/BlogLayout/BlogLayout.tsx" +import { Link, routes } from '@redwoodjs/router' +// highlight-next-line +import { Toaster } from '@redwoodjs/web/toast' + +import { useAuth } from 'src/auth' + +type BlogLayoutProps = { + children?: React.ReactNode +} + +const BlogLayout = ({ children }: BlogLayoutProps) => { + const { logOut, isAuthenticated, currentUser } = useAuth() + + return ( + <> + // highlight-next-line + <Toaster /> + <header className="relative flex justify-between items-center py-4 px-8 bg-blue-700 text-white"> + <h1 className="text-5xl font-semibold tracking-tight"> + <Link + className="text-blue-400 hover:text-blue-100 transition duration-100" + to={routes.home()} + > + Redwood Blog + </Link> + </h1> + <nav> + <ul className="relative flex items-center font-light"> + <li> + <Link + className="py-2 px-4 hover:bg-blue-600 transition duration-100 rounded" + to={routes.about()} + > + About + </Link> + </li> + <li> + <Link + className="py-2 px-4 hover:bg-blue-600 transition duration-100 rounded" + to={routes.contact()} + > + Contact + </Link> + </li> + <li> + {isAuthenticated ? ( + <div> + <button type="button" onClick={logOut} className="py-2 px-4"> + Logout + </button> + </div> + ) : ( + <Link to={routes.login()} className="py-2 px-4"> + Login + </Link> + )} + </li> + </ul> + {isAuthenticated && ( + <div className="absolute bottom-1 right-0 mr-12 text-xs text-blue-300"> + {currentUser.email} + </div> + )} + </nav> + </header> + <main className="max-w-4xl mx-auto p-12 bg-white shadow rounded-b"> + {children} + </main> + </> + ) +} + +export default BlogLayout +``` + +</TabItem> +</Tabs> + +Now add a comment: + +![image](https://user-images.githubusercontent.com/300/153933162-079ac322-acde-4ea0-b43e-58b53fb85d98.png) + +### Almost Done? + +So it looks like we're just about done here! Try going back to the homepage and go to another blog post. Let's bask in the glory of our amazing coding abilities and—OH NO: + +![image](https://user-images.githubusercontent.com/300/153933665-83158870-8422-4da9-9809-7d3b51444a14.png) + +All posts have the same comments! **WHAT HAVE WE DONE??** + +Remember our foreshadowing callout a few pages back, wondering if our `comments()` service which only returns *all* comments could come back to bite us? It finally has: when we get the comments for a post we're not actually getting them for only that post. We're ignoring the `postId` completely and just returning *all* comments in the database! Turns out the old axiom is true: computers only do exactly what you tell them to do. + +Let's fix it! + +### Returning Only Some Comments + +We'll need to make both frontend and backend changes to get only some comments to show. Let's start with the backend and do a little test-driven development to make this change. + +#### Introducing the Redwood Console + +It would be nice if we could try out sending some arguments to our Prisma calls and be sure that we can request a single post's comments without having to write the whole stack into the app (component/cell, GraphQL, service) just to see if it works. + +That's where the Redwood Console comes in! In a new terminal instance, try this: + +```bash +yarn rw console +``` + +You'll see a standard Node console but with most of Redwood's internals already imported and ready to go! Most importantly, that includes the database. Try it out: + +```bash +> db.comment.findMany() +[ + { + id: 1, + name: 'Rob', + body: 'The first real comment!', + postId: 1, + createdAt: 2020-12-08T23:45:10.641Z + }, + { + id: 2, + name: 'Tom', + body: 'Here is another comment', + postId: 1, + createdAt: 2020-12-08T23:46:10.641Z + } +] +``` + +(Output will be slightly different, of course, depending on what comments you already have in your database.) + +Let's try the syntax that will allow us to only get comments for a given `postId`: + +```bash +> db.comment.findMany({ where: { postId: 1 }}) +[ + { + id: 1, + name: 'Rob', + body: 'The first real comment!', + postId: 1, + createdAt: 2020-12-08T23:45:10.641Z + }, + { + id: 2, + name: 'Tom', + body: 'Here is another comment', + postId: 1, + createdAt: 2020-12-08T23:46:10.641Z + } +] +``` + +Well it worked, but the list is exactly the same. That's because we've only added comments for a single post! Let's create a comment for a second post and make sure that only those comments for a specific `postId` are returned. + +We'll need the `id` of another post. Make sure you have at least two (create one through the admin if you need to). We can get a list of all the existing posts and copy the `id`: + +```bash +> db.post.findMany({ select: { id: true } }) +[ { id: 1 }, { id: 2 }, { id: 3 } ] +``` + +Okay, now let's create a comment for that second post via the console: + +```bash +> db.comment.create({ data: { name: 'Peter', body: 'I also like leaving comments', postId: 2 } }) +{ + id: 3, + name: 'Peter', + body: 'I also like leaving comments', + postId: 2, + createdAt: 2020-12-08T23:47:10.641Z +} +``` + +Now we'll try our comment query again, once with each `postId`: + +```bash +> db.comment.findMany({ where: { postId: 1 }}) +[ + { + id: 1, + name: 'Rob', + body: 'The first real comment!', + postId: 1, + createdAt: 2020-12-08T23:45:10.641Z + }, + { + id: 2, + name: 'Tom', + body: 'Here is another comment', + postId: 1, + createdAt: 2020-12-08T23:46:10.641Z + } +] + +> db.comment.findMany({ where: { postId: 2 }}) +[ + { + id: 3, + name: 'Peter', + body: 'I also like leaving comments', + postId: 2, + createdAt: 2020-12-08T23:45:10.641Z + }, + +``` + +Great! Now that we've tested out the syntax let's use that in the service. You can exit the console by pressing Ctrl-C twice or typing `.exit` + +:::info Where's the `await`? + +Calls to `db` return a Promise, which you would normally need to add an `await` to in order to get the results right away. Having to add `await` every time is pretty annoying though, so the Redwood console does it for you—Redwood `await`s so you don't have to! + +::: + +#### Updating the Service + +Try running the test suite (or if it's already running take a peek at that terminal window) and make sure all of our tests still pass. The "lowest level" of the api-side is the services, so let's start there. + +:::tip + +One way to think about your codebase is a "top to bottom" view where the top is what's "closest" to the user and what they interact with (React components) and the bottom is the "farthest" thing from them, in the case of a web application that would usually be a database or other data store (behind a third party API, perhaps). One level above the database are the services, which directly communicate to the database: + +``` + Browser + | + React ─┐ + | │ + Graph QL ├─ Redwood + | │ + Services ─┘ + | + Database +``` + +There are no hard and fast rules here, but generally the farther down you put your business logic (the code that deals with moving and manipulating data) the easier it will be to build and maintain your application. Redwood encourages you to put your business logic in services since they're "closest" to the data and behind the GraphQL interface. + +::: + +Open up the **comments** service test and let's update it to pass the `postId` argument to the `comments()` function like we tested out in the console: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.test.js" +scenario('returns all comments', async (scenario) => { + // highlight-next-line + const result = await comments({ postId: scenario.comment.jane.postId }) + expect(result.length).toEqual(Object.keys(scenario.comment).length) +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.test.ts" +scenario('returns all comments', async (scenario: StandardScenario) => { + // highlight-next-line + const result = await comments({ postId: scenario.comment.jane.postId }) + expect(result.length).toEqual(Object.keys(scenario.comment).length) +}) +``` + +</TabItem> +</Tabs> + +When the test suite runs everything will still pass. JavaScript won't care if you're passing an argument all of a sudden (although if you were using Typescript you will actually get an error at this point!). In TDD you generally want to get your test to fail before adding code to the thing you're testing which will then cause the test to pass. What's something in this test that will be different once we're only returning *some* comments? How about the number of comments expected to be returned? + +Let's take a look at the scenario we're using (remember, it's `standard()` by default): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.scenarios.js" +export const standard = defineScenario({ + comment: { + jane: { + data: { + name: 'Jane Doe', + body: 'I like trees', + post: { + create: { + title: 'Redwood Leaves', + body: 'The quick brown fox jumped over the lazy dog.', + }, + }, + }, + }, + john: { + data: { + name: 'John Doe', + body: 'Hug a tree today', + post: { + create: { + title: 'Root Systems', + body: 'The five boxing wizards jump quickly.', + }, + }, + }, + }, + }, +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="api/src/services/comments/comments.scenarios.ts" +export const standard = defineScenario({ + comment: { + jane: { + data: { + name: 'Jane Doe', + body: 'I like trees', + post: { + create: { + title: 'Redwood Leaves', + body: 'The quick brown fox jumped over the lazy dog.', + }, + }, + }, + }, + john: { + data: { + name: 'John Doe', + body: 'Hug a tree today', + post: { + create: { + title: 'Root Systems', + body: 'The five boxing wizards jump quickly.', + }, + }, + }, + }, + }, +}) +``` + +</TabItem> +</Tabs> + +Each scenario here is associated with its own post, so rather than counting all the comments in the database (like the test does now) let's only count the number of comments attached to the single post we're getting comments for (we're passing the postId into the `comments()` call now). Let's see what it looks like in test form: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="api/src/services/comments/comments.test.jsx" +import { comments, createComment } from './comments' +// highlight-next-line +import { db } from 'src/lib/db' + +describe('comments', () => { + scenario('returns all comments', async (scenario) => { + const result = await comments({ postId: scenario.comment.jane.postId }) + // highlight-start + const post = await db.post.findUnique({ + where: { id: scenario.comment.jane.postId }, + include: { comments: true }, + }) + expect(result.length).toEqual(post.comments.length) + // highlight-end + }) + + // ... +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="api/src/services/comments/comments.test.ts" +import { comments, createComment } from './comments' +// highlight-next-line +import { db } from 'src/lib/db' + +import type { StandardScenario } from './comments.scenarios' + +describe('comments', () => { + scenario('returns all comments', async (scenario) => { + const result = await comments({ postId: scenario.comment.jane.postId }) + // highlight-start + const post = await db.post.findUnique({ + where: { id: scenario.comment.jane.postId }, + include: { comments: true }, + }) + expect(result.length).toEqual(post.comments.length) + // highlight-end + }) + + // ... +}) +``` + +</TabItem> +</Tabs> + +So we're first getting the result from the services, all the comments for a given `postId`. Then we pull the *actual* post from the database and include its comments. Then we expect that the number of comments returned from the service is the same as the number of comments actually attached to the post in the database. Now the test fails and you can see why in the output: + +```bash + FAIL api api/src/services/comments/comments.test.js + • comments › returns all comments + + expect(received).toEqual(expected) // deep equality + + Expected: 1 + Received: 2 +``` + +So we expected to receive 1 (from `post.comments.length`), but we actually got 2 (from `result.length`). + +Before we get it passing again, let's also change the name of the test to reflect what it's actually testing: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.test.js" +// highlight-start +scenario( + 'returns all comments for a single post from the database', + // highlight-end + async (scenario) => { + const result = await comments({ postId: scenario.comment.jane.postId }) + const post = await db.post.findUnique({ + where: { id: scenario.comment.jane.postId }, + include: { comments: true }, + }) + expect(result.length).toEqual(post.comments.length) + } +) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="api/src/services/comments/comments.test.ts" +// highlight-start +scenario( + 'returns all comments for a single post from the database', + // highlight-end + async (scenario: StandardScenario) => { + const result = await comments({ postId: scenario.comment.jane.postId }) + const post = await db.post.findUnique({ + where: { id: scenario.comment.jane.postId }, + include: { comments: true }, + }) + expect(result.length).toEqual(post.comments.length) + } +) +``` + +</TabItem> +</Tabs> + +Okay, open up the actual `comments.js` service and we'll update it to accept the `postId` argument and use it as an option to `findMany()` (be sure to update the `comments()` function [with an "s"] and not the unused `comment()` function): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.js" +export const comments = ({ postId }) => { + return db.comment.findMany({ where: { postId } }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.ts" +export const comments = ({ + postId, +}: Required<Pick<Prisma.CommentWhereInput, 'postId'>>) => { + return db.comment.findMany({ where: { postId } }) +} +``` + +</TabItem> +</Tabs> + +Save that and the test should pass again! + +#### Updating GraphQL + +Next we need to let GraphQL know that it should expect a `postId` to be passed for the `comments` query, and it's required (we don't currently have any view that allows you see all comments everywhere so we can ask that it always be present). Open up the `comments.sdl.{js,ts}` file: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/comments.sdl.js" +type Query { + // highlight-next-line + comments(postId: Int!): [Comment!]! @skipAuth +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/comments.sdl.ts" +type Query { + // highlight-next-line + comments(postId: Int!): [Comment!]! @skipAuth +} +``` + +</TabItem> +</Tabs> + +Now if you try refreshing the real site in dev mode you'll see an error where the comments should be displayed: + +![image](https://user-images.githubusercontent.com/300/198095941-bbd07ede-2006-422a-8635-ea8fe57dd403.png) + +For security reasons we don't show the internal error message here, but if you check the terminal window where `yarn rw dev` is running you'll see the real message: + +```text +Field "comments" argument "postId" of type "Int!" is required, but it was not provided. +``` + +And yep, it's complaining about `postId` not being present—exactly what we want! + +That completes the backend updates, now we just need to tell `CommentsCell` to pass through the `postId` to the GraphQL query it makes. + +#### Updating the Cell + +First we'll need to get the `postId` to the cell itself. Remember when we added a `postId` prop to the `CommentForm` component so it knew which post to attach the new comment to? Let's do the same for `CommentsCell`. + +Open up `Article`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + {!summary && ( + <div className="mt-12"> + <CommentForm postId={article.id} /> + <div className="mt-12"> + // highlight-next-line + <CommentsCell postId={article.id} /> + </div> + </div> + )} + </article> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/Article/Article.tsx" +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + {!summary && ( + <div className="mt-12"> + <CommentForm postId={article.id} /> + <div className="mt-12"> + // highlight-next-line + <CommentsCell postId={article.id} /> + </div> + </div> + )} + </article> + ) +} +``` + +</TabItem> +</Tabs> + +And finally, we need to take that `postId` and pass it on to the `QUERY` in the cell: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="web/src/components/CommentsCell/CommentsCell.jsx" +export const QUERY = gql` + // highlight-start + query CommentsQuery($postId: Int!) { + comments(postId: $postId) { + // highlight-end + id + name + body + createdAt + } + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="web/src/components/CommentsCell/CommentsCell.tsx" +export const QUERY = gql` + // highlight-start + query CommentsQuery($postId: Int!) { + comments(postId: $postId) { + // highlight-end + id + name + body + createdAt + } + } +` +``` + +</TabItem> +</Tabs> + +Where does this magical `$postId` come from? Redwood is nice enough to automatically provide it to you since you passed it in as a prop when you called the component! + +Try going to a couple of different blog posts and you should see only comments associated to the proper posts (including the one we created in the console). You can add a comment to each blog post individually and they'll stick to their proper owners: + +![image](https://user-images.githubusercontent.com/300/100954162-de24f680-34c8-11eb-817b-0a7ad802f28b.png) + +However, you may have noticed that now when you post a comment it no longer appears right away! ARGH! Okay, turns out there's one more thing we need to do. Remember when we told the comment creation logic to `refetchQueries`? We need to include any variables that were present the first time so that it can refetch the proper ones. + +#### Updating the Form Refetch + +Okay this is the last fix, promise! + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.jsx" +const [createComment, { loading, error }] = useMutation(CREATE, { + onCompleted: () => { + setHasPosted(true) + toast.success('Thank you for your comment!') + }, + // highlight-next-line + refetchQueries: [{ query: CommentsQuery, variables: { postId } }], +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```jsx title="web/src/components/CommentForm/CommentForm.tsx" +const [createComment, { loading, error }] = useMutation(CREATE, { + onCompleted: () => { + setHasPosted(true) + toast.success('Thank you for your comment!') + }, + // highlight-next-line + refetchQueries: [{ query: CommentsQuery, variables: { postId } }], +}) +``` + +</TabItem> +</Tabs> + +There we go, comment engine complete! Our blog is totally perfect and there's absolutely nothing we could do to make it better. + +Or is there? diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter6/comments-schema.md b/docs/versioned_docs/version-7.0/tutorial/chapter6/comments-schema.md new file mode 100644 index 000000000000..243488167736 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter6/comments-schema.md @@ -0,0 +1,933 @@ +# Adding Comments to the Schema + +Let's take a moment to appreciate how amazing this is—we built, designed and tested a completely new component for our app, which displays data from an API call (which would pull that data from a database) without actually having to build any of that backend functionality! Redwood let us provide fake data to Storybook and Jest so we could get our component working. + +Unfortunately, even with all of this flexibility there's still no such thing as a free lunch. Eventually we're going to have to actually do that backend work. Now's the time. + +If you went through the first part of the tutorial you should be somewhat familiar with this flow: + +1. Add a model to `schema.prisma` +2. Run a `yarn rw prisma migrate dev` commands to create a migration and apply it to the database +3. Generate an SDL and service + +### Adding the Comment model + +Let's do that now: + +```javascript title="api/db/schema.prisma" +datasource db { + provider = "sqlite" + url = env("DATABASE_URL") +} + +generator client { + provider = "prisma-client-js" + binaryTargets = "native" +} + +model Post { + id Int @id @default(autoincrement()) + title String + body String + // highlight-next-line + comments Comment[] + createdAt DateTime @default(now()) +} + +model Contact { + id Int @id @default(autoincrement()) + name String + email String + message String + createdAt DateTime @default(now()) +} + +model User { + id Int @id @default(autoincrement()) + name String? + email String @unique + hashedPassword String + salt String + resetToken String? + resetTokenExpiresAt DateTime? +} + +// highlight-start +model Comment { + id Int @id @default(autoincrement()) + name String + body String + post Post @relation(fields: [postId], references: [id]) + postId Int + createdAt DateTime @default(now()) +} +// highlight-end +``` + +Most of these lines look very similar to what we've already seen, but this is the first instance of a [relation](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-schema/relations) between two models. `Comment` gets two entries to denote this relationship: + +* `post` which has a type of `Post` and a special `@relation` keyword that tells Prisma how to connect a `Comment` to a `Post`. In this case the field `postId` references the field `id` in `Post` +* `postId` is just a regular `Int` column which contains the `id` of the `Post` that this comment is referencing + +This gives us a classic database model: + +``` +┌───────────┐ ┌───────────┐ +│ Post │ │ Comment │ +├───────────┤ ├───────────┤ +│ id │───┐ │ id │ +│ title │ │ │ name │ +│ body │ │ │ body │ +│ createdAt │ └──<│ postId │ +└───────────┘ │ createdAt │ + └───────────┘ +``` + +Note that there is no real database column named `post` in `Comment`—this is special syntax for Prisma to know how to connect the models together and for you to reference that connection. When you query for a `Comment` using Prisma you can get access to the attached `Post` using that name: + +```javascript +db.comment.findUnique({ where: { id: 1 }}).post() +``` + +Prisma also added a convenience `comments` field to `Post` which gives us the same capability in reverse: + +```javascript +db.post.findUnique({ where: { id: 1 }}).comments() +``` + +### Running the Migration + +This one is easy enough: we'll create a new migration with a name and then run it: + +```bash +yarn rw prisma migrate dev +``` + +When prompted, give this one a name something like "create comment". + +:::tip + +You'll need to restart the test suite runner at this point if it's still running. You can do a Ctrl-C or just press `q`. Redwood creates a second, test database for you to run your tests against (it is at `.redwood/test.db` by default). The database migrations are run against that test database whenever the test suite is *started*, not while it's running, so you'll need to restart it to test against the new database structure. + +::: + +### Creating the SDL and Service + +Next we'll create the SDL (that defines the GraphQL interface) and a service (to get the records out of the database) with a generator call: + +```bash +yarn rw g sdl Comment --no-crud +``` + +Note the `--no-crud` flag here. This gives us bare-bones functionality to start with (read-only access to our model) that we can build on. We got all the CRUD endpoints for free when we created the Post section of our site, so let's do the opposite here and see how to add functionality from scratch. + +That command will create both the SDL and the service. One change we'll need to make to the generated code is to allow access to anonymous users to view all comments. Change the `@requireAuth` directive to `@skipAuth` instead: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/comments.sdl.js" +export const schema = gql` + type Comment { + id: Int! + name: String! + body: String! + post: Post! + postId: Int! + createdAt: DateTime! + } + + type Query { + // highlight-next-line + comments: [Comment!]! @skipAuth + } + + input CreateCommentInput { + name: String! + body: String! + postId: Int! + } + + input UpdateCommentInput { + name: String + body: String + postId: Int + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/comments.sdl.ts" +export const schema = gql` + type Comment { + id: Int! + name: String! + body: String! + post: Post! + postId: Int! + createdAt: DateTime! + } + + type Query { + // highlight-next-line + comments: [Comment!]! @skipAuth + } + + input CreateCommentInput { + name: String! + body: String! + postId: Int! + } + + input UpdateCommentInput { + name: String + body: String + postId: Int + } +` +``` + +</TabItem> +</Tabs> + +Now if you take a look back at the real app in the browser (not Storybook) you should see a different message than the GraphQL error we were seeing before: + +![image](https://user-images.githubusercontent.com/300/101552505-d1405100-3967-11eb-883f-1227689e5f88.png) + +"Empty" means the Cell rendered correctly! There just aren't any comments in the database yet. Let's update the `CommentsCell` component to make that "Empty" message a little more friendly: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.jsx" +export const Empty = () => { + // highlight-next-line + return <div className="text-center text-gray-500">No comments yet</div> +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.tsx" +export const Empty = () => { + // highlight-next-line + return <div className="text-center text-gray-500">No comments yet</div> +} +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/153501827-87b9f931-ee68-4baf-9342-3a70b03d55e2.png) + +That's better. Let's update the test that covers the Empty component render as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.test.jsx" +it('renders Empty successfully', async () => { + // highlight-start + render(<Empty />) + expect(screen.getByText('No comments yet')).toBeInTheDocument() + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.test.tsx" +it('renders Empty successfully', async () => { + // highlight-start + render(<Empty />) + expect(screen.getByText('No comments yet')).toBeInTheDocument() + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +Okay, let's focus on the service for a bit. We'll need to add a function to let users create a new comment and we'll add a test that covers the new functionality. + +### Building out the Service + +By virtue of using the generator we've already got the function we need to select all comments from the database: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.js" +import { db } from 'src/lib/db' + +export const comments = () => { + return db.comment.findMany() +} + +export const comment = ({ id }) => { + return db.comment.findUnique({ + where: { id }, + }) +} + +export const Comment = { + post: (_obj, { root }) => + db.comment.findUnique({ where: { id: root.id } }).post(), +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.ts" +import type { Prisma } from '@prisma/client' +import type { ResolverArgs } from '@redwoodjs/graphql-server' + +import { db } from 'src/lib/db' + +export const comments = () => { + return db.comment.findMany() +} + +export const comment = ({ id }: QueryResolvers['comment'] => { + return db.comment.findUnique({ + where: { id }, + }) +} + +export const Comment: CommentRelationResolvers = { + post: (_obj, { root }) => { + return db.comment.findUnique({ where: { id: root?.id } }).post() + }, +} +``` + +</TabItem> +</Tabs> + +We've also got a function that returns only a single comment, as well as this `Comment` object at the end. That allows us to return nested post data for a comment through GraphQL using syntax like this (don't worry about adding this code to our app, this is just an example): + +```graphql +query CommentsQuery { + comments { + id + name + body + createdAt + post { + id + title + body + createdAt + } + } +} +``` + +:::info + +Have you noticed that something may be amiss? The `comments()` function returns *all* comments, and all comments only. Could this come back to bite us? + +Hmmm... + +::: + +We need to be able to create a comment as well. We'll use the same convention that's used in Redwood's generated scaffolds: the create endpoint will accept a single parameter `input` which is an object with the individual model fields: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.js" +export const createComment = ({ input }) => { + return db.comment.create({ + data: input, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="api/src/services/comments/comments.ts" +interface CreateCommentArgs { + input: Prisma.CommentCreateInput +} + +export const createComment = ({ input }: CreateCommentArgs) => { + return db.comment.create({ + data: input, + }) +} +``` + +</TabItem> +</Tabs> + +We'll also need to expose this function via GraphQL so we'll add a Mutation to the SDL and use `@skipAuth` since, again, it can be accessed by everyone: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/comments.sdl.js" +export const schema = gql` + type Comment { + id: Int! + name: String! + body: String! + post: Post! + postId: Int! + createdAt: DateTime! + } + + type Query { + comments: [Comment!]! @skipAuth + } + + input CreateCommentInput { + name: String! + body: String! + postId: Int! + } + + input UpdateCommentInput { + name: String + body: String + postId: Int + } + + // highlight-start + type Mutation { + createComment(input: CreateCommentInput!): Comment! @skipAuth + } + // highlight-end +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/comments.sdl.ts" +export const schema = gql` + type Comment { + id: Int! + name: String! + body: String! + post: Post! + postId: Int! + createdAt: DateTime! + } + + type Query { + comments: [Comment!]! @skipAuth + } + + input CreateCommentInput { + name: String! + body: String! + postId: Int! + } + + input UpdateCommentInput { + name: String + body: String + postId: Int + } + + // highlight-start + type Mutation { + createComment(input: CreateCommentInput!): Comment! @skipAuth + } + // highlight-end +` +``` + +</TabItem> +</Tabs> + +:::tip + +The `CreateCommentInput` type was already created for us by the SDL generator. + +::: + +That's all we need on the api-side to create a comment! But let's think for a moment: is there anything else we need to do with a comment? Let's make the decision that users won't be able to update an existing comment. And we don't need to select individual comments (remember earlier we talked about the possibility of each comment being responsible for its own API request and display, but we decided against it). + +What about deleting a comment? We won't let a user delete their own comment, but as owners of the blog we should be able to delete/moderate them. So we'll need a delete function and API endpoint as well. Let's add those: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.js" +export const deleteComment = ({ id }) => { + return db.comment.delete({ + where: { id }, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.ts" +export const deleteComment = ({ id }: Prisma.CommentWhereUniqueInput) => { + return db.comment.delete({ + where: { id }, + }) +} +``` + +</TabItem> +</Tabs> + +Since we only want owners of the blog to be able to delete comments, we'll use `@requireAuth`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/comments.sdl.js" +type Mutation { + createComment(input: CreateCommentInput!): Comment! @skipAuth + // highlight-next-line + deleteComment(id: Int!): Comment! @requireAuth +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/comments.sdl.ts" +type Mutation { + createComment(input: CreateCommentInput!): Comment! @skipAuth + // highlight-next-line + deleteComment(id: Int!): Comment! @requireAuth +} +``` + +</TabItem> +</Tabs> + +`deleteComment` will be given a single argument, the ID of the comment to delete, and it's required. A common pattern is to return the record that was just deleted in case you wanted to notify the user or some other system about the details of the thing that was just removed, so we'll do that here as well. But, you could just as well return `null`. + +### Testing the Service + +Let's make sure our service functionality is working and continues to work as we modify our app. + +If you open up `api/src/services/comments/comments.test.js` you'll see there's one in there already, making sure that retrieving all comments (the default `comments()` function that was generated along with the service) works: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.test.js" +import { comments } from './comments' + +describe('comments', () => { + scenario('returns all comments', async (scenario) => { + const result = await comments() + + expect(result.length).toEqual(Object.keys(scenario.comment).length) + }) +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="api/src/services/comments/comments.test.ts" +import { comments } from './comments' + +describe('comments', () => { + scenario('returns all comments', async (scenario: StandardScenario) => { + const result = await comments() + + expect(result.length).toEqual(Object.keys(scenario.comment).length) + }) +}) +``` + +</TabItem> +</Tabs> + +What is this `scenario()` function? That's made available by Redwood that mostly acts like Jest's built-in `it()` and `test()` functions, but with one important difference: it pre-seeds a test database with data that is then passed to you in the `scenario` argument. You can count on this data existing in the database and being reset between tests in case you make changes to it. You can create the data structure for any and all models defined in `schema.prisma`, not just comments (the file happens to be named that because it's the ones that will load when running `comments.test.js`). + +:::info In the section on mocks you said relying on data in the database for testing was dumb? + +Yes, all things being equal it would be great to not have these tests depend on a piece of software outside of our control. + +However, the difference here is that in a service almost all of the logic you write will depend on moving data in and out of a database and it's much simpler to just let that code run and *really* access the database, rather than trying to mock and intercept each and every possible call that Prisma could make. + +Not to mention that Prisma itself is currently under development and implementations could change at any time. Trying to keep pace with those changes and constantly keep mocks in sync would be a nightmare! + +That being said, if you really wanted to you could use Jest's [mocking utilities](https://jestjs.io/docs/en/mock-functions) and completely mock the Prisma interface to abstract the database away completely. But don't say we didn't warn you! + +::: + +Where does that data come from? Take a look at the `comments.scenarios.{js,ts}` file which is next door: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments.scenarios.js" +export const standard = defineScenario({ + comment: { + one: { + data: { + name: 'String', + body: 'String', + post: { create: { title: 'String', body: 'String' } }, + }, + }, + two: { + data: { + name: 'String', + body: 'String', + post: { create: { title: 'String', body: 'String' } }, + }, + }, + }, +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments.scenarios.ts" +import type { Prisma } from '@prisma/client' + +export const standard = defineScenario<Prisma.CommentCreateArgs>({ + comment: { + one: { + data: { + name: 'String', + body: 'String', + post: { create: { title: 'String', body: 'String' } }, + }, + }, + two: { + data: { + name: 'String', + body: 'String', + post: { create: { title: 'String', body: 'String' } }, + }, + }, + }, +}) +``` + +</TabItem> +</Tabs> + +This calls a `defineScenario()` function which checks that your data structure matches what's defined in Prisma. Each scenario data object (for example, `scenario.comment.one`) is passed as-is to Prisma's [`create`](https://www.prisma.io/docs/reference/api-reference/prisma-client-reference#create). That way you can customize the scenario object using any of Prisma's supported options. + +:::info The "standard" scenario + +The exported scenario here is named "standard." Remember when we worked on component tests and mocks, there was a special mock named `standard` which Redwood would use by default if you didn't specify a name? The same rule applies here! When we add a test for `createComment()` we'll see an example of using a different scenario with a unique name. + +::: + +The nested structure of a scenario is defined like this: + +* **comment**: the name of the model this data is for + * **one, two**: a friendly name given to the scenario data which you can reference in your tests + * **data**: contains the actual data that will be put in the database + * **name, body, post**: fields that correspond to the schema. In this case a **Comment** requires that it be related to a **Post**, so the scenario has a `post` key and values as well (using Prisma's [nested create syntax](https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#nested-writes)) + * **select, include**: optionally, to customize the object to `select` or `include` related fields [using Prisma's syntax](https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#create-a-related-record) + +When you receive the `scenario` argument in your test, the `data` key gets unwrapped so that you can reference fields like `scenario.comment.one.name`. + +:::info Why does every field just contain the string "String"? + +When generating the service (and the test and scenarios) all we (Redwood) knows about your data is the types for each field as defined in `schema.prisma`, namely `String`, `Integer` or `DateTime`. So we add the simplest data possible that fulfills the type requirement by Prisma to get the data into the database. You should definitely replace this data with something that looks more like the real data your app will be expecting. In fact... + +::: + +Let's replace that scenario data with something more like the real data our app will be expecting: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.scenarios.js" +export const standard = defineScenario({ + comment: { + // highlight-start + jane: { + data: { + name: 'Jane Doe', + body: 'I like trees', + post: { + create: { + title: 'Redwood Leaves', + body: 'The quick brown fox jumped over the lazy dog.' + } + } + } + }, + john: { + data: { + name: 'John Doe', + body: 'Hug a tree today', + post: { + create: { + title: 'Root Systems', + body: 'The five boxing wizards jump quickly.' + } + } + } + } + // highlight-end + } +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.scenarios.ts" +import type { Prisma } from '@prisma/client' + +export const standard = defineScenario<Prisma.CommentCreateArgs>({ + comment: { + // highlight-start + jane: { + data: { + name: 'Jane Doe', + body: 'I like trees', + post: { + create: { + title: 'Redwood Leaves', + body: 'The quick brown fox jumped over the lazy dog.' + } + } + } + }, + john: { + data: { + name: 'John Doe', + body: 'Hug a tree today', + post: { + create: { + title: 'Root Systems', + body: 'The five boxing wizards jump quickly.', + } + } + } + } + // highlight-end + } +}) +``` + +</TabItem> +</Tabs> + +Note that we changed the names of the records from `one` and `two` to the names of the authors, `jane` and `john`. More on that later. Why didn't we include `id` or `createdAt` fields? We told Prisma, in `schema.prisma`, to assign defaults to these fields so they'll be set automatically when the records are created. + +The test created by the service generator simply checks to make sure the same number of records are returned so changing the content of the data here won't affect the test. + +#### Testing createComment() + +Let's add our first service test by making sure that `createComment()` actually stores a new comment in the database. When creating a comment we're not as worried about existing data in the database so let's create a new scenario which only contains a post—the post we'll be linking the new comment to through the comment's `postId` field. You can create multiple scenarios and then say which one you want pre-loaded into the database at the time the test is run. We'll let the `standard` scenario stay as-is and make a new one with a new set of data: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.scenarios.js" +export const standard = defineScenario({ + // ... +}) + +// highlight-start +export const postOnly = defineScenario({ + post: { + bark: { + data: { + title: 'Bark', + body: "A tree's bark is worse than its bite", + } + } + } +}) +// highlight-end +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.scenarios.ts" +import type { Prisma } from '@prisma/client' + +export const standard = defineScenario<Prisma.CommentCreateArgs>({ + // ... +}) + +// highlight-start +export const postOnly = defineScenario<Prisma.PostCreateArgs>({ + post: { + bark: { + data: { + title: 'Bark', + body: "A tree's bark is worse than its bite", + } + } + } +}) +// highlight-end + +export type StandardScenario = typeof standard +// highlight-next-line +export type PostOnlyScenario = typeof postOnly +``` + +</TabItem> +</Tabs> + +Now we can pass the `postOnly` scenario name as the first argument to a new `scenario()` test: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.test.js" +// highlight-next-line +import { comments, createComment } from './comments' + +describe('comments', () => { + scenario('returns all comments', async (scenario) => { + const result = await comments() + + expect(result.length).toEqual(Object.keys(scenario.comment).length) + }) + + // highlight-start + scenario('postOnly', 'creates a new comment', async (scenario) => { + const comment = await createComment({ + input: { + name: 'Billy Bob', + body: 'What is your favorite tree bark?', + post: { + connect: { id: scenario.post.bark.id }, + }, + }, + }) + + expect(comment.name).toEqual('Billy Bob') + expect(comment.body).toEqual('What is your favorite tree bark?') + expect(comment.postId).toEqual(scenario.post.bark.id) + expect(comment.createdAt).not.toEqual(null) + }) + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.test.ts" +// highlight-next-line +import { comments, createComment } from './comments' + +// highlight-next-line +import type { StandardScenario, PostOnlyScenario } from './comments.scenarios' + +describe('comments', () => { + scenario('returns all comments', async (scenario: StandardScenario) => { + const result = await comments() + + expect(result.length).toEqual(Object.keys(scenario.comment).length) + }) + + // highlight-start + scenario( + 'postOnly', + 'creates a new comment', + async (scenario: PostOnlyScenario) => { + const comment = await createComment({ + input: { + name: 'Billy Bob', + body: 'What is your favorite tree bark?', + post: { + connect: { id: scenario.post.bark.id }, + }, + }, + }) + + expect(comment.name).toEqual('Billy Bob') + expect(comment.body).toEqual('What is your favorite tree bark?') + expect(comment.postId).toEqual(scenario.post.bark.id) + expect(comment.createdAt).not.toEqual(null) + } + ) + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +We pass an optional first argument to `scenario()` which is the named scenario to use, instead of the default of "standard." + +We were able to use the `id` of the post that we created in our scenario because the scenarios contain the actual database data after being inserted, not just the few fields we defined in the scenario itself. In addition to `id` we could access `createdAt` which is defaulted to `now()` in the database. + +:::info What's that `post: { connect: { id } }` nested structure? Can't we simply pass the Post's ID directly here? + +What you're looking at is the [connect syntax](https://www.prisma.io/docs/concepts/components/prisma-client/relation-queries#connect-an-existing-record), which is a Prisma +core concept. And yes, we could simply pass `postId: scenario.post.bark.id` instead – as a so-called "unchecked" input. But as the name implies, the connect syntax is king +in Prisma-land. + +<ShowForTs> +Note that if you try to use `postId` that would give you red squiggles, because that input would violate the `CreateCommentArgs` interface definition in +`api/src/services/comments/comments.ts`. In order to use the `postId` input, that'd need to be changed to + +```ts +interface CreateCommentArgs { + input: Prisma.CommentUncheckedCreateInput +} +``` + +or + +```ts +interface CreateCommentArgs { + input: Prisma.CommentCreateInput | Prisma.CommentUncheckedCreateInput +} +``` +in case we wanted to allow both ways – which Prisma generally allows, however [it doesn't allow to pick and mix](https://stackoverflow.com/a/69169106/1246547) within the same input. +</ShowForTs> + +::: + +We'll test that all the fields we give to the `createComment()` function are actually created in the database, and for good measure just make sure that `createdAt` is set to a non-null value. We could test that the actual timestamp is correct, but that involves freezing the JavaScript Date object so that no matter how long the test takes, you can still compare the value to `new Date` which is right *now*, down to the millisecond. While possible, it's beyond the scope of our easy, breezy tutorial since it gets [very gnarly](https://codewithhugo.com/mocking-the-current-date-in-jest-tests/)! + +:::info What's up with the names for scenario data? `posts.bark`? Really? + +This makes reasoning about your tests much nicer! Which of these would you rather work with: + +**"`claire` paid for an `ebook` using her `visa` credit card."** + +or: + +**"`user[3]` paid for `product[0]` using their `cards[2]` credit card?** + +If you said the second one, remember: you're not writing your code for the computer, you're writing it for other humans! It's the compiler's job to make code understandable to a computer, it's our job to make code understandable to our fellow developers. + +::: + +Okay, our comments service is feeling pretty solid now that we have our tests in place. The last step is add a form so that users can actually leave a comment on a blog post. + +:::info Mocks vs. Scenarios + +Mocks are used on the web site and scenarios are used on the api side. It might be helpful to remember that **mock** is a synonym for "fake", as in "this is fake data not really in the database" (so that we can create stories and tests in isolation without the api side getting involved). Whereas a **scenario** is real data in the database, it's just pre-set to some known state that we can rely on. + +Maybe a [mnemonic](https://www.mnemonicgenerator.com/?words=M%20W%20S%20A) would help? + +**M**ocks : **W**eb :: **S**cenarios : **A**PI: + +* Mysterious Weasels Scratched Armor +* Minesweepers Wrecked Subliminal Attorneys +* Martian Warriors Squeezed Apricots + +Maybe not... + +::: diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter6/multiple-comments.md b/docs/versioned_docs/version-7.0/tutorial/chapter6/multiple-comments.md new file mode 100644 index 000000000000..0ac48bf9578f --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter6/multiple-comments.md @@ -0,0 +1,722 @@ +# Multiple Comments + +Our amazing blog posts will obviously garner a huge and passionate fanbase and we will very rarely have only a single comment. Let's work on displaying a list of comments. + +Let's think about where our comments are being displayed. Probably not on the homepage, since that only shows a summary of each post. A user would need to go to the full page to show the comments for that blog post. But that page is only fetching the data for the single blog post itself, nothing else. We'll need to get the comments and since we'll be fetching *and* displaying them, that sounds like a job for a Cell. + +:::info Couldn't the query for the blog post page also fetch the comments? + +Yes, it could! But the idea behind Cells is to make components even more [composable](https://en.wikipedia.org/wiki/Composability) by having them be responsible for their own data fetching *and* display. If we rely on a blog post to fetch the comments then the new Comments component we're about to create now requires something *else* to fetch the comments and pass them in. If we re-use the Comments component somewhere, now we're fetching comments in two different places. + +**But what about the Comment component we just made, why doesn't that fetch its own data?** + +There aren't any instances I (the author) could think of where we would ever want to display only a single comment in isolation—it would always be a list of all comments on a post. If displaying a single comment was common for your use case then it could definitely be converted to a **CommentCell** and have it responsible for pulling the data for that single comment itself. But keep in mind that if you have 50 comments on a blog post, that's now 50 GraphQL calls that need to go out, one for each comment. There's always a trade-off! + +**Then why make a standalone Comment component at all? Why not just do all the display in the CommentsCell?** + +We're trying to start in small chunks to make the tutorial more digestible for a new audience so we're starting simple and getting more complex as we go. But it also just feels *nice* to build up a UI from these smaller chunks that are easier to reason about and keep separate in your head. + +**But what about—** + +Look, we gotta end this sidebar and get back to building this thing. You can ask more questions later, promise! + +::: + +### Storybook + +Let's generate a **CommentsCell**: + +```bash +yarn rw g cell Comments +``` + +Storybook updates with a new **CommentsCell** under the **Cells** folder, and it's actually showing something: + +![image](https://user-images.githubusercontent.com/300/153477642-0d5a15a5-f96f-485a-b8b0-dbc1c4515279.png) + +Where did that come from? Check out `CommentsCell.mock.{js,ts}`: there's no Prisma model for a Comment yet, so Redwood took a guess that your model would at least contain an `id` field and just used that for the mock data. + +Let's update the `Success` component to use the `Comment` component created earlier, and add all of the fields we'll need for the **Comment** to render to the `QUERY`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.jsx" +// highlight-next-line +import Comment from 'src/components/Comment' + +export const QUERY = gql` + query CommentsQuery { + comments { + id + // highlight-start + name + body + createdAt + // highlight-end + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ comments }) => { + return ( + // highlight-start + <> + {comments.map((comment) => ( + <Comment key={comment.id} comment={comment} /> + ))} + </> + // highlight-end + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.tsx" +// highlight-next-line +import Comment from 'src/components/Comment' + +import type { CommentsQuery } from 'types/graphql' +import type { CellSuccessProps, CellFailureProps } from '@redwoodjs/web' + +export const QUERY = gql` + query CommentsQuery { + comments { + id + // highlight-start + name + body + createdAt + // highlight-end + } + } +` + +export const Loading = () => <div>Loading...</div> + +export const Empty = () => <div>Empty</div> + +export const Failure = ({ error }: CellFailureProps) => ( + <div style={{ color: 'red' }}>Error: {error.message}</div> +) + +export const Success = ({ comments }: CellSuccessProps<CommentsQuery>) => { + return ( + // highlight-start + <> + {comments.map((comment) => ( + <Comment key={comment.id} comment={comment} /> + ))} + </> + // highlight-end + ) +} +``` + +</TabItem> +</Tabs> + +We're passing an additional `key` prop to make React happy when iterating over an array with `map`. + +If you check Storybook, you'll see that we do indeed render the `Comment` component three times, but there's no data to display. Let's update the mock with some sample data: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="web/src/components/CommentsCell/CommentsCell.mock.js" +export const standard = () => ({ + // highlight-start + comments: [ + { + id: 1, + name: 'Rob Cameron', + body: 'First comment', + createdAt: '2020-01-02T12:34:56Z', + }, + { + id: 2, + name: 'David Price', + body: 'Second comment', + createdAt: '2020-02-03T23:00:00Z', + }, + ], + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="web/src/components/CommentsCell/CommentsCell.mock.ts" +export const standard = () => ({ + // highlight-start + comments: [ + { + id: 1, + name: 'Rob Cameron', + body: 'First comment', + createdAt: '2020-01-02T12:34:56Z', + }, + { + id: 2, + name: 'David Price', + body: 'Second comment', + createdAt: '2020-02-03T23:00:00Z', + }, + ], + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +:::info What's this `standard` thing? + +Think of it as the standard, default mock if you don't do anything else. We would have loved to use the name "default" but that's already a reserved word in JavaScript! + +::: + +Storybook refreshes and we've got comments! It's a little hard to distinguish between the two separate comments because they're right next to each other: + +![image](https://user-images.githubusercontent.com/300/153478670-14c32c29-6d1d-491b-bc2b-b033557a6d84.png) + +Since `CommentsCell` is the one responsible for drawing multiple comments, it makes sense that it should be "in charge" of how they're displayed, including the gap between them. Let's add a style to do that in `CommentsCell`: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.jsx" +export const Success = ({ comments }) => { + return ( + // highlight-next-line + <div className="space-y-8"> + {comments.map((comment) => ( + <Comment comment={comment} key={comment.id} /> + ))} + // highlight-next-line + </div> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.tsx" +export const Success = ({ comments }) => { + return ( + // highlight-next-line + <div className="space-y-8"> + {comments.map((comment) => ( + <Comment comment={comment} key={comment.id} /> + ))} + // highlight-next-line + </div> + ) +} +``` + +</TabItem> +</Tabs> + +:::tip + +`space-y-8` is a handy Tailwind class that puts a space *between* elements, but not above or below the entire stack (which is what would happen if you gave each `<Comment>` its own top/bottom margin). + +::: + +Looking good! Let's add our CommentsCell to the actual blog post display page: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +import { Link, routes } from '@redwoodjs/router' +// highlight-next-line +import CommentsCell from 'src/components/CommentsCell' + +const truncate = (text, length) => { + return text.substring(0, length) + '...' +} + +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + // highlight-next-line + {!summary && <CommentsCell />} + </article> + ) +} + +export default Article +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Article/Article.tsx" +import { Link, routes } from '@redwoodjs/router' +// highlight-next-line +import CommentsCell from 'src/components/CommentsCell' + +import type { Post } from 'types/graphql' + +const truncate = (text: string, length: number) => { + return text.substring(0, length) + '...' +} + +interface Props { + article: Omit<Post, 'createdAt'> + summary?: boolean +} + +const Article = ({ article, summary = false }: Props) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + // highlight-next-line + {!summary && <CommentsCell />} + </article> + ) +} + +export default Article +``` + +</TabItem> +</Tabs> + +If we are *not* showing the summary, then we'll show the comments. Take a look at the **Full** and **Summary** stories in Storybook and you should see comments on one and not on the other. + +:::info Shouldn't the `CommentsCell` cause an actual GraphQL request? How does this work? + +Redwood has added some functionality around Storybook so that if you're testing a component that itself isn't a Cell (like the `Article` component) but that renders a cell (like `CommentsCell`), then it will mock the GraphQL and use the `standard` mock that goes along with that Cell. Pretty cool, huh? + +::: + +Adding the comments to the article display has exposed another design issue: the comments are sitting right up underneath the article text: + +![image](https://user-images.githubusercontent.com/300/153480229-ea483d75-62bf-4b56-b248-10ca1597a7a8.png) + +Let's add a gap between the two: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.jsx" +const Article = ({ article, summary = false }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + // highlight-start + {!summary && ( + <div className="mt-12"> + <CommentsCell /> + </div> + )} + // highlight-end + </article> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Article/Article.tsx" +const Article = ({ article, summary = false }: Props) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + </h2> + </header> + <div className="mt-2 text-gray-900 font-light"> + {summary ? truncate(article.body, 100) : article.body} + </div> + // highlight-start + {!summary && ( + <div className="mt-12"> + <CommentsCell /> + </div> + )} + // highlight-end + </article> + ) +} +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/153480489-a59f27e3-6d70-4548-9a1e-4036b6860444.png) + +Okay, comment display is looking good! However, you may have noticed that if you tried going to the actual site there's an error where the comments should be: + +![image](https://user-images.githubusercontent.com/300/153480635-58ada8e8-ed5b-41b6-875b-501a07a36d9a.png) + +Why is that? Remember that we started with the `CommentsCell`, but never actually created a Comment model in `schema.prisma` or created an SDL and service! We'll be rectifying this soon. But this demonstrates another huge benefit of working with Storybook: you can build out UI functionality completely isolated from the api-side. In a team setting this is great because a web-side team can work on the UI while the api-side team can be building the backend end simultaneously and one doesn't have to wait for the other. + +### Testing + +We added a component, `CommentsCell`, and edited another, `Article`, so what do we test, and where? + +#### Testing Comments + +The actual `Comment` component does most of the work so there's no need to test all of that functionality again in `CommentsCell`: our `Comment` tests cover that just fine. What things does `CommentsCell` do that make it unique? + +* Has a loading message +* Has an error message +* Has a failure message +* When it renders successfully, it outputs as many comments as were returned by the `QUERY` (*what* is rendered we'll leave to the `Comment` tests) + +The default `CommentsCell.test.{jsx,tsx}` actually tests every state for us, albeit at an absolute minimum level—it makes sure no errors are thrown: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.test.jsx" +import { render } from '@redwoodjs/testing/web' + +import { Loading, Empty, Failure, Success } from './CommentsCell' +import { standard } from './CommentsCell.mock' + +describe('CommentsCell', () => { + it('renders Loading successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + it('renders Empty successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + it('renders Failure successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + it('renders Success successfully', async () => { + expect(() => { + render(<Success comments={standard().comments} />) + }).not.toThrow() + }) +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.test.tsx" +import { render } from '@redwoodjs/testing/web' + +import { Loading, Empty, Failure, Success } from './CommentsCell' +import { standard } from './CommentsCell.mock' + +describe('CommentsCell', () => { + it('renders Loading successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + it('renders Empty successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + it('renders Failure successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + it('renders Success successfully', async () => { + expect(() => { + render(<Success comments={standard().comments} />) + }).not.toThrow() + }) +}) +``` + +</TabItem> +</Tabs> + +And that's nothing to scoff at! As you've probably experienced, a React component usually either works 100% or blows up spectacularly. If it works, great! If it fails then the test fails too, which is exactly what we want to happen. + +But in this case we can do a little more to make sure `CommentsCell` is doing what we expect. Let's update the `Success` test in `CommentsCell.test.{js,ts}` to check that exactly the number of comments we passed in as a prop are rendered. How do we know a comment was rendered? How about if we check that each `comment.body` (the most important part of the comment) is present on the screen: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.test.jsx" +// highlight-next-line +import { render, screen } from '@redwoodjs/testing/web' + +import { Loading, Empty, Failure, Success } from './CommentsCell' +import { standard } from './CommentsCell.mock' + +describe('CommentsCell', () => { + it('renders Loading successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + it('renders Empty successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + it('renders Failure successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + it('renders Success successfully', async () => { + // highlight-start + const comments = standard().comments + render(<Success comments={comments} />) + + comments.forEach((comment) => { + expect(screen.getByText(comment.body)).toBeInTheDocument() + }) + // highlight-end + }) +}) + +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.test.tsx" +// highlight-next-line +import { render, screen } from '@redwoodjs/testing/web' + +import { Loading, Empty, Failure, Success } from './CommentsCell' +import { standard } from './CommentsCell.mock' + +describe('CommentsCell', () => { + it('renders Loading successfully', () => { + expect(() => { + render(<Loading />) + }).not.toThrow() + }) + + it('renders Empty successfully', async () => { + expect(() => { + render(<Empty />) + }).not.toThrow() + }) + + it('renders Failure successfully', async () => { + expect(() => { + render(<Failure error={new Error('Oh no')} />) + }).not.toThrow() + }) + + it('renders Success successfully', async () => { + // highlight-start + const comments = standard().comments + render(<Success comments={comments} />) + + comments.forEach((comment) => { + expect(screen.getByText(comment.body)).toBeInTheDocument() + }) + // highlight-end + }) +}) + +``` + +</TabItem> +</Tabs> + +We're looping through each `comment` from the mock, the same mock used by Storybook, so that even if we add more later, we're covered. You may find yourself writing a test and saying "just test that there are two total comments," which will work today, but months from now when you add more comments to the mock to try some different iterations in Storybook, that test will start failing. Avoid hardcoding data like this, especially [magic numbers](https://en.wikipedia.org/wiki/Magic_number_(programming)), into your test when you can derive it from your mocked data! + +#### Testing Article + +The functionality we added to `Article` says to show the comments for the post if we are *not* showing the summary. We've got a test for both the "full" and "summary" renders already. Generally you want a test to be testing "one thing," like whether the body of the article is present, and another test for whether the comments are displaying. If you find that you're using "and" in your test description (like "renders a blog post and its comments") that's a good sign that it should probably be split into two separate tests. + +Let's add two additional tests for our new functionality: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Article/Article.test.jsx" +// highlight-start +import { render, screen, waitFor } from '@redwoodjs/testing' + +import { standard } from 'src/components/CommentsCell/CommentsCell.mock' +// highlight-end + +import Article from './Article' + +const ARTICLE = { + id: 1, + title: 'First post', + body: `Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Street art next level umami squid. Hammock hexagon glossier 8-bit banjo. Neutra la croix mixtape echo park four loko semiotics kitsch forage chambray. Semiotics salvia selfies jianbing hella shaman. Letterpress helvetica vaporware cronut, shaman butcher YOLO poke fixie hoodie gentrify woke heirloom.`, + createdAt: new Date().toISOString(), +} + +describe('Article', () => { + it('renders a blog post', () => { + render(<Article article={ARTICLE} />) + + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect(screen.getByText(ARTICLE.body)).toBeInTheDocument() + }) + + // highlight-start + it('renders comments when displaying a full blog post', async () => { + const comment = standard().comments[0] + render(<Article article={ARTICLE} />) + + await waitFor(() => + expect(screen.getByText(comment.body)).toBeInTheDocument() + ) + }) + // highlight-end + + it('renders a summary of a blog post', () => { + render(<Article article={ARTICLE} summary={true} />) + + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect( + screen.getByText( + 'Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Str...' + ) + ).toBeInTheDocument() + }) + + // highlight-start + it('does not render comments when displaying a summary', async () => { + const comment = standard().comments[0] + render(<Article article={ARTICLE} summary={true} />) + + await waitFor(() => + expect(screen.queryByText(comment.body)).not.toBeInTheDocument() + ) + }) + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Article/Article.test.tsx" +// highlight-start +import { render, screen, waitFor } from '@redwoodjs/testing' + +import { standard } from 'src/components/CommentsCell/CommentsCell.mock' +// highlight-end + +import Article from './Article' + +const ARTICLE = { + id: 1, + title: 'First post', + body: `Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Street art next level umami squid. Hammock hexagon glossier 8-bit banjo. Neutra la croix mixtape echo park four loko semiotics kitsch forage chambray. Semiotics salvia selfies jianbing hella shaman. Letterpress helvetica vaporware cronut, shaman butcher YOLO poke fixie hoodie gentrify woke heirloom.`, + createdAt: new Date().toISOString(), +} + +describe('Article', () => { + it('renders a blog post', () => { + render(<Article article={ARTICLE} />) + + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect(screen.getByText(ARTICLE.body)).toBeInTheDocument() + }) + + // highlight-start + it('renders comments when displaying a full blog post', async () => { + const comment = standard().comments[0] + render(<Article article={ARTICLE} />) + + await waitFor(() => + expect(screen.getByText(comment.body)).toBeInTheDocument() + ) + }) + // highlight-end + + it('renders a summary of a blog post', () => { + render(<Article article={ARTICLE} summary={true} />) + + expect(screen.getByText(ARTICLE.title)).toBeInTheDocument() + expect( + screen.getByText( + 'Neutra tacos hot chicken prism raw denim, put a bird on it enamel pin post-ironic vape cred DIY. Str...' + ) + ).toBeInTheDocument() + }) + + // highlight-start + it('does not render comments when displaying a summary', async () => { + const comment = standard().comments[0] + render(<Article article={ARTICLE} summary={true} />) + + await waitFor(() => + expect(screen.queryByText(comment.body)).not.toBeInTheDocument() + ) + }) + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +Notice we're importing the mock from a completely different component—nothing wrong with that! + +We're introducing a new test function here, `waitFor()`, which will wait for things like GraphQL queries to finish running before checking for what's been rendered. Since `Article` renders `CommentsCell` we need to wait for the `Success` component of `CommentsCell` to be rendered. + +:::info + +The summary version of `Article` does *not* render the `CommentsCell`, but we should still wait. Why? If we did mistakenly start including `CommentsCell`, but didn't wait for the render, we would get a falsely passing test—indeed the text isn't on the page but that's because it's still showing the `Loading` component! If we had waited we would have seen the actual comment body get rendered, and the test would (correctly) fail. + +::: + +Okay we're finally ready to let users create their comments. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter6/the-redwood-way.md b/docs/versioned_docs/version-7.0/tutorial/chapter6/the-redwood-way.md new file mode 100644 index 000000000000..316154c266d1 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter6/the-redwood-way.md @@ -0,0 +1,316 @@ +# Building a Component the Redwood Way + +What's our blog missing? Comments. Let's add a simple comment engine so people can leave +their completely rational, well-reasoned comments on our blog posts. It's the internet, +what could go wrong? + +There are two main features we need to build: + +1. Comment form and creation +2. Comment retrieval and display + +Which order we build them in is up to us. To ease into things, let's start with the fetching and displaying comments first and then we'll move on to more complex work of adding a form and service to create a new comment. Of course, this is Redwood, so even forms and services aren't *that* complex! + +### Storybook + +Let's create a component for the display of a single comment. First up, the generator: + +```bash +yarn rw g component Comment +``` + +Storybook should refresh and our "Generated" Comment story will be ready to go: + +![image](https://user-images.githubusercontent.com/300/153475744-2e3151f9-b39c-4823-b2ef-539513cd4005.png) + +Let's think about what we want to ask users for and then display in a comment. How about just their name and the content of the comment itself? And we'll throw in the date/time it was created. Let's update the **Comment** component to accept a `comment` object with those three properties: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.jsx" +// highlight-next-line +const Comment = ({ comment }) => { + return ( + <div> + // highlight-start + <h2>{comment.name}</h2> + <time dateTime={comment.createdAt}>{comment.createdAt}</time> + <p>{comment.body}</p> + // highlight-end + </div> + ) +} + +export default Comment +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.tsx" +// highlight-start +// Just a temporary type. We'll replace this later +interface Props { + comment: { + name: string + createdAt: string + body: string + } +} +// highlight-end + +// highlight-next-line +const Comment = ({ comment }: Props) => { + return ( + <div> + // highlight-start + <h2>{comment.name}</h2> + <time dateTime={comment.createdAt}>{comment.createdAt}</time> + <p>{comment.body}</p> + // highlight-end + </div> + ) +} + +export default Comment +``` + +</TabItem> +</Tabs> + +Once you save that file and Storybook reloads you'll see it blow up: + +![image](https://user-images.githubusercontent.com/300/153475904-8f53cb09-3798-4e5a-9b6a-1ff1df98f93f.png) + +We need to update the story to include that comment object and pass it as a prop: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.stories.jsx" +import Comment from './Comment' + +export const generated = () => { + // highlight-start + return ( + <Comment + comment={{ + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z' + }} + /> + ) + // highlight-end +} + +export default { + title: 'Components/Comment', + component: Comment, +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.stories.tsx" +import Comment from './Comment' + +export const generated = () => { + // highlight-start + return ( + <Comment + comment={{ + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z' + }} + /> + ) + // highlight-end +} + +export default { + title: 'Components/Comment', + component: Comment, +} +``` + +</TabItem> +</Tabs> + +:::info + +Datetimes will come from GraphQL in [ISO8601 format](https://en.wikipedia.org/wiki/ISO_8601#Times) so we need to return one in that format here. + +::: + +Storybook will reload and be much happier: + +![image](https://user-images.githubusercontent.com/300/153476049-8ac31858-3014-47b5-807c-02b32d5a3ab0.png) + +Let's add a little bit of styling and date conversion to get this **Comment** component looking like a nice, completed design element: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.jsx" +// highlight-start +const formattedDate = (datetime) => { + const parsedDate = new Date(datetime) + const month = parsedDate.toLocaleString('default', { month: 'long' }) + return `${parsedDate.getDate()} ${month} ${parsedDate.getFullYear()}` +} +// highlight-end + +const Comment = ({ comment }) => { + return ( + // highlight-start + <div className="bg-gray-200 p-8 rounded-lg"> + <header className="flex justify-between"> + <h2 className="font-semibold text-gray-700">{comment.name}</h2> + <time className="text-xs text-gray-500" dateTime={comment.createdAt}> + {formattedDate(comment.createdAt)} + </time> + </header> + <p className="text-sm mt-2">{comment.body}</p> + </div> + // highlight-end + ) +} + +export default Comment +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.tsx" +// highlight-start +const formattedDate = (datetime: ConstructorParameters<typeof Date>[0]) => { + const parsedDate = new Date(datetime) + const month = parsedDate.toLocaleString('default', { month: 'long' }) + return `${parsedDate.getDate()} ${month} ${parsedDate.getFullYear()}` +} +// highlight-end + +// Just a temporary type. We'll replace this later +interface Props { + comment: { + name: string + createdAt: string + body: string + } +} + +const Comment = ({ comment }: Props) => { + return ( + // highlight-start + <div className="bg-gray-200 p-8 rounded-lg"> + <header className="flex justify-between"> + <h2 className="font-semibold text-gray-700">{comment.name}</h2> + <time className="text-xs text-gray-500" dateTime={comment.createdAt}> + {formattedDate(comment.createdAt)} + </time> + </header> + <p className="text-sm mt-2">{comment.body}</p> + </div> + // highlight-end + ) +} + +export default Comment +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/153476305-017c6cf8-a2dd-4da0-a6ef-487d91a562df.png) + +Our component looks great! Now let's verify that it does what we want it to do with a test. + +### Testing + +We don't want Santa to skip our house so let's test our **Comment** component. We could test that the author's name and the body of the comment appear, as well as the date it was posted. + +The default test that comes with a generated component just makes sure that no errors are thrown, which is the least we could ask of our components! + +Let's add a sample comment to the test and check that the various parts are being rendered: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment.test.jsx" +// highlight-next-line +import { render, screen } from '@redwoodjs/testing' + +import Comment from './Comment' + +describe('Comment', () => { + it('renders successfully', () => { + // highlight-start + const comment = { + name: 'John Doe', + body: 'This is my comment', + createdAt: '2020-01-02T12:34:56Z', + } + render(<Comment comment={comment} />) + + expect(screen.getByText(comment.name)).toBeInTheDocument() + expect(screen.getByText(comment.body)).toBeInTheDocument() + const dateExpect = screen.getByText('2 January 2020') + expect(dateExpect).toBeInTheDocument() + expect(dateExpect.nodeName).toEqual('TIME') + expect(dateExpect).toHaveAttribute('datetime', comment.createdAt) + // highlight-end + }) +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment.test.tsx" +// highlight-next-line +import { render, screen } from '@redwoodjs/testing' + +import Comment from './Comment' + +describe('Comment', () => { + it('renders successfully', () => { + // highlight-start + const comment = { + name: 'John Doe', + body: 'This is my comment', + createdAt: '2020-01-02T12:34:56Z', + } + render(<Comment comment={comment} />) + + expect(screen.getByText(comment.name)).toBeInTheDocument() + expect(screen.getByText(comment.body)).toBeInTheDocument() + const dateExpect = screen.getByText('2 January 2020') + expect(dateExpect).toBeInTheDocument() + expect(dateExpect.nodeName).toEqual('TIME') + expect(dateExpect).toHaveAttribute('datetime', comment.createdAt) + // highlight-end + }) +}) +``` + +</TabItem> +</Tabs> + +Here we're testing for both elements of the output `createdAt` timestamp: the actual text that's output (similar to how we tested for an article's truncated body) but also that the element that wraps that text is a `<time>` tag and that it contains a `datetime` attribute with the raw value of `comment.createdAt`. This might seem like overkill but the point of the `datetime` attribute is to provide a machine-readable timestamp that the browser could (theoretically) hook into and do stuff with. This makes sure that we preserve that ability. + +If your tests aren't already running in another terminal window, you can start them now: + +```bash +yarn rw test +``` + +:::info What happens if we change the formatted output of the timestamp? Wouldn't we have to change the test? + +Yes, just like we'd have to change the truncation text if we changed the length of the truncation. One alternative approach to testing for the formatted output could be to move the date formatting formula into a function that you can export from the `Comment` component. Then you can import that in your test and use it to check the formatted output. Now if you change the formula the test keeps passing because it's sharing the function with `Comment`. + +::: diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter7/api-side-currentuser.md b/docs/versioned_docs/version-7.0/tutorial/chapter7/api-side-currentuser.md new file mode 100644 index 000000000000..bce5ffaa2efd --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter7/api-side-currentuser.md @@ -0,0 +1,781 @@ +# Accessing currentUser in the API side + +As our blog has evolved into a multi-million dollar enterprise, we find ourselves so busy counting our money that we no longer have the time to write actual blog posts! Let's hire some authors to write them for us. + +What do we need to change to allow multiple users to create posts? Well, for one, we'll need to start associating a blog post to the author that wrote it so we can give them credit. We'll also want to display the name of the author when reading an article. Finally, we'll want to limit the list of blog posts that an author has access to edit to only their own: Alice shouldn't be able to make changes to Bob's articles. + +## Associating a Post to a User + +Let's introduce a relationship between a `Post` and a `User`, AKA a foreign key. This is considered a one-to-many relationship (one `User` has many `Post`s), similar to the relationship we created earlier between a `Post` and its associated `Comment`s. Here's what our new schema will look like: + +``` +┌─────────────────────┐ ┌───────────┐ +│ User │ │ Post │ +├─────────────────────┤ ├───────────┤ +│ id │───┐ │ id │ +│ name │ │ │ title │ +│ email │ │ │ body │ +│ hashedPassword │ └──<│ userId │ +│ ... │ │ createdAt │ +└─────────────────────┘ └───────────┘ +``` + +Making data changes like this will start becoming second nature soon: + +1. Add the new relationship the `schema.prisma` file +2. Migrate the database +3. Generate/update SDLs and Services + +### Add the New Relationship to the Schema + +First we'll add the new `userId` field to `Post` and the relation to `User`: + +```javascript title="api/db/schema.prisma" +model Post { + id Int @id @default(autoincrement()) + title String + body String + comments Comment[] + // highlight-start + user User @relation(fields: [userId], references: [id]) + userId Int + // highlight-end + createdAt DateTime @default(now()) +} + +model User { + id Int @id @default(autoincrement()) + name String? + email String @unique + hashedPassword String + salt String + resetToken String? + resetTokenExpiresAt DateTime? + roles String @default("moderator") + // highlight-next-line + posts Post[] +} +``` + +:::info User SDL +We created a User model in Chapter 4 when we set up authentication for our blog. Redwood's `setup auth dbAuth` command generated two files for us that manage authentication: the `auth` file in `api/src/lib/`, and the `auth` file in `api/src/functions/`. Both of these files use our PrismaClient directly to work with the User model, so we didn't need to set up an SDL or services for the User model. + +If you followed our recommendation in the Intermission to use the Example repo, the User SDL and service is already added for you. If not, you'll need to add it yourself: + +```bash +yarn rw g sdl User --no-crud +``` + +We'll comment out the sensitive fields of our GraphQL User type so there's no chance of them leaking: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```js title="api/src/graphql/users.sdl.js" + type User { + ... + # hashedPassword: String! + # salt: String! + # resetToken: String + # resetTokenExpiresAt: DateTime + } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/graphql/users.sdl.ts" + type User { + ... + # hashedPassword: String! + # salt: String! + # resetToken: String + # resetTokenExpiresAt: DateTime + } +``` + +</TabItem> +</Tabs> +::: + +### Migrate the Database + +Next, migrate the database to apply the changes (when given the option, name the migration something like "add userId to post"): + +``` +yarn rw prisma migrate dev +``` + +Whoops! + +<img width="584" alt="image" src="https://user-images.githubusercontent.com/300/192899337-9cc1167b-e6da-42d4-83dc-d2a6c0cd1179.png" /> + +Similar to what happened when we added `roles` to `User`, We made `userId` a required field, but we already have several posts in our development database. Since we don't have a default value for `userId` defined, it's impossible to add this column to the database. + +:::warning Why don't we just set `@default(1)` in the schema? + +This would get us past this problem, but could cause hard-to-track-down bugs in the future: if you ever forget to assign a `post` to a `user`, rather than fail it'll happily just set `userId` to `1`, which may or may not even exist some day! It's best to take the extra time to do things The Right Way and avoid the quick hacks to get past an annoyance like this. Your future self will thank you! + +::: + +Since we're in development, let's just blow away the database and start over: + +``` +yarn rw prisma migrate reset +``` + +:::info Database Seeds + +If you started the second half the tutorial from the [Redwood Tutorial repo](https://github.com/redwoodjs/redwood-tutorial) you'll get an error after resetting the database—Prisma attempts to seed the database with a user and some posts to get you started, but the posts in that seed do not have the new required `userId` field! Open up `scripts/seed.js` and edit each post to add `userId: 1` to each: + +```javascript title="scripts/seed.js" +{ + id: 1, + name: 'John Doe', + title: 'Welcome to the blog!', + body: + "I'm baby single- origin coffee kickstarter lo - fi paleo skateboard.Tumblr hashtag austin whatever DIY plaid knausgaard fanny pack messenger bag blog next level woke.Ethical bitters fixie freegan,helvetica pitchfork 90's tbh chillwave mustache godard subway tile ramps art party. Hammock sustainable twee yr bushwick disrupt unicorn, before they sold out direct trade chicharrones etsy polaroid hoodie. Gentrify offal hoodie fingerstache.", + // highlight-next-line + userId: 1, +}, +``` + +Now run `yarn rw prisma migrate reset` and and...you'll get a different error. But that's okay, read on... + +::: + +We've got an error here because running a database `reset` doesn't also apply pending migrations. So we're trying to set a `userId` where one doesn't exist in the database (it does exist in Prisma generated client libs though, so it thinks that there *should* be one, even if it doesn't exist in the database yet). + +It may feel like we're stuck, but note that the database did reset successfully, it's just the seed that failed. So now let's migrate the database to add the new `userId` to `Post`, and then re-run the seed to populate the database, naming it something like "add userId to post": + +``` +yarn rw prisma migrate dev +``` + +And then the seed: + +``` +yarn rw prisma db seed +``` + +:::info + +If you didn't start your codebase from the [Redwood Tutorial repo](https://github.com/redwoodjs/redwood-tutorial) then you'll now have no users or posts in the database. Go ahead and create a user by going to [http://localhost:8910/signup](http://localhost:8910/signup) but don't create any posts yet! Change the user's role to be "admin", either by using the console introduced in the [previous page](/docs/canary/tutorial/chapter7/rbac#changing-roles-on-a-user) or by [opening Prisma Studio](/docs/canary/tutorial/chapter2/getting-dynamic#prisma-studio) and changing it directly in the database. + +::: + +### Add Fields to the SDL and Service + +Let's think about where we want to show our new relationship. For now, probably just on the homepage and article page: we'll display the author of the post next to the title. That means we'll want to access the user from the post in a GraphQL query something like this: + +```graphql +post { + id + title + body + createdAt + user { + name + } +} +``` + +To enable this we'll need to make two modifications on the api side: + +1. Add the `user` field to the `posts` SDL +2. Add a **relation resolver** for the `user` in the `posts` service + +#### Add User to Posts SDL + +```javascript title="api/src/graphql/posts.sdl.js" + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + // highlight-next-line + user: User! + } +``` + +:::info What about the mutations? + +We did *not* add `user` or `userId` to the `CreatePostInput` or `UpdatePostInput` types. Although we want to set a user on each newly created post, we don't want just anyone to do that via a GraphQL call! You could easily create or edit a post and assign it to someone else by just modifying the GraphQL payload. We'll save assigning the user to just the service, so it can't be manipulated by the outside world. + +::: + +Here we're using `User!` with an exclamation point because we know that every `Post` will have an associated user to it—this field will never be `null`. + +#### Add User Relation Resolver + +This one is a little tricker: we need to add a "lookup" in the `posts` service, so that it knows how to get the associated user. When we generated the `comments` SDL and service we got this **relation resolver** created for us. We could re-run the service generator for `Post` but that could blow away changes we made to this file. Our only option would be to include the `--force` flag since the file already exists, which will write over everything. In this case we'll just add the resolver manually: + +```javascript title="api/src/services/posts/posts.js" +import { db } from 'src/lib/db' + +export const posts = () => { + return db.post.findMany() +} + +export const post = ({ id }) => { + return db.post.findUnique({ + where: { id }, + }) +} + +export const createPost = ({ input }) => { + return db.post.create({ + data: input, + }) +} + +export const updatePost = ({ id, input }) => { + return db.post.update({ + data: input, + where: { id }, + }) +} + +export const deletePost = ({ id }) => { + return db.post.delete({ + where: { id }, + }) +} + +// highlight-start +export const Post = { + user: (_obj, { root }) => + db.post.findFirst({ where: { id: root.id } }).user(), +} +// highlight-end +``` + +This can be non-intuitive so let's step through it. First, declare a variable with the same name as the model this service is for: `Post` for the `posts` service. Now, set that to an object containing keys that are the same as the fields that are going to be looked up, in this case `user`. When GraphQL invokes this function it passes a couple of arguments, one of which is `root` which is the object that was resolved to start with, in this case the `post` in our GraphQL query: + +```graphql +post { <- root + id + title + body + createdAt + user { + name + } +} +``` + +That post will already be retrieved from the database, and so we know its `id`. `root` is that object, so can simply call `.id` on it to get that property. Now we know everything we need to to make a `findFirst()` query in Prisma, giving it the `id` of the record we already found, but returning the `user` associated to that record, rather than the `post` itself. + +We could also write this resolver as follows: + +```javascript +export const Post = { + user: (_obj, { root }) => + db.user.findFirst({ where: { id: root.userId } }), +} +``` + +Note that if you keep the relation resolver above, but also included a `user` property in the post(s) returned from `posts` and `post`, this field resolver will still be invoked and whatever is returned will override any `user` property that exists already. Why? That's just how GraphQL works—resolvers, if they are present for a named field, will always be invoked and their return value used, even if the `root` already contains that data. + +:::info Prisma and the N+1 Problem + +If you have any experience with database design and retrieval you may have noticed this method presents a less than ideal solution: for every post that's found, you need to perform an *additional* query just to get the user data associated with that `post`, also known as the [N+1 problem](https://medium.com/the-marcy-lab-school/what-is-the-n-1-problem-in-graphql-dd4921cb3c1a). This is just due to the nature of GraphQL queries: each resolver function really only knows about its own parent object, nothing about potential children. + +There have been several attempts to work around this issue. A simple one that includes no extra dependencies is to remove this field resolver and simply include `user` data along with any `post` you retrieve from the database: + +```javascript +export const post = ({ id }) => { + return db.post.findUnique({ + where: { id }, + include: { + user: true + } + }) +} +``` + +This may or may not work for you: you are incurring the overhead of always returning user data, even if that data wasn't requested in the GraphQL query. In addition, this breaks further nesting of queries: what if you wanted to return the user for this post, and a list of all the other posts IDs that they created? + +```graphql +post { + id + title + body + createdAt + user { + name + posts { + id + } + } +} +``` + +This query would now fail because you only have `post.user` available, not `post.user.posts`. + +The Redwood team is actively looking into more elegant solutions to the N+1 problem, so stay tuned! + +::: + +## Displaying the Author + +In order to get the author info we'll need to update our Cell queries to pull the user's name. + +There are two places where we publicly present a post: + +1. The homepage +2. A single article page + +Let's update their respective Cells to include the name of the user that created the post: + +```jsx title="web/src/components/ArticlesCell/ArticlesCell.js" +export const QUERY = gql` + query ArticlesQuery { + articles: posts { + id + title + body + createdAt + // highlight-start + user { + name + } + // highlight-end + } + } +` +``` + +```jsx title="web/src/components/ArticleCell/ArticleCell.js" +export const QUERY = gql` + query ArticleQuery($id: Int!) { + article: post(id: $id) { + id + title + body + createdAt + // highlight-start + user { + name + } + // highlight-end + } + } +` +``` + +And then update the display component that shows an Article: + +```jsx title="web/src/components/Article/Article.js" +import { Link, routes } from '@redwoodjs/router' + +const Article = ({ article }) => { + return ( + <article> + <header> + <h2 className="text-xl text-blue-700 font-semibold"> + <Link to={routes.article({ id: article.id })}>{article.title}</Link> + // highlight-start + <span className="ml-2 text-gray-400 font-normal"> + by {article.user.name} + </span> + // highlight-end + </h2> + </header> + + <div className="mt-2 text-gray-900 font-light">{article.body}</div> + </article> + ) +} + +export default Article +``` + +Depending on whether you started from the Redwood Tutorial repo or not, you may not have any posts to actually display. Let's add some! However, before we can do that with our posts admin/scaffold, we'll need to actually associate a user to the post they created. Remember that we don't allow setting the `userId` via GraphQL, which is what the scaffolds use when creating/editing records. But that's okay, we want this to only happen in the service anyway, which is where we're heading now. + +## Accessing `currentUser` on the API side + +There's a magical variable named `context` that's available within any of your service functions. It contains the context in which the service function is being called. One property available on this context is the user that's logged in (*if* someone is logged in). It's the same `currentUser` that is available on the web side: + +```javascript title="api/src/service/posts/posts.js" +export const createPost = ({ input }) => { + return db.post.create({ + // highlight-next-line + data: { ...input, userId: context.currentUser.id } + }) +} +``` + +So `context.currentUser` will always be around if you need access to the user that made this request. We'll take their user `id` and appened it the rest of the incoming data from the scaffold form when creating a new post. Let's try it out! + +You should be able to create a post via the admin now: + +<img width="937" alt="image" src="https://user-images.githubusercontent.com/300/193152401-d98b488e-dd71-475a-a78c-6cd5233e5bee.png" /> + +And going back to the hompage should actually start showing posts and their authors! + +<img width="937" alt="image" src="https://user-images.githubusercontent.com/300/193152524-2715e49d-a1c3-43a1-b968-84a4f8ae3846.png" /> + +## Only Show a User Their Posts in Admin + +Right now any admin that visits `/admin/posts` can still see all posts, not only their own. Let's change that. + +Since we know we have access to `context.currentUser` we can sprinkle it throughout our posts service to limit what's returned to only those posts that the currently logged in user owns: + +```javascript title="api/src/services/posts/posts.js" +import { db } from 'src/lib/db' + +export const posts = () => { + // highlight-next-line + return db.post.findMany({ where: { userId: context.currentUser.id } }) +} + +export const post = ({ id }) => { + // highlight-start + return db.post.findFirst({ + where: { id, userId: context.currentUser.id }, + }) + // highlight-end +} + +export const createPost = ({ input }) => { + return db.post.create({ + data: { ...input, userId: context.currentUser.id }, + }) +} + +export const updatePost = ({ id, input }) => { + return db.post.update({ + data: input, + where: { id }, + }) +} + +export const deletePost = ({ id }) => { + return db.post.delete({ + where: { id }, + }) +} + +export const Post = { + user: (_obj, { root }) => + db.post.findFirst({ where: { id: root.id } }).user(), +} +``` + +:::info Prisma's `findUnique()` vs. `findFirst()` + +Note that we switched from `findUnique()` to `findFirst()` here. Prisma's `findUnique()` requires that any attributes in the `where` clause have unique indexes, which `id` does, but `userId` does not. So we need to switch to the `findFirst()` function which allows you to put whatever you want in the `where`, which may return more than one record, but Prisma will only return the first of that set. In this case we know there'll always only be one, because we're selecting by `id` *in addition* to `userId`. + +::: + +These changes make sure that a user can only see a list of their own posts, or the detail for a single post that they own. + +What about `updatePost` and `deletePost`? They aren't limited to just the `currentUser`, which would let anyone update or delete a post if they made a manual GraphQL call! That's not good. We'll deal with those [a little later](#update-and-delete). + +But there's a problem with the updates we just made: doesn't the homepage also use the `posts` service to display all the articles for the homepage? This code update would limit the homepage to only showing a logged in user's own posts and no one else! And what happens if someone who is *not* logged in goes to the homepage? ERROR. + +How can we return one list of posts in the admin, and a different list of posts for the homepage? + +## An AdminPosts Service + +We could go down the road of adding variables in the GraphQL queries, along with checks in the existing `posts` service, that return a different list of posts whether you're on the homepage or in the admin. But this complexity adds a lot of surface area to test and some fragility if someone goes in there in the future—they have to be very careful not to add a new condition or negate an existing one and accidentally expose your admin functionality to exploits. + +What if we created *new* GraphQL queries for the admin views of posts? They would have automatic security checks thanks to `@requireAdmin`, no custom code required. These new queries will be used in the admin posts pages, and the original, simple `posts` service will be used for the homepage and article detail page. + +There are several steps we'll need to complete: + +1. Create a new `adminPosts` SDL that defines the types +2. Create a new `adminPosts` service +3. Update the posts admin GraphQL queries to pull from `adminPosts` instead of `posts` + +### Create the `adminPosts` SDL + +Let's keep the existing `posts.sdl.js` and make that the "public" interface. Duplicate that SDL, naming it `adminPosts.sdl.js`, and modify it like so: + +```javascript title="api/src/graphql/adminPosts.sdl.js" +export const schema = gql` + type Query { + adminPosts: [Post!]! @requireAuth(roles: ["admin"]) + adminPost(id: Int!): Post @requireAuth(roles: ["admin"]) + } + + input CreatePostInput { + title: String! + body: String! + } + + input UpdatePostInput { + title: String + body: String + } + + type Mutation { + createPost(input: CreatePostInput!): Post! @requireAuth(roles: ["admin"]) + updatePost(id: Int!, input: UpdatePostInput!): Post! @requireAuth(roles: ["admin"]) + deletePost(id: Int!): Post! @requireAuth(roles: ["admin"]) + } +` +``` + +```javascript title="api/src/graphql/posts.sdl.js" +export const schema = gql` + type Post { + id: Int! + title: String! + body: String! + createdAt: DateTime! + user: User! + } + + type Query { + posts: [Post!]! @skipAuth + post(id: Int!): Post @skipAuth + } +` +``` + +So we keep a single type of `Post` since the data contained within it is the same, and either SDL file will return this same data type. We can remove the mutations from the `posts` SDL since the general public will not need to access those. We move create, update and delete mutations to the new `adminPosts` SDL, and rename the two queries from `posts` to `adminPosts` and `post` to `adminPost`. In case you didn't know: every query/mutation must have a unique name across your entire application! + +In `adminPosts` we've updated the queries to use `@requireAuth` instead of `@skipAuth`. Now that we have dedicated queries for our admin pages, we can lock them down to only allow access when authenticated. + +### Create the `adminPosts` Service + +Next let's create an `adminPosts` service. We'll need to move our create/update/delete mutations to it, as the name of the SDL needs to match the name of the service: + +```javascript title="api/src/services/adminPosts/adminPosts.js" +import { db } from 'src/lib/db' + +export const adminPosts = () => { + return db.post.findMany({ where: { userId: context.currentUser.id } }) +} + +export const adminPost = ({ id }) => { + return db.post.findFirst({ + where: { id, userId: context.currentUser.id }, + }) +} + +export const createPost = ({ input }) => { + return db.post.create({ + data: { ...input, userId: context.currentUser.id }, + }) +} + +export const updatePost = ({ id, input }) => { + return db.post.update({ + data: input, + where: { id }, + }) +} + +export const deletePost = ({ id }) => { + return db.post.delete({ + where: { id }, + }) +} +``` + +(Again, don't forget the change from `findUnique()` to `findFirst()`.) And update `posts` to remove some of the functions that live in `adminPosts` now: + +```javascript title="api/src/services/posts/posts.js" +import { db } from 'src/lib/db' + +export const posts = () => { + return db.post.findMany() +} + +export const post = ({ id }) => { + return db.post.findUnique({ where: { id } }) +} + +export const Post = { + user: (_obj, { root }) => + db.post.findFirst({ where: { id: root.id } }).user(), +} +``` + +We've removed the `userId` lookup in the `posts` service so we're back to returning every post (for `posts`) or a single post (regardless of who owns it, in `post`). + +Note that we kept the relation resolver here `Post.user`, and there's none in `adminPosts`: since the queries and mutations from both SDLs still return a `Post`, we'll want to keep that relation resolver with the service that matches that original SDL by name: `graphql/posts.sdl.js` => `services/posts/posts.js`. + +### Update the GraphQL Queries + +Finally, we'll need to update several of the scaffold components to use the new `adminPosts` and `adminPost` queries (we'll limit the code snippets below to just the changes to save some room, this page is getting long enough!): + +```javascript title="web/src/components/Post/EditPostCell/EditPostCell.js" +export const QUERY = gql` + query EditPostById($id: Int!) { + // highlight-next-line + post: adminPost(id: $id) { + id + title + body + createdAt + } + } +` +``` + +```jsx title="web/src/components/Post/PostCell/PostCell.js" +export const QUERY = gql` + query FindPostById($id: Int!) { + // highlight-next-line + post: adminPost(id: $id) { + id + title + body + createdAt + } + } +` +``` + +```jsx title="web/src/components/Post/PostsCell/PostsCell.js" +export const QUERY = gql` + query POSTS { + // highlight-next-line + posts: adminPosts { + id + title + body + createdAt + } + } +` +``` + +If we didn't use the `posts: adminPosts` syntax, we would need to rename the argument coming into the `Success` component below to `adminPosts`. This syntax renames the result of the query to `posts` and then nothing else below needs to change! + +We don't need to make any changes to the "public" views (like `ArticleCell` and `ArticlesCell`) since those will continue to use the original `posts` and `post` queries, and their respective resolvers. + +## Update and Delete + +Okay, let's take care of `updatePost` and `deletePost` now. Why couldn't we just do this? + +```javascript +export const updatePost = ({ id, input }) => { + return db.post.update({ + data: input, + // highlight-next-line + where: { id, userId: context.currentUser.id }, + }) +} +``` + +Because like `findUnique()`, Prisma only wants to update records based on fields with unique indexes, in this case that's just `id`. So we need to keep this to just an `id`. But how do we verify that the user is only updating/deleting a record that they own? + +We could select the record first, make sure the user owns it, and only then let the `update()` commence: + +```javascript +// highlight-next-line +import { ForbiddenError } from '@redwoodjs/graphql-server' + +// highlight-start +export const updatePost = async ({ id, input }) => { + if (await adminPost({ id })) { + return db.post.update({ + data: input, + where: { id }, + }) + } else { + throw new ForbiddenError("You don't have access to this post") + } +} +``` + +We're using the `adminPost()` service function, rather than making another call to the database (note that we had to async/await it to make sure we have the post before continuing). Composing services like this is something Redwood was designed to encourage: services' functions act as resolvers for GraphQL, but they're also just plain JS functions and can be called wherever you need. And the reasons why you'd want to do this are clearly demonstrated here: `adminPost()` already limits the found record to be only one owned by the logged in user, so that logic is already encapsulated here, and we can be sure that any time an admin wants to do something with a single post, it runs through this code and uses the same logic every time. + +This works, but we'll need to do the same thing in `deletePost`. Let's extract that check for the post existence into a function: + +```javascript +// highlight-start +const verifyOwnership = async ({ id }) => { + if (await adminPost({ id })) { + return true + } else { + throw new ForbiddenError("You don't have access to this post") + } +} +// highlight-end + +export const updatePost = async ({ id, input }) => { + // highlight-next-line + await verifyOwnership({ id }) + + return db.post.update({ + data: input, + where: { id }, + }) +} +``` + +Simple! Our final `adminPosts` service ends up looking like: + +```javascript +import { ForbiddenError } from '@redwoodjs/graphql-server' + +import { db } from 'src/lib/db' + +const verifyOwnership = async ({ id }) => { + if (await adminPost({ id })) { + return true + } else { + throw new ForbiddenError("You don't have access to this post") + } +} + +export const adminPosts = () => { + return db.post.findMany({ where: { userId: context.currentUser.id } }) +} + +export const adminPost = ({ id }) => { + return db.post.findFirst({ + where: { id, userId: context.currentUser.id }, + }) +} + +export const createPost = ({ input }) => { + return db.post.create({ + data: { ...input, userId: context.currentUser.id }, + }) +} + +export const updatePost = async ({ id, input }) => { + await verifyOwnership({ id }) + + return db.post.update({ + data: input, + where: { id }, + }) +} + +export const deletePost = async ({ id }) => { + await verifyOwnership({ id }) + + return db.post.delete({ + where: { id }, + }) +} + +``` + +## Wrapping Up + +Whew! Let's try several different scenarios (this is the kind of thing that the QA team lives for), making sure everything is working as expected: + +* A logged out user *should* see all posts on the homepage +* A logged out user *should* be able to see the detail for a single post +* A logged out user *should not* be able to go to /admin/posts +* A logged out user *should not* see moderation controls next to comments +* A logged in admin user *should* see all articles on the homepage (not just their own) +* A logged in admin user *should* be able to go to /admin/posts +* A logged in admin user *should* be able to create a new post +* A logged in admin user *should not* be able to see anyone else's posts in /admin/posts +* A logged in admin user *should not* see moderation controls next to comments (unless you modified that behavior at the end of the last page) +* A logged in moderator user *should* see moderation controls next to comments +* A logged in moderator user *should not* be able to access /admin/posts + +In fact, you could write some new tests to make sure this functionality doesn't mistakenly change in the future. The quickest would probably be to create `adminPosts.scenarios.js` and `adminPosts.test.js` files to go with the new service and verify that you are only returned the posts owned by a given user. You can [mock currentUser](/docs/testing#mockcurrentuser-on-the-api-side) to simulate someone being logged in or not, with different roles. You could add tests for the Cells we modified above, but the data they get is dependent on what's returned from the service, so as long as you have the service itself covered you should be okay. The 100% coverage folks would argue otherwise, but while they're still busy writing tests we're out cruising in our new yacht thanks to all the revenue from our newly launched (with *reasonable* test coverage) features! + +Did it work? Great! Did something go wrong? Can someone see too much, or too little? Double check that all of your GraphQL queries are updated and you've saved changes in all the opened files. diff --git a/docs/versioned_docs/version-7.0/tutorial/chapter7/rbac.md b/docs/versioned_docs/version-7.0/tutorial/chapter7/rbac.md new file mode 100644 index 000000000000..490b98a4d5ac --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/chapter7/rbac.md @@ -0,0 +1,1318 @@ +# Role-Based Access Control (RBAC) + +Imagine a few weeks in the future of our blog when every post hits the front page of the New York Times and we're getting hundreds of comments a day. We can't be expected to come up with quality content each day *and* moderate the endless stream of (mostly well-meaning) comments! We're going to need help. Let's hire a comment moderator to remove obvious spam and any comments that don't heap praise on our writing ability. You know, to help make the internet a better place. + +We already have a login system for our blog, but right now it's all-or-nothing: you either get access to create blog posts, or you don't. In this case our comment moderator(s) will need logins so that we know who they are, but we're not going to let them create new blog posts. We need some kind of role that we can give to our two kinds of users so we can distinguish them from one another. + +Enter **role-based access control**, thankfully shortened to the common phrase **RBAC**. Authentication says who the person is, authorization says what they can do. "Access control" is another way to say authorization. Currently the blog has the lowest common denominator of authorization: if they are logged in, they can do everything. Let's add a "less than everything, but more than nothing" level. + +### Defining Roles + +We've got a User model so let's add a `roles` property to that: + +```javascript title="api/db/schema.prisma" +model User { + id Int @id @default(autoincrement()) + name String? + email String @unique + hashedPassword String + salt String + resetToken String? + resetTokenExpiresAt DateTime? + // highlight-next-line + roles String +} +``` + +Next we'll (try) to migrate the database: + + +```bash +yarn rw prisma migrate dev +``` + +But that will fail with an error: + +``` +• Step 0 Added the required column `role` to the `User` table without a default value. There are 1 rows in this table, it is not possible to execute this step. +``` + +What does this mean? We made `roles` a required field. But, we have a user in the database already (`1 rows in this table`). If we add that column to the database, it would have to be `null` for existing users since we didn't define a default. Let's create a default value so that not only can we apply this migration, but we're sure that any new users being created have some minimal level of permissions and we don't have to add even more code to check whether they have a role at all, let alone what it is. + +For now let's have two roles, `admin` and `moderator`. `admin` can create/edit/delete blog posts and `moderator` can only remove comments. Of those two `moderator` is the safer default since it's more restrictive: + +```javascript title="api/db/schema.prisma" +model User { + id Int @id @default(autoincrement()) + name String? + email String @unique + hashedPassword String + salt String + resetToken String? + resetTokenExpiresAt DateTime? + // highlight-next-line + roles String @default("moderator") +} +``` + +Now the migration should be able to be applied: + +```bash +yarn rw prisma migrate dev +``` + +And you can name it something like "add roles to user". + +If we log in and try to go the posts admin page at [http://localhost:8910/admin/posts](http://localhost:8910/admin/posts) everything works the same as it used to: we're not actually checking for the existence of any roles yet so that makes sense. In reality we'd only want users with the `admin` role to have access to the admin pages, but our existing user just became a `moderator` because of our default role. This is a great opportunity to actually setup a role check and see if we lose access to the admin! + +Before we do that, we'll need to make sure that the web side has access to the roles on `currentUser`. Take a look at `api/src/lib/auth.js`. Remember when we had to add `email` to the list of fields being included? We need to add `roles` as well: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/lib/auth.js" +export const getCurrentUser = async (session) => { + return await db.user.findUnique({ + where: { id: session.id }, + // highlight-next-line + select: { id: true, email: true, roles: true }, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="api/src/lib/auth.ts" +export const getCurrentUser = async (session) => { + return await db.user.findUnique({ + where: { id: session.id }, + // highlight-next-line + select: { id: true, email: true, roles: true }, + }) +} +``` + +</TabItem> +</Tabs> + +<ShowForTs> + +### Fixing the hasRole function + +At this point, you might notice an error in your `api/src/lib/auth.ts` file, in the `hasRole` function. TypeScript is trying to help you here, by highlighting that roles can never be an array of strings: + +```ts title="api/src/lib/auth.ts" +export const hasRole = (roles: AllowedRoles): boolean => { + + // ... + + } else if (Array.isArray(currentUserRoles)) { + // 👇 TypeScript will now be telling you 'some' doesn't exist on type never: + // highlight-next-line + return currentUserRoles?.some((allowedRole) => roles === allowedRole) + } + } + ``` + +This is because we now know that the type of `currentUser.roles` is a `string` based on the type being returned from Prisma. So you can safely remove the block of code where it's checking if roles is an array: + +```diff title="api/src/lib/auth.ts" +export const hasRole = (roles: AllowedRoles): boolean => { + if (!isAuthenticated()) { + return false + } + + const currentUserRoles = context.currentUser?.roles + + if (typeof roles === 'string') { + if (typeof currentUserRoles === 'string') { + // roles to check is a string, currentUser.roles is a string + return currentUserRoles === roles +- } else if (Array.isArray(currentUserRoles)) { +- // roles to check is a string, currentUser.roles is an array +- return currentUserRoles?.some((allowedRole) => roles === allowedRole) + } + } + + if (Array.isArray(roles)) { + if (Array.isArray(currentUserRoles)) { + // roles to check is an array, currentUser.roles is an array + return currentUserRoles?.some((allowedRole) => + roles.includes(allowedRole) + ) + } else if (typeof currentUserRoles === 'string') { + // roles to check is an array, currentUser.roles is a string + return roles.some((allowedRole) => currentUserRoles === allowedRole) + } + } + + // roles not found + return false +} +``` + +</ShowForTs> + +### Restricting Access via Routes + +The easiest way to prevent access to an entire URL is via the Router. The `<PrivateSet>` component takes a prop `roles` in which you can give a list of only those role(s) that should have access: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/Routes.jsx" +// highlight-next-line +<PrivateSet unauthenticated="home" roles="admin"> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/admin/posts" page={PostPostsPage} name="posts" /> + </Set> +</PrivateSet> +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/Routes.tsx" +// highlight-next-line +<PrivateSet unauthenticated="home" roles="admin"> + <Set wrap={ScaffoldLayout} title="Posts" titleTo="posts" buttonLabel="New Post" buttonTo="newPost"> + <Route path="/admin/posts/new" page={PostNewPostPage} name="newPost" /> + <Route path="/admin/posts/{id:Int}/edit" page={PostEditPostPage} name="editPost" /> + <Route path="/admin/posts/{id:Int}" page={PostPostPage} name="post" /> + <Route path="/admin/posts" page={PostPostsPage} name="posts" /> + </Set> +</PrivateSet> +``` + +</TabItem> +</Tabs> + +Now if you browse to [http://localhost:8910/admin/posts](http://localhost:8910/admin/posts) you should get redirected to the homepage. So far so good. + +### Changing Roles on a User + +Let's use the Redwood console again to quickly update our admin user to actually have the `admin` role: + +```bash +yarn rw c +``` + +:::tip + +You can use the `c` shortcut instead of `console` + +::: + +Now we can update our user with a single command: + +```bash +> db.user.update({ where: { id: 1 } , data: { roles: 'admin' } }) +``` + +Which should return the new content of the user: + +```bash +{ + id: 1, + name: null, + email: 'admin@admin.com', + hashedPassword: 'a12f3975a3722953fd8e326dd108d5645ad9563042fe9f154419361eeeb775d8', + salt: '9abf4665293211adce1c99de412b219e', + resetToken: null, + resetTokenExpiresAt: null, + roles: 'admin' +} +``` + +:::warning + +If you re-used the same console session from the previous section, you'll need to quit it and start it again for it to know about the new Prisma data structure. If you still can't get the update to work, maybe your user doesn't have an `id` of `1`! Run `db.user.findMany()` first and then get the `id` of the user you want to update. + +::: + +Now head back to [http://localhost:8910/admin/posts](http://localhost:8910/admin/posts) and we should have access again. As the British say: brilliant! + +### Add a Moderator + +Let's create a new user that will represent the comment moderator. Since this is in development you can just make up an email address, but if you needed to do this in a real system that verified email addresses you could use **The Plus Trick** to create a new, unique email address that is actually the same as your original email address! + +:::tip The Plus Trick + +The Plus Trick is a very handy feature of the email standard known as a "boxname", the idea being that you may have other incoming boxes besides one just named "Inbox" and by adding `+something` to your email address you can specify which box the mail should be sorted into. They don't appear to be in common use these days, but they are ridiculously helpful for us developers when we're constantly needing new email addresses for testing: it gives us an infinite number of *valid* email addresses—they all come to your regular inbox! + +Just append +something to your email address before the @: + +* `jane.doe+testing@example.com` will go to `jane.doe@example.com` +* `dom+20210909@example.com` will go to `dom@example.com` + +Note that not all providers support this plus-based syntax, but the major ones (Gmail, Yahoo, Microsoft, Apple) do. If you find that you're not receiving emails at your own domain, you may want to create a free account at one of these providers just to use for testing. + +::: + +In our case we're not sending emails anywhere, and don't require them to be verified, so you can just use a made-up email for now. `moderator@moderator.com` has a nice ring to it. + +:::info + +If you disabled the new user signup as suggested at the end of the first part of the tutorial then you'll have a slightly harder time creating a new user (the Signup page is still enabled in the example repo for convenience). You could create one with the Redwood console, but you'll need to be clever—remember that we don't store the original password, just the hashed result when combined with a salt. Here's the commands to enter at the console for creating a new user (replace 'password' with your password of choice): + +```javascript +const CryptoJS = require('crypto-js') +const salt = CryptoJS.lib.WordArray.random(128 / 8).toString() +const hashedPassword = CryptoJS.PBKDF2('password', salt, { keySize: 256 / 32 }).toString() +db.user.create({ data: { email: 'moderator@moderator.com', hashedPassword, salt } }) +``` + +::: + +Now if you log out as the admin and log in as the moderator you should *not* have access to the posts admin. + +### Restrict Access in a Component + +Locking down a whole page is easy enough via the Router, but what about individual functionality within a page or component? + +Redwood provides a `hasRole()` function you can get from the `useAuth()` hook (you may recall us using that to get `currentUser` and display their email address in Part 1) which returns `true` or `false` depending on whether the logged in user has the given role. Let's try it out by adding a `Delete` button when a moderator is viewing a blog post's comments: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.jsx" +// highlight-next-line +import { useAuth } from 'src/auth' + +const formattedDate = (datetime) => { + const parsedDate = new Date(datetime) + const month = parsedDate.toLocaleString('default', { month: 'long' }) + return `${parsedDate.getDate()} ${month} ${parsedDate.getFullYear()}` +} + +const Comment = ({ comment }) => { + // highlight-start + const { hasRole } = useAuth() + const moderate = () => { + if (confirm('Are you sure?')) { + // TODO: delete comment + } + } + // highlight-end + + return ( + // highlight-next-line + <div className="bg-gray-200 p-8 rounded-lg relative"> + <header className="flex justify-between"> + <h2 className="font-semibold text-gray-700">{comment.name}</h2> + <time className="text-xs text-gray-500" dateTime={comment.createdAt}> + {formattedDate(comment.createdAt)} + </time> + </header> + <p className="text-sm mt-2">{comment.body}</p> + // highlight-start + {hasRole('moderator') && ( + <button + type="button" + onClick={moderate} + className="absolute bottom-2 right-2 bg-red-500 text-xs rounded text-white px-2 py-1" + > + Delete + </button> + )} + // highlight-end + </div> + ) +} + +export default Comment +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.tsx" +// highlight-next-line +import { useAuth } from 'src/auth' + +const formattedDate = (datetime: ConstructorParameters<typeof Date>[0]) => { + const parsedDate = new Date(datetime) + const month = parsedDate.toLocaleString('default', { month: 'long' }) + return `${parsedDate.getDate()} ${month} ${parsedDate.getFullYear()}` +} + +interface Props { + comment: { + name: string + createdAt: string + body: string + } +} + +const Comment = ({ comment }: Props) => { + // highlight-start + const { hasRole } = useAuth() + const moderate = () => { + if (confirm('Are you sure?')) { + // TODO: delete comment + } + } + // highlight-end + + return ( + // highlight-next-line + <div className="bg-gray-200 p-8 rounded-lg relative"> + <header className="flex justify-between"> + <h2 className="font-semibold text-gray-700">{comment.name}</h2> + <time className="text-xs text-gray-500" dateTime={comment.createdAt}> + {formattedDate(comment.createdAt)} + </time> + </header> + <p className="text-sm mt-2">{comment.body}</p> + // highlight-start + {hasRole('moderator') && ( + <button + type="button" + onClick={moderate} + className="absolute bottom-2 right-2 bg-red-500 text-xs rounded text-white px-2 py-1" + > + Delete + </button> + )} + // highlight-end + </div> + ) +} + +export default Comment +``` + +</TabItem> +</Tabs> + +![image](https://user-images.githubusercontent.com/300/101229168-c75edb00-3653-11eb-85f0-6eb61af7d4e6.png) + +So if the user has the "moderator" role, render the delete button. If you log out and back in as the admin, or if you log out completely, you'll see the delete button go away. When logged out (that is, `currentUser === null`) `hasRole()` will always return `false`. + +What should we put in place of the `// TODO` note we left ourselves? A GraphQL mutation that deletes a comment, of course. Thanks to our forward-thinking earlier we already have a `deleteComment()` service function and GraphQL mutation ready to go. + +And due to the nice encapsulation of our **Comment** component we can make all the required web-site changes in this one component: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.jsx" +// highlight-next-line +import { useMutation } from '@redwoodjs/web' + +import { useAuth } from 'src/auth' + +// highlight-next-line +import { QUERY as CommentsQuery } from 'src/components/CommentsCell' + +// highlight-start +const DELETE = gql` + mutation DeleteCommentMutation($id: Int!) { + deleteComment(id: $id) { + postId + } + } +` +// highlight-end + +const formattedDate = (datetime) => { + const parsedDate = new Date(datetime) + const month = parsedDate.toLocaleString('default', { month: 'long' }) + return `${parsedDate.getDate()} ${month} ${parsedDate.getFullYear()}` +} + +const Comment = ({ comment }) => { + const { hasRole } = useAuth() + // highlight-start + const [deleteComment] = useMutation(DELETE, { + refetchQueries: [ + { + query: CommentsQuery, + variables: { postId: comment.postId }, + }, + ], + }) + // highlight-end + + const moderate = () => { + if (confirm('Are you sure?')) { + // highlight-start + deleteComment({ + variables: { id: comment.id }, + }) + // highlight-end + } + } + + return ( + <div className="bg-gray-200 p-8 rounded-lg relative"> + <header className="flex justify-between"> + <h2 className="font-semibold text-gray-700">{comment.name}</h2> + <time className="text-xs text-gray-500" dateTime={comment.createdAt}> + {formattedDate(comment.createdAt)} + </time> + </header> + <p className="text-sm mt-2">{comment.body}</p> + {hasRole('moderator') && ( + <button + type="button" + onClick={moderate} + className="absolute bottom-2 right-2 bg-red-500 text-xs rounded text-white px-2 py-1" + > + Delete + </button> + )} + </div> + ) +} + +export default Comment +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.tsx" +// highlight-next-line +import { useMutation } from '@redwoodjs/web' + +import { useAuth } from 'src/auth' + +// highlight-next-line +import { QUERY as CommentsQuery } from 'src/components/CommentsCell' + +// highlight-next-line +import type { Comment as IComment } from 'types/graphql' + +// highlight-start +const DELETE = gql` + mutation DeleteCommentMutation($id: Int!) { + deleteComment(id: $id) { + postId + } + } +` +// highlight-end + +const formattedDate = (datetime: ConstructorParameters<typeof Date>[0]) => { + const parsedDate = new Date(datetime) + const month = parsedDate.toLocaleString('default', { month: 'long' }) + return `${parsedDate.getDate()} ${month} ${parsedDate.getFullYear()}` +} + +interface Props { + // highlight-next-line + comment: Pick<IComment, 'postId' | 'id' | 'name' | 'createdAt' | 'body'> +} + +const Comment = ({ comment }: Props) => { + const { hasRole } = useAuth() + // highlight-start + const [deleteComment] = useMutation(DELETE, { + refetchQueries: [ + { + query: CommentsQuery, + variables: { postId: comment.postId }, + }, + ], + }) + // highlight-end + + const moderate = () => { + if (confirm('Are you sure?')) { + // highlight-start + deleteComment({ + variables: { id: comment.id }, + }) + // highlight-end + } + } + + return ( + <div className="bg-gray-200 p-8 rounded-lg relative"> + <header className="flex justify-between"> + <h2 className="font-semibold text-gray-700">{comment.name}</h2> + <time className="text-xs text-gray-500" dateTime={comment.createdAt}> + {formattedDate(comment.createdAt)} + </time> + </header> + <p className="text-sm mt-2">{comment.body}</p> + {hasRole('moderator') && ( + <button + type="button" + onClick={moderate} + className="absolute bottom-2 right-2 bg-red-500 text-xs rounded text-white px-2 py-1" + > + Delete + </button> + )} + </div> + ) +} + +export default Comment +``` + +</TabItem> +</Tabs> + +We'll also need to update the `CommentsQuery` we're importing from `CommentsCell` to include the `postId` field, since we are relying on it to perform the `refetchQuery` after a successful deletion: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/CommentsCell/CommentsCell.jsx" +import Comment from 'src/components/Comment' + +export const QUERY = gql` + query CommentsQuery($postId: Int!) { + comments(postId: $postId) { + id + name + body + // highlight-next-line + postId + createdAt + } + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/CommentsCell/CommentsCell.tsx" +import Comment from 'src/components/Comment' + +export const QUERY = gql` + query CommentsQuery($postId: Int!) { + comments(postId: $postId) { + id + name + body + // highlight-next-line + postId + createdAt + } + } +` +``` + +</TabItem> +</Tabs> + +Click **Delete** (as a moderator) and the comment should be removed! + +Ideally we'd have both versions of this component (with and without the "Delete" button) present in Storybook so we can iterate on the design. But there's no such thing as "logging in" in Storybook and our code depends on being logged in so we can check our roles...how will that work? + +### Mocking currentUser for Storybook + +Similar to how we can mock GraphQL calls in Storybook, we can mock user authentication and authorization functionality in a story. + +In `Comment.stories.{jsx,tsx}` let's add a second story for the moderator view of the component (and rename the existing one for clarity): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.stories.jsx" +import Comment from './Comment' + +// highlight-next-line +export const defaultView = () => { + return ( + <Comment + comment={{ + id: 1, + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z', + // highlight-next-line + postId: 1 + }} + /> + ) +} + +// highlight-start +export const moderatorView = () => { + return ( + <Comment + comment={{ + id: 1, + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z', + postId: 1, + }} + /> + ) +} +// highlight-end + +export default { title: 'Components/Comment' } +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.stories.ts" +import Comment from './Comment' + +// highlight-next-line +export const defaultView = () => { + return ( + <Comment + comment={{ + id: 1, + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z', + // highlight-next-line + postId: 1, + }} + /> + ) +} + +// highlight-start +export const moderatorView = () => { + return ( + <Comment + comment={{ + id: 1, + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z', + postId: 1, + }} + /> + ) +} +// highlight-end + +export default { title: 'Components/Comment' } +``` + +</TabItem> +</Tabs> + +The **moderatorView** story needs to have a user available that has the moderator role. We can do that with the `mockCurrentUser` function: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.stories.jsx" +export const moderatorView = () => { + // highlight-start + mockCurrentUser({ + id: 1, + email: 'moderator@moderator.com', + roles: 'moderator', + }) + // highlight-end + + return ( + <Comment + comment={{ + id: 1, + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z', + postId: 1, + }} + /> + ) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.stories.tsx" +export const moderatorView = () => { + // highlight-start + mockCurrentUser({ + id: 1, + email: 'moderator@moderator.com', + roles: 'moderator', + }) + // highlight-end + + return ( + <Comment + comment={{ + id: 1, + name: 'Rob Cameron', + body: 'This is the first comment!', + createdAt: '2020-01-01T12:34:56Z', + postId: 1, + }} + /> + ) +} +``` + +</TabItem> +</Tabs> + +:::info Where did `mockCurrentUser()` come from? + +Similar to `mockGraphQLQuery()` and `mockGraphQLMutation()`, `mockCurrentUser()` is a global available in Storybook automatically, no need to import. + +::: + +`mockCurrentUser()` accepts an object and you can put whatever you want in there (it should be similar to what you return in `getCurrentUser()` in `api/src/lib/auth.{js,ts}`). But since we want `hasRole()` to work properly then the object must have a `roles` key that is a string or an array of strings. + +Check out **Comment** in Storybook and you should see two stories for Comment, one with a "Delete" button and one without! + +![image](https://user-images.githubusercontent.com/300/153970232-0224a6ab-fb86-4438-ae75-2e74e32aabc1.png) + +### Mocking currentUser for Jest + +We can use the same `mockCurrentUser()` function in our Jest tests as well. Let's check that the word "Delete" is present in the component's output when the user is a moderator, and that it's not present if the user has any other role (or no role): + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```jsx title="web/src/components/Comment/Comment.test.jsx" +// highlight-next-line +import { render, screen, waitFor } from '@redwoodjs/testing' + +import Comment from './Comment' + +// highlight-start +const COMMENT = { + name: 'John Doe', + body: 'This is my comment', + createdAt: '2020-01-02T12:34:56Z', +} +// highlight-end + +describe('Comment', () => { + it('renders successfully', () => { + // highlight-next-line + render(<Comment comment={COMMENT} />) + + // highlight-start + expect(screen.getByText(COMMENT.name)).toBeInTheDocument() + expect(screen.getByText(COMMENT.body)).toBeInTheDocument() + // highlight-end + const dateExpect = screen.getByText('2 January 2020') + expect(dateExpect).toBeInTheDocument() + expect(dateExpect.nodeName).toEqual('TIME') + // highlight-next-line + expect(dateExpect).toHaveAttribute('datetime', COMMENT.createdAt) + }) + + // highlight-start + it('does not render a delete button if user is logged out', async () => { + render(<Comment comment={COMMENT} />) + + await waitFor(() => + expect(screen.queryByText('Delete')).not.toBeInTheDocument() + ) + }) + + it('renders a delete button if the user is a moderator', async () => { + mockCurrentUser({ + id: 1, + email: 'moderator@moderator.com', + roles: 'moderator', + }) + render(<Comment comment={COMMENT} />) + + await waitFor(() => expect(screen.getByText('Delete')).toBeInTheDocument()) + }) + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```tsx title="web/src/components/Comment/Comment.test.tsx" +// highlight-next-line +import { render, screen, waitFor } from '@redwoodjs/testing' + +import Comment from './Comment' + +// highlight-start +const COMMENT = { + id: 1, + name: 'John Doe', + body: 'This is my comment', + createdAt: '2020-01-02T12:34:56Z', + postId: 1, +} +// highlight-end + +describe('Comment', () => { + it('renders successfully', () => { + // highlight-next-line + render(<Comment comment={COMMENT} />) + + // highlight-start + expect(screen.getByText(COMMENT.name)).toBeInTheDocument() + expect(screen.getByText(COMMENT.body)).toBeInTheDocument() + // highlight-end + const dateExpect = screen.getByText('2 January 2020') + expect(dateExpect).toBeInTheDocument() + expect(dateExpect.nodeName).toEqual('TIME') + // highlight-next-line + expect(dateExpect).toHaveAttribute('datetime', COMMENT.createdAt) + }) + + // highlight-start + it('does not render a delete button if user is logged out', async () => { + render(<Comment comment={COMMENT} />) + + await waitFor(() => + expect(screen.queryByText('Delete')).not.toBeInTheDocument() + ) + }) + + it('renders a delete button if the user is a moderator', async () => { + mockCurrentUser({ + id: 1, + email: 'moderator@moderator.com', + roles: 'moderator', + }) + + render(<Comment comment={COMMENT} />) + + await waitFor(() => expect(screen.getByText('Delete')).toBeInTheDocument()) + }) + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +We moved the default `comment` object to a constant `COMMENT` and then used that in all tests. We also needed to add `waitFor()` since the `hasRole()` check in the Comment itself actually executes some GraphQL calls behind the scenes to figure out who the user is. The test suite makes mocked GraphQL calls, but they're still asynchronous and need to be waited for. If you don't wait, then `currentUser` will be `null` when the test starts, and Jest will be happy with that result. But we won't—we need to wait for the actual value from the GraphQL call. + +:::warning Seeing errors in your test suite? + +We added fields to the database and sometimes the test runner doesn't realize this. You may need to restart it to get the test database migrated to match what's in `schema.prisma`. Press `q` or `Ctrl-C` in your test runner if it's still running, then: + +```bash +yarn rw test +``` + +The suite should automatically run the tests for `Comment` and `CommentCell` at the very least, and maybe a few more if you haven't committed your code to git in a while. + +::: + +:::info + +This isn't the most robust test that's ever been written: what if the sample text of the comment itself had the word "Delete" in it? Whoops! But you get the idea—find some meaningful difference in each possible render state of a component and write a test that verifies its presence (or lack of presence). + +Think of each conditional in your component as another branch you need to have a test for. In the worst case, each conditional adds 2<sup>n</sup> possible render states. If you have three conditionals that's 2<sup>3</sup> (eight) possible combinations of output and to be safe you'll want to test them all. When you get yourself into this scenario it's a good sign that it's time to refactor and simplify your component. Maybe into subcomponents where each is responsible for just one of those conditional outputs? You'll still need the same number of total tests, but each component and its test is now operating in isolation and making sure it does one thing, and does it well. This has benefits for your mental model of the codebase as well. + +It's like finally organizing that junk drawer in the kitchen—you still have the same number of things when you're done, but each thing is in its own space and therefore easier to remember where it lives and makes it easier to find next time. + +::: + +You may see the following message output during the test run: + +```bash +console.error + Missing field 'postId' while writing result { + "id": 1, + "name": "Rob Cameron", + "body": "First comment", + "createdAt": "2020-01-02T12:34:56Z" + } +``` + +If you take a look at `CommentsCell.mock.{js,ts}` you'll see the mock data there used during the test. We're requesting `postId` in the `QUERY` in `CommentsCell` now, but this mock doesn't return it! We can fix that by simply adding that field to both mocks: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="web/src/components/CommentsCell/CommentsCell.mock.js" +export const standard = () => ({ + comments: [ + { + id: 1, + name: 'Rob Cameron', + body: 'First comment', + // highlight-next-line + postId: 1, + createdAt: '2020-01-02T12:34:56Z', + }, + { + id: 2, + name: 'David Price', + body: 'Second comment', + // highlight-next-line + postId: 2, + createdAt: '2020-02-03T23:00:00Z', + }, + ], +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```javascript title="web/src/components/CommentsCell/CommentsCell.mock.ts" +export const standard = () => ({ + comments: [ + { + id: 1, + name: 'Rob Cameron', + body: 'First comment', + // highlight-next-line + postId: 1, + createdAt: '2020-01-02T12:34:56Z', + }, + { + id: 2, + name: 'David Price', + body: 'Second comment', + // highlight-next-line + postId: 2, + createdAt: '2020-02-03T23:00:00Z', + }, + ], +}) +``` + +</TabItem> +</Tabs> + +We don't do anything with the actual post data in our tests, so there's no need to mock out the entire post, just a `postId` will suffice. + +### Roles on the API Side + +Remember: never trust the client! We need to lock down the backend to be sure that someone can't discover our `deleteComment` GraphQL resource and start deleing comments willy nilly. + +Recall in Part 1 of the tutorial we used a [directive](../../directives.md) `@requireAuth` to be sure that someone was logged in before allowing them to access a given GraphQL query or mutation. It turns out that `@requireAuth` can take an optional `roles` argument: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```graphql title="api/src/graphql/comments.sdl.js" +export const schema = gql` + type Comment { + id: Int! + name: String! + body: String! + post: Post! + postId: Int! + createdAt: DateTime! + } + + type Query { + comments(postId: Int!): [Comment!]! @skipAuth + } + + input CreateCommentInput { + name: String! + body: String! + postId: Int! + } + + input UpdateCommentInput { + name: String + body: String + postId: Int + } + + type Mutation { + createComment(input: CreateCommentInput!): Comment! @skipAuth + // highlight-next-line + deleteComment(id: Int!): Comment! @requireAuth(roles: "moderator") + } +` +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```graphql title="api/src/graphql/comments.sdl.ts" +export const schema = gql` + type Comment { + id: Int! + name: String! + body: String! + post: Post! + postId: Int! + createdAt: DateTime! + } + + type Query { + comments(postId: Int!): [Comment!]! @skipAuth + } + + input CreateCommentInput { + name: String! + body: String! + postId: Int! + } + + input UpdateCommentInput { + name: String + body: String + postId: Int + } + + type Mutation { + createComment(input: CreateCommentInput!): Comment! @skipAuth + // highlight-next-line + deleteComment(id: Int!): Comment! @requireAuth(roles: "moderator") + } +` +``` + +</TabItem> +</Tabs> + +Now a raw GraphQL query to the `deleteComment` mutation will result in an error if the user isn't logged in as a moderator. + +This check only prevents access to `deleteComment` via GraphQL. What if you're calling one service from another? If we wanted the same protection within the service itself, we could call `requireAuth` directly: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.js" +// highlight-next-line +import { requireAuth } from 'src/lib/auth' +import { db } from 'src/lib/db' + +// ... + +export const deleteComment = ({ id }) => { + // highlight-next-line + requireAuth({ roles: 'moderator' }) + return db.comment.delete({ + where: { id }, + }) +} +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.ts" +// highlight-next-line +import { requireAuth } from 'src/lib/auth' +import { db } from 'src/lib/db' + +// ... + +export const deleteComment = ({ id }) => { + // highlight-next-line + requireAuth({ roles: 'moderator' }) + return db.comment.delete({ + where: { id }, + }) +} +``` + +</TabItem> +</Tabs> + +We'll need a test to go along with that functionality. How do we test `requireAuth()`? The api side also has a `mockCurrentUser()` function which behaves the same as the one on the web side: + +<Tabs groupId="js-ts"> +<TabItem value="js" label="JavaScript"> + +```javascript title="api/src/services/comments/comments.test.js" +// highlight-next-line +import { AuthenticationError, ForbiddenError } from '@redwoodjs/graphql-server' + +import { db } from 'src/lib/db' + +// highlight-next-line +import { comments, createComment, deleteComment } from './comments' + +describe('comments', () => { + scenario( + 'returns all comments for a single post from the database', + async (scenario) => { + const result = await comments({ postId: scenario.comment.jane.postId }) + const post = await db.post.findUnique({ + where: { id: scenario.comment.jane.postId }, + include: { comments: true }, + }) + expect(result.length).toEqual(post.comments.length) + } + ) + + scenario('postOnly', 'creates a new comment', async (scenario) => { + const comment = await createComment({ + input: { + name: 'Billy Bob', + body: 'What is your favorite tree bark?', + postId: scenario.post.bark.id, + }, + }) + + expect(comment.name).toEqual('Billy Bob') + expect(comment.body).toEqual('What is your favorite tree bark?') + expect(comment.postId).toEqual(scenario.post.bark.id) + expect(comment.createdAt).not.toEqual(null) + }) + + // highlight-start + scenario('allows a moderator to delete a comment', async (scenario) => { + mockCurrentUser({ roles: ['moderator'] }) + + const comment = await deleteComment({ + id: scenario.comment.jane.id, + }) + expect(comment.id).toEqual(scenario.comment.jane.id) + + const result = await comments({ postId: scenario.comment.jane.postId }) + expect(result.length).toEqual(0) + }) + + scenario( + 'does not allow a non-moderator to delete a comment', + async (scenario) => { + mockCurrentUser({ roles: 'user' }) + + expect(() => + deleteComment({ + id: scenario.comment.jane.id, + }) + ).toThrow(ForbiddenError) + } + ) + + scenario( + 'does not allow a logged out user to delete a comment', + async (scenario) => { + mockCurrentUser(null) + + expect(() => + deleteComment({ + id: scenario.comment.jane.id, + }) + ).toThrow(AuthenticationError) + } + ) + // highlight-end +}) +``` + +</TabItem> +<TabItem value="ts" label="TypeScript"> + +```ts title="api/src/services/comments/comments.test.ts" +// highlight-next-line +import { AuthenticationError, ForbiddenError } from '@redwoodjs/graphql-server' + +import { db } from 'src/lib/db' + +// highlight-next-line +import { comments, createComment, deleteComment } from './comments' + +import type { PostOnlyScenario, StandardScenario } from './comments.scenarios' + +describe('comments', () => { + scenario( + 'returns all comments for a single post from the database', + async (scenario) => { + const result = await comments({ postId: scenario.comment.jane.postId }) + const post = await db.post.findUnique({ + where: { id: scenario.comment.jane.postId }, + include: { comments: true }, + }) + expect(result.length).toEqual(post.comments.length) + } + ) + + scenario( + 'postOnly', + 'creates a new comment', + async (scenario: PostOnlyScenario) => { + const comment = await createComment({ + input: { + name: 'Billy Bob', + body: 'What is your favorite tree bark?', + postId: scenario.post.bark.id, + }, + }) + + expect(comment.name).toEqual('Billy Bob') + expect(comment.body).toEqual('What is your favorite tree bark?') + expect(comment.postId).toEqual(scenario.post.bark.id) + expect(comment.createdAt).not.toEqual(null) + } + ) + + // highlight-start + scenario( + 'allows a moderator to delete a comment', + async (scenario: StandardScenario) => { + mockCurrentUser({ + roles: 'moderator', + id: 1, + email: 'moderator@moderator.com', + }) + + const comment = await deleteComment({ + id: scenario.comment.jane.id, + }) + expect(comment.id).toEqual(scenario.comment.jane.id) + + const result = await comments({ postId: scenario.comment.jane.postId }) + expect(result.length).toEqual(0) + } + ) + + scenario( + 'does not allow a non-moderator to delete a comment', + async (scenario: StandardScenario) => { + mockCurrentUser({ roles: 'user', id: 1, email: 'user@user.com' }) + + expect(() => + deleteComment({ + id: scenario.comment.jane.id, + }) + ).toThrow(ForbiddenError) + } + ) + + scenario( + 'does not allow a logged out user to delete a comment', + async (scenario: StandardScenario) => { + mockCurrentUser(null) + + expect(() => + deleteComment({ + id: scenario.comment.jane.id, + }) + ).toThrow(AuthenticationError) + } + ) + // highlight-end +}) +``` + +</TabItem> +</Tabs> + +Our first scenario checks that we get the deleted comment back from a call to `deleteComment()`. The second expectation makes sure that the comment was actually removed from the database: trying to find a comment with that `id` now returns an empty array. If this was the only test we had it could lull us into a false sense of security—what if the user had a different role, or wasn't logged in at all? + +We aren't testing those cases here, so we add two more tests: one for if the user has a role other than "moderator" and one if the user isn't logged in at all. These two cases also raise different errors, so it's nice to see that codified here. + +### Last Word on Roles + +Having a role like "admin" implies that they can do everything...shouldn't they be able to delete comments as well? Right you are! There are two things we can do here: + +1. Add "admin" to the list of roles in the `hasRole()` checks in components, `@requireAuth` directive, and `requireAuth()` check in services +2. Don't make any changes in the code, just give the user in the database additional roles—so admins will also have the "moderator" role in addition to "admin" + +By virtue of the name "admin" it really feels like someone should only have that one single role and be able to do everything. So in this case it might feel better to add "admin" to `hasRole()` and `requireAuth()`. + +But, if you wanted to be more fine-grained with your roles then maybe the "admin" role should really be called "author". That way it makes it clear they only author posts, and if you want someone to be able to do both actions you can explicitly give them the "moderator" role in addition to "author." + +Managing roles can be a tricky thing to get right. Spend a little time up front thinking about how they'll interact and how much duplication you're willing to accept in your role-based function calls on the site. If you see yourself constantly adding multiple roles to `hasRole()` and `requireAuth()` that may be an indication that it's time to add a single, new role that includes those abilities and remove that duplication in your code. diff --git a/docs/versioned_docs/version-7.0/tutorial/foreword.md b/docs/versioned_docs/version-7.0/tutorial/foreword.md new file mode 100644 index 000000000000..7fd872c1adfb --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/foreword.md @@ -0,0 +1,86 @@ +# RedwoodJS: The Tutorial + +Welcome to Redwood! If you haven't yet, check out the [Redwood README](https://github.com/redwoodjs/redwood/blob/main/README.md) to get a little background on why we created Redwood and the problems it's meant to solve. Redwood brings several existing technologies together for the first time into what we think is the future of database-backed single page applications. + +:::info Sign up for tutorial reminders + +There's a new JavaScript framework coming out every week, we know it can be hard to keep up. If you'd like some non-spammy emails reminding you to go through the tutorial, give us your email below: + +<MailchimpForm /> + +::: + +In this tutorial we're going to build a blog engine. In reality a blog is probably not the ideal candidate for a Redwood app: blog articles can be stored in a CMS and statically generated to HTML files and served as flat files from a CDN (the classic [Jamstack](https://jamstack.org/) use case). But as most developers are familiar with a blog, and it uses all of the features we want to demonstrate, we decided to build one anyway. + +If you went through an earlier version of this tutorial you may remember it being split into parts 1 and 2. That was an artifact of the fact that most features demonstrated in part 2 didn't exist in the framework when part 1 was written. Once they were added we created part 2 to contain just those new features. Now that everything is integrated and working well we've moved each section into logically grouped chapters. + +## Callouts + +You'll find some callouts throughout the text to draw your attention: + +:::tip + +They might look like this... + +::: + +:::warning + +or sometimes like this... + +::: + +:::danger + +or maybe even like this! + +::: + +It's usually something that goes into more detail about a specific point, refers you to further reading, or calls out something important you should know. Here comes one now: + +:::info + +This tutorial assumes you are using version 7.0.0 or greater of RedwoodJS. + +::: + +Let's get started! + +export const MailchimpForm = () => ( + <> + <div id="mc_embed_signup"> + <form + action="https://thedavidprice.us19.list-manage.com/subscribe/post?u=0c27354a06a7fdf4d83ce07fc&id=a94da1950a" + method="post" + name="mc-embedded-subscribe-form" + target="_blank" + > + <div style={{ position: 'absolute', left: '-5000px' }} aria-hidden="true"> + <input + type="text" + name="b_0c27354a06a7fdf4d83ce07fc_a94da1950a" + tabIndex="-1" + defaultValue="" + /> + </div> + <div style={{ display: 'flex', alignItems: 'center', justify: 'center' }}> + <input + type="email" + defaultValue="" + placeholder="Email Address" + required={true} + name="EMAIL" + style={{ width: '100%', padding: '0.75rem', border: '1px solid #cccccc', borderRadius: '0.25rem', fontSize: '100%' }} + /> + <input + type="submit" + value="Subscribe" + name="subscribe" + style={{ cursor: 'pointer', marginLeft: '0.5rem', padding: '0.8rem 2rem', fontSize: '100%', fontWeight: 'bold', color: '#ffffff', backgroundColor: '#4cb3d4', border: 'none', borderRadius: '0.25rem' }} + /> + </div> + </form> + </div> + </> +) + diff --git a/docs/versioned_docs/version-7.0/tutorial/intermission.md b/docs/versioned_docs/version-7.0/tutorial/intermission.md new file mode 100644 index 000000000000..793730157af2 --- /dev/null +++ b/docs/versioned_docs/version-7.0/tutorial/intermission.md @@ -0,0 +1,63 @@ +# Intermission + +Let's take a break! If you really went through the whole tutorial so far: congratulations! If you just skipped ahead to this page to try and get a free congratulations: tsk, tsk! + +That was potentially a lot of new concepts to absorb all at once so don't feel bad if all of it didn't fully sink in. React, GraphQL, Prisma, serverless functions...so many things! Even those of us working on the framework are heading over to Google multiple times per day to figure out how to get these things to work together. + +As an anonymous Twitter user once mused: "If you enjoy switching between feeling like the smartest person on earth and the dumbest person in history all in the same day, programming may be the career for you!" + +## What's Next? + +Starting in Chapter 5 We'll look at Storybook and Jest and build a new feature for the blog: comments. Storybook introduces a new way to build components. We'll also add tests and run them with Jest to make sure things keep working as we expect. We cover authorization as well by giving a special role to comment moderators. + +If you've been through the tutorial so far, you can pick up where you left off and continue from here with Chapter 5. However, going forward we assume a complete test suite and several Storybook components, which we didn't get a chance to build in the first half. To get to the same starting point as the beginning of Chapter 5 you can start from this [example repo](https://github.com/redwoodjs/redwood-tutorial) (which we highly recommend) that picks up at the end of chapter 4, but already has additional styling, a starting test suite, and several Storybook components already built for you. + +### Using Your Current Codebase + +If you want to use the same CSS classes we use in the following examples you'll need to add Tailwind to your repo: + +```bash +yarn rw setup ui tailwindcss +``` + +However, none of the screenshots that follow will come anywhere close to what you're seeing in your browser (except for those isolated components you build in Storybook) so you may want to just start with the [example repo](https://github.com/redwoodjs/redwood-tutorial). You'll also be missing out on a good starting test suite that we've added! + +If you're *still* set on continuing with your own repo, and you deployed to a service like Netlify, you would have changed the database provider in `schema.prisma` to `postgresql`. If that's the case then make sure your local development environment has changed over as well. Check out the [Local Postgres Setup](../local-postgres-setup.md) for assistance. If you stick with the [example repo](https://github.com/redwoodjs/redwood-tutorial) instead, you can go ahead with good ol' SQLite (what we were using locally to build everything in the first half). + +Once you're ready, start up the dev server: + +```bash +yarn rw dev +``` + +### Using the Example Repo (Recommended) + +If you haven't been through the first tutorial, or maybe you went through it on an older version of Redwood (anything pre-0.41) you can clone [this repo](https://github.com/redwoodjs/redwood-tutorial) which contains everything built so far and also adds a little styling so it isn't quite so...tough to look at. The example repo includes [TailwindCSS](https://tailwindcss.com) to style things up and adds a `<div>` or two to give us some additional hooks to hang styling on. + +:::warning The TypeScript version of the Example Repo is currently in progress + +If you want to complete the tutorial in TypeScript, continue with your own repo, making any necessary edits. Don't worry, the remainder of the tutorial continues to offer both TypeScript and JavaScript example code changes. + +::: + +```bash +git clone https://github.com/redwoodjs/redwood-tutorial +cd redwood-tutorial +yarn install +yarn rw prisma migrate dev +yarn rw g secret +``` + +That'll check out the repo, install all the dependencies, create your local database (SQLite) and fill it with a few blog posts. After that last command (`yarn rw g secret`) you'll need to copy the string that's output and add it to a file `.env` in the root of your project: + +```bash title=".env" +SESSION_SECRET=JV2kA48ZU4FnLHwqaydy9beJ99qy4VgWXPkvsaw3xE2LGyuSur2dVq2PsPkPfygr +``` + +This is the encryption key for the secure cookies used in [dbAuth](/docs/tutorial/chapter4/authentication#session-secret). + +Now just run `yarn rw dev` to start your development server. Your browser should open to a fresh new blog app: + +![image](https://user-images.githubusercontent.com/300/101423176-54e93780-38ad-11eb-9230-ba8557764eb4.png) + +Take a bathroom break and grab a fresh beverage, then let's get on with it! diff --git a/docs/versioned_docs/version-7.0/typescript/generated-types.md b/docs/versioned_docs/version-7.0/typescript/generated-types.md new file mode 100644 index 000000000000..644cc7b39bd4 --- /dev/null +++ b/docs/versioned_docs/version-7.0/typescript/generated-types.md @@ -0,0 +1,203 @@ +--- +description: A look at automatic type generation in Redwood +--- + +# Generated Types + +To add to the TypeScript (and JavaScript!) experience, Redwood generates types for you. +These generated types not only include your GraphQL operations, but also your named routes, Cells, scenarios, and tests. + +When you run `yarn rw dev`, the CLI watches files for changes and triggers type generation automatically, but you can trigger it manually too: + +```shell +yarn rw g types +# or +# yarn redwood generate types +``` + +:::tip Getting errors trying to generate types? + +If you're getting errors trying to generate types, it's worth checking the GraphQL operations in your Cells and SDLs. +Make sure that they're syntactically valid, and that every query and mutation on the web side is defined in an `*.sdl.js` file on the api side. + +::: + +If you're curious, you can find the generated types in the `.redwood/types`, `web/types/graphql.d.ts`, and `api/types/graphql.d.ts` directories. Broadly speaking, Redwood generates the following types: + +1. ["mirror" types](https://www.typescriptlang.org/docs/handbook/module-resolution.html#virtual-directories-with-rootdirs) for your components, pages, layouts, etc. on the web side, and for your services, lib, etc. on the api side +2. types based on your queries and mutations on the web side (in `web/types/graphql.d.ts`) +3. types for resolvers based on your SDLs on the api side (in `api/types/graphql.d.ts`) +4. types for testing, `currentUser`, etc. +5. types for certain functions like `routes.pageName()` and `useAuth()` + +## CurrentUser + +If you've setup auth, the type for the current user on both the web and the api side gets automatically "inferred" from the `getCurrentUser` function in `api/src/lib/auth.ts`. + +For example, if you specify the return type on `getCurrentUser` as... + +```ts title="api/src/lib/auth.ts" +interface MyCurrentUser { + id: string, + roles: string[], + email: string, + projectId: number +} + +const getCurrentUser = ({decoded}): MyCurrentUser => { + //.. +} +``` + +The types for both `useAuth().currentUser` on the web side and `context.currentUser` on the api side will be the same—the `MyCurrentUser` interface. + +:::info Type of `context.currentUser` unknown? +This usually happens when you don't have the various generated and utility types in your project. +Run `yarn rw g types`, and just to be sure, restart your TS server. +In VSCode, you can do this by running "TypeScript: Restart TS server" in the command palette (Cmd+Shift+P on Mac, Ctrl+Shift+P on Windows) +::: + +## Query and Mutation types + +Let's say you have a query in a Cell that looks like this: + +```js title="web/src/components/BlogPostCell.tsx" +export const QUERY = gql` + # 👇 Make sure to name your GraphQL operations + query FindBlogPostQuery($id: Int!) { + blogPost: post(id: $id) { + title + body + } + } +` +``` + +Redwood generates types for both the data returned from the query and the query's variables. +These generated types will use the query's name—in this case, `FindBlogPostQuery`—so you can import them like this: + +```ts title="web/src/components/BlogPostCell.tsx" +import type { FindBlogPostQuery, FindBlogPostQueryVariables } from 'types/graphql' +``` + +`FindBlogPostQuery` is the type of the data returned from the query (`{ title: string, body: string }`) and `FindBlogPostQueryVariables` is the type of the query's variables (`{ id: number }`). + +The import statement's specifier, `'types/graphql'`, is a [mapped path](https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping). First, TypeScript will look for the types in `web/types/graphql.d.ts`; if they're not there, it'll check `types/graphql.d.ts`. Redwood only automatically generates the former. For the latter, see [sharing types between sides](./introduction.md#sharing-types-between-sides). + +But don't worry too much. If you use the generators, they template all of this for you! + +## Resolver Types + +Generated Services include types for query and mutation resolvers: + +```ts title="api/src/services/posts.ts" +// highlight-next-line +import type { QueryResolvers, MutationResolvers } from 'types/graphql' + +import { db } from 'src/lib/db' + +// highlight-next-line +export const posts: QueryResolvers['posts'] = () => { + return db.post.findMany() +} + +// highlight-next-line +export const post: QueryResolvers['post'] = ({ id }) => { + return db.post.findUnique({ + where: { id }, + }) +} +``` + +These types help you by making sure you're returning an object in the shape of what you've defined in your SDL. If your Prisma model name matches the SDL type name, it'll be "mapped" i.e. the resolvers will expect you to return the Prisma type. + +Note that these types expect you to return the _complete_ type that you've defined in your Prisma schema. But you can just return the result of the Prisma query, and not have to worry about how, for example, a DateTime in Prisma maps to a String in GraphQL. + +If the type doesn't match your Prisma models (by name), the TypeScript type will be generated based only on your definition in the SDL. So if you wish to return other properties that don't exist in your Prisma model type i.e. augment the prisma type with additional fields, you can change the type to a custom one in your SDL. + +The resolver types help you by making sure you're returning an object in the shape of what you've defined in your SDL. + +:::note A note on union types + +Lets say that in one of your SDLs, you define a union type + +```graphql +type OutOfStock { + message: String! +} + +// highlight-next-line +union CandyResult = Candy | OutOfStock + +type Query { + candy(id: String!): CandyResult @skipAuth +} +``` + +These types will also be handled automatically. But if you're returning a different Prisma model (instead of something like the generic `OutOfStock` type we have here, which is just a message), you may need to write your own resolver type, as the type generator won't know how to map the Prisma type to the GraphQL return type. + +::: + +## Under the Hood + +Redwood uses [GraphQL Code Generator](https://www.graphql-code-generator.com) (aka graphql-codegen) to generate types for your GraphQL operations and SDLs. It's even configured to use the types from your generated Prisma Client, to make sure that your resolvers are strongly typed! + +### Customizing GraphQL Code Generation + +While the default settings are configured so that things just work️, you can customize them to your liking by adding a `./codegen.yml` file to the root of your project. + +:::info Curious about the defaults? + +You can find them [here](https://github.com/redwoodjs/redwood/blob/main/packages/internal/src/generate/graphqlCodeGen.ts) in Redwood's source. Look for the `generateTypeDefGraphQLWeb` and `generateTypeDefGraphQLApi` functions. + +::: + +For example, adding this `codegen.yml` to the root of your project will transform the names of the generated types to UPPERCASE: + +```yml title="codegen.yml" +config: + namingConvention: + typeNames: change-case-all#upperCase +``` + +You can configure graphql-codegen in a number of different ways: `codegen.yml`, `codegen.json`, or `codegen.js`. Even a `codegen` key in your root `package.json` will do. graphql-codegen uses [cosmiconfig](https://github.com/davidtheclark/cosmiconfig#cosmiconfig) under the hood—take a look at their docs if you want to know more. + +For completeness, [here's the docs](https://www.graphql-code-generator.com/docs/config-reference/config-field) on configuring GraphQL Code Generator. Currently, Redwood only supports the root level `config` option. + +## Experimental SDL Code Generation + +There is also an experimental code generator based on [sdl-codegen](https://github.com/sdl-codegen/sdl-codegen) available. sdl-codegen is a fresh implementation of code generation for service files, built with Redwood in mind. It is currently in opt-in and can be enabled by setting the `experimentalSdlCodeGen` flag to `true` in your `redwood.toml` file: + +```toml title="redwood.toml" +[experimental] + useSDLCodeGenForGraphQLTypes = true +``` + +Running `yarn rw g types` will generate types for your resolvers on a per-file basis, this feature can be paired with the optional eslint auto-fix rule to have types automatically applied to your resolvers in TypeScript service files by editing your root `package.json` with: + +```diff title="package.json" + "eslintConfig": { + "extends": "@redwoodjs/eslint-config", + "root": true, + "parserOptions": { + "warnOnUnsupportedTypeScriptVersion": false + }, ++ "overrides": [ ++ { ++ "files": [ ++ "api/src/services/**/*.ts" ++ ], ++ "rules": { ++ "@redwoodjs/service-type-annotations": "error" ++ } ++ } + ] + }, +``` + +:::tip Using VSCode? + +As a part of type generation, the extension [GraphQL: Language Feature Support](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql) configures itself based on the merged schema Redwood generates in `.redwood/schema.graphql`. +You can configure it further in `graphql.config.js` at the root of your project. + +::: diff --git a/docs/versioned_docs/version-7.0/typescript/introduction.md b/docs/versioned_docs/version-7.0/typescript/introduction.md new file mode 100644 index 000000000000..eb881419fac1 --- /dev/null +++ b/docs/versioned_docs/version-7.0/typescript/introduction.md @@ -0,0 +1,134 @@ +--- +title: TypeScript in Redwood +description: Getting started & Core Concepts +--- + +Redwood comes with full TypeScript support, and you don't have to give up any of the conveniences that Redwood offers to enjoy all the benefits of a type-safe codebase. + +## Getting Started + +### Starting a Redwood Project in TypeScript + +You can use the `--typescript` option on `yarn create redwood-app` to use TypeScript from the start: + +```shell +yarn create redwood-app my-redwood-app --typescript +``` + +### Converting a JavaScript Project to TypeScript + +Started your project in JavaScript but want to switch to TypeScript? +Start by using the `tsconfig` setup command: + +```shell +yarn rw setup tsconfig +``` + +This adds `tsconfig.json` files to both the web and the api side, telling VSCode that this's a TypeScript project. +(You can go ahead and remove the `jsconfig.json` files from both sides now.) + +You don't need to convert all your JavaScript files to TypeScript right away. +In fact, you probably shouldn't. +Do it incrementally. +Start by renaming your files from `.js` to `.ts`. (Or, if they have a React component, `.tsx`.) + +## Core Concepts + +### 1. Automatic types + +When you're developing in TypeScript, the Redwood CLI is your trusted companion—focus on writing code and it'll generate as many of the types as it can. +When you run `yarn rw dev`, the CLI watches files for changes so that it can generate types. +(More on this in the [Generated Types](/typescript/generated-types.md) doc.) + +But let's say that you don't have the dev server running, and are just coding and notice missing types. +You can always run `yarn rw g types` to make sure you have all the types you need. + +### 2. Use generators to learn about available utility types + +Let's say you generate a Cell using the command `yarn rw g cell Post`. If your project is in TypeScript, the generated files will contain a bunch of utility types (imported from `@redwoodjs/web`), as well as types specific to your project (imported from `types/graphql`). +You don't need to learn all the utility types up front, but they're documented in detail in the [Utility Types](/typescript/utility-types.md) doc when you're ready. + +### 3. Redwood won't force you to type everything + +The Redwood philosophy is to keep things as simple as possible at first. Redwood generates as much as possible, avoids forcing you to type every little detail, and doesn't have [strict mode](https://www.typescriptlang.org/tsconfig#strict) on by default. +Where needed (e.g. the [`DbAuthHandler`](/typescript/utility-types.md#dbauthhandleroptions)) you can make use of generics to be more specific with your types. + +But if you're comfortable with TypeScript and want that extra level of safety, take a look at our [Strict Mode](/typescript/strict-mode.md) doc. + +## A Few Useful Tips + +### Sharing Types between Sides + +To share types between sides: + +1. Put them in a directory called `types` at the root of your project (you may have to create this directory) +2. Restart your editor's TypeScript server. In VSCode, you can do this by running the "TypeScript: Restart TS server" command via the command palette (make sure you're in a `.js` or `.ts` file) + +### Running Type Checks + +Behind the scenes, Redwood actually uses Babel to transpile TypeScript. +This's why you're able to convert your project from JavaScript to TypeScript incrementally, but it also means that, strictly speaking, dev and build don't care about what the TypeScript compiler has to say. + +That's where the `type-check` command comes in: + +``` +yarn rw type-check +``` + +This runs `tsc` on your project and ensures that all the necessary generated types are generated first. Checkout the [CLI reference for type-check](cli-commands.md#type-check) + +### Using Alias Paths + +Alias paths are a mechanism that allows you to define custom shortcuts or aliases for import statements in your code. Instead of using relative or absolute paths to import modules or files, you can use these aliases to make your imports cleaner and more concise. + +Redwood comes with a great starting point by aliasing the `src` directory, but you can take this further by configuring your `tsconfig.json` file, your import paths could go from: + +```ts +// this really long path +import { CustomModal } from 'src/components/modules/admin/common/ui/CustomModal' + +// to this nicer one! +import { CustomModal } from '@adminUI/CustomModal' +``` + +Add you custom `@adminUI` alias to your `tsconfig.json` file: + +```json +{ + "compilerOptions": { +... + "paths": { + "src/*": ["./src/*", "../.redwood/types/mirror/api/src/*"], + + "@adminUI/*": [ + "./src/components/modules/admin/common/ui/*", + "../.redwood/types/mirror/web/src/components/modules/admin/common/ui/*" + ], + + "types/*": ["./types/*", "../types/*"], + "@redwoodjs/testing": ["../node_modules/@redwoodjs/testing/api"] + } + } +... +} +``` + +You might have noticed the `"../.redwood/types/mirror/web/src/components/modules/admin/common/ui/*"` path. I'm glad you did! + +When you build your project redwood will create a set of directories or a virtual directory called`.redwood`, [read more about this typescript feature here](https://www.typescriptlang.org/docs/handbook/module-resolution.html#virtual-directories-with-rootdirs). This directory contains types for te Cells, so there is no need for us to specify an index file. + +When you combine those two paths `.src/...` and `./.redwood/...` under an alias you can have shorter and cleaner import paths: + +```ts +// Instead of this 🥵 +import { CustomModal } from 'src/components/modules/admin/common/ui/CustomModal/CustomModal' + +// they could look like this ✨ +import { CustomModal } from '@adminUI/CustomModal' +``` + +#### Some benefits of using alias paths are + +1. **Improved code readability**, by abstracting complex directory hierarchies, and having meaningful names for your imports. +1. **Code maintainability**, aliases allow you to decouple your code from the file structure and more easily move files around, as they are not tied to the longer path. +1. **Reduce boilerplate**, no more `../../src/components/modules/admin/common/ui/` 😮‍💨 diff --git a/docs/versioned_docs/version-7.0/typescript/strict-mode.md b/docs/versioned_docs/version-7.0/typescript/strict-mode.md new file mode 100644 index 000000000000..221d7e6fe98b --- /dev/null +++ b/docs/versioned_docs/version-7.0/typescript/strict-mode.md @@ -0,0 +1,267 @@ +--- +description: TS Strict mode tips and tricks +--- + +# TypeScript Strict Mode + +Looks like you're ready to level up your TypeScript game! +Redwood supports [strict mode](https://www.typescriptlang.org/docs/handbook/2/basic-types.html#strictness), but doesn't enable it by default. +While strict mode gives you a lot more safety, it makes your code a bit more verbose and requires you to make small manual changes if you use the generators. + +## Enabling strict mode + +Enable strict mode by setting `strict` to true in `web/tsconfig.json` and `api/tsconfig.json`, and if you're using scripts in `scripts/tsconfig.json`: + +```json title="web/tsconfig.json, api/tsconfig.json, scripts/tsconfig.json" +{ + "compilerOptions": { + "noEmit": true, + "allowJs": true, + // highlight-next-line + "strict": true, + // ... + } + // ... +} +``` + +Redwood's type generator behaves a bit differently in strict mode, so now that you've opted in, make sure to generate types: + +``` +yarn rw g types +``` + +## Manual tweaks to generated code + +Now that you're in strict mode, there are some changes you need to make to get rid of those pesky red underlines! + +### `null` and `undefined` in Services + +One of the challenges in the GraphQL-Prisma world is the difference in the way they treats optionals: + +- for GraphQL, optional fields can be `null` +- but For Prisma, `null` is a value, and `undefined` means "do nothing" + +This is covered in detail in [Prisma's docs](https://www.prisma.io/docs/concepts/components/prisma-client/null-and-undefined), which we strongly recommend reading. +But the gist of it is that, for Prisma's create and update operations, you may have to make sure `null`s are converted to `undefined` from your GraphQL mutation inputs. You'll have to think carefully about the behaviour you want - if the client is expected to send null, and you expect those fields to be set to null, you can make the field nullable in your Prisma schema. Sending a null will mean removing that value, sending undefined will mean that the field won't be updated. + +For most cases however, you probably want to convert nulls to undefined - one way to do this is to use the `removeNulls` utility function from `@redwoodjs/api`: + +```ts title="api/src/services/users.ts" +// highlight-next-line +import { removeNulls } from "@redwoodjs/api" + +export const updateUser: MutationResolvers["updateUser"] = ({ id, input }) => { + return db.user.update({ + // highlight-next-line + data: removeNulls(input), + where: { id }, + }) +} +``` + +### Relation resolvers in services + +Let's say you have a `Post` model in your `schema.prisma` that has an `author` field which is a relation to the `Author` model. It's a required field. +This is what the `Post` model's SDL would probably look like: + +```graphql post.sdl.ts +export const schema = gql` + type Post { + id: Int! + title: String! + // highlight-next-line + author: Author! # 👈 This is a relation; the `!` makes it a required field + authorId: Int! + # ... + } +``` + +When you generate SDLs or Services, the resolver for `author` is generated at the bottom of `post.service.ts` on the `Post` object. +Because `Post.author` can't be null (we said it's required in the Prisma schema)—and because `findUnique` always returns a nullable value—in strict mode, you'll have to tweak this resolver: + +```ts Post.service.ts +// Option 1: Override the type +// The typecasting here is OK. `root` is the post that was _already found_ +// by the `post` function in your Services, so `findUnique` will always find it! +export const Post: PostRelationResolvers = { + author: (_obj, { root }) => + db.post.findUnique({ where: { id: root?.id } }).author() as Promise<Author>, // 👈 +} + +// Option 2: Check for null +export const Post: PostRelationResolvers = { + author: async (_obj, { root }) => { + // Here, `findUnique` can return `null`, so we have to handle it: + const maybeAuthor = await db.post + .findUnique({ where: { id: root?.id } }) + .author() + + // highlight-start + if (!maybeAuthor) { + throw new Error('Could not resolve author') + } + // highlight-end + + return maybeAuthor + }, +} +``` + + +:::tip An optimization tip + +If the relation truly is required, it may make more sense to include `author` in your `post` Service's Prisma query and modify the `Post.author` resolver accordingly: + +```ts +export const post: QueryResolvers['post'] = ({ id }) => { + return db.post.findUnique({ + // highlight-start + include: { + author: true, + }, + // highlight-end + where: { id }, + }) +} + +export const Post: PostRelationResolvers = { + author: async (_obj, { root }) => { + // highlight-start + if (root.author) { + return root.author + } + // highlight-end + + const maybeAuthor = await db.post.findUnique(// ... +``` + +This will also help Prisma make a more optimized query to the database, since every time a field on `Post` is requested, the post's author is too! The tradeoff here is that any query to `Post` (even if the author isn't requested) will mean an unnecessary database query to include the author. + +::: + +### Roles checks for CurrentUser in `src/lib/auth` + +When you setup auth, Redwood includes some template code for handling roles with the `hasRole` function. +While Redwood does runtime checks to make sure it doesn't access roles if it doesn't exist, TypeScript in strict mode will highlight errors, depending on whether you are returning `roles`, and whether those roles are `string` or `string[]` + +```typescript +export const hasRole = (roles: AllowedRoles): boolean => { + if (!isAuthenticated()) { + return false + } + + // highlight-next-line + const currentUserRoles = context.currentUser?.roles + // Error: Property 'roles' does not exist on type '{ id: number; }'.ts(2339) +``` + +You'll have to adjust the generated code depending on your User model. + +<details> +<summary>Example code diffs</summary> + +#### A. If your project does not use roles + +If your `getCurrentUser` doesn't return `roles`, and you don't use this functionality, you can safely remove the `hasRole` function. + +#### B. Roles on current user is a string + +Alternatively, if you define the roles as a string, you can remove the code that does checks against Arrays + +```diff title="api/src/lib/auth.ts" +export const hasRole = (roles: AllowedRoles): boolean => { + if (!isAuthenticated()) { + return false + } + + const currentUserRoles = context.currentUser?.roles + + if (typeof roles === 'string') { +- if (typeof currentUserRoles === 'string') { + return currentUserRoles === roles +- } + } + + if (Array.isArray(roles)) { +- if (Array.isArray(currentUserRoles)) { +- return currentUserRoles?.some((allowedRole) => +- roles.includes(allowedRole) +- ) +- } else if (typeof currentUserRoles === 'string') { + // roles to check is an array, currentUser.roles is a string + return roles.some((allowedRole) => currentUserRoles === allowedRole) +- } + } + + // roles not found + return false +} +``` + +#### C. Roles on current user is an Array of strings + +If in your User model, roles are an array of strings, and can never be just a string, you can safely remove most of the code + +```diff title="api/src/lib/auth.ts" +export const hasRole = (roles: AllowedRoles): boolean => { + if (!isAuthenticated()) { + return false + } + + const currentUserRoles = context.currentUser?.roles + + if (typeof roles === 'string') { +- if (typeof currentUserRoles === 'string') { +- return currentUserRoles === roles +- } else if (Array.isArray(currentUserRoles)) { + // roles to check is a string, currentUser.roles is an array + return currentUserRoles?.some((allowedRole) => roles === allowedRole) +- } + } + + if (Array.isArray(roles)) { +- if (Array.isArray(currentUserRoles)) { + return currentUserRoles?.some((allowedRole) => + roles.includes(allowedRole) + ) +- } else if (typeof currentUserRoles === 'string') { +- return roles.some( +- (allowedRole) => currentUserRoles === allowedRole +- ) + } + } + + // roles not found + return false +} +``` +</details> + +### `getCurrentUser` in `api/src/lib/auth.ts` + +Depending on your auth provider—i.e., anything but dbAuth—because it could change based on your account settings (if you include roles or other metadata), we can't know the shape of your decoded token at setup time. +So you'll have to make sure that the `getCurrentUser` function is typed. + +To help you get started, the comments above the `getCurrentUser` function describe its parameters' types. We recommend typing `decoded` without using imported types from Redwood, as this may be a little too generic! + +```ts title='api/src/lib/auth.ts' +import type { AuthContextPayload } from '@redwoodjs/api' + +// Example 1: typing directly +export const getCurrentUser: CurrentUserFunc = async ( + decoded: { id: string, name: string }, + { token, type }: { token: string, type: string }, +) => { + // ... +} + +// Example 2: Using AuthContextPayload +export const getCurrentUser: CurrentUserFunc = async ( + decoded: { id: string, name: string }, + { token, type }: AuthContextPayload[1], + { event, context }: AuthContextPayload[2] +) => { + // ... +} +``` diff --git a/docs/versioned_docs/version-7.0/typescript/utility-types.md b/docs/versioned_docs/version-7.0/typescript/utility-types.md new file mode 100644 index 000000000000..a01895f1adfd --- /dev/null +++ b/docs/versioned_docs/version-7.0/typescript/utility-types.md @@ -0,0 +1,286 @@ +--- +description: Utility types exposed by Redwood +--- + +# Redwood Utility Types + +Besides generating types for you, Redwood exposes a handful of utility types for Cells, Scenarios, and DbAuth. +You'll see these helpers quite often if you use the generators, so let's walk through some of them. By the end of this, you'll likely see a pattern in these types and their use of [Generics](https://www.typescriptlang.org/docs/handbook/2/generics.html). + +## Cells + +Cells created using the generators come with all the types your normally need, including the `CellSuccessProps`, `CellFailureProps`, and `CellLoadingProps` utility types. + +### `CellSuccessProps<TData, TVariables>` + +This is used to type the props of your Cell's `Success` component. +It takes two arguments as generics: + +| Generic | Description | +|:-------------|:-----------------------------------------------------------------------------------------| +| `TData` | The type of data you're expecting to receive (usually the type generated from the query) | +| `TVariables` | An optional second parameter for the type of the query's variables | + +Not only does `CellSuccessProps` type the data returned from the query, but it also types the variables and methods returned by Apollo Client's `useQuery` hook! + +```ts title="web/src/components/BlogPostCell.tsx" +import type { FindBlogPostQuery, FindBlogPostQueryVariables } from 'types/graphql' + +// highlight-next-line +import type { CellSuccessProps } from '@redwoodjs/web' + +// ... + +// highlight-next-line +type SuccessProps = CellSuccessProps<FindBlogPostQuery, FindBlogPostQueryVariables> + +export const Success = ({ + blogPost, // From the query. This is typed of course + queryResult // 👈 From Apollo Client. This is typed too! +// highlight-next-line +}: SuccessProps) => { + // ... +} +``` + +### `CellFailureProps<TVariables>` + +This gives you the types of the props in your Cell's `Failure` component. +It takes `TVariables` as an optional generic parameter, which is useful if you want to print error messages like `"Couldn't load data for ${variables.searchTerm}"`: + +```ts title="web/src/components/BlogPostCell.tsx" +import type { FindBlogPostQuery, FindBlogPostQueryVariables } from 'types/graphql' + +// highlight-next-line +import type { CellFailureProps } from '@redwoodjs/web' + +// ... + +export const Failure = ({ + error, + variables // 👈 Variables is typed based on the generic + // highlight-next-line +}: CellFailureProps<FindBlogPostQueryVariables>) => ( + // ... +) +``` + +### `CellLoadingProps<TVariables>` + +Similar to `CellFailureProps`, but for the props of your Cell's `Loading` component: + +```ts title="web/src/components/BlogPostCell.tsx" +import type { FindBlogPostQuery, FindBlogPostQueryVariables } from 'types/graphql' + +// highlight-next-line +import type { CellLoadingProps } from '@redwoodjs/web' + +// ... + +// highlight-next-line +export const Loading = (props: CellLoadingProps<FindBlogPostQueryVariables>) => ( + <div>Loading...</div> +) +``` + +## Scenarios & Testing + +Over on the api side, when you generate SDLs and Services, Redwood generates tests and scenarios with all the types required. Let's take a deeper look at scenario types. + +### `defineScenario` + +This is actually a function, not a type, but it takes a lot of generics. Use as many or as few as you find helpful. + +``` +defineScenario<PrismaCreateType, TName, TKey> +``` + +| Generic | Description | +|:-------------------|:------------------------------------------------------------------------------------------------------| +| `PrismaCreateType` | (Optional) the type imported from Prisma's create operation that goes into the "data" key | +| `TName` | (Optional) the name or names of the models in your scenario | +| `TKeys` | (Optional) the key(s) in your scenario. These are really only useful while you write out the scenario | + +An example: + +```ts title="posts.scenarios.ts" +import type { Prisma, Post } from '@prisma/client' + +export const standard = defineScenario<Prisma.PostCreateArgs, 'post', 'one'>({ + //👇 TName + post: { + // 👇 TKey + one: { + // 👇 PrismaCreateType. Notice how we import the type from @prisma/client + data: { title: 'String', body: 'String', metadata: { foo: 'bar' } }, + }, + }, +}) +``` + +If you have more than one model in a single scenario, you can use unions: + +```ts +defineScenario<Prisma.PostCreateArgs | Prisma.UserCreateArgs, 'post' | 'user'> +``` + +### `ScenarioData<TModel, TName, TKeys>` + +This utility type makes it easy for you to access data created by your scenarios in your tests. +It takes three generic parameters: + +| Generic | Description | +|:--------|:---------------------------------------------------------------------------------| +| `TData` | The Prisma model that'll be returned | +| `TName` | (Optional) the name of the model. ("post" in the example below) | +| `TKeys` | (optional) the key(s) used to define the scenario. ("one" in the example below) | + +We know this is a lot of generics, but that's so you get to choose how specific you want to be with the types! + +```ts title="api/src/services/posts/posts.scenario.ts" +import type { Post } from '@prisma/client' + +//... + +export type StandardScenario = ScenarioData<Post, 'post'> +``` + +```ts title="api/src/services/posts/posts.test.ts" +import type { StandardScenario } from './posts.scenarios' + +scenario('returns a single post', async (scenario: StandardScenario) => { + const result = await post({ id: scenario.post.one.id }) +}) +``` + +You can of course just define the type in the test file instead of importing it. Just be aware that if you change your scenario, you need to update the type in the test file too! + +## DbAuth + +When you setup dbAuth, the generated files in `api/src/lib/auth.ts` and `api/src/functions/auth.ts` have all the types you need. Let's break down some of the utility types. + +### `DbAuthSession` + +You'll notice an import at the top of `api/src/lib/auth.ts`: + +```ts title="api/src/lib/auth.ts" +import type { DbAuthSession } from '@redwoodjs/api' +``` + +`DbAuthSession` is a utility type that's used to type the argument to `getCurrentUser`, `session`: + +```ts title="api/src/lib/auth.ts" +export const getCurrentUser = async (session: DbAuthSession<number>) => { + return await db.user.findUnique({ + where: { id: session.id }, + select: { id: true }, + }) +} +``` + +The generic it takes should be the type of your User model's `id` field. +It's usually a `string` or a `number`, but it depends on how you've defined it. + +Because a session only ever contains `id`, all we're doing here is defining the type of `id`. + +### `DbAuthHandlerOptions` + +`DbAuthHandlerOptions` gives you access to all the types you need to configure your dbAuth handler function in `api/src/function/auth.ts`. +It also takes a generic, `TUser`—the type of your User model. Note that this is not the same type as `CurrentUser`. + +You can import the type of the User model directly from Prisma and pass it to `DbAuthHandlerOptions`: + +```ts +import type { User as PrismaUser } from '@prisma/client' + +import type { DbAuthHandlerOptions } from '@redwoodjs/api' + +export const handler = async ( + event: APIGatewayProxyEvent, + context: Context +) => { + // Pass in the generic to the type here 👇 + const forgotPasswordOptions: DbAuthHandlerOptions<PrismaUser>['forgotPassword'] = { + + // ... + + // Now in the handler function, `user` will be typed + handler: (user) => { + return user + }, + + // ... + + } + + // ... + +} +``` + +Note that in strict mode, you'll likely see errors where the handlers expect "truthy" values. All you have to do is make sure you return a boolean. For example, `return !!user` instead of `return user`. + +## Directives + + +### `ValidatorDirectiveFunc` +When you generate a [validator directive](directives.md#validators) you will see your `validate` function typed already with `ValidatorDirectiveFunc<TDirectiveArgs>` + +```ts +import { + createValidatorDirective, + // highlight-next-line + ValidatorDirectiveFunc, +} from '@redwoodjs/graphql-server' + +export const schema = gql` + directive @myValidator on FIELD_DEFINITION +` +// 👇 makes sure "context" and directive args are typed +// highlight-next-line +const validate: ValidatorDirectiveFunc = ({ context, directiveArgs }) => { +``` + +This type takes a single generic - the type of your `directiveArgs`. + +Let's take a look at the built-in `@requireAuth(roles: ["ADMIN"])` directive, for example - which we ship with your Redwood app by default in `./api/src/directives/requireAuth/requireAuth.ts` + +```ts +// highlight-next-line +type RequireAuthValidate = ValidatorDirectiveFunc<{ roles?: string[] }> + +const validate: RequireAuthValidate = ({ directiveArgs }) => { + // roles 👇 will be typed correctly as string[] | undefined + // highlight-next-line + const { roles } = directiveArgs + // .... +} +``` + +| Generic | Description | +|:-----------------|:----------------------------------------------------------| +| `TDirectiveArgs` | The type of arguments passed to your directive in the SDL | + +### `TransformerDirectiveFunc` +When you generate a [transformer directive](directives.md#transformers) you will see your `transform` function typed with `TransformDirectiveFunc<TField, TDirectiveArgs>`. + +```ts +// 👇 makes sure the functions' arguments are typed +// highlight-next-line +const transform: TransformerDirectiveFunc = ({ context, resolvedValue }) => { +``` + +This type takes two generics - the type of the field you are transforming, and the type of your `directiveArgs`. + +So for example, let's say you have a transformer directive `@maskedEmail(permittedRoles: ['ADMIN'])` that you apply to `String` fields. You would pass in the following types + +```ts +type MaskedEmailTransform = TransformerDirectiveFunc<string, {permittedRoles?: string[]}> +``` + +| Generic | Description | +|:-----------------|:-------------------------------------------------------------------------------| +| `TField` | This will type `resolvedValue` i.e. the type of the field you are transforming | +| `TDirectiveArgs` | The type of arguments passed to your directive in the SDL | + + diff --git a/docs/versioned_docs/version-7.0/vite-configuration.md b/docs/versioned_docs/version-7.0/vite-configuration.md new file mode 100644 index 000000000000..ce9df4b866f2 --- /dev/null +++ b/docs/versioned_docs/version-7.0/vite-configuration.md @@ -0,0 +1,72 @@ +--- +description: If you have to configure Vite, here's how +--- + +# Vite Configuration + +Redwood uses Vite. One of Redwood's tenets is convention over configuration. + +Vite is an awesome build tool, but we don't want it to be something that you have to be familiar with to be productive. +So it's worth repeating that you don't have to do any of this, because we configure everything you will need out of the box with a Redwood Vite plugin. + +Regardless, there'll probably come a time when you have to configure Vite. All the Vite configuration for your web side sits in `web/vite.config.{js,ts}`, and can be configured the same as any other Vite project. Let's take a peek! + +```js +import dns from 'dns'; +import { defineConfig } from 'vite'; +import redwood from '@redwoodjs/vite'; + +dns.setDefaultResultOrder('verbatim'); + +const viteConfig = { + plugins: [ + // 👇 this is the RedwoodJS Vite plugin, that houses all the default configuration + redwood() + // ... add any custom Vite plugins you would like here + ], + // You can override built in configuration like server, optimizeDeps, etc. here +}; +export default defineConfig(viteConfig); + +``` + +Checkout Vite's docs on [configuration](https://vitejs.dev/config/) + + +### Sass and Tailwind CSS + +Redwood is already configured to use Sass, if the packages are there: + +``` +yarn workspace web add -D sass sass-loader +``` + +And if you want to use Tailwind CSS, just run the setup command: + +``` +yarn rw setup ui tailwindcss +``` + +## Vite Dev Server + +Redwood uses Vite's preview server for local development. +When you run `yarn rw dev`, keys in your `redwood.toml`'s `[web]` table—like `port` and `apiUrl`—are used as vite preview server options (in this case, [preview.port](https://vitejs.dev/config/preview-options.html#preview-port) and [preview.proxy](https://vitejs.dev/config/preview-options.html#preview-proxy) respectively). + +> You can peek at all the out-of-the-box configuration for your Vite preview server in the [RedwoodJS Vite plugin](https://github.com/redwoodjs/redwood/blob/main/packages/vite/src/index.ts) + +### Using `--forward` + +While you can configure Vite using `web/vite.config.js`, it's often simpler to use `yarn rw dev`'s `--forward` option. + +For example, if you want to force optimise your Vite dependencies again, you can run: + +``` +yarn rw dev --fwd="--force" +``` + +You can also use `--forward` to override keys in your `redwood.toml`. +For example, the following starts your app on port `1234` and disables automatic browser opening: + +``` +yarn rw dev --forward="--port 1234 --no-open" +``` diff --git a/docs/versioned_docs/version-7.0/webhooks.md b/docs/versioned_docs/version-7.0/webhooks.md new file mode 100644 index 000000000000..a185c7ebc4fa --- /dev/null +++ b/docs/versioned_docs/version-7.0/webhooks.md @@ -0,0 +1,815 @@ +--- +description: Securely integrate third-party services +--- + +# Webhooks + +If you've used [IFTTT](https://ifttt.com/maker_webhooks), [Pipedream](https://pipedream.com/docs/api/rest/webhooks/), or [Zapier](https://zapier.com/apps/webhook/integrations) then you're familiar with how webhooks can give your app the power to create complex workflows, build one-to-one automation, and sync data between apps. RedwoodJS helps you work with webhooks by giving you the tools to both receive and verify incoming webhooks and sign outgoing ones with ease. + +## What is a webhook + +Simply put, webhooks are a common way that third-party services notify your RedwoodJS application when an event of interest happens. They are a form of messaging and automation allowing distinct web applications to communicate with each other and send real-time data from one application to another whenever a given event occurs. + +The third-party considers these "outgoing Webhooks" and therefore your application receives "incoming Webhooks". + +When the api side of your Redwood app receives a webhook, it can parse it, process it, save it to replay later, or any other action needed. + +Webhooks are different from other integration methods in that the third-party pushes new events to your app instead of your app constantly pulling or polling for new data. + +### Examples of Webhooks + +Some examples of outgoing Webhooks are: + +- Netlify successfully [deploys a site](https://docs.netlify.com/site-deploys/notifications/#outgoing-webhooks) +- Someone [pushes a PR to GitHub](https://docs.github.com/en/developers/webhooks-and-events/creating-webhooks) +- Someone [posts in Discourse](https://meta.discourse.org/t/setting-up-webhooks/49045) +- Stripe [completes a purchase](https://stripe.com/docs/webhooks) +- A cron/scheduled task wants to invoke a long running [background function on Netlify](https://docs.netlify.com/functions/background-functions/) +- and more webhook integrations via services like [IFTTT](https://ifttt.com/maker_webhooks), [Pipedream](https://pipedream.com/docs/api/rest/webhooks/) and [Zapier](https://zapier.com/apps/webhook/integrations) + +If you were to subscribe to one of these webhooks, you'd point it to an endpoint in your RedwoodJS api -- ie, a serverless function. But, because that function is out "in the cloud" you need to ensure that these run **only when they should**. That means your function must: + +- verify it comes from the place you expect +- trust the party +- know the payload sent in the hook hasn't been tampered with +- ensure that the hook isn't reprocessed or replayed (sometimes) + +That is, you need to **verify your incoming webhooks**. + +## Verifying Webhooks with RedwoodJS Made Easy + +The RedwoodJS [`api/webhooks` package](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/webhooks/index.ts) makes it easy to receive and verify incoming webhooks by implementing many of the most commonly used Webhook signature verifiers. + +### Webhook Verification + +Webhooks have a few ways of letting you know they should be trusted. The most common is by sending along a "signature" header. They typically sign their payload with a secret key (in a few ways) and expect you to validate the signature before processing it. + +### Webhook Signature Verifiers + +Common signature verification methods are: + +- SHA256 ([GitHub](https://docs.github.com/en/developers/webhooks-and-events/securing-your-webhooks#validating-payloads-from-github) and [Discourse](https://meta.discourse.org/t/setting-up-webhooks/49045)) +- Base64 SHA256 ([Svix](https://docs.svix.com/receiving/verifying-payloads/how-manual) and [Clerk](https://docs.clerk.dev/reference/webhooks#verifying-requests)) +- SHA1 ([Vercel](https://vercel.com/docs/integrations?query=webhook%20sha1#webhooks/securing-webhooks)) +- JWT ([Netlify](https://docs.netlify.com/site-deploys/notifications/#outgoing-webhooks)) +- Timestamp Scheme ([Stripe](https://stripe.com/docs/webhooks/best-practices) / Redwood default) +- Secret Key (Custom, [Orbit](https://docs.orbit.love/docs/webhooks)) + +RedwoodJS adds a way to do no verification as well of testing or in the case your third party doesn't sign the payload. + +- SkipVerifier (bypass verification, or no verification) + +RedwoodJS implements [signatureVerifiers](https://github.com/redwoodjs/redwood/tree/main/packages/api/src/auth/verifiers) for each of these so you can get started integrating your app with third-parties right away. + +```jsx +export type SupportedVerifiers = + | SkipVerifier + | SecretKeyVerifier + | Sha1Verifier + | Sha256Verifier + | Base64Sha1Verifier + | Base64Sha256Verifier + | TimestampSchemeVerifier + | JwtVerifier +``` + +Each `SupportedVerifier` implements a method to `sign` and `verify` a payload with a secret (if needed). + +When the webhook needs [creates a verifier](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/auth/verifiers/index.ts#L12) in order to `verifyEvent`, `verifySignature` or `signPayload` it does so via: + +```jsx +createVerifier(type, options) +``` + +where type is one of the supported verifiers and `VerifyOptions` sets the +options the verifier needs to sign or verify. + +```jsx +/** + * VerifyOptions + * + * Used when verifying a signature based on the verifier's requirements + * + * @param {string} signatureHeader - Optional Header that contains the signature + * to verify. Will default to DEFAULT_WEBHOOK_SIGNATURE_HEADER + * @param {(signature: string) => string} signatureTransformer - Optional + * function that receives the signature from the headers and returns a new + * signature to use in the Verifier + * @param {number} currentTimestampOverride - Optional timestamp to use as the + * "current" timestamp, in msec + * @param {number} eventTimestamp - Optional timestamp to use as the event + * timestamp, in msec. If this is provided the webhook verification will fail + * if the eventTimestamp is too far from the current time (or the time passed + * as the `currentTimestampOverride` option) + * @param {number} tolerance - Optional tolerance in msec + * @param {string} issuer - Options JWT issuer for JWTVerifier + */ +export interface VerifyOptions { + signatureHeader?: string + signatureTransformer?: (signature: string) => string + currentTimestampOverride?: number + eventTimestamp?: number + tolerance?: number + issuer?: string +} +``` + +## How to Receive and Verify an Incoming Webhook + +The `api/webhooks` package exports [verifyEvent and verifySignature](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/webhooks/index.ts) to apply [verification methods](https://github.com/redwoodjs/redwood/tree/main/packages/api/src/auth/verifiers) and verify the event or some portion of the event payload with a signature as defined in its [VerifyOptions](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/webhooks/common.ts). +If the signature fails verification, a `WebhookSignError` is raised which can be caught to return a `401` unauthorized. + +Typically, for each integration you'll define 1) the events that triggers the webhook or the schedule via cron/conditions to send the webhook, 2) a secret, and 3) the endpoint to send the webhook to (ie, your endpoint). + +When the third-party creates the outgoing webhook payload, they'll sign it (typically the event request body) and add that signature to the request headers with some key. + +When your endpoint receives the request (incoming webhook), it can extract the signature using the signature header key set in `VerifyOptions`, transform it using the `signatureTransformer` function also defined in `VerifyOptions`, use the appropriate verifier, and validate the payload to ensure it comes from a trusted source. + +Note that: + +- `verifyEvent` will detect if the event body is base64 encoded, then decode and validate the payload with the signature verifier +- signatureHeader specified in `VerifyOptions` will be converted to lowercase when fetching the signature from the event headers + +You can then use the payload data with confidence in your function. + +### SHA256 Verifier (used by GitHub, Discourse) + +SHA256 HMAC is one of the most popular signatures. It's used by [Discourse](https://meta.discourse.org/t/setting-up-webhooks/49045) and [GitHub](https://docs.github.com/en/developers/webhooks-and-events/securing-your-webhooks#validating-payloads-from-github). + +When your secret token is set, GitHub uses it to create a hash signature with each payload. This hash signature is included with the headers of each request as `X-Hub-Signature-256`. + +For Discourse, when an event is triggered, it `POST`s a webhook with `X-Discourse-Event-Signature` in the HTTP header to your endpoint. It’s computed by SHA256. + +```jsx +import type { APIGatewayEvent } from 'aws-lambda' +import { + verifyEvent, + VerifyOptions, + WebhookVerificationError, +} from '@redwoodjs/api/webhooks' + +import { logger } from 'src/lib/logger' + +export const handler = async (event: APIGatewayEvent) => { + const discourseInfo = { webhook: 'discourse' } + const webhookLogger = logger.child({ discourseInfo }) + + webhookLogger.trace('Invoked discourseWebhook function') + + try { + const options = { + signatureHeader: 'X-Discourse-Event-Signature', + } as VerifyOptions + + verifyEvent('sha256Verifier', { + event, + secret: process.env.DISCOURSE_WEBHOOK_SECRET, + options, + }) + + webhookLogger.debug({ headers: event.headers }, 'Headers') + + const payload = JSON.parse(event.body) + + webhookLogger.debug({ payload }, 'Body payload') + + // Safely use the validated webhook payload + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: payload, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn('Unauthorized') + + return { + statusCode: 401, + } + } else { + webhookLogger.error({ error }, error.message) + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +### Base64 SHA256 Verifier (used by Svix, Clerk) + +This is a variation on the SHA256 HMAC verification that works with binary buffers encoded with base64. It's used by [Svix](https://docs.svix.com/receiving/verifying-payloads/how-manual) and [Clerk](https://docs.clerk.dev/reference/webhooks#verifying-requests). + +Svix (and by extension, Clerk) gives you a secret token that it uses to create a hash signature with each payload. This hash signature is included with the headers of each request as `svix-signature`. + +> Some production environments, like Vercel, might base64 encode the request body string. In that case, the body must be conditionally parsed. +> ```js +> export const handler = async (event: APIGatewayEvent) => { +> const body = event.isBase64Encoded +> ? Buffer.from(event.body, 'base64').toString('utf-8') +> : event.body +> ``` + +```tsx +import type { APIGatewayEvent } from 'aws-lambda' +import { + verifyEvent, + VerifyOptions, + WebhookVerificationError, +} from '@redwoodjs/api/webhooks' + +import { logger } from 'src/lib/logger' + +export const handler = async (event: APIGatewayEvent) => { + const clerkInfo = { webhook: 'clerk' } + const webhookLogger = logger.child({ clerkInfo }) + + webhookLogger.trace('Invoked clerkWebhook function') + + try { + const options: VerifyOptions = { + signatureHeader: 'svix-signature', + signatureTransformer: (signature: string) => { + // Clerk can pass a space separated list of signatures. + // Let's just use the first one that's of version 1 + const passedSignatures = signature.split(' ') + + for (const versionedSignature of passedSignatures) { + const [version, signature] = versionedSignature.split(',') + + if (version === 'v1') { + return signature + } + } + }, + } + + const svix_id = event.headers['svix-id'] + const svix_timestamp = event.headers['svix-timestamp'] + + verifyEvent('base64Sha256Verifier', { + event, + secret: process.env.CLERK_WH_SECRET.slice(6), + payload: `${svix_id}.${svix_timestamp}.${event.body}`, + options, + }) + + webhookLogger.debug({ headers: event.headers }, 'Headers') + + const payload = JSON.parse(event.body) + + webhookLogger.debug({ payload }, 'Body payload') + + // Safely use the validated webhook payload + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: payload, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn('Unauthorized') + + return { + statusCode: 401, + } + } else { + webhookLogger.error({ error }, error.message) + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +### SHA1 Verifier (used by Vercel) + +- [Vercel](https://vercel.com/docs/integrations?query=webhook%20sha1#webhooks/securing-webhooks) + +Vercel signs its webhooks with SHA also base64 encodes the event. + +RedwoodJS `verifyEvent` will detect is the event is base64 encoded, decode and then validate the payload with the signature. + +```jsx +import type { APIGatewayEvent } from 'aws-lambda' +import { + verifyEvent, + VerifyOptions, + WebhookVerificationError, +} from '@redwoodjs/api/webhooks' + +import { logger } from 'src/lib/logger' + +export const handler = async (event: APIGatewayEvent) => { + const vercelInfo = { webhook: 'vercel' } + const webhookLogger = logger.child({ vercelInfo }) + + webhookLogger.trace('Invoked vercelWebhook function') + + try { + const options = { + signatureHeader: 'x-vercel-signature', + } as VerifyOptions + + verifyEvent('sha256Verifier', { + event, + secret: process.env.DISCOURSE_WEBHOOK_SECRET, + options, + }) + + webhookLogger.debug({ headers: event.headers }, 'Headers') + + const payload = JSON.parse(event.body) + + webhookLogger.debug({ payload }, 'Body payload') + + // Safely use the validated webhook payload + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: payload, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn('Unauthorized') + + return { + statusCode: 401, + } + } else { + webhookLogger.error({ error }, error.message) + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +### TimestampScheme Verifier (used by Stripe) + +The TimestampScheme verifier not only signs the payload with a secret (SHA256), but also includes a timestamp to prevent [replay attacks](https://en.wikipedia.org/wiki/Replay_attack) and a scheme (i.e., a version) to further protect webhooks. + +A replay attack is when an attacker intercepts a valid payload and its signature, then re-transmits them. To mitigate such attacks, third-parties like Stripe includes a timestamp in the Stripe-Signature header. Because this timestamp is part of the signed payload, it is also verified by the signature, so an attacker cannot change the timestamp without invalidating the signature. If the signature is valid but the timestamp is too old, you can have your application reject the payload. + +When verifying, there is a default tolerance of five minutes between the event timestamp and the current time but you can override this default by setting the [`tolerance` option](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/auth/verifiers/timestampSchemeVerifier.ts) in the `VerifyOptions` passed to the verifier to another value (in milliseconds). + +Also, if for some reason you need to adjust the timestamp used to compare the tolerance to a different time (say in the past), then you may override this by setting the [`currentTimestampOverride` option](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/auth/verifiers/timestampSchemeVerifier.ts) in the `VerifyOptions` passed to the verifier. + +- [Stripe](https://stripe.com/docs/webhooks/best-practices) +- Used in a Cron Job that triggers a Webhook periodically to background task via a serverless function + +The TimestampScheme is particularly useful when used with cron jobs because if for some reason the webhook is delayed between when it is created and sent/received your app can discard it and thus old information would not risk overwriting newer data. + +```jsx +import type { APIGatewayEvent } from 'aws-lambda' + +import { + verifyEvent, + VerifyOptions, + WebhookVerificationError, +} from '@redwoodjs/api/webhooks' +import { logger } from 'src/lib/logger' +import { perform } from 'src/lib/orbit/jobs/loadActivitiesJob' + +/** + * The handler function is your code that processes http request events. + * You can use return and throw to send a response or error, respectively. + * + * @typedef { import('aws-lambda').APIGatewayEvent } APIGatewayEvent + * @typedef { import('aws-lambda').Context } Context + * @param { APIGatewayEvent } event - an object which contains information from the invoker. + * @param { Context } context - contains information about the invocation, + * function, and execution environment. + */ +export const handler = async (event: APIGatewayEvent) => { + const webhookInfo = { webhook: 'loadOrbitActivities-background' } + + const webhookLogger = logger.child({ webhookInfo }) + + webhookLogger.trace('>> in loadOrbitActivities-background') + + try { + const options = { + signatureHeader: 'RW-Webhook-Signature', + // You may override these defaults + // tolerance: 60_000, + // timestamp: new Date().getDate() - 1, + } as VerifyOptions + + verifyEvent('timestampSchemeVerifier', { + event, + secret: process.env.WEBHOOK_SECRET, + options, + }) + + await perform() + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: `loadOrbitActivities scheduled job invoked at ${Date.now()}`, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn( + { webhook: 'loadOrbitActivities-background' }, + 'Unauthorized' + ) + return { + statusCode: 401, + } + } else { + webhookLogger.error( + { webhook: 'loadOrbitActivities-background', error }, + error.message + ) + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +### JWT Signature (used by Netlify) + +- [Netlify Outgoing Webhooks](https://docs.netlify.com/site-deploys/notifications/#outgoing-webhooks) + +The JSON Web Token (JWT) Verifier not only cryptographically compares the signature to the payload to ensure it hasn't been tampered with, but also gives the added JWT claims like `issuer` and `expires` — you can trust that the Webhook was sent by a trusted sounds and isn't out of date. + +Here, the `VerifyOptions` not only specify the expected signature header, but allow will check that the `iss` claim is netlify. + +```jsx + const options = { + signatureHeader: 'X-Webhook-Signature', + issuer: 'netlify', + } as VerifyOptions +``` + +See: [Introduction to JSON Web Tokens](https://jwt.io/introduction) for more information. + +```jsx +import type { APIGatewayEvent } from 'aws-lambda' +import { + verifyEvent, + VerifyOptions, + WebhookVerificationError, +} from '@redwoodjs/api/webhooks' + +import { logger } from 'src/lib/logger' + +/** + * The handler function is your code that processes http request events. + * You can use return and throw to send a response or error, respectively. + * + * @typedef { import('aws-lambda').APIGatewayEvent } APIGatewayEvent + * @typedef { import('aws-lambda').Context } Context + * @param { APIGatewayEvent } event - an object which contains information from the invoker. + * @param { Context } context - contains information about the invocation, + * function, and execution environment. + */ +export const handler = async (event: APIGatewayEvent) => { + const netlifyInfo = { + webhook: 'verifyNetlifyWebhook', + headers: event.headers['x-netlify-event'], + } + const webhookLogger = logger.child({ netlifyInfo }) + + try { + webhookLogger.debug('Received Netlify event') + + const options = { + signatureHeader: 'X-Webhook-Signature', + issuer: 'netlify', + } as VerifyOptions + + verifyEvent('jwtVerifier', { + event, + secret: process.env.NETLIFY_DEPLOY_WEBHOOK_SECRET, + options, + }) + const payload = JSON.parse(event.body) + + // Safely use the validated webhook payload + + webhookLogger.debug({ payload }, 'Now I can do things with the payload') + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: payload, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn('Unauthorized') + return { + statusCode: 401, + } + } else { + webhookLogger.error({ error }, error.message) + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +### Secret Key Verifier (used by Orbit) + +- [Orbit Webhook Doc](https://docs.orbit.love/docs/webhooks) + +The Secret Key verifiers used by [Orbit](https://docs.orbit.love/docs/webhooks) acts very much like a password. It doesn't perform some cryptographic comparison of the signature with the payload received, but rather simple checks if the expected key or token is present. + +```jsx +//import type { APIGatewayEvent, Context } from 'aws-lambda' +import { + verifyEvent, + // VerifyOptions, + WebhookVerificationError, +} from '@redwoodjs/api/webhooks' + +import { deserialize } from 'deserialize-json-api' +import { parser, persister } from 'src/lib/orbit/loaders/activityLoader' + +import { logger } from 'src/lib/logger' + +const webhookDetails = (event) => { + const webhook = 'orbitWebhook-background' + const orbitEvent = event.headers['x-orbit-event'] || '' + const orbitEventId = event.headers['x-orbit-event-id'] || '' + const orbitEventType = event.headers['x-orbit-event-type'] || '' + const orbitUserAgent = event.headers['user-agent'] || '' + const orbitSignature = event.headers['x-orbit-signature'] || '' + + return { + webhook, + orbitEvent, + orbitEventId, + orbitEventType, + orbitUserAgent, + orbitSignature, + } +} + +/** + * The handler function is your code that processes http request events. + * You can use return and throw to send a response or error, respectively. + * + * Important: When deployed, a custom serverless function is an open API endpoint and + * is your responsibility to secure appropriately. + * + * @see {@link https://redwoodjs.com/docs/serverless-functions#security-considerations|Serverless Function Considerations} + * in the RedwoodJS documentation for more information. + * + * @typedef { import('aws-lambda').APIGatewayEvent } APIGatewayEvent + * @typedef { import('aws-lambda').Context } Context + * @param { APIGatewayEvent } event - an object which contains information from the invoker. + * @param { Context } context - contains information about the invocation, + * function, and execution environment. + */ +export const handler = async (event) => { + const orbitInfo = webhookDetails(event) + + const webhookLogger = logger.child({ orbitInfo }) + + webhookLogger.info(`>> in webhook`) + + try { + const options = { + signatureHeader: 'X-Orbit-Signature', + } + verifyEvent('secretKeyVerifier', { + event, + secret: process.env.ORBIT_WEBHOOK_SECRET, + options, + }) + + if (orbitInfo.orbitEventType === 'activity:created') { + const parsedActivity = parseEventPayload(event) + + // Safely use the validated webhook payload + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data: 'orbitWebhook done', + }), + } + } else { + webhookLogger.warn(`Unsupported Orbit Event Type: ${orbitInfo.orbitEventType}`) + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 400, + body: JSON.stringify({ + data: `Unsupported Orbit Event Type: ${orbitInfo.orbitEventType}`, + }), + } + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn('Unauthorized') + return { + statusCode: 401, + } + } else { + webhookLogger.error({ error }, error.message) + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +### Skip Verifier (used by Livestorm) + +[Livestorm](https://support.livestorm.co/article/119-webhooks) sends webhooks but doesn't sign them with a secret. + +Here, you can use the `skipVerifier` -- or choose not to validate altogether, but setting up to `verifyEvent` would let you quickly change the verification method if their changes. + +You can also use the `skipVerifier` in testing or in `dev` so that you needn't share your secrets with other developers. + +In that case, you might set `WEBHOOK_VERIFICATION=skipVerifier` and use the envar in `verifyEvent(process.env.WEBHOOK_VERIFICATION, { event })`. + +```jsx +import type { APIGatewayEvent } from 'aws-lambda' +import { verifyEvent, WebhookVerificationError } from '@redwoodjs/api/webhooks' + +import { logger } from 'src/lib/logger' + +/** + * The handler function is your code that processes http request events. + * You can use return and throw to send a response or error, respectively. + * + * @typedef { import('aws-lambda').APIGatewayEvent } APIGatewayEvent + * @typedef { import('aws-lambda').Context } Context + * @param { APIGatewayEvent } event - an object which contains information from the invoker. + * @param { Context } context - contains information about the invocation, + * function, and execution environment. + */ +export const handler = async (event: APIGatewayEvent) => { + const livestormInfo = { webhook: 'livestorm' } + const webhookLogger = logger.child({ livestormInfo }) + + webhookLogger.trace('Livestorm') + + webhookLogger.debug({ event: event }, 'The Livestorm event') + + // Use the webhook payload + // Note: since the payload is not signed, you may want to validate other header info + + try { + verifyEvent('skipVerifier', { event }) + + const data = JSON.parse(event.body) + + webhookLogger.debug({ payload: data }, 'Data from Livestorm') + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 200, + body: JSON.stringify({ + data, + }), + } + } catch (error) { + if (error instanceof WebhookVerificationError) { + webhookLogger.warn('Unauthorized') + + return { + statusCode: 401, + } + } else { + webhookLogger.error({ error }, error.message) + + return { + headers: { + 'Content-Type': 'application/json', + }, + statusCode: 500, + body: JSON.stringify({ + error: error.message, + }), + } + } + } +} +``` + +## Signing a Payload for an Outgoing Webhook + +To sign a payload for an outgoing webhook, the `api/webhooks` package exports [signPayload](https://github.com/redwoodjs/redwood/blob/main/packages/api/src/webhooks/index.ts), a function that signs a payload using a [verification method](https://github.com/redwoodjs/redwood/tree/main/packages/api/src/auth/verifiers), creating your "webhook signature". Once you have the signature, you can add it to your request's http headers with a name of your choosing, and then post the request to the endpoint: + +```jsx +import got from 'got' +import { signPayload } from '@redwoodjs/api/webhooks' + +const YOUR_OUTGOING_WEBHOOK_DESTINATION_URL = 'https://example.com/receive' +const YOUR_WEBHOOK_SIGNATURE = process.env.WEBHOOK_SIGNATURE + +export const sendOutGoingWebhooks = async ({ payload }) => { + const signature = signPayload('timestampSchemeVerifier', { + payload, + secret, + }) + + await got.post(YOUR_OUTGOING_WEBHOOK_DESTINATION_URL, { + responseType: 'json', + + json: { + payload, + }, + headers: { + YOUR_WEBHOOK_SIGNATURE: signature, + }, + }) +} +``` + +## How To Test Webhooks + +Because your webhook is typically sent from a third-party's system, manually testing webhooks can be difficult and time-consuming. See [How To Test Webhooks](serverless-functions.md#how-to-test-webhooks) to learn how to write tests that can automate tests and help you implement your webhook handler. + +## More Information + +Want to learn more about webhooks? + +- [Webhook.site lets you easily inspect, test and automate (with the visual Custom Actions builder, or WebhookScript) any incoming HTTP request or e-mail.](https://webhook.site/#!/) +- [What is a Webhook](https://simonfredsted.com/1583) by Simon Fredsted +- [About Webhooks](https://docs.github.com/en/developers/webhooks-and-events/about-webhooks) on GitHub +- [What are Webhooks? A simple guide to connection apps with webhooks](https://zapier.com/blog/what-are-webhooks/) on Zapier +- [What are Webhooks? Easy Explanation & Tutorial](https://snipcart.com/blog/what-are-webhooks-explained-example) on Snipcart +- [What are Webhooks and Why You Can’t Afford to Ignore Them](https://www.chargebee.com/blog/what-are-webhooks-explained/) on Charbee +- [What is a webhook: How they work and how to set them up](https://www.getvero.com/resources/webhooks/) on Vero diff --git a/docs/versioned_sidebars/version-7.0-sidebars.json b/docs/versioned_sidebars/version-7.0-sidebars.json new file mode 100644 index 000000000000..c19b617d3bff --- /dev/null +++ b/docs/versioned_sidebars/version-7.0-sidebars.json @@ -0,0 +1,322 @@ +{ + "main": [ + "introduction", + "quick-start", + { + "type": "category", + "label": "Tutorial", + "items": [ + { + "type": "doc", + "label": "Foreword", + "id": "tutorial/foreword" + }, + { + "Chapter 0": [ + "tutorial/chapter0/what-is-redwood" + ] + }, + { + "Chapter 1": [ + "tutorial/chapter1/prerequisites", + "tutorial/chapter1/installation", + "tutorial/chapter1/file-structure", + "tutorial/chapter1/first-page", + "tutorial/chapter1/second-page", + "tutorial/chapter1/layouts" + ] + }, + { + "Chapter 2": [ + "tutorial/chapter2/getting-dynamic", + "tutorial/chapter2/cells", + "tutorial/chapter2/side-quest", + "tutorial/chapter2/routing-params" + ] + }, + { + "Chapter 3": [ + "tutorial/chapter3/forms", + "tutorial/chapter3/saving-data" + ] + }, + { + "Chapter 4": [ + "tutorial/chapter4/authentication", + "tutorial/chapter4/deployment" + ] + }, + "tutorial/intermission", + { + "Chapter 5": [ + "tutorial/chapter5/storybook", + "tutorial/chapter5/first-story", + "tutorial/chapter5/testing", + "tutorial/chapter5/first-test" + ] + }, + { + "Chapter 6": [ + "tutorial/chapter6/the-redwood-way", + "tutorial/chapter6/multiple-comments", + "tutorial/chapter6/comments-schema", + "tutorial/chapter6/comment-form" + ] + }, + { + "Chapter 7": [ + "tutorial/chapter7/rbac", + "tutorial/chapter7/api-side-currentuser" + ] + }, + "tutorial/afterword" + ] + }, + { + "type": "category", + "label": "Reference", + "link": { + "type": "generated-index", + "title": "Reference", + "slug": "/index" + }, + "items": [ + "a11y", + "app-configuration-redwood-toml", + "assets-and-files", + { + "type": "category", + "label": "Authentication", + "link": { + "type": "doc", + "id": "authentication" + }, + "items": [ + { + "type": "doc", + "id": "auth/dbauth" + }, + { + "type": "doc", + "id": "auth/auth0" + }, + { + "type": "doc", + "id": "auth/azure" + }, + { + "type": "doc", + "id": "auth/clerk" + }, + { + "type": "doc", + "id": "auth/custom" + }, + { + "type": "doc", + "id": "auth/firebase" + }, + { + "type": "doc", + "id": "auth/netlify" + }, + { + "type": "doc", + "id": "auth/supabase" + }, + { + "type": "doc", + "id": "auth/supertokens" + } + ] + }, + "builds", + "cells", + "cli-commands", + "connection-pooling", + "contributing-overview", + "contributing-walkthrough", + "cors", + "create-redwood-app", + "custom-web-index", + "data-migrations", + { + "type": "category", + "label": "Deployment", + "link": { + "type": "generated-index", + "title": "Deployment", + "slug": "deployment/index" + }, + "items": [ + { + "type": "doc", + "label": "Introduction", + "id": "deploy/introduction" + }, + { + "type": "doc", + "label": "Baremetal", + "id": "deploy/baremetal" + }, + { + "type": "doc", + "label": "GCP or AWS via Coherence", + "id": "deploy/coherence" + }, + { + "type": "doc", + "label": "AWS via Flightcontrol", + "id": "deploy/flightcontrol" + }, + { + "type": "doc", + "label": "Edgio", + "id": "deploy/edgio" + }, + { + "type": "doc", + "label": "Netlify", + "id": "deploy/netlify" + }, + { + "type": "doc", + "label": "Render", + "id": "deploy/render" + }, + { + "type": "doc", + "label": "Serverless Framework", + "id": "deploy/serverless" + }, + { + "type": "doc", + "label": "Vercel", + "id": "deploy/vercel" + } + ] + }, + "directives", + "docker", + "environment-variables", + "forms", + { + "type": "category", + "label": "GraphQL", + "link": { + "type": "generated-index", + "title": "GraphQL", + "slug": "graphql/index" + }, + "items": [ + { + "type": "doc", + "label": "About", + "id": "graphql" + }, + { + "type": "doc", + "label": "Fragments", + "id": "graphql/fragments" + }, + { + "type": "doc", + "label": "Trusted Documents", + "id": "graphql/trusted-documents" + }, + { + "type": "doc", + "label": "Mocking GraphQL Requests", + "id": "graphql/mocking-graphql-requests" + }, + { + "type": "doc", + "label": "Realtime", + "id": "graphql/realtime" + } + ] + }, + "local-postgres-setup", + "logger", + "mailer", + { + "type": "category", + "label": "Monitoring", + "link": { + "type": "generated-index", + "title": "Monitoring", + "slug": "monitoring/index" + }, + "items": [ + { + "type": "doc", + "label": "Sentry", + "id": "monitoring/sentry" + } + ] + }, + "prerender", + "project-configuration-dev-test-build", + "redwoodrecord", + "realtime", + "router", + "schema-relations", + "security", + "seo-head", + "serverless-functions", + "services", + "storybook", + "studio", + "testing", + "toast-notifications", + { + "type": "category", + "label": "TypeScript", + "link": { + "type": "generated-index", + "title": "TypeScript", + "slug": "typescript/index" + }, + "items": [ + { + "type": "doc", + "label": "Introduction", + "id": "typescript/introduction" + }, + { + "type": "doc", + "id": "typescript/generated-types" + }, + { + "type": "doc", + "label": "Utility Types", + "id": "typescript/utility-types" + }, + { + "type": "doc", + "label": "Strict Mode", + "id": "typescript/strict-mode" + } + ] + }, + "webhooks", + "vite-configuration" + ] + }, + { + "type": "category", + "label": "How To", + "link": { + "type": "generated-index", + "title": "How To", + "slug": "/how-to/index" + }, + "items": [ + { + "type": "autogenerated", + "dirName": "how-to" + } + ] + } + ] +} diff --git a/docs/versions.json b/docs/versions.json index 522a40321d91..0b2ac7975068 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,4 +1,5 @@ [ + "7.0", "6.x", "5.x", "4.x", From 49965f4db294112458dccabfce2b7044f3134bcb Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 19:19:55 -0800 Subject: [PATCH 114/119] v7.0.0 --- __fixtures__/test-project/api/package.json | 6 +- __fixtures__/test-project/package.json | 4 +- __fixtures__/test-project/web/package.json | 10 +- lerna.json | 2 +- packages/adapters/fastify/web/package.json | 6 +- packages/api-server/package.json | 12 +- packages/api/package.json | 2 +- .../auth-providers/auth0/api/package.json | 4 +- .../auth-providers/auth0/setup/package.json | 4 +- .../auth-providers/auth0/web/package.json | 4 +- .../azureActiveDirectory/api/package.json | 4 +- .../azureActiveDirectory/setup/package.json | 4 +- .../azureActiveDirectory/web/package.json | 4 +- .../auth-providers/clerk/api/package.json | 4 +- .../auth-providers/clerk/setup/package.json | 4 +- .../auth-providers/clerk/web/package.json | 4 +- .../auth-providers/custom/setup/package.json | 4 +- .../auth-providers/dbAuth/api/package.json | 6 +- .../auth-providers/dbAuth/setup/package.json | 4 +- .../auth-providers/dbAuth/web/package.json | 4 +- .../auth-providers/firebase/api/package.json | 4 +- .../firebase/setup/package.json | 4 +- .../auth-providers/firebase/web/package.json | 4 +- .../auth-providers/netlify/api/package.json | 4 +- .../auth-providers/netlify/setup/package.json | 4 +- .../auth-providers/netlify/web/package.json | 4 +- .../auth-providers/supabase/api/package.json | 4 +- .../supabase/setup/package.json | 4 +- .../auth-providers/supabase/web/package.json | 2 +- .../supertokens/api/package.json | 4 +- .../supertokens/setup/package.json | 4 +- .../supertokens/web/package.json | 4 +- packages/auth/package.json | 2 +- packages/babel-config/package.json | 6 +- packages/cli-helpers/package.json | 6 +- .../cli-packages/dataMigrate/package.json | 8 +- packages/cli-packages/storybook/package.json | 10 +- packages/cli/package.json | 20 +- packages/codemods/package.json | 4 +- packages/context/package.json | 4 +- packages/core/package.json | 14 +- packages/create-redwood-app/package.json | 6 +- .../templates/js/api/package.json | 4 +- .../templates/js/package.json | 4 +- .../templates/js/web/package.json | 8 +- .../create-redwood-app/templates/js/yarn.lock | 21244 ++++++++++++++++ .../templates/ts/api/package.json | 4 +- .../templates/ts/package.json | 4 +- .../templates/ts/web/package.json | 8 +- .../create-redwood-app/templates/ts/yarn.lock | 21244 ++++++++++++++++ packages/eslint-config/package.json | 8 +- packages/eslint-plugin/package.json | 4 +- packages/forms/package.json | 2 +- packages/framework-tools/package.json | 2 +- packages/graphql-server/package.json | 10 +- packages/internal/package.json | 10 +- packages/mailer/core/package.json | 6 +- .../mailer/handlers/in-memory/package.json | 6 +- .../mailer/handlers/nodemailer/package.json | 6 +- packages/mailer/handlers/resend/package.json | 6 +- packages/mailer/handlers/studio/package.json | 8 +- .../mailer/renderers/mjml-react/package.json | 6 +- .../mailer/renderers/react-email/package.json | 6 +- packages/prerender/package.json | 14 +- packages/project-config/package.json | 4 +- packages/realtime/package.json | 4 +- packages/record/package.json | 4 +- packages/router/package.json | 4 +- packages/structure/package.json | 4 +- packages/telemetry/package.json | 6 +- packages/testing/package.json | 16 +- packages/tui/package.json | 4 +- packages/vite/package.json | 6 +- packages/web-server/package.json | 8 +- packages/web/package.json | 4 +- yarn.lock | 282 +- 76 files changed, 42835 insertions(+), 347 deletions(-) create mode 100644 packages/create-redwood-app/templates/js/yarn.lock create mode 100644 packages/create-redwood-app/templates/ts/yarn.lock diff --git a/__fixtures__/test-project/api/package.json b/__fixtures__/test-project/api/package.json index 1fe562e03fbe..06193a97741f 100644 --- a/__fixtures__/test-project/api/package.json +++ b/__fixtures__/test-project/api/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "dependencies": { - "@redwoodjs/api": "6.0.7", - "@redwoodjs/auth-dbauth-api": "6.0.7", - "@redwoodjs/graphql-server": "6.0.7" + "@redwoodjs/api": "7.0.0", + "@redwoodjs/auth-dbauth-api": "7.0.0", + "@redwoodjs/graphql-server": "7.0.0" } } diff --git a/__fixtures__/test-project/package.json b/__fixtures__/test-project/package.json index e74028e8ed71..eb82cb3cd099 100644 --- a/__fixtures__/test-project/package.json +++ b/__fixtures__/test-project/package.json @@ -7,8 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7", - "@redwoodjs/project-config": "6.0.7" + "@redwoodjs/core": "7.0.0", + "@redwoodjs/project-config": "7.0.0" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/__fixtures__/test-project/web/package.json b/__fixtures__/test-project/web/package.json index 437769d8feeb..e7239550ebde 100644 --- a/__fixtures__/test-project/web/package.json +++ b/__fixtures__/test-project/web/package.json @@ -11,16 +11,16 @@ ] }, "dependencies": { - "@redwoodjs/auth-dbauth-web": "6.0.7", - "@redwoodjs/forms": "6.0.7", - "@redwoodjs/router": "6.0.7", - "@redwoodjs/web": "6.0.7", + "@redwoodjs/auth-dbauth-web": "7.0.0", + "@redwoodjs/forms": "7.0.0", + "@redwoodjs/router": "7.0.0", + "@redwoodjs/web": "7.0.0", "humanize-string": "2.1.0", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@redwoodjs/vite": "6.0.7", + "@redwoodjs/vite": "7.0.0", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19", "autoprefixer": "^10.4.17", diff --git a/lerna.json b/lerna.json index de05c81be98b..764e550e83ac 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "6.0.7", + "version": "7.0.0", "npmClient": "yarn", "command": { "publish": { diff --git a/packages/adapters/fastify/web/package.json b/packages/adapters/fastify/web/package.json index ee37284118ec..b59769112fd5 100644 --- a/packages/adapters/fastify/web/package.json +++ b/packages/adapters/fastify/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/fastify-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,11 +24,11 @@ "@fastify/http-proxy": "9.3.0", "@fastify/static": "6.12.0", "@fastify/url-data": "5.4.0", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/project-config": "7.0.0", "fast-glob": "3.3.2" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "fastify": "4.25.2", "tsx": "4.6.2", "typescript": "5.3.3", diff --git a/packages/api-server/package.json b/packages/api-server/package.json index d2ec5fc63966..58c4cb3a9fc7 100644 --- a/packages/api-server/package.json +++ b/packages/api-server/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/api-server", - "version": "6.0.7", + "version": "7.0.0", "description": "Redwood's HTTP server for Serverless Functions", "repository": { "type": "git", @@ -30,10 +30,10 @@ }, "dependencies": { "@fastify/url-data": "5.4.0", - "@redwoodjs/context": "6.0.7", - "@redwoodjs/fastify-web": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/web-server": "6.0.7", + "@redwoodjs/context": "7.0.0", + "@redwoodjs/fastify-web": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/web-server": "7.0.0", "chalk": "4.1.2", "chokidar": "3.5.3", "dotenv-defaults": "5.0.2", @@ -49,7 +49,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/aws-lambda": "8.10.126", "@types/lodash": "4.14.201", "@types/qs": "6.9.11", diff --git a/packages/api/package.json b/packages/api/package.json index 319852206189..b3473952caa4 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", diff --git a/packages/auth-providers/auth0/api/package.json b/packages/auth-providers/auth0/api/package.json index 9380412fd0b5..b8df03066329 100644 --- a/packages/auth-providers/auth0/api/package.json +++ b/packages/auth-providers/auth0/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-auth0-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -31,7 +31,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/auth0/setup/package.json b/packages/auth-providers/auth0/setup/package.json index da9767d3176b..b1af0773d41b 100644 --- a/packages/auth-providers/auth0/setup/package.json +++ b/packages/auth-providers/auth0/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-auth0-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/auth0/web/package.json b/packages/auth-providers/auth0/web/package.json index 1e5db6c7bf48..5e8fbad21a24 100644 --- a/packages/auth-providers/auth0/web/package.json +++ b/packages/auth-providers/auth0/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-auth0-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/azureActiveDirectory/api/package.json b/packages/auth-providers/azureActiveDirectory/api/package.json index 083ee460df2f..8417c15bd114 100644 --- a/packages/auth-providers/azureActiveDirectory/api/package.json +++ b/packages/auth-providers/azureActiveDirectory/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-azure-active-directory-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -31,7 +31,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", diff --git a/packages/auth-providers/azureActiveDirectory/setup/package.json b/packages/auth-providers/azureActiveDirectory/setup/package.json index 73a96b750efa..f069cf493109 100644 --- a/packages/auth-providers/azureActiveDirectory/setup/package.json +++ b/packages/auth-providers/azureActiveDirectory/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-azure-active-directory-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/azureActiveDirectory/web/package.json b/packages/auth-providers/azureActiveDirectory/web/package.json index f70e71266ed4..70fd6bb30156 100644 --- a/packages/auth-providers/azureActiveDirectory/web/package.json +++ b/packages/auth-providers/azureActiveDirectory/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-azure-active-directory-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/clerk/api/package.json b/packages/auth-providers/clerk/api/package.json index 255b5a54f6c7..c49ce7a9274e 100644 --- a/packages/auth-providers/clerk/api/package.json +++ b/packages/auth-providers/clerk/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-clerk-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/aws-lambda": "8.10.126", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/clerk/setup/package.json b/packages/auth-providers/clerk/setup/package.json index c40024ccac78..d3a746e51484 100644 --- a/packages/auth-providers/clerk/setup/package.json +++ b/packages/auth-providers/clerk/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-clerk-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -22,7 +22,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/clerk/web/package.json b/packages/auth-providers/clerk/web/package.json index be25b5de15c2..5d5677eeaf26 100644 --- a/packages/auth-providers/clerk/web/package.json +++ b/packages/auth-providers/clerk/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-clerk-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/custom/setup/package.json b/packages/auth-providers/custom/setup/package.json index 5ae5e8233715..45acd352e1b3 100644 --- a/packages/auth-providers/custom/setup/package.json +++ b/packages/auth-providers/custom/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-custom-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/dbAuth/api/package.json b/packages/auth-providers/dbAuth/api/package.json index a0ca9520ce8f..491334ed712f 100644 --- a/packages/auth-providers/dbAuth/api/package.json +++ b/packages/auth-providers/dbAuth/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-dbauth-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/project-config": "7.0.0", "base64url": "3.0.1", "core-js": "3.35.1", "md5": "2.3.0", @@ -33,7 +33,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@simplewebauthn/server": "7.4.0", "@types/md5": "2.3.5", "@types/uuid": "9.0.7", diff --git a/packages/auth-providers/dbAuth/setup/package.json b/packages/auth-providers/dbAuth/setup/package.json index b2b7ac41d723..9e95813b4fdc 100644 --- a/packages/auth-providers/dbAuth/setup/package.json +++ b/packages/auth-providers/dbAuth/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-dbauth-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -22,7 +22,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "@simplewebauthn/browser": "7.4.0", "core-js": "3.35.1", "prompts": "2.4.2", diff --git a/packages/auth-providers/dbAuth/web/package.json b/packages/auth-providers/dbAuth/web/package.json index 37be976c8753..c8dfd9d38f5e 100644 --- a/packages/auth-providers/dbAuth/web/package.json +++ b/packages/auth-providers/dbAuth/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-dbauth-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -25,7 +25,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "@simplewebauthn/browser": "7.4.0", "core-js": "3.35.1" }, diff --git a/packages/auth-providers/firebase/api/package.json b/packages/auth-providers/firebase/api/package.json index 276e643feb42..524f2d02aca8 100644 --- a/packages/auth-providers/firebase/api/package.json +++ b/packages/auth-providers/firebase/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-firebase-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/aws-lambda": "8.10.126", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/firebase/setup/package.json b/packages/auth-providers/firebase/setup/package.json index 62ffdb2927db..983888702503 100644 --- a/packages/auth-providers/firebase/setup/package.json +++ b/packages/auth-providers/firebase/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-firebase-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/firebase/web/package.json b/packages/auth-providers/firebase/web/package.json index 17fd3a1c807a..b8fa36f3eed3 100644 --- a/packages/auth-providers/firebase/web/package.json +++ b/packages/auth-providers/firebase/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-firebase-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/netlify/api/package.json b/packages/auth-providers/netlify/api/package.json index f80cfa916c32..65307c7b004f 100644 --- a/packages/auth-providers/netlify/api/package.json +++ b/packages/auth-providers/netlify/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-netlify-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", diff --git a/packages/auth-providers/netlify/setup/package.json b/packages/auth-providers/netlify/setup/package.json index f4f0b325e500..b28db05b4990 100644 --- a/packages/auth-providers/netlify/setup/package.json +++ b/packages/auth-providers/netlify/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-netlify-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/netlify/web/package.json b/packages/auth-providers/netlify/web/package.json index 87b1d565adb7..df0b13feaaf6 100644 --- a/packages/auth-providers/netlify/web/package.json +++ b/packages/auth-providers/netlify/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-netlify-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/supabase/api/package.json b/packages/auth-providers/supabase/api/package.json index c4cb4b4239b7..69cd4622cc7f 100644 --- a/packages/auth-providers/supabase/api/package.json +++ b/packages/auth-providers/supabase/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-supabase-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -30,7 +30,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/aws-lambda": "8.10.126", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", diff --git a/packages/auth-providers/supabase/setup/package.json b/packages/auth-providers/supabase/setup/package.json index 0db831b27abb..becedbc1f646 100644 --- a/packages/auth-providers/supabase/setup/package.json +++ b/packages/auth-providers/supabase/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-supabase-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -22,7 +22,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/supabase/web/package.json b/packages/auth-providers/supabase/web/package.json index 87c21b77a526..be07c28c6a12 100644 --- a/packages/auth-providers/supabase/web/package.json +++ b/packages/auth-providers/supabase/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-supabase-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", diff --git a/packages/auth-providers/supertokens/api/package.json b/packages/auth-providers/supertokens/api/package.json index 4773ed13f360..5f6d9cf7c1f8 100644 --- a/packages/auth-providers/supertokens/api/package.json +++ b/packages/auth-providers/supertokens/api/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-supertokens-api", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -31,7 +31,7 @@ "devDependencies": { "@babel/cli": "7.23.9", "@babel/core": "^7.22.20", - "@redwoodjs/api": "6.0.7", + "@redwoodjs/api": "7.0.0", "@types/jsonwebtoken": "9.0.5", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/auth-providers/supertokens/setup/package.json b/packages/auth-providers/supertokens/setup/package.json index 029f5aeeca47..f909283a0180 100644 --- a/packages/auth-providers/supertokens/setup/package.json +++ b/packages/auth-providers/supertokens/setup/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-supertokens-setup", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/cli-helpers": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth-providers/supertokens/web/package.json b/packages/auth-providers/supertokens/web/package.json index d24f36ebaec0..f081a75eaa8e 100644 --- a/packages/auth-providers/supertokens/web/package.json +++ b/packages/auth-providers/supertokens/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth-supertokens-web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -24,7 +24,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/auth/package.json b/packages/auth/package.json index 495e70d328a0..77246d9202a7 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/auth", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", diff --git a/packages/babel-config/package.json b/packages/babel-config/package.json index f0626e41446a..5fe88b09e8c7 100644 --- a/packages/babel-config/package.json +++ b/packages/babel-config/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/babel-config", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -35,7 +35,7 @@ "@babel/register": "^7.22.15", "@babel/runtime-corejs3": "7.23.9", "@babel/traverse": "^7.22.20", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/project-config": "7.0.0", "babel-plugin-auto-import": "1.1.0", "babel-plugin-graphql-tag": "3.3.0", "babel-plugin-module-resolver": "5.0.0", @@ -45,7 +45,7 @@ "typescript": "5.3.3" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/babel-plugin-tester": "9.0.9", "@types/babel__core": "7.20.4", "@types/node": "20.11.10", diff --git a/packages/cli-helpers/package.json b/packages/cli-helpers/package.json index 3c4e6590b4d7..1dfabf1ef79f 100644 --- a/packages/cli-helpers/package.json +++ b/packages/cli-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/cli-helpers", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -30,8 +30,8 @@ "@babel/core": "^7.22.20", "@iarna/toml": "2.2.5", "@opentelemetry/api": "1.7.0", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/telemetry": "6.0.7", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/telemetry": "7.0.0", "chalk": "4.1.2", "dotenv": "16.3.1", "execa": "5.1.1", diff --git a/packages/cli-packages/dataMigrate/package.json b/packages/cli-packages/dataMigrate/package.json index 08162fd5e552..8ff1c11e774d 100644 --- a/packages/cli-packages/dataMigrate/package.json +++ b/packages/cli-packages/dataMigrate/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/cli-data-migrate", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -25,8 +25,8 @@ "test:unit": "yarn jest src" }, "dependencies": { - "@redwoodjs/babel-config": "6.0.7", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/babel-config": "7.0.0", + "@redwoodjs/project-config": "7.0.0", "chalk": "4.1.2", "dotenv-defaults": "5.0.2", "execa": "5.1.1", @@ -37,7 +37,7 @@ }, "devDependencies": { "@prisma/client": "5.9.1", - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/fs-extra": "11.0.4", "@types/yargs": "17.0.32", "jest": "29.7.0", diff --git a/packages/cli-packages/storybook/package.json b/packages/cli-packages/storybook/package.json index e3b7d86ca92c..64bd6e445234 100644 --- a/packages/cli-packages/storybook/package.json +++ b/packages/cli-packages/storybook/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/cli-storybook", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -20,9 +20,9 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@redwoodjs/cli-helpers": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/telemetry": "6.0.7", + "@redwoodjs/cli-helpers": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/telemetry": "7.0.0", "@storybook/addon-a11y": "7.6.10", "@storybook/addon-docs": "7.6.10", "@storybook/addon-essentials": "7.6.10", @@ -34,7 +34,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/yargs": "17.0.32", "tsx": "4.6.2", "typescript": "5.3.3" diff --git a/packages/cli/package.json b/packages/cli/package.json index 1bcdec46ac46..a59769f9ac23 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/cli", - "version": "6.0.7", + "version": "7.0.0", "description": "The Redwood Command Line", "repository": { "type": "git", @@ -38,15 +38,15 @@ "@opentelemetry/sdk-trace-node": "1.18.1", "@opentelemetry/semantic-conventions": "1.18.1", "@prisma/internals": "5.9.1", - "@redwoodjs/api-server": "6.0.7", - "@redwoodjs/cli-helpers": "6.0.7", - "@redwoodjs/fastify-web": "6.0.7", - "@redwoodjs/internal": "6.0.7", - "@redwoodjs/prerender": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/structure": "6.0.7", - "@redwoodjs/telemetry": "6.0.7", - "@redwoodjs/web-server": "6.0.7", + "@redwoodjs/api-server": "7.0.0", + "@redwoodjs/cli-helpers": "7.0.0", + "@redwoodjs/fastify-web": "7.0.0", + "@redwoodjs/internal": "7.0.0", + "@redwoodjs/prerender": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/structure": "7.0.0", + "@redwoodjs/telemetry": "7.0.0", + "@redwoodjs/web-server": "7.0.0", "archiver": "6.0.1", "boxen": "5.1.2", "camelcase": "6.3.0", diff --git a/packages/codemods/package.json b/packages/codemods/package.json index ff67bc89a411..5b0acbbc33f4 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/codemods", - "version": "6.0.7", + "version": "7.0.0", "description": "Codemods to ease upgrading a RedwoodJS Project", "repository": { "type": "git", @@ -30,7 +30,7 @@ "@babel/runtime-corejs3": "7.23.9", "@babel/traverse": "^7.22.20", "@iarna/toml": "2.2.5", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/project-config": "7.0.0", "@svgr/core": "8.0.0", "@svgr/plugin-jsx": "8.0.1", "@vscode/ripgrep": "1.15.6", diff --git a/packages/context/package.json b/packages/context/package.json index a95c24247f40..ce380316f915 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/context", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -20,7 +20,7 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3" }, diff --git a/packages/core/package.json b/packages/core/package.json index 73b1e301323f..3b1b6cc1b9a2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/core", - "version": "6.0.7", + "version": "7.0.0", "description": "Foundational packages and config required to build RedwoodJS.", "repository": { "type": "git", @@ -38,12 +38,12 @@ "@babel/cli": "7.23.9", "@babel/runtime-corejs3": "7.23.9", "@pmmmwh/react-refresh-webpack-plugin": "0.5.11", - "@redwoodjs/cli": "6.0.7", - "@redwoodjs/eslint-config": "6.0.7", - "@redwoodjs/internal": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/testing": "6.0.7", - "@redwoodjs/web-server": "6.0.7", + "@redwoodjs/cli": "7.0.0", + "@redwoodjs/eslint-config": "7.0.0", + "@redwoodjs/internal": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/testing": "7.0.0", + "@redwoodjs/web-server": "7.0.0", "babel-loader": "^9.1.3", "babel-timing": "0.9.1", "copy-webpack-plugin": "11.0.0", diff --git a/packages/create-redwood-app/package.json b/packages/create-redwood-app/package.json index d5e25c5c5618..f904d0e4747b 100644 --- a/packages/create-redwood-app/package.json +++ b/packages/create-redwood-app/package.json @@ -1,6 +1,6 @@ { "name": "create-redwood-app", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -31,8 +31,8 @@ "@opentelemetry/resources": "1.18.1", "@opentelemetry/sdk-trace-node": "1.18.1", "@opentelemetry/semantic-conventions": "1.18.1", - "@redwoodjs/framework-tools": "6.0.7", - "@redwoodjs/tui": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", + "@redwoodjs/tui": "7.0.0", "@types/babel__core": "7.20.4", "chalk": "4.1.2", "check-node-version": "4.2.1", diff --git a/packages/create-redwood-app/templates/js/api/package.json b/packages/create-redwood-app/templates/js/api/package.json index 4ff4b4693ea9..aa20a71a09b1 100644 --- a/packages/create-redwood-app/templates/js/api/package.json +++ b/packages/create-redwood-app/templates/js/api/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "dependencies": { - "@redwoodjs/api": "6.0.7", - "@redwoodjs/graphql-server": "6.0.7" + "@redwoodjs/api": "7.0.0", + "@redwoodjs/graphql-server": "7.0.0" } } diff --git a/packages/create-redwood-app/templates/js/package.json b/packages/create-redwood-app/templates/js/package.json index e74028e8ed71..eb82cb3cd099 100644 --- a/packages/create-redwood-app/templates/js/package.json +++ b/packages/create-redwood-app/templates/js/package.json @@ -7,8 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7", - "@redwoodjs/project-config": "6.0.7" + "@redwoodjs/core": "7.0.0", + "@redwoodjs/project-config": "7.0.0" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/packages/create-redwood-app/templates/js/web/package.json b/packages/create-redwood-app/templates/js/web/package.json index bd94315e00cb..80467e69b76a 100644 --- a/packages/create-redwood-app/templates/js/web/package.json +++ b/packages/create-redwood-app/templates/js/web/package.json @@ -11,14 +11,14 @@ ] }, "dependencies": { - "@redwoodjs/forms": "6.0.7", - "@redwoodjs/router": "6.0.7", - "@redwoodjs/web": "6.0.7", + "@redwoodjs/forms": "7.0.0", + "@redwoodjs/router": "7.0.0", + "@redwoodjs/web": "7.0.0", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@redwoodjs/vite": "6.0.7", + "@redwoodjs/vite": "7.0.0", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19" } diff --git a/packages/create-redwood-app/templates/js/yarn.lock b/packages/create-redwood-app/templates/js/yarn.lock new file mode 100644 index 000000000000..45c9f67508d5 --- /dev/null +++ b/packages/create-redwood-app/templates/js/yarn.lock @@ -0,0 +1,21244 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + +"@adobe/css-tools@npm:^4.3.2": + version: 4.3.3 + resolution: "@adobe/css-tools@npm:4.3.3" + checksum: 10c0/e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 + languageName: node + linkType: hard + +"@apollo/client@npm:3.8.10": + version: 3.8.10 + resolution: "@apollo/client@npm:3.8.10" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + "@wry/equality": "npm:^0.5.6" + "@wry/trie": "npm:^0.5.0" + graphql-tag: "npm:^2.12.6" + hoist-non-react-statics: "npm:^3.3.2" + optimism: "npm:^0.18.0" + prop-types: "npm:^15.7.2" + response-iterator: "npm:^0.2.6" + symbol-observable: "npm:^4.0.0" + ts-invariant: "npm:^0.10.3" + tslib: "npm:^2.3.0" + zen-observable-ts: "npm:^1.2.5" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + checksum: 10c0/983306f61de042aca2f02e414533fbdac0c9c905648a98b42bb79bccb19012306eebb3c55c6d665523addbc1948625d1aae70bdc2dd511775b7a962a40dfc5b1 + languageName: node + linkType: hard + +"@ardatan/relay-compiler@npm:12.0.0": + version: 12.0.0 + resolution: "@ardatan/relay-compiler@npm:12.0.0" + dependencies: + "@babel/core": "npm:^7.14.0" + "@babel/generator": "npm:^7.14.0" + "@babel/parser": "npm:^7.14.0" + "@babel/runtime": "npm:^7.0.0" + "@babel/traverse": "npm:^7.14.0" + "@babel/types": "npm:^7.0.0" + babel-preset-fbjs: "npm:^3.4.0" + chalk: "npm:^4.0.0" + fb-watchman: "npm:^2.0.0" + fbjs: "npm:^3.0.0" + glob: "npm:^7.1.1" + immutable: "npm:~3.7.6" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + relay-runtime: "npm:12.0.0" + signedsource: "npm:^1.0.0" + yargs: "npm:^15.3.1" + peerDependencies: + graphql: "*" + bin: + relay-compiler: bin/relay-compiler + checksum: 10c0/7207d65dd39d3a6202fcee81b03338409642a0ff4e7f799b4a074025429ce2b17b6c71c9579a6328b0f4548763ba4efbff0436cddbcad934af00cc4dbc7ac4e1 + languageName: node + linkType: hard + +"@ardatan/sync-fetch@npm:^0.0.1": + version: 0.0.1 + resolution: "@ardatan/sync-fetch@npm:0.0.1" + dependencies: + node-fetch: "npm:^2.6.1" + checksum: 10c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f + languageName: node + linkType: hard + +"@babel/cli@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/cli@npm:7.23.9" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.17" + "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3" + chokidar: "npm:^3.4.0" + commander: "npm:^4.0.1" + convert-source-map: "npm:^2.0.0" + fs-readdir-recursive: "npm:^1.1.0" + glob: "npm:^7.2.0" + make-dir: "npm:^2.1.0" + slash: "npm:^2.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + dependenciesMeta: + "@nicolo-ribaudo/chokidar-2": + optional: true + chokidar: + optional: true + bin: + babel: ./bin/babel.js + babel-external-helpers: ./bin/babel-external-helpers.js + checksum: 10c0/0a5e9399e95ff0efea10db217e48682e025bd09d51aa96886e5c4d8c7b9d2115bc17d00704dc05e9ae7ab858c26467fec15e87a100cf995567c395f2941df4a0 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" + dependencies: + "@babel/highlight": "npm:^7.23.4" + chalk: "npm:^2.4.2" + checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/compat-data@npm:7.23.5" + checksum: 10c0/081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.22.20, @babel/core@npm:^7.23.5, @babel/core@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/core@npm:7.23.9" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@babel/template": "npm:^7.23.9" + "@babel/traverse": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/03883300bf1252ab4c9ba5b52f161232dd52873dbe5cde9289bb2bb26e935c42682493acbac9194a59a3b6cbd17f4c4c84030db8d6d482588afe64531532ff9b + languageName: node + linkType: hard + +"@babel/eslint-parser@npm:7.23.10": + version: 7.23.10 + resolution: "@babel/eslint-parser@npm:7.23.10" + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" + eslint-visitor-keys: "npm:^2.1.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + checksum: 10c0/dfc091d44c86c72658d53abe66c778f7aa436672d66ae99a0b72857c968defed4749c18d2d3a35b1f61c77a193761ae7a71997dbe43c4c7cffcf945bd106bd67 + languageName: node + linkType: hard + +"@babel/eslint-plugin@npm:7.23.5": + version: 7.23.5 + resolution: "@babel/eslint-plugin@npm:7.23.5" + dependencies: + eslint-rule-composer: "npm:^0.3.0" + peerDependencies: + "@babel/eslint-parser": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + checksum: 10c0/adaf0975bab774c9a7ddd7aac6f2f7e4e0b087fea24759d8538ebe988b72eaca5928d9afc6b9c13927bf3e3c6ac66795d1060f6a8bfa9748de27f5d93d3fef64 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.7.2": + version: 7.23.6 + resolution: "@babel/generator@npm:7.23.6" + dependencies: + "@babel/types": "npm:^7.23.6" + "@jridgewell/gen-mapping": "npm:^0.3.2" + "@jridgewell/trace-mapping": "npm:^0.3.17" + jsesc: "npm:^2.5.1" + checksum: 10c0/53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" + dependencies: + "@babel/types": "npm:^7.22.15" + checksum: 10c0/2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" + dependencies: + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.23.6": + version: 7.23.10 + resolution: "@babel/helper-create-class-features-plugin@npm:7.23.10" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-member-expression-to-functions": "npm:^7.23.0" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/f30437aa16f3585cc3382ea630f24457ef622c22f5e4eccffbc03f6a81efbef0b6714fb5a78baa64c838884ba7e1427e3280d7b27481b9f587bc8fbbed05dd36 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.15, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + regexpu-core: "npm:^5.3.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.5.0": + version: 0.5.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/2b053b96a0c604a7e0f5c7d13a8a55f4451d938f7af42bd40f62a87df15e6c87a0b1dbd893a0f0bb51077b54dc3ba00a58b166531a5940ad286ab685dd8979ec + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.22.5, @babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" + dependencies: + "@babel/types": "npm:^7.23.0" + checksum: 10c0/b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" + dependencies: + "@babel/types": "npm:^7.22.15" + checksum: 10c0/4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: 10c0/d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-wrap-function": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-member-expression-to-functions": "npm:^7.22.15" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/helper-string-parser@npm:7.23.4" + checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-wrap-function@npm:7.22.20" + dependencies: + "@babel/helper-function-name": "npm:^7.22.5" + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.22.19" + checksum: 10c0/97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/helpers@npm:7.23.9" + dependencies: + "@babel/template": "npm:^7.23.9" + "@babel/traverse": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + checksum: 10c0/f69fd0aca96a6fb8bd6dd044cd8a5c0f1851072d4ce23355345b9493c4032e76d1217f86b70df795e127553cf7f3fcd1587ede9d1b03b95e8b62681ca2165b87 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.22.20" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.3.2": + version: 7.23.9 + resolution: "@babel/parser@npm:7.23.9" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/7df97386431366d4810538db4b9ec538f4377096f720c0591c7587a16f6810e62747e9fbbfa1ff99257fd4330035e4fb1b5b77c7bd3b97ce0d2e3780a6618975 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.7" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/355746e21ad7f43e4f4daef54cfe2ef461ecd19446b2afedd53c39df1bf9aa2eeeeaabee2279b1321de89a97c9360e4f76e9ba950fee50ff1676c25f6929d625 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 + languageName: node + linkType: hard + +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": + version: 7.18.6 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf + languageName: node + linkType: hard + +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": + version: 7.20.7 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" + dependencies: + "@babel/compat-data": "npm:^7.20.5" + "@babel/helper-compilation-targets": "npm:^7.20.7" + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.20.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 + languageName: node + linkType: hard + +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": + version: 7.21.0 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-flow@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8a5e1e8b6a3728a2c8fe6d70c09a43642e737d9c0485e1b041cd3a6021ef05376ec3c9137be3b118c622ba09b5770d26fdc525473f8d06d4ab9e46de2783dd0a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.9" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.20" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4ff75f9ce500e1de8c0236fa5122e6475a477d19cb9a4c2ae8651e78e717ebb2e2cecfeca69d420def779deaec78b945843b9ffd15f02ecd7de5072030b4469b + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-block-scoping@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/83006804dddf980ab1bcd6d67bc381e24b58c776507c34f990468f820d0da71dba3697355ca4856532fa2eeb2a1e3e73c780f03760b5507a511cbedb0308e276 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-class-properties@npm:7.23.3" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-class-static-block@npm:7.23.4" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/fdca96640ef29d8641a7f8de106f65f18871b38cc01c0f7b696d2b49c76b77816b30a812c08e759d06dd10b4d9b3af6b5e4ac22a2017a88c4077972224b77ab0 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.8": + version: 7.23.8 + resolution: "@babel/plugin-transform-classes@npm:7.23.8" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/227ac5166501e04d9e7fbd5eda6869b084ffa4af6830ac12544ac6ea14953ca00eb1762b0df9349c0f6c8d2a799385910f558066cd0fb85b9ca437b1131a6043 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-computed-properties@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/template": "npm:^7.22.15" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-destructuring@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/19ae4a4a2ca86d35224734c41c48b2aa6a13139f3cfa1cbd18c0e65e461de8b65687dec7e52b7a72bb49db04465394c776aa1b13a2af5dc975b2a0cde3dcab67 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.23.3" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516 + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/38bf04f851e36240bbe83ace4169da626524f4107bfb91f05b4ad93a5fb6a36d5b3d30b8883c1ba575ccfc1bac7938e90ca2e3cb227f7b3f4a9424beec6fd4a7 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-flow": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9ab627f9668fc1f95564b26bffd6706f86205960d9ccc168236752fbef65dbe10aa0ce74faae12f48bb3b72ec7f38ef2a78b4874c222c1e85754e981639f3b33 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/plugin-transform-for-of@npm:7.23.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-function-name@npm:7.23.3" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-json-strings@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/39e82223992a9ad857722ae051291935403852ad24b0dd64c645ca1c10517b6bf9822377d88643fed8b3e61a4e3f7e5ae41cf90eb07c40a786505d47d5970e54 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4 + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/87b034dd13143904e405887e6125d76c27902563486efc66b7d9a9d8f9406b76c6ac42d7b37224014af5783d7edb465db0cdecd659fa3227baad0b3a6a35deff + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-amd@npm:7.23.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-simple-access": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.9" + dependencies: + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1926631fe9d87c0c53427a3420ad49da62d53320d0016b6afab64e5417a672aa5bdff3ea1d24746ffa1e43319c28a80f5d8cef0ad214760d399c293b5850500f + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-umd@npm:7.23.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-new-target@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bce490d22da5c87ff27fffaff6ad5a4d4979b8d7b72e30857f191e9c1e1824ba73bb8d7081166289369e388f94f0ce5383a593b1fc84d09464a062c75f824b0b + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e34902da4f5588dc4812c92cb1f6a5e3e3647baf7b4623e30942f551bf1297621abec4e322ebfa50b320c987c0f34d9eb4355b3d289961d9035e2126e3119c12 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.23.4" + dependencies: + "@babel/compat-data": "npm:^7.23.3" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b56017992ffe7fcd1dd9a9da67c39995a141820316266bcf7d77dc912980d228ccbd3f36191d234f5cc389b09157b5d2a955e33e8fb368319534affd1c72b262 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-object-super@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4ef61812af0e4928485e28301226ce61139a8b8cea9e9a919215ebec4891b9fea2eb7a83dc3090e2679b7d7b2c8653da601fbc297d2addc54a908b315173991e + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.23.3, @babel/plugin-transform-optional-chaining@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/305b773c29ad61255b0e83ec1e92b2f7af6aa58be4cba1e3852bddaa14f7d2afd7b4438f41c28b179d6faac7eb8d4fb5530a17920294f25d459b8f84406bfbfb + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-parameters@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-private-methods@npm:7.23.3" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.23.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8d31b28f24204b4d13514cd3a8f3033abf575b1a6039759ddd6e1d82dd33ba7281f9bc85c9f38072a665d69bfa26dc40737eefaf9d397b024654a483d2357bf5 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-property-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-display-name@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6b586508fc58998483d4ee93a7e784c4f4d2350e2633739cf1990b7ad172e13906f72382fdaf7f07b4e3c7e7555342634d392bdeb1a079bb64762c6368ca9a32 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a3aad7cf738e9bfaddc26cdbb83bb9684c2e689d26fb0793d772af0c8da0cd25bb02523d192fbc6946c32143e56b472c1d33fa82466b3f2d3346e1ce8fe83cf6 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.23.4 + resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/types": "npm:^7.23.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.23.3" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-regenerator@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-reserved-words@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd + languageName: node + linkType: hard + +"@babel/plugin-transform-runtime@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-runtime@npm:7.23.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + babel-plugin-polyfill-corejs2: "npm:^0.4.8" + babel-plugin-polyfill-corejs3: "npm:^0.9.0" + babel-plugin-polyfill-regenerator: "npm:^0.5.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3b959c2b88ea0009c288fa190d9f69b0d26cb336b8a7cab54a5e54b844f33cce1996725c15305a40049c8f23ca30082ee27e1f6853ff35fad723543e3d2dba47 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-spread@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-template-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.23.3": + version: 7.23.6 + resolution: "@babel/plugin-transform-typescript@npm:7.23.6" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-create-class-features-plugin": "npm:^7.23.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-typescript": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.22.20": + version: 7.23.9 + resolution: "@babel/preset-env@npm:7.23.9" + dependencies: + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.7" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + "@babel/plugin-syntax-import-assertions": "npm:^7.23.3" + "@babel/plugin-syntax-import-attributes": "npm:^7.23.3" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.23.3" + "@babel/plugin-transform-async-generator-functions": "npm:^7.23.9" + "@babel/plugin-transform-async-to-generator": "npm:^7.23.3" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3" + "@babel/plugin-transform-block-scoping": "npm:^7.23.4" + "@babel/plugin-transform-class-properties": "npm:^7.23.3" + "@babel/plugin-transform-class-static-block": "npm:^7.23.4" + "@babel/plugin-transform-classes": "npm:^7.23.8" + "@babel/plugin-transform-computed-properties": "npm:^7.23.3" + "@babel/plugin-transform-destructuring": "npm:^7.23.3" + "@babel/plugin-transform-dotall-regex": "npm:^7.23.3" + "@babel/plugin-transform-duplicate-keys": "npm:^7.23.3" + "@babel/plugin-transform-dynamic-import": "npm:^7.23.4" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3" + "@babel/plugin-transform-export-namespace-from": "npm:^7.23.4" + "@babel/plugin-transform-for-of": "npm:^7.23.6" + "@babel/plugin-transform-function-name": "npm:^7.23.3" + "@babel/plugin-transform-json-strings": "npm:^7.23.4" + "@babel/plugin-transform-literals": "npm:^7.23.3" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.4" + "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3" + "@babel/plugin-transform-modules-amd": "npm:^7.23.3" + "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/plugin-transform-modules-systemjs": "npm:^7.23.9" + "@babel/plugin-transform-modules-umd": "npm:^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" + "@babel/plugin-transform-new-target": "npm:^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.4" + "@babel/plugin-transform-numeric-separator": "npm:^7.23.4" + "@babel/plugin-transform-object-rest-spread": "npm:^7.23.4" + "@babel/plugin-transform-object-super": "npm:^7.23.3" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.4" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.4" + "@babel/plugin-transform-parameters": "npm:^7.23.3" + "@babel/plugin-transform-private-methods": "npm:^7.23.3" + "@babel/plugin-transform-private-property-in-object": "npm:^7.23.4" + "@babel/plugin-transform-property-literals": "npm:^7.23.3" + "@babel/plugin-transform-regenerator": "npm:^7.23.3" + "@babel/plugin-transform-reserved-words": "npm:^7.23.3" + "@babel/plugin-transform-shorthand-properties": "npm:^7.23.3" + "@babel/plugin-transform-spread": "npm:^7.23.3" + "@babel/plugin-transform-sticky-regex": "npm:^7.23.3" + "@babel/plugin-transform-template-literals": "npm:^7.23.3" + "@babel/plugin-transform-typeof-symbol": "npm:^7.23.3" + "@babel/plugin-transform-unicode-escapes": "npm:^7.23.3" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.23.3" + "@babel/plugin-transform-unicode-regex": "npm:^7.23.3" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.23.3" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.8" + babel-plugin-polyfill-corejs3: "npm:^0.9.0" + babel-plugin-polyfill-regenerator: "npm:^0.5.5" + core-js-compat: "npm:^3.31.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2837a42089180e51bfd6864b6d197e01fc0abec1920422e71c0513c2fc8fb5f3bfe694ed778cc4e45856c546964945bc53bf8105e4b26f3580ce3685fa50cc0f + languageName: node + linkType: hard + +"@babel/preset-flow@npm:^7.13.13": + version: 7.23.3 + resolution: "@babel/preset-flow@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-transform-flow-strip-types": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1cf109925791f2af679f03289848d27596b4f27cb0ad4ee74a8dd4c1cbecc119bdef3b45cbbe12489bc9bdf61163f94c1c0bf6013cc58c325f1cc99edc01bda9 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.22.15": + version: 7.23.3 + resolution: "@babel/preset-react@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-transform-react-display-name": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.22.15": + version: 7.23.3 + resolution: "@babel/preset-typescript@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/plugin-transform-typescript": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7 + languageName: node + linkType: hard + +"@babel/register@npm:^7.13.16, @babel/register@npm:^7.22.15": + version: 7.23.7 + resolution: "@babel/register@npm:7.23.7" + dependencies: + clone-deep: "npm:^4.0.1" + find-cache-dir: "npm:^2.0.0" + make-dir: "npm:^2.1.0" + pirates: "npm:^4.0.6" + source-map-support: "npm:^0.5.16" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b2466e41a4394e725b57e139ba45c3f61b88546d3cb443e84ce46cb34071b60c6cdb706a14c58a1443db530691a54f51da1f0c97f6c1aecbb838a2fb7eb5dbb9 + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 10c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + languageName: node + linkType: hard + +"@babel/runtime-corejs3@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/runtime-corejs3@npm:7.23.9" + dependencies: + core-js-pure: "npm:^3.30.2" + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/7926ebf38285b41e2a486b25aaa10861db1cfd29accd0b0eaa1338080d853339481f78d8d73e5d1f219a8ad52c477dcd4e7cc3473d1befbb290c77b27ed1ec91 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": + version: 7.23.9 + resolution: "@babel/runtime@npm:7.23.9" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/e71205fdd7082b2656512cc98e647d9ea7e222e4fe5c36e9e5adc026446fcc3ba7b3cdff8b0b694a0b78bb85db83e7b1e3d4c56ef90726682b74f13249cf952d + languageName: node + linkType: hard + +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.23.9, @babel/template@npm:^7.3.3": + version: 7.23.9 + resolution: "@babel/template@npm:7.23.9" + dependencies: + "@babel/code-frame": "npm:^7.23.5" + "@babel/parser": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + checksum: 10c0/0e8b60119433787742bc08ae762bbd8d6755611c4cabbcb7627b292ec901a55af65d93d1c88572326069efb64136ef151ec91ffb74b2df7689bbab237030833a + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/traverse@npm:7.23.9" + dependencies: + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/parser": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/d1615d1d02f04d47111a7ea4446a1a6275668ca39082f31d51f08380de9502e19862be434eaa34b022ce9a17dbb8f9e2b73a746c654d9575f3a680a7ffdf5630 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.1.6, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.9 + resolution: "@babel/types@npm:7.23.9" + dependencies: + "@babel/helper-string-parser": "npm:^7.23.4" + "@babel/helper-validator-identifier": "npm:^7.22.20" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/edc7bb180ce7e4d2aea10c6972fb10474341ac39ba8fdc4a27ffb328368dfdfbf40fca18e441bbe7c483774500d5c05e222cec276c242e952853dcaf4eb884f7 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@chevrotain/cst-dts-gen@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/cst-dts-gen@npm:10.5.0" + dependencies: + "@chevrotain/gast": "npm:10.5.0" + "@chevrotain/types": "npm:10.5.0" + lodash: "npm:4.17.21" + checksum: 10c0/ae621f2255be6f2838775aa022e54c9557a7fe3f42b52ced3d44b2dac26a48020c9db76c49b90dbb2982eb152c385a4ff2dac7578deef6131592fe13bda93ea7 + languageName: node + linkType: hard + +"@chevrotain/gast@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/gast@npm:10.5.0" + dependencies: + "@chevrotain/types": "npm:10.5.0" + lodash: "npm:4.17.21" + checksum: 10c0/4e894fe9932ef8a74a0d147c78f73fc0ef8aeb7170a79d66648c07c1de505ef0dc8b8dc0a5a69a58abd92adb7a165d9a540cb6b2393589b1025af18bcdb585ab + languageName: node + linkType: hard + +"@chevrotain/types@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/types@npm:10.5.0" + checksum: 10c0/9131b833e9658263c114713758379e06e79e94e0cd0cf178ec9ddbc5672896c7e890d230b5e72402cd4d7ce861835ce9489d0402723620650d4b6c353b497ec6 + languageName: node + linkType: hard + +"@chevrotain/utils@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/utils@npm:10.5.0" + checksum: 10c0/a7d99b8e9ecc8ceb0d46b5f194710768055c2b932aca316a5f1e77d8c1a6ecb8f4c5b39e4bac4dcd7189dfa5025dcdc112903511037b03a4ea88d216b68b4708 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:0.5.7, @discoveryjs/json-ext@npm:^0.5.0": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 10c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c + languageName: node + linkType: hard + +"@envelop/core@npm:5.0.0, @envelop/core@npm:^5.0.0": + version: 5.0.0 + resolution: "@envelop/core@npm:5.0.0" + dependencies: + "@envelop/types": "npm:5.0.0" + tslib: "npm:^2.5.0" + checksum: 10c0/abc06585177a634d355fd7cec22a838086e6ccf20317f34b4b9eb92c4acb1aee7f09f621197f065619148a58de027a968ecb26d0bdee87bf0380769816ad4be2 + languageName: node + linkType: hard + +"@envelop/core@npm:^4.0.0": + version: 4.0.3 + resolution: "@envelop/core@npm:4.0.3" + dependencies: + "@envelop/types": "npm:4.0.1" + tslib: "npm:^2.5.0" + checksum: 10c0/37a9cdab390a354be8612e92891dbd13de0a58aedfad0728cbe2111069ca599c9ee5c542b3f4de9f155123b0cac776aa60ef10c5a3721ce58b5cb3b2383ddda6 + languageName: node + linkType: hard + +"@envelop/depth-limit@npm:4.0.0": + version: 4.0.0 + resolution: "@envelop/depth-limit@npm:4.0.0" + dependencies: + graphql-depth-limit: "npm:^1.1.0" + tslib: "npm:^2.5.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/5a08a2a666632399ca5ced484a8eaddfc41f8c81e5e793c4401d17861acb8a67ae5e41fc0595012a8fecc43111287f89b4fef529d7bb00d4b58273e0f955cbc5 + languageName: node + linkType: hard + +"@envelop/disable-introspection@npm:6.0.0": + version: 6.0.0 + resolution: "@envelop/disable-introspection@npm:6.0.0" + dependencies: + tslib: "npm:^2.5.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/48b3a2c98514cd629eadc09f741a1a21cb363a6ebf940a40e39c69054cd61b3d73b37575c1c3573fdc57685b76d58694b14dfae63d357d015040e69f4363ad98 + languageName: node + linkType: hard + +"@envelop/filter-operation-type@npm:6.0.0": + version: 6.0.0 + resolution: "@envelop/filter-operation-type@npm:6.0.0" + dependencies: + tslib: "npm:^2.5.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/9d454dd67da800293b6cfde9e49512e0c84261cdd65dc521ae4c472ce0a2b4a4645b4d39596e3d4157bac31b120fae1fc985cb94c5d8d07590f94fdbc36b9c7b + languageName: node + linkType: hard + +"@envelop/on-resolve@npm:4.1.0": + version: 4.1.0 + resolution: "@envelop/on-resolve@npm:4.1.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/4eb454df4b446303711edd0cd31e707fec06337c2e8327c7987d279fef8785e47e47ffe72c7444b4650a83efbf3234c6b85f550a8044ca181dcd10c05dcb3650 + languageName: node + linkType: hard + +"@envelop/types@npm:4.0.1": + version: 4.0.1 + resolution: "@envelop/types@npm:4.0.1" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10c0/81e09afaf60d036102f7992daeefb0cd5380bb1484dd19cb90db73db4ae730b5297823439711fb8315ee01485a37f1c8155aa1111c7dc4ea11c77b7f25945633 + languageName: node + linkType: hard + +"@envelop/types@npm:5.0.0": + version: 5.0.0 + resolution: "@envelop/types@npm:5.0.0" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10c0/0cbaa68218cb6121b58c6d354b0a17913ded042673df7bfcf385cac6c3b42713b82719875f553b31e8f059727ff5478ed11b33b4febf8deeaf902f1a92b212a8 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/aix-ppc64@npm:0.20.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/android-arm64@npm:0.18.20" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm64@npm:0.20.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/android-arm@npm:0.18.20" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm@npm:0.20.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/android-x64@npm:0.18.20" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-x64@npm:0.20.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/darwin-arm64@npm:0.18.20" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-arm64@npm:0.20.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/darwin-x64@npm:0.18.20" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-x64@npm:0.20.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/freebsd-arm64@npm:0.18.20" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-arm64@npm:0.20.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/freebsd-x64@npm:0.18.20" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-x64@npm:0.20.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-arm64@npm:0.18.20" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm64@npm:0.20.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-arm@npm:0.18.20" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm@npm:0.20.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-ia32@npm:0.18.20" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ia32@npm:0.20.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-loong64@npm:0.18.20" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-loong64@npm:0.20.0" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-mips64el@npm:0.18.20" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-mips64el@npm:0.20.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-ppc64@npm:0.18.20" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ppc64@npm:0.20.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-riscv64@npm:0.18.20" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-riscv64@npm:0.20.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-s390x@npm:0.18.20" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-s390x@npm:0.20.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-x64@npm:0.18.20" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-x64@npm:0.20.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/netbsd-x64@npm:0.18.20" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/netbsd-x64@npm:0.20.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/openbsd-x64@npm:0.18.20" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/openbsd-x64@npm:0.20.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/sunos-x64@npm:0.18.20" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/sunos-x64@npm:0.20.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/win32-arm64@npm:0.18.20" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-arm64@npm:0.20.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/win32-ia32@npm:0.18.20" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-ia32@npm:0.20.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/win32-x64@npm:0.18.20" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-x64@npm:0.20.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-block-field-suggestions@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-block-field-suggestions@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + checksum: 10c0/ec696620e40d169cb02320a7540120e1db4bc9eae298f23c50f68802f52cb2e87f2b9b733e03567c91ca23a66027ed94d811d19555540fbb270f3eb3d218f386 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-cost-limit@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-cost-limit@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/ce589e35955925e78f4e794d64b48a90f84a2ee2f47ca78c349338760ebe114f55c82e5c2deaf8b7b2fe71c1d36b6f06def3562100bdcaf0d7333f982c9166b2 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-aliases@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-max-aliases@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/7eb9132b95d6f7c638983cec4756359bda5805ccd369facedc168e2112602b2db46280ad3755f1fa586c77cb132a853e470bec6400a5b5ae25f9b5f7bae619d1 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-depth@npm:2.2.0": + version: 2.2.0 + resolution: "@escape.tech/graphql-armor-max-depth@npm:2.2.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/f30f231984da41b4f1a4fd89551c6d57ba830814a6de32f863a8cf3bc3e436933700fc2716741e8f171b66dee7d45a46056b86244a44d1ad95b128a47eb0f74a + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-directives@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-max-directives@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/94d1612998ea34ad512f6343399262a47b1ade5184511d19bfde4cbcb29948e2e210ae3f46e5c5aa40c3b4e942ef92d2cfc9885a426f2965136546c5b4b048f9 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-tokens@npm:2.2.0": + version: 2.2.0 + resolution: "@escape.tech/graphql-armor-max-tokens@npm:2.2.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/42278e504a87c622d4abac739321acb88f1f18f0829d546dd24f010d92a0987f50aee7ab92b5e406b0176aaee70eb8e0e2805517fa257699174356875aa9b302 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-types@npm:0.5.0": + version: 0.5.0 + resolution: "@escape.tech/graphql-armor-types@npm:0.5.0" + dependencies: + graphql: "npm:^16.0.0" + checksum: 10c0/fc93eab84d27836ea37f6d2f8f0604b889906da26a54a2ffa25008e289f46b469c481d9071ca5c0a3ccc66a188cb4665592e73617507ca044f8a6a6cefb71270 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor@npm:2.3.1": + version: 2.3.1 + resolution: "@escape.tech/graphql-armor@npm:2.3.1" + dependencies: + "@escape.tech/graphql-armor-block-field-suggestions": "npm:2.1.0" + "@escape.tech/graphql-armor-cost-limit": "npm:2.1.0" + "@escape.tech/graphql-armor-max-aliases": "npm:2.1.0" + "@escape.tech/graphql-armor-max-depth": "npm:2.2.0" + "@escape.tech/graphql-armor-max-directives": "npm:2.1.0" + "@escape.tech/graphql-armor-max-tokens": "npm:2.2.0" + graphql: "npm:^16.0.0" + peerDependencies: + "@apollo/server": ^4.0.0 + "@envelop/core": ^4.0.0 + "@escape.tech/graphql-armor-types": 0.5.0 + peerDependenciesMeta: + "@apollo/server": + optional: true + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/40ecfb643fea264eacb7d3d4031e139a3bb3cea6f1519146042d2eb9bbad64b1f5d570886459da75c25ff1a471fc13b04fae2f2795b0c6e0b97922bfb9191d47 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.10.0 + resolution: "@eslint-community/regexpp@npm:4.10.0" + checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.55.0": + version: 8.55.0 + resolution: "@eslint/js@npm:8.55.0" + checksum: 10c0/88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d + languageName: node + linkType: hard + +"@fastify/accept-negotiator@npm:^1.0.0": + version: 1.1.0 + resolution: "@fastify/accept-negotiator@npm:1.1.0" + checksum: 10c0/1cb9a298c992b812869158ddc6093557a877b30e5f77618a7afea985a0667c50bc7113593bf0f7f9dc9b82b94c16e8ab127a0afc3efde6677fd645539f6d08e5 + languageName: node + linkType: hard + +"@fastify/ajv-compiler@npm:^3.5.0": + version: 3.5.0 + resolution: "@fastify/ajv-compiler@npm:3.5.0" + dependencies: + ajv: "npm:^8.11.0" + ajv-formats: "npm:^2.1.1" + fast-uri: "npm:^2.0.0" + checksum: 10c0/d10df76b7016984bf70bc6aca99962468ec43e0be5772d4aa3a7735ae78be44fdbcb2c078fe0cfdffec076080dfb7cbdbf4b729e52b168039477126f9d023af0 + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.0 + resolution: "@fastify/busboy@npm:2.1.0" + checksum: 10c0/7bb641080aac7cf01d88749ad331af10ba9ec3713ec07cabbe833908c75df21bd56249bb6173bdec07f5a41896b21e3689316f86684c06635da45f91ff4565a2 + languageName: node + linkType: hard + +"@fastify/error@npm:^3.0.0, @fastify/error@npm:^3.3.0, @fastify/error@npm:^3.4.0": + version: 3.4.1 + resolution: "@fastify/error@npm:3.4.1" + checksum: 10c0/1f1a0faa8c86639afb6f4bd47a9cdc1f0f20ce0d6944340fbdec8218aaba91dc9cae9ed78e24e61bceb782a867efda2b9a6320091f00dcbb896d9c8a9bdf5f96 + languageName: node + linkType: hard + +"@fastify/fast-json-stringify-compiler@npm:^4.3.0": + version: 4.3.0 + resolution: "@fastify/fast-json-stringify-compiler@npm:4.3.0" + dependencies: + fast-json-stringify: "npm:^5.7.0" + checksum: 10c0/513ef296f5ed682f7a460cfa6c5fb917a32fc540111b873c9937f944558e021492b18f30f9fd8dd20db252381a4428adbcc9f03a077f16c86d02f081eb490c7b + languageName: node + linkType: hard + +"@fastify/http-proxy@npm:9.3.0": + version: 9.3.0 + resolution: "@fastify/http-proxy@npm:9.3.0" + dependencies: + "@fastify/reply-from": "npm:^9.0.0" + fast-querystring: "npm:^1.1.2" + fastify-plugin: "npm:^4.5.0" + ws: "npm:^8.4.2" + checksum: 10c0/c8f7fe380580f53059f676ca5b2bbdb1eef0a2d3dce28568e8932aeedb992efdc5fc40dae41b6d52f2f0ce14036af182664d0276ea9366e31fd920a119e7a03a + languageName: node + linkType: hard + +"@fastify/merge-json-schemas@npm:^0.1.0": + version: 0.1.1 + resolution: "@fastify/merge-json-schemas@npm:0.1.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + checksum: 10c0/7979ce12724f7b98aea06f0bb9afb20dd869f0ff6fc697517135cbb54e0a36b062cbb38ec176fe43d1fc455576839240df8f33533939ace2d64a6218a6e6b9c1 + languageName: node + linkType: hard + +"@fastify/reply-from@npm:^9.0.0": + version: 9.7.0 + resolution: "@fastify/reply-from@npm:9.7.0" + dependencies: + "@fastify/error": "npm:^3.0.0" + end-of-stream: "npm:^1.4.4" + fast-content-type-parse: "npm:^1.1.0" + fast-querystring: "npm:^1.0.0" + fastify-plugin: "npm:^4.0.0" + pump: "npm:^3.0.0" + tiny-lru: "npm:^11.0.0" + undici: "npm:^5.19.1" + checksum: 10c0/40a6838fd3b762dcc954bf652e79175117648b4f68667d32f4ef64deeac8d9be9abcaf0b382b5e8d4edd46f6540501664bd6024ac3c0f335b3ffedfcbf20cf48 + languageName: node + linkType: hard + +"@fastify/send@npm:^2.0.0": + version: 2.1.0 + resolution: "@fastify/send@npm:2.1.0" + dependencies: + "@lukeed/ms": "npm:^2.0.1" + escape-html: "npm:~1.0.3" + fast-decode-uri-component: "npm:^1.0.1" + http-errors: "npm:2.0.0" + mime: "npm:^3.0.0" + checksum: 10c0/0e1c10022660fa1f1959b7c414d1be2c47ab42be1da8e21cd72a4df3104c516fdf7b590ee67f897037dd4c85b716fac63929e894d7699623549646604f6db14b + languageName: node + linkType: hard + +"@fastify/static@npm:6.12.0": + version: 6.12.0 + resolution: "@fastify/static@npm:6.12.0" + dependencies: + "@fastify/accept-negotiator": "npm:^1.0.0" + "@fastify/send": "npm:^2.0.0" + content-disposition: "npm:^0.5.3" + fastify-plugin: "npm:^4.0.0" + glob: "npm:^8.0.1" + p-limit: "npm:^3.1.0" + checksum: 10c0/9248c9851c4bb24965e88eb2f0825fda2b2b08ddb83aa5f08e529b8a522cf20978f81e8e4837e2cb550b39ea433790b0fd82db4b2f0673133325e265c9099fff + languageName: node + linkType: hard + +"@fastify/url-data@npm:5.4.0": + version: 5.4.0 + resolution: "@fastify/url-data@npm:5.4.0" + dependencies: + fast-uri: "npm:^2.2.0" + fastify-plugin: "npm:^4.0.0" + checksum: 10c0/727822f90277b937eabdbbdbf14ae1f8b9fb495ae7b9799bdd383a56f784eb3c9929998a3ac133881afd9871b7c6d9261c3f2e339f82d793f4535e25079e5621 + languageName: node + linkType: hard + +"@graphql-codegen/add@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/add@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.1.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/32476f676b59876e75af41a448a6133f29f5f2b6c975e88d0e54b5d793e931cffd2d55f094bd79e7fe84664e18cf6bcdf13d199ddec903713338aaa522ff1b3b + languageName: node + linkType: hard + +"@graphql-codegen/add@npm:^5.0.0": + version: 5.0.2 + resolution: "@graphql-codegen/add@npm:5.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/667bacb3c4a1f1e041b54d96e802e89e057f20a4129fc1dd3ab72848f2531e8d74d415607d581630073bbc34831c8e6da4f9d669cb761ccc0cc4102c86eae5d0 + languageName: node + linkType: hard + +"@graphql-codegen/cli@npm:3.3.1": + version: 3.3.1 + resolution: "@graphql-codegen/cli@npm:3.3.1" + dependencies: + "@babel/generator": "npm:^7.18.13" + "@babel/template": "npm:^7.18.10" + "@babel/types": "npm:^7.18.13" + "@graphql-codegen/core": "npm:^3.1.0" + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-tools/apollo-engine-loader": "npm:^7.3.6" + "@graphql-tools/code-file-loader": "npm:^7.3.17" + "@graphql-tools/git-loader": "npm:^7.2.13" + "@graphql-tools/github-loader": "npm:^7.3.20" + "@graphql-tools/graphql-file-loader": "npm:^7.5.0" + "@graphql-tools/json-file-loader": "npm:^7.4.1" + "@graphql-tools/load": "npm:^7.8.0" + "@graphql-tools/prisma-loader": "npm:^7.2.49" + "@graphql-tools/url-loader": "npm:^7.13.2" + "@graphql-tools/utils": "npm:^9.0.0" + "@parcel/watcher": "npm:^2.1.0" + "@whatwg-node/fetch": "npm:^0.8.0" + chalk: "npm:^4.1.0" + cosmiconfig: "npm:^7.0.0" + debounce: "npm:^1.2.0" + detect-indent: "npm:^6.0.0" + graphql-config: "npm:^4.5.0" + inquirer: "npm:^8.0.0" + is-glob: "npm:^4.0.1" + jiti: "npm:^1.17.1" + json-to-pretty-yaml: "npm:^1.2.2" + listr2: "npm:^4.0.5" + log-symbols: "npm:^4.0.0" + micromatch: "npm:^4.0.5" + shell-quote: "npm:^1.7.3" + string-env-interpolation: "npm:^1.0.1" + ts-log: "npm:^2.2.3" + tslib: "npm:^2.4.0" + yaml: "npm:^1.10.0" + yargs: "npm:^17.0.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + bin: + gql-gen: cjs/bin.js + graphql-code-generator: cjs/bin.js + graphql-codegen: cjs/bin.js + graphql-codegen-esm: esm/bin.js + checksum: 10c0/e6886054bad3b8de3760d1381b54c7dd0af2eb77104563065ba7ca63700b25ad1f8ce9fe8482d960ff8bd4cf110465a3e822a1303da10cebd6965c72d5a9e9a1 + languageName: node + linkType: hard + +"@graphql-codegen/client-preset@npm:4.1.0": + version: 4.1.0 + resolution: "@graphql-codegen/client-preset@npm:4.1.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/template": "npm:^7.20.7" + "@graphql-codegen/add": "npm:^5.0.0" + "@graphql-codegen/gql-tag-operations": "npm:4.0.1" + "@graphql-codegen/plugin-helpers": "npm:^5.0.1" + "@graphql-codegen/typed-document-node": "npm:^5.0.1" + "@graphql-codegen/typescript": "npm:^4.0.1" + "@graphql-codegen/typescript-operations": "npm:^4.0.1" + "@graphql-codegen/visitor-plugin-common": "npm:^4.0.1" + "@graphql-tools/documents": "npm:^1.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-typed-document-node/core": "npm:3.2.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/c975e72a97a0f679a9ee77265ad5cf535d17d5409fb39704653f0b6c203e1c6815e0a81b20b0d597ebb8f537a5a8a5a601a9366073270fde9971408f0ddadc1d + languageName: node + linkType: hard + +"@graphql-codegen/core@npm:3.1.0, @graphql-codegen/core@npm:^3.1.0": + version: 3.1.0 + resolution: "@graphql-codegen/core@npm:3.1.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.1.0" + "@graphql-tools/schema": "npm:^9.0.0" + "@graphql-tools/utils": "npm:^9.1.1" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/822be191eba5cc9f1882936501941054adfc517cb7f32e32c85843253eec268eca20d24f2ba04d9575719e36e3a5cd0df059715f3fd78d32f12f7d79c7198e79 + languageName: node + linkType: hard + +"@graphql-codegen/fragment-matcher@npm:5.0.0": + version: 5.0.0 + resolution: "@graphql-codegen/fragment-matcher@npm:5.0.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/52ad2ee32f4d4e690ec8f9fbd9e62d7ec1ddfcb91004acf86969b1e24767c19aa49870ee49ccb196efba92f9280f813073e891950dc234d2e411263c1e84408d + languageName: node + linkType: hard + +"@graphql-codegen/gql-tag-operations@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/c2e0be33d2e0362892b466058da02ad8476192691ce8efc64f0e94116a1b2ae6c1a479b5d399f4396fee3c54959f5e4a296d994bcffa458c1ec5167c56d183ab + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^2.7.2": + version: 2.7.2 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" + dependencies: + "@graphql-tools/utils": "npm:^8.8.0" + change-case-all: "npm:1.0.14" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/b4abce50a751d938a48b2b7ff57aa1671df1ae9d54196ccd60237077aef2e2b528b45244cb786d1b2eeb1f464c48eb7626553fdc5cf3a9013455ed27ef3ef7d2 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^4.1.0, @graphql-codegen/plugin-helpers@npm:^4.2.0": + version: 4.2.0 + resolution: "@graphql-codegen/plugin-helpers@npm:4.2.0" + dependencies: + "@graphql-tools/utils": "npm:^9.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/cc4a63eb6cd015c9b26f6ff115257ff9c7b87c352a23b3f0622536c6df693e647ff627daef6f370c629fc515ddfdb2f7e3190f5e8cd6490a1ea513835cc358c3 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^5.0.0, @graphql-codegen/plugin-helpers@npm:^5.0.1, @graphql-codegen/plugin-helpers@npm:^5.0.3": + version: 5.0.3 + resolution: "@graphql-codegen/plugin-helpers@npm:5.0.3" + dependencies: + "@graphql-tools/utils": "npm:^10.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/1ea0d46ccdf449f43afe8ee0222bf96769b3efdb8262688964f4eff725c43caac4caa36859bcbd6a2ba611aea2adaa6bb2e86bc1d06ec9636f11952ebe260036 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:3.0.1, @graphql-codegen/schema-ast@npm:^3.0.1": + version: 3.0.1 + resolution: "@graphql-codegen/schema-ast@npm:3.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.1.0" + "@graphql-tools/utils": "npm:^9.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/cc4602e5b97876181e6a8e3e0241e336715e489d1721121037a0a28b49d3bd800de9a331c8db2e9449c3c237e842c05db93a2c834cfcc7e3cd68a15c96a8e204 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:^4.0.2": + version: 4.0.2 + resolution: "@graphql-codegen/schema-ast@npm:4.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/utils": "npm:^10.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/533b1bfa6c01d02ff2ec688a478e8daeb9bda1d69d63b1bca8adf9ab606a4a315da4e0f45444836646b8e539e8c76891af536afd9fb3a7e36d40f8bd04218748 + languageName: node + linkType: hard + +"@graphql-codegen/typed-document-node@npm:5.0.1": + version: 5.0.1 + resolution: "@graphql-codegen/typed-document-node@npm:5.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/84c7a10d9a574987c7a18f81ad43dff92e1605f9295488ef314cf17273772bb2fd406772164b2a601fda15b280fbc0d3d42cdc8c9ce742b68e4423faf9a2aca0 + languageName: node + linkType: hard + +"@graphql-codegen/typed-document-node@npm:^5.0.1": + version: 5.0.4 + resolution: "@graphql-codegen/typed-document-node@npm:5.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/visitor-plugin-common": "npm:4.1.2" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/952135af096162dd87b3ae4c0a7275d81b171874f84dff6ab522a71769b0b05b6e9340523f70e1b9aa18cac32bbd9dcbfee5bb68ecf0e243439dfbab0e2b4da8 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:3.0.4": + version: 3.0.4 + resolution: "@graphql-codegen/typescript-operations@npm:3.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-codegen/typescript": "npm:^3.0.4" + "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/4ea5c955e0b12b1f6aa4d6ad46b217c56e802ff5508b939a3a218c53208d03bbd308bb3dfbfbc30fe7c4bd0be4c9c51c76b0fe65c6238618ed482874c869f801 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:^4.0.1": + version: 4.1.2 + resolution: "@graphql-codegen/typescript-operations@npm:4.1.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/typescript": "npm:^4.0.4" + "@graphql-codegen/visitor-plugin-common": "npm:4.1.2" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/0e8a99206a7ec1e37aa34985e75341bfc64a1ed01dc05da9056fb68daa4518b248a2ca46d86cac54d52e04b5b561162f2fb5bc48edf09508c0150861e1881a9a + languageName: node + linkType: hard + +"@graphql-codegen/typescript-react-apollo@npm:3.3.7": + version: 3.3.7 + resolution: "@graphql-codegen/typescript-react-apollo@npm:3.3.7" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^2.7.2" + "@graphql-codegen/visitor-plugin-common": "npm:2.13.1" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.14" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-tag: ^2.0.0 + checksum: 10c0/8aed1aa62694abea2616bf39501b561a0aed107b3c0112aeb257167df4f8a13e866b335d509b94153b99bd77e1d36312ff260e18d26049673268318144d693e5 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-resolvers@npm:3.2.1": + version: 3.2.1 + resolution: "@graphql-codegen/typescript-resolvers@npm:3.2.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-codegen/typescript": "npm:^3.0.4" + "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" + "@graphql-tools/utils": "npm:^9.0.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/f87383d0f145b1b6cc8c7382f932bdbf6dd37f3f2526e1f17b73ee9f0bf9a6db8d7db04867712dd6f5839d5b967823ca3e534462335d8fd389b2bfda4aa0cb2e + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:3.0.4, @graphql-codegen/typescript@npm:^3.0.4": + version: 3.0.4 + resolution: "@graphql-codegen/typescript@npm:3.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-codegen/schema-ast": "npm:^3.0.1" + "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/6fbf7cfda19fe8b02ab34a948c0d2cf58b68a26f8c31c03cbb097ef2196c1071d986bba6660d5da516c36c9f184e8bbef014cf851bf706aba81138a423cda250 + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:^4.0.1, @graphql-codegen/typescript@npm:^4.0.4": + version: 4.0.4 + resolution: "@graphql-codegen/typescript@npm:4.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/schema-ast": "npm:^4.0.2" + "@graphql-codegen/visitor-plugin-common": "npm:4.1.2" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/cce7061956b6c0be6877e130fddbaba74670376e13353d70a0606ca0476ddbc2d4e4e06c2eccb2b88dbdd30272b723cb922794a7621faf03521c8ec6476e7b90 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:2.13.1": + version: 2.13.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^2.7.2" + "@graphql-tools/optimize": "npm:^1.3.0" + "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" + "@graphql-tools/utils": "npm:^8.8.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.14" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/9dfc4893599721eba988103d4456345f915cab75c9a754e78a21bd7d05c49b00a01f38ffb70355d758626da0396ae3bb6d44fc98d5c8f9f36a1b122aea0063c4 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:3.1.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-tools/optimize": "npm:^1.3.0" + "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" + "@graphql-tools/utils": "npm:^9.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/4a393276f091de20cc3b8c3af07c772592328ed1c304835db533ab39dfeba4f7411040480404db21b677a85c055699cdd2992139a89456ec71492df6fa4ae9bf + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + "@graphql-tools/optimize": "npm:^2.0.0" + "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/704c08bf29b274a463c8a20381f280f3294c4e48764b8b99ae9fbca610e2b54ac5ee1cf0e1165962e75c49dd8d2237f743d56bd3f5e66c5a072bc77c22f49be6 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:4.1.2, @graphql-codegen/visitor-plugin-common@npm:^4.0.1": + version: 4.1.2 + resolution: "@graphql-codegen/visitor-plugin-common@npm:4.1.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/optimize": "npm:^2.0.0" + "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/eb96ccfe7bb5d20b7a1c8b3199ad4f0ee0695f7223e68900479192543eb3e0d37f4088e3e9dc80f28403e326bae67579eadfd628c97d671e207cc4d607af5c6a + languageName: node + linkType: hard + +"@graphql-tools/apollo-engine-loader@npm:^7.3.6": + version: 7.3.26 + resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.26" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/utils": "npm:^9.2.1" + "@whatwg-node/fetch": "npm:^0.8.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/34d4de6bced685770512cb518a01566846db30d0d5235eafbbf967213479e56552fe2a42996ec29a5a9a4db402d7bc8c9aa0b1be6bb1ccfaeb5ed60087c3381d + languageName: node + linkType: hard + +"@graphql-tools/batch-execute@npm:^8.5.22": + version: 8.5.22 + resolution: "@graphql-tools/batch-execute@npm:8.5.22" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/ff5ad8f36844cfa823061e6aa4cb0e5c4e2ebbd716c02c04bc1fdf637799fea760abd9f53083e9ebb038a0aa61263cf6360535776610dbfb9b0981e1deb1fb8a + languageName: node + linkType: hard + +"@graphql-tools/code-file-loader@npm:^7.3.17": + version: 7.3.23 + resolution: "@graphql-tools/code-file-loader@npm:7.3.23" + dependencies: + "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 + languageName: node + linkType: hard + +"@graphql-tools/delegate@npm:^9.0.31": + version: 9.0.35 + resolution: "@graphql-tools/delegate@npm:9.0.35" + dependencies: + "@graphql-tools/batch-execute": "npm:^8.5.22" + "@graphql-tools/executor": "npm:^0.0.20" + "@graphql-tools/schema": "npm:^9.0.19" + "@graphql-tools/utils": "npm:^9.2.1" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.5.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1199ad14ffa1f0e8d6b12102bd78f7b0451ebe802f4bb7b4332a6fc27acf26b5d092b9dc6d656c7595efb0f7fc3bc247ba7fe1bb5317892443f42b27af4c54fc + languageName: node + linkType: hard + +"@graphql-tools/documents@npm:1.0.0, @graphql-tools/documents@npm:^1.0.0": + version: 1.0.0 + resolution: "@graphql-tools/documents@npm:1.0.0" + dependencies: + lodash.sortby: "npm:^4.7.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/06b2cc9f8d0fb7e5c43e434cab35698655d6d65cfa94c301996d6b1354101837a8e709b26dc5251fa2c3216e8469fb0db76b4cd93ca015b61f75e9926db9d9ef + languageName: node + linkType: hard + +"@graphql-tools/executor-graphql-ws@npm:^0.0.14": + version: 0.0.14 + resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.14" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@repeaterjs/repeater": "npm:3.0.4" + "@types/ws": "npm:^8.0.0" + graphql-ws: "npm:5.12.1" + isomorphic-ws: "npm:5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:8.13.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/35619da6da45320ea53433018c4e2aa3ceab5fed097b9b51b6151007817139c9cb9f554d44a6fc51185d3ba829824cad9758f6cd98ead052a75d3d757306400f + languageName: node + linkType: hard + +"@graphql-tools/executor-http@npm:^0.1.7, @graphql-tools/executor-http@npm:^0.1.9": + version: 0.1.10 + resolution: "@graphql-tools/executor-http@npm:0.1.10" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@repeaterjs/repeater": "npm:^3.0.4" + "@whatwg-node/fetch": "npm:^0.8.1" + dset: "npm:^3.1.2" + extract-files: "npm:^11.0.0" + meros: "npm:^1.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/db2bb80e10bde0e6e34c3c86ed30c4f3082ba332fba5700d182045c4eb40453e670ea2277426fea31167481ed0b89446644ff106848e397b83e17c61d73218f3 + languageName: node + linkType: hard + +"@graphql-tools/executor-legacy-ws@npm:^0.0.11": + version: 0.0.11 + resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.11" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@types/ws": "npm:^8.0.0" + isomorphic-ws: "npm:5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:8.13.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/caf03080b125a9c3291a09a19747ffd7d16c99bfa378ee26bbd82d7613efcaa516d684ed74139a70267c68d8b4ff071541a4db4c9a3e9d2ea944d2bf912b6f50 + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^0.0.20": + version: 0.0.20 + resolution: "@graphql-tools/executor@npm:0.0.20" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@graphql-typed-document-node/core": "npm:3.2.0" + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c9300ac118040ea1da18f4cc79613292d91b6e5edc312763c5b8a9da79cc3581bc7d43a292120c7b4c71367613c4b21da3e656985dce827fae0503a5fcbcbc71 + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^1.0.0": + version: 1.2.0 + resolution: "@graphql-tools/executor@npm:1.2.0" + dependencies: + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-typed-document-node/core": "npm:3.2.0" + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/98e11e93e015fbb464cfaa5f4e7a6a1f4890b241a7c631d2b679e4f3595206345f775674e9ecf9c3107e686f803b82f62beb9aa8e6ade37c6af0be29585afbc9 + languageName: node + linkType: hard + +"@graphql-tools/git-loader@npm:^7.2.13": + version: 7.3.0 + resolution: "@graphql-tools/git-loader@npm:7.3.0" + dependencies: + "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" + "@graphql-tools/utils": "npm:^9.2.1" + is-glob: "npm:4.0.3" + micromatch: "npm:^4.0.4" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1a991e59c48d6faeb27f0e256859fca3de703c9e6ac949044bb95dd02558d0a22356fe0a93d93f815ee36cf0c6c3af582b2927579c115712622311f71cdda172 + languageName: node + linkType: hard + +"@graphql-tools/github-loader@npm:^7.3.20": + version: 7.3.28 + resolution: "@graphql-tools/github-loader@npm:7.3.28" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/executor-http": "npm:^0.1.9" + "@graphql-tools/graphql-tag-pluck": "npm:^7.4.6" + "@graphql-tools/utils": "npm:^9.2.1" + "@whatwg-node/fetch": "npm:^0.8.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/8044027a85fa0bd6a6094811c6868fa826b8a2a7cbeee615cb87c79c2c2caf0a208cad5fe45beffab0e020db813d70023eea34b6499c05aadda2f7730d283c8b + languageName: node + linkType: hard + +"@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": + version: 7.5.17 + resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17" + dependencies: + "@graphql-tools/import": "npm:6.7.18" + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b + languageName: node + linkType: hard + +"@graphql-tools/graphql-tag-pluck@npm:7.5.2, @graphql-tools/graphql-tag-pluck@npm:^7.4.6": + version: 7.5.2 + resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" + dependencies: + "@babel/parser": "npm:^7.16.8" + "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" + "@babel/traverse": "npm:^7.16.8" + "@babel/types": "npm:^7.16.8" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 + languageName: node + linkType: hard + +"@graphql-tools/import@npm:6.7.18": + version: 6.7.18 + resolution: "@graphql-tools/import@npm:6.7.18" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + resolve-from: "npm:5.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732 + languageName: node + linkType: hard + +"@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": + version: 7.4.18 + resolution: "@graphql-tools/json-file-loader@npm:7.4.18" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/0628719ae10799d6b07d80b2f6228d62afb53aa52ce2f95e222afa63c829fd3ccf1bec68f334c5a00e11f1a517c768528704bb9290a8e303a60e0286258e100d + languageName: node + linkType: hard + +"@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.8.0": + version: 7.8.14 + resolution: "@graphql-tools/load@npm:7.8.14" + dependencies: + "@graphql-tools/schema": "npm:^9.0.18" + "@graphql-tools/utils": "npm:^9.2.1" + p-limit: "npm:3.1.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:9.0.1, @graphql-tools/merge@npm:^9.0.1": + version: 9.0.1 + resolution: "@graphql-tools/merge@npm:9.0.1" + dependencies: + "@graphql-tools/utils": "npm:^10.0.10" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/cbfcb2c10490a11417991e8b61b8df2eba73a2c576e57cbf2d928902030d4391122536b9442bf042609ec24376b79b8bc6d9117e137dd8db2255ed90613acbc7 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:^8.2.6, @graphql-tools/merge@npm:^8.4.1": + version: 8.4.2 + resolution: "@graphql-tools/merge@npm:8.4.2" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^1.3.0": + version: 1.4.0 + resolution: "@graphql-tools/optimize@npm:1.4.0" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/10be773b0082fe54b9505469a89925f1a5e33f866453b88cd411261951e8718f8720451e07c56cbfb762970b56b9b45c7c748d62afcdcf9414ec64533e94e543 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^2.0.0": + version: 2.0.0 + resolution: "@graphql-tools/optimize@npm:2.0.0" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/db4ac0a2b0c89126ee7746e5615ae003d8665b684b17fb35956a7633fefb0e329a047f32a975cfbdf83f0f5ac4ae09fe469834fd71fdd49d8ed932fda79012fd + languageName: node + linkType: hard + +"@graphql-tools/prisma-loader@npm:^7.2.49": + version: 7.2.72 + resolution: "@graphql-tools/prisma-loader@npm:7.2.72" + dependencies: + "@graphql-tools/url-loader": "npm:^7.17.18" + "@graphql-tools/utils": "npm:^9.2.1" + "@types/js-yaml": "npm:^4.0.0" + "@types/json-stable-stringify": "npm:^1.0.32" + "@whatwg-node/fetch": "npm:^0.8.2" + chalk: "npm:^4.1.0" + debug: "npm:^4.3.1" + dotenv: "npm:^16.0.0" + graphql-request: "npm:^6.0.0" + http-proxy-agent: "npm:^6.0.0" + https-proxy-agent: "npm:^6.0.0" + jose: "npm:^4.11.4" + js-yaml: "npm:^4.0.0" + json-stable-stringify: "npm:^1.0.1" + lodash: "npm:^4.17.20" + scuid: "npm:^1.1.0" + tslib: "npm:^2.4.0" + yaml-ast-parser: "npm:^0.0.43" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/7d3d8c2ba5fae3372179534ba4f846729e499fb0d5ab1b530751ed26241d5cc29a2a87f510930faaa884d1efbe42e462e246e2d060742a00b80a893b34fa5fa9 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^6.5.0": + version: 6.5.18 + resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.18" + dependencies: + "@ardatan/relay-compiler": "npm:12.0.0" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/9d74d65da8bf474e256ff0cfb77afb442a968451ded6a92b8348d8ac1bca3b2c13a578ab29ac869d10d53e0101219fe8283d485fff920aa7abcc68fcbbdd9a36 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^7.0.0": + version: 7.0.0 + resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.0" + dependencies: + "@ardatan/relay-compiler": "npm:12.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/88f483d7fdd68f137f5b5a9e0cb8c4f312cebcc8366155570f08cb8c3f5d805e0db5e780ff8551600b7dfb8840958ff9ec3c5cd5121fd8be01d216ff4f4bdb56 + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:10.0.2, @graphql-tools/schema@npm:^10.0.0": + version: 10.0.2 + resolution: "@graphql-tools/schema@npm:10.0.2" + dependencies: + "@graphql-tools/merge": "npm:^9.0.1" + "@graphql-tools/utils": "npm:^10.0.10" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/3d71117c8d8ed491aa5b988bcdfcc1a7ca8cea8638b37083af2665a0dbb95e1255961a8a43658538ad33b83d621812886a4626ad7a5333d7d9e6c62304b52cb2 + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:^9.0.0, @graphql-tools/schema@npm:^9.0.18, @graphql-tools/schema@npm:^9.0.19": + version: 9.0.19 + resolution: "@graphql-tools/schema@npm:9.0.19" + dependencies: + "@graphql-tools/merge": "npm:^8.4.1" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4 + languageName: node + linkType: hard + +"@graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.17.18, @graphql-tools/url-loader@npm:^7.9.7": + version: 7.17.18 + resolution: "@graphql-tools/url-loader@npm:7.17.18" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/delegate": "npm:^9.0.31" + "@graphql-tools/executor-graphql-ws": "npm:^0.0.14" + "@graphql-tools/executor-http": "npm:^0.1.7" + "@graphql-tools/executor-legacy-ws": "npm:^0.0.11" + "@graphql-tools/utils": "npm:^9.2.1" + "@graphql-tools/wrap": "npm:^9.4.2" + "@types/ws": "npm:^8.0.0" + "@whatwg-node/fetch": "npm:^0.8.0" + isomorphic-ws: "npm:^5.0.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.11" + ws: "npm:^8.12.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/963153fde3389f3e44de63c8bca3ce43c85c6ef0f9c5feb56b24d9146f4bf4fef84bebe44a961acc0e0aa0a48081add24684404b83b84bbb9f5e3fcdbc131cae + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:10.0.11": + version: 10.0.11 + resolution: "@graphql-tools/utils@npm:10.0.11" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + cross-inspect: "npm:1.0.0" + dset: "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/61c464541fe0b17d26cec83f93b5f4a3af352e10c22878c5449fbea5f22c68f1e0c78ddc0a93f480da42dba80fb41ebfe99920915c389ac132a0217ef808d2bc + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.0.10": + version: 10.0.13 + resolution: "@graphql-tools/utils@npm:10.0.13" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + cross-inspect: "npm:1.0.0" + dset: "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/6505c494716bb7aa36eba3d731f5a3e28c0bbd2efc818f1fdc7367a408ced8878bfff40f4dafbcef70d912219df81484e32e28130366e8355c126fcbc8ac9dd5 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^8.8.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/f9bab1370aa91e706abec4c8ea980e15293cb78bd4effba53ad2365dc39d81148db7667b3ef89b35f0a0b0ad58081ffdac4264b7125c69fa8393590ae5025745 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.1.1, @graphql-tools/utils@npm:^9.2.1": + version: 9.2.1 + resolution: "@graphql-tools/utils@npm:9.2.1" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 + languageName: node + linkType: hard + +"@graphql-tools/wrap@npm:^9.4.2": + version: 9.4.2 + resolution: "@graphql-tools/wrap@npm:9.4.2" + dependencies: + "@graphql-tools/delegate": "npm:^9.0.31" + "@graphql-tools/schema": "npm:^9.0.18" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/6b0aa1a78af8280c7356e2841156a6708a9a147e5991afae9586046ef000b8d08e6d0405dceb10ffbfb0c208a97a527a16d5f04ee2fbf99f6eefe98fe6037292 + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c + languageName: node + linkType: hard + +"@graphql-yoga/logger@npm:^2.0.0": + version: 2.0.0 + resolution: "@graphql-yoga/logger@npm:2.0.0" + dependencies: + tslib: "npm:^2.5.2" + checksum: 10c0/1489588485c9974aba66c0e5002a1251085771b0703ac1aaa2a3df93b895fc57f7cf6203680ff453b304d4ba438ea6a4cc9999d13a4bf6fd5128f3f088ff927b + languageName: node + linkType: hard + +"@graphql-yoga/plugin-persisted-operations@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-yoga/plugin-persisted-operations@npm:3.1.1" + peerDependencies: + "@graphql-tools/utils": ^10.0.0 + graphql: ^15.2.0 || ^16.0.0 + graphql-yoga: ^5.1.1 + checksum: 10c0/19c00017f75df4aed065d30e67da5728a1ef6ee852dd7f30c052628b465e8d3e1a24c4ed70995d6ca2018b750649cea5e5902eadf0c75a2c65c7e487dd295169 + languageName: node + linkType: hard + +"@graphql-yoga/subscription@npm:^5.0.0": + version: 5.0.0 + resolution: "@graphql-yoga/subscription@npm:5.0.0" + dependencies: + "@graphql-yoga/typed-event-target": "npm:^3.0.0" + "@repeaterjs/repeater": "npm:^3.0.4" + "@whatwg-node/events": "npm:^0.1.0" + tslib: "npm:^2.5.2" + checksum: 10c0/05e2f5cb23ea2b3cfe3737cf13fb98ebb3ded8a6a8239a170a6bd65b443109595e1bf2bbef94e3b18438b63dae18761bce4225eb437420bae651131457ede8b5 + languageName: node + linkType: hard + +"@graphql-yoga/typed-event-target@npm:^3.0.0": + version: 3.0.0 + resolution: "@graphql-yoga/typed-event-target@npm:3.0.0" + dependencies: + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.5.2" + checksum: 10c0/563c26e4ef8f116e3b2991651acc2a80a37e1c53c6df4159e46e948b226624fc3c414663deef063fa19a7a63bc6a2d2ed8b950782b4d57f34eea775e3312d61c + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.13": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.2 + resolution: "@humanwhocodes/object-schema@npm:2.0.2" + checksum: 10c0/6fd83dc320231d71c4541d0244051df61f301817e9f9da9fd4cb7e44ec8aacbde5958c1665b0c419401ab935114fdf532a6ad5d4e7294b1af2f347dd91a6983f + languageName: node + linkType: hard + +"@iarna/toml@npm:2.2.5": + version: 2.2.5 + resolution: "@iarna/toml@npm:2.2.5" + checksum: 10c0/d095381ad4554aca233b7cf5a91f243ef619e5e15efd3157bc640feac320545450d14b394aebbf6f02a2047437ced778ae598d5879a995441ab7b6c0b2c2f201 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" + dependencies: + "@jridgewell/set-array": "npm:^1.0.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.1": + version: 1.1.2 + resolution: "@jridgewell/set-array@npm:1.1.2" + checksum: 10c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.22 + resolution: "@jridgewell/trace-mapping@npm:0.3.22" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/18cf19f88e2792c1c91515f2b629aae05f3cdbb2e60c3886e16e80725234ce26dd10144c4981c05d9366e7094498c0b4fe5c1a89f4a730d7376a4ba4af448149 + languageName: node + linkType: hard + +"@kamilkisiela/fast-url-parser@npm:^1.1.4": + version: 1.1.4 + resolution: "@kamilkisiela/fast-url-parser@npm:1.1.4" + checksum: 10c0/2c85202cb4924720ac812c8bc06967fd5df4db759a68aa3acc2962b8cf9e2b3bc131de863f00473c0b0602df13891b35140f667a87eea04c9b897b6c1ae89c4a + languageName: node + linkType: hard + +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.4 + resolution: "@leichtgewicht/ip-codec@npm:2.0.4" + checksum: 10c0/3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b + languageName: node + linkType: hard + +"@lukeed/ms@npm:^2.0.1": + version: 2.0.2 + resolution: "@lukeed/ms@npm:2.0.2" + checksum: 10c0/843b922717313bcde4943f478145d8bc13115b9b91d83bbaed53739b5644122984412310aed574792f4e6b492f2cbda178175f601856d310f67e14834c3f17a0 + languageName: node + linkType: hard + +"@mrleebo/prisma-ast@npm:^0.5.2": + version: 0.5.2 + resolution: "@mrleebo/prisma-ast@npm:0.5.2" + dependencies: + chevrotain: "npm:^10.4.2" + checksum: 10c0/155795a245d885d6cd3edac43a3eb57c8ba5c178d71b7595e278c3f7879f78511b9796d3b13e37c228cfdba9621715a2af450611b68aa4d58739fbe129e8200d + languageName: node + linkType: hard + +"@mswjs/cookies@npm:^0.2.2": + version: 0.2.2 + resolution: "@mswjs/cookies@npm:0.2.2" + dependencies: + "@types/set-cookie-parser": "npm:^2.4.0" + set-cookie-parser: "npm:^2.4.6" + checksum: 10c0/f950062538d431674d581309cf19884fc4d3f57e2a276164cac0c9a3250071d42464ba7825d13be14c703ca5a912d62a62626f4a068d8f36d1629dbb63bde740 + languageName: node + linkType: hard + +"@mswjs/interceptors@npm:^0.17.10": + version: 0.17.10 + resolution: "@mswjs/interceptors@npm:0.17.10" + dependencies: + "@open-draft/until": "npm:^1.0.3" + "@types/debug": "npm:^4.1.7" + "@xmldom/xmldom": "npm:^0.8.3" + debug: "npm:^4.3.3" + headers-polyfill: "npm:3.2.5" + outvariant: "npm:^1.2.1" + strict-event-emitter: "npm:^0.2.4" + web-encoding: "npm:^1.1.5" + checksum: 10c0/0343a93711b60c321c40733d6bf2720a736d8e0730f5d0d9916ee4a24abfcfca4a83d1e4b2e21c3affef4fc61f04588104be002fbc8258dc4b0d202c384ade33 + languageName: node + linkType: hard + +"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": + version: 2.1.8-no-fsevents.3 + resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" + checksum: 10c0/27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 + languageName: node + linkType: hard + +"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": + version: 5.1.1-v1 + resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" + dependencies: + eslint-scope: "npm:5.1.1" + checksum: 10c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.1 + resolution: "@npmcli/agent@npm:2.2.1" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.1" + checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + languageName: node + linkType: hard + +"@open-draft/until@npm:^1.0.3": + version: 1.0.3 + resolution: "@open-draft/until@npm:1.0.3" + checksum: 10c0/f88bcd774b55359d14a4fa80f7bfe7d9d6d26a5995e94e823e43b211656daae3663e983f0a996937da286d22f6f5da2087b661845302f236ba27f8529dcd14fb + languageName: node + linkType: hard + +"@opentelemetry/api-logs@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/api-logs@npm:0.45.1" + dependencies: + "@opentelemetry/api": "npm:^1.0.0" + checksum: 10c0/110784924fe39fd544ff71ca6f117834e229fc7940fea7492b3d2bdf1259fc7819860603fda7cc970b6ecd37d79f365be559e0999141172e455e8a839c4d0836 + languageName: node + linkType: hard + +"@opentelemetry/api@npm:1.7.0, @opentelemetry/api@npm:^1.0.0": + version: 1.7.0 + resolution: "@opentelemetry/api@npm:1.7.0" + checksum: 10c0/b5468115d1cec45dd2b86b39210fdc03620a93b9f07c3d20b14081f75e2f7c9b37ceceeb60d5f35c6d4f9819ae07eee0b4874e53e7362376db21db1e00f483f8 + languageName: node + linkType: hard + +"@opentelemetry/context-async-hooks@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/context-async-hooks@npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/6de54978adc500dbcc96738f0a74080c784a5bfe25bd193158bf4abb14659a9a27595cbd65f45dc9058b02c6c9ae883a2a0002b72c036264db676213c25cb7c8 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/core@npm:1.18.1" + dependencies: + "@opentelemetry/semantic-conventions": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/ceb17446ce32faaa8d71caaaf25c9abbc5fd72077c7b868ea6f51e08a4a3daeb9133682a3b299a64291111416f2dd0dbeeed66f44409995fa4540f7250e3ffe1 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-http@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.45.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/otlp-exporter-base": "npm:0.45.1" + "@opentelemetry/otlp-transformer": "npm:0.45.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/sdk-trace-base": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 10c0/3561877ff62bff651a7a4f0f17578910843fc5e00e2e33493591c61a2ac4d85c936b5024fc1dbcbb53c3cf3079914fbf9d80f71dfc3a6301589152b3e5ad84c0 + languageName: node + linkType: hard + +"@opentelemetry/otlp-exporter-base@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/otlp-exporter-base@npm:0.45.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 10c0/22f30443238c2c9ddf26f1a18bf80012bc38cefe0e7ee6c32bd5c44d1f2303b11ab68130b638bd5f977ebc40d030890a407466033b42a9a9dba02c864568f82f + languageName: node + linkType: hard + +"@opentelemetry/otlp-transformer@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/otlp-transformer@npm:0.45.1" + dependencies: + "@opentelemetry/api-logs": "npm:0.45.1" + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/sdk-logs": "npm:0.45.1" + "@opentelemetry/sdk-metrics": "npm:1.18.1" + "@opentelemetry/sdk-trace-base": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.8.0" + checksum: 10c0/5e306e88dff99ef48543edda3e76851fe8d8894981f138479623befa0e8276d84541beaee6ef2a4dfe0bc5a2feb96b3137edb17ad0751d332e67b9d67f49ffa3 + languageName: node + linkType: hard + +"@opentelemetry/propagator-b3@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/propagator-b3@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/c3a31c3679f66a407da3e867775a01f0fbeda5ccd4482bb2979af6285c545ceaed41ad6f9061124daf4d6af2e1f4b3db52095085b159df6197454612752c4cfb + languageName: node + linkType: hard + +"@opentelemetry/propagator-jaeger@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/propagator-jaeger@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/622035eed6a219b24bbb26d12d4efe1ed8d84f5e5045b5e948808ea92d5f0a029233ea47126c8322c3c9d6c3f1fe904aed82ed9f68c4e006123ae083c0fb2f32 + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/resources@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/semantic-conventions": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/064cc1948c7ea9a31edfbf9945c326be1c2802e48c0c0e977cfd2cb4e5e3b63de13d7cc299da31ca99fd2fc82587c16fca53fc60a64db49d479fb16b4593eaea + languageName: node + linkType: hard + +"@opentelemetry/sdk-logs@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/sdk-logs@npm:0.45.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.8.0" + "@opentelemetry/api-logs": ">=0.39.1" + checksum: 10c0/9210dab03024509500a0af9905ad676fdfc118fcccc9be8fa9e0c11147bdc242c580407c7bf2395502193884715e292ee17e811cede2586465dda04b2c8464e0 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/sdk-metrics@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + lodash.merge: "npm:^4.6.2" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.8.0" + checksum: 10c0/3c7050eb997d0bf9d1a6182f94cb49fcf4d62dd47df45b7e9e881df5bd6135a0d54c664fd29ae2a21fbf7cf93715c0e3e4a390bd56059e70a9ccd3f7ee5ab6a4 + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/sdk-trace-base@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/semantic-conventions": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/e3ab716724d9d761c12cbabc41246e7ef27d8c05bc298cae0fa9a7fc84cf9229a87d4128b6ff28d11f12fcc4b0cdabad13d80a5ea57f99e26860bdf38622173c + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-node@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/sdk-trace-node@npm:1.18.1" + dependencies: + "@opentelemetry/context-async-hooks": "npm:1.18.1" + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/propagator-b3": "npm:1.18.1" + "@opentelemetry/propagator-jaeger": "npm:1.18.1" + "@opentelemetry/sdk-trace-base": "npm:1.18.1" + semver: "npm:^7.5.2" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/1b9f4718b12da439e8147a3bba8d7902cd9fd316954fbdbc51b72b90f2eede3ae17f97331f7cf888df9994f4c7cd63f4b64286a74c0cfc8695e7df0b913d1349 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/semantic-conventions@npm:1.18.1" + checksum: 10c0/6437c3758e732d643218e35c66fa931ddf65dde9a33c10af16b866135cbb5357fc3424316139c2ca1188cf0f5b23e844b6e6c9ab461637cb150a40219bee70e9 + languageName: node + linkType: hard + +"@parcel/watcher-android-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-android-arm64@npm:2.4.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-x64@npm:2.4.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.1.0": + version: 2.4.0 + resolution: "@parcel/watcher@npm:2.4.0" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.4.0" + "@parcel/watcher-darwin-arm64": "npm:2.4.0" + "@parcel/watcher-darwin-x64": "npm:2.4.0" + "@parcel/watcher-freebsd-x64": "npm:2.4.0" + "@parcel/watcher-linux-arm-glibc": "npm:2.4.0" + "@parcel/watcher-linux-arm64-glibc": "npm:2.4.0" + "@parcel/watcher-linux-arm64-musl": "npm:2.4.0" + "@parcel/watcher-linux-x64-glibc": "npm:2.4.0" + "@parcel/watcher-linux-x64-musl": "npm:2.4.0" + "@parcel/watcher-win32-arm64": "npm:2.4.0" + "@parcel/watcher-win32-ia32": "npm:2.4.0" + "@parcel/watcher-win32-x64": "npm:2.4.0" + detect-libc: "npm:^1.0.3" + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + node-addon-api: "npm:^7.0.0" + node-gyp: "npm:latest" + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 10c0/f8a7103d8402dceaeed6e7ceef5592ceed6c3ceed7bd747590dbf7b51ca56fd4cb26a6322d1952b4bca52acb41e9d4a13468035b371ef5d264230c4286bf4d0a + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-schema@npm:2.3.8" + dependencies: + asn1js: "npm:^3.0.5" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 10c0/65f16b2a7eb91365b6dac47730ffcad4617ef04b821e0a4286c379ac7283588b0a6744032ee686e0914a0886c2a055108ed945b9c4d22821a3b123640b61f3b2 + languageName: node + linkType: hard + +"@peculiar/json-schema@npm:^1.1.12": + version: 1.1.12 + resolution: "@peculiar/json-schema@npm:1.1.12" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/202132c66dcc6b6aca5d0af971c015be2e163da2f7f992910783c5d39c8a7db59b6ec4f4ce419459a1f954b7e1d17b6b253f0e60072c1b3d254079f4eaebc311 + languageName: node + linkType: hard + +"@peculiar/webcrypto@npm:^1.4.0": + version: 1.4.5 + resolution: "@peculiar/webcrypto@npm:1.4.5" + dependencies: + "@peculiar/asn1-schema": "npm:^2.3.8" + "@peculiar/json-schema": "npm:^1.1.12" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + webcrypto-core: "npm:^1.7.8" + checksum: 10c0/7cefe2a1329e3d41721268cf483dfd7a7a3bfbdaaba0ca8db9a538b49a51c6977f66f7f85e6f0c2162ff8d09540821bedc6766586d83c4be565b1af49ea81a86 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11": + version: 0.5.11 + resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11" + dependencies: + ansi-html-community: "npm:^0.0.8" + common-path-prefix: "npm:^3.0.0" + core-js-pure: "npm:^3.23.3" + error-stack-parser: "npm:^2.0.6" + find-up: "npm:^5.0.0" + html-entities: "npm:^2.1.0" + loader-utils: "npm:^2.0.4" + schema-utils: "npm:^3.0.0" + source-map: "npm:^0.7.3" + 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 + checksum: 10c0/a9c8468417a14a23339e313cff6ddb8029e0637748973070e61d83a2534620b3492b9a42ecf9eb9d63cb709f53c17fe814bc7dd68d64c300db338e9fd7287bc4 + languageName: node + linkType: hard + +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.24 + resolution: "@polka/url@npm:1.0.0-next.24" + checksum: 10c0/97d98fa911857158514457bedad8c36084c1f608302458f580ab300a25c3abf456d1d54fcf2ea7927464bee0858baf5e8e5b374b95c3375b9eb3784d81411ebd + languageName: node + linkType: hard + +"@prisma/client@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/client@npm:5.9.1" + peerDependencies: + prisma: "*" + peerDependenciesMeta: + prisma: + optional: true + checksum: 10c0/5447007e42d507e45960210d804736000b53556b076dd15797dfaed0c58e462dc24eb27e9c6636b8a145dd1a103fc7f6cd876f1906217e8fd8b74c6533169287 + languageName: node + linkType: hard + +"@prisma/debug@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/debug@npm:5.9.1" + checksum: 10c0/0e116019f5e8df7ec30503bcfd033e54c94a20e2a6d6abeed525eac3e0be8f40f8cd3b0cf43abad91d1ec80c3dbca8d827f753b2ccbf9eea20a05ff1cd1d12f5 + languageName: node + linkType: hard + +"@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": + version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 + resolution: "@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + checksum: 10c0/861dd5f88fec224c5bd5885f0a33f8ab0cd39190497806d27d411ea8abde2b684eb27518c47bb0b560e025219284b94d2c5d85abc715f2765f2500e766bf2fdd + languageName: node + linkType: hard + +"@prisma/engines@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/engines@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + "@prisma/fetch-engine": "npm:5.9.1" + "@prisma/get-platform": "npm:5.9.1" + checksum: 10c0/2148c14ec3d46709477319b23dae0e837c91a8119ee01e0a06daf73e6f008bfda5439603d29d722e17b297f2ebe2e73eedb50a4e914a2103931d3de2b4409436 + languageName: node + linkType: hard + +"@prisma/fetch-engine@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/fetch-engine@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + "@prisma/get-platform": "npm:5.9.1" + checksum: 10c0/3abe9ce5dcdea042a6047ba6497730f6d7ce05103de7cf1634e7543742369abc4a62179a8de1cb219e132f5e45729c95c04fc039cebee5b93c23400722ba0583 + languageName: node + linkType: hard + +"@prisma/generator-helper@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/generator-helper@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + checksum: 10c0/34179bc1aded0fec379393f9849046cf3ec3792ca9c052a5486720127af0a234aa0ce3f2b31b04246ac481549a028ddbd9c08259ddcbdce81e8f88db77d5d1f4 + languageName: node + linkType: hard + +"@prisma/get-platform@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/get-platform@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + checksum: 10c0/ac7aa5fca0d5c2a6f04b04bc30eef8df4524ec34e9b2761b47c9fa58ab9b718c5525cb20a944d10e66d7978a4f8ec1ba6cb44a41139d26f885dbfd69c17d385b + languageName: node + linkType: hard + +"@prisma/internals@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/internals@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + "@prisma/engines": "npm:5.9.1" + "@prisma/fetch-engine": "npm:5.9.1" + "@prisma/generator-helper": "npm:5.9.1" + "@prisma/get-platform": "npm:5.9.1" + "@prisma/prisma-schema-wasm": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + arg: "npm:5.0.2" + prompts: "npm:2.4.2" + checksum: 10c0/1afc0e9cbdef678260524b32111d5d2d8aaa684c5800f407055f20c68d39e6afa3e5c0378ce9223a58c6021023c19b08b7ed4a2ee0418552e9213d39b8eeec17 + languageName: node + linkType: hard + +"@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": + version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 + resolution: "@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + checksum: 10c0/ad61814eb28b57f540fbaa508db7056742905305e0393ee6a5bc3624ed9e54dba75f8472f1bff620b6c47364355e3caa69a1dd2009735e4c4ecbe5cd2110204e + languageName: node + linkType: hard + +"@redwoodjs/api-server@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/api-server@npm:7.0.0" + dependencies: + "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" + chalk: "npm:4.1.2" + chokidar: "npm:3.5.3" + dotenv-defaults: "npm:5.0.2" + fast-glob: "npm:3.3.2" + fast-json-parse: "npm:1.0.3" + fastify: "npm:4.25.2" + fastify-raw-body: "npm:4.3.0" + lodash: "npm:4.17.21" + pretty-bytes: "npm:5.6.0" + pretty-ms: "npm:7.0.1" + qs: "npm:6.11.2" + split2: "npm:4.2.0" + yargs: "npm:17.7.2" + peerDependencies: + "@redwoodjs/graphql-server": 6.0.7 + peerDependenciesMeta: + "@redwoodjs/graphql-server": + optional: true + bin: + rw-api-server-watch: dist/watch.js + rw-log-formatter: dist/logFormatter/bin.js + rw-server: dist/bin.js + checksum: 10c0/680afa57f89dc5d193e892ac67632fd16403a2926f0c518445706813e654ff632e535db7c749f4cb25b566ec340a84ecd7c8f8ef2a656fd0deddc9618418da86 + languageName: node + linkType: hard + +"@redwoodjs/api@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/api@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@prisma/client": "npm:5.9.1" + "@whatwg-node/fetch": "npm:0.9.14" + core-js: "npm:3.35.1" + humanize-string: "npm:2.1.0" + jsonwebtoken: "npm:9.0.2" + pascalcase: "npm:1.0.0" + pino: "npm:8.16.2" + title-case: "npm:3.0.3" + peerDependencies: + memjs: 1.3.1 + redis: 4.6.7 + peerDependenciesMeta: + memjs: + optional: true + redis: + optional: true + bin: + redwood: dist/bins/redwood.js + rw: dist/bins/redwood.js + rwfw: dist/bins/rwfw.js + tsc: dist/bins/tsc.js + checksum: 10c0/89e081b348256804c717c1986af99b5d96c90fb02d931a55b9e202d2d2f5056919a5b436c0a1a84833fe3571ab9ee5e2e655219b46323fd08c4fef0cf0628bc3 + languageName: node + linkType: hard + +"@redwoodjs/auth@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/auth@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + core-js: "npm:3.35.1" + react: "npm:18.2.0" + checksum: 10c0/e0abe96b939394c181c77e6d4c450a78fd7f2392a449e56796d0f4d1f00066657550c50d222c97dc57132d7bcb720f8ec124d4daeb3168eaff8c8c66da0d68fe + languageName: node + linkType: hard + +"@redwoodjs/babel-config@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/babel-config@npm:7.0.0" + dependencies: + "@babel/core": "npm:^7.22.20" + "@babel/parser": "npm:^7.22.16" + "@babel/plugin-transform-class-properties": "npm:^7.22.5" + "@babel/plugin-transform-private-methods": "npm:^7.22.5" + "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-runtime": "npm:7.23.9" + "@babel/preset-env": "npm:^7.22.20" + "@babel/preset-react": "npm:^7.22.15" + "@babel/preset-typescript": "npm:^7.22.15" + "@babel/register": "npm:^7.22.15" + "@babel/runtime-corejs3": "npm:7.23.9" + "@babel/traverse": "npm:^7.22.20" + "@redwoodjs/project-config": "npm:7.0.0" + babel-plugin-auto-import: "npm:1.1.0" + babel-plugin-graphql-tag: "npm:3.3.0" + babel-plugin-module-resolver: "npm:5.0.0" + core-js: "npm:3.35.1" + fast-glob: "npm:3.3.2" + graphql: "npm:16.8.1" + typescript: "npm:5.3.3" + checksum: 10c0/5c426409e9f13e7d8dc71a67e6dfa7b20029205d760fd32f4089ab44307f88a56f67b78deceb21328e23f7573259d26cda77e1606ca5ab6ec4a544ff289981ea + languageName: node + linkType: hard + +"@redwoodjs/cli-helpers@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/cli-helpers@npm:7.0.0" + dependencies: + "@babel/core": "npm:^7.22.20" + "@iarna/toml": "npm:2.2.5" + "@opentelemetry/api": "npm:1.7.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" + chalk: "npm:4.1.2" + dotenv: "npm:16.3.1" + execa: "npm:5.1.1" + listr2: "npm:6.6.1" + lodash: "npm:4.17.21" + pascalcase: "npm:1.0.0" + prettier: "npm:2.8.8" + prompts: "npm:2.4.2" + terminal-link: "npm:2.1.1" + checksum: 10c0/caa44734cfde7e126a3e4f89dd6188a2d2514ff6013edacdbf1e0e0a50fba60770ee8b9830d1c37d2133d0f924d416e6a7334dfb64a4c65d846cb0f252e8c228 + languageName: node + linkType: hard + +"@redwoodjs/cli@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/cli@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@iarna/toml": "npm:2.2.5" + "@opentelemetry/api": "npm:1.7.0" + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/exporter-trace-otlp-http": "npm:0.45.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/sdk-trace-node": "npm:1.18.1" + "@opentelemetry/semantic-conventions": "npm:1.18.1" + "@prisma/internals": "npm:5.9.1" + "@redwoodjs/api-server": "npm:7.0.0" + "@redwoodjs/cli-helpers": "npm:7.0.0" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/prerender": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" + archiver: "npm:6.0.1" + boxen: "npm:5.1.2" + camelcase: "npm:6.3.0" + chalk: "npm:4.1.2" + ci-info: "npm:4.0.0" + concurrently: "npm:8.2.2" + configstore: "npm:3.1.5" + core-js: "npm:3.35.1" + cross-env: "npm:7.0.3" + decamelize: "npm:5.0.1" + dotenv-defaults: "npm:5.0.2" + enquirer: "npm:2.4.1" + envinfo: "npm:7.11.0" + execa: "npm:5.1.1" + fast-glob: "npm:3.3.2" + fs-extra: "npm:11.2.0" + humanize-string: "npm:2.1.0" + jscodeshift: "npm:0.15.0" + latest-version: "npm:5.1.0" + listr2: "npm:6.6.1" + lodash: "npm:4.17.21" + param-case: "npm:3.0.4" + pascalcase: "npm:1.0.0" + pluralize: "npm:8.0.0" + portfinder: "npm:1.0.32" + prettier: "npm:2.8.8" + prisma: "npm:5.9.1" + prompts: "npm:2.4.2" + rimraf: "npm:5.0.5" + semver: "npm:7.5.4" + string-env-interpolation: "npm:1.0.1" + systeminformation: "npm:5.21.20" + terminal-link: "npm:2.1.1" + title-case: "npm:3.0.3" + uuid: "npm:9.0.1" + yargs: "npm:17.7.2" + bin: + redwood: dist/index.js + rw: dist/index.js + rwfw: dist/rwfw.js + checksum: 10c0/8fea374d3404b764eb4848920505585fbb81a8927b1364014cb468618638d3fd742b55ddce2020c9c9c09631b12114cd9f1723ddc5a255b05332a53d10e7f6ce + languageName: node + linkType: hard + +"@redwoodjs/context@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/context@npm:7.0.0" + checksum: 10c0/1f859e3e0a358e60d5c536652cd890c5549d76af43019bf903770bb10ace8f0090825327a14c92e8ced08a359d5b5bf945b8b125803e124707e6ecd007e6451f + languageName: node + linkType: hard + +"@redwoodjs/core@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/core@npm:7.0.0" + dependencies: + "@babel/cli": "npm:7.23.9" + "@babel/runtime-corejs3": "npm:7.23.9" + "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.11" + "@redwoodjs/cli": "npm:7.0.0" + "@redwoodjs/eslint-config": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/testing": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" + babel-loader: "npm:^9.1.3" + babel-timing: "npm:0.9.1" + copy-webpack-plugin: "npm:11.0.0" + core-js: "npm:3.35.1" + css-loader: "npm:6.8.1" + css-minimizer-webpack-plugin: "npm:5.0.1" + dotenv-webpack: "npm:8.0.1" + graphql-tag: "npm:2.12.6" + html-webpack-plugin: "npm:5.5.4" + lodash: "npm:4.17.21" + mini-css-extract-plugin: "npm:2.7.6" + nodemon: "npm:3.0.2" + null-loader: "npm:4.0.1" + react-refresh: "npm:0.14.0" + resolve-url-loader: "npm:5.0.0" + rimraf: "npm:5.0.5" + style-loader: "npm:3.3.3" + typescript: "npm:5.3.3" + url-loader: "npm:4.1.1" + webpack: "npm:5.90.0" + webpack-bundle-analyzer: "npm:4.9.1" + webpack-cli: "npm:5.1.4" + webpack-dev-server: "npm:4.15.1" + webpack-manifest-plugin: "npm:5.0.0" + webpack-merge: "npm:5.10.0" + webpack-retry-chunk-load-plugin: "npm:3.1.1" + bin: + cross-env: dist/bins/cross-env.js + eslint: dist/bins/eslint.js + jest: dist/bins/jest.js + nodemon: dist/bins/nodemon.js + redwood: dist/bins/redwood.js + rw: dist/bins/redwood.js + rw-api-server-watch: dist/bins/rw-api-server-watch.js + rw-gen: dist/bins/rw-gen.js + rw-gen-watch: dist/bins/rw-gen-watch.js + rw-log-formatter: dist/bins/rw-log-formatter.js + rw-web-server: dist/bins/rw-web-server.js + rwfw: dist/bins/rwfw.js + checksum: 10c0/13def202d02a5b8a4c0f692d50647cb21fc57019c3f5073b6d174f7f43c92568edd719663264b947250f555582cd7ff14e32be3aa15a5836f9d1494f48c36785 + languageName: node + linkType: hard + +"@redwoodjs/eslint-config@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/eslint-config@npm:7.0.0" + dependencies: + "@babel/core": "npm:^7.22.20" + "@babel/eslint-parser": "npm:7.23.10" + "@babel/eslint-plugin": "npm:7.23.5" + "@redwoodjs/eslint-plugin": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@typescript-eslint/eslint-plugin": "npm:5.62.0" + "@typescript-eslint/parser": "npm:5.62.0" + eslint: "npm:8.55.0" + eslint-config-prettier: "npm:8.10.0" + eslint-import-resolver-babel-module: "npm:5.3.2" + eslint-plugin-babel: "npm:5.3.1" + eslint-plugin-import: "npm:2.29.0" + eslint-plugin-jest-dom: "npm:4.0.3" + eslint-plugin-jsx-a11y: "npm:6.8.0" + eslint-plugin-prettier: "npm:4.2.1" + eslint-plugin-react: "npm:7.33.2" + eslint-plugin-react-hooks: "npm:4.6.0" + prettier: "npm:2.8.8" + checksum: 10c0/3ff44d31187b92c03f5510038d6a7e9f8260743b00851c2f149b351b67ac969111defc4da349ea269300c1506deabe9c452f6ac6a1d217eb3977d6d3c702b22d + languageName: node + linkType: hard + +"@redwoodjs/eslint-plugin@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/eslint-plugin@npm:7.0.0" + dependencies: + "@typescript-eslint/utils": "npm:5.62.0" + eslint: "npm:8.55.0" + checksum: 10c0/7c676170981a88332c47f8bab281587a29f2dde017c2d1993dcff591335363dc38eb66f012505e7c130cbf850217c49aa250bb3265b6b70de1a794a0a63bff4b + languageName: node + linkType: hard + +"@redwoodjs/fastify-web@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/fastify-web@npm:7.0.0" + dependencies: + "@fastify/http-proxy": "npm:9.3.0" + "@fastify/static": "npm:6.12.0" + "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/project-config": "npm:7.0.0" + fast-glob: "npm:3.3.2" + checksum: 10c0/1b54875813520d0990159be5825ee084794aed187e7465467acfec14d8de517c80c2216b41bcb62a88929057e1faf9f4a79677465db5415a59148c7b433e387f + languageName: node + linkType: hard + +"@redwoodjs/forms@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/forms@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + pascalcase: "npm:1.0.0" + react-hook-form: "npm:7.49.3" + peerDependencies: + react: 18.2.0 + checksum: 10c0/9ae59bb2d6bc7bae888ec7059250d55fe92acaa9a0b404617d9175ff48c9db8bb840cb5a3ef182db3d7d11abc136faf8a9e70298a19ffd90b3fa3f9b44efe4b9 + languageName: node + linkType: hard + +"@redwoodjs/graphql-server@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/graphql-server@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@envelop/core": "npm:5.0.0" + "@envelop/depth-limit": "npm:4.0.0" + "@envelop/disable-introspection": "npm:6.0.0" + "@envelop/filter-operation-type": "npm:6.0.0" + "@envelop/on-resolve": "npm:4.1.0" + "@escape.tech/graphql-armor": "npm:2.3.1" + "@graphql-tools/merge": "npm:9.0.1" + "@graphql-tools/schema": "npm:10.0.2" + "@graphql-tools/utils": "npm:10.0.11" + "@graphql-yoga/plugin-persisted-operations": "npm:3.1.1" + "@opentelemetry/api": "npm:1.7.0" + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/context": "npm:7.0.0" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + graphql-scalars: "npm:1.22.4" + graphql-tag: "npm:2.12.6" + graphql-yoga: "npm:5.1.1" + lodash: "npm:4.17.21" + uuid: "npm:9.0.1" + checksum: 10c0/aa481a2cfe2477ac1830b3b8399de547e1aa4cb511b8dc435b3ac56d7263780bea9cd7b8397c019d1825dd1c5849c2c10e8701a23b8fb375743dd4d47e9df969 + languageName: node + linkType: hard + +"@redwoodjs/internal@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/internal@npm:7.0.0" + dependencies: + "@babel/parser": "npm:^7.22.16" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-typescript": "npm:^7.22.15" + "@babel/runtime-corejs3": "npm:7.23.9" + "@babel/traverse": "npm:^7.22.20" + "@graphql-codegen/add": "npm:4.0.1" + "@graphql-codegen/cli": "npm:3.3.1" + "@graphql-codegen/client-preset": "npm:4.1.0" + "@graphql-codegen/core": "npm:3.1.0" + "@graphql-codegen/fragment-matcher": "npm:5.0.0" + "@graphql-codegen/schema-ast": "npm:3.0.1" + "@graphql-codegen/typed-document-node": "npm:5.0.1" + "@graphql-codegen/typescript": "npm:3.0.4" + "@graphql-codegen/typescript-operations": "npm:3.0.4" + "@graphql-codegen/typescript-react-apollo": "npm:3.3.7" + "@graphql-codegen/typescript-resolvers": "npm:3.2.1" + "@graphql-tools/documents": "npm:1.0.0" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@sdl-codegen/node": "npm:0.0.10" + chalk: "npm:4.1.2" + core-js: "npm:3.35.1" + deepmerge: "npm:4.3.1" + esbuild: "npm:0.20.0" + fast-glob: "npm:3.3.2" + fs-extra: "npm:11.2.0" + graphql: "npm:16.8.1" + kill-port: "npm:1.6.1" + prettier: "npm:2.8.8" + rimraf: "npm:5.0.5" + source-map: "npm:0.7.4" + string-env-interpolation: "npm:1.0.1" + systeminformation: "npm:5.21.20" + terminal-link: "npm:2.1.1" + ts-node: "npm:10.9.1" + typescript: "npm:5.3.3" + bin: + rw-gen: dist/generate/generate.js + rw-gen-watch: dist/generate/watch.js + checksum: 10c0/4ff453788d88aa780a17117637a1789fbc577a72fe8b6ebd966d5a45e7b8fbed036217a5974567c3d89ef50f8f2ec199ad38384ae5ef328926efef611f1836ab + languageName: node + linkType: hard + +"@redwoodjs/prerender@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/prerender@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" + "@whatwg-node/fetch": "npm:0.9.14" + babel-plugin-ignore-html-and-css-imports: "npm:0.1.0" + cheerio: "npm:1.0.0-rc.12" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + mime-types: "npm:2.1.35" + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + checksum: 10c0/ba4f146a4b968e18dfa3242cedab2ab58cf3ba878d5b7b2bf780a75bc927907a9a5d49710097a5b2c3ea710afd151d8d07ac1c24445c651144a27185c485074f + languageName: node + linkType: hard + +"@redwoodjs/project-config@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/project-config@npm:7.0.0" + dependencies: + "@iarna/toml": "npm:2.2.5" + deepmerge: "npm:4.3.1" + fast-glob: "npm:3.3.2" + string-env-interpolation: "npm:1.0.1" + checksum: 10c0/0800cd606cb4ab6175be4f348ef505d8fea7a3ad2739eecdf9d406f024cf60138621039b9f5d184dcfb003dc82ff7d5acfa7868163836cfb9684a7e3c1f0319a + languageName: node + linkType: hard + +"@redwoodjs/router@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/router@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + core-js: "npm:3.35.1" + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + checksum: 10c0/881d6c63842de08c3122f51095f95fc9a9c63444817bce400dee4f994e6f246677a1b42a056d86acbecb90f683010ccb13e73efb0b552a363c3e6460f88a3ec4 + languageName: node + linkType: hard + +"@redwoodjs/structure@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/structure@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@iarna/toml": "npm:2.2.5" + "@prisma/internals": "npm:5.9.1" + "@redwoodjs/project-config": "npm:7.0.0" + "@types/line-column": "npm:1.0.0" + camelcase: "npm:6.3.0" + core-js: "npm:3.35.1" + deepmerge: "npm:4.3.1" + dotenv-defaults: "npm:5.0.2" + enquirer: "npm:2.4.1" + fast-glob: "npm:3.3.2" + graphql: "npm:16.8.1" + lazy-get-decorator: "npm:2.2.1" + line-column: "npm:1.0.2" + lodash: "npm:4.17.21" + lodash-decorators: "npm:6.0.1" + lru-cache: "npm:7.18.3" + proxyquire: "npm:2.1.3" + ts-morph: "npm:15.1.0" + vscode-languageserver: "npm:6.1.1" + vscode-languageserver-textdocument: "npm:1.0.8" + vscode-languageserver-types: "npm:3.17.3" + yargs-parser: "npm:21.1.1" + checksum: 10c0/a07aed80aa8442beda6339665b6ad3e45f9b891c5ebe05901768b427f9f4690d7be633a655e3cb4969f0478055d01cc99d62f0a51a29e7ab024029e571a466b8 + languageName: node + linkType: hard + +"@redwoodjs/telemetry@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/telemetry@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@whatwg-node/fetch": "npm:0.9.14" + ci-info: "npm:4.0.0" + core-js: "npm:3.35.1" + envinfo: "npm:7.11.0" + systeminformation: "npm:5.21.20" + uuid: "npm:9.0.1" + yargs: "npm:17.7.2" + checksum: 10c0/3414042f7b02a0bedd045b2f95516c20b238ccebfd4d5bb7e448e32b89b8d59f31117d201b25f965c4a112d4b6f5204ce4b13926ddefeac5793c8cf456566741 + languageName: node + linkType: hard + +"@redwoodjs/testing@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/testing@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" + "@testing-library/jest-dom": "npm:6.3.0" + "@testing-library/react": "npm:14.1.2" + "@testing-library/user-event": "npm:14.5.2" + "@types/aws-lambda": "npm:8.10.126" + "@types/babel-core": "npm:6.25.10" + "@types/jest": "npm:29.5.8" + "@types/node": "npm:20.11.10" + "@types/webpack": "npm:5.28.5" + "@types/webpack-env": "npm:1.18.4" + babel-jest: "npm:^29.7.0" + core-js: "npm:3.35.1" + fast-glob: "npm:3.3.2" + jest: "npm:29.7.0" + jest-environment-jsdom: "npm:29.7.0" + jest-watch-typeahead: "npm:2.2.2" + msw: "npm:1.3.2" + ts-toolbelt: "npm:9.6.0" + whatwg-fetch: "npm:3.6.19" + checksum: 10c0/0770d47ce132a0086c1fe3009ead9abd4b08ff506a70b832d2dc4d78b7d21d9f63dfc0bc9f34eb8c1a736102a40390b13536b12a0ca4456f1662ad34302aa69b + languageName: node + linkType: hard + +"@redwoodjs/vite@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/vite@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@vitejs/plugin-react": "npm:4.2.1" + buffer: "npm:6.0.3" + core-js: "npm:3.35.1" + vite: "npm:4.5.2" + yargs-parser: "npm:21.1.1" + bin: + rw-vite-build: bins/rw-vite-build.mjs + rw-vite-dev: bins/rw-vite-dev.mjs + vite: bins/vite.mjs + checksum: 10c0/b3b581a050a2e9f380472bbcc885a5aa0a7bd06889bf6c0bf098390d42f6a8bbf2b69c2159414aa2b725567973e1bc70df2d66f418df51ee1a047e254a25a652 + languageName: node + linkType: hard + +"@redwoodjs/web-server@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/web-server@npm:7.0.0" + dependencies: + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + chalk: "npm:4.1.2" + dotenv-defaults: "npm:5.0.2" + fastify: "npm:4.25.2" + fs-extra: "npm:11.2.0" + yargs: "npm:17.7.2" + bin: + rw-web-server: dist/bin.js + checksum: 10c0/eeb7c44636823dfa67d6ee78c27f5ec513160fb253e77d9ac1e799a5ad5966e8ac2a7da0d66ab84dd7a267c60a01675c6d08caa54368a6b3b78c8fa9834cdfd1 + languageName: node + linkType: hard + +"@redwoodjs/web@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/web@npm:7.0.0" + dependencies: + "@apollo/client": "npm:3.8.10" + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + graphql-sse: "npm:2.5.2" + graphql-tag: "npm:2.12.6" + react-helmet-async: "npm:2.0.3" + react-hot-toast: "npm:2.4.1" + stacktracey: "npm:2.1.8" + ts-toolbelt: "npm:9.6.0" + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + bin: + cross-env: dist/bins/cross-env.js + msw: dist/bins/msw.js + redwood: dist/bins/redwood.js + rw: dist/bins/redwood.js + rwfw: dist/bins/rwfw.js + storybook: dist/bins/storybook.js + tsc: dist/bins/tsc.js + webpack: dist/bins/webpack.js + checksum: 10c0/c103f847f8b73b091a56ed3bed826f27049c9d37de28e1c71eb135e1ceec4a023e326f72fbc67c8e5c94c3d9b7989cd393f72a5b641def70622c3cb8a8c6f0b9 + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:3.0.4": + version: 3.0.4 + resolution: "@repeaterjs/repeater@npm:3.0.4" + checksum: 10c0/9a2928d70f2be4a8f72857f8f7553810015ac970f174b4b20f07289644379af57fa68947601d67e557c1a7c33ddf805e787cf2a1d5e9037ba485d24075a81b6b + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:^3.0.4": + version: 3.0.5 + resolution: "@repeaterjs/repeater@npm:3.0.5" + checksum: 10c0/e6e1aca2bbfe0b8e974bc5185a6839f9e78ec8acb96b6d6911a9dfc958443689f9bc38bcc6d554e6c8598f597f0151841aafbd1ee3ef16262ee93d18b2c1d4b5 + languageName: node + linkType: hard + +"@sdl-codegen/node@npm:0.0.10": + version: 0.0.10 + resolution: "@sdl-codegen/node@npm:0.0.10" + dependencies: + "@mrleebo/prisma-ast": "npm:^0.5.2" + ts-morph: "npm:^18.0.0" + peerDependencies: + graphql: "*" + prettier: ^2 + typescript: "*" + peerDependenciesMeta: + prettier: + optional: true + checksum: 10c0/275247e686cc999d91623d67ce09171f9ed17764616bb7941877439ce44b1cba305ac049e91981660cd8690f18d797cd27cecdf26cf436eb81895093e0223f42 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^0.14.0": + version: 0.14.0 + resolution: "@sindresorhus/is@npm:0.14.0" + checksum: 10c0/7247aa9314d4fc3df9b3f63d8b5b962a89c7600a5db1f268546882bfc4d31a975a899f5f42a09dd41a11e58636e6402f7c40f92df853aee417247bb11faee9a0 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^1.1.2": + version: 1.1.2 + resolution: "@szmarczak/http-timer@npm:1.1.2" + dependencies: + defer-to-connect: "npm:^1.0.1" + checksum: 10c0/0594140e027ce4e98970c6d176457fcbff80900b1b3101ac0d08628ca6d21d70e0b94c6aaada94d4f76c1423fcc7195af83da145ce0fd556fc0595ca74a17b8b + languageName: node + linkType: hard + +"@testing-library/dom@npm:^8.11.1": + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d + languageName: node + linkType: hard + +"@testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:6.3.0": + version: 6.3.0 + resolution: "@testing-library/jest-dom@npm:6.3.0" + dependencies: + "@adobe/css-tools": "npm:^4.3.2" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/bun": "*" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/bun": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: 10c0/38ef0dc054b90b253015adaa16828046b1eff8137b86506d5233c10c85a8d8516d55dddb0af5ada46ef98ce9d9bbdad94de42acd29ed07adfb2924fc7bfc6429 + languageName: node + linkType: hard + +"@testing-library/react@npm:14.1.2": + version: 14.1.2 + resolution: "@testing-library/react@npm:14.1.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@testing-library/dom": "npm:^9.0.0" + "@types/react-dom": "npm:^18.0.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10c0/b5b0990d3aa0ea8b37c55804e0d5d584fc638a5c7d4df90da9a0fdb00bc981b27b6991468b2dc719982a5d0b0107a41596063ce51ad519eeab47b22bc04d6779 + languageName: node + linkType: hard + +"@testing-library/user-event@npm:14.5.2": + version: 14.5.2 + resolution: "@testing-library/user-event@npm:14.5.2" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 10c0/68a0c2aa28a3c8e6eb05cafee29705438d7d8a9427423ce5064d44f19c29e89b5636de46dd2f28620fb10abba75c67130185bbc3aa23ac1163a227a5f36641e1 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + languageName: node + linkType: hard + +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 + languageName: node + linkType: hard + +"@ts-morph/common@npm:~0.16.0": + version: 0.16.0 + resolution: "@ts-morph/common@npm:0.16.0" + dependencies: + fast-glob: "npm:^3.2.11" + minimatch: "npm:^5.1.0" + mkdirp: "npm:^1.0.4" + path-browserify: "npm:^1.0.1" + checksum: 10c0/a9f306dd5c0c022b805400a1e54f18ec3fd1d80cc62e41f5f6964755d4b2538c10584b2fd040f9184121269dfebbe20ac7ffeb9965e74c3d6cb5b8891e29e5cb + languageName: node + linkType: hard + +"@ts-morph/common@npm:~0.19.0": + version: 0.19.0 + resolution: "@ts-morph/common@npm:0.19.0" + dependencies: + fast-glob: "npm:^3.2.12" + minimatch: "npm:^7.4.3" + mkdirp: "npm:^2.1.6" + path-browserify: "npm:^1.0.1" + checksum: 10c0/e25fd46158d72be238ab1dda74e7ee284085895b12b9ab279f37d50f1cd71b2be95a56f3efa19d5f52986534e9f34ae4a294467cd1637b27cf4fb82bd7318bb7 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: 10c0/c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: 10c0/dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08 + languageName: node + linkType: hard + +"@types/aws-lambda@npm:8.10.126": + version: 8.10.126 + resolution: "@types/aws-lambda@npm:8.10.126" + checksum: 10c0/4b538cbb3c730c08d921ff13943b39f9a68d89c2ad64b54dff82768e949b4cacd3d82c028bb5fce495f0a66b37b6299052367d419890229956565ccbc2bd9767 + languageName: node + linkType: hard + +"@types/babel-core@npm:6.25.10": + version: 6.25.10 + resolution: "@types/babel-core@npm:6.25.10" + dependencies: + "@types/babel-generator": "npm:*" + "@types/babel-template": "npm:*" + "@types/babel-traverse": "npm:*" + "@types/babel-types": "npm:*" + "@types/babylon": "npm:*" + checksum: 10c0/4a0e26acc0aed7ffed6aa0ee63fedb8dedac1f11633229ff0c09d27cf02863fa2c25cbb99eecfa5004449b84027b3ab4abe2d29a936784cb2a85e4d49593b4e4 + languageName: node + linkType: hard + +"@types/babel-generator@npm:*": + version: 6.25.8 + resolution: "@types/babel-generator@npm:6.25.8" + dependencies: + "@types/babel-types": "npm:*" + checksum: 10c0/98fc6912831177d064e5229b35d954df726ae9c78fa380aef6ea46c861f3d96384692c0c86f9b370584e3d38352ab8f11db2ce5fe23b2a51f80534755c4f2dc0 + languageName: node + linkType: hard + +"@types/babel-template@npm:*": + version: 6.25.5 + resolution: "@types/babel-template@npm:6.25.5" + dependencies: + "@types/babel-types": "npm:*" + "@types/babylon": "npm:*" + checksum: 10c0/1c62830f44a22f6b61f5073ad8e9ebc62a205d3b52e1d8db04c5c6df3ffe651a51ca65e8293dbc16ddcaedc9d847a2e9a2b618c78836d5753047efd93317f168 + languageName: node + linkType: hard + +"@types/babel-traverse@npm:*": + version: 6.25.10 + resolution: "@types/babel-traverse@npm:6.25.10" + dependencies: + "@types/babel-types": "npm:*" + checksum: 10c0/49fecf86a6b17541d3192131de9d8abeb25b03d66910eac3604a0c963ac596d64d84a9ca3a752629127a0958db35fa44bfc54ff157f906240aa926a5371f3e2d + languageName: node + linkType: hard + +"@types/babel-types@npm:*": + version: 7.0.15 + resolution: "@types/babel-types@npm:7.0.15" + checksum: 10c0/d4ff6f0c177aee27526e306ee8621dc0c6e6315b684885736cbed719477a5e6afd0d76e5425ce41a2c0fc2fefe9f6c85d641c7504f048e3fc0aa810692a19f31 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.5 + resolution: "@types/babel__traverse@npm:7.20.5" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/033abcb2f4c084ad33e30c3efaad82161240f351e3c71b6154ed289946b33b363696c0fbd42502b68e4582a87413c418321f40eb1ea863e34fe525641345e05b + languageName: node + linkType: hard + +"@types/babylon@npm:*": + version: 6.16.9 + resolution: "@types/babylon@npm:6.16.9" + dependencies: + "@types/babel-types": "npm:*" + checksum: 10c0/3dbe33a158b39d00e11ca4f53cad7ea02ed69c1c266221cabcc81596a03084706be007db698b254ad9689d040d77b9fd32b4b9956cf96dbb631572ea12e53b3a + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/aebeb200f25e8818d8cf39cd0209026750d77c9b85381cdd8deeb50913e4d18a1ebe4b74ca9b0b4d21952511eeaba5e9fbbf739b52731a2061e206ec60d568df + languageName: node + linkType: hard + +"@types/bonjour@npm:^3.5.9": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/eebedbca185ac3c39dd5992ef18d9e2a9f99e7f3c2f52f5561f90e9ed482c5d224c7962db95362712f580ed5713264e777a98d8f0bd8747f4eadf62937baed16 + languageName: node + linkType: hard + +"@types/connect-history-api-fallback@npm:^1.3.5": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/1b4035b627dcd714b05a22557f942e24a57ca48e7377dde0d2f86313fe685bc0a6566512a73257a55b5665b96c3041fb29228ac93331d8133011716215de8244 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 10c0/f96afe12bd51be1ec61410b0641243d93fa3a494702407c787a4c872b5c8bcd39b224471452055e44a9ce42af1a636e87d161994226eaf4c2be9c30f60418409 + languageName: node + linkType: hard + +"@types/debug@npm:^4.1.7": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 8.56.2 + resolution: "@types/eslint@npm:8.56.2" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/e33ca87a30a9454ba9943e1270ac759996f5fe598a1c1afbaec1d1e7346a339e20bf2a9d81f177067116bbaa6cfa4f748993cb338f57978ae862ad38ffae56fe + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": + version: 4.17.43 + resolution: "@types/express-serve-static-core@npm:4.17.43" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/12480527eef86ad9f748d785811c88e6bb89f4a76e531cf2e18f1f4f0743e46783cf4d27a939dec96aec8770c54c060d9e697bb8544ecd202098140688c3b222 + languageName: node + linkType: hard + +"@types/express@npm:*, @types/express@npm:^4.17.13": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.33" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + +"@types/html-minifier-terser@npm:^6.0.0": + version: 6.1.0 + resolution: "@types/html-minifier-terser@npm:6.1.0" + checksum: 10c0/a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.14 + resolution: "@types/http-proxy@npm:1.17.14" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/c4bffd87be9aff7e879c05bd2c28716220e0eb39788e3f8d314eee665324ad8f5f0919041cbd710254d553cd9cea023f8b776d4b1ec31d2188eac60af18c3022 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:29.5.8": + version: 29.5.8 + resolution: "@types/jest@npm:29.5.8" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/a28e7827ea7e1a2aace6a386868fa6b8402c162d6c71570aed2c29d3745ddc22ceef6899a20643071817905d3c57b670a7992fc8760bff65939351fd4dc481cf + languageName: node + linkType: hard + +"@types/js-levenshtein@npm:^1.1.1": + version: 1.1.3 + resolution: "@types/js-levenshtein@npm:1.1.3" + checksum: 10c0/025f2bd8d865cfa7a996799a1a2f2a77fa2fc74a28971aa035a103de35d7c1e3d949721a88f57fdb532815bbcb2bf7019196a608ed0a8bbd1023d64c52bb251b + languageName: node + linkType: hard + +"@types/js-yaml@npm:^4.0.0": + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: 10c0/24de857aa8d61526bbfbbaa383aa538283ad17363fcd5bb5148e2c7f604547db36646440e739d78241ed008702a8920665d1add5618687b6743858fae00da211 + languageName: node + linkType: hard + +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + parse5: "npm:^7.0.0" + checksum: 10c0/3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json-stable-stringify@npm:^1.0.32": + version: 1.0.36 + resolution: "@types/json-stable-stringify@npm:1.0.36" + checksum: 10c0/c2f0d0075bd04681d664a7ac4ef5078289b2f790f9737cd3457b5cc199d39df2efe132e04574ad5f89c9ae50096d44c9ca5ec4aebcd6005b969009f725dbcb79 + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/keyv@npm:^3.1.1": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + languageName: node + linkType: hard + +"@types/line-column@npm:1.0.0": + version: 1.0.0 + resolution: "@types/line-column@npm:1.0.0" + checksum: 10c0/70503f45d4e0953b470067df22911e0a9e877f5d8459dcbc2bbebc7dd8534114ef99fd0f0926e657fb9711e45e3ffaa7fb04469b605252f4309dbe66cb1c9489 + languageName: node + linkType: hard + +"@types/mime@npm:*": + version: 3.0.4 + resolution: "@types/mime@npm:3.0.4" + checksum: 10c0/db478bc0f99e40f7b3e01d356a9bdf7817060808a294978111340317bcd80ca35382855578c5b60fbc84ae449674bd9bb38427b18417e1f8f19e4f72f8b242cd + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc + languageName: node + linkType: hard + +"@types/minimatch@npm:^3.0.3": + version: 3.0.5 + resolution: "@types/minimatch@npm:3.0.5" + checksum: 10c0/a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3d7d23ca0ba38ac0cf74028393bd70f31169ab9aba43f21deb787840170d307d662644bac07287495effe2812ddd7ac8a14dbd43f16c2936bbb06312e96fc3b9 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 20.11.19 + resolution: "@types/node@npm:20.11.19" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/f451ef0a1d78f29c57bad7b77e49ebec945f2a6d0d7a89851d7e185ee9fe7ad94d651c0dfbcb7858c9fa791310c8b40a881e2260f56bd3c1b7e7ae92723373ae + languageName: node + linkType: hard + +"@types/node@npm:20.11.10": + version: 20.11.10 + resolution: "@types/node@npm:20.11.10" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/aced8595c2786d4e60471772659add1e2e0d1f2b73d119820b2e1815426d6e52c6a77f1c7fca8ea46490c36f7959cc46b0dc609fa2e80b7fd24f9a7d696c2210 + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.11 + resolution: "@types/prop-types@npm:15.7.11" + checksum: 10c0/e53423cf9d510515ef8b47ff42f4f1b65a7b7b37c8704e2dbfcb9a60defe0c0e1f3cb1acfdeb466bad44ca938d7c79bffdd51b48ffb659df2432169d0b27a132 + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.11 + resolution: "@types/qs@npm:6.9.11" + checksum: 10c0/657a50f05b694d6fd3916d24177cfa0f3b8b87d9deff4ffa4dddcb0b03583ebf7c47b424b8de400270fb9a5cc1e9cf790dd82c833c6935305851e7da8ede3ff5 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.19": + version: 18.2.19 + resolution: "@types/react-dom@npm:18.2.19" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/88d7c6daa4659f661d0c97985d9fca492f24b421a34bb614dcd94c343aed7bea121463149e97fb01ecaa693be17b7d1542cf71ddb1705f3889a81eb2639a88aa + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:^18.2.55": + version: 18.2.57 + resolution: "@types/react@npm:18.2.57" + dependencies: + "@types/prop-types": "npm:*" + "@types/scheduler": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/d5ed2f04c069c591e41ef1bea5b70f89dc7a4edff2254c4df801ddaa21b43b2aa70c106c049b9b6736f98f5afe66576d0e75a9e47c7044f2660b1744ff64f535 + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/responselike@npm:1.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/a58ba341cb9e7d74f71810a88862da7b2a6fa42e2a1fc0ce40498f6ea1d44382f0640117057da779f74c47039f7166bf48fad02dc876f94e005c7afa50f5e129 + languageName: node + linkType: hard + +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.16.8 + resolution: "@types/scheduler@npm:0.16.8" + checksum: 10c0/f86de504945b8fc41b1f391f847444d542e2e4067cf7e5d9bfeb5d2d2393d3203b1161bc0ef3b1e104d828dabfb60baf06e8d2c27e27ff7e8258e6e618d8c4ec + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.12": + version: 7.5.7 + resolution: "@types/semver@npm:7.5.7" + checksum: 10c0/fb72d8b86a7779650f14ae89542f1da2ab624adb8188d98754b1d29a2fe3d41f0348bf9435b60ad145df1812fd2a09b3256779aa23b532c199f3dee59619a1eb + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.1": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/94c1b9e8f1ea36a229e098e1643d5665d9371f8c2658521718e259130a237c447059b903bac0dcc96ee2c15fd63f49aa647099b7d0d437a67a6946527a837438 + languageName: node + linkType: hard + +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": + version: 1.15.5 + resolution: "@types/serve-static@npm:1.15.5" + dependencies: + "@types/http-errors": "npm:*" + "@types/mime": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/811d1a2f7e74a872195e7a013bcd87a2fb1edf07eaedcb9dcfd20c1eb4bc56ad4ea0d52141c13192c91ccda7c8aeb8a530d8a7e60b9c27f5990d7e62e0fecb03 + languageName: node + linkType: hard + +"@types/set-cookie-parser@npm:^2.4.0": + version: 2.4.7 + resolution: "@types/set-cookie-parser@npm:2.4.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3c4b5168fe2e8f1f70e39de718fab79bf5386dcb3217b16936d732b985af2372eb0670190c0c5c9c3e68ace34dd6e52e9664439cec06354c278601f659c396ff + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.33": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/b20b7820ee813f22de4f2ce98bdd12c68c930e016a8912b1ed967595ac0d8a4cbbff44f4d486dd97f77f5927e7b5725bdac7472c9ec5b27f53a5a13179f0612f + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + +"@types/webpack-env@npm:1.18.4": + version: 1.18.4 + resolution: "@types/webpack-env@npm:1.18.4" + checksum: 10c0/3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 + languageName: node + linkType: hard + +"@types/webpack@npm:5.28.5": + version: 5.28.5 + resolution: "@types/webpack@npm:5.28.5" + dependencies: + "@types/node": "npm:*" + tapable: "npm:^2.2.0" + webpack: "npm:^5" + checksum: 10c0/d1fec1f678af79dd0d84333740bdd2ce128c7f4fd1f8d14bb0ec0f4c5af70580af68350f677e3696003a8cb2e2b5f510f8c0ed7ee5ad2bc7874c87f80ecd7c8d + languageName: node + linkType: hard + +"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.5": + version: 8.5.10 + resolution: "@types/ws@npm:8.5.10" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/type-utils": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + natural-compare-lite: "npm:^1.4.0" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:4.2.1": + version: 4.2.1 + resolution: "@vitejs/plugin-react@npm:4.2.1" + dependencies: + "@babel/core": "npm:^7.23.5" + "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.14.0" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + checksum: 10c0/de1eec44d703f32e5b58e776328ca20793657fe991835d15b290230b19a2a08be5d31501d424279ae13ecfed28044c117b69d746891c8d9b92c69e8a8907e989 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + checksum: 10c0/e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/ast@npm:1.9.0" + dependencies: + "@webassemblyjs/helper-module-context": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/wast-parser": "npm:1.9.0" + checksum: 10c0/8246c714346cdcd3ab204a2b09904d9d36c4f7da8f30cc217b0b7272a3ef57a3c21e95d51b26601641133fb66fea5cc46c357cf897808512f13b3d1c2efe88e4 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" + checksum: 10c0/17acfdfe6650691ae8d0279e6ff4fb8b5efce64e12f3fa18c6a7d279968cc72eb21c0db7ebb5be9d627d05fa7014cef087843d999de96c917079f57d7dac8f77 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" + checksum: 10c0/892851b25cf4b4b307490328f45858414326dac667ca15244b5e959fa6e22478b29dabeb581d49ef8a2874e291d0417a3a959be70428c39cd40870e73b394dbc + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: 10c0/55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" + checksum: 10c0/b09a3e27d9127ccaab095bd171336e7675bb5b832e05b701ff174a853b763154a49f5382c4c3f2f1cc746b1cff3f2025452145cf807ddf788133bcccf5920ca8 + languageName: node + linkType: hard + +"@webassemblyjs/helper-code-frame@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" + dependencies: + "@webassemblyjs/wast-printer": "npm:1.9.0" + checksum: 10c0/010969a6c8b016680a9b1383ff4b8147c363608dd1e29602154e5460954af4fd48daed518a76b232ca43935d4b6bebf54fba38da56f809e2bd12f063d84013ec + languageName: node + linkType: hard + +"@webassemblyjs/helper-fsm@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" + checksum: 10c0/ef0c99b58716d757a1a41f99fb46578d3f07d97b60cd51deaeffdf0aad09ec47f5093ee8d098d12324d57f8812609704c377fccfe9a32d02c0a658a4a33dce94 + languageName: node + linkType: hard + +"@webassemblyjs/helper-module-context@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + checksum: 10c0/130a9ac1141770b9f70ad568ec2dc769e92c756f91b06ece9cda2c2a5e80e21ec9c8c2a945a5839bf379e52fa921ae134245a7492e1b9ae0e8c557bb9b4953c3 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" + checksum: 10c0/1741993e1c723f56b619a4981ec975f903886aa3f1f50c7bdb2eaa45ca4ad8d023d6ae7413ef643f060567b1f12a9dcfad6c43688879c46ee4f0b53aa71cd5c9 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-buffer": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.11.6" + checksum: 10c0/b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-buffer": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/wasm-gen": "npm:1.9.0" + checksum: 10c0/2a5baa7749c50a4a428f372ab88b7e52956b48798d44e7291b4aa8558b247337dba791112ce8a4f5b2281e1b9014e6d44d0141476a5fcde6016fac2e009671e8 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/ieee754@npm:1.9.0" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/0eff34ec7048400b30282ab9af6ad19d2852dab2f5ffaec8bdc697b8380bc2c9dbe6cadf65f49e68242c82ee3caa8aa6e46c89dbfdab37615189b4da2eab3819 + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/leb128@npm:1.9.0" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/441be8634733b33b710f44d4394552d6290bb1a0a8311b384b1865b58c3549d0ddeaf1c3985bbee024a8df12c597be3580fc1cde2ae003dcbf26762b493a7a2f + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/utf8@npm:1.9.0" + checksum: 10c0/9566689a1bcf555d6b79d0da79e24ff2be23c0395e5a19ed3c2ceca7831e50b867e0b1c66b3ff1b1d7f297b2d2414314967a884a77634ad0acff8a78489e2b19 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-edit@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-buffer": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/helper-wasm-section": "npm:1.9.0" + "@webassemblyjs/wasm-gen": "npm:1.9.0" + "@webassemblyjs/wasm-opt": "npm:1.9.0" + "@webassemblyjs/wasm-parser": "npm:1.9.0" + "@webassemblyjs/wast-printer": "npm:1.9.0" + checksum: 10c0/07f4cb4a73989622c524f9264b6afe664d33354f081499f04db675aed2b79498bd43600c3d7bebcb9f93ccce6a094b3c28f3f7b11ea62e9e82074c2ae68dc058 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-buffer": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/helper-wasm-section": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.11.6" + "@webassemblyjs/wasm-opt": "npm:1.11.6" + "@webassemblyjs/wasm-parser": "npm:1.11.6" + "@webassemblyjs/wast-printer": "npm:1.11.6" + checksum: 10c0/9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/ieee754": "npm:1.9.0" + "@webassemblyjs/leb128": "npm:1.9.0" + "@webassemblyjs/utf8": "npm:1.9.0" + checksum: 10c0/876826bef91f3af9e48118fb269c348871d5b6f019e071065556da56a3a5818630b00133e07c9dd2cc767e7f2c70934f3ed0060330ce3e37910e9c9df25f1600 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-buffer": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.11.6" + "@webassemblyjs/wasm-parser": "npm:1.11.6" + checksum: 10c0/82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-buffer": "npm:1.9.0" + "@webassemblyjs/wasm-gen": "npm:1.9.0" + "@webassemblyjs/wasm-parser": "npm:1.9.0" + checksum: 10c0/3d5558e078b660cd9777950f2df60f005f3cbdbcfa6c8c19dc0cf012f44f5bfa97c991d7ac26b3e78596bad0538e92dd00b5db4b51ebc373da8e329a03639190 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-api-error": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/ieee754": "npm:1.9.0" + "@webassemblyjs/leb128": "npm:1.9.0" + "@webassemblyjs/utf8": "npm:1.9.0" + checksum: 10c0/1e8615b9f9c3c431c9635c9a9884bca89eff1ab2383ad849341c23e09899454482a8f8813d33bf86ee1b0acc97c7c83926961a9b34d4804fa5d559610ab0a4a2 + languageName: node + linkType: hard + +"@webassemblyjs/wast-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wast-parser@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/floating-point-hex-parser": "npm:1.9.0" + "@webassemblyjs/helper-api-error": "npm:1.9.0" + "@webassemblyjs/helper-code-frame": "npm:1.9.0" + "@webassemblyjs/helper-fsm": "npm:1.9.0" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c79952466fdf7816be527b1db102952b777b12318eabb5c40df074cd8361e3a7b0179a985534fa8b5a7b93668b07ba46875ffeb5da03ca5177c80ba960ebdffc + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wast-printer@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/wast-parser": "npm:1.9.0" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/f3d106aa884cbb7687307db7adeb3b98abff9de81b9ba8c1065267340b5e9de64ffc533044ab916b1f4ce8a67fb03efa54b29b61c8e908abe4c07edf82f614cd + languageName: node + linkType: hard + +"@webpack-cli/configtest@npm:^2.1.1": + version: 2.1.1 + resolution: "@webpack-cli/configtest@npm:2.1.1" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 10c0/a8da1f15702cb289807da99235ed95326ed7dabeb1a36ca59bd3a5dbe6adcc946a9a2767936050fc4d5ed14efab0e5b5a641dfe8e3d862c36caa5791ac12759d + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^2.0.2": + version: 2.0.2 + resolution: "@webpack-cli/info@npm:2.0.2" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 10c0/ca88a35604dc9aedac7c26e8f6793c5039dc1eea2b12a85fbfd669a5f21ecf9cf169d7fd157ea366a62666e3fa05b776306a96742ac61a9868f44fdce6b40f7d + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^2.0.5": + version: 2.0.5 + resolution: "@webpack-cli/serve@npm:2.0.5" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 10c0/36079d34971ff99a58b66b13f4184dcdd8617853c48cccdbc3f9ab7ea9e5d4fcf504e873c298ea7aa15e0b51ad2c4aee4d7a70bd7d9364e60f57b0eb93ca15fc + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.0.3": + version: 0.0.3 + resolution: "@whatwg-node/events@npm:0.0.3" + checksum: 10c0/87ac0854f84650ce016ccd82a6c087eac1c6204eeb80cf358737ce7757a345e3a4ba19e9b1815b326eb1451d49878785aa9dc426631f4ea47dedbcfc51b56977 + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.1.0": + version: 0.1.1 + resolution: "@whatwg-node/events@npm:0.1.1" + checksum: 10c0/7e4678c8c092484dc248f4a229a398de30d21190b94ebebc333c2187180207a18e257c4588d0910e872251b3089007f4a2a3ff8b9a4d057fae94db8da28be467 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:0.9.14": + version: 0.9.14 + resolution: "@whatwg-node/fetch@npm:0.9.14" + dependencies: + "@whatwg-node/node-fetch": "npm:^0.5.0" + urlpattern-polyfill: "npm:^9.0.0" + checksum: 10c0/cb91d18c744e0d01c2f8d7982f961258a43b54baa8680ed6291a257f85e5ace1b68fc74105eebebd96b4450648fbaec98d91a434c1142da44acf928c41842d58 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.8.0, @whatwg-node/fetch@npm:^0.8.1, @whatwg-node/fetch@npm:^0.8.2": + version: 0.8.8 + resolution: "@whatwg-node/fetch@npm:0.8.8" + dependencies: + "@peculiar/webcrypto": "npm:^1.4.0" + "@whatwg-node/node-fetch": "npm:^0.3.6" + busboy: "npm:^1.6.0" + urlpattern-polyfill: "npm:^8.0.0" + web-streams-polyfill: "npm:^3.2.1" + checksum: 10c0/37d882bf85764aec7541cda1008099ab4d695971608946ec9b9e40326eedfd4c49507fbcc8765ebe3e9241f4dc9d1e970e0b3501a814d721c40c721d313c5d50 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.9.10, @whatwg-node/fetch@npm:^0.9.7": + version: 0.9.16 + resolution: "@whatwg-node/fetch@npm:0.9.16" + dependencies: + "@whatwg-node/node-fetch": "npm:^0.5.5" + urlpattern-polyfill: "npm:^10.0.0" + checksum: 10c0/757fd8560ee1a9ae404dafc43115eb37c72022c9bd3a30bc1c0028178cdece84d7378244fff4bad28ebbb3f2cc0b0b2ff738612824ed32bbd9dac49f5d0d5b42 + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.3.6": + version: 0.3.6 + resolution: "@whatwg-node/node-fetch@npm:0.3.6" + dependencies: + "@whatwg-node/events": "npm:^0.0.3" + busboy: "npm:^1.6.0" + fast-querystring: "npm:^1.1.1" + fast-url-parser: "npm:^1.1.3" + tslib: "npm:^2.3.1" + checksum: 10c0/49e4fd5e682d1fa1229b2c13c06074c6a633eddbe61be162fd213ddb85d6d27d51554b3cced5f6b7f3be1722a64cca7f5ffe0722d08b3285fe2f289d8d5a045d + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.5.0, @whatwg-node/node-fetch@npm:^0.5.5": + version: 0.5.6 + resolution: "@whatwg-node/node-fetch@npm:0.5.6" + dependencies: + "@kamilkisiela/fast-url-parser": "npm:^1.1.4" + "@whatwg-node/events": "npm:^0.1.0" + busboy: "npm:^1.6.0" + fast-querystring: "npm:^1.1.1" + tslib: "npm:^2.3.1" + checksum: 10c0/3816973df69f8cf690be1998223b3e41ecec5f6b151bb5f08c6c7cf85f56da8d614931cca588796c6765169d3a33dff6931bf4f01239ef9281f975483dec3b9c + languageName: node + linkType: hard + +"@whatwg-node/server@npm:^0.9.1": + version: 0.9.25 + resolution: "@whatwg-node/server@npm:0.9.25" + dependencies: + "@whatwg-node/fetch": "npm:^0.9.10" + tslib: "npm:^2.3.1" + checksum: 10c0/5e0effcaf4e7a1589e9a5c8b084e32979aab4847d59662a86fe7d2cd5815dcce71e728bf0fdbdf27b5e700f87283da348e75bec012ada2d1a50a058734d5feb3 + languageName: node + linkType: hard + +"@wry/caches@npm:^1.0.0": + version: 1.0.1 + resolution: "@wry/caches@npm:1.0.1" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/a7bca3377f1131d3f1080f2e39d0692c9d1ca86bfd55734786f167f46aad28a4c8e772107324e8319843fb8068fdf98abcdea376d8a589316b1f0cdadf81f8b1 + languageName: node + linkType: hard + +"@wry/context@npm:^0.7.0": + version: 0.7.4 + resolution: "@wry/context@npm:0.7.4" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/6cc8249b8ba195cda7643bffb30969e33d54a99f118a29dd12f1c34064ee0adf04253cfa0ba5b9893afde0a9588745828962877b9585106f7488e8299757638b + languageName: node + linkType: hard + +"@wry/equality@npm:^0.5.6": + version: 0.5.7 + resolution: "@wry/equality@npm:0.5.7" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/8503ff6d4eb80f303d1387e71e51da59ccfc2160fa6d464618be80946fe43a654ea73f0c5b90d659fc4dfc3e38cbbdd6650d595fe5865be476636e444470853e + languageName: node + linkType: hard + +"@wry/trie@npm:^0.4.3": + version: 0.4.3 + resolution: "@wry/trie@npm:0.4.3" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/1a14edba595b1967d0cf38208c2660b2952a8e8a649bb669b67907df48f602c7f2acbe16c1e1b115afa7d7effb9f1a4dbde38eef16ee92e7521a511262a53281 + languageName: node + linkType: hard + +"@wry/trie@npm:^0.5.0": + version: 0.5.0 + resolution: "@wry/trie@npm:0.5.0" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/8c8cfcac96ba4bc69dabf02740e19e613f501b398e80bacc32cd95e87228f75ecb41cd1a76a65abae9756c0f61ab3536e0da52de28857456f9381ffdf5995d3e + languageName: node + linkType: hard + +"@xmldom/xmldom@npm:^0.8.3": + version: 0.8.10 + resolution: "@xmldom/xmldom@npm:0.8.10" + checksum: 10c0/c7647c442502720182b0d65b17d45d2d95317c1c8c497626fe524bda79b4fb768a9aa4fae2da919f308e7abcff7d67c058b102a9d641097e9a57f0b80187851f + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + languageName: node + linkType: hard + +"@zxing/text-encoding@npm:0.9.0": + version: 0.9.0 + resolution: "@zxing/text-encoding@npm:0.9.0" + checksum: 10c0/d15bff181d46c2ab709e7242801a8d40408aa8c19b44462e5f60e766bf59105b44957914ab6baab60d10d466a5e965f21fe890c67dfdb7d5c7f940df457b4d0d + languageName: node + linkType: hard + +"abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + languageName: node + linkType: hard + +"abstract-logging@npm:^2.0.1": + version: 2.0.1 + resolution: "abstract-logging@npm:2.0.1" + checksum: 10c0/304879d9babcf6772260e5ddde632e6428e1f42f7a7a116d4689e97ad813a20e0ec2dd1e0a122f3617557f40091b9ca85735de4b48c17a2041268cb47b3f8ef1 + languageName: node + linkType: hard + +"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: "npm:^8.1.0" + acorn-walk: "npm:^8.0.2" + checksum: 10c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b + languageName: node + linkType: hard + +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 10c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": + version: 8.3.2 + resolution: "acorn-walk@npm:8.3.2" + checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 + languageName: node + linkType: hard + +"acorn@npm:^6.4.1": + version: 6.4.2 + resolution: "acorn@npm:6.4.2" + bin: + acorn: bin/acorn + checksum: 10c0/52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b + languageName: node + linkType: hard + +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" + bin: + acorn: bin/acorn + checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 + languageName: node + linkType: hard + +"adjust-sourcemap-loader@npm:^4.0.0": + version: 4.0.0 + resolution: "adjust-sourcemap-loader@npm:4.0.0" + dependencies: + loader-utils: "npm:^2.0.0" + regex-parser: "npm:^2.2.11" + checksum: 10c0/6a6e5bb8b670e4e1238c708f6163e92aa2ad0308fe5913de73c89e4cbf41738ee0bcc5552b94d0b7bf8be435ee49b78c6de8a6db7badd80762051e843c8aa14f + languageName: node + linkType: hard + +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv-errors@npm:^1.0.0": + version: 1.0.1 + resolution: "ajv-errors@npm:1.0.1" + peerDependencies: + ajv: ">=5.0.0" + checksum: 10c0/de2d6e8100c8707ea063ee4785d53adf599b457c0d4f72c3592244d67ad16448a6d35f7ce45f12bdd2819939447c876e8ef2f1c0800896d7f2aa25c3838acdf1 + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + ajv: ^8.8.2 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + languageName: node + linkType: hard + +"ajv@npm:^6.1.0, ajv@npm:^6.10.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0, ajv@npm:^8.9.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: "npm:^4.1.0" + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-diff-stream@npm:^1.2.1": + version: 1.2.1 + resolution: "ansi-diff-stream@npm:1.2.1" + dependencies: + ansi-regex: "npm:^2.0.0" + buffer-from: "npm:^1.0.0" + through2: "npm:^2.0.1" + bin: + ansi-diff-stream: ./bin.js + checksum: 10c0/c3d472bb041f29190436098556445f081d1221ef4f24b7d287abe5f58d0360f13a8c47a950a710d303c90621a37a05e35f63a92a15c11f5826de6eefab851542 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-escapes@npm:^5.0.0": + version: 5.0.0 + resolution: "ansi-escapes@npm:5.0.0" + dependencies: + type-fest: "npm:^1.0.2" + checksum: 10c0/f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 + languageName: node + linkType: hard + +"ansi-escapes@npm:^6.0.0": + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" + dependencies: + type-fest: "npm:^3.0.0" + checksum: 10c0/3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 10c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^2.0.0": + version: 2.0.0 + resolution: "anymatch@npm:2.0.0" + dependencies: + micromatch: "npm:^3.1.4" + normalize-path: "npm:^2.1.1" + checksum: 10c0/a0d745e52f0233048724b9c9d7b1d8a650f7a50151a0f1d2cce1857b09fd096052d334f8c570cc88596edef8249ae778f767db94025cd00f81e154a37bb7e34e + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"api@workspace:api": + version: 0.0.0-use.local + resolution: "api@workspace:api" + dependencies: + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + languageName: unknown + linkType: soft + +"aproba@npm:^1.1.1": + version: 1.2.0 + resolution: "aproba@npm:1.2.0" + checksum: 10c0/2d34f008c9edfa991f42fe4b667d541d38a474a39ae0e24805350486d76744cd91ee45313283c1d39a055b14026dd0fc4d0cbfc13f210855d59d7e8b5a61dc51 + languageName: node + linkType: hard + +"archiver-utils@npm:^4.0.1": + version: 4.0.1 + resolution: "archiver-utils@npm:4.0.1" + dependencies: + glob: "npm:^8.0.0" + graceful-fs: "npm:^4.2.0" + lazystream: "npm:^1.0.0" + lodash: "npm:^4.17.15" + normalize-path: "npm:^3.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/fc646fe1f8e3650383b6f79384e1c8f69caf7685c705221e23393a674ee1d67331e246250a72b03ec2fbdb2cfe30adc2d4287f6357684d6843d604738bf2c870 + languageName: node + linkType: hard + +"archiver@npm:6.0.1": + version: 6.0.1 + resolution: "archiver@npm:6.0.1" + dependencies: + archiver-utils: "npm:^4.0.1" + async: "npm:^3.2.4" + buffer-crc32: "npm:^0.2.1" + readable-stream: "npm:^3.6.0" + readdir-glob: "npm:^1.1.2" + tar-stream: "npm:^3.0.0" + zip-stream: "npm:^5.0.1" + checksum: 10c0/54c5a634b39691114e727d4b4f360439fa7cd40b414c9d909606fbfd7048037f7dccefa49337f9ed19b1f5c209e021ce5e1ff9c6b547907257bc71f1af6f8cf3 + languageName: node + linkType: hard + +"archy@npm:^1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: 10c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 + languageName: node + linkType: hard + +"arg@npm:5.0.2": + version: 5.0.2 + resolution: "arg@npm:5.0.2" + checksum: 10c0/ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 + languageName: node + linkType: hard + +"arr-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "arr-diff@npm:4.0.0" + checksum: 10c0/67b80067137f70c89953b95f5c6279ad379c3ee39f7143578e13bd51580a40066ee2a55da066e22d498dce10f68c2d70056d7823f972fab99dfbf4c78d0bc0f7 + languageName: node + linkType: hard + +"arr-flatten@npm:^1.1.0": + version: 1.1.0 + resolution: "arr-flatten@npm:1.1.0" + checksum: 10c0/bef53be02ed3bc58f202b3861a5b1eb6e1ae4fecf39c3ad4d15b1e0433f941077d16e019a33312d820844b0661777322acbb7d0c447b04d9bdf7d6f9c532548a + languageName: node + linkType: hard + +"arr-union@npm:^3.1.0": + version: 3.1.0 + resolution: "arr-union@npm:3.1.0" + checksum: 10c0/7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-differ@npm:^3.0.0": + version: 3.0.0 + resolution: "array-differ@npm:3.0.0" + checksum: 10c0/c0d924cc2b7e3f5a0e6ae932e8941c5fddc0412bcecf8d5152641910e60f5e1c1e87da2b32083dec2f92f9a8f78e916ea68c22a0579794ba49886951ae783123 + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + is-string: "npm:^1.0.7" + checksum: 10c0/692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array-unique@npm:^0.3.2": + version: 0.3.2 + resolution: "array-unique@npm:0.3.2" + checksum: 10c0/dbf4462cdba8a4b85577be07705210b3d35be4b765822a3f52962d907186617638ce15e0603a4fefdcf82f4cbbc9d433f8cbbd6855148a68872fa041b6474121 + languageName: node + linkType: hard + +"array.prototype.filter@npm:^1.0.3": + version: 1.0.3 + resolution: "array.prototype.filter@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-array-method-boxes-properly: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 10c0/8b70b5f866df5d90fa27aa5bfa30f5fefc44cbea94b0513699d761713658077c2a24cbf06aac5179eabddb6c93adc467af4c288b7a839c5bc5a769ee5a2d48ad + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.3": + version: 1.2.4 + resolution: "array.prototype.findlastindex@npm:1.2.4" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/b23ae35cf7621c82c20981ee110626090734a264798e781b052e534e3d61d576f03d125d92cf2e3672062bb5cc5907e02e69f2d80196a55f3cdb0197b4aa8c64 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.1": + version: 1.1.3 + resolution: "array.prototype.tosorted@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.1.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/a27e1ca51168ecacf6042901f5ef021e43c8fa04b6c6b6f2a30bac3645cd2b519cecbe0bc45db1b85b843f64dc3207f0268f700b4b9fbdec076d12d432cf0865 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + languageName: node + linkType: hard + +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: 10c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab + languageName: node + linkType: hard + +"arrify@npm:^2.0.1": + version: 2.0.1 + resolution: "arrify@npm:2.0.1" + checksum: 10c0/3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb + languageName: node + linkType: hard + +"as-table@npm:^1.0.36": + version: 1.0.55 + resolution: "as-table@npm:1.0.55" + dependencies: + printable-characters: "npm:^1.0.42" + checksum: 10c0/8c5693a84621fe53c62fcad6b779dc55c5caf4d43b8e67077964baea4a337769ef53f590d7395c806805b4ef1a391b614ba9acdee19b2ca4309ddedaf13894e6 + languageName: node + linkType: hard + +"asap@npm:~2.0.3": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + languageName: node + linkType: hard + +"asn1.js@npm:^5.2.0": + version: 5.4.1 + resolution: "asn1.js@npm:5.4.1" + dependencies: + bn.js: "npm:^4.0.0" + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + safer-buffer: "npm:^2.1.0" + checksum: 10c0/b577232fa6069cc52bb128e564002c62b2b1fe47f7137bdcd709c0b8495aa79cee0f8cc458a831b2d8675900eea0d05781b006be5e1aa4f0ae3577a73ec20324 + languageName: node + linkType: hard + +"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": + version: 3.0.5 + resolution: "asn1js@npm:3.0.5" + dependencies: + pvtsutils: "npm:^1.3.2" + pvutils: "npm:^1.1.3" + tslib: "npm:^2.4.0" + checksum: 10c0/bb8eaf4040c8f49dd475566874986f5976b81bae65a6b5526e2208a13cdca323e69ce297bcd435fdda3eb6933defe888e71974d705b6fcb14f2734a907f8aed4 + languageName: node + linkType: hard + +"assert@npm:^1.1.1": + version: 1.5.1 + resolution: "assert@npm:1.5.1" + dependencies: + object.assign: "npm:^4.1.4" + util: "npm:^0.10.4" + checksum: 10c0/836688b928b68b7fc5bbc165443e16a62623d57676a1e8a980a0316f9ae86e5e0a102c63470491bf55a8545e75766303640c0c7ad1cf6bfa5450130396043bbd + languageName: node + linkType: hard + +"assert@npm:^2.0.0": + version: 2.1.0 + resolution: "assert@npm:2.1.0" + dependencies: + call-bind: "npm:^1.0.2" + is-nan: "npm:^1.3.2" + object-is: "npm:^1.1.5" + object.assign: "npm:^4.1.4" + util: "npm:^0.12.5" + checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 + languageName: node + linkType: hard + +"assign-symbols@npm:^1.0.0": + version: 1.0.0 + resolution: "assign-symbols@npm:1.0.0" + checksum: 10c0/29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" + dependencies: + tslib: "npm:^2.0.1" + checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-each@npm:^1.0.1": + version: 1.0.6 + resolution: "async-each@npm:1.0.6" + checksum: 10c0/d4e45e8f077e20e015952c065ceae75f82b30ee2d4a8e56a5c454ae44331aaa009d8c94fe043ba254c177bffae9f6ebeefebb7daf9f7ce4d27fac0274dc328ae + languageName: node + linkType: hard + +"async@npm:^2.6.4": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: "npm:^4.17.14" + checksum: 10c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 + languageName: node + linkType: hard + +"async@npm:^3.2.4": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + languageName: node + linkType: hard + +"asynciterator.prototype@npm:^1.0.0": + version: 1.0.0 + resolution: "asynciterator.prototype@npm:1.0.0" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: 10c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + languageName: node + linkType: hard + +"auto-bind@npm:~4.0.0": + version: 4.0.0 + resolution: "auto-bind@npm:4.0.0" + checksum: 10c0/12f70745d081ba990dca028ecfa70de25d4baa9a8b74a5bef3ab293da56cba32ff8276c3ff8e5fe6d9f370547bf3fa71486befbfefe272af7e722c21d0c25530 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.6": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"avvio@npm:^8.2.1": + version: 8.3.0 + resolution: "avvio@npm:8.3.0" + dependencies: + "@fastify/error": "npm:^3.3.0" + archy: "npm:^1.0.0" + debug: "npm:^4.0.0" + fastq: "npm:^1.17.1" + checksum: 10c0/ae171bd977302c3720c9cab8a8e1acedba34d23d44fa4f2914953b02c34c81bd332b4f5713912ce9405c4eb5317fdc6e794b0134d3f680f28858d7a0efadfbc6 + languageName: node + linkType: hard + +"axe-core@npm:=4.7.0": + version: 4.7.0 + resolution: "axe-core@npm:4.7.0" + checksum: 10c0/89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba + languageName: node + linkType: hard + +"axobject-query@npm:^3.2.1": + version: 3.2.1 + resolution: "axobject-query@npm:3.2.1" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 + languageName: node + linkType: hard + +"b4a@npm:^1.6.4": + version: 1.6.6 + resolution: "b4a@npm:1.6.6" + checksum: 10c0/56f30277666cb511a15829e38d369b114df7dc8cec4cedc09cc5d685bc0f27cb63c7bcfb58e09a19a1b3c4f2541069ab078b5328542e85d74a39620327709a38 + languageName: node + linkType: hard + +"babel-core@npm:^7.0.0-bridge.0": + version: 7.0.0-bridge.0 + resolution: "babel-core@npm:7.0.0-bridge.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + +"babel-literal-to-ast@npm:^2.1.0": + version: 2.1.0 + resolution: "babel-literal-to-ast@npm:2.1.0" + dependencies: + "@babel/parser": "npm:^7.1.6" + "@babel/traverse": "npm:^7.1.6" + "@babel/types": "npm:^7.1.6" + peerDependencies: + "@babel/core": ^7.1.2 + checksum: 10c0/58e41540f9727b981d5adb684f3927a423054f77740045e9c5e136de7cc8909afa56110445070bde7b00b8cb75e2c81e7925710f59aacb6549aee9ff89c7afe1 + languageName: node + linkType: hard + +"babel-loader@npm:^8.1.0": + version: 8.3.0 + resolution: "babel-loader@npm:8.3.0" + dependencies: + find-cache-dir: "npm:^3.3.1" + loader-utils: "npm:^2.0.0" + make-dir: "npm:^3.1.0" + schema-utils: "npm:^2.6.5" + peerDependencies: + "@babel/core": ^7.0.0 + webpack: ">=2" + checksum: 10c0/7b83bae35a12fbc5cdf250e2d36a288305fe5b6d20ab044ab7c09bbf456c8895b80af7a4f1e8b64b5c07a4fd48d4b5144dab40b4bc72a4fed532dc000362f38f + languageName: node + linkType: hard + +"babel-loader@npm:^9.1.3": + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" + dependencies: + find-cache-dir: "npm:^4.0.0" + schema-utils: "npm:^4.0.0" + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + languageName: node + linkType: hard + +"babel-plugin-auto-import@npm:1.1.0": + version: 1.1.0 + resolution: "babel-plugin-auto-import@npm:1.1.0" + dependencies: + "@babel/core": "npm:^7.11.1" + logical-not: "npm:^1.0.1" + checksum: 10c0/e738db0589551544c38619777334039ec9e2b245eb8e5930878e1ba5bef64b0eb33551bcbc52213d9ae8979155d07d16d22926def353d483eac12ab63d8d1983 + languageName: node + linkType: hard + +"babel-plugin-graphql-tag@npm:3.3.0": + version: 3.3.0 + resolution: "babel-plugin-graphql-tag@npm:3.3.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/parser": "npm:^7.3.2" + babel-literal-to-ast: "npm:^2.1.0" + debug: "npm:^4.1.1" + peerDependencies: + "@babel/core": ^7.0.0 + graphql-tag: ^2.10.1 + checksum: 10c0/6616bf9d03f5e905413ea024e0609bf70a2b18b875c19da1e00fe787a16e71ce36244bd097f65c7faa269d4e97e683ab53ca532d15827298c0381a05b8341add + languageName: node + linkType: hard + +"babel-plugin-ignore-html-and-css-imports@npm:0.1.0": + version: 0.1.0 + resolution: "babel-plugin-ignore-html-and-css-imports@npm:0.1.0" + checksum: 10c0/cb83c0d66134ab5bcd12332e6c33a0e13475929cf729b7f26c8d324037371e3c3e60ea9bd7a6ac87a1fca268c5665991878c47bf92be21157a63032c6f86b633 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + +"babel-plugin-module-resolver@npm:5.0.0": + version: 5.0.0 + resolution: "babel-plugin-module-resolver@npm:5.0.0" + dependencies: + find-babel-config: "npm:^2.0.0" + glob: "npm:^8.0.3" + pkg-up: "npm:^3.1.0" + reselect: "npm:^4.1.7" + resolve: "npm:^1.22.1" + checksum: 10c0/bbddb437bf23ab2e12e25c855d71c906cf7a438d0d4821cf0786f23990718f86f76c49f7952ba2370a312c806d223e1efb7ca16698ff49d019396c8d81e4a870 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.8": + version: 0.4.8 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.8" + dependencies: + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/843e7528de0e03a31a6f3837896a95f75b0b24b0294a077246282372279e974400b0bdd82399e8f9cbfe42c87ed56540fd71c33eafb7c8e8b9adac546ecc5fe5 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.9.0": + version: 0.9.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.9.0" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + core-js-compat: "npm:^3.34.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b857010736c5e42e20b683973dae862448a42082fcc95b3ef188305a6864a4f94b5cbd568e49e4cd7172c6b2eace7bc403c3ba0984fbe5479474ade01126d559 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.5.5": + version: 0.5.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/2aab692582082d54e0df9f9373dca1b223e65b4e7e96440160f27ed8803d417a1fa08da550f08aa3820d2010329ca91b68e2b6e9bd7aed51c93d46dfe79629bb + languageName: node + linkType: hard + +"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": + version: 7.0.0-beta.0 + resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" + checksum: 10c0/67e3d6a706637097526b2d3046d3124d3efd3aac28b47af940c2f8df01b8d7ffeb4cdf5648f3b5eac3f098f5b61c4845e306f34301c869e5e14db6ae8b77f699 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.8.3" + "@babel/plugin-syntax-import-meta": "npm:^7.8.3" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 + languageName: node + linkType: hard + +"babel-preset-fbjs@npm:^3.4.0": + version: 3.4.0 + resolution: "babel-preset-fbjs@npm:3.4.0" + dependencies: + "@babel/plugin-proposal-class-properties": "npm:^7.0.0" + "@babel/plugin-proposal-object-rest-spread": "npm:^7.0.0" + "@babel/plugin-syntax-class-properties": "npm:^7.0.0" + "@babel/plugin-syntax-flow": "npm:^7.0.0" + "@babel/plugin-syntax-jsx": "npm:^7.0.0" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.0.0" + "@babel/plugin-transform-arrow-functions": "npm:^7.0.0" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.0.0" + "@babel/plugin-transform-block-scoping": "npm:^7.0.0" + "@babel/plugin-transform-classes": "npm:^7.0.0" + "@babel/plugin-transform-computed-properties": "npm:^7.0.0" + "@babel/plugin-transform-destructuring": "npm:^7.0.0" + "@babel/plugin-transform-flow-strip-types": "npm:^7.0.0" + "@babel/plugin-transform-for-of": "npm:^7.0.0" + "@babel/plugin-transform-function-name": "npm:^7.0.0" + "@babel/plugin-transform-literals": "npm:^7.0.0" + "@babel/plugin-transform-member-expression-literals": "npm:^7.0.0" + "@babel/plugin-transform-modules-commonjs": "npm:^7.0.0" + "@babel/plugin-transform-object-super": "npm:^7.0.0" + "@babel/plugin-transform-parameters": "npm:^7.0.0" + "@babel/plugin-transform-property-literals": "npm:^7.0.0" + "@babel/plugin-transform-react-display-name": "npm:^7.0.0" + "@babel/plugin-transform-react-jsx": "npm:^7.0.0" + "@babel/plugin-transform-shorthand-properties": "npm:^7.0.0" + "@babel/plugin-transform-spread": "npm:^7.0.0" + "@babel/plugin-transform-template-literals": "npm:^7.0.0" + babel-plugin-syntax-trailing-function-commas: "npm:^7.0.0-beta.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2be440c0fd7d1df247417be35644cb89f40a300e7fcdc44878b737ec49b04380eff422e4ebdc7bb5efd5ecfef45b634fc5fe11c3a409a50c9084e81083037902 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + +"babel-timing@npm:0.9.1": + version: 0.9.1 + resolution: "babel-timing@npm:0.9.1" + dependencies: + "@babel/core": "npm:^7.12.9" + ansi-diff-stream: "npm:^1.2.1" + babel-loader: "npm:^8.1.0" + cli-table3: "npm:^0.6.0" + colors: "npm:^1.4.0" + commander: "npm:^6.1.0" + find-babel-config: "npm:^1.2.0" + find-cache-dir: "npm:^3.3.1" + glob: "npm:^7.1.6" + lodash.chunk: "npm:^4.2.0" + lodash.defaults: "npm:^4.2.0" + lodash.mergewith: "npm:^4.6.2" + minimatch: "npm:^3.0.4" + multimatch: "npm:^4.0.0" + rimraf: "npm:^3.0.2" + webpack: "npm:^4.44.2" + bin: + babel-timing: dist/cli.js + checksum: 10c0/1a70d7ae9ef60e71fb9a4a4ac155c660b0cc779d1a6b48023964050b458b822d66d01c1007038765113f6f622496beddabf5978ed4c5f96d1d8b277301ca058f + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"bare-events@npm:^2.2.0": + version: 2.2.0 + resolution: "bare-events@npm:2.2.0" + checksum: 10c0/0b899d444b9c86759a44b8a2fbce0dcb8060884a89193ae3222ddc92ab5273cdaf76dc3ca0bb911d93f815fb43f9392f79e5b8105c7c8300c298d254b1e734c4 + languageName: node + linkType: hard + +"base64-js@npm:^1.0.2, base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"base@npm:^0.11.1": + version: 0.11.2 + resolution: "base@npm:0.11.2" + dependencies: + cache-base: "npm:^1.0.1" + class-utils: "npm:^0.3.5" + component-emitter: "npm:^1.2.1" + define-property: "npm:^1.0.0" + isobject: "npm:^3.0.1" + mixin-deep: "npm:^1.2.0" + pascalcase: "npm:^0.1.1" + checksum: 10c0/30a2c0675eb52136b05ef496feb41574d9f0bb2d6d677761da579c00a841523fccf07f1dbabec2337b5f5750f428683b8ca60d89e56a1052c4ae1c0cd05de64d + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + languageName: node + linkType: hard + +"binary-extensions@npm:^1.0.0": + version: 1.13.1 + resolution: "binary-extensions@npm:1.13.1" + checksum: 10c0/2d616938ac23d828ec3fbe0dea429b566fd2c137ddc38f166f16561ccd58029deac3fa9fddb489ab13d679c8fb5f1bd0e82824041299e5e39d8dd3cc68fbb9f9 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bluebird@npm:^3.5.5": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 10c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 + languageName: node + linkType: hard + +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 + languageName: node + linkType: hard + +"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + languageName: node + linkType: hard + +"body-parser@npm:1.20.1": + version: 1.20.1 + resolution: "body-parser@npm:1.20.1" + dependencies: + bytes: "npm:3.1.2" + content-type: "npm:~1.0.4" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.11.0" + raw-body: "npm:2.5.1" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10c0/a202d493e2c10a33fb7413dac7d2f713be579c4b88343cd814b6df7a38e5af1901fc31044e04de176db56b16d9772aa25a7723f64478c20f4d91b1ac223bf3b8 + languageName: node + linkType: hard + +"bonjour-service@npm:^1.0.11": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + multicast-dns: "npm:^7.2.5" + checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 + languageName: node + linkType: hard + +"boolbase@npm:^1.0.0": + version: 1.0.0 + resolution: "boolbase@npm:1.0.0" + checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf + languageName: node + linkType: hard + +"boxen@npm:5.1.2": + version: 5.1.2 + resolution: "boxen@npm:5.1.2" + dependencies: + ansi-align: "npm:^3.0.0" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.1.0" + cli-boxes: "npm:^2.2.1" + string-width: "npm:^4.2.2" + type-fest: "npm:^0.20.2" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^2.3.1, braces@npm:^2.3.2": + version: 2.3.2 + resolution: "braces@npm:2.3.2" + dependencies: + arr-flatten: "npm:^1.1.0" + array-unique: "npm:^0.3.2" + extend-shallow: "npm:^2.0.1" + fill-range: "npm:^4.0.0" + isobject: "npm:^3.0.1" + repeat-element: "npm:^1.1.2" + snapdragon: "npm:^0.8.1" + snapdragon-node: "npm:^2.0.1" + split-string: "npm:^3.0.2" + to-regex: "npm:^3.0.1" + checksum: 10c0/72b27ea3ea2718f061c29e70fd6e17606e37c65f5801abddcf0b0052db1de7d60f3bf92cfc220ab57b44bd0083a5f69f9d03b3461d2816cfe9f9398207acc728 + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: "npm:^7.0.1" + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + languageName: node + linkType: hard + +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.0": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: "npm:^1.0.4" + browserify-des: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: "npm:^1.0.1" + des.js: "npm:^1.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" + dependencies: + bn.js: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + checksum: 10c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.2 + resolution: "browserify-sign@npm:4.2.2" + dependencies: + bn.js: "npm:^5.2.1" + browserify-rsa: "npm:^4.1.0" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + elliptic: "npm:^6.5.4" + inherits: "npm:^2.0.4" + parse-asn1: "npm:^5.1.6" + readable-stream: "npm:^3.6.2" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/4d1292e5c165d93455630515003f0e95eed9239c99e2d373920c5b56903d16296a3d23cd4bdc4d298f55ad9b83714a9e63bc4839f1166c303349a16e84e9b016 + languageName: node + linkType: hard + +"browserify-zlib@npm:^0.2.0": + version: 0.2.0 + resolution: "browserify-zlib@npm:0.2.0" + dependencies: + pako: "npm:~1.0.5" + checksum: 10c0/9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 + languageName: node + linkType: hard + +"browserslist@npm:^4.0.0, browserslist@npm:^4.21.10, browserslist@npm:^4.22.2, browserslist@npm:^4.22.3": + version: 4.23.0 + resolution: "browserslist@npm:4.23.0" + dependencies: + caniuse-lite: "npm:^1.0.30001587" + electron-to-chromium: "npm:^1.4.668" + node-releases: "npm:^2.0.14" + update-browserslist-db: "npm:^1.0.13" + bin: + browserslist: cli.js + checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-crc32@npm:^0.2.1": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 10c0/cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 + languageName: node + linkType: hard + +"buffer-equal-constant-time@npm:1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + +"buffer@npm:6.0.3, buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"buffer@npm:^4.3.0": + version: 4.9.2 + resolution: "buffer@npm:4.9.2" + dependencies: + base64-js: "npm:^1.0.2" + ieee754: "npm:^1.1.4" + isarray: "npm:^1.0.0" + checksum: 10c0/dc443d7e7caab23816b58aacdde710b72f525ad6eecd7d738fcaa29f6d6c12e8d9c13fed7219fd502be51ecf0615f5c077d4bdc6f9308dde2e53f8e5393c5b21 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"builtin-status-codes@npm:^3.0.0": + version: 3.0.0 + resolution: "builtin-status-codes@npm:3.0.0" + checksum: 10c0/c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c + languageName: node + linkType: hard + +"busboy@npm:^1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + languageName: node + linkType: hard + +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + +"cacache@npm:^12.0.2": + version: 12.0.4 + resolution: "cacache@npm:12.0.4" + dependencies: + bluebird: "npm:^3.5.5" + chownr: "npm:^1.1.1" + figgy-pudding: "npm:^3.5.1" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.1.15" + infer-owner: "npm:^1.0.3" + lru-cache: "npm:^5.1.1" + mississippi: "npm:^3.0.0" + mkdirp: "npm:^0.5.1" + move-concurrently: "npm:^1.0.1" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^2.6.3" + ssri: "npm:^6.0.1" + unique-filename: "npm:^1.1.1" + y18n: "npm:^4.0.0" + checksum: 10c0/b4b0aa49e3fbd3ca92f71bc62923e4afce31fd687b31d5ba524b2a54b36e96a8b027165599307dda5e4a6f7268cc951b77ca170efa00c1b72761f9daae51fdfb + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.2 + resolution: "cacache@npm:18.0.2" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + languageName: node + linkType: hard + +"cache-base@npm:^1.0.1": + version: 1.0.1 + resolution: "cache-base@npm:1.0.1" + dependencies: + collection-visit: "npm:^1.0.0" + component-emitter: "npm:^1.2.1" + get-value: "npm:^2.0.6" + has-value: "npm:^1.0.0" + isobject: "npm:^3.0.1" + set-value: "npm:^2.0.0" + to-object-path: "npm:^0.3.0" + union-value: "npm:^1.0.0" + unset-value: "npm:^1.0.0" + checksum: 10c0/a7142e25c73f767fa520957dcd179b900b86eac63b8cfeaa3b2a35e18c9ca5968aa4e2d2bed7a3e7efd10f13be404344cfab3a4156217e71f9bdb95940bb9c8c + languageName: node + linkType: hard + +"cacheable-request@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-request@npm:6.1.0" + dependencies: + clone-response: "npm:^1.0.2" + get-stream: "npm:^5.1.0" + http-cache-semantics: "npm:^4.0.0" + keyv: "npm:^3.0.0" + lowercase-keys: "npm:^2.0.0" + normalize-url: "npm:^4.1.0" + responselike: "npm:^1.0.2" + checksum: 10c0/e92f2b2078c014ba097647ab4ff6a6149dc2974a65670ee97ec593ec9f4148ecc988e86b9fcd8ebf7fe255774a53d5dc3db6b01065d44f09a7452c7a7d8e4844 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: "npm:^3.1.2" + tslib: "npm:^2.0.3" + checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a + languageName: node + linkType: hard + +"camelcase@npm:6.3.0, camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"caniuse-api@npm:^3.0.0": + version: 3.0.0 + resolution: "caniuse-api@npm:3.0.0" + dependencies: + browserslist: "npm:^4.0.0" + caniuse-lite: "npm:^1.0.0" + lodash.memoize: "npm:^4.1.2" + lodash.uniq: "npm:^4.5.0" + checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001587": + version: 1.0.30001588 + resolution: "caniuse-lite@npm:1.0.30001588" + checksum: 10c0/f8333cb52e7ebc169d462763cecc33807530f1e04d22ba1084e05a583907aa801fb3c013d60b38d54cb792440f48efcd2a1a68f22d5fce896b5bd0277392347c + languageName: node + linkType: hard + +"capital-case@npm:^1.0.4": + version: 1.0.4 + resolution: "capital-case@npm:1.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 + languageName: node + linkType: hard + +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 + languageName: node + linkType: hard + +"chalk@npm:^5.2.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + languageName: node + linkType: hard + +"change-case-all@npm:1.0.14": + version: 1.0.14 + resolution: "change-case-all@npm:1.0.14" + dependencies: + change-case: "npm:^4.1.2" + is-lower-case: "npm:^2.0.2" + is-upper-case: "npm:^2.0.2" + lower-case: "npm:^2.0.2" + lower-case-first: "npm:^2.0.2" + sponge-case: "npm:^1.0.1" + swap-case: "npm:^2.0.2" + title-case: "npm:^3.0.3" + upper-case: "npm:^2.0.2" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/c2d5fda011b2430f9e503afdca5d8ed48b0e8ee96e38f5530193f8a503317c4a82e6b721c5ea8ef852a2534bdd3d1af25d76e0604b820cd3bc136cf9c179803e + languageName: node + linkType: hard + +"change-case-all@npm:1.0.15": + version: 1.0.15 + resolution: "change-case-all@npm:1.0.15" + dependencies: + change-case: "npm:^4.1.2" + is-lower-case: "npm:^2.0.2" + is-upper-case: "npm:^2.0.2" + lower-case: "npm:^2.0.2" + lower-case-first: "npm:^2.0.2" + sponge-case: "npm:^1.0.1" + swap-case: "npm:^2.0.2" + title-case: "npm:^3.0.3" + upper-case: "npm:^2.0.2" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/0de81690de866aa8c477f8b5b08c6f9dbce4a078cffa5f014858f49fda548a9a6524b61f62f2940acce9f1fdcfeef3a7124090684e86e731f55d26c22713e2d7 + languageName: node + linkType: hard + +"change-case@npm:^4.1.2": + version: 4.1.2 + resolution: "change-case@npm:4.1.2" + dependencies: + camel-case: "npm:^4.1.2" + capital-case: "npm:^1.0.4" + constant-case: "npm:^3.0.4" + dot-case: "npm:^3.0.4" + header-case: "npm:^2.0.4" + no-case: "npm:^3.0.4" + param-case: "npm:^3.0.4" + pascal-case: "npm:^3.1.2" + path-case: "npm:^3.0.4" + sentence-case: "npm:^3.0.4" + snake-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"char-regex@npm:^2.0.0": + version: 2.0.1 + resolution: "char-regex@npm:2.0.1" + checksum: 10c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"cheerio-select@npm:^2.1.0": + version: 2.1.0 + resolution: "cheerio-select@npm:2.1.0" + dependencies: + boolbase: "npm:^1.0.0" + css-select: "npm:^5.1.0" + css-what: "npm:^6.1.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 + languageName: node + linkType: hard + +"cheerio@npm:1.0.0-rc.12": + version: 1.0.0-rc.12 + resolution: "cheerio@npm:1.0.0-rc.12" + dependencies: + cheerio-select: "npm:^2.1.0" + dom-serializer: "npm:^2.0.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + htmlparser2: "npm:^8.0.1" + parse5: "npm:^7.0.0" + parse5-htmlparser2-tree-adapter: "npm:^7.0.0" + checksum: 10c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc + languageName: node + linkType: hard + +"chevrotain@npm:^10.4.2": + version: 10.5.0 + resolution: "chevrotain@npm:10.5.0" + dependencies: + "@chevrotain/cst-dts-gen": "npm:10.5.0" + "@chevrotain/gast": "npm:10.5.0" + "@chevrotain/types": "npm:10.5.0" + "@chevrotain/utils": "npm:10.5.0" + lodash: "npm:4.17.21" + regexp-to-ast: "npm:0.5.0" + checksum: 10c0/a67a8b9f326231e6e4bf42e0c82d5f6e0b69bcfe4266e406d644ee58d22f7cba63deb034973813d0f5761026328cd4928250136cde940e3ef238a1f020c7307a + languageName: node + linkType: hard + +"chokidar@npm:3.5.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 + languageName: node + linkType: hard + +"chokidar@npm:^2.1.8": + version: 2.1.8 + resolution: "chokidar@npm:2.1.8" + dependencies: + anymatch: "npm:^2.0.0" + async-each: "npm:^1.0.1" + braces: "npm:^2.3.2" + fsevents: "npm:^1.2.7" + glob-parent: "npm:^3.1.0" + inherits: "npm:^2.0.3" + is-binary-path: "npm:^1.0.0" + is-glob: "npm:^4.0.0" + normalize-path: "npm:^3.0.0" + path-is-absolute: "npm:^1.0.0" + readdirp: "npm:^2.2.1" + upath: "npm:^1.1.1" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/5631cc00080224f9482cf5418dcbea111aec02fa8d81a8cfe37e47b9cf36089e071de52d503647e3a821a01426a40adc926ba899f657af86a51b8f8d4eef12a7 + languageName: node + linkType: hard + +"chokidar@npm:^3.4.0, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.3 + resolution: "chrome-trace-event@npm:1.0.3" + checksum: 10c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c + languageName: node + linkType: hard + +"ci-info@npm:4.0.0": + version: 4.0.0 + resolution: "ci-info@npm:4.0.0" + checksum: 10c0/ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 10c0/0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab + languageName: node + linkType: hard + +"class-utils@npm:^0.3.5": + version: 0.3.6 + resolution: "class-utils@npm:0.3.6" + dependencies: + arr-union: "npm:^3.1.0" + define-property: "npm:^0.2.5" + isobject: "npm:^3.0.0" + static-extend: "npm:^0.1.1" + checksum: 10c0/d44f4afc7a3e48dba4c2d3fada5f781a1adeeff371b875c3b578bc33815c6c29d5d06483c2abfd43a32d35b104b27b67bfa39c2e8a422fa858068bd756cfbd42 + languageName: node + linkType: hard + +"clean-css@npm:^5.2.2": + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" + dependencies: + source-map: "npm:~0.6.0" + checksum: 10c0/381de7523e23f3762eb180e327dcc0cedafaf8cb1cd8c26b7cc1fc56e0829a92e734729c4f955394d65ed72fb62f82d8baf78af34b33b8a7d41ebad2accdd6fb + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-boxes@npm:^2.2.1": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: 10c0/6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-cursor@npm:4.0.0" + dependencies: + restore-cursor: "npm:^4.0.0" + checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-table3@npm:^0.6.0": + version: 0.6.3 + resolution: "cli-table3@npm:0.6.3" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + +"cli-truncate@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-truncate@npm:3.1.0" + dependencies: + slice-ansi: "npm:^5.0.0" + string-width: "npm:^5.0.0" + checksum: 10c0/a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + languageName: node + linkType: hard + +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10c0/06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"code-block-writer@npm:^11.0.0": + version: 11.0.3 + resolution: "code-block-writer@npm:11.0.3" + checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 + languageName: node + linkType: hard + +"code-block-writer@npm:^12.0.0": + version: 12.0.0 + resolution: "code-block-writer@npm:12.0.0" + checksum: 10c0/ced73cdc466bff968bba9e8e32340d88420d25a229b9269f7425a10a7c2c9a12ca702dcb601b2462b96472d354f021cf66e552179fcbe30c8f7ecd0173c5fa07 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + +"collection-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "collection-visit@npm:1.0.0" + dependencies: + map-visit: "npm:^1.0.0" + object-visit: "npm:^1.0.0" + checksum: 10c0/add72a8d1c37cb90e53b1aaa2c31bf1989bfb733f0b02ce82c9fa6828c7a14358dba2e4f8e698c02f69e424aeccae1ffb39acdeaf872ade2f41369e84a2fcf8a + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"colord@npm:^2.9.1": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 + languageName: node + linkType: hard + +"colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.16, colorette@npm:^2.0.20": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + +"colors@npm:^1.4.0": + version: 1.4.0 + resolution: "colors@npm:1.4.0" + checksum: 10c0/9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^4.0.1": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab + languageName: node + linkType: hard + +"commander@npm:^6.1.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + +"commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + languageName: node + linkType: hard + +"commander@npm:^8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 + languageName: node + linkType: hard + +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb + languageName: node + linkType: hard + +"common-tags@npm:1.8.2": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"component-emitter@npm:^1.2.1": + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 10c0/e4900b1b790b5e76b8d71b328da41482118c0f3523a516a41be598dc2785a07fd721098d9bf6e22d89b19f4fa4e1025160dc00317ea111633a3e4f75c2b86032 + languageName: node + linkType: hard + +"compress-commons@npm:^5.0.1": + version: 5.0.1 + resolution: "compress-commons@npm:5.0.1" + dependencies: + crc-32: "npm:^1.2.0" + crc32-stream: "npm:^5.0.0" + normalize-path: "npm:^3.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/1c604ac753b4ec643a807f3db545bf497d1e9c6f81e9132280c98d972b02bbeba087e7fb2d53f3043f9643a64a6140e9e39b94329040695d404b83a0c7f38fa2 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: "npm:>= 1.43.0 < 2" + checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: "npm:~1.3.5" + bytes: "npm:3.0.0" + compressible: "npm:~2.0.16" + debug: "npm:2.6.9" + on-headers: "npm:~1.0.2" + safe-buffer: "npm:5.1.2" + vary: "npm:~1.1.2" + checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"concat-stream@npm:^1.5.0": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.2.2" + typedarray: "npm:^0.0.6" + checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 + languageName: node + linkType: hard + +"concurrently@npm:8.2.2": + version: 8.2.2 + resolution: "concurrently@npm:8.2.2" + dependencies: + chalk: "npm:^4.1.2" + date-fns: "npm:^2.30.0" + lodash: "npm:^4.17.21" + rxjs: "npm:^7.8.1" + shell-quote: "npm:^1.8.1" + spawn-command: "npm:0.0.2" + supports-color: "npm:^8.1.1" + tree-kill: "npm:^1.2.2" + yargs: "npm:^17.7.2" + bin: + conc: dist/bin/concurrently.js + concurrently: dist/bin/concurrently.js + checksum: 10c0/0e9683196fe9c071d944345d21d8f34aa6c0cc50c0dd897e95619f2f1c9eb4871dca851b2569da17888235b7335b4c821ca19deed35bebcd9a131ee5d247f34c + languageName: node + linkType: hard + +"configstore@npm:3.1.5": + version: 3.1.5 + resolution: "configstore@npm:3.1.5" + dependencies: + dot-prop: "npm:^4.2.1" + graceful-fs: "npm:^4.1.2" + make-dir: "npm:^1.0.0" + unique-string: "npm:^1.0.0" + write-file-atomic: "npm:^2.0.0" + xdg-basedir: "npm:^3.0.0" + checksum: 10c0/a68edffee893b1803a108c4083dee481967f7eec232f83499bc86973d93d1e2728c1ea98cb1a4c7c583bc172abbdf197888ba0b0c12640631792186aa233918b + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 + languageName: node + linkType: hard + +"console-browserify@npm:^1.1.0": + version: 1.2.0 + resolution: "console-browserify@npm:1.2.0" + checksum: 10c0/89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 + languageName: node + linkType: hard + +"constant-case@npm:^3.0.4": + version: 3.0.4 + resolution: "constant-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case: "npm:^2.0.2" + checksum: 10c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e + languageName: node + linkType: hard + +"constants-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "constants-browserify@npm:1.0.0" + checksum: 10c0/ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.3": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"content-type@npm:~1.0.4": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + languageName: node + linkType: hard + +"convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + languageName: node + linkType: hard + +"cookie@npm:0.5.0, cookie@npm:^0.5.0": + version: 0.5.0 + resolution: "cookie@npm:0.5.0" + checksum: 10c0/c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d + languageName: node + linkType: hard + +"cookie@npm:^0.4.2": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 + languageName: node + linkType: hard + +"copy-concurrently@npm:^1.0.0": + version: 1.0.5 + resolution: "copy-concurrently@npm:1.0.5" + dependencies: + aproba: "npm:^1.1.1" + fs-write-stream-atomic: "npm:^1.0.8" + iferr: "npm:^0.1.5" + mkdirp: "npm:^0.5.1" + rimraf: "npm:^2.5.4" + run-queue: "npm:^1.0.0" + checksum: 10c0/c2ce213cb27ee3df584d16eb6c9bfe99cfb531585007533c3e4c752521b4fbf0b2f7f90807d79c496683330808ecd9fdbd9ab9ddfa0913150b7f5097423348ce + languageName: node + linkType: hard + +"copy-descriptor@npm:^0.1.0": + version: 0.1.1 + resolution: "copy-descriptor@npm:0.1.1" + checksum: 10c0/161f6760b7348c941007a83df180588fe2f1283e0867cc027182734e0f26134e6cc02de09aa24a95dc267b2e2025b55659eef76c8019df27bc2d883033690181 + languageName: node + linkType: hard + +"copy-webpack-plugin@npm:11.0.0": + version: 11.0.0 + resolution: "copy-webpack-plugin@npm:11.0.0" + dependencies: + fast-glob: "npm:^3.2.11" + glob-parent: "npm:^6.0.1" + globby: "npm:^13.1.1" + normalize-path: "npm:^3.0.0" + schema-utils: "npm:^4.0.0" + serialize-javascript: "npm:^6.0.0" + peerDependencies: + webpack: ^5.1.0 + checksum: 10c0/a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.34.0": + version: 3.36.0 + resolution: "core-js-compat@npm:3.36.0" + dependencies: + browserslist: "npm:^4.22.3" + checksum: 10c0/5ce2ad0ece8379883c01958e196575abc015692fc0394b8917f132b6b32e5c2bfb2612902c3f98f270cfa2d9d6522c28d36665038f3726796f1f4b436e4f863e + languageName: node + linkType: hard + +"core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": + version: 3.36.0 + resolution: "core-js-pure@npm:3.36.0" + checksum: 10c0/1c5ecb37451bcebaa449e36285d27c4c79d5ff24b8bfd44491ce661cfc12b5c56471c847d306d21a56894338d00abea4993a6f8e07c71d4e887d1f71e410d22e + languageName: node + linkType: hard + +"core-js@npm:3.35.1": + version: 3.35.1 + resolution: "core-js@npm:3.35.1" + checksum: 10c0/ebc8e22c36d13bcf2140cbc1d8ad65d1b08192bff4c43ade70c72eac103cb4dcfbc521f2b1ad1c74881b0a4353e64986537893ae4f07888e49228340efa13ae6 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cosmiconfig@npm:8.0.0": + version: 8.0.0 + resolution: "cosmiconfig@npm:8.0.0" + dependencies: + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + checksum: 10c0/cea301202bb68373f9c8ccc77a6002aab1032f327dd1458e5932ee1a2f48919c881074d702cece91f18275673817872a0d3d00eb46f30a33c8f2009dbbac0e5c + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + +"crc-32@npm:^1.2.0": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: 10c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 + languageName: node + linkType: hard + +"crc32-stream@npm:^5.0.0": + version: 5.0.0 + resolution: "crc32-stream@npm:5.0.0" + dependencies: + crc-32: "npm:^1.2.0" + readable-stream: "npm:^3.4.0" + checksum: 10c0/bd6e6d49b76fd562eef3a4b7b64b1e551fb5dfca0a3b54fb7e59765c57468295b60755f85d3450fd61eee01dcca0974600157717cad8f356d513c28bac726a41 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: "npm:^4.1.0" + elliptic: "npm:^6.5.3" + checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + +"cross-env@npm:7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: "npm:^7.0.1" + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 10c0/f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.5": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10c0/4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af + languageName: node + linkType: hard + +"cross-inspect@npm:1.0.0": + version: 1.0.0 + resolution: "cross-inspect@npm:1.0.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"crypto-browserify@npm:^3.11.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + dependencies: + browserify-cipher: "npm:^1.0.0" + browserify-sign: "npm:^4.0.0" + create-ecdh: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + create-hmac: "npm:^1.1.0" + diffie-hellman: "npm:^5.0.0" + inherits: "npm:^2.0.1" + pbkdf2: "npm:^3.0.3" + public-encrypt: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + randomfill: "npm:^1.0.3" + checksum: 10c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 + languageName: node + linkType: hard + +"crypto-random-string@npm:^1.0.0": + version: 1.0.0 + resolution: "crypto-random-string@npm:1.0.0" + checksum: 10c0/0cb4dbbb895656919d1de11ba43829a3527edddb85a9c49c9d4c4eb783d3b03fc9f371cefee62c87082fd8758db2798a52a9cad48a7381826190d3c2cf858e4a + languageName: node + linkType: hard + +"css-declaration-sorter@npm:^7.1.1": + version: 7.1.1 + resolution: "css-declaration-sorter@npm:7.1.1" + peerDependencies: + postcss: ^8.0.9 + checksum: 10c0/bea446e441bafde21c3c7b3f7639559311da12eea140db7ee3c61e4f41df455b7b098df107f99bc0cca32a5020841cc94bf8a2d5efb1b383e51f9de478c4816e + languageName: node + linkType: hard + +"css-loader@npm:6.8.1": + version: 6.8.1 + resolution: "css-loader@npm:6.8.1" + dependencies: + icss-utils: "npm:^5.1.0" + postcss: "npm:^8.4.21" + postcss-modules-extract-imports: "npm:^3.0.0" + postcss-modules-local-by-default: "npm:^4.0.3" + postcss-modules-scope: "npm:^3.0.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.3.8" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 + languageName: node + linkType: hard + +"css-minimizer-webpack-plugin@npm:5.0.1": + version: 5.0.1 + resolution: "css-minimizer-webpack-plugin@npm:5.0.1" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + cssnano: "npm:^6.0.1" + jest-worker: "npm:^29.4.3" + postcss: "npm:^8.4.24" + schema-utils: "npm:^4.0.1" + serialize-javascript: "npm:^6.0.1" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + "@parcel/css": + optional: true + "@swc/css": + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + checksum: 10c0/1792259e18f7c5ee25b6bbf60b38b64201747add83d1f751c8c654159b46ebacd0d1103d35f17d97197033e21e02d2ba4a4e9aa14c9c0d067b7c7653c721814e + languageName: node + linkType: hard + +"css-select@npm:^4.1.3": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" + dependencies: + boolbase: "npm:^1.0.0" + css-what: "npm:^6.0.1" + domhandler: "npm:^4.3.1" + domutils: "npm:^2.8.0" + nth-check: "npm:^2.0.1" + checksum: 10c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 + languageName: node + linkType: hard + +"css-select@npm:^5.1.0": + version: 5.1.0 + resolution: "css-select@npm:5.1.0" + dependencies: + boolbase: "npm:^1.0.0" + css-what: "npm:^6.1.0" + domhandler: "npm:^5.0.2" + domutils: "npm:^3.0.1" + nth-check: "npm:^2.0.1" + checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 + languageName: node + linkType: hard + +"css-tree@npm:^2.3.1": + version: 2.3.1 + resolution: "css-tree@npm:2.3.1" + dependencies: + mdn-data: "npm:2.0.30" + source-map-js: "npm:^1.0.1" + checksum: 10c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 + languageName: node + linkType: hard + +"css-tree@npm:~2.2.0": + version: 2.2.1 + resolution: "css-tree@npm:2.2.1" + dependencies: + mdn-data: "npm:2.0.28" + source-map-js: "npm:^1.0.1" + checksum: 10c0/47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186 + languageName: node + linkType: hard + +"css-what@npm:^6.0.1, css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + languageName: node + linkType: hard + +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"cssnano-preset-default@npm:^6.0.3": + version: 6.0.3 + resolution: "cssnano-preset-default@npm:6.0.3" + dependencies: + css-declaration-sorter: "npm:^7.1.1" + cssnano-utils: "npm:^4.0.1" + postcss-calc: "npm:^9.0.1" + postcss-colormin: "npm:^6.0.2" + postcss-convert-values: "npm:^6.0.2" + postcss-discard-comments: "npm:^6.0.1" + postcss-discard-duplicates: "npm:^6.0.1" + postcss-discard-empty: "npm:^6.0.1" + postcss-discard-overridden: "npm:^6.0.1" + postcss-merge-longhand: "npm:^6.0.2" + postcss-merge-rules: "npm:^6.0.3" + postcss-minify-font-values: "npm:^6.0.1" + postcss-minify-gradients: "npm:^6.0.1" + postcss-minify-params: "npm:^6.0.2" + postcss-minify-selectors: "npm:^6.0.2" + postcss-normalize-charset: "npm:^6.0.1" + postcss-normalize-display-values: "npm:^6.0.1" + postcss-normalize-positions: "npm:^6.0.1" + postcss-normalize-repeat-style: "npm:^6.0.1" + postcss-normalize-string: "npm:^6.0.1" + postcss-normalize-timing-functions: "npm:^6.0.1" + postcss-normalize-unicode: "npm:^6.0.2" + postcss-normalize-url: "npm:^6.0.1" + postcss-normalize-whitespace: "npm:^6.0.1" + postcss-ordered-values: "npm:^6.0.1" + postcss-reduce-initial: "npm:^6.0.2" + postcss-reduce-transforms: "npm:^6.0.1" + postcss-svgo: "npm:^6.0.2" + postcss-unique-selectors: "npm:^6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d100a1f8ab71adbb6df85e00f4a9e5d04ac06fc50343157eef853aded3f75dd0489dd845a5b2fb43ca701bd88c39c5aa88673f842bc1f94f4318c7b38ced1963 + languageName: node + linkType: hard + +"cssnano-utils@npm:^4.0.1": + version: 4.0.1 + resolution: "cssnano-utils@npm:4.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/20513a393402f283c85c450ece43d1a6a06a9906b524481043ac203a86888a4ca5cbef878c615a58fdd82a9e870ce62c6f3fea9f51814034a084d8980e17cf96 + languageName: node + linkType: hard + +"cssnano@npm:^6.0.1": + version: 6.0.3 + resolution: "cssnano@npm:6.0.3" + dependencies: + cssnano-preset-default: "npm:^6.0.3" + lilconfig: "npm:^3.0.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d1669eb987fd96159bae262ef2f76c1a64fffefe8fa593918a6bda377977798b60fb4a6a871a9b9a9deb11258130ee254fdb8c3144769b3060ad9f2a95a4ed0a + languageName: node + linkType: hard + +"csso@npm:^5.0.5": + version: 5.0.5 + resolution: "csso@npm:5.0.5" + dependencies: + css-tree: "npm:~2.2.0" + checksum: 10c0/ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b + languageName: node + linkType: hard + +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 10c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 10c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: "npm:~0.3.6" + checksum: 10c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"cyclist@npm:^1.0.1": + version: 1.0.2 + resolution: "cyclist@npm:1.0.2" + checksum: 10c0/163e2f7207180ccf2bb5a6ca8a7360469c13fad631509ef96de02397266b3a42089e2b2b51b97d3d8fdc4709d2fbe651c309670e5cc28b0ae445b1e5a34a98e2 + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"data-uri-to-buffer@npm:^2.0.0": + version: 2.0.2 + resolution: "data-uri-to-buffer@npm:2.0.2" + checksum: 10c0/341b6191ed65fa453e97a6d44db06082121ebc2ef3e6e096dfb6a1ebbc75e8be39d4199a5b4dba0f0efc43f2a3b2bcc276d85cf1407eba880eb09ebf17c3c31e + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: "npm:^2.0.6" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + checksum: 10c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 + languageName: node + linkType: hard + +"dataloader@npm:^2.2.2": + version: 2.2.2 + resolution: "dataloader@npm:2.2.2" + checksum: 10c0/125ec69f821478cf7c6b4360095db6cab939fe57876a0d2060c428091a8deee7152345189923b71a6afa694aaec463779f34b585317164016fd6f54f52cd94ba + languageName: node + linkType: hard + +"date-fns@npm:^2.30.0": + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": "npm:^7.21.0" + checksum: 10c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 + languageName: node + linkType: hard + +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 10c0/6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 + languageName: node + linkType: hard + +"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"decamelize@npm:5.0.1": + version: 5.0.1 + resolution: "decamelize@npm:5.0.1" + checksum: 10c0/3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3 + languageName: node + linkType: hard + +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"decamelize@npm:^2.0.0": + version: 2.0.0 + resolution: "decamelize@npm:2.0.0" + dependencies: + xregexp: "npm:4.0.0" + checksum: 10c0/7908c37fa2e20022cfbf425c03aebdc8dee3c57b6c64135bbf23007f40528dd2463b4fb28755ee5dec7be3aca4b1d136de962bea6a886518b27c558b0f3a8bb5 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"decompress-response@npm:^3.3.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10c0/5ffaf1d744277fd51c68c94ddc3081cd011b10b7de06637cccc6ecba137d45304a09ba1a776dee1c47fccc60b4a056c4bc74468eeea798ff1f1fca0024b45c9d + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"default-gateway@npm:^6.0.3": + version: 6.0.3 + resolution: "default-gateway@npm:6.0.3" + dependencies: + execa: "npm:^5.0.0" + checksum: 10c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"defer-to-connect@npm:^1.0.1": + version: 1.1.3 + resolution: "defer-to-connect@npm:1.1.3" + checksum: 10c0/9feb161bd7d21836fdff31eba79c2b11b7aaf844be58faf727121f8b0d9c2e82b494560df0903f41b52dd75027dc7c9455c11b3739f3202b28ca92b56c8f960e + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"define-property@npm:^0.2.5": + version: 0.2.5 + resolution: "define-property@npm:0.2.5" + dependencies: + is-descriptor: "npm:^0.1.0" + checksum: 10c0/9986915c0893818dedc9ca23eaf41370667762fd83ad8aa4bf026a28563120dbaacebdfbfbf2b18d3b929026b9c6ee972df1dbf22de8fafb5fe6ef18361e4750 + languageName: node + linkType: hard + +"define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "define-property@npm:1.0.0" + dependencies: + is-descriptor: "npm:^1.0.0" + checksum: 10c0/d7cf09db10d55df305f541694ed51dafc776ad9bb8a24428899c9f2d36b11ab38dce5527a81458d1b5e7c389f8cbe803b4abad6e91a0037a329d153b84fc975e + languageName: node + linkType: hard + +"define-property@npm:^2.0.2": + version: 2.0.2 + resolution: "define-property@npm:2.0.2" + dependencies: + is-descriptor: "npm:^1.0.2" + isobject: "npm:^3.0.1" + checksum: 10c0/f91a08ad008fa764172a2c072adc7312f10217ade89ddaea23018321c6d71b2b68b8c229141ed2064179404e345c537f1a2457c379824813695b51a6ad3e4969 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"depd@npm:2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + +"dependency-graph@npm:^0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 10c0/9e6968d1534fdb502f7f3a25a3819b499f9d60f8389193950ed0b4d1618f1341b36b5d039f2cee256cfe10c9e8198ace16b271e370df06a93fac206e81602e7c + languageName: node + linkType: hard + +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + +"des.js@npm:^1.0.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + languageName: node + linkType: hard + +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + languageName: node + linkType: hard + +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 + languageName: node + linkType: hard + +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: "npm:^4.1.0" + miller-rabin: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": "npm:^2.0.1" + checksum: 10c0/8948d3d03063fb68e04a1e386875f8c3bcc398fc375f535f2b438fad8f41bf1afa6f5e70893ba44f4ae884c089247e0a31045722fa6ff0f01d228da103f1811d + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + languageName: node + linkType: hard + +"dom-converter@npm:^0.2.0": + version: 0.2.0 + resolution: "dom-converter@npm:0.2.0" + dependencies: + utila: "npm:~0.4" + checksum: 10c0/e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 + languageName: node + linkType: hard + +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" + dependencies: + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.2.0" + entities: "npm:^2.0.0" + checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 + languageName: node + linkType: hard + +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.2" + entities: "npm:^4.2.0" + checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 + languageName: node + linkType: hard + +"domain-browser@npm:^1.1.1": + version: 1.2.0 + resolution: "domain-browser@npm:1.2.0" + checksum: 10c0/a955f482f4b4710fbd77c12a33e77548d63603c30c80f61a80519f27e3db1ba8530b914584cc9e9365d2038753d6b5bd1f4e6c81e432b007b0ec95b8b5e69b1b + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 + languageName: node + linkType: hard + +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: "npm:^2.2.0" + checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b + languageName: node + linkType: hard + +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: "npm:^2.3.0" + checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a + languageName: node + linkType: hard + +"domutils@npm:^2.5.2, domutils@npm:^2.8.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: "npm:^1.0.1" + domelementtype: "npm:^2.2.0" + domhandler: "npm:^4.2.0" + checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db + languageName: node + linkType: hard + +"domutils@npm:^3.0.1": + version: 3.1.0 + resolution: "domutils@npm:3.1.0" + dependencies: + dom-serializer: "npm:^2.0.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + languageName: node + linkType: hard + +"dot-prop@npm:^4.2.1": + version: 4.2.1 + resolution: "dot-prop@npm:4.2.1" + dependencies: + is-obj: "npm:^1.0.0" + checksum: 10c0/ea0a98871ef4de0cce05325979517a43b70eb3a3671254fce78f2629c125d5ddb69cfdd5570ace4e41d9f02ced06374ea0444d1aeae70290a19f73e02093318e + languageName: node + linkType: hard + +"dotenv-defaults@npm:5.0.2": + version: 5.0.2 + resolution: "dotenv-defaults@npm:5.0.2" + dependencies: + dotenv: "npm:^14.0.0" + checksum: 10c0/89fe77f8d97a183c701307dde7d328a973271b8ce04af3a48928250cd707a9f324b04a672a2ceb770db117a7724995c48e93edc438b3c9ce1207a67adee77098 + languageName: node + linkType: hard + +"dotenv-defaults@npm:^2.0.2": + version: 2.0.2 + resolution: "dotenv-defaults@npm:2.0.2" + dependencies: + dotenv: "npm:^8.2.0" + checksum: 10c0/14b7b8f6c21a30404106384398728746e63405bfeabe47ef7aadd0e81de49986d5896a612e5b1acddf655af6472a24947b7b113aa3ef3270a2877afa9c5bd287 + languageName: node + linkType: hard + +"dotenv-webpack@npm:8.0.1": + version: 8.0.1 + resolution: "dotenv-webpack@npm:8.0.1" + dependencies: + dotenv-defaults: "npm:^2.0.2" + peerDependencies: + webpack: ^4 || ^5 + checksum: 10c0/ddd12406e7b27a9f324110d34ddf6efdf386f8f6dbbf903cb74b63ed582c28262197eadca4e20cdee55d1e427cc4acd47c9dadd38bfc49219ae215d0b688c2e8 + languageName: node + linkType: hard + +"dotenv@npm:16.3.1": + version: 16.3.1 + resolution: "dotenv@npm:16.3.1" + checksum: 10c0/b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 + languageName: node + linkType: hard + +"dotenv@npm:^14.0.0": + version: 14.3.2 + resolution: "dotenv@npm:14.3.2" + checksum: 10c0/cb428358aa3a8da735be727f8a9de56e148ddf97d84a75e528039dc90e55787688766e48204a50b8326ba1ebaa6e039584c1019dfc28fa144e68145d8cbe5946 + languageName: node + linkType: hard + +"dotenv@npm:^16.0.0": + version: 16.4.4 + resolution: "dotenv@npm:16.4.4" + checksum: 10c0/f66ad105144c9106a868c8e244ace6097a0318f63284894e6c7b298c7e096911958837117d936d3c341db550e2fcb21a7a5ad396437638f605460e82b1dd30ee + languageName: node + linkType: hard + +"dotenv@npm:^8.2.0": + version: 8.6.0 + resolution: "dotenv@npm:8.6.0" + checksum: 10c0/6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f + languageName: node + linkType: hard + +"dset@npm:^3.1.1, dset@npm:^3.1.2": + version: 3.1.3 + resolution: "dset@npm:3.1.3" + checksum: 10c0/b1ff68f1f42af373baa85b00b04d89094cd0d7f74f94bd11364cba575f2762ed52a0a0503bbfcc92eccd07c6d55426813c8a7a6cfa020338eaea1f4edfd332c2 + languageName: node + linkType: hard + +"duplexer3@npm:^0.1.4": + version: 0.1.5 + resolution: "duplexer3@npm:0.1.5" + checksum: 10c0/02195030d61c4d6a2a34eca71639f2ea5e05cb963490e5bd9527623c2ac7f50c33842a34d14777ea9cbfd9bc2be5a84065560b897d9fabb99346058a5b86ca98 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.2": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + languageName: node + linkType: hard + +"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: "npm:^1.0.0" + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + stream-shift: "npm:^1.0.0" + checksum: 10c0/59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ecdsa-sig-formatter@npm:1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.4.668": + version: 1.4.675 + resolution: "electron-to-chromium@npm:1.4.675" + checksum: 10c0/3c7a9145e3a1ef656d5bdd4d1cc1a74abf97bc42a130801f93c4e07c965233b3318ddaa50c5901633ef8b8cbcc11134b9ae98e7b70b75b74729ca0cb5a5bbafb + languageName: node + linkType: hard + +"elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + languageName: node + linkType: hard + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.4": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^4.5.0": + version: 4.5.0 + resolution: "enhanced-resolve@npm:4.5.0" + dependencies: + graceful-fs: "npm:^4.1.2" + memory-fs: "npm:^0.5.0" + tapable: "npm:^1.0.0" + checksum: 10c0/d95fc630606ea35bed21c4a029bbb1681919571a2d1d2011c7fc42a26a9e48ed3d74a89949ce331e1fd3229850a303e3218b887b92951330f16bdfbb93a10e64 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.15.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a + languageName: node + linkType: hard + +"enquirer@npm:2.4.1": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 + languageName: node + linkType: hard + +"entities@npm:^4.2.0, entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"envinfo@npm:7.11.0": + version: 7.11.0 + resolution: "envinfo@npm:7.11.0" + bin: + envinfo: dist/cli.js + checksum: 10c0/4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d + languageName: node + linkType: hard + +"envinfo@npm:^7.7.3": + version: 7.11.1 + resolution: "envinfo@npm:7.11.1" + bin: + envinfo: dist/cli.js + checksum: 10c0/4550cce03d4d8a7b137d548faaf9c920356474231636cb4a6e74ae75db3b9cb04aa0a052ee391e2363af5db697166c207ba76e106338d758c6126830b3e16d75 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"errno@npm:^0.1.3, errno@npm:~0.1.7": + version: 0.1.8 + resolution: "errno@npm:0.1.8" + dependencies: + prr: "npm:~1.0.1" + bin: + errno: cli.js + checksum: 10c0/83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"error-stack-parser@npm:^2.0.6": + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" + dependencies: + stackframe: "npm:^1.3.4" + checksum: 10c0/7679b780043c98b01fc546725484e0cfd3071bf5c906bbe358722972f04abf4fc3f0a77988017665bab367f6ef3fc2d0185f7528f45966b83e7c99c02d5509b9 + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.22.4": + version: 1.22.4 + resolution: "es-abstract@npm:1.22.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.2" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.1" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-negative-zero: "npm:^2.0.2" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.0" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.8" + string.prototype.trimend: "npm:^1.0.7" + string.prototype.trimstart: "npm:^1.0.7" + typed-array-buffer: "npm:^1.0.1" + typed-array-byte-length: "npm:^1.0.0" + typed-array-byte-offset: "npm:^1.0.0" + typed-array-length: "npm:^1.0.4" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.14" + checksum: 10c0/dc332c3a010c5e7b77b7ea8a4532ac455fa02e7bcabf996a47447165bafa72d0d99967407d0cf5dbbb5fbbf87f53cd8b706608ec70953523b8cd2b831b9a9d64 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.0.0, es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.12, es-iterator-helpers@npm:^1.0.15": + version: 1.0.17 + resolution: "es-iterator-helpers@npm:1.0.17" + dependencies: + asynciterator.prototype: "npm:^1.0.0" + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.4" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.2" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.1.0" + checksum: 10c0/d0f281257e7165f068fd4fc3beb63d07ae4f18fbef02a2bbe4a39272b764164c1ce3311ae7c5429ac30003aef290fcdf569050e4a9ba3560e044440f68e9a47c + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.4.1 + resolution: "es-module-lexer@npm:1.4.1" + checksum: 10c0/b7260a138668554d3f0ddcc728cb4b60c2fa463f15545cf155ecbdd5450a1348952d58298a7f48642e900ee579f21d7f5304b6b3c61b3d9fc2d4b2109b5a9dff + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.2": + version: 2.0.2 + resolution: "es-set-tostringtag@npm:2.0.2" + dependencies: + get-intrinsic: "npm:^1.2.2" + has-tostringtag: "npm:^1.0.0" + hasown: "npm:^2.0.0" + checksum: 10c0/176d6bd1be31dd0145dcceee62bb78d4a5db7f81db437615a18308a6f62bcffe45c15081278413455e8cf0aad4ea99079de66f8de389605942dfdacbad74c2d5 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + languageName: node + linkType: hard + +"esbuild@npm:0.20.0": + version: 0.20.0 + resolution: "esbuild@npm:0.20.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.20.0" + "@esbuild/android-arm": "npm:0.20.0" + "@esbuild/android-arm64": "npm:0.20.0" + "@esbuild/android-x64": "npm:0.20.0" + "@esbuild/darwin-arm64": "npm:0.20.0" + "@esbuild/darwin-x64": "npm:0.20.0" + "@esbuild/freebsd-arm64": "npm:0.20.0" + "@esbuild/freebsd-x64": "npm:0.20.0" + "@esbuild/linux-arm": "npm:0.20.0" + "@esbuild/linux-arm64": "npm:0.20.0" + "@esbuild/linux-ia32": "npm:0.20.0" + "@esbuild/linux-loong64": "npm:0.20.0" + "@esbuild/linux-mips64el": "npm:0.20.0" + "@esbuild/linux-ppc64": "npm:0.20.0" + "@esbuild/linux-riscv64": "npm:0.20.0" + "@esbuild/linux-s390x": "npm:0.20.0" + "@esbuild/linux-x64": "npm:0.20.0" + "@esbuild/netbsd-x64": "npm:0.20.0" + "@esbuild/openbsd-x64": "npm:0.20.0" + "@esbuild/sunos-x64": "npm:0.20.0" + "@esbuild/win32-arm64": "npm:0.20.0" + "@esbuild/win32-ia32": "npm:0.20.0" + "@esbuild/win32-x64": "npm:0.20.0" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/355f13fe91110155404b12b4e0eeb840aceddffb609e63ebd03bf039b9576db791d51fcd22992b155ad9249bcd9cab838e34577770cff974ecf1d245dcb1b16e + languageName: node + linkType: hard + +"esbuild@npm:^0.18.10": + version: 0.18.20 + resolution: "esbuild@npm:0.18.20" + dependencies: + "@esbuild/android-arm": "npm:0.18.20" + "@esbuild/android-arm64": "npm:0.18.20" + "@esbuild/android-x64": "npm:0.18.20" + "@esbuild/darwin-arm64": "npm:0.18.20" + "@esbuild/darwin-x64": "npm:0.18.20" + "@esbuild/freebsd-arm64": "npm:0.18.20" + "@esbuild/freebsd-x64": "npm:0.18.20" + "@esbuild/linux-arm": "npm:0.18.20" + "@esbuild/linux-arm64": "npm:0.18.20" + "@esbuild/linux-ia32": "npm:0.18.20" + "@esbuild/linux-loong64": "npm:0.18.20" + "@esbuild/linux-mips64el": "npm:0.18.20" + "@esbuild/linux-ppc64": "npm:0.18.20" + "@esbuild/linux-riscv64": "npm:0.18.20" + "@esbuild/linux-s390x": "npm:0.18.20" + "@esbuild/linux-x64": "npm:0.18.20" + "@esbuild/netbsd-x64": "npm:0.18.20" + "@esbuild/openbsd-x64": "npm:0.18.20" + "@esbuild/sunos-x64": "npm:0.18.20" + "@esbuild/win32-arm64": "npm:0.18.20" + "@esbuild/win32-ia32": "npm:0.18.20" + "@esbuild/win32-x64": "npm:0.18.20" + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/473b1d92842f50a303cf948a11ebd5f69581cd254d599dd9d62f9989858e0533f64e83b723b5e1398a5b488c0f5fd088795b4235f65ecaf4f007d4b79f04bc88 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 + languageName: node + linkType: hard + +"escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:^2.0.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:8.10.0": + version: 8.10.0 + resolution: "eslint-config-prettier@npm:8.10.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/19f8c497d9bdc111a17a61b25ded97217be3755bbc4714477dfe535ed539dddcaf42ef5cf8bb97908b058260cf89a3d7c565cb0be31096cbcd39f4c2fa5fe43c + languageName: node + linkType: hard + +"eslint-import-resolver-babel-module@npm:5.3.2": + version: 5.3.2 + resolution: "eslint-import-resolver-babel-module@npm:5.3.2" + dependencies: + pkg-up: "npm:^3.1.0" + resolve: "npm:^1.20.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + babel-plugin-module-resolver: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/168fc793cc565cb8c27eb69c67872420980a6fcaac4a5b6951bdaa2700c0745c997d282b3c8cce313c423a12933a0f6fcc347a799398f3cf7f91e9e8a35d2d69 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.8.0": + version: 2.8.0 + resolution: "eslint-module-utils@npm:2.8.0" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df + languageName: node + linkType: hard + +"eslint-plugin-babel@npm:5.3.1": + version: 5.3.1 + resolution: "eslint-plugin-babel@npm:5.3.1" + dependencies: + eslint-rule-composer: "npm:^0.3.0" + peerDependencies: + eslint: ">=4.0.0" + checksum: 10c0/c73e054c3cf3c5392e8ea7e56f41db3859b9d7c0dd347c28a5f08ae87889cc4879fcddfe227ee1ec075a9ab62e34e245d7e6e723180dfa36d07397c2cbb2c1a1 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:2.29.0": + version: 2.29.0 + resolution: "eslint-plugin-import@npm:2.29.0" + dependencies: + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.8.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" + semver: "npm:^6.3.1" + tsconfig-paths: "npm:^3.14.2" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 10c0/761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733 + languageName: node + linkType: hard + +"eslint-plugin-jest-dom@npm:4.0.3": + version: 4.0.3 + resolution: "eslint-plugin-jest-dom@npm:4.0.3" + dependencies: + "@babel/runtime": "npm:^7.16.3" + "@testing-library/dom": "npm:^8.11.1" + requireindex: "npm:^1.2.0" + peerDependencies: + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4a9f17a1c3e537df6093cf82207121536a48565907d8173194339758f39d759db5f65fa6d632815eec36b4de2644fa2d721eae395c43943e2d4a76ecba9ebeb5 + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:6.8.0": + version: 6.8.0 + resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" + dependencies: + "@babel/runtime": "npm:^7.23.2" + aria-query: "npm:^5.3.0" + array-includes: "npm:^3.1.7" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:=4.7.0" + axobject-query: "npm:^3.2.1" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + es-iterator-helpers: "npm:^1.0.15" + hasown: "npm:^2.0.0" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.7" + object.fromentries: "npm:^2.0.7" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:4.2.1": + version: 4.2.1 + resolution: "eslint-plugin-prettier@npm:4.2.1" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + peerDependencies: + eslint: ">=7.28.0" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: 10c0/c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:4.6.0": + version: 4.6.0 + resolution: "eslint-plugin-react-hooks@npm:4.6.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10c0/58c7e10ea5792c33346fcf5cb4024e14837035ce412ff99c2dcb7c4f903dc9b17939078f80bfef826301ce326582c396c00e8e0ac9d10ac2cde2b42d33763c65 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.33.2": + version: 7.33.2 + resolution: "eslint-plugin-react@npm:7.33.2" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flatmap: "npm:^1.3.1" + array.prototype.tosorted: "npm:^1.1.1" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.12" + estraverse: "npm:^5.3.0" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.6" + object.fromentries: "npm:^2.0.6" + object.hasown: "npm:^1.1.2" + object.values: "npm:^1.1.6" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.4" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.8" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/f9b247861024bafc396c4bd3c9ac946604b3b23077251c98f23602aa22027a0c33a69157fd49564e4ff7f17b3678e5dc366a46c7ec42a09454d7cbce786d5001 + languageName: node + linkType: hard + +"eslint-rule-composer@npm:^0.3.0": + version: 0.3.0 + resolution: "eslint-rule-composer@npm:0.3.0" + checksum: 10c0/1f0c40d209e1503a955101a0dbba37e7fc67c8aaa47a5b9ae0b0fcbae7022c86e52b3df2b1b9ffd658e16cd80f31fff92e7222460a44d8251e61d49e0af79a07 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^4.0.3": + version: 4.0.3 + resolution: "eslint-scope@npm:4.0.3" + dependencies: + esrecurse: "npm:^4.1.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/a2a3fe5845938ce7cfd2e658c309a9bb27a7f9ce94f0cc447ed5f9fa95b16451556d7e1db4c8e5d2aaa02d02850f5346d23091bbe94f7097412ce846504b4dcc + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:8.55.0": + version: 8.55.0 + resolution: "eslint@npm:8.55.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.55.0" + "@humanwhocodes/config-array": "npm:^0.11.13" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + languageName: node + linkType: hard + +"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + +"execa@npm:5.1.1, execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expand-brackets@npm:^2.1.4": + version: 2.1.4 + resolution: "expand-brackets@npm:2.1.4" + dependencies: + debug: "npm:^2.3.3" + define-property: "npm:^0.2.5" + extend-shallow: "npm:^2.0.1" + posix-character-classes: "npm:^0.1.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/3e2fb95d2d7d7231486493fd65db913927b656b6fcdfcce41e139c0991a72204af619ad4acb1be75ed994ca49edb7995ef241dbf8cf44dc3c03d211328428a87 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"express@npm:^4.17.3": + version: 4.18.2 + resolution: "express@npm:4.18.2" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.1" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.5.0" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.2.0" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.1" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.7" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.11.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.18.0" + serve-static: "npm:1.15.0" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/75af556306b9241bc1d7bdd40c9744b516c38ce50ae3210658efcbf96e3aed4ab83b3432f06215eae5610c123bc4136957dc06e50dfc50b7d4d775af56c4c59c + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: "npm:^0.1.0" + checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 + languageName: node + linkType: hard + +"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": + version: 3.0.2 + resolution: "extend-shallow@npm:3.0.2" + dependencies: + assign-symbols: "npm:^1.0.0" + is-extendable: "npm:^1.0.1" + checksum: 10c0/f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"extglob@npm:^2.0.4": + version: 2.0.4 + resolution: "extglob@npm:2.0.4" + dependencies: + array-unique: "npm:^0.3.2" + define-property: "npm:^1.0.0" + expand-brackets: "npm:^2.1.4" + extend-shallow: "npm:^2.0.1" + fragment-cache: "npm:^0.2.1" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/e1a891342e2010d046143016c6c03d58455c2c96c30bf5570ea07929984ee7d48fad86b363aee08f7a8a638f5c3a66906429b21ecb19bc8e90df56a001cd282c + languageName: node + linkType: hard + +"extract-files@npm:^11.0.0": + version: 11.0.0 + resolution: "extract-files@npm:11.0.0" + checksum: 10c0/7ac1cd693d081099d7c29f2b36aad199f92c5ea234c2016eb37ba213dddaefe74d54566f0675de5917d35cf98670183c2c9a0d96094727eb2c6dae02be7fc308 + languageName: node + linkType: hard + +"fast-content-type-parse@npm:^1.1.0": + version: 1.1.0 + resolution: "fast-content-type-parse@npm:1.1.0" + checksum: 10c0/882bf990fa5d64be1825ce183818db43900ece0d7ef184cb9409bae8ed1001acbe536a657b1496382cb3e308e71ab39cc399bbdae70cba1745eecaeca4e55384 + languageName: node + linkType: hard + +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 10c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 10c0/d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c + languageName: node + linkType: hard + +"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fast-json-parse@npm:1.0.3": + version: 1.0.3 + resolution: "fast-json-parse@npm:1.0.3" + checksum: 10c0/2c58c7a0f7f1725c9da1272839f9bee3ccc13b77672b18ab4ac470c707999bca39828cd7e79b87c73017f21c3ddff37992d03fa2fd2da124d9bd06c1d02c9b7e + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0": + version: 5.12.0 + resolution: "fast-json-stringify@npm:5.12.0" + dependencies: + "@fastify/merge-json-schemas": "npm:^0.1.0" + ajv: "npm:^8.10.0" + ajv-formats: "npm:^2.1.1" + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^2.1.0" + json-schema-ref-resolver: "npm:^1.0.1" + rfdc: "npm:^1.2.0" + checksum: 10c0/5d6ecb4326acddfd0247cd65901f5584ffc2ed821b47e85cf3aa66474b5bb0f5cf2617e947f9b66fd0baf93caaee7c039952993dc1eda9f72d4920713a36a182 + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-querystring@npm:^1.0.0, fast-querystring@npm:^1.1.1, fast-querystring@npm:^1.1.2": + version: 1.1.2 + resolution: "fast-querystring@npm:1.1.2" + dependencies: + fast-decode-uri-component: "npm:^1.0.1" + checksum: 10c0/e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3 + languageName: node + linkType: hard + +"fast-redact@npm:^3.1.1": + version: 3.3.0 + resolution: "fast-redact@npm:3.3.0" + checksum: 10c0/d81562510681e9ba6404ee5d3838ff5257a44d2f80937f5024c099049ff805437d0fae0124458a7e87535cc9dcf4de305bb075cab8f08d6c720bbc3447861b4e + languageName: node + linkType: hard + +"fast-uri@npm:^2.0.0, fast-uri@npm:^2.1.0, fast-uri@npm:^2.2.0": + version: 2.3.0 + resolution: "fast-uri@npm:2.3.0" + checksum: 10c0/72844622c8b9d92dbb783723628d1069c999b31bfaa74af9e9afae0e0c22faf18c988a0ce55e775dce4c404f4cca75fa43e1f0ab07075342cff99796f4920945 + languageName: node + linkType: hard + +"fast-url-parser@npm:^1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: "npm:^1.3.2" + checksum: 10c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + languageName: node + linkType: hard + +"fastify-plugin@npm:^4.0.0, fastify-plugin@npm:^4.5.0": + version: 4.5.1 + resolution: "fastify-plugin@npm:4.5.1" + checksum: 10c0/f58f79cd9d3c88fd7f79a3270276c6339fc57bbe72ef14d20b73779193c404e317ac18e8eae2c5071b3909ebee45d7eb6871da4e65464ac64ed0d9746b4e9b9f + languageName: node + linkType: hard + +"fastify-raw-body@npm:4.3.0": + version: 4.3.0 + resolution: "fastify-raw-body@npm:4.3.0" + dependencies: + fastify-plugin: "npm:^4.0.0" + raw-body: "npm:^2.5.1" + secure-json-parse: "npm:^2.4.0" + checksum: 10c0/3260ab2fc3483a1668442b0a2b60a3f671948d8fc6e7a811ac782cfc28d31d8f064e7b3835ca21cb542d41c4a2a7bc84dd5c18ef0c38f90d7387dd6bbb83161d + languageName: node + linkType: hard + +"fastify@npm:4.25.2": + version: 4.25.2 + resolution: "fastify@npm:4.25.2" + dependencies: + "@fastify/ajv-compiler": "npm:^3.5.0" + "@fastify/error": "npm:^3.4.0" + "@fastify/fast-json-stringify-compiler": "npm:^4.3.0" + abstract-logging: "npm:^2.0.1" + avvio: "npm:^8.2.1" + fast-content-type-parse: "npm:^1.1.0" + fast-json-stringify: "npm:^5.8.0" + find-my-way: "npm:^7.7.0" + light-my-request: "npm:^5.11.0" + pino: "npm:^8.17.0" + process-warning: "npm:^3.0.0" + proxy-addr: "npm:^2.0.7" + rfdc: "npm:^1.3.0" + secure-json-parse: "npm:^2.7.0" + semver: "npm:^7.5.4" + toad-cache: "npm:^3.3.0" + checksum: 10c0/3ae9e8cdfd6ee4ada4b198f33cd6e152ae751f93e31ce628222e17249544ff34057118c8903d43cb1134c8b1614b7ce19768d8c9f3fde5befa6e236376d97f01 + languageName: node + linkType: hard + +"fastq@npm:^1.17.1, fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: "npm:>=0.5.1" + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fbjs-css-vars@npm:^1.0.0": + version: 1.0.2 + resolution: "fbjs-css-vars@npm:1.0.2" + checksum: 10c0/dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f + languageName: node + linkType: hard + +"fbjs@npm:^3.0.0": + version: 3.0.5 + resolution: "fbjs@npm:3.0.5" + dependencies: + cross-fetch: "npm:^3.1.5" + fbjs-css-vars: "npm:^1.0.0" + loose-envify: "npm:^1.0.0" + object-assign: "npm:^4.1.0" + promise: "npm:^7.1.1" + setimmediate: "npm:^1.0.5" + ua-parser-js: "npm:^1.0.35" + checksum: 10c0/66d0a2fc9a774f9066e35ac2ac4bf1245931d27f3ac287c7d47e6aa1fc152b243c2109743eb8f65341e025621fb51a12038fadb9fd8fda2e3ddae04ebab06f91 + languageName: node + linkType: hard + +"figgy-pudding@npm:^3.5.1": + version: 3.5.2 + resolution: "figgy-pudding@npm:3.5.2" + checksum: 10c0/b21c7adaeb8485ef3c50e056b5dc8c3a6461818343aba141e0d7927aad47a0cb9f1d207ffdf494c380cd60d7c848c46a5ce5cb06987d10e9226fcec419c8af90 + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"fill-keys@npm:^1.0.2": + version: 1.0.2 + resolution: "fill-keys@npm:1.0.2" + dependencies: + is-object: "npm:~1.0.1" + merge-descriptors: "npm:~1.0.0" + checksum: 10c0/39d01c6d1fbb7cbb05ccbfee5746afcb03dbaf8990f09f3b1b23a144d215c0b685b9db8f40b0e949627e49baa8e5530a1b7f9a2c50ef29acc715a91c45bbb6da + languageName: node + linkType: hard + +"fill-range@npm:^4.0.0": + version: 4.0.0 + resolution: "fill-range@npm:4.0.0" + dependencies: + extend-shallow: "npm:^2.0.1" + is-number: "npm:^3.0.0" + repeat-string: "npm:^1.6.1" + to-regex-range: "npm:^2.1.0" + checksum: 10c0/ccd57b7c43d7e28a1f8a60adfa3c401629c08e2f121565eece95e2386ebc64dedc7128d8c3448342aabf19db0c55a34f425f148400c7a7be9a606ba48749e089 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + languageName: node + linkType: hard + +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:2.0.1" + unpipe: "npm:~1.0.0" + checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 + languageName: node + linkType: hard + +"find-babel-config@npm:^1.2.0": + version: 1.2.0 + resolution: "find-babel-config@npm:1.2.0" + dependencies: + json5: "npm:^0.5.1" + path-exists: "npm:^3.0.0" + checksum: 10c0/6ea93bde7fd062fac87f27789aa77142de87dd023a5a60ceb7c91f65c7fab967a57c0a410ef8c51b8e2a924194867ab2e901ff35a7da7b9db5a94150652385a3 + languageName: node + linkType: hard + +"find-babel-config@npm:^2.0.0": + version: 2.0.0 + resolution: "find-babel-config@npm:2.0.0" + dependencies: + json5: "npm:^2.1.1" + path-exists: "npm:^4.0.0" + checksum: 10c0/4d841cf74f0e17da20c4d52d520831e1ccf42eaa99570c07ea5948adabc14a0d1388dea690efdf66c007de8c4c61629458c11822c88ccc84d855d77668fa5247 + languageName: node + linkType: hard + +"find-cache-dir@npm:^2.0.0, find-cache-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "find-cache-dir@npm:2.1.0" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^2.0.0" + pkg-dir: "npm:^3.0.0" + checksum: 10c0/556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.3.1": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^3.0.2" + pkg-dir: "npm:^4.1.0" + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + languageName: node + linkType: hard + +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: "npm:^3.0.0" + pkg-dir: "npm:^7.0.0" + checksum: 10c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + languageName: node + linkType: hard + +"find-my-way@npm:^7.7.0": + version: 7.7.0 + resolution: "find-my-way@npm:7.7.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-querystring: "npm:^1.0.0" + safe-regex2: "npm:^2.0.0" + checksum: 10c0/6b4fef5f3a21a73c5428337a02ce2f90af055e3fade6f57f3444a76d7f58a43891aba26597014ff02f9fd9071abfdd32b92ff2435aadaf96dd2316920c456f6e + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: "npm:^3.0.0" + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: "npm:^7.1.0" + path-exists: "npm:^5.0.0" + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: 10c0/5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53 + languageName: node + linkType: hard + +"flow-parser@npm:0.*": + version: 0.229.0 + resolution: "flow-parser@npm:0.229.0" + checksum: 10c0/d64066a675da37ff3de782518e0a3706dc14184a301a3c98dbcb3ffe65657b79ad7e869b7cb41086cfd3b089929180c23df6c750b4afbb0e6d42db16af3b099e + languageName: node + linkType: hard + +"flush-write-stream@npm:^1.0.0": + version: 1.1.1 + resolution: "flush-write-stream@npm:1.1.1" + dependencies: + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.3.6" + checksum: 10c0/2cd4f65b728d5f388197a03dafabc6a5e4f0c2ed1a2d912e288f7aa1c2996dd90875e55b50cf32c78dca55ad2e2dfae5d3db09b223838388033d87cf5920dd87 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0": + version: 1.15.5 + resolution: "follow-redirects@npm:1.15.5" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/418d71688ceaf109dfd6f85f747a0c75de30afe43a294caa211def77f02ef19865b547dfb73fde82b751e1cc507c06c754120b848fe5a7400b0a669766df7615 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"for-in@npm:^1.0.2": + version: 1.0.2 + resolution: "for-in@npm:1.0.2" + checksum: 10c0/42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + languageName: node + linkType: hard + +"fragment-cache@npm:^0.2.1": + version: 0.2.1 + resolution: "fragment-cache@npm:0.2.1" + dependencies: + map-cache: "npm:^0.2.2" + checksum: 10c0/5891d1c1d1d5e1a7fb3ccf28515c06731476fa88f7a50f4ede8a0d8d239a338448e7f7cc8b73db48da19c229fa30066104fe6489862065a4f1ed591c42fbeabf + languageName: node + linkType: hard + +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + languageName: node + linkType: hard + +"from2@npm:^2.1.0": + version: 2.3.0 + resolution: "from2@npm:2.3.0" + dependencies: + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + checksum: 10c0/f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 + languageName: node + linkType: hard + +"fs-extra@npm:11.2.0": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.0.5 + resolution: "fs-monkey@npm:1.0.5" + checksum: 10c0/815025e75549fb1ac6c403413b82fd631eded862ae27694a515c0f666069e95874ab34e79c33d1b3b8c87d1e54350d5e4262090d0aa5bd7130143cbc627537e4 + languageName: node + linkType: hard + +"fs-readdir-recursive@npm:^1.1.0": + version: 1.1.0 + resolution: "fs-readdir-recursive@npm:1.1.0" + checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c + languageName: node + linkType: hard + +"fs-write-stream-atomic@npm:^1.0.8": + version: 1.0.10 + resolution: "fs-write-stream-atomic@npm:1.0.10" + dependencies: + graceful-fs: "npm:^4.1.2" + iferr: "npm:^0.1.5" + imurmurhash: "npm:^0.1.4" + readable-stream: "npm:1 || 2" + checksum: 10c0/293b2b4ed346d35a28f8637a20cb2aef31be86503da501c42c2eda8fefed328bac16ce0e5daa7019f9329d73930c58031eaea2ce0c70f1680943fbfb7cff808b + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^1.2.7": + version: 1.2.13 + resolution: "fsevents@npm:1.2.13" + dependencies: + bindings: "npm:^1.5.0" + nan: "npm:^2.12.1" + checksum: 10c0/4427ff08db9ee7327f2c3ad58ec56f9096a917eed861bfffaa2e2be419479cdf37d00750869ab9ecbf5f59f32ad999bd59577d73fc639193e6c0ce52bb253e02 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^1.2.7#optional!builtin<compat/fsevents>": + version: 1.2.13 + resolution: "fsevents@patch:fsevents@npm%3A1.2.13#optional!builtin<compat/fsevents>::version=1.2.13&hash=d11327" + dependencies: + bindings: "npm:^1.5.0" + nan: "npm:^2.12.1" + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin<compat/fsevents>, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin<compat/fsevents>": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin<compat/fsevents>::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-source@npm:^2.0.12": + version: 2.0.12 + resolution: "get-source@npm:2.0.12" + dependencies: + data-uri-to-buffer: "npm:^2.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/b1db46d28902344fd9407e1f0ed0b8f3a85cb4650f85ba8cee9c0b422fc75118172f12f735706e2c6e034617b13a2fbc5266e7fab617ecb184f0cee074b9dd3e + languageName: node + linkType: hard + +"get-stream@npm:^4.1.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/294d876f667694a5ca23f0ca2156de67da950433b6fb53024833733975d32582896dbc7f257842d331809979efccf04d5e0b6b75ad4d45744c45f193fd497539 + languageName: node + linkType: hard + +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"get-them-args@npm:1.3.2": + version: 1.3.2 + resolution: "get-them-args@npm:1.3.2" + checksum: 10c0/a75e26d7369a00f596dc9c3c7b4259a219d4486a0beef51d991867103cc8c07d22814a24210d9c9f56cefb35f9848e16fe120b57b3ec1ea333054e715059d586 + languageName: node + linkType: hard + +"get-value@npm:^2.0.3, get-value@npm:^2.0.6": + version: 2.0.6 + resolution: "get-value@npm:2.0.6" + checksum: 10c0/f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9 + languageName: node + linkType: hard + +"glob-parent@npm:^3.1.0": + version: 3.1.0 + resolution: "glob-parent@npm:3.1.0" + dependencies: + is-glob: "npm:^3.1.0" + path-dirname: "npm:^1.0.0" + checksum: 10c0/bfa89ce5ae1dfea4c2ece7b61d2ea230d87fcbec7472915cfdb3f4caf688a91ecb0dc86ae39b1e17505adce7e64cae3b971d64dc66091f3a0131169fd631b00d + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + +"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.0.0, glob@npm:^8.0.1, glob@npm:^8.0.3": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: "npm:^1.1.3" + checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 + languageName: node + linkType: hard + +"globby@npm:^11.0.3, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"globby@npm:^13.1.1": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.3.0" + ignore: "npm:^5.2.4" + merge2: "npm:^1.4.1" + slash: "npm:^4.0.0" + checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 + languageName: node + linkType: hard + +"goober@npm:^2.1.10": + version: 2.1.14 + resolution: "goober@npm:2.1.14" + peerDependencies: + csstype: ^3.0.10 + checksum: 10c0/184eda787a9a14cffbaa8284e98dc127095e538b4acab2a84b81babca84253bb883e16208822e02584f27c7a69f3ec47341e5060dfa40a0e07c32ac1f79b2714 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + languageName: node + linkType: hard + +"got@npm:^9.6.0": + version: 9.6.0 + resolution: "got@npm:9.6.0" + dependencies: + "@sindresorhus/is": "npm:^0.14.0" + "@szmarczak/http-timer": "npm:^1.1.2" + cacheable-request: "npm:^6.0.0" + decompress-response: "npm:^3.3.0" + duplexer3: "npm:^0.1.4" + get-stream: "npm:^4.1.0" + lowercase-keys: "npm:^1.0.1" + mimic-response: "npm:^1.0.1" + p-cancelable: "npm:^1.0.0" + to-readable-stream: "npm:^1.0.0" + url-parse-lax: "npm:^3.0.0" + checksum: 10c0/5cb3111e14b48bf4fb8b414627be481ebfb14151ec867e80a74b6d1472489965b9c4f4ac5cf4f3b1f9b90c60a2ce63584d9072b16efd9a3171553e00afc5abc8 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"graphql-config@npm:^4.5.0": + version: 4.5.0 + resolution: "graphql-config@npm:4.5.0" + dependencies: + "@graphql-tools/graphql-file-loader": "npm:^7.3.7" + "@graphql-tools/json-file-loader": "npm:^7.3.7" + "@graphql-tools/load": "npm:^7.5.5" + "@graphql-tools/merge": "npm:^8.2.6" + "@graphql-tools/url-loader": "npm:^7.9.7" + "@graphql-tools/utils": "npm:^9.0.0" + cosmiconfig: "npm:8.0.0" + jiti: "npm:1.17.1" + minimatch: "npm:4.2.3" + string-env-interpolation: "npm:1.0.1" + tslib: "npm:^2.4.0" + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: 10c0/2f9fcc16fca402640f10d3b8c5502f2e77fe640b43ea1d9548664282f48fe2998707ef2e495d1b8b46b33f1c74bbf575c3981ed0a0af43cdfcad5356cae61ce7 + languageName: node + linkType: hard + +"graphql-depth-limit@npm:^1.1.0": + version: 1.1.0 + resolution: "graphql-depth-limit@npm:1.1.0" + dependencies: + arrify: "npm:^1.0.1" + peerDependencies: + graphql: "*" + checksum: 10c0/8f50268ab3e2553cfe64fad532a3bd60068865217f113ac7388bfea1484d36a7e711a1c26f6a03e67969923967f2a84b62618c07732ca2ca603c295f8a19dbf9 + languageName: node + linkType: hard + +"graphql-request@npm:^6.0.0": + version: 6.1.0 + resolution: "graphql-request@npm:6.1.0" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.2.0" + cross-fetch: "npm:^3.1.5" + peerDependencies: + graphql: 14 - 16 + checksum: 10c0/f8167925a110e8e1de93d56c14245e7e64391dc8dce5002dd01bf24a3059f345d4ca1bb6ce2040e2ec78264211b0704e75da3e63984f0f74d2042f697a4e8cc6 + languageName: node + linkType: hard + +"graphql-scalars@npm:1.22.4": + version: 1.22.4 + resolution: "graphql-scalars@npm:1.22.4" + dependencies: + tslib: "npm:^2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/d7df28c7bcd274049ee2b93536036b22bc2591bdb86a627a46d4557161965df96c8da6c4f7dc01684d46580d75c7b2fbba7fc5042b763b5b6cba879dc79e010e + languageName: node + linkType: hard + +"graphql-sse@npm:2.5.2": + version: 2.5.2 + resolution: "graphql-sse@npm:2.5.2" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 10c0/0ceb6fd4b858d9a89a3e77e15157b94cc04f8ed0077a1581169f9bd4e6114940a448f5bcc8cc22be0562056b5e0f515960b239cccf1e7907e708ed4da6f12279 + languageName: node + linkType: hard + +"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: "npm:^2.1.0" + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/7763a72011bda454ed8ff1a0d82325f43ca6478e4ce4ab8b7910c4c651dd00db553132171c04d80af5d5aebf1ef6a8a9fd53ccfa33b90ddc00aa3d4be6114419 + languageName: node + linkType: hard + +"graphql-ws@npm:5.12.1": + version: 5.12.1 + resolution: "graphql-ws@npm:5.12.1" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 10c0/17338de4783b76e01a41e73a740beb72f9bde46750867463e394679cecc557f2af4ba59af8196e14aed1711a9b7ce6cff0149abc4ff27ca92497b988d6ebbac3 + languageName: node + linkType: hard + +"graphql-yoga@npm:5.1.1": + version: 5.1.1 + resolution: "graphql-yoga@npm:5.1.1" + dependencies: + "@envelop/core": "npm:^5.0.0" + "@graphql-tools/executor": "npm:^1.0.0" + "@graphql-tools/schema": "npm:^10.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-yoga/logger": "npm:^2.0.0" + "@graphql-yoga/subscription": "npm:^5.0.0" + "@whatwg-node/fetch": "npm:^0.9.7" + "@whatwg-node/server": "npm:^0.9.1" + dset: "npm:^3.1.1" + lru-cache: "npm:^10.0.0" + tslib: "npm:^2.5.2" + peerDependencies: + graphql: ^15.2.0 || ^16.0.0 + checksum: 10c0/282b46c3539528c767b08351a7ddc3e2a171c5f8187ffaa70aaff144607da97a48fba7af3c4e43e97c9bd724ad867fa1861ab795be17e7d89f5f12f8cc56eb11 + languageName: node + linkType: hard + +"graphql@npm:16.8.1, graphql@npm:^16.0.0, graphql@npm:^16.8.1": + version: 16.8.1 + resolution: "graphql@npm:16.8.1" + checksum: 10c0/129c318156b466f440914de80dbf7bc67d17f776f2a088a40cb0da611d19a97c224b1c6d2b13cbcbc6e5776e45ed7468b8432f9c3536724e079b44f1a3d57a8a + languageName: node + linkType: hard + +"gzip-size@npm:^6.0.0": + version: 6.0.0 + resolution: "gzip-size@npm:6.0.0" + dependencies: + duplexer: "npm:^0.1.2" + checksum: 10c0/4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"has-value@npm:^0.3.1": + version: 0.3.1 + resolution: "has-value@npm:0.3.1" + dependencies: + get-value: "npm:^2.0.3" + has-values: "npm:^0.1.4" + isobject: "npm:^2.0.0" + checksum: 10c0/7a7c2e9d07bc9742c81806150adb154d149bc6155267248c459cd1ce2a64b0759980d26213260e4b7599c8a3754551179f155ded88d0533a0d2bc7bc29028432 + languageName: node + linkType: hard + +"has-value@npm:^1.0.0": + version: 1.0.0 + resolution: "has-value@npm:1.0.0" + dependencies: + get-value: "npm:^2.0.6" + has-values: "npm:^1.0.0" + isobject: "npm:^3.0.0" + checksum: 10c0/17cdccaf50f8aac80a109dba2e2ee5e800aec9a9d382ef9deab66c56b34269e4c9ac720276d5ffa722764304a1180ae436df077da0dd05548cfae0209708ba4d + languageName: node + linkType: hard + +"has-values@npm:^0.1.4": + version: 0.1.4 + resolution: "has-values@npm:0.1.4" + checksum: 10c0/a8f00ad862c20289798c35243d5bd0b0a97dd44b668c2204afe082e0265f2d0bf3b89fc8cc0ef01a52b49f10aa35cf85c336ee3a5f1cac96ed490f5e901cdbf2 + languageName: node + linkType: hard + +"has-values@npm:^1.0.0": + version: 1.0.0 + resolution: "has-values@npm:1.0.0" + dependencies: + is-number: "npm:^3.0.0" + kind-of: "npm:^4.0.0" + checksum: 10c0/a6f2a1cc6b2e43eacc68e62e71ad6890def7f4b13d2ef06b4ad3ee156c23e470e6df144b9b467701908e17633411f1075fdff0cab45fb66c5e0584d89b25f35e + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.6.0" + safe-buffer: "npm:^5.2.0" + checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + languageName: node + linkType: hard + +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1": + version: 2.0.1 + resolution: "hasown@npm:2.0.1" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/9e27e70e8e4204f4124c8f99950d1ba2b1f5174864fd39ff26da190f9ea6488c1b3927dcc64981c26d1f637a971783c9489d62c829d393ea509e6f1ba20370bb + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + languageName: node + linkType: hard + +"header-case@npm:^2.0.4": + version: 2.0.4 + resolution: "header-case@npm:2.0.4" + dependencies: + capital-case: "npm:^1.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb + languageName: node + linkType: hard + +"headers-polyfill@npm:3.2.5": + version: 3.2.5 + resolution: "headers-polyfill@npm:3.2.5" + checksum: 10c0/10202f4ebfaecd6aa31305f29664f876ac01d9174a3fb8fcc5a0df3eaf9c1767fb0d6cf6f961484f2bfd2101b6768090976f146bd88aeedd07af4e741cb2dcb7 + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: "npm:^2.0.1" + obuf: "npm:^1.0.0" + readable-stream: "npm:^2.0.1" + wbuf: "npm:^1.1.0" + checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: "npm:^2.0.0" + checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 + languageName: node + linkType: hard + +"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": + version: 2.4.0 + resolution: "html-entities@npm:2.4.0" + checksum: 10c0/42bbd5d91f451625d7e35aaed41c8cd110054c0d0970764cb58df467b3f27f20199e8cf7b4aebc8d4eeaf17a27c0d1fb165f2852db85de200995d0f009c9011d + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"html-minifier-terser@npm:^6.0.2": + version: 6.1.0 + resolution: "html-minifier-terser@npm:6.1.0" + dependencies: + camel-case: "npm:^4.1.2" + clean-css: "npm:^5.2.2" + commander: "npm:^8.3.0" + he: "npm:^1.2.0" + param-case: "npm:^3.0.4" + relateurl: "npm:^0.2.7" + terser: "npm:^5.10.0" + bin: + html-minifier-terser: cli.js + checksum: 10c0/1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a + languageName: node + linkType: hard + +"html-webpack-plugin@npm:5.5.4": + version: 5.5.4 + resolution: "html-webpack-plugin@npm:5.5.4" + dependencies: + "@types/html-minifier-terser": "npm:^6.0.0" + html-minifier-terser: "npm:^6.0.2" + lodash: "npm:^4.17.21" + pretty-error: "npm:^4.0.0" + tapable: "npm:^2.0.0" + peerDependencies: + webpack: ^5.20.0 + checksum: 10c0/fd7b9882a7b44b78711d3489fd571308372a915924c2e619ad8a08d9100a17ae8899a3d3bb1934c326d45bf942330a693206088ba80f292dd6574d9e33c67a43 + languageName: node + linkType: hard + +"htmlparser2@npm:^6.1.0": + version: 6.1.0 + resolution: "htmlparser2@npm:6.1.0" + dependencies: + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.0.0" + domutils: "npm:^2.5.2" + entities: "npm:^2.0.0" + checksum: 10c0/3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 + languageName: node + linkType: hard + +"htmlparser2@npm:^8.0.1": + version: 8.0.2 + resolution: "htmlparser2@npm:8.0.2" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + entities: "npm:^4.4.0" + checksum: 10c0/609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.3" + setprototypeof: "npm:1.1.0" + statuses: "npm:>= 1.4.0 < 2" + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 10c0/4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^6.0.0": + version: 6.1.1 + resolution: "http-proxy-agent@npm:6.1.1" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/c7f13487f22209e334d50923c5bbfc5abdeeec19d2adc6780172cbeecd1b95df1543f35842ce2a7149cab43c4ba460ac6ab2e05ecc5e36f399f2ff0a829686db + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:^2.0.3": + version: 2.0.6 + resolution: "http-proxy-middleware@npm:2.0.6" + dependencies: + "@types/http-proxy": "npm:^1.17.8" + http-proxy: "npm:^1.18.1" + is-glob: "npm:^4.0.1" + is-plain-obj: "npm:^3.0.0" + micromatch: "npm:^4.0.2" + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 10c0/25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: "npm:^4.0.0" + follow-redirects: "npm:^1.0.0" + requires-port: "npm:^1.0.0" + checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 + languageName: node + linkType: hard + +"https-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "https-browserify@npm:1.0.0" + checksum: 10c0/e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^6.0.0": + version: 6.2.1 + resolution: "https-proxy-agent@npm:6.2.1" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/18fb405545c54c0c5131f3c6bedecf36c73095dac368c234e5775e655a0fa176e091d9fd651c9b9e9daadf6dac415116de04f76d791642216b32cc32a8592ebc + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"humanize-string@npm:2.1.0": + version: 2.1.0 + resolution: "humanize-string@npm:2.1.0" + dependencies: + decamelize: "npm:^2.0.0" + checksum: 10c0/a0ed69264b5069137afb369b46e18e8dbeb67edc7fb2ad1de18554108943e2fc59155f898013fb7a2f03522879adad7c9a93f1c88428844bcbee006c98db8f0a + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"iferr@npm:^0.1.5": + version: 0.1.5 + resolution: "iferr@npm:0.1.5" + checksum: 10c0/e0669b1757d0501b43a158321945d1cc1fe56f28a972df2f88a5818f05c8853c7669ba5d6cfbbf9a1a312850699de6e528626df108d559005df7e15d16ee334c + languageName: node + linkType: hard + +"ignore-by-default@npm:^1.0.1": + version: 1.0.1 + resolution: "ignore-by-default@npm:1.0.1" + checksum: 10c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd + languageName: node + linkType: hard + +"immutable@npm:~3.7.6": + version: 3.7.6 + resolution: "immutable@npm:3.7.6" + checksum: 10c0/efe2bbb2620aa897afbb79545b9eda4dd3dc072e05ae7004895a7efb43187e4265612a88f8723f391eb1c87c46c52fd11e2d1968e42404450c63e49558d7ca4e + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"import-from@npm:4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 10c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.1.0 + resolution: "import-local@npm:3.1.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.3": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + languageName: node + linkType: hard + +"ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"inquirer@npm:^8.0.0, inquirer@npm:^8.2.0": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5, internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + languageName: node + linkType: hard + +"interpret@npm:^3.1.1": + version: 3.1.1 + resolution: "interpret@npm:3.1.1" + checksum: 10c0/6f3c4d0aa6ec1b43a8862375588a249e3c917739895cbe67fe12f0a76260ea632af51e8e2431b50fbcd0145356dc28ca147be08dbe6a523739fd55c0f91dc2a5 + languageName: node + linkType: hard + +"invariant@npm:^2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.0.1": + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 10c0/9aa43ff99771e3d14ab3683df3909b3b033fe81337646bc63780b00ec9bc51d4a696a047c0b261c05867c0a25086ab03f0ce32ea444a6b39e10fac1315d53cab + languageName: node + linkType: hard + +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: "npm:^1.0.0" + is-windows: "npm:^1.0.1" + checksum: 10c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^1.0.1": + version: 1.0.1 + resolution: "is-accessor-descriptor@npm:1.0.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/d034034074c5ffeb6c868e091083182279db1a956f49f8d1494cecaa0f8b99d706556ded2a9b20d9aa290549106eef8204d67d8572902e06dcb1add6db6b524d + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + languageName: node + linkType: hard + +"is-binary-path@npm:^1.0.0": + version: 1.0.1 + resolution: "is-binary-path@npm:1.0.1" + dependencies: + binary-extensions: "npm:^1.0.0" + checksum: 10c0/16e456fa3782eaf3d8e28d382b750507e3d54ff6694df8a1b2c6498da321e2ead311de9c42e653d8fb3213de72bac204b5f97e4a110cda8a72f17b1c1b4eb643 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + languageName: node + linkType: hard + +"is-buffer@npm:^1.1.5": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 + languageName: node + linkType: hard + +"is-data-descriptor@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-descriptor@npm:1.0.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/ad3acc372e3227f87eb8cdba112c343ca2a67f1885aecf64f02f901cb0858a1fc9488ad42135ab102e9d9e71a62b3594740790bb103a9ba5da830a131a89e3e8 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + languageName: node + linkType: hard + +"is-descriptor@npm:^0.1.0": + version: 0.1.7 + resolution: "is-descriptor@npm:0.1.7" + dependencies: + is-accessor-descriptor: "npm:^1.0.1" + is-data-descriptor: "npm:^1.0.1" + checksum: 10c0/f5960b9783f508aec570465288cb673d4b3cc4aae4e6de970c3afd9a8fc1351edcb85d78b2cce2ec5251893a423f73263cab3bb94cf365a8d71b5d510a116392 + languageName: node + linkType: hard + +"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": + version: 1.0.3 + resolution: "is-descriptor@npm:1.0.3" + dependencies: + is-accessor-descriptor: "npm:^1.0.1" + is-data-descriptor: "npm:^1.0.1" + checksum: 10c0/b4ee667ea787d3a0be4e58536087fd0587de2b0b6672fbfe288f5b8d831ac4b79fd987f31d6c2d4e5543a42c97a87428bc5215ce292a1a47070147793878226f + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 + languageName: node + linkType: hard + +"is-extendable@npm:^1.0.1": + version: 1.0.1 + resolution: "is-extendable@npm:1.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + checksum: 10c0/1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 10c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + +"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-glob@npm:^3.1.0": + version: 3.1.0 + resolution: "is-glob@npm:3.1.0" + dependencies: + is-extglob: "npm:^2.1.0" + checksum: 10c0/ba816a35dcf5285de924a8a4654df7b183a86381d73ea3bbf3df3cc61b3ba61fdddf90ee205709a2235b210ee600ee86e5e8600093cf291a662607fd032e2ff4 + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/c045e6a52dcc7c3857e2f8c850ded604cdc5269ff94625b03881cefc73bfc02f5099a1bc9bafa67793656711a40d4ab3e26e285a848e728506df20ead0ce8e2f + languageName: node + linkType: hard + +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": + version: 2.0.2 + resolution: "is-map@npm:2.0.2" + checksum: 10c0/119ff9137a37fd131a72fab3f4ab8c9d6a24b0a1ee26b4eff14dc625900d8675a97785eea5f4174265e2006ed076cc24e89f6e57ebd080a48338d914ec9168a5 + languageName: node + linkType: hard + +"is-nan@npm:^1.3.2": + version: 1.3.2 + resolution: "is-nan@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.2": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 10c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + languageName: node + linkType: hard + +"is-number@npm:^3.0.0": + version: 3.0.0 + resolution: "is-number@npm:3.0.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/e639c54640b7f029623df24d3d103901e322c0c25ea5bde97cd723c2d0d4c05857a8364ab5c58d963089dbed6bf1d0ffe975cb6aef917e2ad0ccbca653d31b4f + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 + languageName: node + linkType: hard + +"is-object@npm:~1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 10c0/9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + languageName: node + linkType: hard + +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + languageName: node + linkType: hard + +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: "npm:^1.0.0" + checksum: 10c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 + languageName: node + linkType: hard + +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": + version: 2.0.2 + resolution: "is-set@npm:2.0.2" + checksum: 10c0/5f8bd1880df8c0004ce694e315e6e1e47a3452014be792880bb274a3b2cdb952fdb60789636ca6e084c7947ca8b7ae03ccaf54c93a7fcfed228af810559e5432 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + languageName: node + linkType: hard + +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: "npm:^0.1.2" + checksum: 10c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"is-upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/2236f416484a2643d55a07cc95443cecf96cbc5fb0de7f24c506a8bc5cc4c4de885ab56c5ec946eadd95b3b7960bff7ed51cc88511fa8e8a9d92f2f8969622d9 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 10c0/9c9fec9efa7bf5030a4a927f33fff2a6976b93646259f92b517d3646c073cc5b98283a162ce75c412b060a46de07032444b530f0a4c9b6e012ef8f1741c3a987 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.1" + checksum: 10c0/ef5136bd446ae4603229b897f73efd0720c6ab3ec6cc05c8d5c4b51aa9f95164713c4cad0a22ff1fedf04865ff86cae4648bc1d5eead4b6388e1150525af1cc1 + languageName: node + linkType: hard + +"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + languageName: node + linkType: hard + +"is-wsl@npm:^1.1.0": + version: 1.1.0 + resolution: "is-wsl@npm:1.1.0" + checksum: 10c0/7ad0012f21092d6f586c7faad84755a8ef0da9b9ec295e4dc82313cce4e1a93a3da3c217265016461f9b141503fe55fa6eb1fd5457d3f05e8d1bdbb48e50c13a + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + languageName: node + linkType: hard + +"isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isobject@npm:^2.0.0": + version: 2.1.0 + resolution: "isobject@npm:2.1.0" + dependencies: + isarray: "npm:1.0.0" + checksum: 10c0/c4cafec73b3b2ee11be75dff8dafd283b5728235ac099b07d7873d5182553a707768e208327bbc12931b9422d8822280bf88d894a0024ff5857b3efefb480e7b + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + languageName: node + linkType: hard + +"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: 10c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.2 + resolution: "istanbul-lib-instrument@npm:6.0.2" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/405c6ac037bf8c7ee7495980b0cd5544b2c53078c10534d0c9ceeb92a9ea7dcf8510f58ccfce31336458a8fa6ccef27b570bbb602abaa8c1650f5496a807477c + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:29.7.0": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/jsdom": "npm:^20.0.0" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jsdom: "npm:^20.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.0.0, jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watch-typeahead@npm:2.2.2": + version: 2.2.2 + resolution: "jest-watch-typeahead@npm:2.2.2" + dependencies: + ansi-escapes: "npm:^6.0.0" + chalk: "npm:^5.2.0" + jest-regex-util: "npm:^29.0.0" + jest-watcher: "npm:^29.0.0" + slash: "npm:^5.0.0" + string-length: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + peerDependencies: + jest: ^27.0.0 || ^28.0.0 || ^29.0.0 + checksum: 10c0/5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + languageName: node + linkType: hard + +"jest-worker@npm:^29.4.3, jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + +"jiti@npm:1.17.1": + version: 1.17.1 + resolution: "jiti@npm:1.17.1" + bin: + jiti: bin/jiti.js + checksum: 10c0/1241a0dec1493867bfc25bb52ed37bbede9bc37f64ef6414dbef0f0059186734633cf25329bdd583237001a094f9c90017ee245ce96a053d0ce95e34df18a17b + languageName: node + linkType: hard + +"jiti@npm:^1.17.1": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" + bin: + jiti: bin/jiti.js + checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f + languageName: node + linkType: hard + +"jose@npm:^4.11.4": + version: 4.15.4 + resolution: "jose@npm:4.15.4" + checksum: 10c0/ce8b29f84d6172a566b12b599dafa82f3bef0f16278bb76d562490ac1516fcc14017b05a39d20ffad25ed504f4996d4af4c9d3e0273d95b2d5559bf6d1112bc0 + languageName: node + linkType: hard + +"js-levenshtein@npm:^1.1.6": + version: 1.1.6 + resolution: "js-levenshtein@npm:1.1.6" + checksum: 10c0/14045735325ea1fd87f434a74b11d8a14380f090f154747e613529c7cff68b5ee607f5230fa40665d5fb6125a3791f4c223f73b9feca754f989b059f5c05864f + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jscodeshift@npm:0.15.0": + version: 0.15.0 + resolution: "jscodeshift@npm:0.15.0" + dependencies: + "@babel/core": "npm:^7.13.16" + "@babel/parser": "npm:^7.13.16" + "@babel/plugin-proposal-class-properties": "npm:^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8" + "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" + "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8" + "@babel/preset-flow": "npm:^7.13.13" + "@babel/preset-typescript": "npm:^7.13.0" + "@babel/register": "npm:^7.13.16" + babel-core: "npm:^7.0.0-bridge.0" + chalk: "npm:^4.1.2" + flow-parser: "npm:0.*" + graceful-fs: "npm:^4.2.4" + micromatch: "npm:^4.0.4" + neo-async: "npm:^2.5.0" + node-dir: "npm:^0.1.17" + recast: "npm:^0.23.1" + temp: "npm:^0.8.4" + write-file-atomic: "npm:^2.3.0" + peerDependencies: + "@babel/preset-env": ^7.1.6 + peerDependenciesMeta: + "@babel/preset-env": + optional: true + bin: + jscodeshift: bin/jscodeshift.js + checksum: 10c0/bfd2de159fe9aa30993b7d1d89db21c00c3a644d096adfcf8bce8c6be4ed02b357a919e8e1470ffd9dd43a3b1bc80bb33d53b30890354ee9c5d677c87b80f9a2 + languageName: node + linkType: hard + +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: "npm:^2.0.6" + acorn: "npm:^8.8.1" + acorn-globals: "npm:^7.0.0" + cssom: "npm:^0.5.0" + cssstyle: "npm:^2.3.0" + data-urls: "npm:^3.0.2" + decimal.js: "npm:^10.4.2" + domexception: "npm:^4.0.0" + escodegen: "npm:^2.0.0" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^3.0.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.1" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.2" + parse5: "npm:^7.1.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.2" + w3c-xmlserializer: "npm:^4.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^2.0.0" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + ws: "npm:^8.11.0" + xml-name-validator: "npm:^4.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.0": + version: 3.0.0 + resolution: "json-buffer@npm:3.0.0" + checksum: 10c0/118c060d84430a8ad8376d0c60250830f350a6381bd56541a1ef257ce7ba82d109d1f71a4c4e92e0be0e7ab7da568fad8f7bf02905910a76e8e0aa338621b944 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.2": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 10c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-ref-resolver@npm:^1.0.1": + version: 1.0.1 + resolution: "json-schema-ref-resolver@npm:1.0.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + checksum: 10c0/aa89d88108c0109ae35b913c89c132fb50c00f3b99fc8a8309b524b9e3a6a77414f19a6a35a1253871462984cbabc74279ebbd9bf103c6629fb7b37c9fb59bcf + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stable-stringify@npm:^1.0.1": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.5" + isarray: "npm:^2.0.5" + jsonify: "npm:^0.0.1" + object-keys: "npm:^1.1.1" + checksum: 10c0/3801e3eeccbd030afb970f54bea690a079cfea7d9ed206a1b17ca9367f4b7772c764bf77a48f03e56b50e5f7ee7d11c52339fe20d8d7ccead003e4ca69e4cfde + languageName: node + linkType: hard + +"json-to-pretty-yaml@npm:^1.2.2": + version: 1.2.2 + resolution: "json-to-pretty-yaml@npm:1.2.2" + dependencies: + remedial: "npm:^1.0.7" + remove-trailing-spaces: "npm:^1.0.6" + checksum: 10c0/d28891860a7ae034873ac8ec5f69f5493106afed9a86295f1642a40b27a48df717c63966439a1dec5b8a4b30e99b86cd1b4ca7d979bb8048ffd7f7c67bfd88a3 + languageName: node + linkType: hard + +"json5@npm:^0.5.1": + version: 0.5.1 + resolution: "json5@npm:0.5.1" + bin: + json5: lib/cli.js + checksum: 10c0/aca0ab7ccf1883d3fc2ecc16219bc389716a773f774552817deaadb549acc0bb502e317a81946fc0a48f9eb6e0822cf1dc5a097009203f2c94de84c8db02a1f3 + languageName: node + linkType: hard + +"json5@npm:^1.0.1, json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.1.1, json5@npm:^2.1.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + languageName: node + linkType: hard + +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 10c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 + languageName: node + linkType: hard + +"jsonwebtoken@npm:9.0.2": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" + dependencies: + jws: "npm:^3.2.2" + lodash.includes: "npm:^4.3.0" + lodash.isboolean: "npm:^3.0.3" + lodash.isinteger: "npm:^4.0.4" + lodash.isnumber: "npm:^3.0.3" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.once: "npm:^4.0.0" + ms: "npm:^2.1.1" + semver: "npm:^7.5.4" + checksum: 10c0/d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"jwa@npm:^1.4.1": + version: 1.4.1 + resolution: "jwa@npm:1.4.1" + dependencies: + buffer-equal-constant-time: "npm:1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 + languageName: node + linkType: hard + +"jws@npm:^3.2.2": + version: 3.2.2 + resolution: "jws@npm:3.2.2" + dependencies: + jwa: "npm:^1.4.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff + languageName: node + linkType: hard + +"keyv@npm:^3.0.0": + version: 3.1.0 + resolution: "keyv@npm:3.1.0" + dependencies: + json-buffer: "npm:3.0.0" + checksum: 10c0/6ad784361b4c0213333a8c5bc0bcc59cf46cb7cbbe21fb2f1539ffcc8fe18b8f1562ff913b40552278fdea5f152a15996dfa61ce24ce1a22222560c650be4a1b + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"kill-port@npm:1.6.1": + version: 1.6.1 + resolution: "kill-port@npm:1.6.1" + dependencies: + get-them-args: "npm:1.3.2" + shell-exec: "npm:1.0.2" + bin: + kill-port: cli.js + checksum: 10c0/f9d51a43f8349f162f4f004bd6e68e54d615f9a8f994c780b09771962becb4458cd7ba3a043948ecb18405a7e0d9c31d7264924d0b7f6e24a6f2a01cc474de21 + languageName: node + linkType: hard + +"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": + version: 3.2.2 + resolution: "kind-of@npm:3.2.2" + dependencies: + is-buffer: "npm:^1.1.5" + checksum: 10c0/7e34bc29d4b02c997f92f080de34ebb92033a96736bbb0bb2410e033a7e5ae6571f1fa37b2d7710018f95361473b816c604234197f4f203f9cf149d8ef1574d9 + languageName: node + linkType: hard + +"kind-of@npm:^4.0.0": + version: 4.0.0 + resolution: "kind-of@npm:4.0.0" + dependencies: + is-buffer: "npm:^1.1.5" + checksum: 10c0/d6c44c75ee36898142dfc7106afbd50593216c37f96acb81a7ab33ca1a6938ce97d5692b8fc8fccd035f83811a9d97749d68771116441a48eedd0b68e2973165 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.22 + resolution: "language-subtag-registry@npm:0.3.22" + checksum: 10c0/d1e09971260a7cd3b9fdeb190d33af0b6e99c8697013537d9aaa15f7856d9d83aee128ba8078e219df0a7cf4b8dd18d1a0c188f6543b500d92a2689d2d114b70 + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + +"latest-version@npm:5.1.0": + version: 5.1.0 + resolution: "latest-version@npm:5.1.0" + dependencies: + package-json: "npm:^6.3.0" + checksum: 10c0/6219631d8651467c54c58ef1b5d5c5c53e146f5ae2b0ecbb78b202da3eaad55b05b043db2d2d6f1d4230ee071b2ae8c2f85089e01377e4338bad97fa76a963b7 + languageName: node + linkType: hard + +"launch-editor@npm:^2.6.0": + version: 2.6.1 + resolution: "launch-editor@npm:2.6.1" + dependencies: + picocolors: "npm:^1.0.0" + shell-quote: "npm:^1.8.1" + checksum: 10c0/82d0bd9a44e7a972157719e63dac1b8196db6ec7066c1ec57a495f6c3d6e734f3c4da89549e7b33eb3b0356668ad02a9e7782b6733f5ebd7a61b7c5f635a3ee9 + languageName: node + linkType: hard + +"lazy-get-decorator@npm:2.2.1": + version: 2.2.1 + resolution: "lazy-get-decorator@npm:2.2.1" + checksum: 10c0/58d6e3d82293a70c6d14d5648ff6d9acd8d3d67ab0a3205b5e6f24aef55094737a71ee3d4ea7950e57be3eadaee91faee960ee3fa14daede119ea93ebf625396 + languageName: node + linkType: hard + +"lazystream@npm:^1.0.0": + version: 1.0.1 + resolution: "lazystream@npm:1.0.1" + dependencies: + readable-stream: "npm:^2.0.5" + checksum: 10c0/ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"light-my-request@npm:^5.11.0": + version: 5.11.0 + resolution: "light-my-request@npm:5.11.0" + dependencies: + cookie: "npm:^0.5.0" + process-warning: "npm:^2.0.0" + set-cookie-parser: "npm:^2.4.1" + checksum: 10c0/ad5512b5216f2095409b54daf901f714f76004e4c8acdaa1ec3aa2ffde7ddf11ac249f02a87344d766bbad59eb2732acfe3ee5bb7e8ad5fc71057ef0d4d3be25 + languageName: node + linkType: hard + +"lilconfig@npm:^3.0.0": + version: 3.1.1 + resolution: "lilconfig@npm:3.1.1" + checksum: 10c0/311b559794546894e3fe176663427326026c1c644145be9e8041c58e268aa9328799b8dfe7e4dd8c6a4ae305feae95a1c9e007db3569f35b42b6e1bc8274754c + languageName: node + linkType: hard + +"line-column@npm:1.0.2": + version: 1.0.2 + resolution: "line-column@npm:1.0.2" + dependencies: + isarray: "npm:^1.0.0" + isobject: "npm:^2.0.0" + checksum: 10c0/75aa918a9791362a3369c7222689350dc6df5b040314525ba79c3682f1386e13a3ceddd6b2584b8cb5c3ab3a5b3c50c940a182772dbb6361303bf6ef65fc2d64 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"listr2@npm:6.6.1": + version: 6.6.1 + resolution: "listr2@npm:6.6.1" + dependencies: + cli-truncate: "npm:^3.1.0" + colorette: "npm:^2.0.20" + eventemitter3: "npm:^5.0.1" + log-update: "npm:^5.0.1" + rfdc: "npm:^1.3.0" + wrap-ansi: "npm:^8.1.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/2abfcd4346b8208e8d406cfe7a058cd10e3238f60de1ee53fa108a507b45b853ceb87e0d1d4ff229bbf6dd6e896262352e0c7a8895b8511cd55fe94304d3921e + languageName: node + linkType: hard + +"listr2@npm:^4.0.5": + version: 4.0.5 + resolution: "listr2@npm:4.0.5" + dependencies: + cli-truncate: "npm:^2.1.0" + colorette: "npm:^2.0.16" + log-update: "npm:^4.0.0" + p-map: "npm:^4.0.0" + rfdc: "npm:^1.3.0" + rxjs: "npm:^7.5.5" + through: "npm:^2.3.8" + wrap-ansi: "npm:^7.0.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/0e64dc5e66fbd4361f6b35c49489ed842a1d7de30cf2b5c06bf4569669449288698b8ea93f7842aaf3c510963a1e554bca31376b9054d1521445d1ce4c917ea1 + languageName: node + linkType: hard + +"loader-runner@npm:^2.4.0": + version: 2.4.0 + resolution: "loader-runner@npm:2.4.0" + checksum: 10c0/1f723bd8318453c2d073d7befbf891ba6d2a02f22622688bf7d22e7ba527a0f9476c7fdfedc6bfa2b55c0389d9f406f3a5239ed1b33c9088d77cfed085086a1e + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + languageName: node + linkType: hard + +"loader-utils@npm:^1.2.3": + version: 1.4.2 + resolution: "loader-utils@npm:1.4.2" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^1.0.1" + checksum: 10c0/2b726088b5526f7605615e3e28043ae9bbd2453f4a85898e1151f3c39dbf7a2b65d09f3996bc588d92ac7e717ded529d3e1ea3ea42c433393be84a58234a2f53 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^2.1.2" + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + languageName: node + linkType: hard + +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: "npm:^6.0.0" + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + +"lodash-decorators@npm:6.0.1": + version: 6.0.1 + resolution: "lodash-decorators@npm:6.0.1" + dependencies: + tslib: "npm:^1.9.2" + peerDependencies: + lodash: 4.x + checksum: 10c0/02881ae6e595245badbc29f4b4bc57f6fbab45ed5d7117c269b9a3c5efa57726670028074c989bd8b0a587211fa6d9447ac6124fb9e887c0571b307e1746bac8 + languageName: node + linkType: hard + +"lodash.chunk@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.chunk@npm:4.2.0" + checksum: 10c0/f9f99969561ad2f62af1f9a96c5bd0af776f000292b0d8db3126c28eb3b32e210d7c31b49c18d0d7901869bd769057046dc134b60cfa0c2c4ce017823a26bb23 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.defaults@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.defaults@npm:4.2.0" + checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 + languageName: node + linkType: hard + +"lodash.escape@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.escape@npm:4.0.1" + checksum: 10c0/90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b + languageName: node + linkType: hard + +"lodash.flatten@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.flatten@npm:4.4.0" + checksum: 10c0/97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a + languageName: node + linkType: hard + +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b + languageName: node + linkType: hard + +"lodash.invokemap@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.invokemap@npm:4.6.0" + checksum: 10c0/2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 + languageName: node + linkType: hard + +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 + languageName: node + linkType: hard + +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 + languageName: node + linkType: hard + +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 + languageName: node + linkType: hard + +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.mergewith@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: 10c0/4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5 + languageName: node + linkType: hard + +"lodash.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 + languageName: node + linkType: hard + +"lodash.pullall@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.pullall@npm:4.2.0" + checksum: 10c0/b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c + languageName: node + linkType: hard + +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: 10c0/fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 + languageName: node + linkType: hard + +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e + languageName: node + linkType: hard + +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 10c0/c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 + languageName: node + linkType: hard + +"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: "npm:^4.3.0" + cli-cursor: "npm:^3.1.0" + slice-ansi: "npm:^4.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + languageName: node + linkType: hard + +"log-update@npm:^5.0.1": + version: 5.0.1 + resolution: "log-update@npm:5.0.1" + dependencies: + ansi-escapes: "npm:^5.0.0" + cli-cursor: "npm:^4.0.0" + slice-ansi: "npm:^5.0.0" + strip-ansi: "npm:^7.0.1" + wrap-ansi: "npm:^8.0.1" + checksum: 10c0/1050ea2027e80f32e132aace909987cb00c2719368c78b82ffca681a5b3f4020eeb5f4b4e310c47c35c6c36aff258c1d1bc51485ac44d6fdac9eb0a4275c539f + languageName: node + linkType: hard + +"logical-not@npm:^1.0.1": + version: 1.0.9 + resolution: "logical-not@npm:1.0.9" + checksum: 10c0/5428321fc786efd1a74822864f20ada974160e70277825ab191137c7e7447a3951a20fffdfec5f2333de4fc8ea5dd2b3383f7227c4ab258c8c33396af08545d1 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"lower-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/22253389fa0693ec1ba09b9394be3a8228304bf21d074703db2eef97c16cda9c66462d88f9b91d4ad0186493d23cad99c63d38ebc13f9a808bc83aad539ff404 + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + languageName: node + linkType: hard + +"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 10c0/56776a8e1ef1aca98ecf6c19b30352ae1cf257b65b8ac858b7d8a0e8b348774d12a9b41aa7f59bfea51bff44bc7a198ab63ba4406bfba60dba008799618bef66 + languageName: node + linkType: hard + +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: 10c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 + languageName: node + linkType: hard + +"lru-cache@npm:7.18.3": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b + languageName: node + linkType: hard + +"make-dir@npm:^1.0.0": + version: 1.3.0 + resolution: "make-dir@npm:1.3.0" + dependencies: + pify: "npm:^3.0.0" + checksum: 10c0/5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 + languageName: node + linkType: hard + +"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: "npm:^4.0.1" + semver: "npm:^5.6.0" + checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + languageName: node + linkType: hard + +"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: "npm:^6.0.0" + checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.0 + resolution: "make-fetch-happen@npm:13.0.0" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"map-cache@npm:^0.2.0, map-cache@npm:^0.2.2": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 10c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 + languageName: node + linkType: hard + +"map-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "map-visit@npm:1.0.0" + dependencies: + object-visit: "npm:^1.0.0" + checksum: 10c0/fb3475e5311939a6147e339999113db607adc11c7c3cd3103e5e9dbf502898416ecba6b1c7c649c6d4d12941de00cee58b939756bdf20a9efe7d4fa5a5738b73 + languageName: node + linkType: hard + +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + +"mdn-data@npm:2.0.28": + version: 2.0.28 + resolution: "mdn-data@npm:2.0.28" + checksum: 10c0/20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b + languageName: node + linkType: hard + +"mdn-data@npm:2.0.30": + version: 2.0.30 + resolution: "mdn-data@npm:2.0.30" + checksum: 10c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + languageName: node + linkType: hard + +"memfs@npm:^3.4.3": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" + dependencies: + fs-monkey: "npm:^1.0.4" + checksum: 10c0/038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 + languageName: node + linkType: hard + +"memory-fs@npm:^0.4.1": + version: 0.4.1 + resolution: "memory-fs@npm:0.4.1" + dependencies: + errno: "npm:^0.1.3" + readable-stream: "npm:^2.0.1" + checksum: 10c0/f114c44ad8285103cb0e71420cf5bb628d3eb6cbd918197f5951590ff56ba2072f4a97924949c170320cdf180d2da4e8d16a0edd92ba0ca2d2de51dc932841e2 + languageName: node + linkType: hard + +"memory-fs@npm:^0.5.0": + version: 0.5.0 + resolution: "memory-fs@npm:0.5.0" + dependencies: + errno: "npm:^0.1.3" + readable-stream: "npm:^2.0.1" + checksum: 10c0/2737a27b14a9e8b8cd757be2ad99e8cc504b78a78aba9d6aa18ff1ef528e2223a433413d2df6ab5332997a5a8ccf075e6c6e90e31ab732a55455ca620e4a720b + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec + languageName: node + linkType: hard + +"merge-descriptors@npm:~1.0.0": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"meros@npm:^1.2.1": + version: 1.3.0 + resolution: "meros@npm:1.3.0" + peerDependencies: + "@types/node": ">=13" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 + languageName: node + linkType: hard + +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + languageName: node + linkType: hard + +"micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": + version: 3.1.10 + resolution: "micromatch@npm:3.1.10" + dependencies: + arr-diff: "npm:^4.0.0" + array-unique: "npm:^0.3.2" + braces: "npm:^2.3.1" + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + extglob: "npm:^2.0.4" + fragment-cache: "npm:^0.2.1" + kind-of: "npm:^6.0.2" + nanomatch: "npm:^1.2.9" + object.pick: "npm:^1.3.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.2" + checksum: 10c0/531a32e7ac92bef60657820202be71b63d0f945c08a69cc4c239c0b19372b751483d464a850a2e3a5ff6cc9060641e43d44c303af104c1a27493d137d8af017f + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + languageName: node + linkType: hard + +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: "npm:^4.0.0" + brorand: "npm:^1.0.1" + bin: + miller-rabin: bin/miller-rabin + checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + languageName: node + linkType: hard + +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 10c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + languageName: node + linkType: hard + +"mini-css-extract-plugin@npm:2.7.6": + version: 2.7.6 + resolution: "mini-css-extract-plugin@npm:2.7.6" + dependencies: + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + +"minimatch@npm:4.2.3": + version: 4.2.3 + resolution: "minimatch@npm:4.2.3" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/ce19d52a4692037aa7768bfcdca0cef3eb3975ab8e3aaf32ab0a3d23863fca94ba7555d1ca67893320076efe8376e61bf7cc6fa82161a3c1127f0d0b9b06b666 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^7.4.3": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mississippi@npm:^3.0.0": + version: 3.0.0 + resolution: "mississippi@npm:3.0.0" + dependencies: + concat-stream: "npm:^1.5.0" + duplexify: "npm:^3.4.2" + end-of-stream: "npm:^1.1.0" + flush-write-stream: "npm:^1.0.0" + from2: "npm:^2.1.0" + parallel-transform: "npm:^1.1.0" + pump: "npm:^3.0.0" + pumpify: "npm:^1.3.3" + stream-each: "npm:^1.1.0" + through2: "npm:^2.0.0" + checksum: 10c0/97424a331ce1b9f789a0d3fa47d725dad9adfe5e0ead8bc458ba9fb51c4d2630df6b0966ca9dcbb4c90db48737d58126cbf0e3c170697bf41c265606efa91103 + languageName: node + linkType: hard + +"mixin-deep@npm:^1.2.0": + version: 1.3.2 + resolution: "mixin-deep@npm:1.3.2" + dependencies: + for-in: "npm:^1.0.2" + is-extendable: "npm:^1.0.1" + checksum: 10c0/cb39ffb73c377222391af788b4c83d1a6cecb2d9fceb7015384f8deb46e151a9b030c21ef59a79cb524d4557e3f74c7248ab948a62a6e7e296b42644863d183b + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.6": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: "npm:^1.2.6" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mkdirp@npm:^2.1.6": + version: 2.1.6 + resolution: "mkdirp@npm:2.1.6" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/96f551c651dd8f5f9435d53df1a7b9bfc553be769ee6da5192c37c1f303a376ef1c6996f96913d4a8d357060451d4526a346031d1919f92c58806a5fa3cd8dfe + languageName: node + linkType: hard + +"module-not-found-error@npm:^1.0.1": + version: 1.0.1 + resolution: "module-not-found-error@npm:1.0.1" + checksum: 10c0/e57250016b320ef9d0e0037fdb63fb279ca93100a0cee3ef6e90139cbec734215be4a70857dfc0d62ee353d9f8126d2882aa0a80dba49b69292901263a21ea69 + languageName: node + linkType: hard + +"move-concurrently@npm:^1.0.1": + version: 1.0.1 + resolution: "move-concurrently@npm:1.0.1" + dependencies: + aproba: "npm:^1.1.1" + copy-concurrently: "npm:^1.0.0" + fs-write-stream-atomic: "npm:^1.0.8" + mkdirp: "npm:^0.5.1" + rimraf: "npm:^2.5.4" + run-queue: "npm:^1.0.3" + checksum: 10c0/0fe81acf3bbbc322013c2f4ee4a48cf8d180a7d925fb9284c0f1f444e862d7eb0421ee074b68d35357a12f0d5e94a322049dc9da480672331b5b8895743eb66a + languageName: node + linkType: hard + +"mrmime@npm:^2.0.0": + version: 2.0.0 + resolution: "mrmime@npm:2.0.0" + checksum: 10c0/312b35ed288986aec90955410b21ed7427fd1e4ee318cb5fc18765c8d029eeded9444faa46589e5b1ed6b35fb2054a802ac8dcb917ddf6b3e189cb3bf11a965c + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:2.1.3, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"msw@npm:1.3.2": + version: 1.3.2 + resolution: "msw@npm:1.3.2" + dependencies: + "@mswjs/cookies": "npm:^0.2.2" + "@mswjs/interceptors": "npm:^0.17.10" + "@open-draft/until": "npm:^1.0.3" + "@types/cookie": "npm:^0.4.1" + "@types/js-levenshtein": "npm:^1.1.1" + chalk: "npm:^4.1.1" + chokidar: "npm:^3.4.2" + cookie: "npm:^0.4.2" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:3.2.5" + inquirer: "npm:^8.2.0" + is-node-process: "npm:^1.2.0" + js-levenshtein: "npm:^1.1.6" + node-fetch: "npm:^2.6.7" + outvariant: "npm:^1.4.0" + path-to-regexp: "npm:^6.2.0" + strict-event-emitter: "npm:^0.4.3" + type-fest: "npm:^2.19.0" + yargs: "npm:^17.3.1" + peerDependencies: + typescript: ">= 4.4.x <= 5.2.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 10c0/c644d8e80b12b15c7b366aa6e0b39442f3ffd3b94824171e562066d8535c720fd824d84986d738a427720e59228660c11991bf724e4dd9face00b0b0f2af8f0d + languageName: node + linkType: hard + +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: "npm:^5.2.2" + thunky: "npm:^1.0.2" + bin: + multicast-dns: cli.js + checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 + languageName: node + linkType: hard + +"multimatch@npm:^4.0.0": + version: 4.0.0 + resolution: "multimatch@npm:4.0.0" + dependencies: + "@types/minimatch": "npm:^3.0.3" + array-differ: "npm:^3.0.0" + array-union: "npm:^2.1.0" + arrify: "npm:^2.0.1" + minimatch: "npm:^3.0.4" + checksum: 10c0/08e6b71ea2eee2feba17bb4159d247b78d26f9a9b556abddc136c05baa5eba9d80717986e494972284947e9c0e26a19eba3fe20851463fa3dbb770e289f7a0b8 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + +"nan@npm:^2.12.1": + version: 2.18.0 + resolution: "nan@npm:2.18.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/9209d80134fdb98c0afe35c1372d2b930a0a8d3c52706cb5e4257a27e9845c375f7a8daedadadec8d6403ca2eebb3b37d362ff5d1ec03249462abf65fef2a148 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"nanomatch@npm:^1.2.9": + version: 1.2.13 + resolution: "nanomatch@npm:1.2.13" + dependencies: + arr-diff: "npm:^4.0.0" + array-unique: "npm:^0.3.2" + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + fragment-cache: "npm:^0.2.1" + is-windows: "npm:^1.0.2" + kind-of: "npm:^6.0.2" + object.pick: "npm:^1.3.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/0f5cefa755ca2e20c86332821995effb24acb79551ddaf51c1b9112628cad234a0d8fd9ac6aa56ad1f8bfad6ff6ae86e851acb960943249d9fa44b091479953a + languageName: node + linkType: hard + +"natural-compare-lite@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"neo-async@npm:^2.5.0, neo-async@npm:^2.6.1, neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: "npm:^2.0.2" + tslib: "npm:^2.0.3" + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + languageName: node + linkType: hard + +"node-addon-api@npm:^7.0.0": + version: 7.1.0 + resolution: "node-addon-api@npm:7.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/2e096ab079e3c46d33b0e252386e9c239c352f7cc6d75363d9a3c00bdff34c1a5da170da861917512843f213c32d024ced9dc9552b968029786480d18727ec66 + languageName: node + linkType: hard + +"node-dir@npm:^0.1.17": + version: 0.1.17 + resolution: "node-dir@npm:0.1.17" + dependencies: + minimatch: "npm:^3.0.2" + checksum: 10c0/16222e871708c405079ff8122d4a7e1d522c5b90fc8f12b3112140af871cfc70128c376e845dcd0044c625db0d2efebd2d852414599d240564db61d53402b4c1 + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-forge@npm:^1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-libs-browser@npm:^2.2.1": + version: 2.2.1 + resolution: "node-libs-browser@npm:2.2.1" + dependencies: + assert: "npm:^1.1.1" + browserify-zlib: "npm:^0.2.0" + buffer: "npm:^4.3.0" + console-browserify: "npm:^1.1.0" + constants-browserify: "npm:^1.0.0" + crypto-browserify: "npm:^3.11.0" + domain-browser: "npm:^1.1.1" + events: "npm:^3.0.0" + https-browserify: "npm:^1.0.0" + os-browserify: "npm:^0.3.0" + path-browserify: "npm:0.0.1" + process: "npm:^0.11.10" + punycode: "npm:^1.2.4" + querystring-es3: "npm:^0.2.0" + readable-stream: "npm:^2.3.3" + stream-browserify: "npm:^2.0.1" + stream-http: "npm:^2.7.2" + string_decoder: "npm:^1.0.0" + timers-browserify: "npm:^2.0.4" + tty-browserify: "npm:0.0.0" + url: "npm:^0.11.0" + util: "npm:^0.11.0" + vm-browserify: "npm:^1.0.1" + checksum: 10c0/0e05321a6396408903ed642231d2bca7dd96492d074c7af161ba06a63c95378bd3de50b4105eccbbc02d93ba3da69f0ff5e624bc2a8c92ca462ceb6a403e7986 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 + languageName: node + linkType: hard + +"nodemon@npm:3.0.2": + version: 3.0.2 + resolution: "nodemon@npm:3.0.2" + dependencies: + chokidar: "npm:^3.5.2" + debug: "npm:^4" + ignore-by-default: "npm:^1.0.1" + minimatch: "npm:^3.1.2" + pstree.remy: "npm:^1.1.8" + semver: "npm:^7.5.3" + simple-update-notifier: "npm:^2.0.0" + supports-color: "npm:^5.5.0" + touch: "npm:^3.1.0" + undefsafe: "npm:^2.0.5" + bin: + nodemon: bin/nodemon.js + checksum: 10c0/65837603fa790d723f8d59e1f098342ed5a5517c3a38ea3b52ca3d532ed21924ecd43fbaceadb458472ae0a8ae6b8395bda22ccd062709ad50c5c4537a625c9d + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + languageName: node + linkType: hard + +"nopt@npm:~1.0.10": + version: 1.0.10 + resolution: "nopt@npm:1.0.10" + dependencies: + abbrev: "npm:1" + bin: + nopt: ./bin/nopt.js + checksum: 10c0/ddfbd892116a125fd68849ef564dd5b1f0a5ba0dbbf18782e9499e2efad8f4d3790635b47c6b5d3f7e014069e7b3ce5b8112687e9ae093fcd2678188c866fe28 + languageName: node + linkType: hard + +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: "npm:^1.0.1" + checksum: 10c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"normalize-url@npm:^4.1.0": + version: 4.5.1 + resolution: "normalize-url@npm:4.5.1" + checksum: 10c0/6362e9274fdcc310f8b17e20de29754c94e1820d864114f03d3bfd6286a0028fc51705fb3fd4e475013357b5cd7421fc17f3aba93f2289056779a9bb23bccf59 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" + dependencies: + boolbase: "npm:^1.0.0" + checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 + languageName: node + linkType: hard + +"null-loader@npm:4.0.1": + version: 4.0.1 + resolution: "null-loader@npm:4.0.1" + dependencies: + loader-utils: "npm:^2.0.0" + schema-utils: "npm:^3.0.0" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10c0/fe9a74a928c9ddc1eab7be0e4322516439562d6efd6feeb0f7c61777d4b79a6a8e5a6bc8133deb59408f3f423bdf84c154a88168154a583154e9e33d544b4d42 + languageName: node + linkType: hard + +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 10c0/44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db + languageName: node + linkType: hard + +"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-copy@npm:^0.1.0": + version: 0.1.0 + resolution: "object-copy@npm:0.1.0" + dependencies: + copy-descriptor: "npm:^0.1.0" + define-property: "npm:^0.2.5" + kind-of: "npm:^3.0.3" + checksum: 10c0/79314b05e9d626159a04f1d913f4c4aba9eae8848511cf5f4c8e3b04bb3cc313b65f60357f86462c959a14c2d58380fedf89b6b32ecec237c452a5ef3900a293 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.5 + resolution: "object-is@npm:1.1.5" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + checksum: 10c0/8c263fb03fc28f1ffb54b44b9147235c5e233dc1ca23768e7d2569740b5d860154d7cc29a30220fe28ed6d8008e2422aefdebfe987c103e1c5d190cf02d9d886 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object-visit@npm:^1.0.0": + version: 1.0.1 + resolution: "object-visit@npm:1.0.1" + dependencies: + isobject: "npm:^3.0.0" + checksum: 10c0/086b475bda24abd2318d2b187c3e928959b89f5cb5883d6fe5a42d03719b61fc18e765f658de9ac8730e67ba9ff26d61e73d991215948ff9ecefe771e0071029 + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.6, object.entries@npm:^1.1.7": + version: 1.1.7 + resolution: "object.entries@npm:1.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.7": + version: 2.0.7 + resolution: "object.fromentries@npm:2.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.1": + version: 1.0.2 + resolution: "object.groupby@npm:1.0.2" + dependencies: + array.prototype.filter: "npm:^1.0.3" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + checksum: 10c0/b6266b1cfec7eb784b8bbe0bca5dc4b371cf9dd3e601b0897d72fa97a5934273d8fb05b3fc5222204104dbec32b50e25ba27e05ad681f71fb739cc1c7e9b81b1 + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.2": + version: 1.1.3 + resolution: "object.hasown@npm:1.1.3" + dependencies: + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/8a41ba4fb1208a85c2275e9b5098071beacc24345b9a71ab98ef0a1c61b34dc74c6b460ff1e1884c33843d8f2553df64a10eec2b74b3ed009e3b2710c826bd2c + languageName: node + linkType: hard + +"object.pick@npm:^1.3.0": + version: 1.3.0 + resolution: "object.pick@npm:1.3.0" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.1.7": + version: 1.1.7 + resolution: "object.values@npm:1.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b + languageName: node + linkType: hard + +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^2.1.0": + version: 2.1.2 + resolution: "on-exit-leak-free@npm:2.1.2" + checksum: 10c0/faea2e1c9d696ecee919026c32be8d6a633a7ac1240b3b87e944a380e8a11dc9c95c4a1f8fb0568de7ab8db3823e790f12bda45296b1d111e341aad3922a0570 + languageName: node + linkType: hard + +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + languageName: node + linkType: hard + +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"open@npm:^8.0.9": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + languageName: node + linkType: hard + +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 + languageName: node + linkType: hard + +"optimism@npm:^0.18.0": + version: 0.18.0 + resolution: "optimism@npm:0.18.0" + dependencies: + "@wry/caches": "npm:^1.0.0" + "@wry/context": "npm:^0.7.0" + "@wry/trie": "npm:^0.4.3" + tslib: "npm:^2.3.0" + checksum: 10c0/8e97c6d660cb80cf5f444209b9dd29ee6951fa7b344d4c4fc6d4aaf0ad0710dddaf834d0f5d7211b3658b15ef6c6a22cbcb98c7a8121e3fee9666fe0fd62d876 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" + dependencies: + "@aashutoshrathi/word-wrap": "npm:^1.2.3" + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"os-browserify@npm:^0.3.0": + version: 0.3.0 + resolution: "os-browserify@npm:0.3.0" + checksum: 10c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": + version: 1.4.2 + resolution: "outvariant@npm:1.4.2" + checksum: 10c0/48041425a4cb725ff8871b7d9889bfc2eaded867b9b35b6c2450a36fb3632543173098654990caa6c9e9f67d902b2a01f4402c301835e9ecaf4b4695d3161853 + languageName: node + linkType: hard + +"p-cancelable@npm:^1.0.0": + version: 1.1.0 + resolution: "p-cancelable@npm:1.1.0" + checksum: 10c0/9f16d7d58897edb07b1a9234b2bfce3665c747f0f13886e25e2144ecab4595412017cc8cc3b0042f89864b997d6dba76c130724e1c0923fc41ff3c9399b87449 + languageName: node + linkType: hard + +"p-limit@npm:3.1.0, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: "npm:^2.0.0" + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: "npm:^4.0.0" + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-retry@npm:^4.5.0": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": "npm:0.12.0" + retry: "npm:^0.13.1" + checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json@npm:^6.3.0": + version: 6.5.0 + resolution: "package-json@npm:6.5.0" + dependencies: + got: "npm:^9.6.0" + registry-auth-token: "npm:^4.0.0" + registry-url: "npm:^5.0.0" + semver: "npm:^6.2.0" + checksum: 10c0/60c29fe357af43f96c92c334aa0160cebde44e8e65c1e5f9b065efb3f501af812f268ec967a07757b56447834ef7f71458ebbab94425a9f09c271f348f9b764f + languageName: node + linkType: hard + +"pako@npm:~1.0.5": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe + languageName: node + linkType: hard + +"parallel-transform@npm:^1.1.0": + version: 1.2.0 + resolution: "parallel-transform@npm:1.2.0" + dependencies: + cyclist: "npm:^1.0.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.1.5" + checksum: 10c0/ab0e58569e73681ca4b9c9228189bdb6cbea535295fae344cf0d8342fd33a950961914f3c414f81894c1498fb9ad1c079b4625d2b7ceae9e6ab812f22e3bea3f + languageName: node + linkType: hard + +"param-case@npm:3.0.4, param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.6": + version: 5.1.6 + resolution: "parse-asn1@npm:5.1.6" + dependencies: + asn1.js: "npm:^5.2.0" + browserify-aes: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + pbkdf2: "npm:^3.0.3" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/4ed1d9b9e120c5484d29d67bb90171aac0b73422bc016d6294160aea983275c28a27ab85d862059a36a86a97dd31b7ddd97486802ca9fac67115fe3409e9dcbd + languageName: node + linkType: hard + +"parse-filepath@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: "npm:^1.0.0" + map-cache: "npm:^0.2.0" + path-root: "npm:^0.1.1" + checksum: 10c0/37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"parse-ms@npm:^2.1.0": + version: 2.1.0 + resolution: "parse-ms@npm:2.1.0" + checksum: 10c0/9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 + languageName: node + linkType: hard + +"parse5-htmlparser2-tree-adapter@npm:^7.0.0": + version: 7.0.0 + resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" + dependencies: + domhandler: "npm:^5.0.2" + parse5: "npm:^7.0.0" + checksum: 10c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 + languageName: node + linkType: hard + +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + languageName: node + linkType: hard + +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 + languageName: node + linkType: hard + +"pascalcase@npm:1.0.0": + version: 1.0.0 + resolution: "pascalcase@npm:1.0.0" + checksum: 10c0/5fac7a6346b23307664f020cdd42d245a3189bf3b9b21cd167ea5e28a17b403e6670c60a3055d9c7d56ec00ffab446f862ff8148add23cd2c5a035c4d07efa26 + languageName: node + linkType: hard + +"pascalcase@npm:^0.1.1": + version: 0.1.1 + resolution: "pascalcase@npm:0.1.1" + checksum: 10c0/48dfe90618e33810bf58211d8f39ad2c0262f19ad6354da1ba563935b5f429f36409a1fb9187c220328f7a4dc5969917f8e3e01ee089b5f1627b02aefe39567b + languageName: node + linkType: hard + +"path-browserify@npm:0.0.1": + version: 0.0.1 + resolution: "path-browserify@npm:0.0.1" + checksum: 10c0/3d59710cddeea06509d91935196185900f3d9d29376dff68ff0e146fbd41d0fb304e983d0158f30cabe4dd2ffcc6a7d3d977631994ee984c88e66aed50a1ccd3 + languageName: node + linkType: hard + +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + languageName: node + linkType: hard + +"path-case@npm:^3.0.4": + version: 3.0.4 + resolution: "path-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 + languageName: node + linkType: hard + +"path-dirname@npm:^1.0.0": + version: 1.0.2 + resolution: "path-dirname@npm:1.0.2" + checksum: 10c0/71e59be2bada7c91f62b976245fd421b7cb01fde3207fe53a82d8880621ad04fd8b434e628c9cf4e796259fc168a107d77cd56837725267c5b2c58cefe2c4e1b + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: 10c0/27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: "npm:^0.1.0" + checksum: 10c0/aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: "npm:^9.1.1 || ^10.0.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 + languageName: node + linkType: hard + +"path-to-regexp@npm:^6.2.0": + version: 6.2.1 + resolution: "path-to-regexp@npm:6.2.1" + checksum: 10c0/7a73811ca703e5c199e5b50b9649ab8f6f7b458a37f7dff9ea338815203f5b1f95fe8cb24d4fdfe2eab5d67ce43562d92534330babca35cdf3231f966adb9360 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pbkdf2@npm:^3.0.3": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + dependencies: + create-hash: "npm:^1.1.2" + create-hmac: "npm:^1.1.4" + ripemd160: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v1.1.0": + version: 1.1.0 + resolution: "pino-abstract-transport@npm:1.1.0" + dependencies: + readable-stream: "npm:^4.0.0" + split2: "npm:^4.0.0" + checksum: 10c0/6e9b9d5a2c0a37f91ecaf224d335daae1ae682b1c79a05b06ef9e0f0a5d289f8e597992217efc857796dae6f1067e9b4882f95c6228ff433ddc153532cae8aca + languageName: node + linkType: hard + +"pino-std-serializers@npm:^6.0.0": + version: 6.2.2 + resolution: "pino-std-serializers@npm:6.2.2" + checksum: 10c0/8f1c7f0f0d8f91e6c6b5b2a6bfb48f06441abeb85f1c2288319f736f9c6d814fbeebe928d2314efc2ba6018fa7db9357a105eca9fc99fc1f28945a8a8b28d3d5 + languageName: node + linkType: hard + +"pino@npm:8.16.2": + version: 8.16.2 + resolution: "pino@npm:8.16.2" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.1.1" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:v1.1.0" + pino-std-serializers: "npm:^6.0.0" + process-warning: "npm:^2.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^3.7.0" + thread-stream: "npm:^2.0.0" + bin: + pino: bin.js + checksum: 10c0/ea1b2f426985a442b65566a75e3f20eed47c1f51f3aea9a10fc16a452feb339cde4d5439d724c822408fce6a8bfcf6d24f61421547f4cc718f44a6eb47921293 + languageName: node + linkType: hard + +"pino@npm:^8.17.0": + version: 8.19.0 + resolution: "pino@npm:8.19.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.1.1" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:v1.1.0" + pino-std-serializers: "npm:^6.0.0" + process-warning: "npm:^3.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^3.7.0" + thread-stream: "npm:^2.0.0" + bin: + pino: bin.js + checksum: 10c0/53e6e9db91e451163e93294b0a7c5c8135742d58909dfc4a6fa1afc155b2b0dc44448ec3d057e08351951f9a3ea67e6ea8e72e952b64a1d889f4d5376cbd1a5d + languageName: node + linkType: hard + +"pirates@npm:^4.0.4, pirates@npm:^4.0.6": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 + languageName: node + linkType: hard + +"pkg-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "pkg-dir@npm:3.0.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: "npm:^6.3.0" + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab + languageName: node + linkType: hard + +"pluralize@npm:8.0.0": + version: 8.0.0 + resolution: "pluralize@npm:8.0.0" + checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 + languageName: node + linkType: hard + +"portfinder@npm:1.0.32": + version: 1.0.32 + resolution: "portfinder@npm:1.0.32" + dependencies: + async: "npm:^2.6.4" + debug: "npm:^3.2.7" + mkdirp: "npm:^0.5.6" + checksum: 10c0/cef8b567b78aabccc59fe8e103bac8b394bb45a6a69be626608f099f454124c775aaf47b274c006332c07ab3f501cde55e49aaeb9d49d78d90362d776a565cbf + languageName: node + linkType: hard + +"posix-character-classes@npm:^0.1.0": + version: 0.1.1 + resolution: "posix-character-classes@npm:0.1.1" + checksum: 10c0/cce88011548a973b4af58361cd8f5f7b5a6faff8eef0901565802f067bcabf82597e920d4c97c22068464be3cbc6447af589f6cc8a7d813ea7165be60a0395bc + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + +"postcss-calc@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-calc@npm:9.0.1" + dependencies: + postcss-selector-parser: "npm:^6.0.11" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.2 + checksum: 10c0/e0df07337162dbcaac5d6e030c7fd289e21da8766a9daca5d6b2b3c8094bb524ae5d74c70048ea7fe5fe4960ce048c60ac97922d917c3bbff34f58e9d2b0eb0e + languageName: node + linkType: hard + +"postcss-colormin@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-colormin@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + caniuse-api: "npm:^3.0.0" + colord: "npm:^2.9.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/229681f9b89ba0909b4c69563837b0c32cc3d1c17ed1b00c33d4abfb0a0ef455124968e4885b5f92c64482e92074cd1958018ec111ed5d118f1e24baeda19c14 + languageName: node + linkType: hard + +"postcss-convert-values@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-convert-values@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/882d0b7839ef07ac8ffbf9cb48db0f610939a3496bd0321c7f23096ead676f13e09ab3d9c20ff3dbe2c887e855826051ca7dffeaffce5068cfdc9aaa573a3842 + languageName: node + linkType: hard + +"postcss-discard-comments@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-comments@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/5e9128ffb8c005081bb0521f5a23cf090e8513d928ed39935504ffde2e335a62a7e1a749c5c7bc2d03f06a8667900d19dd7eed19dfa4273043b5fd760476260d + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-duplicates@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/b9ea10a3c7528bb1630613c11756f809a95da634822d943fa91b28f2a37787e7cdb9ff96deed9776e2c3753d35e42c8afd5074b630930df7b5150573d4beda23 + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-empty@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/6b95e588a3e8fb262e56bd313060daf29d7c9d44184bb6c4c5858ae81d6cd2907b15b3e3023b6621d50a67cfc10e6077920ff1e908892b207dee29477376498f + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-overridden@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/22f9d56e53b90bc0f8e6d1c24d6da6c7c1a9d757644a128a7a4263a5479aaa8eca4ce3bfe9db10358051635ed40e8778a68c3f1831b7163eae10ced001db4a87 + languageName: node + linkType: hard + +"postcss-merge-longhand@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-merge-longhand@npm:6.0.2" + dependencies: + postcss-value-parser: "npm:^4.2.0" + stylehacks: "npm:^6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/2b3fae51bffc5962258d638bc7f415237593b515f369233e023f0eae5b13116297463c04b8c47a7b7af51cba5faaa7f517b653f6123e51935d670d4d4de5a26d + languageName: node + linkType: hard + +"postcss-merge-rules@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-merge-rules@npm:6.0.3" + dependencies: + browserslist: "npm:^4.22.2" + caniuse-api: "npm:^3.0.0" + cssnano-utils: "npm:^4.0.1" + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/c8355db11aa60bedcb1e6535fcd70f6ecec2dadd5c2975d3accf0eedbc92af782ac1f5e91a53866816ce332e4cbf1b94749a9425067935be066bc0c974e30fee + languageName: node + linkType: hard + +"postcss-minify-font-values@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-minify-font-values@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/15af236245a6d27f1c83c943ef90d144ca043894bbd86f134506a984811a936a06824739984824965c7c3fd5a0ff4ed299f26a33f3b628662aa4fb40d7536fd0 + languageName: node + linkType: hard + +"postcss-minify-gradients@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-minify-gradients@npm:6.0.1" + dependencies: + colord: "npm:^2.9.1" + cssnano-utils: "npm:^4.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/e700c3f6dc425072ff739fb18bb71c970599e0d909b326f4a5c84e91cf24c4f1ee78e4d161bd4cdf6e25b7d78f1ad082bb885afdd2a150f9b281520fc6359d5c + languageName: node + linkType: hard + +"postcss-minify-params@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-minify-params@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + cssnano-utils: "npm:^4.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/6638460d2be4a2eca8adee8409b70d6c6a19aff8cf93fda1b45c9da627b258b6baaa6acb48f51d26cd287704a235f9c9ae2e4744335b1fd47e163177c33896df + languageName: node + linkType: hard + +"postcss-minify-selectors@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-minify-selectors@npm:6.0.2" + dependencies: + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/5437b586c1237fc442e7e6078d4f23c987efc456366368b07a0da67332b04bd55821cedf0441e73e1209689f63139e272d930508e2963ba6e27c46561a661128 + languageName: node + linkType: hard + +"postcss-modules-extract-imports@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-modules-extract-imports@npm:3.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 + languageName: node + linkType: hard + +"postcss-modules-local-by-default@npm:^4.0.3": + version: 4.0.4 + resolution: "postcss-modules-local-by-default@npm:4.0.4" + dependencies: + icss-utils: "npm:^5.0.0" + postcss-selector-parser: "npm:^6.0.2" + postcss-value-parser: "npm:^4.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/9ebf464867eb10b29b73501b1466dcac8352ed852ef68ec23571f515daa74401d7ace9a6c72f354542081fdbb47d098c9bc6b05373b553a6e35779d072f967bb + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.0.0": + version: 3.1.1 + resolution: "postcss-modules-scope@npm:3.1.1" + dependencies: + postcss-selector-parser: "npm:^6.0.4" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/3ef6ac14fcda1581bc43e37622256bd87b99ea49c59b2aae648d057d57f5ecc634648cce9910166220a797567af674bc09246ccc010f1dd58d2863b805719109 + languageName: node + linkType: hard + +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: "npm:^5.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc + languageName: node + linkType: hard + +"postcss-normalize-charset@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-charset@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/8c09eedaf8813123875c65ab35120f14a87d6b9e8d6805fa808e3a714a8f868d15123f34f61e2240d89225f2f5c2bdabbcdf6385ce86b2487370d8994a65a857 + languageName: node + linkType: hard + +"postcss-normalize-display-values@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-display-values@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d08a92c653fb4f2506e029ceb8e3fdae9bc937fb1a7e80ecde759d02f6d15f69211af384d89d8582b160fd129abd9c77c8c64d75379417098ee5a2ba779e33d3 + languageName: node + linkType: hard + +"postcss-normalize-positions@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-positions@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/bb0267b13c92791543f5e9f94b119a0540e08aa46f600acd73a692cd38d07d2d2fddb11148a81adb58e3f65671eebb05ea38d2ded48f3202b2582f1199aa848e + languageName: node + linkType: hard + +"postcss-normalize-repeat-style@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-repeat-style@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/f6e943dbbf9341dd6ce2c9fc6820e8ae2a838d1db84f58f75b1e5c1b8b9d6895d17fb30b320e2189b8747f844713ec687540b5b1d52ccd6c9108d6d35328c659 + languageName: node + linkType: hard + +"postcss-normalize-string@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-string@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/afcdd69522fc3ebafc349c2ef4b62f1e734ade9b6148fd20f2b841477808ac6cf6e5bfbb533c492fdc6bb2184b84be8ebb800a6ae174c4313f87fb0695088cc0 + languageName: node + linkType: hard + +"postcss-normalize-timing-functions@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-timing-functions@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/c1c81d0dcb2f74fbd69cc45b0b6bd6cde390a0c9df602aabbf3eb2149a49da48e808837e811d22a525ffb036e158e63b4b2cf12c94cf28f2c2f6af858876134e + languageName: node + linkType: hard + +"postcss-normalize-unicode@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-unicode@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/ea696194f65ad31de2a9c022f1946a07c298f04070706d88a20061845e1e052e645c74b5bc785595814db87d14e435f85e968a44855dedc207d8c0b5d43b1aee + languageName: node + linkType: hard + +"postcss-normalize-url@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-url@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/4e3e713a95e01f263feccd041b2b10016a0a09e494c81567f012d1326d9b2d57dc4a68956a820313630370c0ef591bdbb37cc96ed259022559623be179aad436 + languageName: node + linkType: hard + +"postcss-normalize-whitespace@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-whitespace@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/259c0b7653f033ed14303602a30e458c37dc63ee55f47226b6379a6ea553ca7c9b971d49715b8f3f36a3a06927f6f87d7997c027ad4664af3bca37a5fe30352e + languageName: node + linkType: hard + +"postcss-ordered-values@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-ordered-values@npm:6.0.1" + dependencies: + cssnano-utils: "npm:^4.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/2e71f035c90b26d7a8d31e1b716f977532367f75bc76de3318b6ba7b2e1ec43c011cc09e741f59f7d93dff427b7d90a35db0b460d2f171a6f0c6e8c938ef30ad + languageName: node + linkType: hard + +"postcss-reduce-initial@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-reduce-initial@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + caniuse-api: "npm:^3.0.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d35ad6f9725cdceb390a97a461e8594df7fbed4c55497c90d07c42f8343bf80139e720eaebc580bf480bf10e92959490aa308af66d8802ba71c327bdf08c93a1 + languageName: node + linkType: hard + +"postcss-reduce-transforms@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-reduce-transforms@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/de7631302311071d86622166539162e69df506785e3674afab0602c86ed9aa67799e44405b40327f0011d58089d2dc4e2ae481b21812177818e28f9272d350a5 + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.15, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.0.15 + resolution: "postcss-selector-parser@npm:6.0.15" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/48b425d6cef497bcf6b7d136f6fd95cfca43026955e07ec9290d3c15457de3a862dbf251dd36f42c07a0d5b5ab6f31e41acefeff02528995a989b955505e440b + languageName: node + linkType: hard + +"postcss-svgo@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-svgo@npm:6.0.2" + dependencies: + postcss-value-parser: "npm:^4.2.0" + svgo: "npm:^3.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/db607404d09af256c7957a0ace822d651a00a52a1796da603f93ba3f0a095ac7595e1f624b9dc53f362ab10e382845d7873f485980f9c92fcb86256833f5e835 + languageName: node + linkType: hard + +"postcss-unique-selectors@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-unique-selectors@npm:6.0.2" + dependencies: + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/a0fe112d1094f90e1bfcfd2174a74b2fd0630a24449e9942923d02956c7d64ea4add5adede53d9efb3f6d40cd388ac150d032a115f6a46b73d5f3d3d26fa1bb7 + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 + languageName: node + linkType: hard + +"postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.27": + version: 8.4.35 + resolution: "postcss@npm:8.4.35" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/e8dd04e48001eb5857abc9475365bf08f4e508ddf9bc0b8525449a95d190f10d025acebc5b56ac2e94b3c7146790e4ae78989bb9633cb7ee20d1cc9b7dc909b2 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prepend-http@npm:^2.0.0": + version: 2.0.0 + resolution: "prepend-http@npm:2.0.0" + checksum: 10c0/b023721ffd967728e3a25e3a80dd73827e9444e586800ab90a21b3a8e67f362d28023085406ad53a36db1e4d98cb10e43eb37d45c6b733140a9165ead18a0987 + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + languageName: node + linkType: hard + +"prettier@npm:2.8.8, prettier@npm:^2.6.2": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + languageName: node + linkType: hard + +"pretty-bytes@npm:5.6.0": + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 + languageName: node + linkType: hard + +"pretty-error@npm:^4.0.0": + version: 4.0.0 + resolution: "pretty-error@npm:4.0.0" + dependencies: + lodash: "npm:^4.17.20" + renderkid: "npm:^3.0.0" + checksum: 10c0/dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 + languageName: node + linkType: hard + +"pretty-format@npm:^27.0.2": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"pretty-ms@npm:7.0.1": + version: 7.0.1 + resolution: "pretty-ms@npm:7.0.1" + dependencies: + parse-ms: "npm:^2.1.0" + checksum: 10c0/069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c + languageName: node + linkType: hard + +"printable-characters@npm:^1.0.42": + version: 1.0.42 + resolution: "printable-characters@npm:1.0.42" + checksum: 10c0/7c94d94c6041a37c385af770c7402ad5a2e8a3429ca4d2505a9f19fde39bac9a8fd1edfbfa02f1eae5b4b0f3536b6b8ee6c84621f7c0fcb41476b2df6ee20e4b + languageName: node + linkType: hard + +"prisma@npm:5.9.1": + version: 5.9.1 + resolution: "prisma@npm:5.9.1" + dependencies: + "@prisma/engines": "npm:5.9.1" + bin: + prisma: build/index.js + checksum: 10c0/f934bd94bea6863902d8abe2711fd7655ed25da267f92f33eef763a20c325e98e63111613b645ba6ae241e8add652aa598dd61ada560a40dcc47572229bb9960 + languageName: node + linkType: hard + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process-warning@npm:^2.0.0": + version: 2.3.2 + resolution: "process-warning@npm:2.3.2" + checksum: 10c0/6bccf187f604dd63067ae8b5a08f658d1cc5df4948a51525691a564ad9250575802c094dd5d1b69f015934fe5df6d925f2e607d7a589918069129b07a777aa7b + languageName: node + linkType: hard + +"process-warning@npm:^3.0.0": + version: 3.0.0 + resolution: "process-warning@npm:3.0.0" + checksum: 10c0/60f3c8ddee586f0706c1e6cb5aa9c86df05774b9330d792d7c8851cf0031afd759d665404d07037e0b4901b55c44a423f07bdc465c63de07d8d23196bb403622 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"promise@npm:^7.1.1": + version: 7.3.1 + resolution: "promise@npm:7.3.1" + dependencies: + asap: "npm:~2.0.3" + checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f + languageName: node + linkType: hard + +"prompts@npm:2.4.2, prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + +"prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + languageName: node + linkType: hard + +"proxyquire@npm:2.1.3": + version: 2.1.3 + resolution: "proxyquire@npm:2.1.3" + dependencies: + fill-keys: "npm:^1.0.2" + module-not-found-error: "npm:^1.0.1" + resolve: "npm:^1.11.1" + checksum: 10c0/f2e57670ed57ef047720516f0ad2f88bfdba4aaa54139bf5d7fe6ec84bf91ec932f402c56439b44d3596743fd9405be4aac99a924eb897e3396c5be1a81672b0 + languageName: node + linkType: hard + +"prr@npm:~1.0.1": + version: 1.0.1 + resolution: "prr@npm:1.0.1" + checksum: 10c0/5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f + languageName: node + linkType: hard + +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab + languageName: node + linkType: hard + +"pstree.remy@npm:^1.1.8": + version: 1.1.8 + resolution: "pstree.remy@npm:1.1.8" + checksum: 10c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 + languageName: node + linkType: hard + +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: "npm:^4.1.0" + browserify-rsa: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + parse-asn1: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + languageName: node + linkType: hard + +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/f1fe8960f44d145f8617ea4c67de05392da4557052980314c8f85081aee26953bdcab64afad58a2b1df0e8ff7203e3710e848cbe81a01027978edc6e264db355 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 + languageName: node + linkType: hard + +"pumpify@npm:^1.3.3": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: "npm:^3.6.0" + inherits: "npm:^2.0.3" + pump: "npm:^2.0.0" + checksum: 10c0/0bcabf9e3dbf2d0cc1f9b84ac80d3c75386111caf8963bfd98817a1e2192000ac0ccc804ca6ccd5b2b8430fdb71347b20fb2f014fe3d41adbacb1b502a841c45 + languageName: node + linkType: hard + +"punycode@npm:^1.2.4, punycode@npm:^1.3.2, punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pure-rand@npm:^6.0.0": + version: 6.0.4 + resolution: "pure-rand@npm:6.0.4" + checksum: 10c0/0fe7b12f25b10ea5b804598a6f37e4bcf645d2be6d44fe963741f014bf0095bdb6ff525106d6da6e76addc8142358fd380f1a9b8c62ea4d5516bf26a96a37c95 + languageName: node + linkType: hard + +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": + version: 1.3.5 + resolution: "pvtsutils@npm:1.3.5" + dependencies: + tslib: "npm:^2.6.1" + checksum: 10c0/d425aed316907e0b447a459bfb97c55d22270c3cfdba5a07ec90da0737b0e40f4f1771a444636f85bb6a453de90ff8c6b5f4f6ddba7597977166af49974b4534 + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3": + version: 1.1.3 + resolution: "pvutils@npm:1.1.3" + checksum: 10c0/23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac + languageName: node + linkType: hard + +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f + languageName: node + linkType: hard + +"qs@npm:6.11.2, qs@npm:^6.11.2": + version: 6.11.2 + resolution: "qs@npm:6.11.2" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 + languageName: node + linkType: hard + +"querystring-es3@npm:^0.2.0": + version: 0.2.1 + resolution: "querystring-es3@npm:0.2.1" + checksum: 10c0/476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"queue-tick@npm:^1.0.1": + version: 1.0.1 + resolution: "queue-tick@npm:1.0.1" + checksum: 10c0/0db998e2c9b15215317dbcf801e9b23e6bcde4044e115155dae34f8e7454b9a783f737c9a725528d677b7a66c775eb7a955cf144fe0b87f62b575ce5bfd515a9 + languageName: node + linkType: hard + +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + languageName: node + linkType: hard + +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: "npm:^2.0.5" + safe-buffer: "npm:^5.1.0" + checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + languageName: node + linkType: hard + +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + languageName: node + linkType: hard + +"raw-body@npm:2.5.1": + version: 2.5.1 + resolution: "raw-body@npm:2.5.1" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 + languageName: node + linkType: hard + +"raw-body@npm:^2.5.1": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 + languageName: node + linkType: hard + +"rc@npm:1.2.8, rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + +"react-fast-compare@npm:^3.2.2": + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 10c0/0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 + languageName: node + linkType: hard + +"react-helmet-async@npm:2.0.3": + version: 2.0.3 + resolution: "react-helmet-async@npm:2.0.3" + dependencies: + invariant: "npm:^2.2.4" + react-fast-compare: "npm:^3.2.2" + shallowequal: "npm:^1.1.0" + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/3ac58fac566e3f4951c3853975afd57dbc3af1442a897391a226fb1a54cc757506912d13485e897c61ecefe5d97e673ee91688b11ff20eb769b172c0309514ee + languageName: node + linkType: hard + +"react-hook-form@npm:7.49.3": + version: 7.49.3 + resolution: "react-hook-form@npm:7.49.3" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + checksum: 10c0/f8e5b2dcc3d97c820b4fbac262d7e914d74f385f26f34da31b8efc6c0f32ba995f2a2330bdfd3d8b7c8b56a52349a0cbc0c0dbe9053b3971e5e0c78003dfb7f0 + languageName: node + linkType: hard + +"react-hot-toast@npm:2.4.1": + version: 2.4.1 + resolution: "react-hot-toast@npm:2.4.1" + dependencies: + goober: "npm:^2.1.10" + peerDependencies: + react: ">=16" + react-dom: ">=16" + checksum: 10c0/591ecec3c6adc1cdb70f00165a57baa3d7f75d0d30fa767213c36496bdcc6be2b2e6a3edbf7c04f7d726a1b17dcfb5e7feb2136b04b17c9ccb769894b970f365 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 + languageName: node + linkType: hard + +"react-refresh@npm:0.14.0, react-refresh@npm:^0.14.0": + version: 0.14.0 + resolution: "react-refresh@npm:0.14.0" + checksum: 10c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + +"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.0.6, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readable-stream@npm:^4.0.0": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" + dependencies: + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10c0/a2c80e0e53aabd91d7df0330929e32d0a73219f9477dbbb18472f6fdd6a11a699fc5d172a1beff98d50eae4f1496c950ffa85b7cc2c4c196963f289a5f39275d + languageName: node + linkType: hard + +"readdir-glob@npm:^1.1.2": + version: 1.1.3 + resolution: "readdir-glob@npm:1.1.3" + dependencies: + minimatch: "npm:^5.1.0" + checksum: 10c0/a37e0716726650845d761f1041387acd93aa91b28dd5381950733f994b6c349ddc1e21e266ec7cc1f9b92e205a7a972232f9b89d5424d07361c2c3753d5dbace + languageName: node + linkType: hard + +"readdirp@npm:^2.2.1": + version: 2.2.1 + resolution: "readdirp@npm:2.2.1" + dependencies: + graceful-fs: "npm:^4.1.11" + micromatch: "npm:^3.1.10" + readable-stream: "npm:^2.0.2" + checksum: 10c0/770d177372ff2212d382d425d55ca48301fcbf3231ab3827257bbcca7ff44fb51fe4af6acc2dda8512dc7f29da390e9fbea5b2b3fc724b86e85cc828395b7797 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"real-require@npm:^0.2.0": + version: 0.2.0 + resolution: "real-require@npm:0.2.0" + checksum: 10c0/23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0 + languageName: node + linkType: hard + +"recast@npm:^0.23.1": + version: 0.23.4 + resolution: "recast@npm:0.23.4" + dependencies: + assert: "npm:^2.0.0" + ast-types: "npm:^0.16.1" + esprima: "npm:~4.0.0" + source-map: "npm:~0.6.1" + tslib: "npm:^2.0.1" + checksum: 10c0/d719633be8029e28f23b8191d4a525c5dbdac721792ab3cb5e9dfcf1694fb93f3c147b186916195a9c7fa0711f1e4990ba457cdcee02faed3899d4a80da1bd1f + languageName: node + linkType: hard + +"rechoir@npm:^0.8.0": + version: 0.8.0 + resolution: "rechoir@npm:0.8.0" + dependencies: + resolve: "npm:^1.20.0" + checksum: 10c0/1a30074124a22abbd5d44d802dac26407fa72a0a95f162aa5504ba8246bc5452f8b1a027b154d9bdbabcd8764920ff9333d934c46a8f17479c8912e92332f3ff + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.5 + resolution: "reflect.getprototypeof@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.3" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10c0/68f2a21494a9f4f5acc19bda5213236aa7fc02f9953ce2b18670c63b9ca3dec294dcabbb9d394d98cd2fc0de46b7cd6354614a60a33cabdbb5de9a6f7115f9a6 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": "npm:^7.8.4" + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + languageName: node + linkType: hard + +"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": + version: 1.0.2 + resolution: "regex-not@npm:1.0.2" + dependencies: + extend-shallow: "npm:^3.0.2" + safe-regex: "npm:^1.1.0" + checksum: 10c0/a0f8d6045f63b22e9759db10e248369c443b41cedd7dba0922d002b66c2734bc2aef0d98c4d45772d1f756245f4c5203856b88b9624bba2a58708858a8d485d6 + languageName: node + linkType: hard + +"regex-parser@npm:^2.2.11": + version: 2.3.0 + resolution: "regex-parser@npm:2.3.0" + checksum: 10c0/de31c40e9d982735fdf5934c822cc5cafbe6a0f0909d9fef52e2bd4cc2198933c89fd5e7a17697f25591fdb5df386a088296612b45f0f8e194222070fc5b5cc7 + languageName: node + linkType: hard + +"regexp-to-ast@npm:0.5.0": + version: 0.5.0 + resolution: "regexp-to-ast@npm:0.5.0" + checksum: 10c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" + dependencies: + "@babel/regjsgen": "npm:^0.8.0" + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.1.0" + regjsparser: "npm:^0.9.1" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 + languageName: node + linkType: hard + +"registry-auth-token@npm:^4.0.0": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: "npm:1.2.8" + checksum: 10c0/1d0000b8b65e7141a4cc4594926e2551607f48596e01326e7aa2ba2bc688aea86b2aa0471c5cb5de7acc9a59808a3a1ddde9084f974da79bfc67ab67aa48e003 + languageName: node + linkType: hard + +"registry-url@npm:^5.0.0": + version: 5.1.0 + resolution: "registry-url@npm:5.1.0" + dependencies: + rc: "npm:^1.2.8" + checksum: 10c0/c2c455342b5836cbed5162092eba075c7a02c087d9ce0fde8aeb4dc87a8f4a34a542e58bf4d8ec2d4cb73f04408cb3148ceb1f76647f76b978cfec22047dc6d6 + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" + dependencies: + jsesc: "npm:~0.5.0" + bin: + regjsparser: bin/parser + checksum: 10c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 + languageName: node + linkType: hard + +"relateurl@npm:^0.2.7": + version: 0.2.7 + resolution: "relateurl@npm:0.2.7" + checksum: 10c0/c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a + languageName: node + linkType: hard + +"relay-runtime@npm:12.0.0": + version: 12.0.0 + resolution: "relay-runtime@npm:12.0.0" + dependencies: + "@babel/runtime": "npm:^7.0.0" + fbjs: "npm:^3.0.0" + invariant: "npm:^2.2.4" + checksum: 10c0/f5d29b5c2f3c8a3438d43dcbc3022bd454c4ecbd4f0b10616df08bedc62d8aaa84f155f23e374053cf9f4a8238b93804e37a5b37ed9dc7ad01436d62d1b01d53 + languageName: node + linkType: hard + +"remedial@npm:^1.0.7": + version: 1.0.8 + resolution: "remedial@npm:1.0.8" + checksum: 10c0/ca1e22d2958e3f0f2fdb5f1c23fecadab5d83a0b1e291c67474c806ce07801212f1d2006995bdcfb592803ead7666e2b1fbb9281b3f32d4a87ff2335b3777725 + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: 10c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc + languageName: node + linkType: hard + +"remove-trailing-spaces@npm:^1.0.6": + version: 1.0.8 + resolution: "remove-trailing-spaces@npm:1.0.8" + checksum: 10c0/b9a4d74fd77e4a81b83cd19152abe1d658e5ecf13bc9b789c2699d7166d3879258a61625f8fc0274ef5719ab70e514ae86234fee481f6b41b50729949b837c1b + languageName: node + linkType: hard + +"renderkid@npm:^3.0.0": + version: 3.0.0 + resolution: "renderkid@npm:3.0.0" + dependencies: + css-select: "npm:^4.1.3" + dom-converter: "npm:^0.2.0" + htmlparser2: "npm:^6.1.0" + lodash: "npm:^4.17.21" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 + languageName: node + linkType: hard + +"repeat-element@npm:^1.1.2": + version: 1.1.4 + resolution: "repeat-element@npm:1.1.4" + checksum: 10c0/81aa8d82bc845780803ef52df3533fa399974b99df571d0bb86e91f0ffca9ee4b9c4e8e5e72af087938cc28d2aef93d106a6d01da685d72ce96455b90a9f9f69 + languageName: node + linkType: hard + +"repeat-string@npm:^1.6.1": + version: 1.6.1 + resolution: "repeat-string@npm:1.6.1" + checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + languageName: node + linkType: hard + +"requireindex@npm:^1.2.0": + version: 1.2.0 + resolution: "requireindex@npm:1.2.0" + checksum: 10c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + languageName: node + linkType: hard + +"reselect@npm:^4.1.7": + version: 4.1.8 + resolution: "reselect@npm:4.1.8" + checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-url-loader@npm:5.0.0": + version: 5.0.0 + resolution: "resolve-url-loader@npm:5.0.0" + dependencies: + adjust-sourcemap-loader: "npm:^4.0.0" + convert-source-map: "npm:^1.7.0" + loader-utils: "npm:^2.0.0" + postcss: "npm:^8.2.14" + source-map: "npm:0.6.1" + checksum: 10c0/53eef3620332f2fc35a4deffaa4395064b2ffd1bc28be380faa3f1e99c2fb7bbf0f705700b4539387d5b6c39586df54a92cd5d031606f19de4bf9e0ff1b6a522 + languageName: node + linkType: hard + +"resolve-url@npm:^0.2.1": + version: 0.2.1 + resolution: "resolve-url@npm:0.2.1" + checksum: 10c0/c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54 + languageName: node + linkType: hard + +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 10c0/cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 + languageName: node + linkType: hard + +"resolve@npm:^1.11.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.4": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.11.1#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin<compat/resolve>::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin<compat/resolve>": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin<compat/resolve>::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + +"response-iterator@npm:^0.2.6": + version: 0.2.6 + resolution: "response-iterator@npm:0.2.6" + checksum: 10c0/60e6b552cd610643269d5d916d270cc8a4bea978cbe4779d6ef8083ac6b89006795508034e4c4ebe204eded75ac32bf243589ba82c1184591dde0674f6db785e + languageName: node + linkType: hard + +"responselike@npm:^1.0.2": + version: 1.0.2 + resolution: "responselike@npm:1.0.2" + dependencies: + lowercase-keys: "npm:^1.0.0" + checksum: 10c0/1c2861d1950790da96159ca490eda645130eaf9ccc4d76db20f685ba944feaf30f45714b4318f550b8cd72990710ad68355ff15c41da43ed9a93c102c0ffa403 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"restore-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "restore-cursor@npm:4.0.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 + languageName: node + linkType: hard + +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: 10c0/01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f + languageName: node + linkType: hard + +"ret@npm:~0.2.0": + version: 0.2.2 + resolution: "ret@npm:0.2.2" + checksum: 10c0/1a41e543913cda851abb1dae4852efa97bb693ce58fde3b51cc1cae94e2599dd70b91ad6268a4a07fc238305be06fed91723ef6d08863c48a0d02e0a74b943cd + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rfdc@npm:^1.2.0, rfdc@npm:^1.3.0": + version: 1.3.1 + resolution: "rfdc@npm:1.3.1" + checksum: 10c0/69f65e3ed30970f8055fac9fbbef9ce578800ca19554eab1dcbffe73a4b8aef536bc4248313889cf25e3b4e38b212c721eabe30856575bf2b2bc3d90f8ba93ef + languageName: node + linkType: hard + +"rimraf@npm:5.0.5": + version: 5.0.5 + resolution: "rimraf@npm:5.0.5" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 + languageName: node + linkType: hard + +"rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": + version: 2.7.1 + resolution: "rimraf@npm:2.7.1" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rimraf@npm:~2.6.2": + version: 2.6.3 + resolution: "rimraf@npm:2.6.3" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/f1e646f8c567795f2916aef7aadf685b543da6b9a53e482bb04b07472c7eef2b476045ba1e29f401c301c66b630b22b815ab31fdd60c5e1ae6566ff523debf45 + languageName: node + linkType: hard + +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": + version: 2.0.2 + resolution: "ripemd160@npm:2.0.2" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + languageName: node + linkType: hard + +"rollup@npm:^3.27.1": + version: 3.29.4 + resolution: "rollup@npm:3.29.4" + dependencies: + fsevents: "npm:~2.3.2" + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/65eddf84bf389ea8e4d4c1614b1c6a298d08f8ae785c0c087e723a879190c8aaddbab4aa3b8a0524551b9036750c9f8bfea27b377798accfd2ba5084ceff5aaa + languageName: node + linkType: hard + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + dependencies: + "@redwoodjs/core": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + languageName: unknown + linkType: soft + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": + version: 1.0.3 + resolution: "run-queue@npm:1.0.3" + dependencies: + aproba: "npm:^1.1.1" + checksum: 10c0/4e8964279d8f160f9ffaabe82eaad11a1d4c0db596a0f2b5257ae9d2b900c7e1ffcece3e5719199436f50718e1e7f45bb4bf7a82e331a4e734d67c2588a90cbb + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-array-concat@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.5" + get-intrinsic: "npm:^1.2.2" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/833d3d950fc7507a60075f9bfaf41ec6dac7c50c7a9d62b1e6b071ecc162185881f92e594ff95c1a18301c881352dd6fd236d56999d5819559db7b92da9c28af + languageName: node + linkType: hard + +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + +"safe-regex2@npm:^2.0.0": + version: 2.0.0 + resolution: "safe-regex2@npm:2.0.0" + dependencies: + ret: "npm:~0.2.0" + checksum: 10c0/f499e4fc69caafd7dd8023759e69a32991baa66e90bec5e2a7777b907943b27068dbff4e7a32cc8231f1354fcb779142f419e85498ae1e37384dc60619509c27 + languageName: node + linkType: hard + +"safe-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex@npm:1.1.0" + dependencies: + ret: "npm:~0.1.10" + checksum: 10c0/547d58aa5184cbef368fd5ed5f28d20f911614748c5da6b35f53fd6626396707587251e6e3d1e3010fd3ff1212e413841b8825eaa5f317017ca62a30899af31a + languageName: node + linkType: hard + +"safe-stable-stringify@npm:^2.3.1": + version: 2.4.3 + resolution: "safe-stable-stringify@npm:2.4.3" + checksum: 10c0/81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + languageName: node + linkType: hard + +"schema-utils@npm:^1.0.0": + version: 1.0.0 + resolution: "schema-utils@npm:1.0.0" + dependencies: + ajv: "npm:^6.1.0" + ajv-errors: "npm:^1.0.0" + ajv-keywords: "npm:^3.1.0" + checksum: 10c0/670e22d7f0ff0b6f4514a4d6fb27c359101b44b7dbfd9563af201af72eb4a9ff06144020cab5f85b16e88821fd09b97cbdae6c893721c6528c8cb704124e6a2f + languageName: node + linkType: hard + +"schema-utils@npm:^2.6.5": + version: 2.7.1 + resolution: "schema-utils@npm:2.7.1" + dependencies: + "@types/json-schema": "npm:^7.0.5" + ajv: "npm:^6.12.4" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/f484f34464edd8758712d5d3ba25a306e367dac988aecaf4ce112e99baae73f33a807b5cf869240bb6648c80720b36af2d7d72be3a27faa49a2d4fc63fa3f85f + languageName: node + linkType: hard + +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.8" + ajv: "npm:^6.12.5" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.0.1": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + languageName: node + linkType: hard + +"scuid@npm:^1.1.0": + version: 1.1.0 + resolution: "scuid@npm:1.1.0" + checksum: 10c0/01c6bd2657ceaa148ead0c836df6251f561166142059261022a38dba429b30141e27ab3c0eca1012b88912f51a9e848e475fe1b6259ef1c61a0a7f6eb54fb261 + languageName: node + linkType: hard + +"secure-json-parse@npm:^2.4.0, secure-json-parse@npm:^2.7.0": + version: 2.7.0 + resolution: "secure-json-parse@npm:2.7.0" + checksum: 10c0/f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4 + languageName: node + linkType: hard + +"select-hose@npm:^2.0.0": + version: 2.0.0 + resolution: "select-hose@npm:2.0.0" + checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 + languageName: node + linkType: hard + +"selfsigned@npm:^2.1.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" + dependencies: + "@types/node-forge": "npm:^1.3.0" + node-forge: "npm:^1" + checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 + languageName: node + linkType: hard + +"semver@npm:7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + +"semver@npm:^5.6.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 + languageName: node + linkType: hard + +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a + languageName: node + linkType: hard + +"sentence-case@npm:^3.0.4": + version: 3.0.4 + resolution: "sentence-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 + languageName: node + linkType: hard + +"serialize-javascript@npm:^4.0.0": + version: 4.0.0 + resolution: "serialize-javascript@npm:4.0.0" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/510dfe7f0311c0b2f7ab06311afa1668ba2969ab2f1faaac0a4924ede76b7f22ba85cfdeaa0052ec5a047bca42c8cd8ac8df8f0efe52f9bd290b3a39ae69fe9d + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + +"serve-index@npm:^1.9.1": + version: 1.9.1 + resolution: "serve-index@npm:1.9.1" + dependencies: + accepts: "npm:~1.3.4" + batch: "npm:0.6.1" + debug: "npm:2.6.9" + escape-html: "npm:~1.0.3" + http-errors: "npm:~1.6.2" + mime-types: "npm:~2.1.17" + parseurl: "npm:~1.3.2" + checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c + languageName: node + linkType: hard + +"serve-static@npm:1.15.0": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" + dependencies: + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:0.18.0" + checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"set-cookie-parser@npm:^2.4.1, set-cookie-parser@npm:^2.4.6": + version: 2.6.0 + resolution: "set-cookie-parser@npm:2.6.0" + checksum: 10c0/739da029f0e56806a103fcd5501d9c475e19e77bd8274192d7ae5c374ae714a82bba9a7ac00b0330a18227c5644b08df9e442240527be578f5a6030f9bb2bb80 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.1 + resolution: "set-function-length@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.1.2" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.1" + checksum: 10c0/1927e296599f2c04d210c1911f1600430a5e49e04a6d8bb03dca5487b95a574da9968813a2ced9a774bd3e188d4a6208352c8f64b8d4674cdb021dca21e190ca + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" + dependencies: + define-data-property: "npm:^1.0.1" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.0" + checksum: 10c0/6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a + languageName: node + linkType: hard + +"set-value@npm:^2.0.0, set-value@npm:^2.0.1": + version: 2.0.1 + resolution: "set-value@npm:2.0.1" + dependencies: + extend-shallow: "npm:^2.0.1" + is-extendable: "npm:^0.1.1" + is-plain-object: "npm:^2.0.3" + split-string: "npm:^3.0.1" + checksum: 10c0/4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b + languageName: node + linkType: hard + +"setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + languageName: node + linkType: hard + +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + bin: + sha.js: ./bin.js + checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + languageName: node + linkType: hard + +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shell-exec@npm:1.0.2": + version: 1.0.2 + resolution: "shell-exec@npm:1.0.2" + checksum: 10c0/3733ed251bc025340a373da151c44d36e69d37f570e94f5dd6a968427e8d9f751a58dd87c5a01bf0ad1289ad1de963a425aaf14ad3a06f8aee56f776462b63ca + languageName: node + linkType: hard + +"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4": + version: 1.0.5 + resolution: "side-channel@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/31312fecb68997ce2893b1f6d1fd07d6dd41e05cc938e82004f056f7de96dd9df599ef9418acdf730dda948e867e933114bd2efe4170c0146d1ed7009700c252 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"signedsource@npm:^1.0.0": + version: 1.0.0 + resolution: "signedsource@npm:1.0.0" + checksum: 10c0/dbb4ade9c94888e83c16d23ef1a43195799de091d366d130be286415e8aeb97b3f25b14fd26fc5888e1335d703ad561374fddee32e43b7cea04751b93d178a47 + languageName: node + linkType: hard + +"simple-update-notifier@npm:^2.0.0": + version: 2.0.0 + resolution: "simple-update-notifier@npm:2.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c + languageName: node + linkType: hard + +"sirv@npm:^2.0.3": + version: 2.0.4 + resolution: "sirv@npm:2.0.4" + dependencies: + "@polka/url": "npm:^1.0.0-next.24" + mrmime: "npm:^2.0.0" + totalist: "npm:^3.0.0" + checksum: 10c0/68f8ee857f6a9415e9c07a1f31c7c561df8d5f1b1ba79bee3de583fa37da8718def5309f6b1c6e2c3ef77de45d74f5e49efc7959214443aa92d42e9c99180a4e + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + languageName: node + linkType: hard + +"slash@npm:^5.0.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 10c0/eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: "npm:^6.0.0" + is-fullwidth-code-point: "npm:^4.0.0" + checksum: 10c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd + languageName: node + linkType: hard + +"snapdragon-node@npm:^2.0.1": + version: 2.1.1 + resolution: "snapdragon-node@npm:2.1.1" + dependencies: + define-property: "npm:^1.0.0" + isobject: "npm:^3.0.0" + snapdragon-util: "npm:^3.0.1" + checksum: 10c0/7616e6a1ca054afe3ad8defda17ebe4c73b0800d2e0efd635c44ee1b286f8ac7900517314b5330862ce99b28cd2782348ee78bae573ff0f55832ad81d9657f3f + languageName: node + linkType: hard + +"snapdragon-util@npm:^3.0.1": + version: 3.0.1 + resolution: "snapdragon-util@npm:3.0.1" + dependencies: + kind-of: "npm:^3.2.0" + checksum: 10c0/4441856d343399ba7f37f79681949d51b922e290fcc07e7bc94655a50f584befa4fb08f40c3471cd160e004660161964d8ff140cba49baa59aa6caba774240e3 + languageName: node + linkType: hard + +"snapdragon@npm:^0.8.1": + version: 0.8.2 + resolution: "snapdragon@npm:0.8.2" + dependencies: + base: "npm:^0.11.1" + debug: "npm:^2.2.0" + define-property: "npm:^0.2.5" + extend-shallow: "npm:^2.0.1" + map-cache: "npm:^0.2.2" + source-map: "npm:^0.5.6" + source-map-resolve: "npm:^0.5.0" + use: "npm:^3.1.0" + checksum: 10c0/dfdac1f73d47152d72fc07f4322da09bbddfa31c1c9c3ae7346f252f778c45afa5b03e90813332f02f04f6de8003b34a168c456f8bb719024d092f932520ffca + languageName: node + linkType: hard + +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" + dependencies: + faye-websocket: "npm:^0.11.3" + uuid: "npm:^8.3.2" + websocket-driver: "npm:^0.7.4" + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:^4.3.4" + socks: "npm:^2.7.1" + checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + languageName: node + linkType: hard + +"socks@npm:^2.7.1": + version: 2.8.0 + resolution: "socks@npm:2.8.0" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/208fa5d5ae47857653c4fc039d47e4c1e76313b24052151a949aa98f027f9aaba8fc6c5dc0f7f2d9ceeb94e9940217581f2d9798436563c1494b67a6cb68611f + languageName: node + linkType: hard + +"sonic-boom@npm:^3.7.0": + version: 3.8.0 + resolution: "sonic-boom@npm:3.8.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/f3f61cb3fd5d4aad862dd957f22318ef85bf47d4f12ba27b915112908449f752dbdfc95a4739d2b4a9b2770e1e08d349adae9d1030fdab2a3d86128c6773a7f4 + languageName: node + linkType: hard + +"source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": + version: 2.0.1 + resolution: "source-list-map@npm:2.0.1" + checksum: 10c0/2e5e421b185dcd857f46c3c70e2e711a65d717b78c5f795e2e248c9d67757882ea989b80ebc08cf164eeeda5f4be8aa95d3b990225070b2daaaf3257c5958149 + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": + version: 1.0.2 + resolution: "source-map-js@npm:1.0.2" + checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 + languageName: node + linkType: hard + +"source-map-resolve@npm:^0.5.0": + version: 0.5.3 + resolution: "source-map-resolve@npm:0.5.3" + dependencies: + atob: "npm:^2.1.2" + decode-uri-component: "npm:^0.2.0" + resolve-url: "npm:^0.2.1" + source-map-url: "npm:^0.4.0" + urix: "npm:^0.1.0" + checksum: 10c0/410acbe93882e058858d4c1297be61da3e1533f95f25b95903edddc1fb719654e705663644677542d1fb78a66390238fad1a57115fc958a0724cf9bb509caf57 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map-url@npm:^0.4.0": + version: 0.4.1 + resolution: "source-map-url@npm:0.4.1" + checksum: 10c0/f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 + languageName: node + linkType: hard + +"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:0.7.4, source-map@npm:^0.7.3": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + +"source-map@npm:^0.5.6": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + languageName: node + linkType: hard + +"spawn-command@npm:0.0.2": + version: 0.0.2 + resolution: "spawn-command@npm:0.0.2" + checksum: 10c0/b22f2d71239e6e628a400831861ba747750bbb40c0a53323754cf7b84330b73d81e40ff1f9055e6d1971818679510208a9302e13d9ff3b32feb67e74d7a1b3ef + languageName: node + linkType: hard + +"spdy-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "spdy-transport@npm:3.0.0" + dependencies: + debug: "npm:^4.1.0" + detect-node: "npm:^2.0.4" + hpack.js: "npm:^2.1.6" + obuf: "npm:^1.1.2" + readable-stream: "npm:^3.0.6" + wbuf: "npm:^1.7.3" + checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb + languageName: node + linkType: hard + +"spdy@npm:^4.0.2": + version: 4.0.2 + resolution: "spdy@npm:4.0.2" + dependencies: + debug: "npm:^4.1.0" + handle-thing: "npm:^2.0.0" + http-deceiver: "npm:^1.2.7" + select-hose: "npm:^2.0.0" + spdy-transport: "npm:^3.0.0" + checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf + languageName: node + linkType: hard + +"split-string@npm:^3.0.1, split-string@npm:^3.0.2": + version: 3.1.0 + resolution: "split-string@npm:3.1.0" + dependencies: + extend-shallow: "npm:^3.0.0" + checksum: 10c0/72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70 + languageName: node + linkType: hard + +"split2@npm:4.2.0, split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + +"sponge-case@npm:^1.0.1": + version: 1.0.1 + resolution: "sponge-case@npm:1.0.1" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/dbe42f300ae9f7fbd83c40f71c2a61ecf9c86b927b5668bae067d1e516e314671cc85166f87017e51b56938409b1fc042719eb46a6d5bb30cc1cf23252a82761 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + languageName: node + linkType: hard + +"ssri@npm:^6.0.1": + version: 6.0.2 + resolution: "ssri@npm:6.0.2" + dependencies: + figgy-pudding: "npm:^3.5.1" + checksum: 10c0/e6f18c57dc9fed69343db5c59f95ef334e9664bfbdbad686c190ef2c6ad6b35e9b56cb203f3e4eb7eee6cb7bb602daa26dab6685e3847f0b5c464cdf7d9c2cee + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: 10c0/18410f7a1e0c5d211a4effa83bdbf24adbe8faa8c34db52e1cd3e89837518c592be60b60d8b7270ac53eeeb8b807cd11b399a41667f6c9abb41059c3ccc8a989 + languageName: node + linkType: hard + +"stacktracey@npm:2.1.8": + version: 2.1.8 + resolution: "stacktracey@npm:2.1.8" + dependencies: + as-table: "npm:^1.0.36" + get-source: "npm:^2.0.12" + checksum: 10c0/e17357d0a532d303138899b910ab660572009a1f4cde1cbf73b99416957a2378e6e1c791b3c31b043cf7c5f37647da1dd114e66c9203f23c65b34f783665405b + languageName: node + linkType: hard + +"static-extend@npm:^0.1.1": + version: 0.1.2 + resolution: "static-extend@npm:0.1.2" + dependencies: + define-property: "npm:^0.2.5" + object-copy: "npm:^0.1.0" + checksum: 10c0/284f5865a9e19d079f1badbcd70d5f9f82e7a08393f818a220839cd5f71729e89105e1c95322bd28e833161d484cee671380ca443869ae89578eef2bf55c0653 + languageName: node + linkType: hard + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: "npm:^1.0.4" + checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + languageName: node + linkType: hard + +"stream-browserify@npm:^2.0.1": + version: 2.0.2 + resolution: "stream-browserify@npm:2.0.2" + dependencies: + inherits: "npm:~2.0.1" + readable-stream: "npm:^2.0.2" + checksum: 10c0/485562bd5d962d633ae178449029c6fa2611052e356bdb5668f768544aa4daa94c4f9a97de718f3f30ad98f3cb98a5f396252bb3855aff153c138f79c0e8f6ac + languageName: node + linkType: hard + +"stream-each@npm:^1.1.0": + version: 1.2.3 + resolution: "stream-each@npm:1.2.3" + dependencies: + end-of-stream: "npm:^1.1.0" + stream-shift: "npm:^1.0.0" + checksum: 10c0/7ed229d3b7c24373058b5742b00066da8d3122d1487c8219a025ed53a8978545c77654a529a8e9c62ba83ae80c424cbb0204776b49abf72270d2e8154831dd5f + languageName: node + linkType: hard + +"stream-http@npm:^2.7.2": + version: 2.8.3 + resolution: "stream-http@npm:2.8.3" + dependencies: + builtin-status-codes: "npm:^3.0.0" + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.3.6" + to-arraybuffer: "npm:^1.0.0" + xtend: "npm:^4.0.0" + checksum: 10c0/fbe7d327a29216bbabe88d3819bb8f7a502f11eeacf3212579e5af1f76fa7283f6ffa66134ab7d80928070051f571d1029e85f65ce3369fffd4c4df3669446c4 + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + +"streamx@npm:^2.15.0": + version: 2.16.1 + resolution: "streamx@npm:2.16.1" + dependencies: + bare-events: "npm:^2.2.0" + fast-fifo: "npm:^1.1.0" + queue-tick: "npm:^1.0.1" + dependenciesMeta: + bare-events: + optional: true + checksum: 10c0/202b1d7cb7ceb36cdc5d5d0e2c27deafcc8670a4934cda7a5e3d3d45b8d3a64dc43f1b982b1c1cb316f01964dd5137b7e26af3151582c7c29ad3cf4072c6dbb9 + languageName: node + linkType: hard + +"strict-event-emitter@npm:^0.2.4": + version: 0.2.8 + resolution: "strict-event-emitter@npm:0.2.8" + dependencies: + events: "npm:^3.3.0" + checksum: 10c0/6891e19fea4f0289e4da2fe7050d85906eaca7f774aa38fe674f0e58fdece1b63b868614fa23974c4cb862aa99358caa987523b705fdfff4639231c62e384394 + languageName: node + linkType: hard + +"strict-event-emitter@npm:^0.4.3": + version: 0.4.6 + resolution: "strict-event-emitter@npm:0.4.6" + checksum: 10c0/d0231ef081cb1937b1445da59a1ec202d1c097d825c504f398600532490a4104e200b0dce4137467a8eaac5f8f9718d01c99869687afad78cad3b14c4b2e6a39 + languageName: node + linkType: hard + +"string-env-interpolation@npm:1.0.1, string-env-interpolation@npm:^1.0.1": + version: 1.0.1 + resolution: "string-env-interpolation@npm:1.0.1" + checksum: 10c0/410046e621e71678e71816377d799b40ba88d236708c0ad015114137fa3575f1b3cf14bfd63ec5eaa35ea43ac582308e60a8e1a3839a10f475b8db73470105bc + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-length@npm:^5.0.1": + version: 5.0.1 + resolution: "string-length@npm:5.0.1" + dependencies: + char-regex: "npm:^2.0.0" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.8": + version: 4.0.10 + resolution: "string.prototype.matchall@npm:4.0.10" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.5" + regexp.prototype.flags: "npm:^1.5.0" + set-function-name: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/cd7495fb0de16d43efeee3887b98701941f3817bd5f09351ad1825b023d307720c86394d56d56380563d97767ab25bf5448db239fcecbb85c28e2180f23e324a + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.8": + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f + languageName: node + linkType: hard + +"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + +"style-loader@npm:3.3.3": + version: 3.3.3 + resolution: "style-loader@npm:3.3.3" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/104bae8abd0627579dc14f3917cf65f1117e8098e3529872f09c26b5eee07933567b7be5c8ebf94d16e322b6e726dc569c5787111bf3786915850db4e351ef33 + languageName: node + linkType: hard + +"stylehacks@npm:^6.0.2": + version: 6.0.2 + resolution: "stylehacks@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/658cac8b28edcb94d1db67808ab3aaa511cb1b9293594fc95607ee42ac4f57e742d9a1fa3ff5d5849db692971dc2a310e9ac1ed0bd4ea4bc48c80f5a6ef823fc + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.0.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"svgo@npm:^3.2.0": + version: 3.2.0 + resolution: "svgo@npm:3.2.0" + dependencies: + "@trysound/sax": "npm:0.2.0" + commander: "npm:^7.2.0" + css-select: "npm:^5.1.0" + css-tree: "npm:^2.3.1" + css-what: "npm:^6.1.0" + csso: "npm:^5.0.5" + picocolors: "npm:^1.0.0" + bin: + svgo: ./bin/svgo + checksum: 10c0/28fa9061ccbcf2e3616d48d1feb613aaa05f8f290a329beb0e585914f1864385152934a7d4d683a4609fafbae3d51666633437c359c5c5ef74fb58ad09092a7c + languageName: node + linkType: hard + +"swap-case@npm:^2.0.2": + version: 2.0.2 + resolution: "swap-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/6a47c1926e06395ead750905e103be388aeec8c9697f20b14bc3e1e86fcb4fc78e5033197afe6cc8bbed80f0a4ee1f184b0fa22eec7f4a767bdfd278683d52eb + languageName: node + linkType: hard + +"symbol-observable@npm:^4.0.0": + version: 4.0.0 + resolution: "symbol-observable@npm:4.0.0" + checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + languageName: node + linkType: hard + +"systeminformation@npm:5.21.20": + version: 5.21.20 + resolution: "systeminformation@npm:5.21.20" + bin: + systeminformation: lib/cli.js + checksum: 10c0/4d7ea2b0df75f122854cc964926dfb8f8fbe9297afcbf2fad1218cfb684163e9486f5c6032814fe528d5d39585b43f33c4af11e0ea07b8b591f18c27f791fbba + conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) + languageName: node + linkType: hard + +"tapable@npm:^1.0.0, tapable@npm:^1.1.3": + version: 1.1.3 + resolution: "tapable@npm:1.1.3" + checksum: 10c0/c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 + languageName: node + linkType: hard + +"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + +"tar-stream@npm:^3.0.0": + version: 3.1.7 + resolution: "tar-stream@npm:3.1.7" + dependencies: + b4a: "npm:^1.6.4" + fast-fifo: "npm:^1.2.0" + streamx: "npm:^2.15.0" + checksum: 10c0/a09199d21f8714bd729993ac49b6c8efcb808b544b89f23378ad6ffff6d1cb540878614ba9d4cfec11a64ef39e1a6f009a5398371491eb1fda606ffc7f70f718 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.0 + resolution: "tar@npm:6.2.0" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8 + languageName: node + linkType: hard + +"temp@npm:^0.8.4": + version: 0.8.4 + resolution: "temp@npm:0.8.4" + dependencies: + rimraf: "npm:~2.6.2" + checksum: 10c0/7f071c963031bfece37e13c5da11e9bb451e4ddfc4653e23e327a2f91594102dc826ef6a693648e09a6e0eb856f507967ec759ae55635e0878091eccf411db37 + languageName: node + linkType: hard + +"terminal-link@npm:2.1.1": + version: 2.1.1 + resolution: "terminal-link@npm:2.1.1" + dependencies: + ansi-escapes: "npm:^4.2.1" + supports-hyperlinks: "npm:^2.0.0" + checksum: 10c0/947458a5cd5408d2ffcdb14aee50bec8fb5022ae683b896b2f08ed6db7b2e7d42780d5c8b51e930e9c322bd7c7a517f4fa7c76983d0873c83245885ac5ee13e3 + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^1.4.3": + version: 1.4.5 + resolution: "terser-webpack-plugin@npm:1.4.5" + dependencies: + cacache: "npm:^12.0.2" + find-cache-dir: "npm:^2.1.0" + is-wsl: "npm:^1.1.0" + schema-utils: "npm:^1.0.0" + serialize-javascript: "npm:^4.0.0" + source-map: "npm:^0.6.1" + terser: "npm:^4.1.2" + webpack-sources: "npm:^1.4.0" + worker-farm: "npm:^1.7.0" + peerDependencies: + webpack: ^4.0.0 + checksum: 10c0/97164cfa383cf988832427e912cd9606471452f15f8bfb905ae51f1a42561f90ea541141e1e530e59f8307639fed7dfdbd626aec8390acd6ad80e58ea3fcf6df + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.20" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^3.1.1" + serialize-javascript: "npm:^6.0.1" + terser: "npm:^5.26.0" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 + languageName: node + linkType: hard + +"terser@npm:^4.1.2": + version: 4.8.1 + resolution: "terser@npm:4.8.1" + dependencies: + commander: "npm:^2.20.0" + source-map: "npm:~0.6.1" + source-map-support: "npm:~0.5.12" + bin: + terser: bin/terser + checksum: 10c0/1ec2620e58df0ea787ac579daf097df0fee2dd402f37acb4de0df1135f0598a29212e5f03042a9c2dc7e1bf1248b1dd9d9ea0724d34331a2017f32da8783b3d7 + languageName: node + linkType: hard + +"terser@npm:^5.10.0, terser@npm:^5.26.0": + version: 5.27.2 + resolution: "terser@npm:5.27.2" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/027b2499bbb07b427681e50e77ffed1285138b279a845db4ca2128204654e536b251455776a4e9453ef598db7b06f41c12edb46ed9cc7667da635272a08eb502 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"thread-stream@npm:^2.0.0": + version: 2.4.1 + resolution: "thread-stream@npm:2.4.1" + dependencies: + real-require: "npm:^0.2.0" + checksum: 10c0/ce29265810b9550ce896726301ff006ebfe96b90292728f07cfa4c379740585583046e2a8018afc53aca66b18fed12b33a84f3883e7ebc317185f6682898b8f8 + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:^2.0.1": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: "npm:~2.3.6" + xtend: "npm:~4.0.1" + checksum: 10c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade + languageName: node + linkType: hard + +"through@npm:^2.3.6, through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"thunky@npm:^1.0.2": + version: 1.1.0 + resolution: "thunky@npm:1.1.0" + checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 + languageName: node + linkType: hard + +"timers-browserify@npm:^2.0.4": + version: 2.0.12 + resolution: "timers-browserify@npm:2.0.12" + dependencies: + setimmediate: "npm:^1.0.4" + checksum: 10c0/98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 + languageName: node + linkType: hard + +"tiny-lru@npm:^11.0.0": + version: 11.2.5 + resolution: "tiny-lru@npm:11.2.5" + checksum: 10c0/bda6de074035ca108ce179ba4ceb02a3eca6aab78b5cf161736035f2af562644594435d8fa4c07f098eee96e1a483992025af72f25e6033d54a66cf270fa8372 + languageName: node + linkType: hard + +"title-case@npm:3.0.3, title-case@npm:^3.0.3": + version: 3.0.3 + resolution: "title-case@npm:3.0.3" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/face56f686060f777b43a180d371407124d201eb4238c19d9e97030fd54859696ca4e2ca499cc232f8700f24f2414cc08aab9fdf6d39acff055dd825a4d86d6a + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-arraybuffer@npm:^1.0.0": + version: 1.0.1 + resolution: "to-arraybuffer@npm:1.0.1" + checksum: 10c0/2460bd95524f4845a751e4f8bf9937f9f3dcd1651f104e1512868782f858f8302c1cf25bbc30794bc1b3ff65c4e135158377302f2abaff43a2d8e3c38dfe098c + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + +"to-object-path@npm:^0.3.0": + version: 0.3.0 + resolution: "to-object-path@npm:0.3.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/731832a977614c03a770363ad2bd9e9c82f233261861724a8e612bb90c705b94b1a290a19f52958e8e179180bb9b71121ed65e245691a421467726f06d1d7fc3 + languageName: node + linkType: hard + +"to-readable-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "to-readable-stream@npm:1.0.0" + checksum: 10c0/79cb836e2fb4f2885745a8c212eab7ebc52e93758ff0737feceaed96df98e4d04b8903fe8c27f2e9f3f856a5068ac332918b235c5d801b3efe02a51a3fa0eb36 + languageName: node + linkType: hard + +"to-regex-range@npm:^2.1.0": + version: 2.1.1 + resolution: "to-regex-range@npm:2.1.1" + dependencies: + is-number: "npm:^3.0.0" + repeat-string: "npm:^1.6.1" + checksum: 10c0/440d82dbfe0b2e24f36dd8a9467240406ad1499fc8b2b0f547372c22ed1d092ace2a3eb522bb09bfd9c2f39bf1ca42eb78035cf6d2b8c9f5c78da3abc96cd949 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": + version: 3.0.2 + resolution: "to-regex@npm:3.0.2" + dependencies: + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + regex-not: "npm:^1.0.2" + safe-regex: "npm:^1.1.0" + checksum: 10c0/99d0b8ef397b3f7abed4bac757b0f0bb9f52bfd39167eb7105b144becfaa9a03756892352d01ac6a911f0c1ceef9f81db68c46899521a3eed054082042796120 + languageName: node + linkType: hard + +"toad-cache@npm:^3.3.0": + version: 3.7.0 + resolution: "toad-cache@npm:3.7.0" + checksum: 10c0/7dae2782ee20b22c9798bb8b71dec7ec6a0091021d2ea9dd6e8afccab6b65b358fdba49a02209fac574499702e2c000660721516c87c2538d1b2c0ba03e8c0c3 + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + languageName: node + linkType: hard + +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + languageName: node + linkType: hard + +"touch@npm:^3.1.0": + version: 3.1.0 + resolution: "touch@npm:3.1.0" + dependencies: + nopt: "npm:~1.0.10" + bin: + nodetouch: ./bin/nodetouch.js + checksum: 10c0/dacb4a639401b83b0a40b56c0565e01096e5ecf38b22a4840d9eeb642a5bea136c6a119e4543f9b172349a5ee343b10cda0880eb47f7d7ddfd6eac59dcf53244 + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.2": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" + dependencies: + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10c0/4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: "npm:^2.1.1" + checksum: 10c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"tree-kill@npm:^1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 + languageName: node + linkType: hard + +"ts-invariant@npm:^0.10.3": + version: 0.10.3 + resolution: "ts-invariant@npm:0.10.3" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/2fbc178d5903d325ee0b87fad38827eac11888b6e86979b06754fd4bcdcf44c2a99b8bcd5d59d149c0464ede55ae810b02a2aee6835ad10efe4dd0e22efd68c0 + languageName: node + linkType: hard + +"ts-log@npm:^2.2.3": + version: 2.2.5 + resolution: "ts-log@npm:2.2.5" + checksum: 10c0/bbc45faa97d47238b896e85e9e0fc12e3d2d72b56755fba305290489532319c83bae82e282b92a5469f432f2dfa365da7ee0469d6d528ce04cd9dd75d4e2a147 + languageName: node + linkType: hard + +"ts-morph@npm:15.1.0": + version: 15.1.0 + resolution: "ts-morph@npm:15.1.0" + dependencies: + "@ts-morph/common": "npm:~0.16.0" + code-block-writer: "npm:^11.0.0" + checksum: 10c0/ef72fe65e5837afb49f11a67f98922687c92653a3391a258448d36b2d2a16d82487a8de93c0e61f7f79151539f2b6e46fa1ef8cb17f1e1bc9317f3d6819c0655 + languageName: node + linkType: hard + +"ts-morph@npm:^18.0.0": + version: 18.0.0 + resolution: "ts-morph@npm:18.0.0" + dependencies: + "@ts-morph/common": "npm:~0.19.0" + code-block-writer: "npm:^12.0.0" + checksum: 10c0/6ea3259bf46a786eb446f75586aaa3a23715529889069e28e7bbd57e85e21585097559ec5b94e1b99cd6e6e9097d644d71e4a1e3274499f46b1cafd6a009b534 + languageName: node + linkType: hard + +"ts-node@npm:10.9.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + 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 + checksum: 10c0/95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d + languageName: node + linkType: hard + +"ts-toolbelt@npm:9.6.0": + version: 9.6.0 + resolution: "ts-toolbelt@npm:9.6.0" + checksum: 10c0/838f9a2f0fe881d5065257a23b402c41315b33ff987b73db3e2b39fcb70640c4c7220e1ef118ed5676763543724fdbf4eda7b0e2c17acb667ed1401336af9f8c + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.14.2": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:^1.8.1, tslib@npm:^1.9.2": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.5.2, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:~2.6.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + languageName: node + linkType: hard + +"tslib@npm:~2.4.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: 10c0/9ac0e4fd1033861f0b4f0d848dc3009ebcc3aa4757a06e8602a2d8a7aed252810e3540e54e70709f06c0f95311faa8584f769bcbede48aff785eb7e4d399b9ec + languageName: node + linkType: hard + +"tslib@npm:~2.5.0": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 10c0/4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + 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" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + +"tty-browserify@npm:0.0.0": + version: 0.0.0 + resolution: "tty-browserify@npm:0.0.0" + checksum: 10c0/c0c68206565f1372e924d5cdeeff1a0d9cc729833f1da98c03d78be8f939e5f61a107bd0ab77d1ef6a47d62bb0e48b1081fbea273acf404959e22fd3891439c5 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^1.0.2": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: 10c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 + languageName: node + linkType: hard + +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"type-fest@npm:^3.0.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.1": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.10" + checksum: 10c0/6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.1 + resolution: "typed-array-byte-offset@npm:1.0.1" + dependencies: + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d65bd43ca55804d34a7752372abc27ca3b75455e14ebdac4e7648e3aa836455145636421efc9d7ffa020bca895b2f76588efdf3a7a2c21e25dc1cb3fdce60a6a + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" + dependencies: + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + is-typed-array: "npm:^1.1.9" + checksum: 10c0/c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 + languageName: node + linkType: hard + +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 + languageName: node + linkType: hard + +"typescript@npm:5.3.3": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.3.3#optional!builtin<compat/typescript>": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin<compat/typescript>::version=5.3.3&hash=e012d7" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.35": + version: 1.0.37 + resolution: "ua-parser-js@npm:1.0.37" + checksum: 10c0/dac8cf82a55b2e097bd2286954e01454c4cfcf23c9d9b56961ce94bda3cec5a38ca536e6e84c20a4000a9d4b4a4abcbd98ec634ccebe21be36595ea3069126e4 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + languageName: node + linkType: hard + +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: 10c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 + languageName: node + linkType: hard + +"undefsafe@npm:^2.0.5": + version: 2.0.5 + resolution: "undefsafe@npm:2.0.5" + checksum: 10c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"undici@npm:^5.19.1": + version: 5.28.3 + resolution: "undici@npm:5.28.3" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10c0/3c559ae50ef3104b7085251445dda6f4de871553b9e290845649d2f80b06c0c9cfcdf741b0029c6b20d36c82e6a74dc815b139fa9a26757d70728074ca6d6f5c + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 10c0/0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 10c0/f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"union-value@npm:^1.0.0": + version: 1.0.1 + resolution: "union-value@npm:1.0.1" + dependencies: + arr-union: "npm:^3.1.0" + get-value: "npm:^2.0.6" + is-extendable: "npm:^0.1.1" + set-value: "npm:^2.0.1" + checksum: 10c0/8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592 + languageName: node + linkType: hard + +"unique-filename@npm:^1.1.1": + version: 1.1.1 + resolution: "unique-filename@npm:1.1.1" + dependencies: + unique-slug: "npm:^2.0.0" + checksum: 10c0/d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^2.0.0": + version: 2.0.2 + resolution: "unique-slug@npm:2.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"unique-string@npm:^1.0.0": + version: 1.0.0 + resolution: "unique-string@npm:1.0.0" + dependencies: + crypto-random-string: "npm:^1.0.0" + checksum: 10c0/79cc2a6515a51e6350c74f65c92246511966c47528f1119318cbe8d68a508842f4e5a2a81857a65f3919629397a525f820505116dd89cac425294598e35ca12c + languageName: node + linkType: hard + +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: "npm:^2.1.1" + checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + +"unset-value@npm:^1.0.0": + version: 1.0.0 + resolution: "unset-value@npm:1.0.0" + dependencies: + has-value: "npm:^0.3.1" + isobject: "npm:^3.0.0" + checksum: 10c0/68a796dde4a373afdbf017de64f08490a3573ebee549136da0b3a2245299e7f65f647ef70dc13c4ac7f47b12fba4de1646fa0967a365638578fedce02b9c0b1f + languageName: node + linkType: hard + +"upath@npm:^1.1.1": + version: 1.2.0 + resolution: "upath@npm:1.2.0" + checksum: 10c0/3746f24099bf69dbf8234cecb671e1016e1f6b26bd306de4ff8966fb0bc463fa1014ffc48646b375de1ab573660e3a0256f6f2a87218b2dfa1779a84ef6992fa + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" + dependencies: + escalade: "npm:^3.1.1" + picocolors: "npm:^1.0.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 + languageName: node + linkType: hard + +"upper-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 + languageName: node + linkType: hard + +"upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"urix@npm:^0.1.0": + version: 0.1.0 + resolution: "urix@npm:0.1.0" + checksum: 10c0/264f1b29360c33c0aec5fb9819d7e28f15d1a3b83175d2bcc9131efe8583f459f07364957ae3527f1478659ec5b2d0f1ad401dfb625f73e4d424b3ae35fc5fc0 + languageName: node + linkType: hard + +"url-loader@npm:4.1.1": + version: 4.1.1 + resolution: "url-loader@npm:4.1.1" + dependencies: + loader-utils: "npm:^2.0.0" + mime-types: "npm:^2.1.27" + schema-utils: "npm:^3.0.0" + peerDependencies: + file-loader: "*" + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + checksum: 10c0/71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 + languageName: node + linkType: hard + +"url-parse-lax@npm:^3.0.0": + version: 3.0.0 + resolution: "url-parse-lax@npm:3.0.0" + dependencies: + prepend-http: "npm:^2.0.0" + checksum: 10c0/16f918634d41a4fab9e03c5f9702968c9930f7c29aa1a8c19a6dc01f97d02d9b700ab9f47f8da0b9ace6e0c0e99c27848994de1465b494bced6940c653481e55 + languageName: node + linkType: hard + +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 + languageName: node + linkType: hard + +"url@npm:^0.11.0": + version: 0.11.3 + resolution: "url@npm:0.11.3" + dependencies: + punycode: "npm:^1.4.1" + qs: "npm:^6.11.2" + checksum: 10c0/7546b878ee7927cfc62ca21dbe2dc395cf70e889c3488b2815bf2c63355cb3c7db555128176a01b0af6cccf265667b6fd0b4806de00cb71c143c53986c08c602 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^10.0.0": + version: 10.0.0 + resolution: "urlpattern-polyfill@npm:10.0.0" + checksum: 10c0/43593f2a89bd54f2d5b5105ef4896ac5c5db66aef723759fbd15cd5eb1ea6cdae9d112e257eda9bbc3fb0cd90be6ac6e9689abe4ca69caa33114f42a27363531 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^8.0.0": + version: 8.0.2 + resolution: "urlpattern-polyfill@npm:8.0.2" + checksum: 10c0/5388bbe8459dbd8861ee7cb97904be915dd863a9789c2191c528056f16adad7836ec22762ed002fed44e8995d0f98bdfb75a606466b77233e70d0f61b969aaf9 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^9.0.0": + version: 9.0.0 + resolution: "urlpattern-polyfill@npm:9.0.0" + checksum: 10c0/1fecb4a7695ad7917b02193896ec7b5773bb730ee3fbbb583cfaf134cc99da054c18560a35e7e901ad4e2f7a6035b6754313a2bb84126a7f118201427d465185 + languageName: node + linkType: hard + +"use@npm:^3.1.0": + version: 3.1.1 + resolution: "use@npm:3.1.1" + checksum: 10c0/75b48673ab80d5139c76922630d5a8a44e72ed58dbaf54dee1b88352d10e1c1c1fc332066c782d8ae9a56503b85d3dc67ff6d2ffbd9821120466d1280ebb6d6e + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:^0.10.4": + version: 0.10.4 + resolution: "util@npm:0.10.4" + dependencies: + inherits: "npm:2.0.3" + checksum: 10c0/d29f6893e406b63b088ce9924da03201df89b31490d4d011f1c07a386ea4b3dbe907464c274023c237da470258e1805d806c7e4009a5974cd6b1d474b675852a + languageName: node + linkType: hard + +"util@npm:^0.11.0": + version: 0.11.1 + resolution: "util@npm:0.11.1" + dependencies: + inherits: "npm:2.0.3" + checksum: 10c0/8e9d1a85e661c8a8d9883d821aedbff3f8d9c3accd85357020905386ada5653b20389fc3591901e2a0bde64f8dc86b28c3f990114aa5a38eaaf30b455fa3cdf6 + languageName: node + linkType: hard + +"util@npm:^0.12.3, util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"utila@npm:~0.4": + version: 0.4.0 + resolution: "utila@npm:0.4.0" + checksum: 10c0/2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + languageName: node + linkType: hard + +"uuid@npm:9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.2.0 + resolution: "v8-to-istanbul@npm:9.2.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/e691ba4dd0dea4a884e52c37dbda30cce6f9eeafe9b26721e449429c6bb0f4b6d1e33fabe7711d0f67f7a34c3bfd56c873f7375bba0b1534e6a2843ce99550e5 + languageName: node + linkType: hard + +"value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": + version: 1.0.12 + resolution: "value-or-promise@npm:1.0.12" + checksum: 10c0/b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262 + languageName: node + linkType: hard + +"vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + languageName: node + linkType: hard + +"vite@npm:4.5.2": + version: 4.5.2 + resolution: "vite@npm:4.5.2" + dependencies: + esbuild: "npm:^0.18.10" + fsevents: "npm:~2.3.2" + postcss: "npm:^8.4.27" + rollup: "npm:^3.27.1" + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/68969ccf72ad2078aec7d9e023fce6de03746a4761f9308924212fff7bd42487145b270166cec66cddacfd7b1315ec5aa39ead174fbd7fcd463637a96ff4c9d1 + languageName: node + linkType: hard + +"vm-browserify@npm:^1.0.1": + version: 1.1.2 + resolution: "vm-browserify@npm:1.1.2" + checksum: 10c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b + languageName: node + linkType: hard + +"vscode-jsonrpc@npm:8.2.0": + version: 8.2.0 + resolution: "vscode-jsonrpc@npm:8.2.0" + checksum: 10c0/0789c227057a844f5ead55c84679206227a639b9fb76e881185053abc4e9848aa487245966cc2393fcb342c4541241b015a1a2559fddd20ac1e68945c95344e6 + languageName: node + linkType: hard + +"vscode-languageserver-protocol@npm:^3.15.3": + version: 3.17.5 + resolution: "vscode-languageserver-protocol@npm:3.17.5" + dependencies: + vscode-jsonrpc: "npm:8.2.0" + vscode-languageserver-types: "npm:3.17.5" + checksum: 10c0/5f38fd80da9868d706eaa4a025f4aff9c3faad34646bcde1426f915cbd8d7e8b6c3755ce3fef6eebd256ba3145426af1085305f8a76e34276d2e95aaf339a90b + languageName: node + linkType: hard + +"vscode-languageserver-textdocument@npm:1.0.8": + version: 1.0.8 + resolution: "vscode-languageserver-textdocument@npm:1.0.8" + checksum: 10c0/2981b4d0935c47d76fda9d80840b71de414990a2976840106a462277a26002c7abe2453ab872a00861803cf62ed6b340c6ecbc7a3549788309e28096b73a4d52 + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.17.3": + version: 3.17.3 + resolution: "vscode-languageserver-types@npm:3.17.3" + checksum: 10c0/a70d4ac0dbc08ba425b97e329e6a5696dabc6a264415bacb861e10d859b224f1b46d1fb41c17b6fdd31b32749d3bdfc819cb1b8a57dbe0d1e70e661ba8cfa397 + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.17.5": + version: 3.17.5 + resolution: "vscode-languageserver-types@npm:3.17.5" + checksum: 10c0/1e1260de79a2cc8de3e46f2e0182cdc94a7eddab487db5a3bd4ee716f67728e685852707d72c059721ce500447be9a46764a04f0611e94e4321ffa088eef36f8 + languageName: node + linkType: hard + +"vscode-languageserver@npm:6.1.1": + version: 6.1.1 + resolution: "vscode-languageserver@npm:6.1.1" + dependencies: + vscode-languageserver-protocol: "npm:^3.15.3" + bin: + installServerIntoExtension: ./bin/installServerIntoExtension + checksum: 10c0/90d7a6a3d3428a381d84a563299ebb59cec3f534ec78b76f6444f79da514380088b7bab2f2c428e15f071afa0b75aaf30a97e644f314e00753231870e8ead204 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: "npm:^4.0.0" + checksum: 10c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"watchpack-chokidar2@npm:^2.0.1": + version: 2.0.1 + resolution: "watchpack-chokidar2@npm:2.0.1" + dependencies: + chokidar: "npm:^2.1.8" + checksum: 10c0/9b8d880ae2543dd4f26a69f6b7f881119494f6b772b7431027a06a5cf963e0ebc1cac91a3ef479365c358b693c65fa80a1f8297427fa11fd4c080c3d6408c372 + languageName: node + linkType: hard + +"watchpack@npm:^1.7.4": + version: 1.7.5 + resolution: "watchpack@npm:1.7.5" + dependencies: + chokidar: "npm:^3.4.1" + graceful-fs: "npm:^4.1.2" + neo-async: "npm:^2.5.0" + watchpack-chokidar2: "npm:^2.0.1" + dependenciesMeta: + chokidar: + optional: true + watchpack-chokidar2: + optional: true + checksum: 10c0/53e3b112064f5de9edbb2a14973fb3901d9697b24cc70f8531a143eaace2353a273ca25c0ba21def8d3803cfedb8f6861ca1e49e9782257e40d5b5f8f5365c86 + languageName: node + linkType: hard + +"watchpack@npm:^2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10c0/c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 + languageName: node + linkType: hard + +"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": + version: 1.7.3 + resolution: "wbuf@npm:1.7.3" + dependencies: + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"web-encoding@npm:^1.1.5": + version: 1.1.5 + resolution: "web-encoding@npm:1.1.5" + dependencies: + "@zxing/text-encoding": "npm:0.9.0" + util: "npm:^0.12.3" + dependenciesMeta: + "@zxing/text-encoding": + optional: true + checksum: 10c0/59d5413338ec0894c690006f5d8508b0c88cae1d8c78606c3f326e351c672196461ed808b849fe08d0900fa56a61fcacb9ff576499068d2ead0a7bc04afa7d34 + languageName: node + linkType: hard + +"web-streams-polyfill@npm:^3.2.1": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f + languageName: node + linkType: hard + +"web@workspace:web": + version: 0.0.0-use.local + resolution: "web@workspace:web" + dependencies: + "@redwoodjs/forms": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/vite": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" + "@types/react": "npm:^18.2.55" + "@types/react-dom": "npm:^18.2.19" + react: "npm:18.2.0" + react-dom: "npm:18.2.0" + languageName: unknown + linkType: soft + +"webcrypto-core@npm:^1.7.8": + version: 1.7.8 + resolution: "webcrypto-core@npm:1.7.8" + dependencies: + "@peculiar/asn1-schema": "npm:^2.3.8" + "@peculiar/json-schema": "npm:^1.1.12" + asn1js: "npm:^3.0.1" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 10c0/4c6ef9ae4ae27489f88b7c571494b058120178528f25efe87b97cbc64ead03a6468a614f6269927d13735e4f5ce1d1f7599cf4385ee9b61a13921964a5748a66 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"webpack-bundle-analyzer@npm:4.9.1": + version: 4.9.1 + resolution: "webpack-bundle-analyzer@npm:4.9.1" + dependencies: + "@discoveryjs/json-ext": "npm:0.5.7" + acorn: "npm:^8.0.4" + acorn-walk: "npm:^8.0.0" + commander: "npm:^7.2.0" + escape-string-regexp: "npm:^4.0.0" + gzip-size: "npm:^6.0.0" + is-plain-object: "npm:^5.0.0" + lodash.debounce: "npm:^4.0.8" + lodash.escape: "npm:^4.0.1" + lodash.flatten: "npm:^4.4.0" + lodash.invokemap: "npm:^4.6.0" + lodash.pullall: "npm:^4.2.0" + lodash.uniqby: "npm:^4.7.0" + opener: "npm:^1.5.2" + picocolors: "npm:^1.0.0" + sirv: "npm:^2.0.3" + ws: "npm:^7.3.1" + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 10c0/dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 + languageName: node + linkType: hard + +"webpack-cli@npm:5.1.4": + version: 5.1.4 + resolution: "webpack-cli@npm:5.1.4" + dependencies: + "@discoveryjs/json-ext": "npm:^0.5.0" + "@webpack-cli/configtest": "npm:^2.1.1" + "@webpack-cli/info": "npm:^2.0.2" + "@webpack-cli/serve": "npm:^2.0.5" + colorette: "npm:^2.0.14" + commander: "npm:^10.0.1" + cross-spawn: "npm:^7.0.3" + envinfo: "npm:^7.7.3" + fastest-levenshtein: "npm:^1.0.12" + import-local: "npm:^3.0.2" + interpret: "npm:^3.1.1" + rechoir: "npm:^0.8.0" + webpack-merge: "npm:^5.7.3" + peerDependencies: + webpack: 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 10c0/4266909ae5e2e662c8790ac286e965b2c7fd5a4a2f07f48e28576234c9a5f631847ccddc18e1b3281c7b4be04a7ff4717d2636033a322dde13ac995fd0d9de10 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^5.3.1": + version: 5.3.3 + resolution: "webpack-dev-middleware@npm:5.3.3" + dependencies: + colorette: "npm:^2.0.10" + memfs: "npm:^3.4.3" + mime-types: "npm:^2.1.31" + range-parser: "npm:^1.2.1" + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10c0/378ceed430b61c0b0eccdbb55a97173aa36231bb88e20ad12bafb3d553e542708fa31f08474b9c68d4ac95174a047def9e426e193b7134be3736afa66a0d1708 + languageName: node + linkType: hard + +"webpack-dev-server@npm:4.15.1": + version: 4.15.1 + resolution: "webpack-dev-server@npm:4.15.1" + dependencies: + "@types/bonjour": "npm:^3.5.9" + "@types/connect-history-api-fallback": "npm:^1.3.5" + "@types/express": "npm:^4.17.13" + "@types/serve-index": "npm:^1.9.1" + "@types/serve-static": "npm:^1.13.10" + "@types/sockjs": "npm:^0.3.33" + "@types/ws": "npm:^8.5.5" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.0.11" + chokidar: "npm:^3.5.3" + colorette: "npm:^2.0.10" + compression: "npm:^1.7.4" + connect-history-api-fallback: "npm:^2.0.0" + default-gateway: "npm:^6.0.3" + express: "npm:^4.17.3" + graceful-fs: "npm:^4.2.6" + html-entities: "npm:^2.3.2" + http-proxy-middleware: "npm:^2.0.3" + ipaddr.js: "npm:^2.0.1" + launch-editor: "npm:^2.6.0" + open: "npm:^8.0.9" + p-retry: "npm:^4.5.0" + rimraf: "npm:^3.0.2" + schema-utils: "npm:^4.0.0" + selfsigned: "npm:^2.1.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^5.3.1" + ws: "npm:^8.13.0" + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10c0/2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 + languageName: node + linkType: hard + +"webpack-manifest-plugin@npm:5.0.0": + version: 5.0.0 + resolution: "webpack-manifest-plugin@npm:5.0.0" + dependencies: + tapable: "npm:^2.0.0" + webpack-sources: "npm:^2.2.0" + peerDependencies: + webpack: ^5.47.0 + checksum: 10c0/c6baed67855c48363a7bd677bc05ac532e2d817370894ec5a785524c1df08859330198eda419efb17d0e4233dc74d194f423a4ac5d34ab5521ba2617d14ea572 + languageName: node + linkType: hard + +"webpack-merge@npm:5.10.0, webpack-merge@npm:^5.7.3": + version: 5.10.0 + resolution: "webpack-merge@npm:5.10.0" + dependencies: + clone-deep: "npm:^4.0.1" + flat: "npm:^5.0.2" + wildcard: "npm:^2.0.0" + checksum: 10c0/b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b + languageName: node + linkType: hard + +"webpack-retry-chunk-load-plugin@npm:3.1.1": + version: 3.1.1 + resolution: "webpack-retry-chunk-load-plugin@npm:3.1.1" + dependencies: + prettier: "npm:^2.6.2" + peerDependencies: + webpack: ">=5.0.0" + checksum: 10c0/62a4eda6a8d4c3a1169d41fd7d69902f06b4c39c76019f897ac3cb6958ecba5591c37386e303e7495859602386a61ac597fa970937099bcfc4f4b9a1027cece8 + languageName: node + linkType: hard + +"webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1": + version: 1.4.3 + resolution: "webpack-sources@npm:1.4.3" + dependencies: + source-list-map: "npm:^2.0.0" + source-map: "npm:~0.6.1" + checksum: 10c0/78dafb3e1e297d3f4eb6204311e8c64d28cd028f82887ba33aaf03fffc82482d8e1fdf6de25a60f4dde621d3565f4c3b1bfb350f09add8f4e54e00279ff3db5e + languageName: node + linkType: hard + +"webpack-sources@npm:^2.2.0": + version: 2.3.1 + resolution: "webpack-sources@npm:2.3.1" + dependencies: + source-list-map: "npm:^2.0.1" + source-map: "npm:^0.6.1" + checksum: 10c0/caf56a9a478eca7e77feca2b6ddc7673f1384eb870280014b300c40cf42abca656f639ff58a8d55a889a92a810ae3c22e71e578aa38fde416e8c2e6827a6ddfd + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + languageName: node + linkType: hard + +"webpack@npm:5.90.0": + version: 5.90.0 + resolution: "webpack@npm:5.90.0" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.11.5" + "@webassemblyjs/wasm-edit": "npm:^1.11.5" + "@webassemblyjs/wasm-parser": "npm:^1.11.5" + acorn: "npm:^8.7.1" + acorn-import-assertions: "npm:^1.9.0" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.15.0" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.9" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.0" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/4acec1a719a9c5b890a30a9fb18519e671e55382f2c51120b76a2c1c1c521285b6510327faf79f85a4b11c7a2c5c01e1d2e7bf73e5cddbada1503f4d51a63441 + languageName: node + linkType: hard + +"webpack@npm:^4.44.2": + version: 4.47.0 + resolution: "webpack@npm:4.47.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-module-context": "npm:1.9.0" + "@webassemblyjs/wasm-edit": "npm:1.9.0" + "@webassemblyjs/wasm-parser": "npm:1.9.0" + acorn: "npm:^6.4.1" + ajv: "npm:^6.10.2" + ajv-keywords: "npm:^3.4.1" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^4.5.0" + eslint-scope: "npm:^4.0.3" + json-parse-better-errors: "npm:^1.0.2" + loader-runner: "npm:^2.4.0" + loader-utils: "npm:^1.2.3" + memory-fs: "npm:^0.4.1" + micromatch: "npm:^3.1.10" + mkdirp: "npm:^0.5.3" + neo-async: "npm:^2.6.1" + node-libs-browser: "npm:^2.2.1" + schema-utils: "npm:^1.0.0" + tapable: "npm:^1.1.3" + terser-webpack-plugin: "npm:^1.4.3" + watchpack: "npm:^1.7.4" + webpack-sources: "npm:^1.4.1" + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/bc90202110a341359c11ead60ea09bd5cfa51e2c93004d7e40b7c2f76208cc6717e39c9d9544825cc44958046ada762c78a8cf9848619ea450315bce98228701 + languageName: node + linkType: hard + +"webpack@npm:^5": + version: 5.90.3 + resolution: "webpack@npm:5.90.3" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.11.5" + "@webassemblyjs/wasm-edit": "npm:^1.11.5" + "@webassemblyjs/wasm-parser": "npm:^1.11.5" + acorn: "npm:^8.7.1" + acorn-import-assertions: "npm:^1.9.0" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.15.0" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.9" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.0" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/f737aa871cadbbae89833eb85387f1bf9ee0768f039100a3c8134f2fdcc78c3230ca775c373b1aa467b272f74c6831e119f7a8a1c14dcac97327212be9c93eeb + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: "npm:>=0.5.1" + safe-buffer: "npm:>=5.1.0" + websocket-extensions: "npm:>=0.1.1" + checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e + languageName: node + linkType: hard + +"whatwg-fetch@npm:3.6.19": + version: 3.6.19 + resolution: "whatwg-fetch@npm:3.6.19" + checksum: 10c0/01dd755492d594c8d71d47811bb3886cdb7d566684daff5ec658cf148fa2418de6b562a94ff8cceaf1cf277bfb99fa6b61258cc20de5053f5817a4d419b5d293 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: "npm:^3.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.3": + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" + dependencies: + function.prototype.name: "npm:^1.1.5" + has-tostringtag: "npm:^1.0.0" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.9" + checksum: 10c0/2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: "npm:^2.0.1" + is-set: "npm:^2.0.1" + is-weakmap: "npm:^2.0.1" + is-weakset: "npm:^2.0.1" + checksum: 10c0/249f913e1758ed2f06f00706007d87dc22090a80591a56917376e70ecf8fc9ab6c41d98e1c87208bb9648676f65d4b09c0e4d23c56c7afb0f0a73a27d701df5d + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.14 + resolution: "which-typed-array@npm:1.1.14" + dependencies: + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.5" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.1" + checksum: 10c0/0960f1e77807058819451b98c51d4cd72031593e8de990b24bd3fc22e176f5eee22921d68d852297c786aec117689f0423ed20aa4fde7ce2704d680677891f56 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: 10c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f + languageName: node + linkType: hard + +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: 10c0/08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 + languageName: node + linkType: hard + +"worker-farm@npm:^1.7.0": + version: 1.7.0 + resolution: "worker-farm@npm:1.7.0" + dependencies: + errno: "npm:~0.1.7" + checksum: 10c0/069a032f9198a07273a7608dc0c23d7288c1c25256b66008e1ae95838cda6fa2c7aefb3b7ba760f975c8d18120ca54eb193afb66d7237b2a05e5da12c1c961f7 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^2.0.0, write-file-atomic@npm:^2.3.0": + version: 2.4.3 + resolution: "write-file-atomic@npm:2.4.3" + dependencies: + graceful-fs: "npm:^4.1.11" + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8cb4bba0c1ab814a9b127844da0db4fb8c5e06ddbe6317b8b319377c73b283673036c8b9360120062898508b9428d81611cf7fa97584504a00bc179b2a580b92 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"ws@npm:8.13.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + languageName: node + linkType: hard + +"ws@npm:^7.3.1": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 + languageName: node + linkType: hard + +"ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.4.2": + version: 8.16.0 + resolution: "ws@npm:8.16.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/a7783bb421c648b1e622b423409cb2a58ac5839521d2f689e84bc9dc41d59379c692dd405b15a997ea1d4c0c2e5314ad707332d0c558f15232d2bc07c0b4618a + languageName: node + linkType: hard + +"xdg-basedir@npm:^3.0.0": + version: 3.0.0 + resolution: "xdg-basedir@npm:3.0.0" + checksum: 10c0/c3be36400d8a69c9154ce6ccff98832dae0d04f8bacda806f609d3955beb23dc7c9dde724438b81e6128bf253d440a2bfe0239dd37d70333ab625c4e170b77b2 + languageName: node + linkType: hard + +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + languageName: node + linkType: hard + +"xregexp@npm:4.0.0": + version: 4.0.0 + resolution: "xregexp@npm:4.0.0" + checksum: 10c0/cc7f49f03b999013544ce9d58ffc356f71c95c21b5e0478386f2c639fb2a89adf02cf9dbe25e9262e1e336d7b812c220aa3a644a4ac39020747ddb6773b6284f + languageName: node + linkType: hard + +"xtend@npm:^4.0.0, xtend@npm:~4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yaml-ast-parser@npm:^0.0.43": + version: 0.0.43 + resolution: "yaml-ast-parser@npm:0.0.43" + checksum: 10c0/4d2f1e761067b2c6abdd882279a406f879258787af470a6d4a659cb79cb2ab056b870b25f1f80f46ed556e8b499d611d247806376f53edf3412f72c0a8ea2e98 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + +"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 + languageName: node + linkType: hard + +"yargs@npm:17.7.2, yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yargs@npm:^15.3.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: "npm:^6.0.0" + decamelize: "npm:^1.2.0" + find-up: "npm:^4.1.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^4.2.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^18.1.2" + checksum: 10c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 10c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + languageName: node + linkType: hard + +"zen-observable-ts@npm:^1.2.5": + version: 1.2.5 + resolution: "zen-observable-ts@npm:1.2.5" + dependencies: + zen-observable: "npm:0.8.15" + checksum: 10c0/21d586f3d0543e1d6f05d9333a137b407dbf337907c1ee1c2fa7a7da044f7e1262e4baf4ef8902f230c6f5acb561047659eb7df73df33307233cc451efe46db1 + languageName: node + linkType: hard + +"zen-observable@npm:0.8.15": + version: 0.8.15 + resolution: "zen-observable@npm:0.8.15" + checksum: 10c0/71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8 + languageName: node + linkType: hard + +"zip-stream@npm:^5.0.1": + version: 5.0.1 + resolution: "zip-stream@npm:5.0.1" + dependencies: + archiver-utils: "npm:^4.0.1" + compress-commons: "npm:^5.0.1" + readable-stream: "npm:^3.6.0" + checksum: 10c0/18b4ecf28824bd165709de5056d53cf611f07e0b7578508fa94c497f17164722dc19a0739ea8b2c1a296de7d3f70f7ad558e7a3a4929240fb2730afc5fd60679 + languageName: node + linkType: hard diff --git a/packages/create-redwood-app/templates/ts/api/package.json b/packages/create-redwood-app/templates/ts/api/package.json index 4ff4b4693ea9..aa20a71a09b1 100644 --- a/packages/create-redwood-app/templates/ts/api/package.json +++ b/packages/create-redwood-app/templates/ts/api/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "private": true, "dependencies": { - "@redwoodjs/api": "6.0.7", - "@redwoodjs/graphql-server": "6.0.7" + "@redwoodjs/api": "7.0.0", + "@redwoodjs/graphql-server": "7.0.0" } } diff --git a/packages/create-redwood-app/templates/ts/package.json b/packages/create-redwood-app/templates/ts/package.json index e74028e8ed71..eb82cb3cd099 100644 --- a/packages/create-redwood-app/templates/ts/package.json +++ b/packages/create-redwood-app/templates/ts/package.json @@ -7,8 +7,8 @@ ] }, "devDependencies": { - "@redwoodjs/core": "6.0.7", - "@redwoodjs/project-config": "6.0.7" + "@redwoodjs/core": "7.0.0", + "@redwoodjs/project-config": "7.0.0" }, "eslintConfig": { "extends": "@redwoodjs/eslint-config", diff --git a/packages/create-redwood-app/templates/ts/web/package.json b/packages/create-redwood-app/templates/ts/web/package.json index bd94315e00cb..80467e69b76a 100644 --- a/packages/create-redwood-app/templates/ts/web/package.json +++ b/packages/create-redwood-app/templates/ts/web/package.json @@ -11,14 +11,14 @@ ] }, "dependencies": { - "@redwoodjs/forms": "6.0.7", - "@redwoodjs/router": "6.0.7", - "@redwoodjs/web": "6.0.7", + "@redwoodjs/forms": "7.0.0", + "@redwoodjs/router": "7.0.0", + "@redwoodjs/web": "7.0.0", "react": "18.2.0", "react-dom": "18.2.0" }, "devDependencies": { - "@redwoodjs/vite": "6.0.7", + "@redwoodjs/vite": "7.0.0", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19" } diff --git a/packages/create-redwood-app/templates/ts/yarn.lock b/packages/create-redwood-app/templates/ts/yarn.lock new file mode 100644 index 000000000000..45c9f67508d5 --- /dev/null +++ b/packages/create-redwood-app/templates/ts/yarn.lock @@ -0,0 +1,21244 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: 10c0/53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f + languageName: node + linkType: hard + +"@adobe/css-tools@npm:^4.3.2": + version: 4.3.3 + resolution: "@adobe/css-tools@npm:4.3.3" + checksum: 10c0/e76e712df713964b87cdf2aca1f0477f19bebd845484d5fcba726d3ec7782366e2f26ec8cb2dcfaf47081a5c891987d8a9f5c3f30d11e1eb3c1848adc27fcb24 + languageName: node + linkType: hard + +"@ampproject/remapping@npm:^2.2.0": + version: 2.2.1 + resolution: "@ampproject/remapping@npm:2.2.1" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/92ce5915f8901d8c7cd4f4e6e2fe7b9fd335a29955b400caa52e0e5b12ca3796ada7c2f10e78c9c5b0f9c2539dff0ffea7b19850a56e1487aa083531e1e46d43 + languageName: node + linkType: hard + +"@apollo/client@npm:3.8.10": + version: 3.8.10 + resolution: "@apollo/client@npm:3.8.10" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + "@wry/equality": "npm:^0.5.6" + "@wry/trie": "npm:^0.5.0" + graphql-tag: "npm:^2.12.6" + hoist-non-react-statics: "npm:^3.3.2" + optimism: "npm:^0.18.0" + prop-types: "npm:^15.7.2" + response-iterator: "npm:^0.2.6" + symbol-observable: "npm:^4.0.0" + ts-invariant: "npm:^0.10.3" + tslib: "npm:^2.3.0" + zen-observable-ts: "npm:^1.2.5" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-ws: ^5.5.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + subscriptions-transport-ws: ^0.9.0 || ^0.11.0 + peerDependenciesMeta: + graphql-ws: + optional: true + react: + optional: true + react-dom: + optional: true + subscriptions-transport-ws: + optional: true + checksum: 10c0/983306f61de042aca2f02e414533fbdac0c9c905648a98b42bb79bccb19012306eebb3c55c6d665523addbc1948625d1aae70bdc2dd511775b7a962a40dfc5b1 + languageName: node + linkType: hard + +"@ardatan/relay-compiler@npm:12.0.0": + version: 12.0.0 + resolution: "@ardatan/relay-compiler@npm:12.0.0" + dependencies: + "@babel/core": "npm:^7.14.0" + "@babel/generator": "npm:^7.14.0" + "@babel/parser": "npm:^7.14.0" + "@babel/runtime": "npm:^7.0.0" + "@babel/traverse": "npm:^7.14.0" + "@babel/types": "npm:^7.0.0" + babel-preset-fbjs: "npm:^3.4.0" + chalk: "npm:^4.0.0" + fb-watchman: "npm:^2.0.0" + fbjs: "npm:^3.0.0" + glob: "npm:^7.1.1" + immutable: "npm:~3.7.6" + invariant: "npm:^2.2.4" + nullthrows: "npm:^1.1.1" + relay-runtime: "npm:12.0.0" + signedsource: "npm:^1.0.0" + yargs: "npm:^15.3.1" + peerDependencies: + graphql: "*" + bin: + relay-compiler: bin/relay-compiler + checksum: 10c0/7207d65dd39d3a6202fcee81b03338409642a0ff4e7f799b4a074025429ce2b17b6c71c9579a6328b0f4548763ba4efbff0436cddbcad934af00cc4dbc7ac4e1 + languageName: node + linkType: hard + +"@ardatan/sync-fetch@npm:^0.0.1": + version: 0.0.1 + resolution: "@ardatan/sync-fetch@npm:0.0.1" + dependencies: + node-fetch: "npm:^2.6.1" + checksum: 10c0/cd69134005ef5ea570d55631c8be59b593e2dda2207f616d30618f948af6ee5d227b857aefd56c535e8f7f3ade47083e4e7795b5ee014a6732011c6e5f9eb08f + languageName: node + linkType: hard + +"@babel/cli@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/cli@npm:7.23.9" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.17" + "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3" + chokidar: "npm:^3.4.0" + commander: "npm:^4.0.1" + convert-source-map: "npm:^2.0.0" + fs-readdir-recursive: "npm:^1.1.0" + glob: "npm:^7.2.0" + make-dir: "npm:^2.1.0" + slash: "npm:^2.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + dependenciesMeta: + "@nicolo-ribaudo/chokidar-2": + optional: true + chokidar: + optional: true + bin: + babel: ./bin/babel.js + babel-external-helpers: ./bin/babel-external-helpers.js + checksum: 10c0/0a5e9399e95ff0efea10db217e48682e025bd09d51aa96886e5c4d8c7b9d2115bc17d00704dc05e9ae7ab858c26467fec15e87a100cf995567c395f2941df4a0 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" + dependencies: + "@babel/highlight": "npm:^7.23.4" + chalk: "npm:^2.4.2" + checksum: 10c0/a10e843595ddd9f97faa99917414813c06214f4d9205294013e20c70fbdf4f943760da37dec1d998bf3e6fc20fa2918a47c0e987a7e458663feb7698063ad7c6 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.23.3, @babel/compat-data@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/compat-data@npm:7.23.5" + checksum: 10c0/081278ed46131a890ad566a59c61600a5f9557bd8ee5e535890c8548192532ea92590742fd74bd9db83d74c669ef8a04a7e1c85cdea27f960233e3b83c3a957c + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.1, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.12.9, @babel/core@npm:^7.13.16, @babel/core@npm:^7.14.0, @babel/core@npm:^7.22.20, @babel/core@npm:^7.23.5, @babel/core@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/core@npm:7.23.9" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helpers": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@babel/template": "npm:^7.23.9" + "@babel/traverse": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/03883300bf1252ab4c9ba5b52f161232dd52873dbe5cde9289bb2bb26e935c42682493acbac9194a59a3b6cbd17f4c4c84030db8d6d482588afe64531532ff9b + languageName: node + linkType: hard + +"@babel/eslint-parser@npm:7.23.10": + version: 7.23.10 + resolution: "@babel/eslint-parser@npm:7.23.10" + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" + eslint-visitor-keys: "npm:^2.1.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + checksum: 10c0/dfc091d44c86c72658d53abe66c778f7aa436672d66ae99a0b72857c968defed4749c18d2d3a35b1f61c77a193761ae7a71997dbe43c4c7cffcf945bd106bd67 + languageName: node + linkType: hard + +"@babel/eslint-plugin@npm:7.23.5": + version: 7.23.5 + resolution: "@babel/eslint-plugin@npm:7.23.5" + dependencies: + eslint-rule-composer: "npm:^0.3.0" + peerDependencies: + "@babel/eslint-parser": ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + checksum: 10c0/adaf0975bab774c9a7ddd7aac6f2f7e4e0b087fea24759d8538ebe988b72eaca5928d9afc6b9c13927bf3e3c6ac66795d1060f6a8bfa9748de27f5d93d3fef64 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.14.0, @babel/generator@npm:^7.18.13, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.7.2": + version: 7.23.6 + resolution: "@babel/generator@npm:7.23.6" + dependencies: + "@babel/types": "npm:^7.23.6" + "@jridgewell/gen-mapping": "npm:^0.3.2" + "@jridgewell/trace-mapping": "npm:^0.3.17" + jsesc: "npm:^2.5.1" + checksum: 10c0/53540e905cd10db05d9aee0a5304e36927f455ce66f95d1253bb8a179f286b88fa7062ea0db354c566fe27f8bb96567566084ffd259f8feaae1de5eccc8afbda + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-annotate-as-pure@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/5a80dc364ddda26b334bbbc0f6426cab647381555ef7d0cd32eb284e35b867c012ce6ce7d52a64672ed71383099c99d32765b3d260626527bb0e3470b0f58e45 + languageName: node + linkType: hard + +"@babel/helper-builder-binary-assignment-operator-visitor@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-builder-binary-assignment-operator-visitor@npm:7.22.15" + dependencies: + "@babel/types": "npm:^7.22.15" + checksum: 10c0/2535e3824ca6337f65786bbac98e562f71699f25532cecd196f027d7698b4967a96953d64e36567956658ad1a05ccbdc62d1ba79ee751c79f4f1d2d3ecc2e01c + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/helper-compilation-targets@npm:7.23.6" + dependencies: + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-validator-option": "npm:^7.23.5" + browserslist: "npm:^4.22.2" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/ba38506d11185f48b79abf439462ece271d3eead1673dd8814519c8c903c708523428806f05f2ec5efd0c56e4e278698fac967e5a4b5ee842c32415da54bc6fa + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.18.6, @babel/helper-create-class-features-plugin@npm:^7.22.15, @babel/helper-create-class-features-plugin@npm:^7.23.6": + version: 7.23.10 + resolution: "@babel/helper-create-class-features-plugin@npm:7.23.10" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-member-expression-to-functions": "npm:^7.23.0" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/f30437aa16f3585cc3382ea630f24457ef622c22f5e4eccffbc03f6a81efbef0b6714fb5a78baa64c838884ba7e1427e3280d7b27481b9f587bc8fbbed05dd36 + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.22.15, @babel/helper-create-regexp-features-plugin@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.22.15" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + regexpu-core: "npm:^5.3.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/8eba4c1b7b94a83e7a82df5c3e504584ff0ba6ab8710a67ecc2c434a7fb841a29c2f5c94d2de51f25446119a1df538fa90b37bd570db22ddd5e7147fe98277c6 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.5.0": + version: 0.5.0 + resolution: "@babel/helper-define-polyfill-provider@npm:0.5.0" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/2b053b96a0c604a7e0f5c7d13a8a55f4451d938f7af42bd40f62a87df15e6c87a0b1dbd893a0f0bb51077b54dc3ba00a58b166531a5940ad286ab685dd8979ec + languageName: node + linkType: hard + +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: 10c0/e762c2d8f5d423af89bd7ae9abe35bd4836d2eb401af868a63bbb63220c513c783e25ef001019418560b3fdc6d9a6fb67e6c0b650bcdeb3a2ac44b5c3d2bdd94 + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.22.5, @babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.23.0" + checksum: 10c0/d771dd1f3222b120518176733c52b7cadac1c256ff49b1889dbbe5e3fed81db855b8cc4e40d949c9d3eae0e795e8229c1c8c24c0e83f27cfa6ee3766696c6428 + languageName: node + linkType: hard + +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/60a3077f756a1cd9f14eb89f0037f487d81ede2b7cfe652ea6869cd4ec4c782b0fb1de01b8494b9a2d2050e3d154d7d5ad3be24806790acfb8cbe2073bf1e208 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.22.15, @babel/helper-member-expression-to-functions@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.23.0" + dependencies: + "@babel/types": "npm:^7.23.0" + checksum: 10c0/b810daddf093ffd0802f1429052349ed9ea08ef7d0c56da34ffbcdecbdafac86f95bdea2fe30e0e0e629febc7dd41b56cb5eacc10d1a44336d37b755dac31fa4 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/helper-module-imports@npm:7.22.15" + dependencies: + "@babel/types": "npm:^7.22.15" + checksum: 10c0/4e0d7fc36d02c1b8c8b3006dfbfeedf7a367d3334a04934255de5128115ea0bafdeb3e5736a2559917f0653e4e437400d54542da0468e08d3cbc86d3bbfa8f30 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/helper-module-transforms@npm:7.23.3" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-simple-access": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/211e1399d0c4993671e8e5c2b25383f08bee40004ace5404ed4065f0e9258cc85d99c1b82fd456c030ce5cfd4d8f310355b54ef35de9924eabfc3dff1331d946 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-optimise-call-expression@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/31b41a764fc3c585196cf5b776b70cf4705c132e4ce9723f39871f215f2ddbfb2e28a62f9917610f67c8216c1080482b9b05f65dd195dae2a52cef461f2ac7b8 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.8.0, @babel/helper-plugin-utils@npm:^7.8.3": + version: 7.22.5 + resolution: "@babel/helper-plugin-utils@npm:7.22.5" + checksum: 10c0/d2c4bfe2fa91058bcdee4f4e57a3f4933aed7af843acfd169cd6179fab8d13c1d636474ecabb2af107dc77462c7e893199aa26632bac1c6d7e025a17cbb9d20d + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-remap-async-to-generator@npm:7.22.20" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-wrap-function": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/aa93aa74250b636d477e8d863fbe59d4071f8c2654841b7ac608909e480c1cf3ff7d7af5a4038568829ad09d810bb681668cbe497d9c89ba5c352793dc9edf1e + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-replace-supers@npm:7.22.20" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-member-expression-to-functions": "npm:^7.22.15" + "@babel/helper-optimise-call-expression": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/6b0858811ad46873817c90c805015d63300e003c5a85c147a17d9845fa2558a02047c3cc1f07767af59014b2dd0fa75b503e5bc36e917f360e9b67bb6f1e79f4 + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-simple-access@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/f0cf81a30ba3d09a625fd50e5a9069e575c5b6719234e04ee74247057f8104beca89ed03e9217b6e9b0493434cedc18c5ecca4cea6244990836f1f893e140369 + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.20.0, @babel/helper-skip-transparent-expression-wrappers@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.22.5" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/ab7fa2aa709ab49bb8cd86515a1e715a3108c4bb9a616965ba76b43dc346dee66d1004ccf4d222b596b6224e43e04cbc5c3a34459501b388451f8c589fbc3691 + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": "npm:^7.22.5" + checksum: 10c0/d83e4b623eaa9622c267d3c83583b72f3aac567dc393dda18e559d79187961cb29ae9c57b2664137fc3d19508370b12ec6a81d28af73a50e0846819cb21c6e44 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/helper-string-parser@npm:7.23.4" + checksum: 10c0/f348d5637ad70b6b54b026d6544bd9040f78d24e7ec245a0fc42293968181f6ae9879c22d89744730d246ce8ec53588f716f102addd4df8bbc79b73ea10004ac + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 10c0/dcad63db345fb110e032de46c3688384b0008a42a4845180ce7cd62b1a9c0507a1bed727c4d1060ed1a03ae57b4d918570259f81724aaac1a5b776056f37504e + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.23.5": + version: 7.23.5 + resolution: "@babel/helper-validator-option@npm:7.23.5" + checksum: 10c0/af45d5c0defb292ba6fd38979e8f13d7da63f9623d8ab9ededc394f67eb45857d2601278d151ae9affb6e03d5d608485806cd45af08b4468a0515cf506510e94 + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-wrap-function@npm:7.22.20" + dependencies: + "@babel/helper-function-name": "npm:^7.22.5" + "@babel/template": "npm:^7.22.15" + "@babel/types": "npm:^7.22.19" + checksum: 10c0/97b5f42ff4d305318ff2f99a5f59d3e97feff478333b2d893c4f85456d3c66372070f71d7bf9141f598c8cf2741c49a15918193633c427a88d170d98eb8c46eb + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/helpers@npm:7.23.9" + dependencies: + "@babel/template": "npm:^7.23.9" + "@babel/traverse": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + checksum: 10c0/f69fd0aca96a6fb8bd6dd044cd8a5c0f1851072d4ce23355345b9493c4032e76d1217f86b70df795e127553cf7f3fcd1587ede9d1b03b95e8b62681ca2165b87 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.22.20" + chalk: "npm:^2.4.2" + js-tokens: "npm:^4.0.0" + checksum: 10c0/fbff9fcb2f5539289c3c097d130e852afd10d89a3a08ac0b5ebebbc055cc84a4bcc3dcfed463d488cde12dd0902ef1858279e31d7349b2e8cee43913744bda33 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.1.6, @babel/parser@npm:^7.13.16, @babel/parser@npm:^7.14.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.8, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.3.2": + version: 7.23.9 + resolution: "@babel/parser@npm:7.23.9" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/7df97386431366d4810538db4b9ec538f4377096f720c0591c7587a16f6810e62747e9fbbfa1ff99257fd4330035e4fb1b5b77c7bd3b97ce0d2e3780a6618975 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/356a4e9fc52d7ca761ce6857fc58e2295c2785d22565760e6a5680be86c6e5883ab86e0ba25ef572882c01713d3a31ae6cfa3e3222cdb95e6026671dab1fa415 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/a8785f099d55ca71ed89815e0f3a636a80c16031f80934cfec17c928d096ee0798964733320c8b145ef36ba429c5e19d5107b06231e0ab6777cfb0f01adfdc23 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.23.7": + version: 7.23.7 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.23.7" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/355746e21ad7f43e4f4daef54cfe2ef461ecd19446b2afedd53c39df1bf9aa2eeeeaabee2279b1321de89a97c9360e4f76e9ba950fee50ff1676c25f6929d625 + languageName: node + linkType: hard + +"@babel/plugin-proposal-class-properties@npm:^7.0.0, @babel/plugin-proposal-class-properties@npm:^7.13.0": + version: 7.18.6 + resolution: "@babel/plugin-proposal-class-properties@npm:7.18.6" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d5172ac6c9948cdfc387e94f3493ad86cb04035cf7433f86b5d358270b1b9752dc25e176db0c5d65892a246aca7bdb4636672e15626d7a7de4bc0bd0040168d9 + languageName: node + linkType: hard + +"@babel/plugin-proposal-nullish-coalescing-operator@npm:^7.13.8": + version: 7.18.6 + resolution: "@babel/plugin-proposal-nullish-coalescing-operator@npm:7.18.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f6629158196ee9f16295d16db75825092ef543f8b98f4dfdd516e642a0430c7b1d69319ee676d35485d9b86a53ade6de0b883490d44de6d4336d38cdeccbe0bf + languageName: node + linkType: hard + +"@babel/plugin-proposal-object-rest-spread@npm:^7.0.0": + version: 7.20.7 + resolution: "@babel/plugin-proposal-object-rest-spread@npm:7.20.7" + dependencies: + "@babel/compat-data": "npm:^7.20.5" + "@babel/helper-compilation-targets": "npm:^7.20.7" + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.20.7" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b9818749bb49d8095df64c45db682448d04743d96722984cbfd375733b2585c26d807f84b4fdb28474f2d614be6a6ffe3d96ffb121840e9e5345b2ccc0438bd8 + languageName: node + linkType: hard + +"@babel/plugin-proposal-optional-chaining@npm:^7.13.12": + version: 7.21.0 + resolution: "@babel/plugin-proposal-optional-chaining@npm:7.21.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.20.0" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b524a61b1de3f3ad287cd1e98c2a7f662178d21cd02205b0d615512e475f0159fa1b569fa7e34c8ed67baef689c0136fa20ba7d1bf058d186d30736a581a723f + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.0.0, @babel/plugin-syntax-class-properties@npm:^7.12.13, @babel/plugin-syntax-class-properties@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-dynamic-import@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9c50927bf71adf63f60c75370e2335879402648f468d0172bc912e303c6a3876927d8eb35807331b57f415392732ed05ab9b42c68ac30a936813ab549e0246c5 + languageName: node + linkType: hard + +"@babel/plugin-syntax-export-namespace-from@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-export-namespace-from@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5100d658ba563829700cd8d001ddc09f4c0187b1a13de300d729c5b3e87503f75a6d6c99c1794182f7f1a9f546ee009df4f15a0ce36376e206ed0012fa7cdc24 + languageName: node + linkType: hard + +"@babel/plugin-syntax-flow@npm:^7.0.0, @babel/plugin-syntax-flow@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-flow@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8a5e1e8b6a3728a2c8fe6d70c09a43642e737d9c0485e1b041cd3a6021ef05376ec3c9137be3b118c622ba09b5770d26fdc525473f8d06d4ab9e46de2783dd0a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.20.0, @babel/plugin-syntax-import-assertions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7db8b59f75667bada2293353bb66b9d5651a673b22c72f47da9f5c46e719142481601b745f9822212fd7522f92e26e8576af37116f85dae1b5e5967f80d0faab + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/99b40d33d79205a8e04bb5dea56fd72906ffc317513b20ca7319e7683e18fce8ea2eea5e9171056f92b979dc0ab1e31b2cb5171177a5ba61e05b54fe7850a606 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4, @babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.0.0, @babel/plugin-syntax-jsx@npm:^7.23.3, @babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-jsx@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/563bb7599b868773f1c7c1d441ecc9bc53aeb7832775da36752c926fc402a1fa5421505b39e724f71eb217c13e4b93117e081cac39723b0e11dac4c897f33c3e + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4, @babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4, @babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.0.0, @babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5, @babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.23.3, @babel/plugin-syntax-typescript@npm:^7.7.2": + version: 7.23.3 + resolution: "@babel/plugin-syntax-typescript@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4d6e9cdb9d0bfb9bd9b220fc951d937fce2ca69135ec121153572cebe81d86abc9a489208d6b69ee5f10cadcaeffa10d0425340a5029e40e14a6025021b90948 + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.0.0, @babel/plugin-transform-arrow-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b128315c058f5728d29b0b78723659b11de88247ea4d0388f0b935cddf60a80c40b9067acf45cbbe055bd796928faef152a09d9e4a0695465aca4394d9f109ca + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.23.9" + dependencies: + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.20" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4ff75f9ce500e1de8c0236fa5122e6475a477d19cb9a4c2ae8651e78e717ebb2e2cecfeca69d420def779deaec78b945843b9ffd15f02ecd7de5072030b4469b + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.23.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-remap-async-to-generator": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/da3ffd413eef02a8e2cfee3e0bb0d5fc0fcb795c187bc14a5a8e8874cdbdc43bbf00089c587412d7752d97efc5967c3c18ff5398e3017b9a14a06126f017e7e9 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.0.0, @babel/plugin-transform-block-scoped-functions@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/82c12a11277528184a979163de7189ceb00129f60dd930b0d5313454310bf71205f302fb2bf0430247161c8a22aaa9fb9eec1459f9f7468206422c191978fd59 + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.0.0, @babel/plugin-transform-block-scoping@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-block-scoping@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/83006804dddf980ab1bcd6d67bc381e24b58c776507c34f990468f820d0da71dba3697355ca4856532fa2eeb2a1e3e73c780f03760b5507a511cbedb0308e276 + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.22.5, @babel/plugin-transform-class-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-class-properties@npm:7.23.3" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bca30d576f539eef216494b56d610f1a64aa9375de4134bc021d9660f1fa735b1d7cc413029f22abc0b7cb737e3a57935c8ae9d8bd1730921ccb1deebce51bfd + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-class-static-block@npm:7.23.4" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/fdca96640ef29d8641a7f8de106f65f18871b38cc01c0f7b696d2b49c76b77816b30a812c08e759d06dd10b4d9b3af6b5e4ac22a2017a88c4077972224b77ab0 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.0.0, @babel/plugin-transform-classes@npm:^7.23.8": + version: 7.23.8 + resolution: "@babel/plugin-transform-classes@npm:7.23.8" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/227ac5166501e04d9e7fbd5eda6869b084ffa4af6830ac12544ac6ea14953ca00eb1762b0df9349c0f6c8d2a799385910f558066cd0fb85b9ca437b1131a6043 + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.0.0, @babel/plugin-transform-computed-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-computed-properties@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/template": "npm:^7.22.15" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3ca8a006f8e652b58c21ecb84df1d01a73f0a96b1d216fd09a890b235dd90cb966b152b603b88f7e850ae238644b1636ce5c30b7c029c0934b43383932372e4a + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.0.0, @babel/plugin-transform-destructuring@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-destructuring@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/717e9a62c1b0c93c507f87b4eaf839ec08d3c3147f14d74ae240d8749488d9762a8b3950132be620a069bde70f4b3e4ee9867b226c973fcc40f3cdec975cde71 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6c89286d1277c2a63802a453c797c87c1203f89e4c25115f7b6620f5fce15d8c8d37af613222f6aa497aa98773577a6ec8752e79e13d59bc5429270677ea010b + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/7e2640e4e6adccd5e7b0615b6e9239d7c98363e21c52086ea13759dfa11cf7159b255fc5331c2de435639ea8eb6acefae115ae0d797a3d19d12587652f8052a5 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/19ae4a4a2ca86d35224734c41c48b2aa6a13139f3cfa1cbd18c0e65e461de8b65687dec7e52b7a72bb49db04465394c776aa1b13a2af5dc975b2a0cde3dcab67 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.23.3" + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c33ee6a1bdc52fcdf0807f445b27e3fbdce33008531885e65a699762327565fffbcfde8395be7f21bcb22d582e425eddae45650c986462bb84ba68f43687516 + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/38bf04f851e36240bbe83ace4169da626524f4107bfb91f05b4ad93a5fb6a36d5b3d30b8883c1ba575ccfc1bac7938e90ca2e3cb227f7b3f4a9424beec6fd4a7 + languageName: node + linkType: hard + +"@babel/plugin-transform-flow-strip-types@npm:^7.0.0, @babel/plugin-transform-flow-strip-types@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-flow-strip-types@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-flow": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9ab627f9668fc1f95564b26bffd6706f86205960d9ccc168236752fbef65dbe10aa0ce74faae12f48bb3b72ec7f38ef2a78b4874c222c1e85754e981639f3b33 + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.0.0, @babel/plugin-transform-for-of@npm:^7.23.6": + version: 7.23.6 + resolution: "@babel/plugin-transform-for-of@npm:7.23.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46681b6ab10f3ca2d961f50d4096b62ab5d551e1adad84e64be1ee23e72eb2f26a1e30e617e853c74f1349fffe4af68d33921a128543b6f24b6d46c09a3e2aec + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.0.0, @babel/plugin-transform-function-name@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-function-name@npm:7.23.3" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/89cb9747802118048115cf92a8f310752f02030549b26f008904990cbdc86c3d4a68e07ca3b5c46de8a46ed4df2cb576ac222c74c56de67253d2a3ddc2956083 + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-json-strings@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/39e82223992a9ad857722ae051291935403852ad24b0dd64c645ca1c10517b6bf9822377d88643fed8b3e61a4e3f7e5ae41cf90eb07c40a786505d47d5970e54 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.0.0, @babel/plugin-transform-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8292106b106201464c2bfdd5c014fe6a9ca1c0256eb0a8031deb20081e21906fe68b156186f77d993c23eeab6d8d6f5f66e8895eec7ed97ce6de5dbcafbcd7f4 + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/87b034dd13143904e405887e6125d76c27902563486efc66b7d9a9d8f9406b76c6ac42d7b37224014af5783d7edb465db0cdecd659fa3227baad0b3a6a35deff + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.0.0, @babel/plugin-transform-member-expression-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/687f24f3ec60b627fef6e87b9e2770df77f76727b9d5f54fa4c84a495bb24eb4a20f1a6240fa22d339d45aac5eaeb1b39882e941bfd00cf498f9c53478d1ec88 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-amd@npm:7.23.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9f7ec036f7cfc588833a4dd117a44813b64aa4c1fd5bfb6c78f60198c1d290938213090c93a46f97a68a2490fad909e21a82b2472e95da74d108c125df21c8d5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.0.0, @babel/plugin-transform-modules-commonjs@npm:^7.13.8, @babel/plugin-transform-modules-commonjs@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-simple-access": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c8840c5c9ecba39367ae17c973ed13dbc43234147b77ae780eec65010e2a9993c5d717721b23e8179f7cf49decdd325c509b241d69cfbf92aa647a1d8d5a37d + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.23.9" + dependencies: + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-identifier": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1926631fe9d87c0c53427a3420ad49da62d53320d0016b6afab64e5417a672aa5bdff3ea1d24746ffa1e43319c28a80f5d8cef0ad214760d399c293b5850500f + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-modules-umd@npm:7.23.3" + dependencies: + "@babel/helper-module-transforms": "npm:^7.23.3" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f0d2f890a15b4367d0d8f160bed7062bdb145c728c24e9bfbc1211c7925aae5df72a88df3832c92dd2011927edfed4da1b1249e4c78402e893509316c0c2caa6 + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.22.5" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b0b072bef303670b5a98307bc37d1ac326cb7ad40ea162b89a03c2ffc465451be7ef05be95cb81ed28bfeb29670dc98fe911f793a67bceab18b4cb4c81ef48f3 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-new-target@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f489b9e1f17b42b2ba6312d58351e757cb23a8409f64f2bb6af4c09d015359588a5d68943b20756f141d0931a94431c782f3ed1225228a930a04b07be0c31b04 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bce490d22da5c87ff27fffaff6ad5a4d4979b8d7b72e30857f191e9c1e1824ba73bb8d7081166289369e388f94f0ce5383a593b1fc84d09464a062c75f824b0b + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e34902da4f5588dc4812c92cb1f6a5e3e3647baf7b4623e30942f551bf1297621abec4e322ebfa50b320c987c0f34d9eb4355b3d289961d9035e2126e3119c12 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.23.4" + dependencies: + "@babel/compat-data": "npm:^7.23.3" + "@babel/helper-compilation-targets": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-transform-parameters": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b56017992ffe7fcd1dd9a9da67c39995a141820316266bcf7d77dc912980d228ccbd3f36191d234f5cc389b09157b5d2a955e33e8fb368319534affd1c72b262 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.0.0, @babel/plugin-transform-object-super@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-object-super@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-replace-supers": "npm:^7.22.20" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a6856fd8c0afbe5b3318c344d4d201d009f4051e2f6ff6237ff2660593e93c5997a58772b13d639077c3e29ced3440247b29c496cd77b13af1e7559a70009775 + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4ef61812af0e4928485e28301226ce61139a8b8cea9e9a919215ebec4891b9fea2eb7a83dc3090e2679b7d7b2c8653da601fbc297d2addc54a908b315173991e + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.23.3, @babel/plugin-transform-optional-chaining@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.23.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/305b773c29ad61255b0e83ec1e92b2f7af6aa58be4cba1e3852bddaa14f7d2afd7b4438f41c28b179d6faac7eb8d4fb5530a17920294f25d459b8f84406bfbfb + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.0.0, @babel/plugin-transform-parameters@npm:^7.20.7, @babel/plugin-transform-parameters@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-parameters@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a8d4cbe0f6ba68d158f5b4215c63004fc37a1fdc539036eb388a9792017c8496ea970a1932ccb929308f61e53dc56676ed01d8df6f42bc0a85c7fd5ba82482b7 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.22.5, @babel/plugin-transform-private-methods@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-private-methods@npm:7.23.3" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/745a655edcd111b7f91882b921671ca0613079760d8c9befe336b8a9bc4ce6bb49c0c08941831c950afb1b225b4b2d3eaac8842e732db095b04db38efd8c34f4 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.22.11, @babel/plugin-transform-private-property-in-object@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.23.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-create-class-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8d31b28f24204b4d13514cd3a8f3033abf575b1a6039759ddd6e1d82dd33ba7281f9bc85c9f38072a665d69bfa26dc40737eefaf9d397b024654a483d2357bf5 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.0.0, @babel/plugin-transform-property-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-property-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b2549f23f90cf276c2e3058c2225c3711c2ad1c417e336d3391199445a9776dd791b83be47b2b9a7ae374b40652d74b822387e31fa5267a37bf49c122e1a9747 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-display-name@npm:^7.0.0, @babel/plugin-transform-react-display-name@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-display-name@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3aed142af7bd1aed1df2bdad91ed33ba1cdd5c3c67ce6eafba821ff72f129162a197ffb55f1eb1775af276abd5545934489a8257fef6c6665ddf253a4f39a939 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-development@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/plugin-transform-react-jsx-development@npm:7.22.5" + dependencies: + "@babel/plugin-transform-react-jsx": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4d2e9e68383238feb873f6111df972df4a2ebf6256d6f787a8772241867efa975b3980f7d75ab7d750e7eaad4bd454e8cc6e106301fd7572dd389e553f5f69d2 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-self@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6b586508fc58998483d4ee93a7e784c4f4d2350e2633739cf1990b7ad172e13906f72382fdaf7f07b4e3c7e7555342634d392bdeb1a079bb64762c6368ca9a32 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx-source@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a3aad7cf738e9bfaddc26cdbb83bb9684c2e689d26fb0793d772af0c8da0cd25bb02523d192fbc6946c32143e56b472c1d33fa82466b3f2d3346e1ce8fe83cf6 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-jsx@npm:^7.0.0, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.23.4 + resolution: "@babel/plugin-transform-react-jsx@npm:7.23.4" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/types": "npm:^7.23.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8851b3adc515cd91bdb06ff3a23a0f81f0069cfef79dfb3fa744da4b7a82e3555ccb6324c4fa71ecf22508db13b9ff6a0ed96675f95fc87903b9fc6afb699580 + languageName: node + linkType: hard + +"@babel/plugin-transform-react-pure-annotations@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-react-pure-annotations@npm:7.23.3" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76287adeab656fb7f39243e5ab6a8c60069cf69fffeebd1566457d56cb2f966366a23bd755d3e369f4d0437459e3b76243df370caa7d7d2287a8560b66c53ca2 + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-regenerator@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + regenerator-transform: "npm:^0.15.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3b0e989ae5db78894ee300b24e07fbcec490c39ab48629c519377581cf94e90308f4ddc10a8914edc9f403e2d3ac7a7ae0ae09003629d852da03e2ba846299c6 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-reserved-words@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4e6d61f6c9757592661cfbd2c39c4f61551557b98cb5f0995ef10f5540f67e18dde8a42b09716d58943b6e4b7ef5c9bcf19902839e7328a4d49149e0fecdbfcd + languageName: node + linkType: hard + +"@babel/plugin-transform-runtime@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/plugin-transform-runtime@npm:7.23.9" + dependencies: + "@babel/helper-module-imports": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + babel-plugin-polyfill-corejs2: "npm:^0.4.8" + babel-plugin-polyfill-corejs3: "npm:^0.9.0" + babel-plugin-polyfill-regenerator: "npm:^0.5.5" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3b959c2b88ea0009c288fa190d9f69b0d26cb336b8a7cab54a5e54b844f33cce1996725c15305a40049c8f23ca30082ee27e1f6853ff35fad723543e3d2dba47 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.0.0, @babel/plugin-transform-shorthand-properties@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c423c66fec0b6503f50561741754c84366ef9e9818442c8881fbaa90cc363fd137084b9431cdc00ed2f1fd8c8a1a5982c4a7e1f2af3769db4caf2ac7ea55d4f0 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.0.0, @babel/plugin-transform-spread@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-spread@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a348e4ae47e4ceeceb760506ec7bf835ccc18a2cf70ec74ebfbe41bc172fa2412b05b7d1b86836f8aee375e41a04ff20486074778d0e2d19d668b33dc52e9dbb + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cd15c407906b41e4b924ea151e455c11274dba050771ee7154ad88a1a274140ac5e84efc8d08c4379f2f0cec8a09e4a0a3b2a3a954ba6a67d9fb35df1c714c56 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.0.0, @babel/plugin-transform-template-literals@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-template-literals@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9b5f43788b9ffcb8f2b445a16b1aa40fcf23cb0446a4649445f098ec6b4cb751f243a535da623d59fefe48f4c40552f5621187a61811779076bab26863e3373d + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/50e81d84c6059878be2a0e41e0d790cab10882cfb8fa85e8c2665ccb0b3cd7233f49197f17427bc7c1b36c80e07076640ecf1b641888d78b9cb91bc16478d84a + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.23.3": + version: 7.23.6 + resolution: "@babel/plugin-transform-typescript@npm:7.23.6" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.22.5" + "@babel/helper-create-class-features-plugin": "npm:^7.23.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/plugin-syntax-typescript": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e08f7a981fe157e32031070b92cd77030018b002d063e4be3711ffb7ec04539478b240d8967a4748abb56eccc0ba376f094f30711ef6a028b2a89d15d6ddc01f + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f1ed54742dc982666f471df5d087cfda9c6dbf7842bec2d0f7893ed359b142a38c0210358f297ab5c7a3e11ec0dfb0e523de2e2edf48b62f257aaadd5f068866 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/dca5702d43fac70351623a12e4dfa454fd028a67498888522b644fd1a02534fabd440106897e886ebcc6ce6a39c58094ca29953b6f51bc67372aa8845a5ae49f + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/df824dcca2f6e731f61d69103e87d5dd974d8a04e46e28684a4ba935ae633d876bded09b8db890fd72d0caf7b9638e2672b753671783613cc78d472951e2df8c + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.23.3": + version: 7.23.3 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.23.3" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.22.15" + "@babel/helper-plugin-utils": "npm:^7.22.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/30fe1d29af8395a867d40a63a250ca89072033d9bc7d4587eeebeaf4ad7f776aab83064321bfdb1d09d7e29a1d392852361f4f60a353f0f4d1a3b435dcbf256b + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.22.20": + version: 7.23.9 + resolution: "@babel/preset-env@npm:7.23.9" + dependencies: + "@babel/compat-data": "npm:^7.23.5" + "@babel/helper-compilation-targets": "npm:^7.23.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.23.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.23.3" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.23.7" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-dynamic-import": "npm:^7.8.3" + "@babel/plugin-syntax-export-namespace-from": "npm:^7.8.3" + "@babel/plugin-syntax-import-assertions": "npm:^7.23.3" + "@babel/plugin-syntax-import-attributes": "npm:^7.23.3" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.23.3" + "@babel/plugin-transform-async-generator-functions": "npm:^7.23.9" + "@babel/plugin-transform-async-to-generator": "npm:^7.23.3" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.23.3" + "@babel/plugin-transform-block-scoping": "npm:^7.23.4" + "@babel/plugin-transform-class-properties": "npm:^7.23.3" + "@babel/plugin-transform-class-static-block": "npm:^7.23.4" + "@babel/plugin-transform-classes": "npm:^7.23.8" + "@babel/plugin-transform-computed-properties": "npm:^7.23.3" + "@babel/plugin-transform-destructuring": "npm:^7.23.3" + "@babel/plugin-transform-dotall-regex": "npm:^7.23.3" + "@babel/plugin-transform-duplicate-keys": "npm:^7.23.3" + "@babel/plugin-transform-dynamic-import": "npm:^7.23.4" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.23.3" + "@babel/plugin-transform-export-namespace-from": "npm:^7.23.4" + "@babel/plugin-transform-for-of": "npm:^7.23.6" + "@babel/plugin-transform-function-name": "npm:^7.23.3" + "@babel/plugin-transform-json-strings": "npm:^7.23.4" + "@babel/plugin-transform-literals": "npm:^7.23.3" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.23.4" + "@babel/plugin-transform-member-expression-literals": "npm:^7.23.3" + "@babel/plugin-transform-modules-amd": "npm:^7.23.3" + "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/plugin-transform-modules-systemjs": "npm:^7.23.9" + "@babel/plugin-transform-modules-umd": "npm:^7.23.3" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.22.5" + "@babel/plugin-transform-new-target": "npm:^7.23.3" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.23.4" + "@babel/plugin-transform-numeric-separator": "npm:^7.23.4" + "@babel/plugin-transform-object-rest-spread": "npm:^7.23.4" + "@babel/plugin-transform-object-super": "npm:^7.23.3" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.23.4" + "@babel/plugin-transform-optional-chaining": "npm:^7.23.4" + "@babel/plugin-transform-parameters": "npm:^7.23.3" + "@babel/plugin-transform-private-methods": "npm:^7.23.3" + "@babel/plugin-transform-private-property-in-object": "npm:^7.23.4" + "@babel/plugin-transform-property-literals": "npm:^7.23.3" + "@babel/plugin-transform-regenerator": "npm:^7.23.3" + "@babel/plugin-transform-reserved-words": "npm:^7.23.3" + "@babel/plugin-transform-shorthand-properties": "npm:^7.23.3" + "@babel/plugin-transform-spread": "npm:^7.23.3" + "@babel/plugin-transform-sticky-regex": "npm:^7.23.3" + "@babel/plugin-transform-template-literals": "npm:^7.23.3" + "@babel/plugin-transform-typeof-symbol": "npm:^7.23.3" + "@babel/plugin-transform-unicode-escapes": "npm:^7.23.3" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.23.3" + "@babel/plugin-transform-unicode-regex": "npm:^7.23.3" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.23.3" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.8" + babel-plugin-polyfill-corejs3: "npm:^0.9.0" + babel-plugin-polyfill-regenerator: "npm:^0.5.5" + core-js-compat: "npm:^3.31.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2837a42089180e51bfd6864b6d197e01fc0abec1920422e71c0513c2fc8fb5f3bfe694ed778cc4e45856c546964945bc53bf8105e4b26f3580ce3685fa50cc0f + languageName: node + linkType: hard + +"@babel/preset-flow@npm:^7.13.13": + version: 7.23.3 + resolution: "@babel/preset-flow@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-transform-flow-strip-types": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1cf109925791f2af679f03289848d27596b4f27cb0ad4ee74a8dd4c1cbecc119bdef3b45cbbe12489bc9bdf61163f94c1c0bf6013cc58c325f1cc99edc01bda9 + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/preset-react@npm:^7.22.15": + version: 7.23.3 + resolution: "@babel/preset-react@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-transform-react-display-name": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-react-jsx-development": "npm:^7.22.5" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cecb2493e09fd4ffa5effcef1d06e968386b1bfe077a99834f7e8ef249208274fca62fe5a6b3986ef1c1c3900b2eb409adb528ae1b73dba31397b16f9262e83c + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.13.0, @babel/preset-typescript@npm:^7.22.15": + version: 7.23.3 + resolution: "@babel/preset-typescript@npm:7.23.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.22.5" + "@babel/helper-validator-option": "npm:^7.22.15" + "@babel/plugin-syntax-jsx": "npm:^7.23.3" + "@babel/plugin-transform-modules-commonjs": "npm:^7.23.3" + "@babel/plugin-transform-typescript": "npm:^7.23.3" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e72b654c7f0f08b35d7e1c0e3a59c0c13037f295c425760b8b148aa7dde01e6ddd982efc525710f997a1494fafdd55cb525738c016609e7e4d703d02014152b7 + languageName: node + linkType: hard + +"@babel/register@npm:^7.13.16, @babel/register@npm:^7.22.15": + version: 7.23.7 + resolution: "@babel/register@npm:7.23.7" + dependencies: + clone-deep: "npm:^4.0.1" + find-cache-dir: "npm:^2.0.0" + make-dir: "npm:^2.1.0" + pirates: "npm:^4.0.6" + source-map-support: "npm:^0.5.16" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b2466e41a4394e725b57e139ba45c3f61b88546d3cb443e84ce46cb34071b60c6cdb706a14c58a1443db530691a54f51da1f0c97f6c1aecbb838a2fb7eb5dbb9 + languageName: node + linkType: hard + +"@babel/regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "@babel/regjsgen@npm:0.8.0" + checksum: 10c0/4f3ddd8c7c96d447e05c8304c1d5ba3a83fcabd8a716bc1091c2f31595cdd43a3a055fff7cb5d3042b8cb7d402d78820fcb4e05d896c605a7d8bcf30f2424c4a + languageName: node + linkType: hard + +"@babel/runtime-corejs3@npm:7.23.9": + version: 7.23.9 + resolution: "@babel/runtime-corejs3@npm:7.23.9" + dependencies: + core-js-pure: "npm:^3.30.2" + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/7926ebf38285b41e2a486b25aaa10861db1cfd29accd0b0eaa1338080d853339481f78d8d73e5d1f219a8ad52c477dcd4e7cc3473d1befbb290c77b27ed1ec91 + languageName: node + linkType: hard + +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2": + version: 7.23.9 + resolution: "@babel/runtime@npm:7.23.9" + dependencies: + regenerator-runtime: "npm:^0.14.0" + checksum: 10c0/e71205fdd7082b2656512cc98e647d9ea7e222e4fe5c36e9e5adc026446fcc3ba7b3cdff8b0b694a0b78bb85db83e7b1e3d4c56ef90726682b74f13249cf952d + languageName: node + linkType: hard + +"@babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7, @babel/template@npm:^7.22.15, @babel/template@npm:^7.23.9, @babel/template@npm:^7.3.3": + version: 7.23.9 + resolution: "@babel/template@npm:7.23.9" + dependencies: + "@babel/code-frame": "npm:^7.23.5" + "@babel/parser": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + checksum: 10c0/0e8b60119433787742bc08ae762bbd8d6755611c4cabbcb7627b292ec901a55af65d93d1c88572326069efb64136ef151ec91ffb74b2df7689bbab237030833a + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.14.0, @babel/traverse@npm:^7.16.8, @babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.23.9": + version: 7.23.9 + resolution: "@babel/traverse@npm:7.23.9" + dependencies: + "@babel/code-frame": "npm:^7.23.5" + "@babel/generator": "npm:^7.23.6" + "@babel/helper-environment-visitor": "npm:^7.22.20" + "@babel/helper-function-name": "npm:^7.23.0" + "@babel/helper-hoist-variables": "npm:^7.22.5" + "@babel/helper-split-export-declaration": "npm:^7.22.6" + "@babel/parser": "npm:^7.23.9" + "@babel/types": "npm:^7.23.9" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/d1615d1d02f04d47111a7ea4446a1a6275668ca39082f31d51f08380de9502e19862be434eaa34b022ce9a17dbb8f9e2b73a746c654d9575f3a680a7ffdf5630 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.1.6, @babel/types@npm:^7.16.8, @babel/types@npm:^7.18.13, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.4, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.23.9 + resolution: "@babel/types@npm:7.23.9" + dependencies: + "@babel/helper-string-parser": "npm:^7.23.4" + "@babel/helper-validator-identifier": "npm:^7.22.20" + to-fast-properties: "npm:^2.0.0" + checksum: 10c0/edc7bb180ce7e4d2aea10c6972fb10474341ac39ba8fdc4a27ffb328368dfdfbf40fca18e441bbe7c483774500d5c05e222cec276c242e952853dcaf4eb884f7 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@chevrotain/cst-dts-gen@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/cst-dts-gen@npm:10.5.0" + dependencies: + "@chevrotain/gast": "npm:10.5.0" + "@chevrotain/types": "npm:10.5.0" + lodash: "npm:4.17.21" + checksum: 10c0/ae621f2255be6f2838775aa022e54c9557a7fe3f42b52ced3d44b2dac26a48020c9db76c49b90dbb2982eb152c385a4ff2dac7578deef6131592fe13bda93ea7 + languageName: node + linkType: hard + +"@chevrotain/gast@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/gast@npm:10.5.0" + dependencies: + "@chevrotain/types": "npm:10.5.0" + lodash: "npm:4.17.21" + checksum: 10c0/4e894fe9932ef8a74a0d147c78f73fc0ef8aeb7170a79d66648c07c1de505ef0dc8b8dc0a5a69a58abd92adb7a165d9a540cb6b2393589b1025af18bcdb585ab + languageName: node + linkType: hard + +"@chevrotain/types@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/types@npm:10.5.0" + checksum: 10c0/9131b833e9658263c114713758379e06e79e94e0cd0cf178ec9ddbc5672896c7e890d230b5e72402cd4d7ce861835ce9489d0402723620650d4b6c353b497ec6 + languageName: node + linkType: hard + +"@chevrotain/utils@npm:10.5.0": + version: 10.5.0 + resolution: "@chevrotain/utils@npm:10.5.0" + checksum: 10c0/a7d99b8e9ecc8ceb0d46b5f194710768055c2b932aca316a5f1e77d8c1a6ecb8f4c5b39e4bac4dcd7189dfa5025dcdc112903511037b03a4ea88d216b68b4708 + languageName: node + linkType: hard + +"@colors/colors@npm:1.5.0": + version: 1.5.0 + resolution: "@colors/colors@npm:1.5.0" + checksum: 10c0/eb42729851adca56d19a08e48d5a1e95efd2a32c55ae0323de8119052be0510d4b7a1611f2abcbf28c044a6c11e6b7d38f99fccdad7429300c37a8ea5fb95b44 + languageName: node + linkType: hard + +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10c0/05c5368c13b662ee4c122c7bfbe5dc0b613416672a829f3e78bc49a357a197e0218d6e74e7c66cfcd04e15a179acab080bd3c69658c9fbefd0e1ccd950a07fc6 + languageName: node + linkType: hard + +"@discoveryjs/json-ext@npm:0.5.7, @discoveryjs/json-ext@npm:^0.5.0": + version: 0.5.7 + resolution: "@discoveryjs/json-ext@npm:0.5.7" + checksum: 10c0/e10f1b02b78e4812646ddf289b7d9f2cb567d336c363b266bd50cd223cf3de7c2c74018d91cd2613041568397ef3a4a2b500aba588c6e5bd78c38374ba68f38c + languageName: node + linkType: hard + +"@envelop/core@npm:5.0.0, @envelop/core@npm:^5.0.0": + version: 5.0.0 + resolution: "@envelop/core@npm:5.0.0" + dependencies: + "@envelop/types": "npm:5.0.0" + tslib: "npm:^2.5.0" + checksum: 10c0/abc06585177a634d355fd7cec22a838086e6ccf20317f34b4b9eb92c4acb1aee7f09f621197f065619148a58de027a968ecb26d0bdee87bf0380769816ad4be2 + languageName: node + linkType: hard + +"@envelop/core@npm:^4.0.0": + version: 4.0.3 + resolution: "@envelop/core@npm:4.0.3" + dependencies: + "@envelop/types": "npm:4.0.1" + tslib: "npm:^2.5.0" + checksum: 10c0/37a9cdab390a354be8612e92891dbd13de0a58aedfad0728cbe2111069ca599c9ee5c542b3f4de9f155123b0cac776aa60ef10c5a3721ce58b5cb3b2383ddda6 + languageName: node + linkType: hard + +"@envelop/depth-limit@npm:4.0.0": + version: 4.0.0 + resolution: "@envelop/depth-limit@npm:4.0.0" + dependencies: + graphql-depth-limit: "npm:^1.1.0" + tslib: "npm:^2.5.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/5a08a2a666632399ca5ced484a8eaddfc41f8c81e5e793c4401d17861acb8a67ae5e41fc0595012a8fecc43111287f89b4fef529d7bb00d4b58273e0f955cbc5 + languageName: node + linkType: hard + +"@envelop/disable-introspection@npm:6.0.0": + version: 6.0.0 + resolution: "@envelop/disable-introspection@npm:6.0.0" + dependencies: + tslib: "npm:^2.5.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/48b3a2c98514cd629eadc09f741a1a21cb363a6ebf940a40e39c69054cd61b3d73b37575c1c3573fdc57685b76d58694b14dfae63d357d015040e69f4363ad98 + languageName: node + linkType: hard + +"@envelop/filter-operation-type@npm:6.0.0": + version: 6.0.0 + resolution: "@envelop/filter-operation-type@npm:6.0.0" + dependencies: + tslib: "npm:^2.5.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/9d454dd67da800293b6cfde9e49512e0c84261cdd65dc521ae4c472ce0a2b4a4645b4d39596e3d4157bac31b120fae1fc985cb94c5d8d07590f94fdbc36b9c7b + languageName: node + linkType: hard + +"@envelop/on-resolve@npm:4.1.0": + version: 4.1.0 + resolution: "@envelop/on-resolve@npm:4.1.0" + peerDependencies: + "@envelop/core": ^5.0.0 + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/4eb454df4b446303711edd0cd31e707fec06337c2e8327c7987d279fef8785e47e47ffe72c7444b4650a83efbf3234c6b85f550a8044ca181dcd10c05dcb3650 + languageName: node + linkType: hard + +"@envelop/types@npm:4.0.1": + version: 4.0.1 + resolution: "@envelop/types@npm:4.0.1" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10c0/81e09afaf60d036102f7992daeefb0cd5380bb1484dd19cb90db73db4ae730b5297823439711fb8315ee01485a37f1c8155aa1111c7dc4ea11c77b7f25945633 + languageName: node + linkType: hard + +"@envelop/types@npm:5.0.0": + version: 5.0.0 + resolution: "@envelop/types@npm:5.0.0" + dependencies: + tslib: "npm:^2.5.0" + checksum: 10c0/0cbaa68218cb6121b58c6d354b0a17913ded042673df7bfcf385cac6c3b42713b82719875f553b31e8f059727ff5478ed11b33b4febf8deeaf902f1a92b212a8 + languageName: node + linkType: hard + +"@esbuild/aix-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/aix-ppc64@npm:0.20.0" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/android-arm64@npm:0.18.20" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm64@npm:0.20.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/android-arm@npm:0.18.20" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-arm@npm:0.20.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/android-x64@npm:0.18.20" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/android-x64@npm:0.20.0" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/darwin-arm64@npm:0.18.20" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-arm64@npm:0.20.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/darwin-x64@npm:0.18.20" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/darwin-x64@npm:0.20.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/freebsd-arm64@npm:0.18.20" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-arm64@npm:0.20.0" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/freebsd-x64@npm:0.18.20" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/freebsd-x64@npm:0.20.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-arm64@npm:0.18.20" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm64@npm:0.20.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-arm@npm:0.18.20" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-arm@npm:0.20.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-ia32@npm:0.18.20" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ia32@npm:0.20.0" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-loong64@npm:0.18.20" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-loong64@npm:0.20.0" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-mips64el@npm:0.18.20" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-mips64el@npm:0.20.0" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-ppc64@npm:0.18.20" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-ppc64@npm:0.20.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-riscv64@npm:0.18.20" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-riscv64@npm:0.20.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-s390x@npm:0.18.20" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-s390x@npm:0.20.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/linux-x64@npm:0.18.20" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/linux-x64@npm:0.20.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/netbsd-x64@npm:0.18.20" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/netbsd-x64@npm:0.20.0" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/openbsd-x64@npm:0.18.20" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/openbsd-x64@npm:0.20.0" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/sunos-x64@npm:0.18.20" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/sunos-x64@npm:0.20.0" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/win32-arm64@npm:0.18.20" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-arm64@npm:0.20.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/win32-ia32@npm:0.18.20" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-ia32@npm:0.20.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.18.20": + version: 0.18.20 + resolution: "@esbuild/win32-x64@npm:0.18.20" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.20.0": + version: 0.20.0 + resolution: "@esbuild/win32-x64@npm:0.20.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-block-field-suggestions@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-block-field-suggestions@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + checksum: 10c0/ec696620e40d169cb02320a7540120e1db4bc9eae298f23c50f68802f52cb2e87f2b9b733e03567c91ca23a66027ed94d811d19555540fbb270f3eb3d218f386 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-cost-limit@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-cost-limit@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/ce589e35955925e78f4e794d64b48a90f84a2ee2f47ca78c349338760ebe114f55c82e5c2deaf8b7b2fe71c1d36b6f06def3562100bdcaf0d7333f982c9166b2 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-aliases@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-max-aliases@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/7eb9132b95d6f7c638983cec4756359bda5805ccd369facedc168e2112602b2db46280ad3755f1fa586c77cb132a853e470bec6400a5b5ae25f9b5f7bae619d1 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-depth@npm:2.2.0": + version: 2.2.0 + resolution: "@escape.tech/graphql-armor-max-depth@npm:2.2.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/f30f231984da41b4f1a4fd89551c6d57ba830814a6de32f863a8cf3bc3e436933700fc2716741e8f171b66dee7d45a46056b86244a44d1ad95b128a47eb0f74a + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-directives@npm:2.1.0": + version: 2.1.0 + resolution: "@escape.tech/graphql-armor-max-directives@npm:2.1.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/94d1612998ea34ad512f6343399262a47b1ade5184511d19bfde4cbcb29948e2e210ae3f46e5c5aa40c3b4e942ef92d2cfc9885a426f2965136546c5b4b048f9 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-max-tokens@npm:2.2.0": + version: 2.2.0 + resolution: "@escape.tech/graphql-armor-max-tokens@npm:2.2.0" + dependencies: + "@envelop/core": "npm:^4.0.0" + "@escape.tech/graphql-armor-types": "npm:0.5.0" + graphql: "npm:^16.0.0" + dependenciesMeta: + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/42278e504a87c622d4abac739321acb88f1f18f0829d546dd24f010d92a0987f50aee7ab92b5e406b0176aaee70eb8e0e2805517fa257699174356875aa9b302 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor-types@npm:0.5.0": + version: 0.5.0 + resolution: "@escape.tech/graphql-armor-types@npm:0.5.0" + dependencies: + graphql: "npm:^16.0.0" + checksum: 10c0/fc93eab84d27836ea37f6d2f8f0604b889906da26a54a2ffa25008e289f46b469c481d9071ca5c0a3ccc66a188cb4665592e73617507ca044f8a6a6cefb71270 + languageName: node + linkType: hard + +"@escape.tech/graphql-armor@npm:2.3.1": + version: 2.3.1 + resolution: "@escape.tech/graphql-armor@npm:2.3.1" + dependencies: + "@escape.tech/graphql-armor-block-field-suggestions": "npm:2.1.0" + "@escape.tech/graphql-armor-cost-limit": "npm:2.1.0" + "@escape.tech/graphql-armor-max-aliases": "npm:2.1.0" + "@escape.tech/graphql-armor-max-depth": "npm:2.2.0" + "@escape.tech/graphql-armor-max-directives": "npm:2.1.0" + "@escape.tech/graphql-armor-max-tokens": "npm:2.2.0" + graphql: "npm:^16.0.0" + peerDependencies: + "@apollo/server": ^4.0.0 + "@envelop/core": ^4.0.0 + "@escape.tech/graphql-armor-types": 0.5.0 + peerDependenciesMeta: + "@apollo/server": + optional: true + "@envelop/core": + optional: true + "@escape.tech/graphql-armor-types": + optional: true + checksum: 10c0/40ecfb643fea264eacb7d3d4031e139a3bb3cea6f1519146042d2eb9bbad64b1f5d570886459da75c25ff1a471fc13b04fae2f2795b0c6e0b97922bfb9191d47 + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0": + version: 4.4.0 + resolution: "@eslint-community/eslint-utils@npm:4.4.0" + dependencies: + eslint-visitor-keys: "npm:^3.3.0" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/7e559c4ce59cd3a06b1b5a517b593912e680a7f981ae7affab0d01d709e99cd5647019be8fafa38c350305bc32f1f7d42c7073edde2ab536c745e365f37b607e + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.4.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.10.0 + resolution: "@eslint-community/regexpp@npm:4.10.0" + checksum: 10c0/c5f60ef1f1ea7649fa7af0e80a5a79f64b55a8a8fa5086de4727eb4c86c652aedee407a9c143b8995d2c0b2d75c1222bec9ba5d73dbfc1f314550554f0979ef4 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/eslintrc@npm:2.1.4" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^9.6.0" + globals: "npm:^13.19.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/32f67052b81768ae876c84569ffd562491ec5a5091b0c1e1ca1e0f3c24fb42f804952fdd0a137873bc64303ba368a71ba079a6f691cee25beee9722d94cc8573 + languageName: node + linkType: hard + +"@eslint/js@npm:8.55.0": + version: 8.55.0 + resolution: "@eslint/js@npm:8.55.0" + checksum: 10c0/88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d + languageName: node + linkType: hard + +"@fastify/accept-negotiator@npm:^1.0.0": + version: 1.1.0 + resolution: "@fastify/accept-negotiator@npm:1.1.0" + checksum: 10c0/1cb9a298c992b812869158ddc6093557a877b30e5f77618a7afea985a0667c50bc7113593bf0f7f9dc9b82b94c16e8ab127a0afc3efde6677fd645539f6d08e5 + languageName: node + linkType: hard + +"@fastify/ajv-compiler@npm:^3.5.0": + version: 3.5.0 + resolution: "@fastify/ajv-compiler@npm:3.5.0" + dependencies: + ajv: "npm:^8.11.0" + ajv-formats: "npm:^2.1.1" + fast-uri: "npm:^2.0.0" + checksum: 10c0/d10df76b7016984bf70bc6aca99962468ec43e0be5772d4aa3a7735ae78be44fdbcb2c078fe0cfdffec076080dfb7cbdbf4b729e52b168039477126f9d023af0 + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.0 + resolution: "@fastify/busboy@npm:2.1.0" + checksum: 10c0/7bb641080aac7cf01d88749ad331af10ba9ec3713ec07cabbe833908c75df21bd56249bb6173bdec07f5a41896b21e3689316f86684c06635da45f91ff4565a2 + languageName: node + linkType: hard + +"@fastify/error@npm:^3.0.0, @fastify/error@npm:^3.3.0, @fastify/error@npm:^3.4.0": + version: 3.4.1 + resolution: "@fastify/error@npm:3.4.1" + checksum: 10c0/1f1a0faa8c86639afb6f4bd47a9cdc1f0f20ce0d6944340fbdec8218aaba91dc9cae9ed78e24e61bceb782a867efda2b9a6320091f00dcbb896d9c8a9bdf5f96 + languageName: node + linkType: hard + +"@fastify/fast-json-stringify-compiler@npm:^4.3.0": + version: 4.3.0 + resolution: "@fastify/fast-json-stringify-compiler@npm:4.3.0" + dependencies: + fast-json-stringify: "npm:^5.7.0" + checksum: 10c0/513ef296f5ed682f7a460cfa6c5fb917a32fc540111b873c9937f944558e021492b18f30f9fd8dd20db252381a4428adbcc9f03a077f16c86d02f081eb490c7b + languageName: node + linkType: hard + +"@fastify/http-proxy@npm:9.3.0": + version: 9.3.0 + resolution: "@fastify/http-proxy@npm:9.3.0" + dependencies: + "@fastify/reply-from": "npm:^9.0.0" + fast-querystring: "npm:^1.1.2" + fastify-plugin: "npm:^4.5.0" + ws: "npm:^8.4.2" + checksum: 10c0/c8f7fe380580f53059f676ca5b2bbdb1eef0a2d3dce28568e8932aeedb992efdc5fc40dae41b6d52f2f0ce14036af182664d0276ea9366e31fd920a119e7a03a + languageName: node + linkType: hard + +"@fastify/merge-json-schemas@npm:^0.1.0": + version: 0.1.1 + resolution: "@fastify/merge-json-schemas@npm:0.1.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + checksum: 10c0/7979ce12724f7b98aea06f0bb9afb20dd869f0ff6fc697517135cbb54e0a36b062cbb38ec176fe43d1fc455576839240df8f33533939ace2d64a6218a6e6b9c1 + languageName: node + linkType: hard + +"@fastify/reply-from@npm:^9.0.0": + version: 9.7.0 + resolution: "@fastify/reply-from@npm:9.7.0" + dependencies: + "@fastify/error": "npm:^3.0.0" + end-of-stream: "npm:^1.4.4" + fast-content-type-parse: "npm:^1.1.0" + fast-querystring: "npm:^1.0.0" + fastify-plugin: "npm:^4.0.0" + pump: "npm:^3.0.0" + tiny-lru: "npm:^11.0.0" + undici: "npm:^5.19.1" + checksum: 10c0/40a6838fd3b762dcc954bf652e79175117648b4f68667d32f4ef64deeac8d9be9abcaf0b382b5e8d4edd46f6540501664bd6024ac3c0f335b3ffedfcbf20cf48 + languageName: node + linkType: hard + +"@fastify/send@npm:^2.0.0": + version: 2.1.0 + resolution: "@fastify/send@npm:2.1.0" + dependencies: + "@lukeed/ms": "npm:^2.0.1" + escape-html: "npm:~1.0.3" + fast-decode-uri-component: "npm:^1.0.1" + http-errors: "npm:2.0.0" + mime: "npm:^3.0.0" + checksum: 10c0/0e1c10022660fa1f1959b7c414d1be2c47ab42be1da8e21cd72a4df3104c516fdf7b590ee67f897037dd4c85b716fac63929e894d7699623549646604f6db14b + languageName: node + linkType: hard + +"@fastify/static@npm:6.12.0": + version: 6.12.0 + resolution: "@fastify/static@npm:6.12.0" + dependencies: + "@fastify/accept-negotiator": "npm:^1.0.0" + "@fastify/send": "npm:^2.0.0" + content-disposition: "npm:^0.5.3" + fastify-plugin: "npm:^4.0.0" + glob: "npm:^8.0.1" + p-limit: "npm:^3.1.0" + checksum: 10c0/9248c9851c4bb24965e88eb2f0825fda2b2b08ddb83aa5f08e529b8a522cf20978f81e8e4837e2cb550b39ea433790b0fd82db4b2f0673133325e265c9099fff + languageName: node + linkType: hard + +"@fastify/url-data@npm:5.4.0": + version: 5.4.0 + resolution: "@fastify/url-data@npm:5.4.0" + dependencies: + fast-uri: "npm:^2.2.0" + fastify-plugin: "npm:^4.0.0" + checksum: 10c0/727822f90277b937eabdbbdbf14ae1f8b9fb495ae7b9799bdd383a56f784eb3c9929998a3ac133881afd9871b7c6d9261c3f2e339f82d793f4535e25079e5621 + languageName: node + linkType: hard + +"@graphql-codegen/add@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/add@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.1.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/32476f676b59876e75af41a448a6133f29f5f2b6c975e88d0e54b5d793e931cffd2d55f094bd79e7fe84664e18cf6bcdf13d199ddec903713338aaa522ff1b3b + languageName: node + linkType: hard + +"@graphql-codegen/add@npm:^5.0.0": + version: 5.0.2 + resolution: "@graphql-codegen/add@npm:5.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/667bacb3c4a1f1e041b54d96e802e89e057f20a4129fc1dd3ab72848f2531e8d74d415607d581630073bbc34831c8e6da4f9d669cb761ccc0cc4102c86eae5d0 + languageName: node + linkType: hard + +"@graphql-codegen/cli@npm:3.3.1": + version: 3.3.1 + resolution: "@graphql-codegen/cli@npm:3.3.1" + dependencies: + "@babel/generator": "npm:^7.18.13" + "@babel/template": "npm:^7.18.10" + "@babel/types": "npm:^7.18.13" + "@graphql-codegen/core": "npm:^3.1.0" + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-tools/apollo-engine-loader": "npm:^7.3.6" + "@graphql-tools/code-file-loader": "npm:^7.3.17" + "@graphql-tools/git-loader": "npm:^7.2.13" + "@graphql-tools/github-loader": "npm:^7.3.20" + "@graphql-tools/graphql-file-loader": "npm:^7.5.0" + "@graphql-tools/json-file-loader": "npm:^7.4.1" + "@graphql-tools/load": "npm:^7.8.0" + "@graphql-tools/prisma-loader": "npm:^7.2.49" + "@graphql-tools/url-loader": "npm:^7.13.2" + "@graphql-tools/utils": "npm:^9.0.0" + "@parcel/watcher": "npm:^2.1.0" + "@whatwg-node/fetch": "npm:^0.8.0" + chalk: "npm:^4.1.0" + cosmiconfig: "npm:^7.0.0" + debounce: "npm:^1.2.0" + detect-indent: "npm:^6.0.0" + graphql-config: "npm:^4.5.0" + inquirer: "npm:^8.0.0" + is-glob: "npm:^4.0.1" + jiti: "npm:^1.17.1" + json-to-pretty-yaml: "npm:^1.2.2" + listr2: "npm:^4.0.5" + log-symbols: "npm:^4.0.0" + micromatch: "npm:^4.0.5" + shell-quote: "npm:^1.7.3" + string-env-interpolation: "npm:^1.0.1" + ts-log: "npm:^2.2.3" + tslib: "npm:^2.4.0" + yaml: "npm:^1.10.0" + yargs: "npm:^17.0.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + bin: + gql-gen: cjs/bin.js + graphql-code-generator: cjs/bin.js + graphql-codegen: cjs/bin.js + graphql-codegen-esm: esm/bin.js + checksum: 10c0/e6886054bad3b8de3760d1381b54c7dd0af2eb77104563065ba7ca63700b25ad1f8ce9fe8482d960ff8bd4cf110465a3e822a1303da10cebd6965c72d5a9e9a1 + languageName: node + linkType: hard + +"@graphql-codegen/client-preset@npm:4.1.0": + version: 4.1.0 + resolution: "@graphql-codegen/client-preset@npm:4.1.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.20.2" + "@babel/template": "npm:^7.20.7" + "@graphql-codegen/add": "npm:^5.0.0" + "@graphql-codegen/gql-tag-operations": "npm:4.0.1" + "@graphql-codegen/plugin-helpers": "npm:^5.0.1" + "@graphql-codegen/typed-document-node": "npm:^5.0.1" + "@graphql-codegen/typescript": "npm:^4.0.1" + "@graphql-codegen/typescript-operations": "npm:^4.0.1" + "@graphql-codegen/visitor-plugin-common": "npm:^4.0.1" + "@graphql-tools/documents": "npm:^1.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-typed-document-node/core": "npm:3.2.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/c975e72a97a0f679a9ee77265ad5cf535d17d5409fb39704653f0b6c203e1c6815e0a81b20b0d597ebb8f537a5a8a5a601a9366073270fde9971408f0ddadc1d + languageName: node + linkType: hard + +"@graphql-codegen/core@npm:3.1.0, @graphql-codegen/core@npm:^3.1.0": + version: 3.1.0 + resolution: "@graphql-codegen/core@npm:3.1.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.1.0" + "@graphql-tools/schema": "npm:^9.0.0" + "@graphql-tools/utils": "npm:^9.1.1" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/822be191eba5cc9f1882936501941054adfc517cb7f32e32c85843253eec268eca20d24f2ba04d9575719e36e3a5cd0df059715f3fd78d32f12f7d79c7198e79 + languageName: node + linkType: hard + +"@graphql-codegen/fragment-matcher@npm:5.0.0": + version: 5.0.0 + resolution: "@graphql-codegen/fragment-matcher@npm:5.0.0" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/52ad2ee32f4d4e690ec8f9fbd9e62d7ec1ddfcb91004acf86969b1e24767c19aa49870ee49ccb196efba92f9280f813073e891950dc234d2e411263c1e84408d + languageName: node + linkType: hard + +"@graphql-codegen/gql-tag-operations@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/gql-tag-operations@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/c2e0be33d2e0362892b466058da02ad8476192691ce8efc64f0e94116a1b2ae6c1a479b5d399f4396fee3c54959f5e4a296d994bcffa458c1ec5167c56d183ab + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^2.7.2": + version: 2.7.2 + resolution: "@graphql-codegen/plugin-helpers@npm:2.7.2" + dependencies: + "@graphql-tools/utils": "npm:^8.8.0" + change-case-all: "npm:1.0.14" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/b4abce50a751d938a48b2b7ff57aa1671df1ae9d54196ccd60237077aef2e2b528b45244cb786d1b2eeb1f464c48eb7626553fdc5cf3a9013455ed27ef3ef7d2 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^4.1.0, @graphql-codegen/plugin-helpers@npm:^4.2.0": + version: 4.2.0 + resolution: "@graphql-codegen/plugin-helpers@npm:4.2.0" + dependencies: + "@graphql-tools/utils": "npm:^9.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/cc4a63eb6cd015c9b26f6ff115257ff9c7b87c352a23b3f0622536c6df693e647ff627daef6f370c629fc515ddfdb2f7e3190f5e8cd6490a1ea513835cc358c3 + languageName: node + linkType: hard + +"@graphql-codegen/plugin-helpers@npm:^5.0.0, @graphql-codegen/plugin-helpers@npm:^5.0.1, @graphql-codegen/plugin-helpers@npm:^5.0.3": + version: 5.0.3 + resolution: "@graphql-codegen/plugin-helpers@npm:5.0.3" + dependencies: + "@graphql-tools/utils": "npm:^10.0.0" + change-case-all: "npm:1.0.15" + common-tags: "npm:1.8.2" + import-from: "npm:4.0.0" + lodash: "npm:~4.17.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/1ea0d46ccdf449f43afe8ee0222bf96769b3efdb8262688964f4eff725c43caac4caa36859bcbd6a2ba611aea2adaa6bb2e86bc1d06ec9636f11952ebe260036 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:3.0.1, @graphql-codegen/schema-ast@npm:^3.0.1": + version: 3.0.1 + resolution: "@graphql-codegen/schema-ast@npm:3.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.1.0" + "@graphql-tools/utils": "npm:^9.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/cc4602e5b97876181e6a8e3e0241e336715e489d1721121037a0a28b49d3bd800de9a331c8db2e9449c3c237e842c05db93a2c834cfcc7e3cd68a15c96a8e204 + languageName: node + linkType: hard + +"@graphql-codegen/schema-ast@npm:^4.0.2": + version: 4.0.2 + resolution: "@graphql-codegen/schema-ast@npm:4.0.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/utils": "npm:^10.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/533b1bfa6c01d02ff2ec688a478e8daeb9bda1d69d63b1bca8adf9ab606a4a315da4e0f45444836646b8e539e8c76891af536afd9fb3a7e36d40f8bd04218748 + languageName: node + linkType: hard + +"@graphql-codegen/typed-document-node@npm:5.0.1": + version: 5.0.1 + resolution: "@graphql-codegen/typed-document-node@npm:5.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + "@graphql-codegen/visitor-plugin-common": "npm:4.0.1" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/84c7a10d9a574987c7a18f81ad43dff92e1605f9295488ef314cf17273772bb2fd406772164b2a601fda15b280fbc0d3d42cdc8c9ce742b68e4423faf9a2aca0 + languageName: node + linkType: hard + +"@graphql-codegen/typed-document-node@npm:^5.0.1": + version: 5.0.4 + resolution: "@graphql-codegen/typed-document-node@npm:5.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/visitor-plugin-common": "npm:4.1.2" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/952135af096162dd87b3ae4c0a7275d81b171874f84dff6ab522a71769b0b05b6e9340523f70e1b9aa18cac32bbd9dcbfee5bb68ecf0e243439dfbab0e2b4da8 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:3.0.4": + version: 3.0.4 + resolution: "@graphql-codegen/typescript-operations@npm:3.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-codegen/typescript": "npm:^3.0.4" + "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/4ea5c955e0b12b1f6aa4d6ad46b217c56e802ff5508b939a3a218c53208d03bbd308bb3dfbfbc30fe7c4bd0be4c9c51c76b0fe65c6238618ed482874c869f801 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-operations@npm:^4.0.1": + version: 4.1.2 + resolution: "@graphql-codegen/typescript-operations@npm:4.1.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/typescript": "npm:^4.0.4" + "@graphql-codegen/visitor-plugin-common": "npm:4.1.2" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/0e8a99206a7ec1e37aa34985e75341bfc64a1ed01dc05da9056fb68daa4518b248a2ca46d86cac54d52e04b5b561162f2fb5bc48edf09508c0150861e1881a9a + languageName: node + linkType: hard + +"@graphql-codegen/typescript-react-apollo@npm:3.3.7": + version: 3.3.7 + resolution: "@graphql-codegen/typescript-react-apollo@npm:3.3.7" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^2.7.2" + "@graphql-codegen/visitor-plugin-common": "npm:2.13.1" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.14" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-tag: ^2.0.0 + checksum: 10c0/8aed1aa62694abea2616bf39501b561a0aed107b3c0112aeb257167df4f8a13e866b335d509b94153b99bd77e1d36312ff260e18d26049673268318144d693e5 + languageName: node + linkType: hard + +"@graphql-codegen/typescript-resolvers@npm:3.2.1": + version: 3.2.1 + resolution: "@graphql-codegen/typescript-resolvers@npm:3.2.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-codegen/typescript": "npm:^3.0.4" + "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" + "@graphql-tools/utils": "npm:^9.0.0" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/f87383d0f145b1b6cc8c7382f932bdbf6dd37f3f2526e1f17b73ee9f0bf9a6db8d7db04867712dd6f5839d5b967823ca3e534462335d8fd389b2bfda4aa0cb2e + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:3.0.4, @graphql-codegen/typescript@npm:^3.0.4": + version: 3.0.4 + resolution: "@graphql-codegen/typescript@npm:3.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-codegen/schema-ast": "npm:^3.0.1" + "@graphql-codegen/visitor-plugin-common": "npm:3.1.1" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/6fbf7cfda19fe8b02ab34a948c0d2cf58b68a26f8c31c03cbb097ef2196c1071d986bba6660d5da516c36c9f184e8bbef014cf851bf706aba81138a423cda250 + languageName: node + linkType: hard + +"@graphql-codegen/typescript@npm:^4.0.1, @graphql-codegen/typescript@npm:^4.0.4": + version: 4.0.4 + resolution: "@graphql-codegen/typescript@npm:4.0.4" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-codegen/schema-ast": "npm:^4.0.2" + "@graphql-codegen/visitor-plugin-common": "npm:4.1.2" + auto-bind: "npm:~4.0.0" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/cce7061956b6c0be6877e130fddbaba74670376e13353d70a0606ca0476ddbc2d4e4e06c2eccb2b88dbdd30272b723cb922794a7621faf03521c8ec6476e7b90 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:2.13.1": + version: 2.13.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:2.13.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^2.7.2" + "@graphql-tools/optimize": "npm:^1.3.0" + "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" + "@graphql-tools/utils": "npm:^8.8.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.14" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.4.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/9dfc4893599721eba988103d4456345f915cab75c9a754e78a21bd7d05c49b00a01f38ffb70355d758626da0396ae3bb6d44fc98d5c8f9f36a1b122aea0063c4 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:3.1.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^4.2.0" + "@graphql-tools/optimize": "npm:^1.3.0" + "@graphql-tools/relay-operation-optimizer": "npm:^6.5.0" + "@graphql-tools/utils": "npm:^9.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/4a393276f091de20cc3b8c3af07c772592328ed1c304835db533ab39dfeba4f7411040480404db21b677a85c055699cdd2992139a89456ec71492df6fa4ae9bf + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:4.0.1": + version: 4.0.1 + resolution: "@graphql-codegen/visitor-plugin-common@npm:4.0.1" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.0" + "@graphql-tools/optimize": "npm:^2.0.0" + "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/704c08bf29b274a463c8a20381f280f3294c4e48764b8b99ae9fbca610e2b54ac5ee1cf0e1165962e75c49dd8d2237f743d56bd3f5e66c5a072bc77c22f49be6 + languageName: node + linkType: hard + +"@graphql-codegen/visitor-plugin-common@npm:4.1.2, @graphql-codegen/visitor-plugin-common@npm:^4.0.1": + version: 4.1.2 + resolution: "@graphql-codegen/visitor-plugin-common@npm:4.1.2" + dependencies: + "@graphql-codegen/plugin-helpers": "npm:^5.0.3" + "@graphql-tools/optimize": "npm:^2.0.0" + "@graphql-tools/relay-operation-optimizer": "npm:^7.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + auto-bind: "npm:~4.0.0" + change-case-all: "npm:1.0.15" + dependency-graph: "npm:^0.11.0" + graphql-tag: "npm:^2.11.0" + parse-filepath: "npm:^1.0.2" + tslib: "npm:~2.6.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/eb96ccfe7bb5d20b7a1c8b3199ad4f0ee0695f7223e68900479192543eb3e0d37f4088e3e9dc80f28403e326bae67579eadfd628c97d671e207cc4d607af5c6a + languageName: node + linkType: hard + +"@graphql-tools/apollo-engine-loader@npm:^7.3.6": + version: 7.3.26 + resolution: "@graphql-tools/apollo-engine-loader@npm:7.3.26" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/utils": "npm:^9.2.1" + "@whatwg-node/fetch": "npm:^0.8.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/34d4de6bced685770512cb518a01566846db30d0d5235eafbbf967213479e56552fe2a42996ec29a5a9a4db402d7bc8c9aa0b1be6bb1ccfaeb5ed60087c3381d + languageName: node + linkType: hard + +"@graphql-tools/batch-execute@npm:^8.5.22": + version: 8.5.22 + resolution: "@graphql-tools/batch-execute@npm:8.5.22" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/ff5ad8f36844cfa823061e6aa4cb0e5c4e2ebbd716c02c04bc1fdf637799fea760abd9f53083e9ebb038a0aa61263cf6360535776610dbfb9b0981e1deb1fb8a + languageName: node + linkType: hard + +"@graphql-tools/code-file-loader@npm:^7.3.17": + version: 7.3.23 + resolution: "@graphql-tools/code-file-loader@npm:7.3.23" + dependencies: + "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c7a59c9422c20b3deecdaa227a73c900581487f3f13dc4105ffe2e32f4d740b9d9409d4aed2a8f8c78f659f5181f93a20cfbb963994c9902261a1df7486c9bd4 + languageName: node + linkType: hard + +"@graphql-tools/delegate@npm:^9.0.31": + version: 9.0.35 + resolution: "@graphql-tools/delegate@npm:9.0.35" + dependencies: + "@graphql-tools/batch-execute": "npm:^8.5.22" + "@graphql-tools/executor": "npm:^0.0.20" + "@graphql-tools/schema": "npm:^9.0.19" + "@graphql-tools/utils": "npm:^9.2.1" + dataloader: "npm:^2.2.2" + tslib: "npm:^2.5.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1199ad14ffa1f0e8d6b12102bd78f7b0451ebe802f4bb7b4332a6fc27acf26b5d092b9dc6d656c7595efb0f7fc3bc247ba7fe1bb5317892443f42b27af4c54fc + languageName: node + linkType: hard + +"@graphql-tools/documents@npm:1.0.0, @graphql-tools/documents@npm:^1.0.0": + version: 1.0.0 + resolution: "@graphql-tools/documents@npm:1.0.0" + dependencies: + lodash.sortby: "npm:^4.7.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/06b2cc9f8d0fb7e5c43e434cab35698655d6d65cfa94c301996d6b1354101837a8e709b26dc5251fa2c3216e8469fb0db76b4cd93ca015b61f75e9926db9d9ef + languageName: node + linkType: hard + +"@graphql-tools/executor-graphql-ws@npm:^0.0.14": + version: 0.0.14 + resolution: "@graphql-tools/executor-graphql-ws@npm:0.0.14" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@repeaterjs/repeater": "npm:3.0.4" + "@types/ws": "npm:^8.0.0" + graphql-ws: "npm:5.12.1" + isomorphic-ws: "npm:5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:8.13.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/35619da6da45320ea53433018c4e2aa3ceab5fed097b9b51b6151007817139c9cb9f554d44a6fc51185d3ba829824cad9758f6cd98ead052a75d3d757306400f + languageName: node + linkType: hard + +"@graphql-tools/executor-http@npm:^0.1.7, @graphql-tools/executor-http@npm:^0.1.9": + version: 0.1.10 + resolution: "@graphql-tools/executor-http@npm:0.1.10" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@repeaterjs/repeater": "npm:^3.0.4" + "@whatwg-node/fetch": "npm:^0.8.1" + dset: "npm:^3.1.2" + extract-files: "npm:^11.0.0" + meros: "npm:^1.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/db2bb80e10bde0e6e34c3c86ed30c4f3082ba332fba5700d182045c4eb40453e670ea2277426fea31167481ed0b89446644ff106848e397b83e17c61d73218f3 + languageName: node + linkType: hard + +"@graphql-tools/executor-legacy-ws@npm:^0.0.11": + version: 0.0.11 + resolution: "@graphql-tools/executor-legacy-ws@npm:0.0.11" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@types/ws": "npm:^8.0.0" + isomorphic-ws: "npm:5.0.0" + tslib: "npm:^2.4.0" + ws: "npm:8.13.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/caf03080b125a9c3291a09a19747ffd7d16c99bfa378ee26bbd82d7613efcaa516d684ed74139a70267c68d8b4ff071541a4db4c9a3e9d2ea944d2bf912b6f50 + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^0.0.20": + version: 0.0.20 + resolution: "@graphql-tools/executor@npm:0.0.20" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + "@graphql-typed-document-node/core": "npm:3.2.0" + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/c9300ac118040ea1da18f4cc79613292d91b6e5edc312763c5b8a9da79cc3581bc7d43a292120c7b4c71367613c4b21da3e656985dce827fae0503a5fcbcbc71 + languageName: node + linkType: hard + +"@graphql-tools/executor@npm:^1.0.0": + version: 1.2.0 + resolution: "@graphql-tools/executor@npm:1.2.0" + dependencies: + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-typed-document-node/core": "npm:3.2.0" + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/98e11e93e015fbb464cfaa5f4e7a6a1f4890b241a7c631d2b679e4f3595206345f775674e9ecf9c3107e686f803b82f62beb9aa8e6ade37c6af0be29585afbc9 + languageName: node + linkType: hard + +"@graphql-tools/git-loader@npm:^7.2.13": + version: 7.3.0 + resolution: "@graphql-tools/git-loader@npm:7.3.0" + dependencies: + "@graphql-tools/graphql-tag-pluck": "npm:7.5.2" + "@graphql-tools/utils": "npm:^9.2.1" + is-glob: "npm:4.0.3" + micromatch: "npm:^4.0.4" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1a991e59c48d6faeb27f0e256859fca3de703c9e6ac949044bb95dd02558d0a22356fe0a93d93f815ee36cf0c6c3af582b2927579c115712622311f71cdda172 + languageName: node + linkType: hard + +"@graphql-tools/github-loader@npm:^7.3.20": + version: 7.3.28 + resolution: "@graphql-tools/github-loader@npm:7.3.28" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/executor-http": "npm:^0.1.9" + "@graphql-tools/graphql-tag-pluck": "npm:^7.4.6" + "@graphql-tools/utils": "npm:^9.2.1" + "@whatwg-node/fetch": "npm:^0.8.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/8044027a85fa0bd6a6094811c6868fa826b8a2a7cbeee615cb87c79c2c2caf0a208cad5fe45beffab0e020db813d70023eea34b6499c05aadda2f7730d283c8b + languageName: node + linkType: hard + +"@graphql-tools/graphql-file-loader@npm:^7.3.7, @graphql-tools/graphql-file-loader@npm:^7.5.0": + version: 7.5.17 + resolution: "@graphql-tools/graphql-file-loader@npm:7.5.17" + dependencies: + "@graphql-tools/import": "npm:6.7.18" + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/f737f14357731ad01da57755e1cf26ce375b475209d6ab7e4b656b56191a8979d2ab7dd5d1c54a1f11e04374f7a373fa95ea5ec6a001d0cef913ea208fadc65b + languageName: node + linkType: hard + +"@graphql-tools/graphql-tag-pluck@npm:7.5.2, @graphql-tools/graphql-tag-pluck@npm:^7.4.6": + version: 7.5.2 + resolution: "@graphql-tools/graphql-tag-pluck@npm:7.5.2" + dependencies: + "@babel/parser": "npm:^7.16.8" + "@babel/plugin-syntax-import-assertions": "npm:^7.20.0" + "@babel/traverse": "npm:^7.16.8" + "@babel/types": "npm:^7.16.8" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/86d9558cdd64526dd8ff8c3fdcb8c242c00911fac856ea7c8d6e437a13a1ee38aea44a55c586bcba13481928f45cd3e2006712cc750a8ba5a3d43e7be6097ea8 + languageName: node + linkType: hard + +"@graphql-tools/import@npm:6.7.18": + version: 6.7.18 + resolution: "@graphql-tools/import@npm:6.7.18" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + resolve-from: "npm:5.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/d33e37a1879dd43ac2851c9bac2f2873c58bb3687f1c06e159760dbb5e540ef074d688df70cc6dbd3ee5de48d437878df8f65a7c65ae80bd025bf98f2d615732 + languageName: node + linkType: hard + +"@graphql-tools/json-file-loader@npm:^7.3.7, @graphql-tools/json-file-loader@npm:^7.4.1": + version: 7.4.18 + resolution: "@graphql-tools/json-file-loader@npm:7.4.18" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + globby: "npm:^11.0.3" + tslib: "npm:^2.4.0" + unixify: "npm:^1.0.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/0628719ae10799d6b07d80b2f6228d62afb53aa52ce2f95e222afa63c829fd3ccf1bec68f334c5a00e11f1a517c768528704bb9290a8e303a60e0286258e100d + languageName: node + linkType: hard + +"@graphql-tools/load@npm:^7.5.5, @graphql-tools/load@npm:^7.8.0": + version: 7.8.14 + resolution: "@graphql-tools/load@npm:7.8.14" + dependencies: + "@graphql-tools/schema": "npm:^9.0.18" + "@graphql-tools/utils": "npm:^9.2.1" + p-limit: "npm:3.1.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/1fa036ac596ccf48f350aa545d108c173184d9b53247f9e21c0d4ba96c5cba4a0b44281f9154f122e1e8e9d9d6eab93a5b2618ca8a797969bde1e75c1d45e786 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:9.0.1, @graphql-tools/merge@npm:^9.0.1": + version: 9.0.1 + resolution: "@graphql-tools/merge@npm:9.0.1" + dependencies: + "@graphql-tools/utils": "npm:^10.0.10" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/cbfcb2c10490a11417991e8b61b8df2eba73a2c576e57cbf2d928902030d4391122536b9442bf042609ec24376b79b8bc6d9117e137dd8db2255ed90613acbc7 + languageName: node + linkType: hard + +"@graphql-tools/merge@npm:^8.2.6, @graphql-tools/merge@npm:^8.4.1": + version: 8.4.2 + resolution: "@graphql-tools/merge@npm:8.4.2" + dependencies: + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/2df55222b48e010e683572f456cf265aabae5748c59f7c1260c66dec9794b7a076d3706f04da969b77f0a32c7ccb4551fee30125931d3fe9c98a8806aae9a3f4 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^1.3.0": + version: 1.4.0 + resolution: "@graphql-tools/optimize@npm:1.4.0" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/10be773b0082fe54b9505469a89925f1a5e33f866453b88cd411261951e8718f8720451e07c56cbfb762970b56b9b45c7c748d62afcdcf9414ec64533e94e543 + languageName: node + linkType: hard + +"@graphql-tools/optimize@npm:^2.0.0": + version: 2.0.0 + resolution: "@graphql-tools/optimize@npm:2.0.0" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/db4ac0a2b0c89126ee7746e5615ae003d8665b684b17fb35956a7633fefb0e329a047f32a975cfbdf83f0f5ac4ae09fe469834fd71fdd49d8ed932fda79012fd + languageName: node + linkType: hard + +"@graphql-tools/prisma-loader@npm:^7.2.49": + version: 7.2.72 + resolution: "@graphql-tools/prisma-loader@npm:7.2.72" + dependencies: + "@graphql-tools/url-loader": "npm:^7.17.18" + "@graphql-tools/utils": "npm:^9.2.1" + "@types/js-yaml": "npm:^4.0.0" + "@types/json-stable-stringify": "npm:^1.0.32" + "@whatwg-node/fetch": "npm:^0.8.2" + chalk: "npm:^4.1.0" + debug: "npm:^4.3.1" + dotenv: "npm:^16.0.0" + graphql-request: "npm:^6.0.0" + http-proxy-agent: "npm:^6.0.0" + https-proxy-agent: "npm:^6.0.0" + jose: "npm:^4.11.4" + js-yaml: "npm:^4.0.0" + json-stable-stringify: "npm:^1.0.1" + lodash: "npm:^4.17.20" + scuid: "npm:^1.1.0" + tslib: "npm:^2.4.0" + yaml-ast-parser: "npm:^0.0.43" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/7d3d8c2ba5fae3372179534ba4f846729e499fb0d5ab1b530751ed26241d5cc29a2a87f510930faaa884d1efbe42e462e246e2d060742a00b80a893b34fa5fa9 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^6.5.0": + version: 6.5.18 + resolution: "@graphql-tools/relay-operation-optimizer@npm:6.5.18" + dependencies: + "@ardatan/relay-compiler": "npm:12.0.0" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/9d74d65da8bf474e256ff0cfb77afb442a968451ded6a92b8348d8ac1bca3b2c13a578ab29ac869d10d53e0101219fe8283d485fff920aa7abcc68fcbbdd9a36 + languageName: node + linkType: hard + +"@graphql-tools/relay-operation-optimizer@npm:^7.0.0": + version: 7.0.0 + resolution: "@graphql-tools/relay-operation-optimizer@npm:7.0.0" + dependencies: + "@ardatan/relay-compiler": "npm:12.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/88f483d7fdd68f137f5b5a9e0cb8c4f312cebcc8366155570f08cb8c3f5d805e0db5e780ff8551600b7dfb8840958ff9ec3c5cd5121fd8be01d216ff4f4bdb56 + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:10.0.2, @graphql-tools/schema@npm:^10.0.0": + version: 10.0.2 + resolution: "@graphql-tools/schema@npm:10.0.2" + dependencies: + "@graphql-tools/merge": "npm:^9.0.1" + "@graphql-tools/utils": "npm:^10.0.10" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/3d71117c8d8ed491aa5b988bcdfcc1a7ca8cea8638b37083af2665a0dbb95e1255961a8a43658538ad33b83d621812886a4626ad7a5333d7d9e6c62304b52cb2 + languageName: node + linkType: hard + +"@graphql-tools/schema@npm:^9.0.0, @graphql-tools/schema@npm:^9.0.18, @graphql-tools/schema@npm:^9.0.19": + version: 9.0.19 + resolution: "@graphql-tools/schema@npm:9.0.19" + dependencies: + "@graphql-tools/merge": "npm:^8.4.1" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/42fd8ca8d3c8d60b583077c201980518482ff0cd5ed0c1f14bd9b835a2689ad41d02cbd3478f7d7dea7aec1227f7639fd5deb5e6360852a2e542b96b44bfb7a4 + languageName: node + linkType: hard + +"@graphql-tools/url-loader@npm:^7.13.2, @graphql-tools/url-loader@npm:^7.17.18, @graphql-tools/url-loader@npm:^7.9.7": + version: 7.17.18 + resolution: "@graphql-tools/url-loader@npm:7.17.18" + dependencies: + "@ardatan/sync-fetch": "npm:^0.0.1" + "@graphql-tools/delegate": "npm:^9.0.31" + "@graphql-tools/executor-graphql-ws": "npm:^0.0.14" + "@graphql-tools/executor-http": "npm:^0.1.7" + "@graphql-tools/executor-legacy-ws": "npm:^0.0.11" + "@graphql-tools/utils": "npm:^9.2.1" + "@graphql-tools/wrap": "npm:^9.4.2" + "@types/ws": "npm:^8.0.0" + "@whatwg-node/fetch": "npm:^0.8.0" + isomorphic-ws: "npm:^5.0.0" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.11" + ws: "npm:^8.12.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/963153fde3389f3e44de63c8bca3ce43c85c6ef0f9c5feb56b24d9146f4bf4fef84bebe44a961acc0e0aa0a48081add24684404b83b84bbb9f5e3fcdbc131cae + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:10.0.11": + version: 10.0.11 + resolution: "@graphql-tools/utils@npm:10.0.11" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + cross-inspect: "npm:1.0.0" + dset: "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/61c464541fe0b17d26cec83f93b5f4a3af352e10c22878c5449fbea5f22c68f1e0c78ddc0a93f480da42dba80fb41ebfe99920915c389ac132a0217ef808d2bc + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.0.10": + version: 10.0.13 + resolution: "@graphql-tools/utils@npm:10.0.13" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + cross-inspect: "npm:1.0.0" + dset: "npm:^3.1.2" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/6505c494716bb7aa36eba3d731f5a3e28c0bbd2efc818f1fdc7367a408ced8878bfff40f4dafbcef70d912219df81484e32e28130366e8355c126fcbc8ac9dd5 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^8.8.0": + version: 8.13.1 + resolution: "@graphql-tools/utils@npm:8.13.1" + dependencies: + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/f9bab1370aa91e706abec4c8ea980e15293cb78bd4effba53ad2365dc39d81148db7667b3ef89b35f0a0b0ad58081ffdac4264b7125c69fa8393590ae5025745 + languageName: node + linkType: hard + +"@graphql-tools/utils@npm:^9.0.0, @graphql-tools/utils@npm:^9.1.1, @graphql-tools/utils@npm:^9.2.1": + version: 9.2.1 + resolution: "@graphql-tools/utils@npm:9.2.1" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.1.1" + tslib: "npm:^2.4.0" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/37a7bd7e14d28ff1bacc007dca84bc6cef2d7d7af9a547b5dbe52fcd134afddd6d4a7b2148cfbaff5ddba91a868453d597da77bd0457fb0be15928f916901606 + languageName: node + linkType: hard + +"@graphql-tools/wrap@npm:^9.4.2": + version: 9.4.2 + resolution: "@graphql-tools/wrap@npm:9.4.2" + dependencies: + "@graphql-tools/delegate": "npm:^9.0.31" + "@graphql-tools/schema": "npm:^9.0.18" + "@graphql-tools/utils": "npm:^9.2.1" + tslib: "npm:^2.4.0" + value-or-promise: "npm:^1.0.12" + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/6b0aa1a78af8280c7356e2841156a6708a9a147e5991afae9586046ef000b8d08e6d0405dceb10ffbfb0c208a97a527a16d5f04ee2fbf99f6eefe98fe6037292 + languageName: node + linkType: hard + +"@graphql-typed-document-node/core@npm:3.2.0, @graphql-typed-document-node/core@npm:^3.1.1, @graphql-typed-document-node/core@npm:^3.2.0": + version: 3.2.0 + resolution: "@graphql-typed-document-node/core@npm:3.2.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + checksum: 10c0/94e9d75c1f178bbae8d874f5a9361708a3350c8def7eaeb6920f2c820e82403b7d4f55b3735856d68e145e86c85cbfe2adc444fdc25519cd51f108697e99346c + languageName: node + linkType: hard + +"@graphql-yoga/logger@npm:^2.0.0": + version: 2.0.0 + resolution: "@graphql-yoga/logger@npm:2.0.0" + dependencies: + tslib: "npm:^2.5.2" + checksum: 10c0/1489588485c9974aba66c0e5002a1251085771b0703ac1aaa2a3df93b895fc57f7cf6203680ff453b304d4ba438ea6a4cc9999d13a4bf6fd5128f3f088ff927b + languageName: node + linkType: hard + +"@graphql-yoga/plugin-persisted-operations@npm:3.1.1": + version: 3.1.1 + resolution: "@graphql-yoga/plugin-persisted-operations@npm:3.1.1" + peerDependencies: + "@graphql-tools/utils": ^10.0.0 + graphql: ^15.2.0 || ^16.0.0 + graphql-yoga: ^5.1.1 + checksum: 10c0/19c00017f75df4aed065d30e67da5728a1ef6ee852dd7f30c052628b465e8d3e1a24c4ed70995d6ca2018b750649cea5e5902eadf0c75a2c65c7e487dd295169 + languageName: node + linkType: hard + +"@graphql-yoga/subscription@npm:^5.0.0": + version: 5.0.0 + resolution: "@graphql-yoga/subscription@npm:5.0.0" + dependencies: + "@graphql-yoga/typed-event-target": "npm:^3.0.0" + "@repeaterjs/repeater": "npm:^3.0.4" + "@whatwg-node/events": "npm:^0.1.0" + tslib: "npm:^2.5.2" + checksum: 10c0/05e2f5cb23ea2b3cfe3737cf13fb98ebb3ded8a6a8239a170a6bd65b443109595e1bf2bbef94e3b18438b63dae18761bce4225eb437420bae651131457ede8b5 + languageName: node + linkType: hard + +"@graphql-yoga/typed-event-target@npm:^3.0.0": + version: 3.0.0 + resolution: "@graphql-yoga/typed-event-target@npm:3.0.0" + dependencies: + "@repeaterjs/repeater": "npm:^3.0.4" + tslib: "npm:^2.5.2" + checksum: 10c0/563c26e4ef8f116e3b2991651acc2a80a37e1c53c6df4159e46e948b226624fc3c414663deef063fa19a7a63bc6a2d2ed8b950782b4d57f34eea775e3312d61c + languageName: node + linkType: hard + +"@humanwhocodes/config-array@npm:^0.11.13": + version: 0.11.14 + resolution: "@humanwhocodes/config-array@npm:0.11.14" + dependencies: + "@humanwhocodes/object-schema": "npm:^2.0.2" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: 10c0/66f725b4ee5fdd8322c737cb5013e19fac72d4d69c8bf4b7feb192fcb83442b035b92186f8e9497c220e58b2d51a080f28a73f7899bc1ab288c3be172c467541 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/object-schema@npm:^2.0.2": + version: 2.0.2 + resolution: "@humanwhocodes/object-schema@npm:2.0.2" + checksum: 10c0/6fd83dc320231d71c4541d0244051df61f301817e9f9da9fd4cb7e44ec8aacbde5958c1665b0c419401ab935114fdf532a6ad5d4e7294b1af2f347dd91a6983f + languageName: node + linkType: hard + +"@iarna/toml@npm:2.2.5": + version: 2.2.5 + resolution: "@iarna/toml@npm:2.2.5" + checksum: 10c0/d095381ad4554aca233b7cf5a91f243ef619e5e15efd3157bc640feac320545450d14b394aebbf6f02a2047437ced778ae598d5879a995441ab7b6c0b2c2f201 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/7be408781d0a6f657e969cbec13b540c329671819c2f57acfad0dae9dbfe2c9be859f38fe99b35dba9ff1536937dc6ddc69fdcd2794812fa3c647a1619797f6c + languageName: node + linkType: hard + +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/reporters": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-changed-files: "npm:^29.7.0" + jest-config: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-resolve-dependencies: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-ansi: "npm:^6.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/934f7bf73190f029ac0f96662c85cd276ec460d407baf6b0dbaec2872e157db4d55a7ee0b1c43b18874602f662b37cb973dda469a4e6d88b4e4845b521adeeb2 + languageName: node + linkType: hard + +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" + dependencies: + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + checksum: 10c0/c7b1b40c618f8baf4d00609022d2afa086d9c6acc706f303a70bb4b67275868f620ad2e1a9efc5edd418906157337cce50589a627a6400bbdf117d351b91ef86 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + checksum: 10c0/60b79d23a5358dc50d9510d726443316253ecda3a7fb8072e1526b3e0d3b14f066ee112db95699b7a43ad3f0b61b750c72e28a5a1cac361d7a2bb34747fa938a + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b41f193fb697d3ced134349250aed6ccea075e48c4f803159db102b826a4e473397c68c31118259868fd69a5cba70e97e1c26d2c2ff716ca39dc73a2ccec037e + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@sinonjs/fake-timers": "npm:^10.0.2" + "@types/node": "npm:*" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/cf0a8bcda801b28dc2e2b2ba36302200ee8104a45ad7a21e6c234148932f826cb3bc57c8df3b7b815aeea0861d7b6ca6f0d4778f93b9219398ef28749e03595c + languageName: node + linkType: hard + +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + jest-mock: "npm:^29.7.0" + checksum: 10c0/a385c99396878fe6e4460c43bd7bb0a5cc52befb462cc6e7f2a3810f9e7bcce7cdeb51908fd530391ee452dc856c98baa2c5f5fa8a5b30b071d31ef7f6955cea + languageName: node + linkType: hard + +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + collect-v8-coverage: "npm:^1.0.0" + exit: "npm:^0.1.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^4.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.1" + strip-ansi: "npm:^6.0.0" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/a754402a799541c6e5aff2c8160562525e2a47e7d568f01ebfc4da66522de39cbb809bbb0a841c7052e4270d79214e70aec3c169e4eae42a03bc1a8a20cb9fa2 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": "npm:^0.27.8" + checksum: 10c0/b329e89cd5f20b9278ae1233df74016ebf7b385e0d14b9f4c1ad18d096c4c19d1e687aa113a9c976b16ec07f021ae53dea811fb8c1248a50ac34fbe009fdf6be + languageName: node + linkType: hard + +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + callsites: "npm:^3.0.0" + graceful-fs: "npm:^4.2.9" + checksum: 10c0/a2f177081830a2e8ad3f2e29e20b63bd40bade294880b595acf2fc09ec74b6a9dd98f126a2baa2bf4941acd89b13a4ade5351b3885c224107083a0059b60a219 + languageName: node + linkType: hard + +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + collect-v8-coverage: "npm:^1.0.0" + checksum: 10c0/7de54090e54a674ca173470b55dc1afdee994f2d70d185c80236003efd3fa2b753fff51ffcdda8e2890244c411fd2267529d42c4a50a8303755041ee493e6a04 + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + slash: "npm:^3.0.0" + checksum: 10c0/593a8c4272797bb5628984486080cbf57aed09c7cfdc0a634e8c06c38c6bef329c46c0016e84555ee55d1cd1f381518cf1890990ff845524c1123720c8c1481b + languageName: node + linkType: hard + +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/types": "npm:^29.6.3" + "@jridgewell/trace-mapping": "npm:^0.3.18" + babel-plugin-istanbul: "npm:^6.1.1" + chalk: "npm:^4.0.0" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + pirates: "npm:^4.0.4" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^4.0.2" + checksum: 10c0/7f4a7f73dcf45dfdf280c7aa283cbac7b6e5a904813c3a93ead7e55873761fc20d5c4f0191d2019004fac6f55f061c82eb3249c2901164ad80e362e7a7ede5a6 + languageName: node + linkType: hard + +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" + dependencies: + "@jest/schemas": "npm:^29.6.3" + "@types/istanbul-lib-coverage": "npm:^2.0.0" + "@types/istanbul-reports": "npm:^3.0.0" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.8" + chalk: "npm:^4.0.0" + checksum: 10c0/ea4e493dd3fb47933b8ccab201ae573dcc451f951dc44ed2a86123cd8541b82aa9d2b1031caf9b1080d6673c517e2dcc25a44b2dc4f3fbc37bfc965d444888c0 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" + dependencies: + "@jridgewell/set-array": "npm:^1.0.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/376fc11cf5a967318ba3ddd9d8e91be528eab6af66810a713c49b0c3f8dc67e9949452c51c38ab1b19aa618fb5e8594da5a249977e26b1e7fea1ee5a1fcacc74 + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.0.1": + version: 1.1.2 + resolution: "@jridgewell/set-array@npm:1.1.2" + checksum: 10c0/bc7ab4c4c00470de4e7562ecac3c0c84f53e7ee8a711e546d67c47da7febe7c45cd67d4d84ee3c9b2c05ae8e872656cdded8a707a283d30bd54fbc65aef821ab + languageName: node + linkType: hard + +"@jridgewell/source-map@npm:^0.3.3": + version: 0.3.5 + resolution: "@jridgewell/source-map@npm:0.3.5" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.0" + "@jridgewell/trace-mapping": "npm:^0.3.9" + checksum: 10c0/b985d9ebd833a21a6e9ace820c8a76f60345a34d9e28d98497c16b6e93ce1f131bff0abd45f8585f14aa382cce678ed680d628c631b40a9616a19cfbc2049b68 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: 10c0/0c6b5ae663087558039052a626d2d7ed5208da36cfd707dcc5cea4a07cfc918248403dcb5989a8f7afaf245ce0573b7cc6fd94c4a30453bd10e44d9363940ba5 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10c0/fa425b606d7c7ee5bfa6a31a7b050dd5814b4082f318e0e4190f991902181b4330f43f4805db1dd4f2433fd0ed9cc7a7b9c2683f1deeab1df1b0a98b1e24055b + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.9": + version: 0.3.22 + resolution: "@jridgewell/trace-mapping@npm:0.3.22" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/18cf19f88e2792c1c91515f2b629aae05f3cdbb2e60c3886e16e80725234ce26dd10144c4981c05d9366e7094498c0b4fe5c1a89f4a730d7376a4ba4af448149 + languageName: node + linkType: hard + +"@kamilkisiela/fast-url-parser@npm:^1.1.4": + version: 1.1.4 + resolution: "@kamilkisiela/fast-url-parser@npm:1.1.4" + checksum: 10c0/2c85202cb4924720ac812c8bc06967fd5df4db759a68aa3acc2962b8cf9e2b3bc131de863f00473c0b0602df13891b35140f667a87eea04c9b897b6c1ae89c4a + languageName: node + linkType: hard + +"@leichtgewicht/ip-codec@npm:^2.0.1": + version: 2.0.4 + resolution: "@leichtgewicht/ip-codec@npm:2.0.4" + checksum: 10c0/3b0d8844d1d47c0a5ed7267c2964886adad3a642b85d06f95c148eeefd80cdabbd6aa0d63ccde8239967a2e9b6bb734a16bd57e1fda3d16bf56d50a7e7ec131b + languageName: node + linkType: hard + +"@lukeed/ms@npm:^2.0.1": + version: 2.0.2 + resolution: "@lukeed/ms@npm:2.0.2" + checksum: 10c0/843b922717313bcde4943f478145d8bc13115b9b91d83bbaed53739b5644122984412310aed574792f4e6b492f2cbda178175f601856d310f67e14834c3f17a0 + languageName: node + linkType: hard + +"@mrleebo/prisma-ast@npm:^0.5.2": + version: 0.5.2 + resolution: "@mrleebo/prisma-ast@npm:0.5.2" + dependencies: + chevrotain: "npm:^10.4.2" + checksum: 10c0/155795a245d885d6cd3edac43a3eb57c8ba5c178d71b7595e278c3f7879f78511b9796d3b13e37c228cfdba9621715a2af450611b68aa4d58739fbe129e8200d + languageName: node + linkType: hard + +"@mswjs/cookies@npm:^0.2.2": + version: 0.2.2 + resolution: "@mswjs/cookies@npm:0.2.2" + dependencies: + "@types/set-cookie-parser": "npm:^2.4.0" + set-cookie-parser: "npm:^2.4.6" + checksum: 10c0/f950062538d431674d581309cf19884fc4d3f57e2a276164cac0c9a3250071d42464ba7825d13be14c703ca5a912d62a62626f4a068d8f36d1629dbb63bde740 + languageName: node + linkType: hard + +"@mswjs/interceptors@npm:^0.17.10": + version: 0.17.10 + resolution: "@mswjs/interceptors@npm:0.17.10" + dependencies: + "@open-draft/until": "npm:^1.0.3" + "@types/debug": "npm:^4.1.7" + "@xmldom/xmldom": "npm:^0.8.3" + debug: "npm:^4.3.3" + headers-polyfill: "npm:3.2.5" + outvariant: "npm:^1.2.1" + strict-event-emitter: "npm:^0.2.4" + web-encoding: "npm:^1.1.5" + checksum: 10c0/0343a93711b60c321c40733d6bf2720a736d8e0730f5d0d9916ee4a24abfcfca4a83d1e4b2e21c3affef4fc61f04588104be002fbc8258dc4b0d202c384ade33 + languageName: node + linkType: hard + +"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": + version: 2.1.8-no-fsevents.3 + resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" + checksum: 10c0/27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 + languageName: node + linkType: hard + +"@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1": + version: 5.1.1-v1 + resolution: "@nicolo-ribaudo/eslint-scope-5-internals@npm:5.1.1-v1" + dependencies: + eslint-scope: "npm:5.1.1" + checksum: 10c0/75dda3e623b8ad7369ca22552d6beee337a814b2d0e8a32d23edd13fcb65c8082b32c5d86e436f3860dd7ade30d91d5db55d4ef9a08fb5a976c718ecc0d88a74 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^2.0.0": + version: 2.2.1 + resolution: "@npmcli/agent@npm:2.2.1" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.1" + checksum: 10c0/38ee5cbe8f3cde13be916e717bfc54fd1a7605c07af056369ff894e244c221e0b56b08ca5213457477f9bc15bca9e729d51a4788829b5c3cf296b3c996147f76 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^3.1.0": + version: 3.1.0 + resolution: "@npmcli/fs@npm:3.1.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/162b4a0b8705cd6f5c2470b851d1dc6cd228c86d2170e1769d738c1fbb69a87160901411c3c035331e9e99db72f1f1099a8b734bf1637cc32b9a5be1660e4e1e + languageName: node + linkType: hard + +"@open-draft/until@npm:^1.0.3": + version: 1.0.3 + resolution: "@open-draft/until@npm:1.0.3" + checksum: 10c0/f88bcd774b55359d14a4fa80f7bfe7d9d6d26a5995e94e823e43b211656daae3663e983f0a996937da286d22f6f5da2087b661845302f236ba27f8529dcd14fb + languageName: node + linkType: hard + +"@opentelemetry/api-logs@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/api-logs@npm:0.45.1" + dependencies: + "@opentelemetry/api": "npm:^1.0.0" + checksum: 10c0/110784924fe39fd544ff71ca6f117834e229fc7940fea7492b3d2bdf1259fc7819860603fda7cc970b6ecd37d79f365be559e0999141172e455e8a839c4d0836 + languageName: node + linkType: hard + +"@opentelemetry/api@npm:1.7.0, @opentelemetry/api@npm:^1.0.0": + version: 1.7.0 + resolution: "@opentelemetry/api@npm:1.7.0" + checksum: 10c0/b5468115d1cec45dd2b86b39210fdc03620a93b9f07c3d20b14081f75e2f7c9b37ceceeb60d5f35c6d4f9819ae07eee0b4874e53e7362376db21db1e00f483f8 + languageName: node + linkType: hard + +"@opentelemetry/context-async-hooks@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/context-async-hooks@npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/6de54978adc500dbcc96738f0a74080c784a5bfe25bd193158bf4abb14659a9a27595cbd65f45dc9058b02c6c9ae883a2a0002b72c036264db676213c25cb7c8 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/core@npm:1.18.1" + dependencies: + "@opentelemetry/semantic-conventions": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/ceb17446ce32faaa8d71caaaf25c9abbc5fd72077c7b868ea6f51e08a4a3daeb9133682a3b299a64291111416f2dd0dbeeed66f44409995fa4540f7250e3ffe1 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-http@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.45.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/otlp-exporter-base": "npm:0.45.1" + "@opentelemetry/otlp-transformer": "npm:0.45.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/sdk-trace-base": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 10c0/3561877ff62bff651a7a4f0f17578910843fc5e00e2e33493591c61a2ac4d85c936b5024fc1dbcbb53c3cf3079914fbf9d80f71dfc3a6301589152b3e5ad84c0 + languageName: node + linkType: hard + +"@opentelemetry/otlp-exporter-base@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/otlp-exporter-base@npm:0.45.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 10c0/22f30443238c2c9ddf26f1a18bf80012bc38cefe0e7ee6c32bd5c44d1f2303b11ab68130b638bd5f977ebc40d030890a407466033b42a9a9dba02c864568f82f + languageName: node + linkType: hard + +"@opentelemetry/otlp-transformer@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/otlp-transformer@npm:0.45.1" + dependencies: + "@opentelemetry/api-logs": "npm:0.45.1" + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/sdk-logs": "npm:0.45.1" + "@opentelemetry/sdk-metrics": "npm:1.18.1" + "@opentelemetry/sdk-trace-base": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.8.0" + checksum: 10c0/5e306e88dff99ef48543edda3e76851fe8d8894981f138479623befa0e8276d84541beaee6ef2a4dfe0bc5a2feb96b3137edb17ad0751d332e67b9d67f49ffa3 + languageName: node + linkType: hard + +"@opentelemetry/propagator-b3@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/propagator-b3@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/c3a31c3679f66a407da3e867775a01f0fbeda5ccd4482bb2979af6285c545ceaed41ad6f9061124daf4d6af2e1f4b3db52095085b159df6197454612752c4cfb + languageName: node + linkType: hard + +"@opentelemetry/propagator-jaeger@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/propagator-jaeger@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/622035eed6a219b24bbb26d12d4efe1ed8d84f5e5045b5e948808ea92d5f0a029233ea47126c8322c3c9d6c3f1fe904aed82ed9f68c4e006123ae083c0fb2f32 + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/resources@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/semantic-conventions": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/064cc1948c7ea9a31edfbf9945c326be1c2802e48c0c0e977cfd2cb4e5e3b63de13d7cc299da31ca99fd2fc82587c16fca53fc60a64db49d479fb16b4593eaea + languageName: node + linkType: hard + +"@opentelemetry/sdk-logs@npm:0.45.1": + version: 0.45.1 + resolution: "@opentelemetry/sdk-logs@npm:0.45.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.8.0" + "@opentelemetry/api-logs": ">=0.39.1" + checksum: 10c0/9210dab03024509500a0af9905ad676fdfc118fcccc9be8fa9e0c11147bdc242c580407c7bf2395502193884715e292ee17e811cede2586465dda04b2c8464e0 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/sdk-metrics@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + lodash.merge: "npm:^4.6.2" + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.8.0" + checksum: 10c0/3c7050eb997d0bf9d1a6182f94cb49fcf4d62dd47df45b7e9e881df5bd6135a0d54c664fd29ae2a21fbf7cf93715c0e3e4a390bd56059e70a9ccd3f7ee5ab6a4 + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/sdk-trace-base@npm:1.18.1" + dependencies: + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/semantic-conventions": "npm:1.18.1" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/e3ab716724d9d761c12cbabc41246e7ef27d8c05bc298cae0fa9a7fc84cf9229a87d4128b6ff28d11f12fcc4b0cdabad13d80a5ea57f99e26860bdf38622173c + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-node@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/sdk-trace-node@npm:1.18.1" + dependencies: + "@opentelemetry/context-async-hooks": "npm:1.18.1" + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/propagator-b3": "npm:1.18.1" + "@opentelemetry/propagator-jaeger": "npm:1.18.1" + "@opentelemetry/sdk-trace-base": "npm:1.18.1" + semver: "npm:^7.5.2" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.8.0" + checksum: 10c0/1b9f4718b12da439e8147a3bba8d7902cd9fd316954fbdbc51b72b90f2eede3ae17f97331f7cf888df9994f4c7cd63f4b64286a74c0cfc8695e7df0b913d1349 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.18.1": + version: 1.18.1 + resolution: "@opentelemetry/semantic-conventions@npm:1.18.1" + checksum: 10c0/6437c3758e732d643218e35c66fa931ddf65dde9a33c10af16b866135cbb5357fc3424316139c2ca1188cf0f5b23e844b6e6c9ab461637cb150a40219bee70e9 + languageName: node + linkType: hard + +"@parcel/watcher-android-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-android-arm64@npm:2.4.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.0" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.0": + version: 2.4.0 + resolution: "@parcel/watcher-win32-x64@npm:2.4.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.1.0": + version: 2.4.0 + resolution: "@parcel/watcher@npm:2.4.0" + dependencies: + "@parcel/watcher-android-arm64": "npm:2.4.0" + "@parcel/watcher-darwin-arm64": "npm:2.4.0" + "@parcel/watcher-darwin-x64": "npm:2.4.0" + "@parcel/watcher-freebsd-x64": "npm:2.4.0" + "@parcel/watcher-linux-arm-glibc": "npm:2.4.0" + "@parcel/watcher-linux-arm64-glibc": "npm:2.4.0" + "@parcel/watcher-linux-arm64-musl": "npm:2.4.0" + "@parcel/watcher-linux-x64-glibc": "npm:2.4.0" + "@parcel/watcher-linux-x64-musl": "npm:2.4.0" + "@parcel/watcher-win32-arm64": "npm:2.4.0" + "@parcel/watcher-win32-ia32": "npm:2.4.0" + "@parcel/watcher-win32-x64": "npm:2.4.0" + detect-libc: "npm:^1.0.3" + is-glob: "npm:^4.0.3" + micromatch: "npm:^4.0.5" + node-addon-api: "npm:^7.0.0" + node-gyp: "npm:latest" + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 10c0/f8a7103d8402dceaeed6e7ceef5592ceed6c3ceed7bd747590dbf7b51ca56fd4cb26a6322d1952b4bca52acb41e9d4a13468035b371ef5d264230c4286bf4d0a + languageName: node + linkType: hard + +"@peculiar/asn1-schema@npm:^2.3.8": + version: 2.3.8 + resolution: "@peculiar/asn1-schema@npm:2.3.8" + dependencies: + asn1js: "npm:^3.0.5" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 10c0/65f16b2a7eb91365b6dac47730ffcad4617ef04b821e0a4286c379ac7283588b0a6744032ee686e0914a0886c2a055108ed945b9c4d22821a3b123640b61f3b2 + languageName: node + linkType: hard + +"@peculiar/json-schema@npm:^1.1.12": + version: 1.1.12 + resolution: "@peculiar/json-schema@npm:1.1.12" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10c0/202132c66dcc6b6aca5d0af971c015be2e163da2f7f992910783c5d39c8a7db59b6ec4f4ce419459a1f954b7e1d17b6b253f0e60072c1b3d254079f4eaebc311 + languageName: node + linkType: hard + +"@peculiar/webcrypto@npm:^1.4.0": + version: 1.4.5 + resolution: "@peculiar/webcrypto@npm:1.4.5" + dependencies: + "@peculiar/asn1-schema": "npm:^2.3.8" + "@peculiar/json-schema": "npm:^1.1.12" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + webcrypto-core: "npm:^1.7.8" + checksum: 10c0/7cefe2a1329e3d41721268cf483dfd7a7a3bfbdaaba0ca8db9a538b49a51c6977f66f7f85e6f0c2162ff8d09540821bedc6766586d83c4be565b1af49ea81a86 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11": + version: 0.5.11 + resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.11" + dependencies: + ansi-html-community: "npm:^0.0.8" + common-path-prefix: "npm:^3.0.0" + core-js-pure: "npm:^3.23.3" + error-stack-parser: "npm:^2.0.6" + find-up: "npm:^5.0.0" + html-entities: "npm:^2.1.0" + loader-utils: "npm:^2.0.4" + schema-utils: "npm:^3.0.0" + source-map: "npm:^0.7.3" + 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 + checksum: 10c0/a9c8468417a14a23339e313cff6ddb8029e0637748973070e61d83a2534620b3492b9a42ecf9eb9d63cb709f53c17fe814bc7dd68d64c300db338e9fd7287bc4 + languageName: node + linkType: hard + +"@polka/url@npm:^1.0.0-next.24": + version: 1.0.0-next.24 + resolution: "@polka/url@npm:1.0.0-next.24" + checksum: 10c0/97d98fa911857158514457bedad8c36084c1f608302458f580ab300a25c3abf456d1d54fcf2ea7927464bee0858baf5e8e5b374b95c3375b9eb3784d81411ebd + languageName: node + linkType: hard + +"@prisma/client@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/client@npm:5.9.1" + peerDependencies: + prisma: "*" + peerDependenciesMeta: + prisma: + optional: true + checksum: 10c0/5447007e42d507e45960210d804736000b53556b076dd15797dfaed0c58e462dc24eb27e9c6636b8a145dd1a103fc7f6cd876f1906217e8fd8b74c6533169287 + languageName: node + linkType: hard + +"@prisma/debug@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/debug@npm:5.9.1" + checksum: 10c0/0e116019f5e8df7ec30503bcfd033e54c94a20e2a6d6abeed525eac3e0be8f40f8cd3b0cf43abad91d1ec80c3dbca8d827f753b2ccbf9eea20a05ff1cd1d12f5 + languageName: node + linkType: hard + +"@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": + version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 + resolution: "@prisma/engines-version@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + checksum: 10c0/861dd5f88fec224c5bd5885f0a33f8ab0cd39190497806d27d411ea8abde2b684eb27518c47bb0b560e025219284b94d2c5d85abc715f2765f2500e766bf2fdd + languageName: node + linkType: hard + +"@prisma/engines@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/engines@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + "@prisma/fetch-engine": "npm:5.9.1" + "@prisma/get-platform": "npm:5.9.1" + checksum: 10c0/2148c14ec3d46709477319b23dae0e837c91a8119ee01e0a06daf73e6f008bfda5439603d29d722e17b297f2ebe2e73eedb50a4e914a2103931d3de2b4409436 + languageName: node + linkType: hard + +"@prisma/fetch-engine@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/fetch-engine@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + "@prisma/engines-version": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + "@prisma/get-platform": "npm:5.9.1" + checksum: 10c0/3abe9ce5dcdea042a6047ba6497730f6d7ce05103de7cf1634e7543742369abc4a62179a8de1cb219e132f5e45729c95c04fc039cebee5b93c23400722ba0583 + languageName: node + linkType: hard + +"@prisma/generator-helper@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/generator-helper@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + checksum: 10c0/34179bc1aded0fec379393f9849046cf3ec3792ca9c052a5486720127af0a234aa0ce3f2b31b04246ac481549a028ddbd9c08259ddcbdce81e8f88db77d5d1f4 + languageName: node + linkType: hard + +"@prisma/get-platform@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/get-platform@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + checksum: 10c0/ac7aa5fca0d5c2a6f04b04bc30eef8df4524ec34e9b2761b47c9fa58ab9b718c5525cb20a944d10e66d7978a4f8ec1ba6cb44a41139d26f885dbfd69c17d385b + languageName: node + linkType: hard + +"@prisma/internals@npm:5.9.1": + version: 5.9.1 + resolution: "@prisma/internals@npm:5.9.1" + dependencies: + "@prisma/debug": "npm:5.9.1" + "@prisma/engines": "npm:5.9.1" + "@prisma/fetch-engine": "npm:5.9.1" + "@prisma/generator-helper": "npm:5.9.1" + "@prisma/get-platform": "npm:5.9.1" + "@prisma/prisma-schema-wasm": "npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + arg: "npm:5.0.2" + prompts: "npm:2.4.2" + checksum: 10c0/1afc0e9cbdef678260524b32111d5d2d8aaa684c5800f407055f20c68d39e6afa3e5c0378ce9223a58c6021023c19b08b7ed4a2ee0418552e9213d39b8eeec17 + languageName: node + linkType: hard + +"@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64": + version: 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 + resolution: "@prisma/prisma-schema-wasm@npm:5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64" + checksum: 10c0/ad61814eb28b57f540fbaa508db7056742905305e0393ee6a5bc3624ed9e54dba75f8472f1bff620b6c47364355e3caa69a1dd2009735e4c4ecbe5cd2110204e + languageName: node + linkType: hard + +"@redwoodjs/api-server@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/api-server@npm:7.0.0" + dependencies: + "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" + chalk: "npm:4.1.2" + chokidar: "npm:3.5.3" + dotenv-defaults: "npm:5.0.2" + fast-glob: "npm:3.3.2" + fast-json-parse: "npm:1.0.3" + fastify: "npm:4.25.2" + fastify-raw-body: "npm:4.3.0" + lodash: "npm:4.17.21" + pretty-bytes: "npm:5.6.0" + pretty-ms: "npm:7.0.1" + qs: "npm:6.11.2" + split2: "npm:4.2.0" + yargs: "npm:17.7.2" + peerDependencies: + "@redwoodjs/graphql-server": 6.0.7 + peerDependenciesMeta: + "@redwoodjs/graphql-server": + optional: true + bin: + rw-api-server-watch: dist/watch.js + rw-log-formatter: dist/logFormatter/bin.js + rw-server: dist/bin.js + checksum: 10c0/680afa57f89dc5d193e892ac67632fd16403a2926f0c518445706813e654ff632e535db7c749f4cb25b566ec340a84ecd7c8f8ef2a656fd0deddc9618418da86 + languageName: node + linkType: hard + +"@redwoodjs/api@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/api@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@prisma/client": "npm:5.9.1" + "@whatwg-node/fetch": "npm:0.9.14" + core-js: "npm:3.35.1" + humanize-string: "npm:2.1.0" + jsonwebtoken: "npm:9.0.2" + pascalcase: "npm:1.0.0" + pino: "npm:8.16.2" + title-case: "npm:3.0.3" + peerDependencies: + memjs: 1.3.1 + redis: 4.6.7 + peerDependenciesMeta: + memjs: + optional: true + redis: + optional: true + bin: + redwood: dist/bins/redwood.js + rw: dist/bins/redwood.js + rwfw: dist/bins/rwfw.js + tsc: dist/bins/tsc.js + checksum: 10c0/89e081b348256804c717c1986af99b5d96c90fb02d931a55b9e202d2d2f5056919a5b436c0a1a84833fe3571ab9ee5e2e655219b46323fd08c4fef0cf0628bc3 + languageName: node + linkType: hard + +"@redwoodjs/auth@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/auth@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + core-js: "npm:3.35.1" + react: "npm:18.2.0" + checksum: 10c0/e0abe96b939394c181c77e6d4c450a78fd7f2392a449e56796d0f4d1f00066657550c50d222c97dc57132d7bcb720f8ec124d4daeb3168eaff8c8c66da0d68fe + languageName: node + linkType: hard + +"@redwoodjs/babel-config@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/babel-config@npm:7.0.0" + dependencies: + "@babel/core": "npm:^7.22.20" + "@babel/parser": "npm:^7.22.16" + "@babel/plugin-transform-class-properties": "npm:^7.22.5" + "@babel/plugin-transform-private-methods": "npm:^7.22.5" + "@babel/plugin-transform-private-property-in-object": "npm:^7.22.11" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-runtime": "npm:7.23.9" + "@babel/preset-env": "npm:^7.22.20" + "@babel/preset-react": "npm:^7.22.15" + "@babel/preset-typescript": "npm:^7.22.15" + "@babel/register": "npm:^7.22.15" + "@babel/runtime-corejs3": "npm:7.23.9" + "@babel/traverse": "npm:^7.22.20" + "@redwoodjs/project-config": "npm:7.0.0" + babel-plugin-auto-import: "npm:1.1.0" + babel-plugin-graphql-tag: "npm:3.3.0" + babel-plugin-module-resolver: "npm:5.0.0" + core-js: "npm:3.35.1" + fast-glob: "npm:3.3.2" + graphql: "npm:16.8.1" + typescript: "npm:5.3.3" + checksum: 10c0/5c426409e9f13e7d8dc71a67e6dfa7b20029205d760fd32f4089ab44307f88a56f67b78deceb21328e23f7573259d26cda77e1606ca5ab6ec4a544ff289981ea + languageName: node + linkType: hard + +"@redwoodjs/cli-helpers@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/cli-helpers@npm:7.0.0" + dependencies: + "@babel/core": "npm:^7.22.20" + "@iarna/toml": "npm:2.2.5" + "@opentelemetry/api": "npm:1.7.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" + chalk: "npm:4.1.2" + dotenv: "npm:16.3.1" + execa: "npm:5.1.1" + listr2: "npm:6.6.1" + lodash: "npm:4.17.21" + pascalcase: "npm:1.0.0" + prettier: "npm:2.8.8" + prompts: "npm:2.4.2" + terminal-link: "npm:2.1.1" + checksum: 10c0/caa44734cfde7e126a3e4f89dd6188a2d2514ff6013edacdbf1e0e0a50fba60770ee8b9830d1c37d2133d0f924d416e6a7334dfb64a4c65d846cb0f252e8c228 + languageName: node + linkType: hard + +"@redwoodjs/cli@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/cli@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@iarna/toml": "npm:2.2.5" + "@opentelemetry/api": "npm:1.7.0" + "@opentelemetry/core": "npm:1.18.1" + "@opentelemetry/exporter-trace-otlp-http": "npm:0.45.1" + "@opentelemetry/resources": "npm:1.18.1" + "@opentelemetry/sdk-trace-node": "npm:1.18.1" + "@opentelemetry/semantic-conventions": "npm:1.18.1" + "@prisma/internals": "npm:5.9.1" + "@redwoodjs/api-server": "npm:7.0.0" + "@redwoodjs/cli-helpers": "npm:7.0.0" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/prerender": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" + archiver: "npm:6.0.1" + boxen: "npm:5.1.2" + camelcase: "npm:6.3.0" + chalk: "npm:4.1.2" + ci-info: "npm:4.0.0" + concurrently: "npm:8.2.2" + configstore: "npm:3.1.5" + core-js: "npm:3.35.1" + cross-env: "npm:7.0.3" + decamelize: "npm:5.0.1" + dotenv-defaults: "npm:5.0.2" + enquirer: "npm:2.4.1" + envinfo: "npm:7.11.0" + execa: "npm:5.1.1" + fast-glob: "npm:3.3.2" + fs-extra: "npm:11.2.0" + humanize-string: "npm:2.1.0" + jscodeshift: "npm:0.15.0" + latest-version: "npm:5.1.0" + listr2: "npm:6.6.1" + lodash: "npm:4.17.21" + param-case: "npm:3.0.4" + pascalcase: "npm:1.0.0" + pluralize: "npm:8.0.0" + portfinder: "npm:1.0.32" + prettier: "npm:2.8.8" + prisma: "npm:5.9.1" + prompts: "npm:2.4.2" + rimraf: "npm:5.0.5" + semver: "npm:7.5.4" + string-env-interpolation: "npm:1.0.1" + systeminformation: "npm:5.21.20" + terminal-link: "npm:2.1.1" + title-case: "npm:3.0.3" + uuid: "npm:9.0.1" + yargs: "npm:17.7.2" + bin: + redwood: dist/index.js + rw: dist/index.js + rwfw: dist/rwfw.js + checksum: 10c0/8fea374d3404b764eb4848920505585fbb81a8927b1364014cb468618638d3fd742b55ddce2020c9c9c09631b12114cd9f1723ddc5a255b05332a53d10e7f6ce + languageName: node + linkType: hard + +"@redwoodjs/context@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/context@npm:7.0.0" + checksum: 10c0/1f859e3e0a358e60d5c536652cd890c5549d76af43019bf903770bb10ace8f0090825327a14c92e8ced08a359d5b5bf945b8b125803e124707e6ecd007e6451f + languageName: node + linkType: hard + +"@redwoodjs/core@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/core@npm:7.0.0" + dependencies: + "@babel/cli": "npm:7.23.9" + "@babel/runtime-corejs3": "npm:7.23.9" + "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.11" + "@redwoodjs/cli": "npm:7.0.0" + "@redwoodjs/eslint-config": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/testing": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" + babel-loader: "npm:^9.1.3" + babel-timing: "npm:0.9.1" + copy-webpack-plugin: "npm:11.0.0" + core-js: "npm:3.35.1" + css-loader: "npm:6.8.1" + css-minimizer-webpack-plugin: "npm:5.0.1" + dotenv-webpack: "npm:8.0.1" + graphql-tag: "npm:2.12.6" + html-webpack-plugin: "npm:5.5.4" + lodash: "npm:4.17.21" + mini-css-extract-plugin: "npm:2.7.6" + nodemon: "npm:3.0.2" + null-loader: "npm:4.0.1" + react-refresh: "npm:0.14.0" + resolve-url-loader: "npm:5.0.0" + rimraf: "npm:5.0.5" + style-loader: "npm:3.3.3" + typescript: "npm:5.3.3" + url-loader: "npm:4.1.1" + webpack: "npm:5.90.0" + webpack-bundle-analyzer: "npm:4.9.1" + webpack-cli: "npm:5.1.4" + webpack-dev-server: "npm:4.15.1" + webpack-manifest-plugin: "npm:5.0.0" + webpack-merge: "npm:5.10.0" + webpack-retry-chunk-load-plugin: "npm:3.1.1" + bin: + cross-env: dist/bins/cross-env.js + eslint: dist/bins/eslint.js + jest: dist/bins/jest.js + nodemon: dist/bins/nodemon.js + redwood: dist/bins/redwood.js + rw: dist/bins/redwood.js + rw-api-server-watch: dist/bins/rw-api-server-watch.js + rw-gen: dist/bins/rw-gen.js + rw-gen-watch: dist/bins/rw-gen-watch.js + rw-log-formatter: dist/bins/rw-log-formatter.js + rw-web-server: dist/bins/rw-web-server.js + rwfw: dist/bins/rwfw.js + checksum: 10c0/13def202d02a5b8a4c0f692d50647cb21fc57019c3f5073b6d174f7f43c92568edd719663264b947250f555582cd7ff14e32be3aa15a5836f9d1494f48c36785 + languageName: node + linkType: hard + +"@redwoodjs/eslint-config@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/eslint-config@npm:7.0.0" + dependencies: + "@babel/core": "npm:^7.22.20" + "@babel/eslint-parser": "npm:7.23.10" + "@babel/eslint-plugin": "npm:7.23.5" + "@redwoodjs/eslint-plugin": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@typescript-eslint/eslint-plugin": "npm:5.62.0" + "@typescript-eslint/parser": "npm:5.62.0" + eslint: "npm:8.55.0" + eslint-config-prettier: "npm:8.10.0" + eslint-import-resolver-babel-module: "npm:5.3.2" + eslint-plugin-babel: "npm:5.3.1" + eslint-plugin-import: "npm:2.29.0" + eslint-plugin-jest-dom: "npm:4.0.3" + eslint-plugin-jsx-a11y: "npm:6.8.0" + eslint-plugin-prettier: "npm:4.2.1" + eslint-plugin-react: "npm:7.33.2" + eslint-plugin-react-hooks: "npm:4.6.0" + prettier: "npm:2.8.8" + checksum: 10c0/3ff44d31187b92c03f5510038d6a7e9f8260743b00851c2f149b351b67ac969111defc4da349ea269300c1506deabe9c452f6ac6a1d217eb3977d6d3c702b22d + languageName: node + linkType: hard + +"@redwoodjs/eslint-plugin@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/eslint-plugin@npm:7.0.0" + dependencies: + "@typescript-eslint/utils": "npm:5.62.0" + eslint: "npm:8.55.0" + checksum: 10c0/7c676170981a88332c47f8bab281587a29f2dde017c2d1993dcff591335363dc38eb66f012505e7c130cbf850217c49aa250bb3265b6b70de1a794a0a63bff4b + languageName: node + linkType: hard + +"@redwoodjs/fastify-web@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/fastify-web@npm:7.0.0" + dependencies: + "@fastify/http-proxy": "npm:9.3.0" + "@fastify/static": "npm:6.12.0" + "@fastify/url-data": "npm:5.4.0" + "@redwoodjs/project-config": "npm:7.0.0" + fast-glob: "npm:3.3.2" + checksum: 10c0/1b54875813520d0990159be5825ee084794aed187e7465467acfec14d8de517c80c2216b41bcb62a88929057e1faf9f4a79677465db5415a59148c7b433e387f + languageName: node + linkType: hard + +"@redwoodjs/forms@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/forms@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + pascalcase: "npm:1.0.0" + react-hook-form: "npm:7.49.3" + peerDependencies: + react: 18.2.0 + checksum: 10c0/9ae59bb2d6bc7bae888ec7059250d55fe92acaa9a0b404617d9175ff48c9db8bb840cb5a3ef182db3d7d11abc136faf8a9e70298a19ffd90b3fa3f9b44efe4b9 + languageName: node + linkType: hard + +"@redwoodjs/graphql-server@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/graphql-server@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@envelop/core": "npm:5.0.0" + "@envelop/depth-limit": "npm:4.0.0" + "@envelop/disable-introspection": "npm:6.0.0" + "@envelop/filter-operation-type": "npm:6.0.0" + "@envelop/on-resolve": "npm:4.1.0" + "@escape.tech/graphql-armor": "npm:2.3.1" + "@graphql-tools/merge": "npm:9.0.1" + "@graphql-tools/schema": "npm:10.0.2" + "@graphql-tools/utils": "npm:10.0.11" + "@graphql-yoga/plugin-persisted-operations": "npm:3.1.1" + "@opentelemetry/api": "npm:1.7.0" + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/context": "npm:7.0.0" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + graphql-scalars: "npm:1.22.4" + graphql-tag: "npm:2.12.6" + graphql-yoga: "npm:5.1.1" + lodash: "npm:4.17.21" + uuid: "npm:9.0.1" + checksum: 10c0/aa481a2cfe2477ac1830b3b8399de547e1aa4cb511b8dc435b3ac56d7263780bea9cd7b8397c019d1825dd1c5849c2c10e8701a23b8fb375743dd4d47e9df969 + languageName: node + linkType: hard + +"@redwoodjs/internal@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/internal@npm:7.0.0" + dependencies: + "@babel/parser": "npm:^7.22.16" + "@babel/plugin-transform-react-jsx": "npm:^7.22.15" + "@babel/plugin-transform-typescript": "npm:^7.22.15" + "@babel/runtime-corejs3": "npm:7.23.9" + "@babel/traverse": "npm:^7.22.20" + "@graphql-codegen/add": "npm:4.0.1" + "@graphql-codegen/cli": "npm:3.3.1" + "@graphql-codegen/client-preset": "npm:4.1.0" + "@graphql-codegen/core": "npm:3.1.0" + "@graphql-codegen/fragment-matcher": "npm:5.0.0" + "@graphql-codegen/schema-ast": "npm:3.0.1" + "@graphql-codegen/typed-document-node": "npm:5.0.1" + "@graphql-codegen/typescript": "npm:3.0.4" + "@graphql-codegen/typescript-operations": "npm:3.0.4" + "@graphql-codegen/typescript-react-apollo": "npm:3.3.7" + "@graphql-codegen/typescript-resolvers": "npm:3.2.1" + "@graphql-tools/documents": "npm:1.0.0" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@sdl-codegen/node": "npm:0.0.10" + chalk: "npm:4.1.2" + core-js: "npm:3.35.1" + deepmerge: "npm:4.3.1" + esbuild: "npm:0.20.0" + fast-glob: "npm:3.3.2" + fs-extra: "npm:11.2.0" + graphql: "npm:16.8.1" + kill-port: "npm:1.6.1" + prettier: "npm:2.8.8" + rimraf: "npm:5.0.5" + source-map: "npm:0.7.4" + string-env-interpolation: "npm:1.0.1" + systeminformation: "npm:5.21.20" + terminal-link: "npm:2.1.1" + ts-node: "npm:10.9.1" + typescript: "npm:5.3.3" + bin: + rw-gen: dist/generate/generate.js + rw-gen-watch: dist/generate/watch.js + checksum: 10c0/4ff453788d88aa780a17117637a1789fbc577a72fe8b6ebd966d5a45e7b8fbed036217a5974567c3d89ef50f8f2ec199ad38384ae5ef328926efef611f1836ab + languageName: node + linkType: hard + +"@redwoodjs/prerender@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/prerender@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" + "@whatwg-node/fetch": "npm:0.9.14" + babel-plugin-ignore-html-and-css-imports: "npm:0.1.0" + cheerio: "npm:1.0.0-rc.12" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + mime-types: "npm:2.1.35" + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + checksum: 10c0/ba4f146a4b968e18dfa3242cedab2ab58cf3ba878d5b7b2bf780a75bc927907a9a5d49710097a5b2c3ea710afd151d8d07ac1c24445c651144a27185c485074f + languageName: node + linkType: hard + +"@redwoodjs/project-config@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/project-config@npm:7.0.0" + dependencies: + "@iarna/toml": "npm:2.2.5" + deepmerge: "npm:4.3.1" + fast-glob: "npm:3.3.2" + string-env-interpolation: "npm:1.0.1" + checksum: 10c0/0800cd606cb4ab6175be4f348ef505d8fea7a3ad2739eecdf9d406f024cf60138621039b9f5d184dcfb003dc82ff7d5acfa7868163836cfb9684a7e3c1f0319a + languageName: node + linkType: hard + +"@redwoodjs/router@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/router@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + core-js: "npm:3.35.1" + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + checksum: 10c0/881d6c63842de08c3122f51095f95fc9a9c63444817bce400dee4f994e6f246677a1b42a056d86acbecb90f683010ccb13e73efb0b552a363c3e6460f88a3ec4 + languageName: node + linkType: hard + +"@redwoodjs/structure@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/structure@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@iarna/toml": "npm:2.2.5" + "@prisma/internals": "npm:5.9.1" + "@redwoodjs/project-config": "npm:7.0.0" + "@types/line-column": "npm:1.0.0" + camelcase: "npm:6.3.0" + core-js: "npm:3.35.1" + deepmerge: "npm:4.3.1" + dotenv-defaults: "npm:5.0.2" + enquirer: "npm:2.4.1" + fast-glob: "npm:3.3.2" + graphql: "npm:16.8.1" + lazy-get-decorator: "npm:2.2.1" + line-column: "npm:1.0.2" + lodash: "npm:4.17.21" + lodash-decorators: "npm:6.0.1" + lru-cache: "npm:7.18.3" + proxyquire: "npm:2.1.3" + ts-morph: "npm:15.1.0" + vscode-languageserver: "npm:6.1.1" + vscode-languageserver-textdocument: "npm:1.0.8" + vscode-languageserver-types: "npm:3.17.3" + yargs-parser: "npm:21.1.1" + checksum: 10c0/a07aed80aa8442beda6339665b6ad3e45f9b891c5ebe05901768b427f9f4690d7be633a655e3cb4969f0478055d01cc99d62f0a51a29e7ab024029e571a466b8 + languageName: node + linkType: hard + +"@redwoodjs/telemetry@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/telemetry@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@whatwg-node/fetch": "npm:0.9.14" + ci-info: "npm:4.0.0" + core-js: "npm:3.35.1" + envinfo: "npm:7.11.0" + systeminformation: "npm:5.21.20" + uuid: "npm:9.0.1" + yargs: "npm:17.7.2" + checksum: 10c0/3414042f7b02a0bedd045b2f95516c20b238ccebfd4d5bb7e448e32b89b8d59f31117d201b25f965c4a112d4b6f5204ce4b13926ddefeac5793c8cf456566741 + languageName: node + linkType: hard + +"@redwoodjs/testing@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/testing@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" + "@testing-library/jest-dom": "npm:6.3.0" + "@testing-library/react": "npm:14.1.2" + "@testing-library/user-event": "npm:14.5.2" + "@types/aws-lambda": "npm:8.10.126" + "@types/babel-core": "npm:6.25.10" + "@types/jest": "npm:29.5.8" + "@types/node": "npm:20.11.10" + "@types/webpack": "npm:5.28.5" + "@types/webpack-env": "npm:1.18.4" + babel-jest: "npm:^29.7.0" + core-js: "npm:3.35.1" + fast-glob: "npm:3.3.2" + jest: "npm:29.7.0" + jest-environment-jsdom: "npm:29.7.0" + jest-watch-typeahead: "npm:2.2.2" + msw: "npm:1.3.2" + ts-toolbelt: "npm:9.6.0" + whatwg-fetch: "npm:3.6.19" + checksum: 10c0/0770d47ce132a0086c1fe3009ead9abd4b08ff506a70b832d2dc4d78b7d21d9f63dfc0bc9f34eb8c1a736102a40390b13536b12a0ca4456f1662ad34302aa69b + languageName: node + linkType: hard + +"@redwoodjs/vite@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/vite@npm:7.0.0" + dependencies: + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@vitejs/plugin-react": "npm:4.2.1" + buffer: "npm:6.0.3" + core-js: "npm:3.35.1" + vite: "npm:4.5.2" + yargs-parser: "npm:21.1.1" + bin: + rw-vite-build: bins/rw-vite-build.mjs + rw-vite-dev: bins/rw-vite-dev.mjs + vite: bins/vite.mjs + checksum: 10c0/b3b581a050a2e9f380472bbcc885a5aa0a7bd06889bf6c0bf098390d42f6a8bbf2b69c2159414aa2b725567973e1bc70df2d66f418df51ee1a047e254a25a652 + languageName: node + linkType: hard + +"@redwoodjs/web-server@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/web-server@npm:7.0.0" + dependencies: + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + chalk: "npm:4.1.2" + dotenv-defaults: "npm:5.0.2" + fastify: "npm:4.25.2" + fs-extra: "npm:11.2.0" + yargs: "npm:17.7.2" + bin: + rw-web-server: dist/bin.js + checksum: 10c0/eeb7c44636823dfa67d6ee78c27f5ec513160fb253e77d9ac1e799a5ad5966e8ac2a7da0d66ab84dd7a267c60a01675c6d08caa54368a6b3b78c8fa9834cdfd1 + languageName: node + linkType: hard + +"@redwoodjs/web@npm:7.0.0": + version: 7.0.0 + resolution: "@redwoodjs/web@npm:7.0.0" + dependencies: + "@apollo/client": "npm:3.8.10" + "@babel/runtime-corejs3": "npm:7.23.9" + "@redwoodjs/auth": "npm:7.0.0" + core-js: "npm:3.35.1" + graphql: "npm:16.8.1" + graphql-sse: "npm:2.5.2" + graphql-tag: "npm:2.12.6" + react-helmet-async: "npm:2.0.3" + react-hot-toast: "npm:2.4.1" + stacktracey: "npm:2.1.8" + ts-toolbelt: "npm:9.6.0" + peerDependencies: + react: 18.2.0 + react-dom: 18.2.0 + bin: + cross-env: dist/bins/cross-env.js + msw: dist/bins/msw.js + redwood: dist/bins/redwood.js + rw: dist/bins/redwood.js + rwfw: dist/bins/rwfw.js + storybook: dist/bins/storybook.js + tsc: dist/bins/tsc.js + webpack: dist/bins/webpack.js + checksum: 10c0/c103f847f8b73b091a56ed3bed826f27049c9d37de28e1c71eb135e1ceec4a023e326f72fbc67c8e5c94c3d9b7989cd393f72a5b641def70622c3cb8a8c6f0b9 + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:3.0.4": + version: 3.0.4 + resolution: "@repeaterjs/repeater@npm:3.0.4" + checksum: 10c0/9a2928d70f2be4a8f72857f8f7553810015ac970f174b4b20f07289644379af57fa68947601d67e557c1a7c33ddf805e787cf2a1d5e9037ba485d24075a81b6b + languageName: node + linkType: hard + +"@repeaterjs/repeater@npm:^3.0.4": + version: 3.0.5 + resolution: "@repeaterjs/repeater@npm:3.0.5" + checksum: 10c0/e6e1aca2bbfe0b8e974bc5185a6839f9e78ec8acb96b6d6911a9dfc958443689f9bc38bcc6d554e6c8598f597f0151841aafbd1ee3ef16262ee93d18b2c1d4b5 + languageName: node + linkType: hard + +"@sdl-codegen/node@npm:0.0.10": + version: 0.0.10 + resolution: "@sdl-codegen/node@npm:0.0.10" + dependencies: + "@mrleebo/prisma-ast": "npm:^0.5.2" + ts-morph: "npm:^18.0.0" + peerDependencies: + graphql: "*" + prettier: ^2 + typescript: "*" + peerDependenciesMeta: + prettier: + optional: true + checksum: 10c0/275247e686cc999d91623d67ce09171f9ed17764616bb7941877439ce44b1cba305ac049e91981660cd8690f18d797cd27cecdf26cf436eb81895093e0223f42 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 10c0/ef6351ae073c45c2ac89494dbb3e1f87cc60a93ce4cde797b782812b6f97da0d620ae81973f104b43c9b7eaa789ad20ba4f6a1359f1cc62f63729a55a7d22d4e + languageName: node + linkType: hard + +"@sindresorhus/is@npm:^0.14.0": + version: 0.14.0 + resolution: "@sindresorhus/is@npm:0.14.0" + checksum: 10c0/7247aa9314d4fc3df9b3f63d8b5b962a89c7600a5db1f268546882bfc4d31a975a899f5f42a09dd41a11e58636e6402f7c40f92df853aee417247bb11faee9a0 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": "npm:^3.0.0" + checksum: 10c0/2e2fb6cc57f227912814085b7b01fede050cd4746ea8d49a1e44d5a0e56a804663b0340ae2f11af7559ea9bf4d087a11f2f646197a660ea3cb04e19efc04aa63 + languageName: node + linkType: hard + +"@szmarczak/http-timer@npm:^1.1.2": + version: 1.1.2 + resolution: "@szmarczak/http-timer@npm:1.1.2" + dependencies: + defer-to-connect: "npm:^1.0.1" + checksum: 10c0/0594140e027ce4e98970c6d176457fcbff80900b1b3101ac0d08628ca6d21d70e0b94c6aaada94d4f76c1423fcc7195af83da145ce0fd556fc0595ca74a17b8b + languageName: node + linkType: hard + +"@testing-library/dom@npm:^8.11.1": + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/614013756706467f2a7f3f693c18377048c210ec809884f0f9be866f7d865d075805ad15f5d100e8a699467fdde09085bf79e23a00ea0a6ab001d9583ef15e5d + languageName: node + linkType: hard + +"@testing-library/dom@npm:^9.0.0": + version: 9.3.4 + resolution: "@testing-library/dom@npm:9.3.4" + dependencies: + "@babel/code-frame": "npm:^7.10.4" + "@babel/runtime": "npm:^7.12.5" + "@types/aria-query": "npm:^5.0.1" + aria-query: "npm:5.1.3" + chalk: "npm:^4.1.0" + dom-accessibility-api: "npm:^0.5.9" + lz-string: "npm:^1.5.0" + pretty-format: "npm:^27.0.2" + checksum: 10c0/147da340e8199d7f98f3a4ad8aa22ed55b914b83957efa5eb22bfea021a979ebe5a5182afa9c1e5b7a5f99a7f6744a5a4d9325ae46ec3b33b5a15aed8750d794 + languageName: node + linkType: hard + +"@testing-library/jest-dom@npm:6.3.0": + version: 6.3.0 + resolution: "@testing-library/jest-dom@npm:6.3.0" + dependencies: + "@adobe/css-tools": "npm:^4.3.2" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.6.3" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/bun": "*" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/bun": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: 10c0/38ef0dc054b90b253015adaa16828046b1eff8137b86506d5233c10c85a8d8516d55dddb0af5ada46ef98ce9d9bbdad94de42acd29ed07adfb2924fc7bfc6429 + languageName: node + linkType: hard + +"@testing-library/react@npm:14.1.2": + version: 14.1.2 + resolution: "@testing-library/react@npm:14.1.2" + dependencies: + "@babel/runtime": "npm:^7.12.5" + "@testing-library/dom": "npm:^9.0.0" + "@types/react-dom": "npm:^18.0.0" + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + checksum: 10c0/b5b0990d3aa0ea8b37c55804e0d5d584fc638a5c7d4df90da9a0fdb00bc981b27b6991468b2dc719982a5d0b0107a41596063ce51ad519eeab47b22bc04d6779 + languageName: node + linkType: hard + +"@testing-library/user-event@npm:14.5.2": + version: 14.5.2 + resolution: "@testing-library/user-event@npm:14.5.2" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 10c0/68a0c2aa28a3c8e6eb05cafee29705438d7d8a9427423ce5064d44f19c29e89b5636de46dd2f28620fb10abba75c67130185bbc3aa23ac1163a227a5f36641e1 + languageName: node + linkType: hard + +"@tootallnate/once@npm:2": + version: 2.0.0 + resolution: "@tootallnate/once@npm:2.0.0" + checksum: 10c0/073bfa548026b1ebaf1659eb8961e526be22fa77139b10d60e712f46d2f0f05f4e6c8bec62a087d41088ee9e29faa7f54838568e475ab2f776171003c3920858 + languageName: node + linkType: hard + +"@trysound/sax@npm:0.2.0": + version: 0.2.0 + resolution: "@trysound/sax@npm:0.2.0" + checksum: 10c0/44907308549ce775a41c38a815f747009ac45929a45d642b836aa6b0a536e4978d30b8d7d680bbd116e9dd73b7dbe2ef0d1369dcfc2d09e83ba381e485ecbe12 + languageName: node + linkType: hard + +"@ts-morph/common@npm:~0.16.0": + version: 0.16.0 + resolution: "@ts-morph/common@npm:0.16.0" + dependencies: + fast-glob: "npm:^3.2.11" + minimatch: "npm:^5.1.0" + mkdirp: "npm:^1.0.4" + path-browserify: "npm:^1.0.1" + checksum: 10c0/a9f306dd5c0c022b805400a1e54f18ec3fd1d80cc62e41f5f6964755d4b2538c10584b2fd040f9184121269dfebbe20ac7ffeb9965e74c3d6cb5b8891e29e5cb + languageName: node + linkType: hard + +"@ts-morph/common@npm:~0.19.0": + version: 0.19.0 + resolution: "@ts-morph/common@npm:0.19.0" + dependencies: + fast-glob: "npm:^3.2.12" + minimatch: "npm:^7.4.3" + mkdirp: "npm:^2.1.6" + path-browserify: "npm:^1.0.1" + checksum: 10c0/e25fd46158d72be238ab1dda74e7ee284085895b12b9ab279f37d50f1cd71b2be95a56f3efa19d5f52986534e9f34ae4a294467cd1637b27cf4fb82bd7318bb7 + languageName: node + linkType: hard + +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.9 + resolution: "@tsconfig/node10@npm:1.0.9" + checksum: 10c0/c176a2c1e1b16be120c328300ea910df15fb9a5277010116d26818272341a11483c5a80059389d04edacf6fd2d03d4687ad3660870fdd1cc0b7109e160adb220 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10c0/dddca2b553e2bee1308a056705103fc8304e42bb2d2cbd797b84403a223b25c78f2c683ec3e24a095e82cd435387c877239bffcb15a590ba817cd3f6b9a99fd9 + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10c0/67c1316d065fdaa32525bc9449ff82c197c4c19092b9663b23213c8cbbf8d88b6ed6a17898e0cbc2711950fbfaf40388938c1c748a2ee89f7234fc9e7fe2bf44 + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10c0/05f8f2734e266fb1839eb1d57290df1664fe2aa3b0fdd685a9035806daa635f7519bf6d5d9b33f6e69dd545b8c46bd6e2b5c79acb2b1f146e885f7f11a42a5bb + languageName: node + linkType: hard + +"@types/aria-query@npm:^5.0.1": + version: 5.0.4 + resolution: "@types/aria-query@npm:5.0.4" + checksum: 10c0/dc667bc6a3acc7bba2bccf8c23d56cb1f2f4defaa704cfef595437107efaa972d3b3db9ec1d66bc2711bfc35086821edd32c302bffab36f2e79b97f312069f08 + languageName: node + linkType: hard + +"@types/aws-lambda@npm:8.10.126": + version: 8.10.126 + resolution: "@types/aws-lambda@npm:8.10.126" + checksum: 10c0/4b538cbb3c730c08d921ff13943b39f9a68d89c2ad64b54dff82768e949b4cacd3d82c028bb5fce495f0a66b37b6299052367d419890229956565ccbc2bd9767 + languageName: node + linkType: hard + +"@types/babel-core@npm:6.25.10": + version: 6.25.10 + resolution: "@types/babel-core@npm:6.25.10" + dependencies: + "@types/babel-generator": "npm:*" + "@types/babel-template": "npm:*" + "@types/babel-traverse": "npm:*" + "@types/babel-types": "npm:*" + "@types/babylon": "npm:*" + checksum: 10c0/4a0e26acc0aed7ffed6aa0ee63fedb8dedac1f11633229ff0c09d27cf02863fa2c25cbb99eecfa5004449b84027b3ab4abe2d29a936784cb2a85e4d49593b4e4 + languageName: node + linkType: hard + +"@types/babel-generator@npm:*": + version: 6.25.8 + resolution: "@types/babel-generator@npm:6.25.8" + dependencies: + "@types/babel-types": "npm:*" + checksum: 10c0/98fc6912831177d064e5229b35d954df726ae9c78fa380aef6ea46c861f3d96384692c0c86f9b370584e3d38352ab8f11db2ce5fe23b2a51f80534755c4f2dc0 + languageName: node + linkType: hard + +"@types/babel-template@npm:*": + version: 6.25.5 + resolution: "@types/babel-template@npm:6.25.5" + dependencies: + "@types/babel-types": "npm:*" + "@types/babylon": "npm:*" + checksum: 10c0/1c62830f44a22f6b61f5073ad8e9ebc62a205d3b52e1d8db04c5c6df3ffe651a51ca65e8293dbc16ddcaedc9d847a2e9a2b618c78836d5753047efd93317f168 + languageName: node + linkType: hard + +"@types/babel-traverse@npm:*": + version: 6.25.10 + resolution: "@types/babel-traverse@npm:6.25.10" + dependencies: + "@types/babel-types": "npm:*" + checksum: 10c0/49fecf86a6b17541d3192131de9d8abeb25b03d66910eac3604a0c963ac596d64d84a9ca3a752629127a0958db35fa44bfc54ff157f906240aa926a5371f3e2d + languageName: node + linkType: hard + +"@types/babel-types@npm:*": + version: 7.0.15 + resolution: "@types/babel-types@npm:7.0.15" + checksum: 10c0/d4ff6f0c177aee27526e306ee8621dc0c6e6315b684885736cbed719477a5e6afd0d76e5425ce41a2c0fc2fefe9f6c85d641c7504f048e3fc0aa810692a19f31 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.8 + resolution: "@types/babel__generator@npm:7.6.8" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": + version: 7.20.5 + resolution: "@types/babel__traverse@npm:7.20.5" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/033abcb2f4c084ad33e30c3efaad82161240f351e3c71b6154ed289946b33b363696c0fbd42502b68e4582a87413c418321f40eb1ea863e34fe525641345e05b + languageName: node + linkType: hard + +"@types/babylon@npm:*": + version: 6.16.9 + resolution: "@types/babylon@npm:6.16.9" + dependencies: + "@types/babel-types": "npm:*" + checksum: 10c0/3dbe33a158b39d00e11ca4f53cad7ea02ed69c1c266221cabcc81596a03084706be007db698b254ad9689d040d77b9fd32b4b9956cf96dbb631572ea12e53b3a + languageName: node + linkType: hard + +"@types/body-parser@npm:*": + version: 1.19.5 + resolution: "@types/body-parser@npm:1.19.5" + dependencies: + "@types/connect": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/aebeb200f25e8818d8cf39cd0209026750d77c9b85381cdd8deeb50913e4d18a1ebe4b74ca9b0b4d21952511eeaba5e9fbbf739b52731a2061e206ec60d568df + languageName: node + linkType: hard + +"@types/bonjour@npm:^3.5.9": + version: 3.5.13 + resolution: "@types/bonjour@npm:3.5.13" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/eebedbca185ac3c39dd5992ef18d9e2a9f99e7f3c2f52f5561f90e9ed482c5d224c7962db95362712f580ed5713264e777a98d8f0bd8747f4eadf62937baed16 + languageName: node + linkType: hard + +"@types/connect-history-api-fallback@npm:^1.3.5": + version: 1.5.4 + resolution: "@types/connect-history-api-fallback@npm:1.5.4" + dependencies: + "@types/express-serve-static-core": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/1b4035b627dcd714b05a22557f942e24a57ca48e7377dde0d2f86313fe685bc0a6566512a73257a55b5665b96c3041fb29228ac93331d8133011716215de8244 + languageName: node + linkType: hard + +"@types/connect@npm:*": + version: 3.4.38 + resolution: "@types/connect@npm:3.4.38" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/2e1cdba2c410f25649e77856505cd60223250fa12dff7a503e492208dbfdd25f62859918f28aba95315251fd1f5e1ffbfca1e25e73037189ab85dd3f8d0a148c + languageName: node + linkType: hard + +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 10c0/f96afe12bd51be1ec61410b0641243d93fa3a494702407c787a4c872b5c8bcd39b224471452055e44a9ce42af1a636e87d161994226eaf4c2be9c30f60418409 + languageName: node + linkType: hard + +"@types/debug@npm:^4.1.7": + version: 4.1.12 + resolution: "@types/debug@npm:4.1.12" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/5dcd465edbb5a7f226e9a5efd1f399c6172407ef5840686b73e3608ce135eeca54ae8037dcd9f16bdb2768ac74925b820a8b9ecc588a58ca09eca6acabe33e2f + languageName: node + linkType: hard + +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "npm:*" + "@types/estree": "npm:*" + checksum: 10c0/a0ecbdf2f03912679440550817ff77ef39a30fa8bfdacaf6372b88b1f931828aec392f52283240f0d648cf3055c5ddc564544a626bcf245f3d09fcb099ebe3cc + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 8.56.2 + resolution: "@types/eslint@npm:8.56.2" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10c0/e33ca87a30a9454ba9943e1270ac759996f5fe598a1c1afbaec1d1e7346a339e20bf2a9d81f177067116bbaa6cfa4f748993cb338f57978ae862ad38ffae56fe + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:^1.0.5": + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d + languageName: node + linkType: hard + +"@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^4.17.33": + version: 4.17.43 + resolution: "@types/express-serve-static-core@npm:4.17.43" + dependencies: + "@types/node": "npm:*" + "@types/qs": "npm:*" + "@types/range-parser": "npm:*" + "@types/send": "npm:*" + checksum: 10c0/12480527eef86ad9f748d785811c88e6bb89f4a76e531cf2e18f1f4f0743e46783cf4d27a939dec96aec8770c54c060d9e697bb8544ecd202098140688c3b222 + languageName: node + linkType: hard + +"@types/express@npm:*, @types/express@npm:^4.17.13": + version: 4.17.21 + resolution: "@types/express@npm:4.17.21" + dependencies: + "@types/body-parser": "npm:*" + "@types/express-serve-static-core": "npm:^4.17.33" + "@types/qs": "npm:*" + "@types/serve-static": "npm:*" + checksum: 10c0/12e562c4571da50c7d239e117e688dc434db1bac8be55613294762f84fd77fbd0658ccd553c7d3ab02408f385bc93980992369dd30e2ecd2c68c358e6af8fabf + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/235d2fc69741448e853333b7c3d1180a966dd2b8972c8cbcd6b2a0c6cd7f8d582ab2b8e58219dbc62cce8f1b40aa317ff78ea2201cdd8249da5025adebed6f0b + languageName: node + linkType: hard + +"@types/html-minifier-terser@npm:^6.0.0": + version: 6.1.0 + resolution: "@types/html-minifier-terser@npm:6.1.0" + checksum: 10c0/a62fb8588e2f3818d82a2d7b953ad60a4a52fd767ae04671de1c16f5788bd72f1ed3a6109ed63fd190c06a37d919e3c39d8adbc1793a005def76c15a3f5f5dab + languageName: node + linkType: hard + +"@types/http-errors@npm:*": + version: 2.0.4 + resolution: "@types/http-errors@npm:2.0.4" + checksum: 10c0/494670a57ad4062fee6c575047ad5782506dd35a6b9ed3894cea65830a94367bd84ba302eb3dde331871f6d70ca287bfedb1b2cf658e6132cd2cbd427ab56836 + languageName: node + linkType: hard + +"@types/http-proxy@npm:^1.17.8": + version: 1.17.14 + resolution: "@types/http-proxy@npm:1.17.14" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/c4bffd87be9aff7e879c05bd2c28716220e0eb39788e3f8d314eee665324ad8f5f0919041cbd710254d553cd9cea023f8b776d4b1ec31d2188eac60af18c3022 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/jest@npm:29.5.8": + version: 29.5.8 + resolution: "@types/jest@npm:29.5.8" + dependencies: + expect: "npm:^29.0.0" + pretty-format: "npm:^29.0.0" + checksum: 10c0/a28e7827ea7e1a2aace6a386868fa6b8402c162d6c71570aed2c29d3745ddc22ceef6899a20643071817905d3c57b670a7992fc8760bff65939351fd4dc481cf + languageName: node + linkType: hard + +"@types/js-levenshtein@npm:^1.1.1": + version: 1.1.3 + resolution: "@types/js-levenshtein@npm:1.1.3" + checksum: 10c0/025f2bd8d865cfa7a996799a1a2f2a77fa2fc74a28971aa035a103de35d7c1e3d949721a88f57fdb532815bbcb2bf7019196a608ed0a8bbd1023d64c52bb251b + languageName: node + linkType: hard + +"@types/js-yaml@npm:^4.0.0": + version: 4.0.9 + resolution: "@types/js-yaml@npm:4.0.9" + checksum: 10c0/24de857aa8d61526bbfbbaa383aa538283ad17363fcd5bb5148e2c7f604547db36646440e739d78241ed008702a8920665d1add5618687b6743858fae00da211 + languageName: node + linkType: hard + +"@types/jsdom@npm:^20.0.0": + version: 20.0.1 + resolution: "@types/jsdom@npm:20.0.1" + dependencies: + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + parse5: "npm:^7.0.0" + checksum: 10c0/3d4b2a3eab145674ee6da482607c5e48977869109f0f62560bf91ae1a792c9e847ac7c6aaf243ed2e97333cb3c51aef314ffa54a19ef174b8f9592dfcb836b25 + languageName: node + linkType: hard + +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/json-stable-stringify@npm:^1.0.32": + version: 1.0.36 + resolution: "@types/json-stable-stringify@npm:1.0.36" + checksum: 10c0/c2f0d0075bd04681d664a7ac4ef5078289b2f790f9737cd3457b5cc199d39df2efe132e04574ad5f89c9ae50096d44c9ca5ec4aebcd6005b969009f725dbcb79 + languageName: node + linkType: hard + +"@types/json5@npm:^0.0.29": + version: 0.0.29 + resolution: "@types/json5@npm:0.0.29" + checksum: 10c0/6bf5337bc447b706bb5b4431d37686aa2ea6d07cfd6f79cc31de80170d6ff9b1c7384a9c0ccbc45b3f512bae9e9f75c2e12109806a15331dc94e8a8db6dbb4ac + languageName: node + linkType: hard + +"@types/keyv@npm:^3.1.1": + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/ff8f54fc49621210291f815fe5b15d809fd7d032941b3180743440bd507ecdf08b9e844625fa346af568c84bf34114eb378dcdc3e921a08ba1e2a08d7e3c809c + languageName: node + linkType: hard + +"@types/line-column@npm:1.0.0": + version: 1.0.0 + resolution: "@types/line-column@npm:1.0.0" + checksum: 10c0/70503f45d4e0953b470067df22911e0a9e877f5d8459dcbc2bbebc7dd8534114ef99fd0f0926e657fb9711e45e3ffaa7fb04469b605252f4309dbe66cb1c9489 + languageName: node + linkType: hard + +"@types/mime@npm:*": + version: 3.0.4 + resolution: "@types/mime@npm:3.0.4" + checksum: 10c0/db478bc0f99e40f7b3e01d356a9bdf7817060808a294978111340317bcd80ca35382855578c5b60fbc84ae449674bd9bb38427b18417e1f8f19e4f72f8b242cd + languageName: node + linkType: hard + +"@types/mime@npm:^1": + version: 1.3.5 + resolution: "@types/mime@npm:1.3.5" + checksum: 10c0/c2ee31cd9b993804df33a694d5aa3fa536511a49f2e06eeab0b484fef59b4483777dbb9e42a4198a0809ffbf698081fdbca1e5c2218b82b91603dfab10a10fbc + languageName: node + linkType: hard + +"@types/minimatch@npm:^3.0.3": + version: 3.0.5 + resolution: "@types/minimatch@npm:3.0.5" + checksum: 10c0/a1a19ba342d6f39b569510f621ae4bbe972dc9378d15e9a5e47904c440ee60744f5b09225bc73be1c6490e3a9c938eee69eb53debf55ce1f15761201aa965f97 + languageName: node + linkType: hard + +"@types/ms@npm:*": + version: 0.7.34 + resolution: "@types/ms@npm:0.7.34" + checksum: 10c0/ac80bd90012116ceb2d188fde62d96830ca847823e8ca71255616bc73991aa7d9f057b8bfab79e8ee44ffefb031ddd1bcce63ea82f9e66f7c31ec02d2d823ccc + languageName: node + linkType: hard + +"@types/node-forge@npm:^1.3.0": + version: 1.3.11 + resolution: "@types/node-forge@npm:1.3.11" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3d7d23ca0ba38ac0cf74028393bd70f31169ab9aba43f21deb787840170d307d662644bac07287495effe2812ddd7ac8a14dbd43f16c2936bbb06312e96fc3b9 + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 20.11.19 + resolution: "@types/node@npm:20.11.19" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/f451ef0a1d78f29c57bad7b77e49ebec945f2a6d0d7a89851d7e185ee9fe7ad94d651c0dfbcb7858c9fa791310c8b40a881e2260f56bd3c1b7e7ae92723373ae + languageName: node + linkType: hard + +"@types/node@npm:20.11.10": + version: 20.11.10 + resolution: "@types/node@npm:20.11.10" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 10c0/aced8595c2786d4e60471772659add1e2e0d1f2b73d119820b2e1815426d6e52c6a77f1c7fca8ea46490c36f7959cc46b0dc609fa2e80b7fd24f9a7d696c2210 + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.2 + resolution: "@types/parse-json@npm:4.0.2" + checksum: 10c0/b1b863ac34a2c2172fbe0807a1ec4d5cb684e48d422d15ec95980b81475fac4fdb3768a8b13eef39130203a7c04340fc167bae057c7ebcafd7dec9fe6c36aeb1 + languageName: node + linkType: hard + +"@types/prop-types@npm:*": + version: 15.7.11 + resolution: "@types/prop-types@npm:15.7.11" + checksum: 10c0/e53423cf9d510515ef8b47ff42f4f1b65a7b7b37c8704e2dbfcb9a60defe0c0e1f3cb1acfdeb466bad44ca938d7c79bffdd51b48ffb659df2432169d0b27a132 + languageName: node + linkType: hard + +"@types/qs@npm:*": + version: 6.9.11 + resolution: "@types/qs@npm:6.9.11" + checksum: 10c0/657a50f05b694d6fd3916d24177cfa0f3b8b87d9deff4ffa4dddcb0b03583ebf7c47b424b8de400270fb9a5cc1e9cf790dd82c833c6935305851e7da8ede3ff5 + languageName: node + linkType: hard + +"@types/range-parser@npm:*": + version: 1.2.7 + resolution: "@types/range-parser@npm:1.2.7" + checksum: 10c0/361bb3e964ec5133fa40644a0b942279ed5df1949f21321d77de79f48b728d39253e5ce0408c9c17e4e0fd95ca7899da36841686393b9f7a1e209916e9381a3c + languageName: node + linkType: hard + +"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.19": + version: 18.2.19 + resolution: "@types/react-dom@npm:18.2.19" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/88d7c6daa4659f661d0c97985d9fca492f24b421a34bb614dcd94c343aed7bea121463149e97fb01ecaa693be17b7d1542cf71ddb1705f3889a81eb2639a88aa + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:^18.2.55": + version: 18.2.57 + resolution: "@types/react@npm:18.2.57" + dependencies: + "@types/prop-types": "npm:*" + "@types/scheduler": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10c0/d5ed2f04c069c591e41ef1bea5b70f89dc7a4edff2254c4df801ddaa21b43b2aa70c106c049b9b6736f98f5afe66576d0e75a9e47c7044f2660b1744ff64f535 + languageName: node + linkType: hard + +"@types/responselike@npm:^1.0.0": + version: 1.0.3 + resolution: "@types/responselike@npm:1.0.3" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/a58ba341cb9e7d74f71810a88862da7b2a6fa42e2a1fc0ce40498f6ea1d44382f0640117057da779f74c47039f7166bf48fad02dc876f94e005c7afa50f5e129 + languageName: node + linkType: hard + +"@types/retry@npm:0.12.0": + version: 0.12.0 + resolution: "@types/retry@npm:0.12.0" + checksum: 10c0/7c5c9086369826f569b83a4683661557cab1361bac0897a1cefa1a915ff739acd10ca0d62b01071046fe3f5a3f7f2aec80785fe283b75602dc6726781ea3e328 + languageName: node + linkType: hard + +"@types/scheduler@npm:*": + version: 0.16.8 + resolution: "@types/scheduler@npm:0.16.8" + checksum: 10c0/f86de504945b8fc41b1f391f847444d542e2e4067cf7e5d9bfeb5d2d2393d3203b1161bc0ef3b1e104d828dabfb60baf06e8d2c27e27ff7e8258e6e618d8c4ec + languageName: node + linkType: hard + +"@types/semver@npm:^7.3.12": + version: 7.5.7 + resolution: "@types/semver@npm:7.5.7" + checksum: 10c0/fb72d8b86a7779650f14ae89542f1da2ab624adb8188d98754b1d29a2fe3d41f0348bf9435b60ad145df1812fd2a09b3256779aa23b532c199f3dee59619a1eb + languageName: node + linkType: hard + +"@types/send@npm:*": + version: 0.17.4 + resolution: "@types/send@npm:0.17.4" + dependencies: + "@types/mime": "npm:^1" + "@types/node": "npm:*" + checksum: 10c0/7f17fa696cb83be0a104b04b424fdedc7eaba1c9a34b06027239aba513b398a0e2b7279778af521f516a397ced417c96960e5f50fcfce40c4bc4509fb1a5883c + languageName: node + linkType: hard + +"@types/serve-index@npm:^1.9.1": + version: 1.9.4 + resolution: "@types/serve-index@npm:1.9.4" + dependencies: + "@types/express": "npm:*" + checksum: 10c0/94c1b9e8f1ea36a229e098e1643d5665d9371f8c2658521718e259130a237c447059b903bac0dcc96ee2c15fd63f49aa647099b7d0d437a67a6946527a837438 + languageName: node + linkType: hard + +"@types/serve-static@npm:*, @types/serve-static@npm:^1.13.10": + version: 1.15.5 + resolution: "@types/serve-static@npm:1.15.5" + dependencies: + "@types/http-errors": "npm:*" + "@types/mime": "npm:*" + "@types/node": "npm:*" + checksum: 10c0/811d1a2f7e74a872195e7a013bcd87a2fb1edf07eaedcb9dcfd20c1eb4bc56ad4ea0d52141c13192c91ccda7c8aeb8a530d8a7e60b9c27f5990d7e62e0fecb03 + languageName: node + linkType: hard + +"@types/set-cookie-parser@npm:^2.4.0": + version: 2.4.7 + resolution: "@types/set-cookie-parser@npm:2.4.7" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/3c4b5168fe2e8f1f70e39de718fab79bf5386dcb3217b16936d732b985af2372eb0670190c0c5c9c3e68ace34dd6e52e9664439cec06354c278601f659c396ff + languageName: node + linkType: hard + +"@types/sockjs@npm:^0.3.33": + version: 0.3.36 + resolution: "@types/sockjs@npm:0.3.36" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/b20b7820ee813f22de4f2ce98bdd12c68c930e016a8912b1ed967595ac0d8a4cbbff44f4d486dd97f77f5927e7b5725bdac7472c9ec5b27f53a5a13179f0612f + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 10c0/68c6921721a3dcb40451543db2174a145ef915bc8bcbe7ad4e59194a0238e776e782b896c7a59f4b93ac6acefca9161fccb31d1ce3b3445cb6faa467297fb473 + languageName: node + linkType: hard + +"@types/webpack-env@npm:1.18.4": + version: 1.18.4 + resolution: "@types/webpack-env@npm:1.18.4" + checksum: 10c0/3fa77dbff0ed71685404576b0a1cf74587567fe2ee1cfd11d56d6eefcab7a61e4c9ead0eced264e289d2cf0fc74296dbd55ed6c95774fe0fd6264d156c5a59f0 + languageName: node + linkType: hard + +"@types/webpack@npm:5.28.5": + version: 5.28.5 + resolution: "@types/webpack@npm:5.28.5" + dependencies: + "@types/node": "npm:*" + tapable: "npm:^2.2.0" + webpack: "npm:^5" + checksum: 10c0/d1fec1f678af79dd0d84333740bdd2ce128c7f4fd1f8d14bb0ec0f4c5af70580af68350f677e3696003a8cb2e2b5f510f8c0ed7ee5ad2bc7874c87f80ecd7c8d + languageName: node + linkType: hard + +"@types/ws@npm:^8.0.0, @types/ws@npm:^8.5.5": + version: 8.5.10 + resolution: "@types/ws@npm:8.5.10" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/e9af279b984c4a04ab53295a40aa95c3e9685f04888df5c6920860d1dd073fcc57c7bd33578a04b285b2c655a0b52258d34bee0a20569dca8defb8393e1e5d29 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/2095e8aad8a4e66b86147415364266b8d607a3b95b4239623423efd7e29df93ba81bb862784a6e08664f645cc1981b25fd598f532019174cd3e5e1e689e1cccf + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.62.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/type-utils": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + natural-compare-lite: "npm:^1.4.0" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependencies: + "@typescript-eslint/parser": ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/3f40cb6bab5a2833c3544e4621b9fdacd8ea53420cadc1c63fac3b89cdf5c62be1e6b7bcf56976dede5db4c43830de298ced3db60b5494a3b961ca1b4bff9f2a + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/parser@npm:5.62.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/315194b3bf39beb9bd16c190956c46beec64b8371e18d6bb72002108b250983eb1e186a01d34b77eb4045f4941acbb243b16155fbb46881105f65e37dc9e24d4 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/scope-manager@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + checksum: 10c0/861253235576c1c5c1772d23cdce1418c2da2618a479a7de4f6114a12a7ca853011a1e530525d0931c355a8fd237b9cd828fac560f85f9623e24054fd024726f + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/type-utils@npm:5.62.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:5.62.0" + "@typescript-eslint/utils": "npm:5.62.0" + debug: "npm:^4.3.4" + tsutils: "npm:^3.21.0" + peerDependencies: + eslint: "*" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/93112e34026069a48f0484b98caca1c89d9707842afe14e08e7390af51cdde87378df29d213d3bbd10a7cfe6f91b228031b56218515ce077bdb62ddea9d9f474 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/types@npm:5.62.0" + checksum: 10c0/7febd3a7f0701c0b927e094f02e82d8ee2cada2b186fcb938bc2b94ff6fbad88237afc304cbaf33e82797078bbbb1baf91475f6400912f8b64c89be79bfa4ddf + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/visitor-keys": "npm:5.62.0" + debug: "npm:^4.3.4" + globby: "npm:^11.1.0" + is-glob: "npm:^4.0.3" + semver: "npm:^7.3.7" + tsutils: "npm:^3.21.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/d7984a3e9d56897b2481940ec803cb8e7ead03df8d9cfd9797350be82ff765dfcf3cfec04e7355e1779e948da8f02bc5e11719d07a596eb1cb995c48a95e38cf + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/utils@npm:5.62.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@types/json-schema": "npm:^7.0.9" + "@types/semver": "npm:^7.3.12" + "@typescript-eslint/scope-manager": "npm:5.62.0" + "@typescript-eslint/types": "npm:5.62.0" + "@typescript-eslint/typescript-estree": "npm:5.62.0" + eslint-scope: "npm:^5.1.1" + semver: "npm:^7.3.7" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/f09b7d9952e4a205eb1ced31d7684dd55cee40bf8c2d78e923aa8a255318d97279825733902742c09d8690f37a50243f4c4d383ab16bd7aefaf9c4b438f785e1 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:5.62.0": + version: 5.62.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.62.0" + dependencies: + "@typescript-eslint/types": "npm:5.62.0" + eslint-visitor-keys: "npm:^3.3.0" + checksum: 10c0/7c3b8e4148e9b94d9b7162a596a1260d7a3efc4e65199693b8025c71c4652b8042501c0bc9f57654c1e2943c26da98c0f77884a746c6ae81389fcb0b513d995d + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.2.0": + version: 1.2.0 + resolution: "@ungap/structured-clone@npm:1.2.0" + checksum: 10c0/8209c937cb39119f44eb63cf90c0b73e7c754209a6411c707be08e50e29ee81356dca1a848a405c8bdeebfe2f5e4f831ad310ae1689eeef65e7445c090c6657d + languageName: node + linkType: hard + +"@vitejs/plugin-react@npm:4.2.1": + version: 4.2.1 + resolution: "@vitejs/plugin-react@npm:4.2.1" + dependencies: + "@babel/core": "npm:^7.23.5" + "@babel/plugin-transform-react-jsx-self": "npm:^7.23.3" + "@babel/plugin-transform-react-jsx-source": "npm:^7.23.3" + "@types/babel__core": "npm:^7.20.5" + react-refresh: "npm:^0.14.0" + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + checksum: 10c0/de1eec44d703f32e5b58e776328ca20793657fe991835d15b290230b19a2a08be5d31501d424279ae13ecfed28044c117b69d746891c8d9b92c69e8a8907e989 + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.11.6, @webassemblyjs/ast@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/ast@npm:1.11.6" + dependencies: + "@webassemblyjs/helper-numbers": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + checksum: 10c0/e28476a183c8a1787adcf0e5df1d36ec4589467ab712c674fe4f6769c7fb19d1217bfb5856b3edd0f3e0a148ebae9e4bbb84110cee96664966dfef204d9c31fb + languageName: node + linkType: hard + +"@webassemblyjs/ast@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/ast@npm:1.9.0" + dependencies: + "@webassemblyjs/helper-module-context": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/wast-parser": "npm:1.9.0" + checksum: 10c0/8246c714346cdcd3ab204a2b09904d9d36c4f7da8f30cc217b0b7272a3ef57a3c21e95d51b26601641133fb66fea5cc46c357cf897808512f13b3d1c2efe88e4 + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" + checksum: 10c0/37fe26f89e18e4ca0e7d89cfe3b9f17cfa327d7daf906ae01400416dbb2e33c8a125b4dc55ad7ff405e5fcfb6cf0d764074c9bc532b9a31a71e762be57d2ea0a + languageName: node + linkType: hard + +"@webassemblyjs/floating-point-hex-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" + checksum: 10c0/17acfdfe6650691ae8d0279e6ff4fb8b5efce64e12f3fa18c6a7d279968cc72eb21c0db7ebb5be9d627d05fa7014cef087843d999de96c917079f57d7dac8f77 + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" + checksum: 10c0/a681ed51863e4ff18cf38d223429f414894e5f7496856854d9a886eeddcee32d7c9f66290f2919c9bb6d2fc2b2fae3f989b6a1e02a81e829359738ea0c4d371a + languageName: node + linkType: hard + +"@webassemblyjs/helper-api-error@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" + checksum: 10c0/892851b25cf4b4b307490328f45858414326dac667ca15244b5e959fa6e22478b29dabeb581d49ef8a2874e291d0417a3a959be70428c39cd40870e73b394dbc + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.6" + checksum: 10c0/55b5d67db95369cdb2a505ae7ebdf47194d49dfc1aecb0f5403277dcc899c7d3e1f07e8d279646adf8eafd89959272db62ca66fbe803321661ab184176ddfd3a + languageName: node + linkType: hard + +"@webassemblyjs/helper-buffer@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" + checksum: 10c0/b09a3e27d9127ccaab095bd171336e7675bb5b832e05b701ff174a853b763154a49f5382c4c3f2f1cc746b1cff3f2025452145cf807ddf788133bcccf5920ca8 + languageName: node + linkType: hard + +"@webassemblyjs/helper-code-frame@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" + dependencies: + "@webassemblyjs/wast-printer": "npm:1.9.0" + checksum: 10c0/010969a6c8b016680a9b1383ff4b8147c363608dd1e29602154e5460954af4fd48daed518a76b232ca43935d4b6bebf54fba38da56f809e2bd12f063d84013ec + languageName: node + linkType: hard + +"@webassemblyjs/helper-fsm@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" + checksum: 10c0/ef0c99b58716d757a1a41f99fb46578d3f07d97b60cd51deaeffdf0aad09ec47f5093ee8d098d12324d57f8812609704c377fccfe9a32d02c0a658a4a33dce94 + languageName: node + linkType: hard + +"@webassemblyjs/helper-module-context@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + checksum: 10c0/130a9ac1141770b9f70ad568ec2dc769e92c756f91b06ece9cda2c2a5e80e21ec9c8c2a945a5839bf379e52fa921ae134245a7492e1b9ae0e8c557bb9b4953c3 + languageName: node + linkType: hard + +"@webassemblyjs/helper-numbers@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" + dependencies: + "@webassemblyjs/floating-point-hex-parser": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c7d5afc0ff3bd748339b466d8d2f27b908208bf3ff26b2e8e72c39814479d486e0dca6f3d4d776fd9027c1efe05b5c0716c57a23041eb34473892b2731c33af3 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" + checksum: 10c0/79d2bebdd11383d142745efa32781249745213af8e022651847382685ca76709f83e1d97adc5f0d3c2b8546bf02864f8b43a531fdf5ca0748cb9e4e0ef2acaa5 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" + checksum: 10c0/1741993e1c723f56b619a4981ec975f903886aa3f1f50c7bdb2eaa45ca4ad8d023d6ae7413ef643f060567b1f12a9dcfad6c43688879c46ee4f0b53aa71cd5c9 + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-buffer": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.11.6" + checksum: 10c0/b79b19a63181f32e5ee0e786fa8264535ea5360276033911fae597d2de15e1776f028091d08c5a813a3901fd2228e74cd8c7e958fded064df734f00546bef8ce + languageName: node + linkType: hard + +"@webassemblyjs/helper-wasm-section@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-buffer": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/wasm-gen": "npm:1.9.0" + checksum: 10c0/2a5baa7749c50a4a428f372ab88b7e52956b48798d44e7291b4aa8558b247337dba791112ce8a4f5b2281e1b9014e6d44d0141476a5fcde6016fac2e009671e8 + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/ieee754@npm:1.11.6" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/59de0365da450322c958deadade5ec2d300c70f75e17ae55de3c9ce564deff5b429e757d107c7ec69bd0ba169c6b6cc2ff66293ab7264a7053c829b50ffa732f + languageName: node + linkType: hard + +"@webassemblyjs/ieee754@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/ieee754@npm:1.9.0" + dependencies: + "@xtuc/ieee754": "npm:^1.2.0" + checksum: 10c0/0eff34ec7048400b30282ab9af6ad19d2852dab2f5ffaec8bdc697b8380bc2c9dbe6cadf65f49e68242c82ee3caa8aa6e46c89dbfdab37615189b4da2eab3819 + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/leb128@npm:1.11.6" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/cb344fc04f1968209804de4da018679c5d4708a03b472a33e0fa75657bb024978f570d3ccf9263b7f341f77ecaa75d0e051b9cd4b7bb17a339032cfd1c37f96e + languageName: node + linkType: hard + +"@webassemblyjs/leb128@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/leb128@npm:1.9.0" + dependencies: + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/441be8634733b33b710f44d4394552d6290bb1a0a8311b384b1865b58c3549d0ddeaf1c3985bbee024a8df12c597be3580fc1cde2ae003dcbf26762b493a7a2f + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/utf8@npm:1.11.6" + checksum: 10c0/14d6c24751a89ad9d801180b0d770f30a853c39f035a15fbc96266d6ac46355227abd27a3fd2eeaa97b4294ced2440a6b012750ae17bafe1a7633029a87b6bee + languageName: node + linkType: hard + +"@webassemblyjs/utf8@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/utf8@npm:1.9.0" + checksum: 10c0/9566689a1bcf555d6b79d0da79e24ff2be23c0395e5a19ed3c2ceca7831e50b867e0b1c66b3ff1b1d7f297b2d2414314967a884a77634ad0acff8a78489e2b19 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-edit@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-buffer": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/helper-wasm-section": "npm:1.9.0" + "@webassemblyjs/wasm-gen": "npm:1.9.0" + "@webassemblyjs/wasm-opt": "npm:1.9.0" + "@webassemblyjs/wasm-parser": "npm:1.9.0" + "@webassemblyjs/wast-printer": "npm:1.9.0" + checksum: 10c0/07f4cb4a73989622c524f9264b6afe664d33354f081499f04db675aed2b79498bd43600c3d7bebcb9f93ccce6a094b3c28f3f7b11ea62e9e82074c2ae68dc058 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-edit@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-buffer": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/helper-wasm-section": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.11.6" + "@webassemblyjs/wasm-opt": "npm:1.11.6" + "@webassemblyjs/wasm-parser": "npm:1.11.6" + "@webassemblyjs/wast-printer": "npm:1.11.6" + checksum: 10c0/9a56b6bf635cf7aa5d6e926eaddf44c12fba050170e452a8e17ab4e1b937708678c03f5817120fb9de1e27167667ce693d16ce718d41e5a16393996a6017ab73 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/ce9a39d3dab2eb4a5df991bc9f3609960daa4671d25d700f4617152f9f79da768547359f817bee10cd88532c3e0a8a1714d383438e0a54217eba53cb822bd5ad + languageName: node + linkType: hard + +"@webassemblyjs/wasm-gen@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/ieee754": "npm:1.9.0" + "@webassemblyjs/leb128": "npm:1.9.0" + "@webassemblyjs/utf8": "npm:1.9.0" + checksum: 10c0/876826bef91f3af9e48118fb269c348871d5b6f019e071065556da56a3a5818630b00133e07c9dd2cc767e7f2c70934f3ed0060330ce3e37910e9c9df25f1600 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-buffer": "npm:1.11.6" + "@webassemblyjs/wasm-gen": "npm:1.11.6" + "@webassemblyjs/wasm-parser": "npm:1.11.6" + checksum: 10c0/82788408054171688e9f12883b693777219366d6867003e34dccc21b4a0950ef53edc9d2b4d54cabdb6ee869cf37c8718401b4baa4f70a7f7dd3867c75637298 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-opt@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-buffer": "npm:1.9.0" + "@webassemblyjs/wasm-gen": "npm:1.9.0" + "@webassemblyjs/wasm-parser": "npm:1.9.0" + checksum: 10c0/3d5558e078b660cd9777950f2df60f005f3cbdbcfa6c8c19dc0cf012f44f5bfa97c991d7ac26b3e78596bad0538e92dd00b5db4b51ebc373da8e329a03639190 + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.11.6, @webassemblyjs/wasm-parser@npm:^1.11.5": + version: 1.11.6 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@webassemblyjs/helper-api-error": "npm:1.11.6" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.11.6" + "@webassemblyjs/ieee754": "npm:1.11.6" + "@webassemblyjs/leb128": "npm:1.11.6" + "@webassemblyjs/utf8": "npm:1.11.6" + checksum: 10c0/7a97a5f34f98bdcfd812157845a06d53f3d3f67dbd4ae5d6bf66e234e17dc4a76b2b5e74e5dd70b4cab9778fc130194d50bbd6f9a1d23e15ed1ed666233d6f5f + languageName: node + linkType: hard + +"@webassemblyjs/wasm-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-api-error": "npm:1.9.0" + "@webassemblyjs/helper-wasm-bytecode": "npm:1.9.0" + "@webassemblyjs/ieee754": "npm:1.9.0" + "@webassemblyjs/leb128": "npm:1.9.0" + "@webassemblyjs/utf8": "npm:1.9.0" + checksum: 10c0/1e8615b9f9c3c431c9635c9a9884bca89eff1ab2383ad849341c23e09899454482a8f8813d33bf86ee1b0acc97c7c83926961a9b34d4804fa5d559610ab0a4a2 + languageName: node + linkType: hard + +"@webassemblyjs/wast-parser@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wast-parser@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/floating-point-hex-parser": "npm:1.9.0" + "@webassemblyjs/helper-api-error": "npm:1.9.0" + "@webassemblyjs/helper-code-frame": "npm:1.9.0" + "@webassemblyjs/helper-fsm": "npm:1.9.0" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/c79952466fdf7816be527b1db102952b777b12318eabb5c40df074cd8361e3a7b0179a985534fa8b5a7b93668b07ba46875ffeb5da03ca5177c80ba960ebdffc + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.11.6": + version: 1.11.6 + resolution: "@webassemblyjs/wast-printer@npm:1.11.6" + dependencies: + "@webassemblyjs/ast": "npm:1.11.6" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/916b90fa3a8aadd95ca41c21d4316d0a7582cf6d0dcf6d9db86ab0de823914df513919fba60ac1edd227ff00e93a66b927b15cbddd36b69d8a34c8815752633c + languageName: node + linkType: hard + +"@webassemblyjs/wast-printer@npm:1.9.0": + version: 1.9.0 + resolution: "@webassemblyjs/wast-printer@npm:1.9.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/wast-parser": "npm:1.9.0" + "@xtuc/long": "npm:4.2.2" + checksum: 10c0/f3d106aa884cbb7687307db7adeb3b98abff9de81b9ba8c1065267340b5e9de64ffc533044ab916b1f4ce8a67fb03efa54b29b61c8e908abe4c07edf82f614cd + languageName: node + linkType: hard + +"@webpack-cli/configtest@npm:^2.1.1": + version: 2.1.1 + resolution: "@webpack-cli/configtest@npm:2.1.1" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 10c0/a8da1f15702cb289807da99235ed95326ed7dabeb1a36ca59bd3a5dbe6adcc946a9a2767936050fc4d5ed14efab0e5b5a641dfe8e3d862c36caa5791ac12759d + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^2.0.2": + version: 2.0.2 + resolution: "@webpack-cli/info@npm:2.0.2" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 10c0/ca88a35604dc9aedac7c26e8f6793c5039dc1eea2b12a85fbfd669a5f21ecf9cf169d7fd157ea366a62666e3fa05b776306a96742ac61a9868f44fdce6b40f7d + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^2.0.5": + version: 2.0.5 + resolution: "@webpack-cli/serve@npm:2.0.5" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 10c0/36079d34971ff99a58b66b13f4184dcdd8617853c48cccdbc3f9ab7ea9e5d4fcf504e873c298ea7aa15e0b51ad2c4aee4d7a70bd7d9364e60f57b0eb93ca15fc + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.0.3": + version: 0.0.3 + resolution: "@whatwg-node/events@npm:0.0.3" + checksum: 10c0/87ac0854f84650ce016ccd82a6c087eac1c6204eeb80cf358737ce7757a345e3a4ba19e9b1815b326eb1451d49878785aa9dc426631f4ea47dedbcfc51b56977 + languageName: node + linkType: hard + +"@whatwg-node/events@npm:^0.1.0": + version: 0.1.1 + resolution: "@whatwg-node/events@npm:0.1.1" + checksum: 10c0/7e4678c8c092484dc248f4a229a398de30d21190b94ebebc333c2187180207a18e257c4588d0910e872251b3089007f4a2a3ff8b9a4d057fae94db8da28be467 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:0.9.14": + version: 0.9.14 + resolution: "@whatwg-node/fetch@npm:0.9.14" + dependencies: + "@whatwg-node/node-fetch": "npm:^0.5.0" + urlpattern-polyfill: "npm:^9.0.0" + checksum: 10c0/cb91d18c744e0d01c2f8d7982f961258a43b54baa8680ed6291a257f85e5ace1b68fc74105eebebd96b4450648fbaec98d91a434c1142da44acf928c41842d58 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.8.0, @whatwg-node/fetch@npm:^0.8.1, @whatwg-node/fetch@npm:^0.8.2": + version: 0.8.8 + resolution: "@whatwg-node/fetch@npm:0.8.8" + dependencies: + "@peculiar/webcrypto": "npm:^1.4.0" + "@whatwg-node/node-fetch": "npm:^0.3.6" + busboy: "npm:^1.6.0" + urlpattern-polyfill: "npm:^8.0.0" + web-streams-polyfill: "npm:^3.2.1" + checksum: 10c0/37d882bf85764aec7541cda1008099ab4d695971608946ec9b9e40326eedfd4c49507fbcc8765ebe3e9241f4dc9d1e970e0b3501a814d721c40c721d313c5d50 + languageName: node + linkType: hard + +"@whatwg-node/fetch@npm:^0.9.10, @whatwg-node/fetch@npm:^0.9.7": + version: 0.9.16 + resolution: "@whatwg-node/fetch@npm:0.9.16" + dependencies: + "@whatwg-node/node-fetch": "npm:^0.5.5" + urlpattern-polyfill: "npm:^10.0.0" + checksum: 10c0/757fd8560ee1a9ae404dafc43115eb37c72022c9bd3a30bc1c0028178cdece84d7378244fff4bad28ebbb3f2cc0b0b2ff738612824ed32bbd9dac49f5d0d5b42 + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.3.6": + version: 0.3.6 + resolution: "@whatwg-node/node-fetch@npm:0.3.6" + dependencies: + "@whatwg-node/events": "npm:^0.0.3" + busboy: "npm:^1.6.0" + fast-querystring: "npm:^1.1.1" + fast-url-parser: "npm:^1.1.3" + tslib: "npm:^2.3.1" + checksum: 10c0/49e4fd5e682d1fa1229b2c13c06074c6a633eddbe61be162fd213ddb85d6d27d51554b3cced5f6b7f3be1722a64cca7f5ffe0722d08b3285fe2f289d8d5a045d + languageName: node + linkType: hard + +"@whatwg-node/node-fetch@npm:^0.5.0, @whatwg-node/node-fetch@npm:^0.5.5": + version: 0.5.6 + resolution: "@whatwg-node/node-fetch@npm:0.5.6" + dependencies: + "@kamilkisiela/fast-url-parser": "npm:^1.1.4" + "@whatwg-node/events": "npm:^0.1.0" + busboy: "npm:^1.6.0" + fast-querystring: "npm:^1.1.1" + tslib: "npm:^2.3.1" + checksum: 10c0/3816973df69f8cf690be1998223b3e41ecec5f6b151bb5f08c6c7cf85f56da8d614931cca588796c6765169d3a33dff6931bf4f01239ef9281f975483dec3b9c + languageName: node + linkType: hard + +"@whatwg-node/server@npm:^0.9.1": + version: 0.9.25 + resolution: "@whatwg-node/server@npm:0.9.25" + dependencies: + "@whatwg-node/fetch": "npm:^0.9.10" + tslib: "npm:^2.3.1" + checksum: 10c0/5e0effcaf4e7a1589e9a5c8b084e32979aab4847d59662a86fe7d2cd5815dcce71e728bf0fdbdf27b5e700f87283da348e75bec012ada2d1a50a058734d5feb3 + languageName: node + linkType: hard + +"@wry/caches@npm:^1.0.0": + version: 1.0.1 + resolution: "@wry/caches@npm:1.0.1" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/a7bca3377f1131d3f1080f2e39d0692c9d1ca86bfd55734786f167f46aad28a4c8e772107324e8319843fb8068fdf98abcdea376d8a589316b1f0cdadf81f8b1 + languageName: node + linkType: hard + +"@wry/context@npm:^0.7.0": + version: 0.7.4 + resolution: "@wry/context@npm:0.7.4" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/6cc8249b8ba195cda7643bffb30969e33d54a99f118a29dd12f1c34064ee0adf04253cfa0ba5b9893afde0a9588745828962877b9585106f7488e8299757638b + languageName: node + linkType: hard + +"@wry/equality@npm:^0.5.6": + version: 0.5.7 + resolution: "@wry/equality@npm:0.5.7" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/8503ff6d4eb80f303d1387e71e51da59ccfc2160fa6d464618be80946fe43a654ea73f0c5b90d659fc4dfc3e38cbbdd6650d595fe5865be476636e444470853e + languageName: node + linkType: hard + +"@wry/trie@npm:^0.4.3": + version: 0.4.3 + resolution: "@wry/trie@npm:0.4.3" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/1a14edba595b1967d0cf38208c2660b2952a8e8a649bb669b67907df48f602c7f2acbe16c1e1b115afa7d7effb9f1a4dbde38eef16ee92e7521a511262a53281 + languageName: node + linkType: hard + +"@wry/trie@npm:^0.5.0": + version: 0.5.0 + resolution: "@wry/trie@npm:0.5.0" + dependencies: + tslib: "npm:^2.3.0" + checksum: 10c0/8c8cfcac96ba4bc69dabf02740e19e613f501b398e80bacc32cd95e87228f75ecb41cd1a76a65abae9756c0f61ab3536e0da52de28857456f9381ffdf5995d3e + languageName: node + linkType: hard + +"@xmldom/xmldom@npm:^0.8.3": + version: 0.8.10 + resolution: "@xmldom/xmldom@npm:0.8.10" + checksum: 10c0/c7647c442502720182b0d65b17d45d2d95317c1c8c497626fe524bda79b4fb768a9aa4fae2da919f308e7abcff7d67c058b102a9d641097e9a57f0b80187851f + languageName: node + linkType: hard + +"@xtuc/ieee754@npm:^1.2.0": + version: 1.2.0 + resolution: "@xtuc/ieee754@npm:1.2.0" + checksum: 10c0/a8565d29d135039bd99ae4b2220d3e167d22cf53f867e491ed479b3f84f895742d0097f935b19aab90265a23d5d46711e4204f14c479ae3637fbf06c4666882f + languageName: node + linkType: hard + +"@xtuc/long@npm:4.2.2": + version: 4.2.2 + resolution: "@xtuc/long@npm:4.2.2" + checksum: 10c0/8582cbc69c79ad2d31568c412129bf23d2b1210a1dfb60c82d5a1df93334da4ee51f3057051658569e2c196d8dc33bc05ae6b974a711d0d16e801e1d0647ccd1 + languageName: node + linkType: hard + +"@zxing/text-encoding@npm:0.9.0": + version: 0.9.0 + resolution: "@zxing/text-encoding@npm:0.9.0" + checksum: 10c0/d15bff181d46c2ab709e7242801a8d40408aa8c19b44462e5f60e766bf59105b44957914ab6baab60d10d466a5e965f21fe890c67dfdb7d5c7f940df457b4d0d + languageName: node + linkType: hard + +"abab@npm:^2.0.6": + version: 2.0.6 + resolution: "abab@npm:2.0.6" + checksum: 10c0/0b245c3c3ea2598fe0025abf7cc7bb507b06949d51e8edae5d12c1b847a0a0c09639abcb94788332b4e2044ac4491c1e8f571b51c7826fd4b0bda1685ad4a278 + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 + languageName: node + linkType: hard + +"abort-controller@npm:^3.0.0": + version: 3.0.0 + resolution: "abort-controller@npm:3.0.0" + dependencies: + event-target-shim: "npm:^5.0.0" + checksum: 10c0/90ccc50f010250152509a344eb2e71977fbf8db0ab8f1061197e3275ddf6c61a41a6edfd7b9409c664513131dd96e962065415325ef23efa5db931b382d24ca5 + languageName: node + linkType: hard + +"abstract-logging@npm:^2.0.1": + version: 2.0.1 + resolution: "abstract-logging@npm:2.0.1" + checksum: 10c0/304879d9babcf6772260e5ddde632e6428e1f42f7a7a116d4689e97ad813a20e0ec2dd1e0a122f3617557f40091b9ca85735de4b48c17a2041268cb47b3f8ef1 + languageName: node + linkType: hard + +"accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": + version: 1.3.8 + resolution: "accepts@npm:1.3.8" + dependencies: + mime-types: "npm:~2.1.34" + negotiator: "npm:0.6.3" + checksum: 10c0/3a35c5f5586cfb9a21163ca47a5f77ac34fa8ceb5d17d2fa2c0d81f41cbd7f8c6fa52c77e2c039acc0f4d09e71abdc51144246900f6bef5e3c4b333f77d89362 + languageName: node + linkType: hard + +"acorn-globals@npm:^7.0.0": + version: 7.0.1 + resolution: "acorn-globals@npm:7.0.1" + dependencies: + acorn: "npm:^8.1.0" + acorn-walk: "npm:^8.0.2" + checksum: 10c0/7437f58e92d99292dbebd0e79531af27d706c9f272f31c675d793da6c82d897e75302a8744af13c7f7978a8399840f14a353b60cf21014647f71012982456d2b + languageName: node + linkType: hard + +"acorn-import-assertions@npm:^1.9.0": + version: 1.9.0 + resolution: "acorn-import-assertions@npm:1.9.0" + peerDependencies: + acorn: ^8 + checksum: 10c0/3b4a194e128efdc9b86c2b1544f623aba4c1aa70d638f8ab7dc3971a5b4aa4c57bd62f99af6e5325bb5973c55863b4112e708a6f408bad7a138647ca72283afe + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn-walk@npm:^8.0.0, acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": + version: 8.3.2 + resolution: "acorn-walk@npm:8.3.2" + checksum: 10c0/7e2a8dad5480df7f872569b9dccff2f3da7e65f5353686b1d6032ab9f4ddf6e3a2cb83a9b52cf50b1497fd522154dda92f0abf7153290cc79cd14721ff121e52 + languageName: node + linkType: hard + +"acorn@npm:^6.4.1": + version: 6.4.2 + resolution: "acorn@npm:6.4.2" + bin: + acorn: bin/acorn + checksum: 10c0/52a72d5d785fa64a95880f2951021a38954f8f69a4944dfeab6fb1449b0f02293eae109a56d55b58ff31a90a00d16a804658a12db8ef834c20b3d1201fe5ba5b + languageName: node + linkType: hard + +"acorn@npm:^8.0.4, acorn@npm:^8.1.0, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.11.3 + resolution: "acorn@npm:8.11.3" + bin: + acorn: bin/acorn + checksum: 10c0/3ff155f8812e4a746fee8ecff1f227d527c4c45655bb1fad6347c3cb58e46190598217551b1500f18542d2bbe5c87120cb6927f5a074a59166fbdd9468f0a299 + languageName: node + linkType: hard + +"adjust-sourcemap-loader@npm:^4.0.0": + version: 4.0.0 + resolution: "adjust-sourcemap-loader@npm:4.0.0" + dependencies: + loader-utils: "npm:^2.0.0" + regex-parser: "npm:^2.2.11" + checksum: 10c0/6a6e5bb8b670e4e1238c708f6163e92aa2ad0308fe5913de73c89e4cbf41738ee0bcc5552b94d0b7bf8be435ee49b78c6de8a6db7badd80762051e843c8aa14f + languageName: node + linkType: hard + +"agent-base@npm:6": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" + dependencies: + debug: "npm:^4.3.4" + checksum: 10c0/fc974ab57ffdd8421a2bc339644d312a9cca320c20c3393c9d8b1fd91731b9bbabdb985df5fc860f5b79d81c3e350daa3fcb31c5c07c0bb385aafc817df004ce + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv-errors@npm:^1.0.0": + version: 1.0.1 + resolution: "ajv-errors@npm:1.0.1" + peerDependencies: + ajv: ">=5.0.0" + checksum: 10c0/de2d6e8100c8707ea063ee4785d53adf599b457c0d4f72c3592244d67ad16448a6d35f7ce45f12bdd2819939447c876e8ef2f1c0800896d7f2aa25c3838acdf1 + languageName: node + linkType: hard + +"ajv-formats@npm:^2.1.1": + version: 2.1.1 + resolution: "ajv-formats@npm:2.1.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10c0/e43ba22e91b6a48d96224b83d260d3a3a561b42d391f8d3c6d2c1559f9aa5b253bfb306bc94bbeca1d967c014e15a6efe9a207309e95b3eaae07fcbcdc2af662 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1, ajv-keywords@npm:^3.5.2": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv-keywords@npm:^5.1.0": + version: 5.1.0 + resolution: "ajv-keywords@npm:5.1.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + peerDependencies: + ajv: ^8.8.2 + checksum: 10c0/18bec51f0171b83123ba1d8883c126e60c6f420cef885250898bf77a8d3e65e3bfb9e8564f497e30bdbe762a83e0d144a36931328616a973ee669dc74d4a9590 + languageName: node + linkType: hard + +"ajv@npm:^6.1.0, ajv@npm:^6.10.2, ajv@npm:^6.12.4, ajv@npm:^6.12.5": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ajv@npm:^8.0.0, ajv@npm:^8.10.0, ajv@npm:^8.11.0, ajv@npm:^8.9.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10c0/ac4f72adf727ee425e049bc9d8b31d4a57e1c90da8d28bcd23d60781b12fcd6fc3d68db5df16994c57b78b94eed7988f5a6b482fd376dc5b084125e20a0a622e + languageName: node + linkType: hard + +"ansi-align@npm:^3.0.0": + version: 3.0.1 + resolution: "ansi-align@npm:3.0.1" + dependencies: + string-width: "npm:^4.1.0" + checksum: 10c0/ad8b755a253a1bc8234eb341e0cec68a857ab18bf97ba2bda529e86f6e30460416523e0ec58c32e5c21f0ca470d779503244892873a5895dbd0c39c788e82467 + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1": + version: 4.1.3 + resolution: "ansi-colors@npm:4.1.3" + checksum: 10c0/ec87a2f59902f74e61eada7f6e6fe20094a628dab765cfdbd03c3477599368768cffccdb5d3bb19a1b6c99126783a143b1fee31aab729b31ffe5836c7e5e28b9 + languageName: node + linkType: hard + +"ansi-diff-stream@npm:^1.2.1": + version: 1.2.1 + resolution: "ansi-diff-stream@npm:1.2.1" + dependencies: + ansi-regex: "npm:^2.0.0" + buffer-from: "npm:^1.0.0" + through2: "npm:^2.0.1" + bin: + ansi-diff-stream: ./bin.js + checksum: 10c0/c3d472bb041f29190436098556445f081d1221ef4f24b7d287abe5f58d0360f13a8c47a950a710d303c90621a37a05e35f63a92a15c11f5826de6eefab851542 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-escapes@npm:^5.0.0": + version: 5.0.0 + resolution: "ansi-escapes@npm:5.0.0" + dependencies: + type-fest: "npm:^1.0.2" + checksum: 10c0/f705cc7fbabb981ddf51562cd950792807bccd7260cc3d9478a619dda62bff6634c87ca100f2545ac7aade9b72652c4edad8c7f0d31a0b949b5fa58f33eaf0d0 + languageName: node + linkType: hard + +"ansi-escapes@npm:^6.0.0": + version: 6.2.0 + resolution: "ansi-escapes@npm:6.2.0" + dependencies: + type-fest: "npm:^3.0.0" + checksum: 10c0/3eec75deedd8b10192c5f98e4cd9715cc3ff268d33fc463c24b7d22446668bfcd4ad1803993ea89c0f51f88b5a3399572bacb7c8cb1a067fc86e189c5f3b0c7e + languageName: node + linkType: hard + +"ansi-html-community@npm:^0.0.8": + version: 0.0.8 + resolution: "ansi-html-community@npm:0.0.8" + bin: + ansi-html: bin/ansi-html + checksum: 10c0/45d3a6f0b4f10b04fdd44bef62972e2470bfd917bf00439471fa7473d92d7cbe31369c73db863cc45dda115cb42527f39e232e9256115534b8ee5806b0caeed4 + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 10c0/78cebaf50bce2cb96341a7230adf28d804611da3ce6bf338efa7b72f06cc6ff648e29f80cd95e582617ba58d5fdbec38abfeed3500a98bce8381a9daec7c548b + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.0.1 + resolution: "ansi-regex@npm:6.0.1" + checksum: 10c0/cbe16dbd2c6b2735d1df7976a7070dd277326434f0212f43abf6d87674095d247968209babdaad31bb00882fa68807256ba9be340eec2f1004de14ca75f52a08 + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: "npm:^1.9.0" + checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^2.0.0": + version: 2.0.0 + resolution: "anymatch@npm:2.0.0" + dependencies: + micromatch: "npm:^3.1.4" + normalize-path: "npm:^2.1.1" + checksum: 10c0/a0d745e52f0233048724b9c9d7b1d8a650f7a50151a0f1d2cce1857b09fd096052d334f8c570cc88596edef8249ae778f767db94025cd00f81e154a37bb7e34e + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"api@workspace:api": + version: 0.0.0-use.local + resolution: "api@workspace:api" + dependencies: + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + languageName: unknown + linkType: soft + +"aproba@npm:^1.1.1": + version: 1.2.0 + resolution: "aproba@npm:1.2.0" + checksum: 10c0/2d34f008c9edfa991f42fe4b667d541d38a474a39ae0e24805350486d76744cd91ee45313283c1d39a055b14026dd0fc4d0cbfc13f210855d59d7e8b5a61dc51 + languageName: node + linkType: hard + +"archiver-utils@npm:^4.0.1": + version: 4.0.1 + resolution: "archiver-utils@npm:4.0.1" + dependencies: + glob: "npm:^8.0.0" + graceful-fs: "npm:^4.2.0" + lazystream: "npm:^1.0.0" + lodash: "npm:^4.17.15" + normalize-path: "npm:^3.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/fc646fe1f8e3650383b6f79384e1c8f69caf7685c705221e23393a674ee1d67331e246250a72b03ec2fbdb2cfe30adc2d4287f6357684d6843d604738bf2c870 + languageName: node + linkType: hard + +"archiver@npm:6.0.1": + version: 6.0.1 + resolution: "archiver@npm:6.0.1" + dependencies: + archiver-utils: "npm:^4.0.1" + async: "npm:^3.2.4" + buffer-crc32: "npm:^0.2.1" + readable-stream: "npm:^3.6.0" + readdir-glob: "npm:^1.1.2" + tar-stream: "npm:^3.0.0" + zip-stream: "npm:^5.0.1" + checksum: 10c0/54c5a634b39691114e727d4b4f360439fa7cd40b414c9d909606fbfd7048037f7dccefa49337f9ed19b1f5c209e021ce5e1ff9c6b547907257bc71f1af6f8cf3 + languageName: node + linkType: hard + +"archy@npm:^1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: 10c0/200c849dd1c304ea9914827b0555e7e1e90982302d574153e28637db1a663c53de62bad96df42d50e8ce7fc18d05e3437d9aa8c4b383803763755f0956c7d308 + languageName: node + linkType: hard + +"arg@npm:5.0.2": + version: 5.0.2 + resolution: "arg@npm:5.0.2" + checksum: 10c0/ccaf86f4e05d342af6666c569f844bec426595c567d32a8289715087825c2ca7edd8a3d204e4d2fb2aa4602e09a57d0c13ea8c9eea75aac3dbb4af5514e6800e + languageName: node + linkType: hard + +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10c0/070ff801a9d236a6caa647507bdcc7034530604844d64408149a26b9e87c2f97650055c0f049abd1efc024b334635c01f29e0b632b371ac3f26130f4cf65997a + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: "npm:^2.0.5" + checksum: 10c0/edcbc8044c4663d6f88f785e983e6784f98cb62b4ba1e9dd8d61b725d0203e4cfca38d676aee984c31f354103461102a3d583aa4fbe4fd0a89b679744f4e5faf + languageName: node + linkType: hard + +"aria-query@npm:^5.0.0, aria-query@npm:^5.3.0": + version: 5.3.0 + resolution: "aria-query@npm:5.3.0" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/2bff0d4eba5852a9dd578ecf47eaef0e82cc52569b48469b0aac2db5145db0b17b7a58d9e01237706d1e14b7a1b0ac9b78e9c97027ad97679dd8f91b85da1469 + languageName: node + linkType: hard + +"arr-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "arr-diff@npm:4.0.0" + checksum: 10c0/67b80067137f70c89953b95f5c6279ad379c3ee39f7143578e13bd51580a40066ee2a55da066e22d498dce10f68c2d70056d7823f972fab99dfbf4c78d0bc0f7 + languageName: node + linkType: hard + +"arr-flatten@npm:^1.1.0": + version: 1.1.0 + resolution: "arr-flatten@npm:1.1.0" + checksum: 10c0/bef53be02ed3bc58f202b3861a5b1eb6e1ae4fecf39c3ad4d15b1e0433f941077d16e019a33312d820844b0661777322acbb7d0c447b04d9bdf7d6f9c532548a + languageName: node + linkType: hard + +"arr-union@npm:^3.1.0": + version: 3.1.0 + resolution: "arr-union@npm:3.1.0" + checksum: 10c0/7d5aa05894e54aa93c77c5726c1dd5d8e8d3afe4f77983c0aa8a14a8a5cbe8b18f0cf4ecaa4ac8c908ef5f744d2cbbdaa83fd6e96724d15fea56cfa7f5efdd51 + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": + version: 1.0.1 + resolution: "array-buffer-byte-length@npm:1.0.1" + dependencies: + call-bind: "npm:^1.0.5" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/f5cdf54527cd18a3d2852ddf73df79efec03829e7373a8322ef5df2b4ef546fb365c19c71d6b42d641cb6bfe0f1a2f19bc0ece5b533295f86d7c3d522f228917 + languageName: node + linkType: hard + +"array-differ@npm:^3.0.0": + version: 3.0.0 + resolution: "array-differ@npm:3.0.0" + checksum: 10c0/c0d924cc2b7e3f5a0e6ae932e8941c5fddc0412bcecf8d5152641910e60f5e1c1e87da2b32083dec2f92f9a8f78e916ea68c22a0579794ba49886951ae783123 + languageName: node + linkType: hard + +"array-flatten@npm:1.1.1": + version: 1.1.1 + resolution: "array-flatten@npm:1.1.1" + checksum: 10c0/806966c8abb2f858b08f5324d9d18d7737480610f3bd5d3498aaae6eb5efdc501a884ba019c9b4a8f02ff67002058749d05548fd42fa8643f02c9c7f22198b91 + languageName: node + linkType: hard + +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": + version: 3.1.7 + resolution: "array-includes@npm:3.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + is-string: "npm:^1.0.7" + checksum: 10c0/692907bd7f19d06dc58ccb761f34b58f5dc0b437d2b47a8fe42a1501849a5cf5c27aed3d521a9702667827c2c85a7e75df00a402c438094d87fc43f39ebf9b2b + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 10c0/429897e68110374f39b771ec47a7161fc6a8fc33e196857c0a396dc75df0b5f65e4d046674db764330b6bb66b39ef48dd7c53b6a2ee75cfb0681e0c1a7033962 + languageName: node + linkType: hard + +"array-unique@npm:^0.3.2": + version: 0.3.2 + resolution: "array-unique@npm:0.3.2" + checksum: 10c0/dbf4462cdba8a4b85577be07705210b3d35be4b765822a3f52962d907186617638ce15e0603a4fefdcf82f4cbbc9d433f8cbbd6855148a68872fa041b6474121 + languageName: node + linkType: hard + +"array.prototype.filter@npm:^1.0.3": + version: 1.0.3 + resolution: "array.prototype.filter@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-array-method-boxes-properly: "npm:^1.0.0" + is-string: "npm:^1.0.7" + checksum: 10c0/8b70b5f866df5d90fa27aa5bfa30f5fefc44cbea94b0513699d761713658077c2a24cbf06aac5179eabddb6c93adc467af4c288b7a839c5bc5a769ee5a2d48ad + languageName: node + linkType: hard + +"array.prototype.findlastindex@npm:^1.2.3": + version: 1.2.4 + resolution: "array.prototype.findlastindex@npm:1.2.4" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.3.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/b23ae35cf7621c82c20981ee110626090734a264798e781b052e534e3d61d576f03d125d92cf2e3672062bb5cc5907e02e69f2d80196a55f3cdb0197b4aa8c64 + languageName: node + linkType: hard + +"array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flat@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/a578ed836a786efbb6c2db0899ae80781b476200617f65a44846cb1ed8bd8b24c8821b83703375d8af639c689497b7b07277060024b9919db94ac3e10dc8a49b + languageName: node + linkType: hard + +"array.prototype.flatmap@npm:^1.3.1, array.prototype.flatmap@npm:^1.3.2": + version: 1.3.2 + resolution: "array.prototype.flatmap@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + es-shim-unscopables: "npm:^1.0.0" + checksum: 10c0/67b3f1d602bb73713265145853128b1ad77cc0f9b833c7e1e056b323fbeac41a4ff1c9c99c7b9445903caea924d9ca2450578d9011913191aa88cc3c3a4b54f4 + languageName: node + linkType: hard + +"array.prototype.tosorted@npm:^1.1.1": + version: 1.1.3 + resolution: "array.prototype.tosorted@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.1.0" + es-shim-unscopables: "npm:^1.0.2" + checksum: 10c0/a27e1ca51168ecacf6042901f5ef021e43c8fa04b6c6b6f2a30bac3645cd2b519cecbe0bc45db1b85b843f64dc3207f0268f700b4b9fbdec076d12d432cf0865 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.3": + version: 1.0.3 + resolution: "arraybuffer.prototype.slice@npm:1.0.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.3" + is-array-buffer: "npm:^3.0.4" + is-shared-array-buffer: "npm:^1.0.2" + checksum: 10c0/d32754045bcb2294ade881d45140a5e52bda2321b9e98fa514797b7f0d252c4c5ab0d1edb34112652c62fa6a9398def568da63a4d7544672229afea283358c36 + languageName: node + linkType: hard + +"arrify@npm:^1.0.1": + version: 1.0.1 + resolution: "arrify@npm:1.0.1" + checksum: 10c0/c35c8d1a81bcd5474c0c57fe3f4bad1a4d46a5fa353cedcff7a54da315df60db71829e69104b859dff96c5d68af46bd2be259fe5e50dc6aa9df3b36bea0383ab + languageName: node + linkType: hard + +"arrify@npm:^2.0.1": + version: 2.0.1 + resolution: "arrify@npm:2.0.1" + checksum: 10c0/3fb30b5e7c37abea1907a60b28a554d2f0fc088757ca9bf5b684786e583fdf14360721eb12575c1ce6f995282eab936712d3c4389122682eafab0e0b57f78dbb + languageName: node + linkType: hard + +"as-table@npm:^1.0.36": + version: 1.0.55 + resolution: "as-table@npm:1.0.55" + dependencies: + printable-characters: "npm:^1.0.42" + checksum: 10c0/8c5693a84621fe53c62fcad6b779dc55c5caf4d43b8e67077964baea4a337769ef53f590d7395c806805b4ef1a391b614ba9acdee19b2ca4309ddedaf13894e6 + languageName: node + linkType: hard + +"asap@npm:~2.0.3": + version: 2.0.6 + resolution: "asap@npm:2.0.6" + checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d + languageName: node + linkType: hard + +"asn1.js@npm:^5.2.0": + version: 5.4.1 + resolution: "asn1.js@npm:5.4.1" + dependencies: + bn.js: "npm:^4.0.0" + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + safer-buffer: "npm:^2.1.0" + checksum: 10c0/b577232fa6069cc52bb128e564002c62b2b1fe47f7137bdcd709c0b8495aa79cee0f8cc458a831b2d8675900eea0d05781b006be5e1aa4f0ae3577a73ec20324 + languageName: node + linkType: hard + +"asn1js@npm:^3.0.1, asn1js@npm:^3.0.5": + version: 3.0.5 + resolution: "asn1js@npm:3.0.5" + dependencies: + pvtsutils: "npm:^1.3.2" + pvutils: "npm:^1.1.3" + tslib: "npm:^2.4.0" + checksum: 10c0/bb8eaf4040c8f49dd475566874986f5976b81bae65a6b5526e2208a13cdca323e69ce297bcd435fdda3eb6933defe888e71974d705b6fcb14f2734a907f8aed4 + languageName: node + linkType: hard + +"assert@npm:^1.1.1": + version: 1.5.1 + resolution: "assert@npm:1.5.1" + dependencies: + object.assign: "npm:^4.1.4" + util: "npm:^0.10.4" + checksum: 10c0/836688b928b68b7fc5bbc165443e16a62623d57676a1e8a980a0316f9ae86e5e0a102c63470491bf55a8545e75766303640c0c7ad1cf6bfa5450130396043bbd + languageName: node + linkType: hard + +"assert@npm:^2.0.0": + version: 2.1.0 + resolution: "assert@npm:2.1.0" + dependencies: + call-bind: "npm:^1.0.2" + is-nan: "npm:^1.3.2" + object-is: "npm:^1.1.5" + object.assign: "npm:^4.1.4" + util: "npm:^0.12.5" + checksum: 10c0/7271a5da883c256a1fa690677bf1dd9d6aa882139f2bed1cd15da4f9e7459683e1da8e32a203d6cc6767e5e0f730c77a9532a87b896b4b0af0dd535f668775f0 + languageName: node + linkType: hard + +"assign-symbols@npm:^1.0.0": + version: 1.0.0 + resolution: "assign-symbols@npm:1.0.0" + checksum: 10c0/29a654b8a6da6889a190d0d0efef4b1bfb5948fa06cbc245054aef05139f889f2f7c75b989917e3fde853fc4093b88048e4de8578a73a76f113d41bfd66e5775 + languageName: node + linkType: hard + +"ast-types-flow@npm:^0.0.8": + version: 0.0.8 + resolution: "ast-types-flow@npm:0.0.8" + checksum: 10c0/f2a0ba8055353b743c41431974521e5e852a9824870cd6fce2db0e538ac7bf4da406bbd018d109af29ff3f8f0993f6a730c9eddbd0abd031fbcb29ca75c1014e + languageName: node + linkType: hard + +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" + dependencies: + tslib: "npm:^2.0.1" + checksum: 10c0/abcc49e42eb921a7ebc013d5bec1154651fb6dbc3f497541d488859e681256901b2990b954d530ba0da4d0851271d484f7057d5eff5e07cb73e8b10909f711bf + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-each@npm:^1.0.1": + version: 1.0.6 + resolution: "async-each@npm:1.0.6" + checksum: 10c0/d4e45e8f077e20e015952c065ceae75f82b30ee2d4a8e56a5c454ae44331aaa009d8c94fe043ba254c177bffae9f6ebeefebb7daf9f7ce4d27fac0274dc328ae + languageName: node + linkType: hard + +"async@npm:^2.6.4": + version: 2.6.4 + resolution: "async@npm:2.6.4" + dependencies: + lodash: "npm:^4.17.14" + checksum: 10c0/0ebb3273ef96513389520adc88e0d3c45e523d03653cc9b66f5c46f4239444294899bfd13d2b569e7dbfde7da2235c35cf5fd3ece9524f935d41bbe4efccdad0 + languageName: node + linkType: hard + +"async@npm:^3.2.4": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 10c0/1408287b26c6db67d45cb346e34892cee555b8b59e6c68e6f8c3e495cad5ca13b4f218180e871f3c2ca30df4ab52693b66f2f6ff43644760cab0b2198bda79c1 + languageName: node + linkType: hard + +"asynciterator.prototype@npm:^1.0.0": + version: 1.0.0 + resolution: "asynciterator.prototype@npm:1.0.0" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/fb76850e57d931ff59fd16b6cddb79b0d34fe45f400b2c3480d38892e72cd089787401687dbdb7cdb14ece402c275d3e02a648760d1489cd493527129c4c6204 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: 10c0/ada635b519dc0c576bb0b3ca63a73b50eefacf390abb3f062558342a8d68f2db91d0c8db54ce81b0d89de3b0f000de71f3ae7d761fd7d8cc624278fe443d6c7e + languageName: node + linkType: hard + +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: 10c0/e329a6665512736a9bbb073e1761b4ec102f7926cce35037753146a9db9c8104f5044c1662e4a863576ce544fb8be27cd2be6bc8c1a40147d03f31eb1cfb6e8a + languageName: node + linkType: hard + +"auto-bind@npm:~4.0.0": + version: 4.0.0 + resolution: "auto-bind@npm:4.0.0" + checksum: 10c0/12f70745d081ba990dca028ecfa70de25d4baa9a8b74a5bef3ab293da56cba32ff8276c3ff8e5fe6d9f370547bf3fa71486befbfefe272af7e722c21d0c25530 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.6": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"avvio@npm:^8.2.1": + version: 8.3.0 + resolution: "avvio@npm:8.3.0" + dependencies: + "@fastify/error": "npm:^3.3.0" + archy: "npm:^1.0.0" + debug: "npm:^4.0.0" + fastq: "npm:^1.17.1" + checksum: 10c0/ae171bd977302c3720c9cab8a8e1acedba34d23d44fa4f2914953b02c34c81bd332b4f5713912ce9405c4eb5317fdc6e794b0134d3f680f28858d7a0efadfbc6 + languageName: node + linkType: hard + +"axe-core@npm:=4.7.0": + version: 4.7.0 + resolution: "axe-core@npm:4.7.0" + checksum: 10c0/89ac5712b5932ac7d23398b4cb5ba081c394a086e343acc68ba49c83472706e18e0799804e8388c779dcdacc465377deb29f2714241d3fbb389cf3a6b275c9ba + languageName: node + linkType: hard + +"axobject-query@npm:^3.2.1": + version: 3.2.1 + resolution: "axobject-query@npm:3.2.1" + dependencies: + dequal: "npm:^2.0.3" + checksum: 10c0/f7debc2012e456139b57d888c223f6d3cb4b61eb104164a85e3d346273dd6ef0bc9a04b6660ca9407704a14a8e05fa6b6eb9d55f44f348c7210de7ffb350c3a7 + languageName: node + linkType: hard + +"b4a@npm:^1.6.4": + version: 1.6.6 + resolution: "b4a@npm:1.6.6" + checksum: 10c0/56f30277666cb511a15829e38d369b114df7dc8cec4cedc09cc5d685bc0f27cb63c7bcfb58e09a19a1b3c4f2541069ab078b5328542e85d74a39620327709a38 + languageName: node + linkType: hard + +"babel-core@npm:^7.0.0-bridge.0": + version: 7.0.0-bridge.0 + resolution: "babel-core@npm:7.0.0-bridge.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f57576e30267be4607d163b7288031d332cf9200ea35efe9fb33c97f834e304376774c28c1f9d6928d6733fcde7041e4010f1248a0519e7730c590d4b07b9608 + languageName: node + linkType: hard + +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" + dependencies: + "@jest/transform": "npm:^29.7.0" + "@types/babel__core": "npm:^7.1.14" + babel-plugin-istanbul: "npm:^6.1.1" + babel-preset-jest: "npm:^29.6.3" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.8.0 + checksum: 10c0/2eda9c1391e51936ca573dd1aedfee07b14c59b33dbe16ef347873ddd777bcf6e2fc739681e9e9661ab54ef84a3109a03725be2ac32cd2124c07ea4401cbe8c1 + languageName: node + linkType: hard + +"babel-literal-to-ast@npm:^2.1.0": + version: 2.1.0 + resolution: "babel-literal-to-ast@npm:2.1.0" + dependencies: + "@babel/parser": "npm:^7.1.6" + "@babel/traverse": "npm:^7.1.6" + "@babel/types": "npm:^7.1.6" + peerDependencies: + "@babel/core": ^7.1.2 + checksum: 10c0/58e41540f9727b981d5adb684f3927a423054f77740045e9c5e136de7cc8909afa56110445070bde7b00b8cb75e2c81e7925710f59aacb6549aee9ff89c7afe1 + languageName: node + linkType: hard + +"babel-loader@npm:^8.1.0": + version: 8.3.0 + resolution: "babel-loader@npm:8.3.0" + dependencies: + find-cache-dir: "npm:^3.3.1" + loader-utils: "npm:^2.0.0" + make-dir: "npm:^3.1.0" + schema-utils: "npm:^2.6.5" + peerDependencies: + "@babel/core": ^7.0.0 + webpack: ">=2" + checksum: 10c0/7b83bae35a12fbc5cdf250e2d36a288305fe5b6d20ab044ab7c09bbf456c8895b80af7a4f1e8b64b5c07a4fd48d4b5144dab40b4bc72a4fed532dc000362f38f + languageName: node + linkType: hard + +"babel-loader@npm:^9.1.3": + version: 9.1.3 + resolution: "babel-loader@npm:9.1.3" + dependencies: + find-cache-dir: "npm:^4.0.0" + schema-utils: "npm:^4.0.0" + peerDependencies: + "@babel/core": ^7.12.0 + webpack: ">=5" + checksum: 10c0/e3fc3c9e02bd908b37e8e8cd4f3d7280cf6ac45e33fc203aedbb615135a0fecc33bf92573b71a166a827af029d302c0b060354985cd91d510320bd70a2f949eb + languageName: node + linkType: hard + +"babel-plugin-auto-import@npm:1.1.0": + version: 1.1.0 + resolution: "babel-plugin-auto-import@npm:1.1.0" + dependencies: + "@babel/core": "npm:^7.11.1" + logical-not: "npm:^1.0.1" + checksum: 10c0/e738db0589551544c38619777334039ec9e2b245eb8e5930878e1ba5bef64b0eb33551bcbc52213d9ae8979155d07d16d22926def353d483eac12ab63d8d1983 + languageName: node + linkType: hard + +"babel-plugin-graphql-tag@npm:3.3.0": + version: 3.3.0 + resolution: "babel-plugin-graphql-tag@npm:3.3.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/parser": "npm:^7.3.2" + babel-literal-to-ast: "npm:^2.1.0" + debug: "npm:^4.1.1" + peerDependencies: + "@babel/core": ^7.0.0 + graphql-tag: ^2.10.1 + checksum: 10c0/6616bf9d03f5e905413ea024e0609bf70a2b18b875c19da1e00fe787a16e71ce36244bd097f65c7faa269d4e97e683ab53ca532d15827298c0381a05b8341add + languageName: node + linkType: hard + +"babel-plugin-ignore-html-and-css-imports@npm:0.1.0": + version: 0.1.0 + resolution: "babel-plugin-ignore-html-and-css-imports@npm:0.1.0" + checksum: 10c0/cb83c0d66134ab5bcd12332e6c33a0e13475929cf729b7f26c8d324037371e3c3e60ea9bd7a6ac87a1fca268c5665991878c47bf92be21157a63032c6f86b633 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.1.1": + version: 6.1.1 + resolution: "babel-plugin-istanbul@npm:6.1.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-instrument: "npm:^5.0.4" + test-exclude: "npm:^6.0.0" + checksum: 10c0/1075657feb705e00fd9463b329921856d3775d9867c5054b449317d39153f8fbcebd3e02ebf00432824e647faff3683a9ca0a941325ef1afe9b3c4dd51b24beb + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" + dependencies: + "@babel/template": "npm:^7.3.3" + "@babel/types": "npm:^7.3.3" + "@types/babel__core": "npm:^7.1.14" + "@types/babel__traverse": "npm:^7.0.6" + checksum: 10c0/7e6451caaf7dce33d010b8aafb970e62f1b0c0b57f4978c37b0d457bbcf0874d75a395a102daf0bae0bd14eafb9f6e9a165ee5e899c0a4f1f3bb2e07b304ed2e + languageName: node + linkType: hard + +"babel-plugin-module-resolver@npm:5.0.0": + version: 5.0.0 + resolution: "babel-plugin-module-resolver@npm:5.0.0" + dependencies: + find-babel-config: "npm:^2.0.0" + glob: "npm:^8.0.3" + pkg-up: "npm:^3.1.0" + reselect: "npm:^4.1.7" + resolve: "npm:^1.22.1" + checksum: 10c0/bbddb437bf23ab2e12e25c855d71c906cf7a438d0d4821cf0786f23990718f86f76c49f7952ba2370a312c806d223e1efb7ca16698ff49d019396c8d81e4a870 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.8": + version: 0.4.8 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.8" + dependencies: + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/843e7528de0e03a31a6f3837896a95f75b0b24b0294a077246282372279e974400b0bdd82399e8f9cbfe42c87ed56540fd71c33eafb7c8e8b9adac546ecc5fe5 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.9.0": + version: 0.9.0 + resolution: "babel-plugin-polyfill-corejs3@npm:0.9.0" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + core-js-compat: "npm:^3.34.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b857010736c5e42e20b683973dae862448a42082fcc95b3ef188305a6864a4f94b5cbd568e49e4cd7172c6b2eace7bc403c3ba0984fbe5479474ade01126d559 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.5.5": + version: 0.5.5 + resolution: "babel-plugin-polyfill-regenerator@npm:0.5.5" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.5.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/2aab692582082d54e0df9f9373dca1b223e65b4e7e96440160f27ed8803d417a1fa08da550f08aa3820d2010329ca91b68e2b6e9bd7aed51c93d46dfe79629bb + languageName: node + linkType: hard + +"babel-plugin-syntax-trailing-function-commas@npm:^7.0.0-beta.0": + version: 7.0.0-beta.0 + resolution: "babel-plugin-syntax-trailing-function-commas@npm:7.0.0-beta.0" + checksum: 10c0/67e3d6a706637097526b2d3046d3124d3efd3aac28b47af940c2f8df01b8d7ffeb4cdf5648f3b5eac3f098f5b61c4845e306f34301c869e5e14db6ae8b77f699 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.8.3" + "@babel/plugin-syntax-import-meta": "npm:^7.8.3" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.8.3" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-top-level-await": "npm:^7.8.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/5ba39a3a0e6c37d25e56a4fb843be632dac98d54706d8a0933f9bcb1a07987a96d55c2b5a6c11788a74063fb2534fe68c1f1dbb6c93626850c785e0938495627 + languageName: node + linkType: hard + +"babel-preset-fbjs@npm:^3.4.0": + version: 3.4.0 + resolution: "babel-preset-fbjs@npm:3.4.0" + dependencies: + "@babel/plugin-proposal-class-properties": "npm:^7.0.0" + "@babel/plugin-proposal-object-rest-spread": "npm:^7.0.0" + "@babel/plugin-syntax-class-properties": "npm:^7.0.0" + "@babel/plugin-syntax-flow": "npm:^7.0.0" + "@babel/plugin-syntax-jsx": "npm:^7.0.0" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.0.0" + "@babel/plugin-transform-arrow-functions": "npm:^7.0.0" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.0.0" + "@babel/plugin-transform-block-scoping": "npm:^7.0.0" + "@babel/plugin-transform-classes": "npm:^7.0.0" + "@babel/plugin-transform-computed-properties": "npm:^7.0.0" + "@babel/plugin-transform-destructuring": "npm:^7.0.0" + "@babel/plugin-transform-flow-strip-types": "npm:^7.0.0" + "@babel/plugin-transform-for-of": "npm:^7.0.0" + "@babel/plugin-transform-function-name": "npm:^7.0.0" + "@babel/plugin-transform-literals": "npm:^7.0.0" + "@babel/plugin-transform-member-expression-literals": "npm:^7.0.0" + "@babel/plugin-transform-modules-commonjs": "npm:^7.0.0" + "@babel/plugin-transform-object-super": "npm:^7.0.0" + "@babel/plugin-transform-parameters": "npm:^7.0.0" + "@babel/plugin-transform-property-literals": "npm:^7.0.0" + "@babel/plugin-transform-react-display-name": "npm:^7.0.0" + "@babel/plugin-transform-react-jsx": "npm:^7.0.0" + "@babel/plugin-transform-shorthand-properties": "npm:^7.0.0" + "@babel/plugin-transform-spread": "npm:^7.0.0" + "@babel/plugin-transform-template-literals": "npm:^7.0.0" + babel-plugin-syntax-trailing-function-commas: "npm:^7.0.0-beta.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2be440c0fd7d1df247417be35644cb89f40a300e7fcdc44878b737ec49b04380eff422e4ebdc7bb5efd5ecfef45b634fc5fe11c3a409a50c9084e81083037902 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" + dependencies: + babel-plugin-jest-hoist: "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/ec5fd0276b5630b05f0c14bb97cc3815c6b31600c683ebb51372e54dcb776cff790bdeeabd5b8d01ede375a040337ccbf6a3ccd68d3a34219125945e167ad943 + languageName: node + linkType: hard + +"babel-timing@npm:0.9.1": + version: 0.9.1 + resolution: "babel-timing@npm:0.9.1" + dependencies: + "@babel/core": "npm:^7.12.9" + ansi-diff-stream: "npm:^1.2.1" + babel-loader: "npm:^8.1.0" + cli-table3: "npm:^0.6.0" + colors: "npm:^1.4.0" + commander: "npm:^6.1.0" + find-babel-config: "npm:^1.2.0" + find-cache-dir: "npm:^3.3.1" + glob: "npm:^7.1.6" + lodash.chunk: "npm:^4.2.0" + lodash.defaults: "npm:^4.2.0" + lodash.mergewith: "npm:^4.6.2" + minimatch: "npm:^3.0.4" + multimatch: "npm:^4.0.0" + rimraf: "npm:^3.0.2" + webpack: "npm:^4.44.2" + bin: + babel-timing: dist/cli.js + checksum: 10c0/1a70d7ae9ef60e71fb9a4a4ac155c660b0cc779d1a6b48023964050b458b822d66d01c1007038765113f6f622496beddabf5978ed4c5f96d1d8b277301ca058f + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"bare-events@npm:^2.2.0": + version: 2.2.0 + resolution: "bare-events@npm:2.2.0" + checksum: 10c0/0b899d444b9c86759a44b8a2fbce0dcb8060884a89193ae3222ddc92ab5273cdaf76dc3ca0bb911d93f815fb43f9392f79e5b8105c7c8300c298d254b1e734c4 + languageName: node + linkType: hard + +"base64-js@npm:^1.0.2, base64-js@npm:^1.3.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + +"base@npm:^0.11.1": + version: 0.11.2 + resolution: "base@npm:0.11.2" + dependencies: + cache-base: "npm:^1.0.1" + class-utils: "npm:^0.3.5" + component-emitter: "npm:^1.2.1" + define-property: "npm:^1.0.0" + isobject: "npm:^3.0.1" + mixin-deep: "npm:^1.2.0" + pascalcase: "npm:^0.1.1" + checksum: 10c0/30a2c0675eb52136b05ef496feb41574d9f0bb2d6d677761da579c00a841523fccf07f1dbabec2337b5f5750f428683b8ca60d89e56a1052c4ae1c0cd05de64d + languageName: node + linkType: hard + +"batch@npm:0.6.1": + version: 0.6.1 + resolution: "batch@npm:0.6.1" + checksum: 10c0/925a13897b4db80d4211082fe287bcf96d297af38e26448c857cee3e095c9792e3b8f26b37d268812e7f38a589f694609de8534a018b1937d7dc9f84e6b387c5 + languageName: node + linkType: hard + +"big.js@npm:^5.2.2": + version: 5.2.2 + resolution: "big.js@npm:5.2.2" + checksum: 10c0/230520f1ff920b2d2ce3e372d77a33faa4fa60d802fe01ca4ffbc321ee06023fe9a741ac02793ee778040a16b7e497f7d60c504d1c402b8fdab6f03bb785a25f + languageName: node + linkType: hard + +"binary-extensions@npm:^1.0.0": + version: 1.13.1 + resolution: "binary-extensions@npm:1.13.1" + checksum: 10c0/2d616938ac23d828ec3fbe0dea429b566fd2c137ddc38f166f16561ccd58029deac3fa9fddb489ab13d679c8fb5f1bd0e82824041299e5e39d8dd3cc68fbb9f9 + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.2.0 + resolution: "binary-extensions@npm:2.2.0" + checksum: 10c0/d73d8b897238a2d3ffa5f59c0241870043aa7471335e89ea5e1ff48edb7c2d0bb471517a3e4c5c3f4c043615caa2717b5f80a5e61e07503d51dc85cb848e665d + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: "npm:1.0.0" + checksum: 10c0/3dab2491b4bb24124252a91e656803eac24292473e56554e35bbfe3cc1875332cfa77600c3bac7564049dc95075bf6fcc63a4609920ff2d64d0fe405fcf0d4ba + languageName: node + linkType: hard + +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bluebird@npm:^3.5.5": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 10c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 + languageName: node + linkType: hard + +"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": + version: 4.12.0 + resolution: "bn.js@npm:4.12.0" + checksum: 10c0/9736aaa317421b6b3ed038ff3d4491935a01419ac2d83ddcfebc5717385295fcfcf0c57311d90fe49926d0abbd7a9dbefdd8861e6129939177f7e67ebc645b21 + languageName: node + linkType: hard + +"bn.js@npm:^5.0.0, bn.js@npm:^5.2.1": + version: 5.2.1 + resolution: "bn.js@npm:5.2.1" + checksum: 10c0/bed3d8bd34ec89dbcf9f20f88bd7d4a49c160fda3b561c7bb227501f974d3e435a48fb9b61bc3de304acab9215a3bda0803f7017ffb4d0016a0c3a740a283caa + languageName: node + linkType: hard + +"body-parser@npm:1.20.1": + version: 1.20.1 + resolution: "body-parser@npm:1.20.1" + dependencies: + bytes: "npm:3.1.2" + content-type: "npm:~1.0.4" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + on-finished: "npm:2.4.1" + qs: "npm:6.11.0" + raw-body: "npm:2.5.1" + type-is: "npm:~1.6.18" + unpipe: "npm:1.0.0" + checksum: 10c0/a202d493e2c10a33fb7413dac7d2f713be579c4b88343cd814b6df7a38e5af1901fc31044e04de176db56b16d9772aa25a7723f64478c20f4d91b1ac223bf3b8 + languageName: node + linkType: hard + +"bonjour-service@npm:^1.0.11": + version: 1.2.1 + resolution: "bonjour-service@npm:1.2.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + multicast-dns: "npm:^7.2.5" + checksum: 10c0/953cbfc27fc9e36e6f988012993ab2244817d82426603e0390d4715639031396c932b6657b1aa4ec30dbb5fa903d6b2c7f1be3af7a8ba24165c93e987c849730 + languageName: node + linkType: hard + +"boolbase@npm:^1.0.0": + version: 1.0.0 + resolution: "boolbase@npm:1.0.0" + checksum: 10c0/e4b53deb4f2b85c52be0e21a273f2045c7b6a6ea002b0e139c744cb6f95e9ec044439a52883b0d74dedd1ff3da55ed140cfdddfed7fb0cccbed373de5dce1bcf + languageName: node + linkType: hard + +"boxen@npm:5.1.2": + version: 5.1.2 + resolution: "boxen@npm:5.1.2" + dependencies: + ansi-align: "npm:^3.0.0" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.1.0" + cli-boxes: "npm:^2.2.1" + string-width: "npm:^4.2.2" + type-fest: "npm:^0.20.2" + widest-line: "npm:^3.1.0" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/71f31c2eb3dcacd5fce524ae509e0cc90421752e0bfbd0281fd3352871d106c462a0f810c85f2fdb02f3a9fab2d7a84e9718b4999384d651b76104ebe5d2c024 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.1 + resolution: "brace-expansion@npm:2.0.1" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + languageName: node + linkType: hard + +"braces@npm:^2.3.1, braces@npm:^2.3.2": + version: 2.3.2 + resolution: "braces@npm:2.3.2" + dependencies: + arr-flatten: "npm:^1.1.0" + array-unique: "npm:^0.3.2" + extend-shallow: "npm:^2.0.1" + fill-range: "npm:^4.0.0" + isobject: "npm:^3.0.1" + repeat-element: "npm:^1.1.2" + snapdragon: "npm:^0.8.1" + snapdragon-node: "npm:^2.0.1" + split-string: "npm:^3.0.2" + to-regex: "npm:^3.0.1" + checksum: 10c0/72b27ea3ea2718f061c29e70fd6e17606e37c65f5801abddcf0b0052db1de7d60f3bf92cfc220ab57b44bd0083a5f69f9d03b3461d2816cfe9f9398207acc728 + languageName: node + linkType: hard + +"braces@npm:^3.0.2, braces@npm:~3.0.2": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: "npm:^7.0.1" + checksum: 10c0/321b4d675791479293264019156ca322163f02dc06e3c4cab33bb15cd43d80b51efef69b0930cfde3acd63d126ebca24cd0544fa6f261e093a0fb41ab9dda381 + languageName: node + linkType: hard + +"brorand@npm:^1.0.1, brorand@npm:^1.1.0": + version: 1.1.0 + resolution: "brorand@npm:1.1.0" + checksum: 10c0/6f366d7c4990f82c366e3878492ba9a372a73163c09871e80d82fb4ae0d23f9f8924cb8a662330308206e6b3b76ba1d528b4601c9ef73c2166b440b2ea3b7571 + languageName: node + linkType: hard + +"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": + version: 1.2.0 + resolution: "browserify-aes@npm:1.2.0" + dependencies: + buffer-xor: "npm:^1.0.3" + cipher-base: "npm:^1.0.0" + create-hash: "npm:^1.1.0" + evp_bytestokey: "npm:^1.0.3" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/967f2ae60d610b7b252a4cbb55a7a3331c78293c94b4dd9c264d384ca93354c089b3af9c0dd023534efdc74ffbc82510f7ad4399cf82bc37bc07052eea485f18 + languageName: node + linkType: hard + +"browserify-cipher@npm:^1.0.0": + version: 1.0.1 + resolution: "browserify-cipher@npm:1.0.1" + dependencies: + browserify-aes: "npm:^1.0.4" + browserify-des: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + checksum: 10c0/aa256dcb42bc53a67168bbc94ab85d243b0a3b56109dee3b51230b7d010d9b78985ffc1fb36e145c6e4db151f888076c1cfc207baf1525d3e375cbe8187fe27d + languageName: node + linkType: hard + +"browserify-des@npm:^1.0.0": + version: 1.0.2 + resolution: "browserify-des@npm:1.0.2" + dependencies: + cipher-base: "npm:^1.0.1" + des.js: "npm:^1.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/943eb5d4045eff80a6cde5be4e5fbb1f2d5002126b5a4789c3c1aae3cdddb1eb92b00fb92277f512288e5c6af330730b1dbabcf7ce0923e749e151fcee5a074d + languageName: node + linkType: hard + +"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.1.0": + version: 4.1.0 + resolution: "browserify-rsa@npm:4.1.0" + dependencies: + bn.js: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + checksum: 10c0/fb2b5a8279d8a567a28d8ee03fb62e448428a906bab5c3dc9e9c3253ace551b5ea271db15e566ac78f1b1d71b243559031446604168b9235c351a32cae99d02a + languageName: node + linkType: hard + +"browserify-sign@npm:^4.0.0": + version: 4.2.2 + resolution: "browserify-sign@npm:4.2.2" + dependencies: + bn.js: "npm:^5.2.1" + browserify-rsa: "npm:^4.1.0" + create-hash: "npm:^1.2.0" + create-hmac: "npm:^1.1.7" + elliptic: "npm:^6.5.4" + inherits: "npm:^2.0.4" + parse-asn1: "npm:^5.1.6" + readable-stream: "npm:^3.6.2" + safe-buffer: "npm:^5.2.1" + checksum: 10c0/4d1292e5c165d93455630515003f0e95eed9239c99e2d373920c5b56903d16296a3d23cd4bdc4d298f55ad9b83714a9e63bc4839f1166c303349a16e84e9b016 + languageName: node + linkType: hard + +"browserify-zlib@npm:^0.2.0": + version: 0.2.0 + resolution: "browserify-zlib@npm:0.2.0" + dependencies: + pako: "npm:~1.0.5" + checksum: 10c0/9ab10b6dc732c6c5ec8ebcbe5cb7fe1467f97402c9b2140113f47b5f187b9438f93a8e065d8baf8b929323c18324fbf1105af479ee86d9d36cab7d7ef3424ad9 + languageName: node + linkType: hard + +"browserslist@npm:^4.0.0, browserslist@npm:^4.21.10, browserslist@npm:^4.22.2, browserslist@npm:^4.22.3": + version: 4.23.0 + resolution: "browserslist@npm:4.23.0" + dependencies: + caniuse-lite: "npm:^1.0.30001587" + electron-to-chromium: "npm:^1.4.668" + node-releases: "npm:^2.0.14" + update-browserslist-db: "npm:^1.0.13" + bin: + browserslist: cli.js + checksum: 10c0/8e9cc154529062128d02a7af4d8adeead83ca1df8cd9ee65a88e2161039f3d68a4d40fea7353cab6bae4c16182dec2fdd9a1cf7dc2a2935498cee1af0e998943 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-crc32@npm:^0.2.1": + version: 0.2.13 + resolution: "buffer-crc32@npm:0.2.13" + checksum: 10c0/cb0a8ddf5cf4f766466db63279e47761eb825693eeba6a5a95ee4ec8cb8f81ede70aa7f9d8aeec083e781d47154290eb5d4d26b3f7a465ec57fb9e7d59c47150 + languageName: node + linkType: hard + +"buffer-equal-constant-time@npm:1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"buffer-xor@npm:^1.0.3": + version: 1.0.3 + resolution: "buffer-xor@npm:1.0.3" + checksum: 10c0/fd269d0e0bf71ecac3146187cfc79edc9dbb054e2ee69b4d97dfb857c6d997c33de391696d04bdd669272751fa48e7872a22f3a6c7b07d6c0bc31dbe02a4075c + languageName: node + linkType: hard + +"buffer@npm:6.0.3, buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.2.1" + checksum: 10c0/2a905fbbcde73cc5d8bd18d1caa23715d5f83a5935867c2329f0ac06104204ba7947be098fe1317fbd8830e26090ff8e764f08cd14fefc977bb248c3487bcbd0 + languageName: node + linkType: hard + +"buffer@npm:^4.3.0": + version: 4.9.2 + resolution: "buffer@npm:4.9.2" + dependencies: + base64-js: "npm:^1.0.2" + ieee754: "npm:^1.1.4" + isarray: "npm:^1.0.0" + checksum: 10c0/dc443d7e7caab23816b58aacdde710b72f525ad6eecd7d738fcaa29f6d6c12e8d9c13fed7219fd502be51ecf0615f5c077d4bdc6f9308dde2e53f8e5393c5b21 + languageName: node + linkType: hard + +"buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"builtin-status-codes@npm:^3.0.0": + version: 3.0.0 + resolution: "builtin-status-codes@npm:3.0.0" + checksum: 10c0/c37bbba11a34c4431e56bd681b175512e99147defbe2358318d8152b3a01df7bf25e0305873947e5b350073d5ef41a364a22b37e48f1fb6d2fe6d5286a0f348c + languageName: node + linkType: hard + +"busboy@npm:^1.6.0": + version: 1.6.0 + resolution: "busboy@npm:1.6.0" + dependencies: + streamsearch: "npm:^1.1.0" + checksum: 10c0/fa7e836a2b82699b6e074393428b91ae579d4f9e21f5ac468e1b459a244341d722d2d22d10920cdd849743dbece6dca11d72de939fb75a7448825cf2babfba1f + languageName: node + linkType: hard + +"bytes@npm:3.0.0": + version: 3.0.0 + resolution: "bytes@npm:3.0.0" + checksum: 10c0/91d42c38601c76460519ffef88371caacaea483a354c8e4b8808e7b027574436a5713337c003ea3de63ee4991c2a9a637884fdfe7f761760d746929d9e8fec60 + languageName: node + linkType: hard + +"bytes@npm:3.1.2": + version: 3.1.2 + resolution: "bytes@npm:3.1.2" + checksum: 10c0/76d1c43cbd602794ad8ad2ae94095cddeb1de78c5dddaa7005c51af10b0176c69971a6d88e805a90c2b6550d76636e43c40d8427a808b8645ede885de4a0358e + languageName: node + linkType: hard + +"cacache@npm:^12.0.2": + version: 12.0.4 + resolution: "cacache@npm:12.0.4" + dependencies: + bluebird: "npm:^3.5.5" + chownr: "npm:^1.1.1" + figgy-pudding: "npm:^3.5.1" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.1.15" + infer-owner: "npm:^1.0.3" + lru-cache: "npm:^5.1.1" + mississippi: "npm:^3.0.0" + mkdirp: "npm:^0.5.1" + move-concurrently: "npm:^1.0.1" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^2.6.3" + ssri: "npm:^6.0.1" + unique-filename: "npm:^1.1.1" + y18n: "npm:^4.0.0" + checksum: 10c0/b4b0aa49e3fbd3ca92f71bc62923e4afce31fd687b31d5ba524b2a54b36e96a8b027165599307dda5e4a6f7268cc951b77ca170efa00c1b72761f9daae51fdfb + languageName: node + linkType: hard + +"cacache@npm:^18.0.0": + version: 18.0.2 + resolution: "cacache@npm:18.0.2" + dependencies: + "@npmcli/fs": "npm:^3.1.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^4.0.0" + ssri: "npm:^10.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^3.0.0" + checksum: 10c0/7992665305cc251a984f4fdbab1449d50e88c635bc43bf2785530c61d239c61b349e5734461baa461caaee65f040ab14e2d58e694f479c0810cffd181ba5eabc + languageName: node + linkType: hard + +"cache-base@npm:^1.0.1": + version: 1.0.1 + resolution: "cache-base@npm:1.0.1" + dependencies: + collection-visit: "npm:^1.0.0" + component-emitter: "npm:^1.2.1" + get-value: "npm:^2.0.6" + has-value: "npm:^1.0.0" + isobject: "npm:^3.0.1" + set-value: "npm:^2.0.0" + to-object-path: "npm:^0.3.0" + union-value: "npm:^1.0.0" + unset-value: "npm:^1.0.0" + checksum: 10c0/a7142e25c73f767fa520957dcd179b900b86eac63b8cfeaa3b2a35e18c9ca5968aa4e2d2bed7a3e7efd10f13be404344cfab3a4156217e71f9bdb95940bb9c8c + languageName: node + linkType: hard + +"cacheable-request@npm:^6.0.0": + version: 6.1.0 + resolution: "cacheable-request@npm:6.1.0" + dependencies: + clone-response: "npm:^1.0.2" + get-stream: "npm:^5.1.0" + http-cache-semantics: "npm:^4.0.0" + keyv: "npm:^3.0.0" + lowercase-keys: "npm:^2.0.0" + normalize-url: "npm:^4.1.0" + responselike: "npm:^1.0.2" + checksum: 10c0/e92f2b2078c014ba097647ab4ff6a6149dc2974a65670ee97ec593ec9f4148ecc988e86b9fcd8ebf7fe255774a53d5dc3db6b01065d44f09a7452c7a7d8e4844 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": + version: 1.0.7 + resolution: "call-bind@npm:1.0.7" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.1" + checksum: 10c0/a3ded2e423b8e2a265983dba81c27e125b48eefb2655e7dfab6be597088da3d47c47976c24bc51b8fd9af1061f8f87b4ab78a314f3c77784b2ae2ba535ad8b8d + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camel-case@npm:^4.1.2": + version: 4.1.2 + resolution: "camel-case@npm:4.1.2" + dependencies: + pascal-case: "npm:^3.1.2" + tslib: "npm:^2.0.3" + checksum: 10c0/bf9eefaee1f20edbed2e9a442a226793bc72336e2b99e5e48c6b7252b6f70b080fc46d8246ab91939e2af91c36cdd422e0af35161e58dd089590f302f8f64c8a + languageName: node + linkType: hard + +"camelcase@npm:6.3.0, camelcase@npm:^6.2.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"caniuse-api@npm:^3.0.0": + version: 3.0.0 + resolution: "caniuse-api@npm:3.0.0" + dependencies: + browserslist: "npm:^4.0.0" + caniuse-lite: "npm:^1.0.0" + lodash.memoize: "npm:^4.1.2" + lodash.uniq: "npm:^4.5.0" + checksum: 10c0/60f9e85a3331e6d761b1b03eec71ca38ef7d74146bece34694853033292156b815696573ed734b65583acf493e88163618eda915c6c826d46a024c71a9572b4c + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001587": + version: 1.0.30001588 + resolution: "caniuse-lite@npm:1.0.30001588" + checksum: 10c0/f8333cb52e7ebc169d462763cecc33807530f1e04d22ba1084e05a583907aa801fb3c013d60b38d54cb792440f48efcd2a1a68f22d5fce896b5bd0277392347c + languageName: node + linkType: hard + +"capital-case@npm:^1.0.4": + version: 1.0.4 + resolution: "capital-case@npm:1.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/6a034af73401f6e55d91ea35c190bbf8bda21714d4ea8bb8f1799311d123410a80f0875db4e3236dc3f97d74231ff4bf1c8783f2be13d7733c7d990c57387281 + languageName: node + linkType: hard + +"chalk@npm:4.1.2, chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"chalk@npm:^2.4.2": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: "npm:^3.2.1" + escape-string-regexp: "npm:^1.0.5" + supports-color: "npm:^5.3.0" + checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073 + languageName: node + linkType: hard + +"chalk@npm:^3.0.0": + version: 3.0.0 + resolution: "chalk@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/ee650b0a065b3d7a6fda258e75d3a86fc8e4effa55871da730a9e42ccb035bf5fd203525e5a1ef45ec2582ecc4f65b47eb11357c526b84dd29a14fb162c414d2 + languageName: node + linkType: hard + +"chalk@npm:^5.2.0": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09 + languageName: node + linkType: hard + +"change-case-all@npm:1.0.14": + version: 1.0.14 + resolution: "change-case-all@npm:1.0.14" + dependencies: + change-case: "npm:^4.1.2" + is-lower-case: "npm:^2.0.2" + is-upper-case: "npm:^2.0.2" + lower-case: "npm:^2.0.2" + lower-case-first: "npm:^2.0.2" + sponge-case: "npm:^1.0.1" + swap-case: "npm:^2.0.2" + title-case: "npm:^3.0.3" + upper-case: "npm:^2.0.2" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/c2d5fda011b2430f9e503afdca5d8ed48b0e8ee96e38f5530193f8a503317c4a82e6b721c5ea8ef852a2534bdd3d1af25d76e0604b820cd3bc136cf9c179803e + languageName: node + linkType: hard + +"change-case-all@npm:1.0.15": + version: 1.0.15 + resolution: "change-case-all@npm:1.0.15" + dependencies: + change-case: "npm:^4.1.2" + is-lower-case: "npm:^2.0.2" + is-upper-case: "npm:^2.0.2" + lower-case: "npm:^2.0.2" + lower-case-first: "npm:^2.0.2" + sponge-case: "npm:^1.0.1" + swap-case: "npm:^2.0.2" + title-case: "npm:^3.0.3" + upper-case: "npm:^2.0.2" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/0de81690de866aa8c477f8b5b08c6f9dbce4a078cffa5f014858f49fda548a9a6524b61f62f2940acce9f1fdcfeef3a7124090684e86e731f55d26c22713e2d7 + languageName: node + linkType: hard + +"change-case@npm:^4.1.2": + version: 4.1.2 + resolution: "change-case@npm:4.1.2" + dependencies: + camel-case: "npm:^4.1.2" + capital-case: "npm:^1.0.4" + constant-case: "npm:^3.0.4" + dot-case: "npm:^3.0.4" + header-case: "npm:^2.0.4" + no-case: "npm:^3.0.4" + param-case: "npm:^3.0.4" + pascal-case: "npm:^3.1.2" + path-case: "npm:^3.0.4" + sentence-case: "npm:^3.0.4" + snake-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/95a6e48563cd393241ce18470c7310a8a050304a64b63addac487560ab039ce42b099673d1d293cc10652324d92060de11b5d918179fe3b5af2ee521fb03ca58 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"char-regex@npm:^2.0.0": + version: 2.0.1 + resolution: "char-regex@npm:2.0.1" + checksum: 10c0/ec592229ac3ef18f2ea1f5676ae9a829c37150db55fd7f709edce1bcdc9f506de22ae19388d853704806e51af71fe9239bcb7e7be583296951bfbf2a9a9763a2 + languageName: node + linkType: hard + +"chardet@npm:^0.7.0": + version: 0.7.0 + resolution: "chardet@npm:0.7.0" + checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d + languageName: node + linkType: hard + +"cheerio-select@npm:^2.1.0": + version: 2.1.0 + resolution: "cheerio-select@npm:2.1.0" + dependencies: + boolbase: "npm:^1.0.0" + css-select: "npm:^5.1.0" + css-what: "npm:^6.1.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + checksum: 10c0/2242097e593919dba4aacb97d7b8275def8b9ec70b00aa1f43335456870cfc9e284eae2080bdc832ed232dabb9eefcf56c722d152da4a154813fb8814a55d282 + languageName: node + linkType: hard + +"cheerio@npm:1.0.0-rc.12": + version: 1.0.0-rc.12 + resolution: "cheerio@npm:1.0.0-rc.12" + dependencies: + cheerio-select: "npm:^2.1.0" + dom-serializer: "npm:^2.0.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + htmlparser2: "npm:^8.0.1" + parse5: "npm:^7.0.0" + parse5-htmlparser2-tree-adapter: "npm:^7.0.0" + checksum: 10c0/c85d2f2461e3f024345b78e0bb16ad8e41492356210470dd1e7d5a91391da9fcf6c0a7cb48a9ba8820330153f0cedb4d0a60c7af15d96ecdb3092299b9d9c0cc + languageName: node + linkType: hard + +"chevrotain@npm:^10.4.2": + version: 10.5.0 + resolution: "chevrotain@npm:10.5.0" + dependencies: + "@chevrotain/cst-dts-gen": "npm:10.5.0" + "@chevrotain/gast": "npm:10.5.0" + "@chevrotain/types": "npm:10.5.0" + "@chevrotain/utils": "npm:10.5.0" + lodash: "npm:4.17.21" + regexp-to-ast: "npm:0.5.0" + checksum: 10c0/a67a8b9f326231e6e4bf42e0c82d5f6e0b69bcfe4266e406d644ee58d22f7cba63deb034973813d0f5761026328cd4928250136cde940e3ef238a1f020c7307a + languageName: node + linkType: hard + +"chokidar@npm:3.5.3": + version: 3.5.3 + resolution: "chokidar@npm:3.5.3" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/1076953093e0707c882a92c66c0f56ba6187831aa51bb4de878c1fec59ae611a3bf02898f190efec8e77a086b8df61c2b2a3ea324642a0558bdf8ee6c5dc9ca1 + languageName: node + linkType: hard + +"chokidar@npm:^2.1.8": + version: 2.1.8 + resolution: "chokidar@npm:2.1.8" + dependencies: + anymatch: "npm:^2.0.0" + async-each: "npm:^1.0.1" + braces: "npm:^2.3.2" + fsevents: "npm:^1.2.7" + glob-parent: "npm:^3.1.0" + inherits: "npm:^2.0.3" + is-binary-path: "npm:^1.0.0" + is-glob: "npm:^4.0.0" + normalize-path: "npm:^3.0.0" + path-is-absolute: "npm:^1.0.0" + readdirp: "npm:^2.2.1" + upath: "npm:^1.1.1" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/5631cc00080224f9482cf5418dcbea111aec02fa8d81a8cfe37e47b9cf36089e071de52d503647e3a821a01426a40adc926ba899f657af86a51b8f8d4eef12a7 + languageName: node + linkType: hard + +"chokidar@npm:^3.4.0, chokidar@npm:^3.4.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^1.1.1": + version: 1.1.4 + resolution: "chownr@npm:1.1.4" + checksum: 10c0/ed57952a84cc0c802af900cf7136de643d3aba2eecb59d29344bc2f3f9bf703a301b9d84cdc71f82c3ffc9ccde831b0d92f5b45f91727d6c9da62f23aef9d9db + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + +"chrome-trace-event@npm:^1.0.2": + version: 1.0.3 + resolution: "chrome-trace-event@npm:1.0.3" + checksum: 10c0/080ce2d20c2b9e0f8461a380e9585686caa768b1c834a464470c9dc74cda07f27611c7b727a2cd768a9cecd033297fdec4ce01f1e58b62227882c1059dec321c + languageName: node + linkType: hard + +"ci-info@npm:4.0.0": + version: 4.0.0 + resolution: "ci-info@npm:4.0.0" + checksum: 10c0/ecc003e5b60580bd081d83dd61d398ddb8607537f916313e40af4667f9c92a1243bd8e8a591a5aa78e418afec245dbe8e90a0e26e39ca0825129a99b978dd3f9 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": + version: 1.0.4 + resolution: "cipher-base@npm:1.0.4" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/d8d005f8b64d8a77b3d3ce531301ae7b45902c9cab4ec8b66bdbd2bf2a1d9fceb9a2133c293eb3c060b2d964da0f14c47fb740366081338aa3795dd1faa8984b + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^1.0.0": + version: 1.2.3 + resolution: "cjs-module-lexer@npm:1.2.3" + checksum: 10c0/0de9a9c3fad03a46804c0d38e7b712fb282584a9c7ef1ed44cae22fb71d9bb600309d66a9711ac36a596fd03422f5bb03e021e8f369c12a39fa1786ae531baab + languageName: node + linkType: hard + +"class-utils@npm:^0.3.5": + version: 0.3.6 + resolution: "class-utils@npm:0.3.6" + dependencies: + arr-union: "npm:^3.1.0" + define-property: "npm:^0.2.5" + isobject: "npm:^3.0.0" + static-extend: "npm:^0.1.1" + checksum: 10c0/d44f4afc7a3e48dba4c2d3fada5f781a1adeeff371b875c3b578bc33815c6c29d5d06483c2abfd43a32d35b104b27b67bfa39c2e8a422fa858068bd756cfbd42 + languageName: node + linkType: hard + +"clean-css@npm:^5.2.2": + version: 5.3.3 + resolution: "clean-css@npm:5.3.3" + dependencies: + source-map: "npm:~0.6.0" + checksum: 10c0/381de7523e23f3762eb180e327dcc0cedafaf8cb1cd8c26b7cc1fc56e0829a92e734729c4f955394d65ed72fb62f82d8baf78af34b33b8a7d41ebad2accdd6fb + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-boxes@npm:^2.2.1": + version: 2.2.1 + resolution: "cli-boxes@npm:2.2.1" + checksum: 10c0/6111352edbb2f62dbc7bfd58f2d534de507afed7f189f13fa894ce5a48badd94b2aa502fda28f1d7dd5f1eb456e7d4033d09a76660013ef50c7f66e7a034f050 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "cli-cursor@npm:4.0.0" + dependencies: + restore-cursor: "npm:^4.0.0" + checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-table3@npm:^0.6.0": + version: 0.6.3 + resolution: "cli-table3@npm:0.6.3" + dependencies: + "@colors/colors": "npm:1.5.0" + string-width: "npm:^4.2.0" + dependenciesMeta: + "@colors/colors": + optional: true + checksum: 10c0/39e580cb346c2eaf1bd8f4ff055ae644e902b8303c164a1b8894c0dc95941f92e001db51f49649011be987e708d9fa3183ccc2289a4d376a057769664048cc0c + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + +"cli-truncate@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-truncate@npm:3.1.0" + dependencies: + slice-ansi: "npm:^5.0.0" + string-width: "npm:^5.0.0" + checksum: 10c0/a19088878409ec0e5dc2659a5166929629d93cfba6d68afc9cde2282fd4c751af5b555bf197047e31c87c574396348d011b7aa806fec29c4139ea4f7f00b324c + languageName: node + linkType: hard + +"cli-width@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-width@npm:3.0.0" + checksum: 10c0/125a62810e59a2564268c80fdff56c23159a7690c003e34aeb2e68497dccff26911998ff49c33916fcfdf71e824322cc3953e3f7b48b27267c7a062c81348a9a + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/35229b1bb48647e882104cac374c9a18e34bbf0bace0e2cf03000326b6ca3050d6b59545d91e17bfe3705f4a0e2988787aa5cde6331bf5cbbf0164732cef6492 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + languageName: node + linkType: hard + +"clone-response@npm:^1.0.2": + version: 1.0.3 + resolution: "clone-response@npm:1.0.3" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10c0/06a2b611824efb128810708baee3bd169ec9a1bf5976a5258cd7eb3f7db25f00166c6eee5961f075c7e38e194f373d4fdf86b8166ad5b9c7e82bbd2e333a6087 + languageName: node + linkType: hard + +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"code-block-writer@npm:^11.0.0": + version: 11.0.3 + resolution: "code-block-writer@npm:11.0.3" + checksum: 10c0/12fe4c02152a2b607e8913b39dcc31dcb5240f7c8933a3335d4e42a5418af409bf7ed454c80d6d8c12f9c59bb685dd88f9467874b46be62236dfbed446d03fd6 + languageName: node + linkType: hard + +"code-block-writer@npm:^12.0.0": + version: 12.0.0 + resolution: "code-block-writer@npm:12.0.0" + checksum: 10c0/ced73cdc466bff968bba9e8e32340d88420d25a229b9269f7425a10a7c2c9a12ca702dcb601b2462b96472d354f021cf66e552179fcbe30c8f7ecd0173c5fa07 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + +"collection-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "collection-visit@npm:1.0.0" + dependencies: + map-visit: "npm:^1.0.0" + object-visit: "npm:^1.0.0" + checksum: 10c0/add72a8d1c37cb90e53b1aaa2c31bf1989bfb733f0b02ce82c9fa6828c7a14358dba2e4f8e698c02f69e424aeccae1ffb39acdeaf872ade2f41369e84a2fcf8a + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: "npm:1.1.3" + checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"colord@npm:^2.9.1": + version: 2.9.3 + resolution: "colord@npm:2.9.3" + checksum: 10c0/9699e956894d8996b28c686afe8988720785f476f59335c80ce852ded76ab3ebe252703aec53d9bef54f6219aea6b960fb3d9a8300058a1d0c0d4026460cd110 + languageName: node + linkType: hard + +"colorette@npm:^2.0.10, colorette@npm:^2.0.14, colorette@npm:^2.0.16, colorette@npm:^2.0.20": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40 + languageName: node + linkType: hard + +"colors@npm:^1.4.0": + version: 1.4.0 + resolution: "colors@npm:1.4.0" + checksum: 10c0/9af357c019da3c5a098a301cf64e3799d27549d8f185d86f79af23069e4f4303110d115da98483519331f6fb71c8568d5688fa1c6523600044fd4a54e97c4efb + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 10c0/53f33d8927758a911094adadda4b2cbac111a5b377d8706700587650fd8f45b0bbe336de4b5c3fe47fd61f420a3d9bd452b6e0e6e5600a7e74d7bf0174f6efe3 + languageName: node + linkType: hard + +"commander@npm:^2.20.0": + version: 2.20.3 + resolution: "commander@npm:2.20.3" + checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288 + languageName: node + linkType: hard + +"commander@npm:^4.0.1": + version: 4.1.1 + resolution: "commander@npm:4.1.1" + checksum: 10c0/84a76c08fe6cc08c9c93f62ac573d2907d8e79138999312c92d4155bc2325d487d64d13f669b2000c9f8caf70493c1be2dac74fec3c51d5a04f8bc3ae1830bab + languageName: node + linkType: hard + +"commander@npm:^6.1.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + +"commander@npm:^7.2.0": + version: 7.2.0 + resolution: "commander@npm:7.2.0" + checksum: 10c0/8d690ff13b0356df7e0ebbe6c59b4712f754f4b724d4f473d3cc5b3fdcf978e3a5dc3078717858a2ceb50b0f84d0660a7f22a96cdc50fb877d0c9bb31593d23a + languageName: node + linkType: hard + +"commander@npm:^8.3.0": + version: 8.3.0 + resolution: "commander@npm:8.3.0" + checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060 + languageName: node + linkType: hard + +"common-path-prefix@npm:^3.0.0": + version: 3.0.0 + resolution: "common-path-prefix@npm:3.0.0" + checksum: 10c0/c4a74294e1b1570f4a8ab435285d185a03976c323caa16359053e749db4fde44e3e6586c29cd051100335e11895767cbbd27ea389108e327d62f38daf4548fdb + languageName: node + linkType: hard + +"common-tags@npm:1.8.2": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 10c0/23efe47ff0a1a7c91489271b3a1e1d2a171c12ec7f9b35b29b2fce51270124aff0ec890087e2bc2182c1cb746e232ab7561aaafe05f1e7452aea733d2bfe3f63 + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"component-emitter@npm:^1.2.1": + version: 1.3.1 + resolution: "component-emitter@npm:1.3.1" + checksum: 10c0/e4900b1b790b5e76b8d71b328da41482118c0f3523a516a41be598dc2785a07fd721098d9bf6e22d89b19f4fa4e1025160dc00317ea111633a3e4f75c2b86032 + languageName: node + linkType: hard + +"compress-commons@npm:^5.0.1": + version: 5.0.1 + resolution: "compress-commons@npm:5.0.1" + dependencies: + crc-32: "npm:^1.2.0" + crc32-stream: "npm:^5.0.0" + normalize-path: "npm:^3.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/1c604ac753b4ec643a807f3db545bf497d1e9c6f81e9132280c98d972b02bbeba087e7fb2d53f3043f9643a64a6140e9e39b94329040695d404b83a0c7f38fa2 + languageName: node + linkType: hard + +"compressible@npm:~2.0.16": + version: 2.0.18 + resolution: "compressible@npm:2.0.18" + dependencies: + mime-db: "npm:>= 1.43.0 < 2" + checksum: 10c0/8a03712bc9f5b9fe530cc5a79e164e665550d5171a64575d7dcf3e0395d7b4afa2d79ab176c61b5b596e28228b350dd07c1a2a6ead12fd81d1b6cd632af2fef7 + languageName: node + linkType: hard + +"compression@npm:^1.7.4": + version: 1.7.4 + resolution: "compression@npm:1.7.4" + dependencies: + accepts: "npm:~1.3.5" + bytes: "npm:3.0.0" + compressible: "npm:~2.0.16" + debug: "npm:2.6.9" + on-headers: "npm:~1.0.2" + safe-buffer: "npm:5.1.2" + vary: "npm:~1.1.2" + checksum: 10c0/138db836202a406d8a14156a5564fb1700632a76b6e7d1546939472895a5304f2b23c80d7a22bf44c767e87a26e070dbc342ea63bb45ee9c863354fa5556bbbc + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"concat-stream@npm:^1.5.0": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: "npm:^1.0.0" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.2.2" + typedarray: "npm:^0.0.6" + checksum: 10c0/2e9864e18282946dabbccb212c5c7cec0702745e3671679eb8291812ca7fd12023f7d8cb36493942a62f770ac96a7f90009dc5c82ad69893438371720fa92617 + languageName: node + linkType: hard + +"concurrently@npm:8.2.2": + version: 8.2.2 + resolution: "concurrently@npm:8.2.2" + dependencies: + chalk: "npm:^4.1.2" + date-fns: "npm:^2.30.0" + lodash: "npm:^4.17.21" + rxjs: "npm:^7.8.1" + shell-quote: "npm:^1.8.1" + spawn-command: "npm:0.0.2" + supports-color: "npm:^8.1.1" + tree-kill: "npm:^1.2.2" + yargs: "npm:^17.7.2" + bin: + conc: dist/bin/concurrently.js + concurrently: dist/bin/concurrently.js + checksum: 10c0/0e9683196fe9c071d944345d21d8f34aa6c0cc50c0dd897e95619f2f1c9eb4871dca851b2569da17888235b7335b4c821ca19deed35bebcd9a131ee5d247f34c + languageName: node + linkType: hard + +"configstore@npm:3.1.5": + version: 3.1.5 + resolution: "configstore@npm:3.1.5" + dependencies: + dot-prop: "npm:^4.2.1" + graceful-fs: "npm:^4.1.2" + make-dir: "npm:^1.0.0" + unique-string: "npm:^1.0.0" + write-file-atomic: "npm:^2.0.0" + xdg-basedir: "npm:^3.0.0" + checksum: 10c0/a68edffee893b1803a108c4083dee481967f7eec232f83499bc86973d93d1e2728c1ea98cb1a4c7c583bc172abbdf197888ba0b0c12640631792186aa233918b + languageName: node + linkType: hard + +"connect-history-api-fallback@npm:^2.0.0": + version: 2.0.0 + resolution: "connect-history-api-fallback@npm:2.0.0" + checksum: 10c0/90fa8b16ab76e9531646cc70b010b1dbd078153730c510d3142f6cf07479ae8a812c5a3c0e40a28528dd1681a62395d0cfdef67da9e914c4772ac85d69a3ed87 + languageName: node + linkType: hard + +"console-browserify@npm:^1.1.0": + version: 1.2.0 + resolution: "console-browserify@npm:1.2.0" + checksum: 10c0/89b99a53b7d6cee54e1e64fa6b1f7ac24b844b4019c5d39db298637e55c1f4ffa5c165457ad984864de1379df2c8e1886cbbdac85d9dbb6876a9f26c3106f226 + languageName: node + linkType: hard + +"constant-case@npm:^3.0.4": + version: 3.0.4 + resolution: "constant-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case: "npm:^2.0.2" + checksum: 10c0/91d54f18341fcc491ae66d1086642b0cc564be3e08984d7b7042f8b0a721c8115922f7f11d6a09f13ed96ff326eabae11f9d1eb0335fa9d8b6e39e4df096010e + languageName: node + linkType: hard + +"constants-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "constants-browserify@npm:1.0.0" + checksum: 10c0/ab49b1d59a433ed77c964d90d19e08b2f77213fb823da4729c0baead55e3c597f8f97ebccfdfc47bd896d43854a117d114c849a6f659d9986420e97da0f83ac5 + languageName: node + linkType: hard + +"content-disposition@npm:0.5.4, content-disposition@npm:^0.5.3": + version: 0.5.4 + resolution: "content-disposition@npm:0.5.4" + dependencies: + safe-buffer: "npm:5.2.1" + checksum: 10c0/bac0316ebfeacb8f381b38285dc691c9939bf0a78b0b7c2d5758acadad242d04783cee5337ba7d12a565a19075af1b3c11c728e1e4946de73c6ff7ce45f3f1bb + languageName: node + linkType: hard + +"content-type@npm:~1.0.4": + version: 1.0.5 + resolution: "content-type@npm:1.0.5" + checksum: 10c0/b76ebed15c000aee4678c3707e0860cb6abd4e680a598c0a26e17f0bfae723ec9cc2802f0ff1bc6e4d80603719010431d2231018373d4dde10f9ccff9dadf5af + languageName: node + linkType: hard + +"convert-source-map@npm:^1.7.0": + version: 1.9.0 + resolution: "convert-source-map@npm:1.9.0" + checksum: 10c0/281da55454bf8126cbc6625385928c43479f2060984180c42f3a86c8b8c12720a24eac260624a7d1e090004028d2dee78602330578ceec1a08e27cb8bb0a8a5b + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"cookie-signature@npm:1.0.6": + version: 1.0.6 + resolution: "cookie-signature@npm:1.0.6" + checksum: 10c0/b36fd0d4e3fef8456915fcf7742e58fbfcc12a17a018e0eb9501c9d5ef6893b596466f03b0564b81af29ff2538fd0aa4b9d54fe5ccbfb4c90ea50ad29fe2d221 + languageName: node + linkType: hard + +"cookie@npm:0.5.0, cookie@npm:^0.5.0": + version: 0.5.0 + resolution: "cookie@npm:0.5.0" + checksum: 10c0/c01ca3ef8d7b8187bae434434582288681273b5a9ed27521d4d7f9f7928fe0c920df0decd9f9d3bbd2d14ac432b8c8cf42b98b3bdd5bfe0e6edddeebebe8b61d + languageName: node + linkType: hard + +"cookie@npm:^0.4.2": + version: 0.4.2 + resolution: "cookie@npm:0.4.2" + checksum: 10c0/beab41fbd7c20175e3a2799ba948c1dcc71ef69f23fe14eeeff59fc09f50c517b0f77098db87dbb4c55da802f9d86ee86cdc1cd3efd87760341551838d53fca2 + languageName: node + linkType: hard + +"copy-concurrently@npm:^1.0.0": + version: 1.0.5 + resolution: "copy-concurrently@npm:1.0.5" + dependencies: + aproba: "npm:^1.1.1" + fs-write-stream-atomic: "npm:^1.0.8" + iferr: "npm:^0.1.5" + mkdirp: "npm:^0.5.1" + rimraf: "npm:^2.5.4" + run-queue: "npm:^1.0.0" + checksum: 10c0/c2ce213cb27ee3df584d16eb6c9bfe99cfb531585007533c3e4c752521b4fbf0b2f7f90807d79c496683330808ecd9fdbd9ab9ddfa0913150b7f5097423348ce + languageName: node + linkType: hard + +"copy-descriptor@npm:^0.1.0": + version: 0.1.1 + resolution: "copy-descriptor@npm:0.1.1" + checksum: 10c0/161f6760b7348c941007a83df180588fe2f1283e0867cc027182734e0f26134e6cc02de09aa24a95dc267b2e2025b55659eef76c8019df27bc2d883033690181 + languageName: node + linkType: hard + +"copy-webpack-plugin@npm:11.0.0": + version: 11.0.0 + resolution: "copy-webpack-plugin@npm:11.0.0" + dependencies: + fast-glob: "npm:^3.2.11" + glob-parent: "npm:^6.0.1" + globby: "npm:^13.1.1" + normalize-path: "npm:^3.0.0" + schema-utils: "npm:^4.0.0" + serialize-javascript: "npm:^6.0.0" + peerDependencies: + webpack: ^5.1.0 + checksum: 10c0/a667dd226b26f148584a35fb705f5af926d872584912cf9fd203c14f2b3a68f473a1f5cf768ec1dd5da23820823b850e5d50458b685c468e4a224b25c12a15b4 + languageName: node + linkType: hard + +"core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.34.0": + version: 3.36.0 + resolution: "core-js-compat@npm:3.36.0" + dependencies: + browserslist: "npm:^4.22.3" + checksum: 10c0/5ce2ad0ece8379883c01958e196575abc015692fc0394b8917f132b6b32e5c2bfb2612902c3f98f270cfa2d9d6522c28d36665038f3726796f1f4b436e4f863e + languageName: node + linkType: hard + +"core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": + version: 3.36.0 + resolution: "core-js-pure@npm:3.36.0" + checksum: 10c0/1c5ecb37451bcebaa449e36285d27c4c79d5ff24b8bfd44491ce661cfc12b5c56471c847d306d21a56894338d00abea4993a6f8e07c71d4e887d1f71e410d22e + languageName: node + linkType: hard + +"core-js@npm:3.35.1": + version: 3.35.1 + resolution: "core-js@npm:3.35.1" + checksum: 10c0/ebc8e22c36d13bcf2140cbc1d8ad65d1b08192bff4c43ade70c72eac103cb4dcfbc521f2b1ad1c74881b0a4353e64986537893ae4f07888e49228340efa13ae6 + languageName: node + linkType: hard + +"core-util-is@npm:~1.0.0": + version: 1.0.3 + resolution: "core-util-is@npm:1.0.3" + checksum: 10c0/90a0e40abbddfd7618f8ccd63a74d88deea94e77d0e8dbbea059fa7ebebb8fbb4e2909667fe26f3a467073de1a542ebe6ae4c73a73745ac5833786759cd906c9 + languageName: node + linkType: hard + +"cosmiconfig@npm:8.0.0": + version: 8.0.0 + resolution: "cosmiconfig@npm:8.0.0" + dependencies: + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + checksum: 10c0/cea301202bb68373f9c8ccc77a6002aab1032f327dd1458e5932ee1a2f48919c881074d702cece91f18275673817872a0d3d00eb46f30a33c8f2009dbbac0e5c + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.1.0 + resolution: "cosmiconfig@npm:7.1.0" + dependencies: + "@types/parse-json": "npm:^4.0.0" + import-fresh: "npm:^3.2.1" + parse-json: "npm:^5.0.0" + path-type: "npm:^4.0.0" + yaml: "npm:^1.10.0" + checksum: 10c0/b923ff6af581638128e5f074a5450ba12c0300b71302398ea38dbeabd33bbcaa0245ca9adbedfcf284a07da50f99ede5658c80bb3e39e2ce770a99d28a21ef03 + languageName: node + linkType: hard + +"crc-32@npm:^1.2.0": + version: 1.2.2 + resolution: "crc-32@npm:1.2.2" + bin: + crc32: bin/crc32.njs + checksum: 10c0/11dcf4a2e77ee793835d49f2c028838eae58b44f50d1ff08394a610bfd817523f105d6ae4d9b5bef0aad45510f633eb23c903e9902e4409bed1ce70cb82b9bf0 + languageName: node + linkType: hard + +"crc32-stream@npm:^5.0.0": + version: 5.0.0 + resolution: "crc32-stream@npm:5.0.0" + dependencies: + crc-32: "npm:^1.2.0" + readable-stream: "npm:^3.4.0" + checksum: 10c0/bd6e6d49b76fd562eef3a4b7b64b1e551fb5dfca0a3b54fb7e59765c57468295b60755f85d3450fd61eee01dcca0974600157717cad8f356d513c28bac726a41 + languageName: node + linkType: hard + +"create-ecdh@npm:^4.0.0": + version: 4.0.4 + resolution: "create-ecdh@npm:4.0.4" + dependencies: + bn.js: "npm:^4.1.0" + elliptic: "npm:^6.5.3" + checksum: 10c0/77b11a51360fec9c3bce7a76288fc0deba4b9c838d5fb354b3e40c59194d23d66efe6355fd4b81df7580da0661e1334a235a2a5c040b7569ba97db428d466e7f + languageName: node + linkType: hard + +"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": + version: 1.2.0 + resolution: "create-hash@npm:1.2.0" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + md5.js: "npm:^1.3.4" + ripemd160: "npm:^2.0.1" + sha.js: "npm:^2.4.0" + checksum: 10c0/d402e60e65e70e5083cb57af96d89567954d0669e90550d7cec58b56d49c4b193d35c43cec8338bc72358198b8cbf2f0cac14775b651e99238e1cf411490f915 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": + version: 1.1.7 + resolution: "create-hmac@npm:1.1.7" + dependencies: + cipher-base: "npm:^1.0.3" + create-hash: "npm:^1.1.0" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/24332bab51011652a9a0a6d160eed1e8caa091b802335324ae056b0dcb5acbc9fcf173cf10d128eba8548c3ce98dfa4eadaa01bd02f44a34414baee26b651835 + languageName: node + linkType: hard + +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + exit: "npm:^0.1.2" + graceful-fs: "npm:^4.2.9" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + prompts: "npm:^2.0.1" + bin: + create-jest: bin/create-jest.js + checksum: 10c0/e7e54c280692470d3398f62a6238fd396327e01c6a0757002833f06d00afc62dd7bfe04ff2b9cd145264460e6b4d1eb8386f2925b7e567f97939843b7b0e812f + languageName: node + linkType: hard + +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10c0/157cbc59b2430ae9a90034a5f3a1b398b6738bf510f713edc4d4e45e169bc514d3d99dd34d8d01ca7ae7830b5b8b537e46ae8f3c8f932371b0875c0151d7ec91 + languageName: node + linkType: hard + +"cross-env@npm:7.0.3": + version: 7.0.3 + resolution: "cross-env@npm:7.0.3" + dependencies: + cross-spawn: "npm:^7.0.1" + bin: + cross-env: src/bin/cross-env.js + cross-env-shell: src/bin/cross-env-shell.js + checksum: 10c0/f3765c25746c69fcca369655c442c6c886e54ccf3ab8c16847d5ad0e91e2f337d36eedc6599c1227904bf2a228d721e690324446876115bc8e7b32a866735ecf + languageName: node + linkType: hard + +"cross-fetch@npm:^3.1.5": + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" + dependencies: + node-fetch: "npm:^2.6.12" + checksum: 10c0/4c5e022ffe6abdf380faa6e2373c0c4ed7ef75e105c95c972b6f627c3f083170b6886f19fb488a7fa93971f4f69dcc890f122b0d97f0bf5f41ca1d9a8f58c8af + languageName: node + linkType: hard + +"cross-inspect@npm:1.0.0": + version: 1.0.0 + resolution: "cross-inspect@npm:1.0.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/53530865c357c69a5a0543e2f2c61d3d46c9c316a19169372f5094cfb0a7c7e674f2daf2d5253a6731dfd9a8538aa4a4e13c6b4613b6f72b48bb0c41d2015ff4 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/5738c312387081c98d69c98e105b6327b069197f864a60593245d64c8089c8a0a744e16349281210d56835bb9274130d825a78b2ad6853ca13cfbeffc0c31750 + languageName: node + linkType: hard + +"crypto-browserify@npm:^3.11.0": + version: 3.12.0 + resolution: "crypto-browserify@npm:3.12.0" + dependencies: + browserify-cipher: "npm:^1.0.0" + browserify-sign: "npm:^4.0.0" + create-ecdh: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + create-hmac: "npm:^1.1.0" + diffie-hellman: "npm:^5.0.0" + inherits: "npm:^2.0.1" + pbkdf2: "npm:^3.0.3" + public-encrypt: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + randomfill: "npm:^1.0.3" + checksum: 10c0/0c20198886576050a6aa5ba6ae42f2b82778bfba1753d80c5e7a090836890dc372bdc780986b2568b4fb8ed2a91c958e61db1f0b6b1cc96af4bd03ffc298ba92 + languageName: node + linkType: hard + +"crypto-random-string@npm:^1.0.0": + version: 1.0.0 + resolution: "crypto-random-string@npm:1.0.0" + checksum: 10c0/0cb4dbbb895656919d1de11ba43829a3527edddb85a9c49c9d4c4eb783d3b03fc9f371cefee62c87082fd8758db2798a52a9cad48a7381826190d3c2cf858e4a + languageName: node + linkType: hard + +"css-declaration-sorter@npm:^7.1.1": + version: 7.1.1 + resolution: "css-declaration-sorter@npm:7.1.1" + peerDependencies: + postcss: ^8.0.9 + checksum: 10c0/bea446e441bafde21c3c7b3f7639559311da12eea140db7ee3c61e4f41df455b7b098df107f99bc0cca32a5020841cc94bf8a2d5efb1b383e51f9de478c4816e + languageName: node + linkType: hard + +"css-loader@npm:6.8.1": + version: 6.8.1 + resolution: "css-loader@npm:6.8.1" + dependencies: + icss-utils: "npm:^5.1.0" + postcss: "npm:^8.4.21" + postcss-modules-extract-imports: "npm:^3.0.0" + postcss-modules-local-by-default: "npm:^4.0.3" + postcss-modules-scope: "npm:^3.0.0" + postcss-modules-values: "npm:^4.0.0" + postcss-value-parser: "npm:^4.2.0" + semver: "npm:^7.3.8" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/a6e23de4ec1d2832f10b8ca3cfec6b6097a97ca3c73f64338ae5cd110ac270f1b218ff0273d39f677a7a561f1a9d9b0d332274664d0991bcfafaae162c2669c4 + languageName: node + linkType: hard + +"css-minimizer-webpack-plugin@npm:5.0.1": + version: 5.0.1 + resolution: "css-minimizer-webpack-plugin@npm:5.0.1" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.18" + cssnano: "npm:^6.0.1" + jest-worker: "npm:^29.4.3" + postcss: "npm:^8.4.24" + schema-utils: "npm:^4.0.1" + serialize-javascript: "npm:^6.0.1" + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + "@parcel/css": + optional: true + "@swc/css": + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true + lightningcss: + optional: true + checksum: 10c0/1792259e18f7c5ee25b6bbf60b38b64201747add83d1f751c8c654159b46ebacd0d1103d35f17d97197033e21e02d2ba4a4e9aa14c9c0d067b7c7653c721814e + languageName: node + linkType: hard + +"css-select@npm:^4.1.3": + version: 4.3.0 + resolution: "css-select@npm:4.3.0" + dependencies: + boolbase: "npm:^1.0.0" + css-what: "npm:^6.0.1" + domhandler: "npm:^4.3.1" + domutils: "npm:^2.8.0" + nth-check: "npm:^2.0.1" + checksum: 10c0/a489d8e5628e61063d5a8fe0fa1cc7ae2478cb334a388a354e91cf2908154be97eac9fa7ed4dffe87a3e06cf6fcaa6016553115335c4fd3377e13dac7bd5a8e1 + languageName: node + linkType: hard + +"css-select@npm:^5.1.0": + version: 5.1.0 + resolution: "css-select@npm:5.1.0" + dependencies: + boolbase: "npm:^1.0.0" + css-what: "npm:^6.1.0" + domhandler: "npm:^5.0.2" + domutils: "npm:^3.0.1" + nth-check: "npm:^2.0.1" + checksum: 10c0/551c60dba5b54054741032c1793b5734f6ba45e23ae9e82761a3c0ed1acbb8cfedfa443aaba3a3c1a54cac12b456d2012a09d2cd5f0e82e430454c1b9d84d500 + languageName: node + linkType: hard + +"css-tree@npm:^2.3.1": + version: 2.3.1 + resolution: "css-tree@npm:2.3.1" + dependencies: + mdn-data: "npm:2.0.30" + source-map-js: "npm:^1.0.1" + checksum: 10c0/6f8c1a11d5e9b14bf02d10717fc0351b66ba12594166f65abfbd8eb8b5b490dd367f5c7721db241a3c792d935fc6751fbc09f7e1598d421477ad9fadc30f4f24 + languageName: node + linkType: hard + +"css-tree@npm:~2.2.0": + version: 2.2.1 + resolution: "css-tree@npm:2.2.1" + dependencies: + mdn-data: "npm:2.0.28" + source-map-js: "npm:^1.0.1" + checksum: 10c0/47e87b0f02f8ac22f57eceb65c58011dd142d2158128882a0bf963cf2eabb81a4ebbc2e3790c8289be7919fa8b83750c7b69272bd66772c708143b772ba3c186 + languageName: node + linkType: hard + +"css-what@npm:^6.0.1, css-what@npm:^6.1.0": + version: 6.1.0 + resolution: "css-what@npm:6.1.0" + checksum: 10c0/a09f5a6b14ba8dcf57ae9a59474722e80f20406c53a61e9aedb0eedc693b135113ffe2983f4efc4b5065ae639442e9ae88df24941ef159c218b231011d733746 + languageName: node + linkType: hard + +"css.escape@npm:^1.5.1": + version: 1.5.1 + resolution: "css.escape@npm:1.5.1" + checksum: 10c0/5e09035e5bf6c2c422b40c6df2eb1529657a17df37fda5d0433d722609527ab98090baf25b13970ca754079a0f3161dd3dfc0e743563ded8cfa0749d861c1525 + languageName: node + linkType: hard + +"cssesc@npm:^3.0.0": + version: 3.0.0 + resolution: "cssesc@npm:3.0.0" + bin: + cssesc: bin/cssesc + checksum: 10c0/6bcfd898662671be15ae7827120472c5667afb3d7429f1f917737f3bf84c4176003228131b643ae74543f17a394446247df090c597bb9a728cce298606ed0aa7 + languageName: node + linkType: hard + +"cssnano-preset-default@npm:^6.0.3": + version: 6.0.3 + resolution: "cssnano-preset-default@npm:6.0.3" + dependencies: + css-declaration-sorter: "npm:^7.1.1" + cssnano-utils: "npm:^4.0.1" + postcss-calc: "npm:^9.0.1" + postcss-colormin: "npm:^6.0.2" + postcss-convert-values: "npm:^6.0.2" + postcss-discard-comments: "npm:^6.0.1" + postcss-discard-duplicates: "npm:^6.0.1" + postcss-discard-empty: "npm:^6.0.1" + postcss-discard-overridden: "npm:^6.0.1" + postcss-merge-longhand: "npm:^6.0.2" + postcss-merge-rules: "npm:^6.0.3" + postcss-minify-font-values: "npm:^6.0.1" + postcss-minify-gradients: "npm:^6.0.1" + postcss-minify-params: "npm:^6.0.2" + postcss-minify-selectors: "npm:^6.0.2" + postcss-normalize-charset: "npm:^6.0.1" + postcss-normalize-display-values: "npm:^6.0.1" + postcss-normalize-positions: "npm:^6.0.1" + postcss-normalize-repeat-style: "npm:^6.0.1" + postcss-normalize-string: "npm:^6.0.1" + postcss-normalize-timing-functions: "npm:^6.0.1" + postcss-normalize-unicode: "npm:^6.0.2" + postcss-normalize-url: "npm:^6.0.1" + postcss-normalize-whitespace: "npm:^6.0.1" + postcss-ordered-values: "npm:^6.0.1" + postcss-reduce-initial: "npm:^6.0.2" + postcss-reduce-transforms: "npm:^6.0.1" + postcss-svgo: "npm:^6.0.2" + postcss-unique-selectors: "npm:^6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d100a1f8ab71adbb6df85e00f4a9e5d04ac06fc50343157eef853aded3f75dd0489dd845a5b2fb43ca701bd88c39c5aa88673f842bc1f94f4318c7b38ced1963 + languageName: node + linkType: hard + +"cssnano-utils@npm:^4.0.1": + version: 4.0.1 + resolution: "cssnano-utils@npm:4.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/20513a393402f283c85c450ece43d1a6a06a9906b524481043ac203a86888a4ca5cbef878c615a58fdd82a9e870ce62c6f3fea9f51814034a084d8980e17cf96 + languageName: node + linkType: hard + +"cssnano@npm:^6.0.1": + version: 6.0.3 + resolution: "cssnano@npm:6.0.3" + dependencies: + cssnano-preset-default: "npm:^6.0.3" + lilconfig: "npm:^3.0.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d1669eb987fd96159bae262ef2f76c1a64fffefe8fa593918a6bda377977798b60fb4a6a871a9b9a9deb11258130ee254fdb8c3144769b3060ad9f2a95a4ed0a + languageName: node + linkType: hard + +"csso@npm:^5.0.5": + version: 5.0.5 + resolution: "csso@npm:5.0.5" + dependencies: + css-tree: "npm:~2.2.0" + checksum: 10c0/ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b + languageName: node + linkType: hard + +"cssom@npm:^0.5.0": + version: 0.5.0 + resolution: "cssom@npm:0.5.0" + checksum: 10c0/8c4121c243baf0678c65dcac29b201ff0067dfecf978de9d5c83b2ff127a8fdefd2bfd54577f5ad8c80ed7d2c8b489ae01c82023545d010c4ecb87683fb403dd + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: 10c0/d74017b209440822f9e24d8782d6d2e808a8fdd58fa626a783337222fe1c87a518ba944d4c88499031b4786e68772c99dfae616638d71906fe9f203aeaf14411 + languageName: node + linkType: hard + +"cssstyle@npm:^2.3.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: "npm:~0.3.6" + checksum: 10c0/863400da2a458f73272b9a55ba7ff05de40d850f22eb4f37311abebd7eff801cf1cd2fb04c4c92b8c3daed83fe766e52e4112afb7bc88d86c63a9c2256a7d178 + languageName: node + linkType: hard + +"csstype@npm:^3.0.2": + version: 3.1.3 + resolution: "csstype@npm:3.1.3" + checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 + languageName: node + linkType: hard + +"cyclist@npm:^1.0.1": + version: 1.0.2 + resolution: "cyclist@npm:1.0.2" + checksum: 10c0/163e2f7207180ccf2bb5a6ca8a7360469c13fad631509ef96de02397266b3a42089e2b2b51b97d3d8fdc4709d2fbe651c309670e5cc28b0ae445b1e5a34a98e2 + languageName: node + linkType: hard + +"damerau-levenshtein@npm:^1.0.8": + version: 1.0.8 + resolution: "damerau-levenshtein@npm:1.0.8" + checksum: 10c0/4c2647e0f42acaee7d068756c1d396e296c3556f9c8314bac1ac63ffb236217ef0e7e58602b18bb2173deec7ec8e0cac8e27cccf8f5526666b4ff11a13ad54a3 + languageName: node + linkType: hard + +"data-uri-to-buffer@npm:^2.0.0": + version: 2.0.2 + resolution: "data-uri-to-buffer@npm:2.0.2" + checksum: 10c0/341b6191ed65fa453e97a6d44db06082121ebc2ef3e6e096dfb6a1ebbc75e8be39d4199a5b4dba0f0efc43f2a3b2bcc276d85cf1407eba880eb09ebf17c3c31e + languageName: node + linkType: hard + +"data-urls@npm:^3.0.2": + version: 3.0.2 + resolution: "data-urls@npm:3.0.2" + dependencies: + abab: "npm:^2.0.6" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + checksum: 10c0/051c3aaaf3e961904f136aab095fcf6dff4db23a7fc759dd8ba7b3e6ba03fc07ef608086caad8ab910d864bd3b5e57d0d2f544725653d77c96a2c971567045f4 + languageName: node + linkType: hard + +"dataloader@npm:^2.2.2": + version: 2.2.2 + resolution: "dataloader@npm:2.2.2" + checksum: 10c0/125ec69f821478cf7c6b4360095db6cab939fe57876a0d2060c428091a8deee7152345189923b71a6afa694aaec463779f34b585317164016fd6f54f52cd94ba + languageName: node + linkType: hard + +"date-fns@npm:^2.30.0": + version: 2.30.0 + resolution: "date-fns@npm:2.30.0" + dependencies: + "@babel/runtime": "npm:^7.21.0" + checksum: 10c0/e4b521fbf22bc8c3db332bbfb7b094fd3e7627de0259a9d17c7551e2d2702608a7307a449206065916538e384f37b181565447ce2637ae09828427aed9cb5581 + languageName: node + linkType: hard + +"debounce@npm:^1.2.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 10c0/6c9320aa0973fc42050814621a7a8a78146c1975799b5b3cc1becf1f77ba9a5aa583987884230da0842a03f385def452fad5d60db97c3d1c8b824e38a8edf500 + languageName: node + linkType: hard + +"debug@npm:2.6.9, debug@npm:^2.2.0, debug@npm:^2.3.3": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: "npm:2.0.0" + checksum: 10c0/121908fb839f7801180b69a7e218a40b5a0b718813b886b7d6bdb82001b931c938e2941d1e4450f33a1b1df1da653f5f7a0440c197f29fbf8a6e9d45ff6ef589 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": + version: 4.3.4 + resolution: "debug@npm:4.3.4" + dependencies: + ms: "npm:2.1.2" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/cedbec45298dd5c501d01b92b119cd3faebe5438c3917ff11ae1bff86a6c722930ac9c8659792824013168ba6db7c4668225d845c633fbdafbbf902a6389f736 + languageName: node + linkType: hard + +"debug@npm:^3.2.7": + version: 3.2.7 + resolution: "debug@npm:3.2.7" + dependencies: + ms: "npm:^2.1.1" + checksum: 10c0/37d96ae42cbc71c14844d2ae3ba55adf462ec89fd3a999459dec3833944cd999af6007ff29c780f1c61153bcaaf2c842d1e4ce1ec621e4fc4923244942e4a02a + languageName: node + linkType: hard + +"decamelize@npm:5.0.1": + version: 5.0.1 + resolution: "decamelize@npm:5.0.1" + checksum: 10c0/3da71022bc1e85487810fa0833138effb599fa331ca21e179650e93a765d0c4dabeb1ecdd6ad1474fa0bacd2457953c63ea335afb6e53b35f2b4bf779514e2a3 + languageName: node + linkType: hard + +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 10c0/85c39fe8fbf0482d4a1e224ef0119db5c1897f8503bcef8b826adff7a1b11414972f6fef2d7dec2ee0b4be3863cf64ac1439137ae9e6af23a3d8dcbe26a5b4b2 + languageName: node + linkType: hard + +"decamelize@npm:^2.0.0": + version: 2.0.0 + resolution: "decamelize@npm:2.0.0" + dependencies: + xregexp: "npm:4.0.0" + checksum: 10c0/7908c37fa2e20022cfbf425c03aebdc8dee3c57b6c64135bbf23007f40528dd2463b4fb28755ee5dec7be3aca4b1d136de962bea6a886518b27c558b0f3a8bb5 + languageName: node + linkType: hard + +"decimal.js@npm:^10.4.2": + version: 10.4.3 + resolution: "decimal.js@npm:10.4.3" + checksum: 10c0/6d60206689ff0911f0ce968d40f163304a6c1bc739927758e6efc7921cfa630130388966f16bf6ef6b838cb33679fbe8e7a78a2f3c478afce841fd55ac8fb8ee + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 10c0/1f4fa54eb740414a816b3f6c24818fbfcabd74ac478391e9f4e2282c994127db02010ce804f3d08e38255493cfe68608b3f5c8e09fd6efc4ae46c807691f7a31 + languageName: node + linkType: hard + +"decompress-response@npm:^3.3.0": + version: 3.3.0 + resolution: "decompress-response@npm:3.3.0" + dependencies: + mimic-response: "npm:^1.0.0" + checksum: 10c0/5ffaf1d744277fd51c68c94ddc3081cd011b10b7de06637cccc6ecba137d45304a09ba1a776dee1c47fccc60b4a056c4bc74468eeea798ff1f1fca0024b45c9d + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/f8612cd5b00aab58b18bb95572dca08dc2d49720bfa7201a444c3dae430291e8a06d4928614a6ec8764d713927f44bce9c990d3b8238fca2f430990ddc17c070 + languageName: node + linkType: hard + +"deep-equal@npm:^2.0.5": + version: 2.2.3 + resolution: "deep-equal@npm:2.2.3" + dependencies: + array-buffer-byte-length: "npm:^1.0.0" + call-bind: "npm:^1.0.5" + es-get-iterator: "npm:^1.1.3" + get-intrinsic: "npm:^1.2.2" + is-arguments: "npm:^1.1.1" + is-array-buffer: "npm:^3.0.2" + is-date-object: "npm:^1.0.5" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + isarray: "npm:^2.0.5" + object-is: "npm:^1.1.5" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.4" + regexp.prototype.flags: "npm:^1.5.1" + side-channel: "npm:^1.0.4" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.13" + checksum: 10c0/a48244f90fa989f63ff5ef0cc6de1e4916b48ea0220a9c89a378561960814794a5800c600254482a2c8fd2e49d6c2e196131dc983976adb024c94a42dfe4949f + languageName: node + linkType: hard + +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10c0/1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:4.3.1, deepmerge@npm:^4.2.2": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"default-gateway@npm:^6.0.3": + version: 6.0.3 + resolution: "default-gateway@npm:6.0.3" + dependencies: + execa: "npm:^5.0.0" + checksum: 10c0/5184f9e6e105d24fb44ade9e8741efa54bb75e84625c1ea78c4ef8b81dff09ca52d6dbdd1185cf0dc655bb6b282a64fffaf7ed2dd561b8d9ad6f322b1f039aba + languageName: node + linkType: hard + +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + +"defer-to-connect@npm:^1.0.1": + version: 1.1.3 + resolution: "defer-to-connect@npm:1.1.3" + checksum: 10c0/9feb161bd7d21836fdff31eba79c2b11b7aaf844be58faf727121f8b0d9c2e82b494560df0903f41b52dd75027dc7c9455c11b3739f3202b28ca92b56c8f960e + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-lazy-prop@npm:^2.0.0": + version: 2.0.0 + resolution: "define-lazy-prop@npm:2.0.0" + checksum: 10c0/db6c63864a9d3b7dc9def55d52764968a5af296de87c1b2cc71d8be8142e445208071953649e0386a8cc37cfcf9a2067a47207f1eb9ff250c2a269658fdae422 + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"define-property@npm:^0.2.5": + version: 0.2.5 + resolution: "define-property@npm:0.2.5" + dependencies: + is-descriptor: "npm:^0.1.0" + checksum: 10c0/9986915c0893818dedc9ca23eaf41370667762fd83ad8aa4bf026a28563120dbaacebdfbfbf2b18d3b929026b9c6ee972df1dbf22de8fafb5fe6ef18361e4750 + languageName: node + linkType: hard + +"define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "define-property@npm:1.0.0" + dependencies: + is-descriptor: "npm:^1.0.0" + checksum: 10c0/d7cf09db10d55df305f541694ed51dafc776ad9bb8a24428899c9f2d36b11ab38dce5527a81458d1b5e7c389f8cbe803b4abad6e91a0037a329d153b84fc975e + languageName: node + linkType: hard + +"define-property@npm:^2.0.2": + version: 2.0.2 + resolution: "define-property@npm:2.0.2" + dependencies: + is-descriptor: "npm:^1.0.2" + isobject: "npm:^3.0.1" + checksum: 10c0/f91a08ad008fa764172a2c072adc7312f10217ade89ddaea23018321c6d71b2b68b8c229141ed2064179404e345c537f1a2457c379824813695b51a6ad3e4969 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"depd@npm:2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: 10c0/58bd06ec20e19529b06f7ad07ddab60e504d9e0faca4bd23079fac2d279c3594334d736508dc350e06e510aba5e22e4594483b3a6562ce7c17dd797f4cc4ad2c + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 + resolution: "depd@npm:1.1.2" + checksum: 10c0/acb24aaf936ef9a227b6be6d495f0d2eb20108a9a6ad40585c5bda1a897031512fef6484e4fdbb80bd249fdaa82841fa1039f416ece03188e677ba11bcfda249 + languageName: node + linkType: hard + +"dependency-graph@npm:^0.11.0": + version: 0.11.0 + resolution: "dependency-graph@npm:0.11.0" + checksum: 10c0/9e6968d1534fdb502f7f3a25a3819b499f9d60f8389193950ed0b4d1618f1341b36b5d039f2cee256cfe10c9e8198ace16b271e370df06a93fac206e81602e7c + languageName: node + linkType: hard + +"dequal@npm:^2.0.3": + version: 2.0.3 + resolution: "dequal@npm:2.0.3" + checksum: 10c0/f98860cdf58b64991ae10205137c0e97d384c3a4edc7f807603887b7c4b850af1224a33d88012009f150861cbee4fa2d322c4cc04b9313bee312e47f6ecaa888 + languageName: node + linkType: hard + +"des.js@npm:^1.0.0": + version: 1.1.0 + resolution: "des.js@npm:1.1.0" + dependencies: + inherits: "npm:^2.0.1" + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/671354943ad67493e49eb4c555480ab153edd7cee3a51c658082fcde539d2690ed2a4a0b5d1f401f9cde822edf3939a6afb2585f32c091f2d3a1b1665cd45236 + languageName: node + linkType: hard + +"destroy@npm:1.2.0": + version: 1.2.0 + resolution: "destroy@npm:1.2.0" + checksum: 10c0/bd7633942f57418f5a3b80d5cb53898127bcf53e24cdf5d5f4396be471417671f0fee48a4ebe9a1e9defbde2a31280011af58a57e090ff822f589b443ed4e643 + languageName: node + linkType: hard + +"detect-indent@npm:^6.0.0": + version: 6.1.0 + resolution: "detect-indent@npm:6.1.0" + checksum: 10c0/dd83cdeda9af219cf77f5e9a0dc31d828c045337386cfb55ce04fad94ba872ee7957336834154f7647b89b899c3c7acc977c57a79b7c776b506240993f97acc7 + languageName: node + linkType: hard + +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: 10c0/4da0deae9f69e13bc37a0902d78bf7169480004b1fed3c19722d56cff578d16f0e11633b7fbf5fb6249181236c72e90024cbd68f0b9558ae06e281f47326d50d + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"detect-node@npm:^2.0.4": + version: 2.1.0 + resolution: "detect-node@npm:2.1.0" + checksum: 10c0/f039f601790f2e9d4654e499913259a798b1f5246ae24f86ab5e8bd4aaf3bce50484234c494f11fb00aecb0c6e2733aa7b1cf3f530865640b65fbbd65b2c4e09 + languageName: node + linkType: hard + +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: 10c0/32e27ac7dbffdf2fb0eb5a84efd98a9ad084fbabd5ac9abb8757c6770d5320d2acd172830b28c4add29bb873d59420601dfc805ac4064330ce59b1adfd0593b2 + languageName: node + linkType: hard + +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10c0/81b91f9d39c4eaca068eb0c1eb0e4afbdc5bb2941d197f513dd596b820b956fef43485876226d65d497bebc15666aa2aa82c679e84f65d5f2bfbf14ee46e32c1 + languageName: node + linkType: hard + +"diffie-hellman@npm:^5.0.0": + version: 5.0.3 + resolution: "diffie-hellman@npm:5.0.3" + dependencies: + bn.js: "npm:^4.1.0" + miller-rabin: "npm:^4.0.0" + randombytes: "npm:^2.0.0" + checksum: 10c0/ce53ccafa9ca544b7fc29b08a626e23a9b6562efc2a98559a0c97b4718937cebaa9b5d7d0a05032cc9c1435e9b3c1532b9e9bf2e0ede868525922807ad6e1ecf + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: "npm:^4.0.0" + checksum: 10c0/dcac00920a4d503e38bb64001acb19df4efc14536ada475725e12f52c16777afdee4db827f55f13a908ee7efc0cb282e2e3dbaeeb98c0993dd93d1802d3bf00c + languageName: node + linkType: hard + +"dns-packet@npm:^5.2.2": + version: 5.6.1 + resolution: "dns-packet@npm:5.6.1" + dependencies: + "@leichtgewicht/ip-codec": "npm:^2.0.1" + checksum: 10c0/8948d3d03063fb68e04a1e386875f8c3bcc398fc375f535f2b438fad8f41bf1afa6f5e70893ba44f4ae884c089247e0a31045722fa6ff0f01d228da103f1811d + languageName: node + linkType: hard + +"doctrine@npm:^2.1.0": + version: 2.1.0 + resolution: "doctrine@npm:2.1.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/b6416aaff1f380bf56c3b552f31fdf7a69b45689368deca72d28636f41c16bb28ec3ebc40ace97db4c1afc0ceeb8120e8492fe0046841c94c2933b2e30a7d5ac + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: "npm:^2.0.2" + checksum: 10c0/c96bdccabe9d62ab6fea9399fdff04a66e6563c1d6fb3a3a063e8d53c3bb136ba63e84250bbf63d00086a769ad53aef92d2bd483f03f837fc97b71cbee6b2520 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.5.9": + version: 0.5.16 + resolution: "dom-accessibility-api@npm:0.5.16" + checksum: 10c0/b2c2eda4fae568977cdac27a9f0c001edf4f95a6a6191dfa611e3721db2478d1badc01db5bb4fa8a848aeee13e442a6c2a4386d65ec65a1436f24715a2f8d053 + languageName: node + linkType: hard + +"dom-accessibility-api@npm:^0.6.3": + version: 0.6.3 + resolution: "dom-accessibility-api@npm:0.6.3" + checksum: 10c0/10bee5aa514b2a9a37c87cd81268db607a2e933a050074abc2f6fa3da9080ebed206a320cbc123567f2c3087d22292853bdfdceaffdd4334ffe2af9510b29360 + languageName: node + linkType: hard + +"dom-converter@npm:^0.2.0": + version: 0.2.0 + resolution: "dom-converter@npm:0.2.0" + dependencies: + utila: "npm:~0.4" + checksum: 10c0/e96aa63bd8c6ee3cd9ce19c3aecfc2c42e50a460e8087114794d4f5ecf3a4f052b34ea3bf2d73b5d80b4da619073b49905e6d7d788ceb7814ca4c29be5354a11 + languageName: node + linkType: hard + +"dom-serializer@npm:^1.0.1": + version: 1.4.1 + resolution: "dom-serializer@npm:1.4.1" + dependencies: + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.2.0" + entities: "npm:^2.0.0" + checksum: 10c0/67d775fa1ea3de52035c98168ddcd59418356943b5eccb80e3c8b3da53adb8e37edb2cc2f885802b7b1765bf5022aec21dfc32910d7f9e6de4c3148f095ab5e0 + languageName: node + linkType: hard + +"dom-serializer@npm:^2.0.0": + version: 2.0.0 + resolution: "dom-serializer@npm:2.0.0" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.2" + entities: "npm:^4.2.0" + checksum: 10c0/d5ae2b7110ca3746b3643d3ef60ef823f5f078667baf530cec096433f1627ec4b6fa8c072f09d079d7cda915fd2c7bc1b7b935681e9b09e591e1e15f4040b8e2 + languageName: node + linkType: hard + +"domain-browser@npm:^1.1.1": + version: 1.2.0 + resolution: "domain-browser@npm:1.2.0" + checksum: 10c0/a955f482f4b4710fbd77c12a33e77548d63603c30c80f61a80519f27e3db1ba8530b914584cc9e9365d2038753d6b5bd1f4e6c81e432b007b0ec95b8b5e69b1b + languageName: node + linkType: hard + +"domelementtype@npm:^2.0.1, domelementtype@npm:^2.2.0, domelementtype@npm:^2.3.0": + version: 2.3.0 + resolution: "domelementtype@npm:2.3.0" + checksum: 10c0/686f5a9ef0fff078c1412c05db73a0dce096190036f33e400a07e2a4518e9f56b1e324f5c576a0a747ef0e75b5d985c040b0d51945ce780c0dd3c625a18cd8c9 + languageName: node + linkType: hard + +"domexception@npm:^4.0.0": + version: 4.0.0 + resolution: "domexception@npm:4.0.0" + dependencies: + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/774277cd9d4df033f852196e3c0077a34dbd15a96baa4d166e0e47138a80f4c0bdf0d94e4703e6ff5883cec56bb821a6fff84402d8a498e31de7c87eb932a294 + languageName: node + linkType: hard + +"domhandler@npm:^4.0.0, domhandler@npm:^4.2.0, domhandler@npm:^4.3.1": + version: 4.3.1 + resolution: "domhandler@npm:4.3.1" + dependencies: + domelementtype: "npm:^2.2.0" + checksum: 10c0/5c199c7468cb052a8b5ab80b13528f0db3d794c64fc050ba793b574e158e67c93f8336e87fd81e9d5ee43b0e04aea4d8b93ed7be4899cb726a1601b3ba18538b + languageName: node + linkType: hard + +"domhandler@npm:^5.0.2, domhandler@npm:^5.0.3": + version: 5.0.3 + resolution: "domhandler@npm:5.0.3" + dependencies: + domelementtype: "npm:^2.3.0" + checksum: 10c0/bba1e5932b3e196ad6862286d76adc89a0dbf0c773e5ced1eb01f9af930c50093a084eff14b8de5ea60b895c56a04d5de8bbc4930c5543d029091916770b2d2a + languageName: node + linkType: hard + +"domutils@npm:^2.5.2, domutils@npm:^2.8.0": + version: 2.8.0 + resolution: "domutils@npm:2.8.0" + dependencies: + dom-serializer: "npm:^1.0.1" + domelementtype: "npm:^2.2.0" + domhandler: "npm:^4.2.0" + checksum: 10c0/d58e2ae01922f0dd55894e61d18119924d88091837887bf1438f2327f32c65eb76426bd9384f81e7d6dcfb048e0f83c19b222ad7101176ad68cdc9c695b563db + languageName: node + linkType: hard + +"domutils@npm:^3.0.1": + version: 3.1.0 + resolution: "domutils@npm:3.1.0" + dependencies: + dom-serializer: "npm:^2.0.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + checksum: 10c0/342d64cf4d07b8a0573fb51e0a6312a88fb520c7fefd751870bf72fa5fc0f2e0cb9a3958a573610b1d608c6e2a69b8e9b4b40f0bfb8f87a71bce4f180cca1887 + languageName: node + linkType: hard + +"dot-case@npm:^3.0.4": + version: 3.0.4 + resolution: "dot-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 + languageName: node + linkType: hard + +"dot-prop@npm:^4.2.1": + version: 4.2.1 + resolution: "dot-prop@npm:4.2.1" + dependencies: + is-obj: "npm:^1.0.0" + checksum: 10c0/ea0a98871ef4de0cce05325979517a43b70eb3a3671254fce78f2629c125d5ddb69cfdd5570ace4e41d9f02ced06374ea0444d1aeae70290a19f73e02093318e + languageName: node + linkType: hard + +"dotenv-defaults@npm:5.0.2": + version: 5.0.2 + resolution: "dotenv-defaults@npm:5.0.2" + dependencies: + dotenv: "npm:^14.0.0" + checksum: 10c0/89fe77f8d97a183c701307dde7d328a973271b8ce04af3a48928250cd707a9f324b04a672a2ceb770db117a7724995c48e93edc438b3c9ce1207a67adee77098 + languageName: node + linkType: hard + +"dotenv-defaults@npm:^2.0.2": + version: 2.0.2 + resolution: "dotenv-defaults@npm:2.0.2" + dependencies: + dotenv: "npm:^8.2.0" + checksum: 10c0/14b7b8f6c21a30404106384398728746e63405bfeabe47ef7aadd0e81de49986d5896a612e5b1acddf655af6472a24947b7b113aa3ef3270a2877afa9c5bd287 + languageName: node + linkType: hard + +"dotenv-webpack@npm:8.0.1": + version: 8.0.1 + resolution: "dotenv-webpack@npm:8.0.1" + dependencies: + dotenv-defaults: "npm:^2.0.2" + peerDependencies: + webpack: ^4 || ^5 + checksum: 10c0/ddd12406e7b27a9f324110d34ddf6efdf386f8f6dbbf903cb74b63ed582c28262197eadca4e20cdee55d1e427cc4acd47c9dadd38bfc49219ae215d0b688c2e8 + languageName: node + linkType: hard + +"dotenv@npm:16.3.1": + version: 16.3.1 + resolution: "dotenv@npm:16.3.1" + checksum: 10c0/b95ff1bbe624ead85a3cd70dbd827e8e06d5f05f716f2d0cbc476532d54c7c9469c3bc4dd93ea519f6ad711cb522c00ac9a62b6eb340d5affae8008facc3fbd7 + languageName: node + linkType: hard + +"dotenv@npm:^14.0.0": + version: 14.3.2 + resolution: "dotenv@npm:14.3.2" + checksum: 10c0/cb428358aa3a8da735be727f8a9de56e148ddf97d84a75e528039dc90e55787688766e48204a50b8326ba1ebaa6e039584c1019dfc28fa144e68145d8cbe5946 + languageName: node + linkType: hard + +"dotenv@npm:^16.0.0": + version: 16.4.4 + resolution: "dotenv@npm:16.4.4" + checksum: 10c0/f66ad105144c9106a868c8e244ace6097a0318f63284894e6c7b298c7e096911958837117d936d3c341db550e2fcb21a7a5ad396437638f605460e82b1dd30ee + languageName: node + linkType: hard + +"dotenv@npm:^8.2.0": + version: 8.6.0 + resolution: "dotenv@npm:8.6.0" + checksum: 10c0/6750431dea8efbd54b9f2d9681b04e1ccc7989486461dcf058bb708d9e3d63b04115fcdf8840e38ad1e24a4a2e1e7c1560626c5e3ac7bc09371b127c49e2d45f + languageName: node + linkType: hard + +"dset@npm:^3.1.1, dset@npm:^3.1.2": + version: 3.1.3 + resolution: "dset@npm:3.1.3" + checksum: 10c0/b1ff68f1f42af373baa85b00b04d89094cd0d7f74f94bd11364cba575f2762ed52a0a0503bbfcc92eccd07c6d55426813c8a7a6cfa020338eaea1f4edfd332c2 + languageName: node + linkType: hard + +"duplexer3@npm:^0.1.4": + version: 0.1.5 + resolution: "duplexer3@npm:0.1.5" + checksum: 10c0/02195030d61c4d6a2a34eca71639f2ea5e05cb963490e5bd9527623c2ac7f50c33842a34d14777ea9cbfd9bc2be5a84065560b897d9fabb99346058a5b86ca98 + languageName: node + linkType: hard + +"duplexer@npm:^0.1.2": + version: 0.1.2 + resolution: "duplexer@npm:0.1.2" + checksum: 10c0/c57bcd4bdf7e623abab2df43a7b5b23d18152154529d166c1e0da6bee341d84c432d157d7e97b32fecb1bf3a8b8857dd85ed81a915789f550637ed25b8e64fc2 + languageName: node + linkType: hard + +"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: "npm:^1.0.0" + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + stream-shift: "npm:^1.0.0" + checksum: 10c0/59d1440c1b4e3a4db35ae96933392703ce83518db1828d06b9b6322920d6cbbf0b7159e88be120385fe459e77f1eb0c7622f26e9ec1f47c9ff05c2b35747dbd3 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ecdsa-sig-formatter@npm:1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 10c0/ebfbf19d4b8be938f4dd4a83b8788385da353d63307ede301a9252f9f7f88672e76f2191618fd8edfc2f24679236064176fab0b78131b161ee73daa37125408c + languageName: node + linkType: hard + +"ee-first@npm:1.1.1": + version: 1.1.1 + resolution: "ee-first@npm:1.1.1" + checksum: 10c0/b5bb125ee93161bc16bfe6e56c6b04de5ad2aa44234d8f644813cc95d861a6910903132b05093706de2b706599367c4130eb6d170f6b46895686b95f87d017b7 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.4.668": + version: 1.4.675 + resolution: "electron-to-chromium@npm:1.4.675" + checksum: 10c0/3c7a9145e3a1ef656d5bdd4d1cc1a74abf97bc42a130801f93c4e07c965233b3318ddaa50c5901633ef8b8cbcc11134b9ae98e7b70b75b74729ca0cb5a5bbafb + languageName: node + linkType: hard + +"elliptic@npm:^6.5.3, elliptic@npm:^6.5.4": + version: 6.5.4 + resolution: "elliptic@npm:6.5.4" + dependencies: + bn.js: "npm:^4.11.9" + brorand: "npm:^1.1.0" + hash.js: "npm:^1.0.0" + hmac-drbg: "npm:^1.0.1" + inherits: "npm:^2.0.4" + minimalistic-assert: "npm:^1.0.1" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/5f361270292c3b27cf0843e84526d11dec31652f03c2763c6c2b8178548175ff5eba95341dd62baff92b2265d1af076526915d8af6cc9cb7559c44a62f8ca6e2 + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"emojis-list@npm:^3.0.0": + version: 3.0.0 + resolution: "emojis-list@npm:3.0.0" + checksum: 10c0/7dc4394b7b910444910ad64b812392159a21e1a7ecc637c775a440227dcb4f80eff7fe61f4453a7d7603fa23d23d30cc93fe9e4b5ed985b88d6441cd4a35117b + languageName: node + linkType: hard + +"encodeurl@npm:~1.0.2": + version: 1.0.2 + resolution: "encodeurl@npm:1.0.2" + checksum: 10c0/f6c2387379a9e7c1156c1c3d4f9cb7bb11cf16dd4c1682e1f6746512564b053df5781029b6061296832b59fb22f459dbe250386d217c2f6e203601abb2ee0bec + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.4": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: "npm:^1.4.0" + checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^4.5.0": + version: 4.5.0 + resolution: "enhanced-resolve@npm:4.5.0" + dependencies: + graceful-fs: "npm:^4.1.2" + memory-fs: "npm:^0.5.0" + tapable: "npm:^1.0.0" + checksum: 10c0/d95fc630606ea35bed21c4a029bbb1681919571a2d1d2011c7fc42a26a9e48ed3d74a89949ce331e1fd3229850a303e3218b887b92951330f16bdfbb93a10e64 + languageName: node + linkType: hard + +"enhanced-resolve@npm:^5.15.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" + dependencies: + graceful-fs: "npm:^4.2.4" + tapable: "npm:^2.2.0" + checksum: 10c0/69984a7990913948b4150855aed26a84afb4cb1c5a94fb8e3a65bd00729a73fc2eaff6871fb8e345377f294831afe349615c93560f2f54d61b43cdfdf668f19a + languageName: node + linkType: hard + +"enquirer@npm:2.4.1": + version: 2.4.1 + resolution: "enquirer@npm:2.4.1" + dependencies: + ansi-colors: "npm:^4.1.1" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/43850479d7a51d36a9c924b518dcdc6373b5a8ae3401097d336b7b7e258324749d0ad37a1fcaa5706f04799baa05585cd7af19ebdf7667673e7694435fcea918 + languageName: node + linkType: hard + +"entities@npm:^2.0.0": + version: 2.2.0 + resolution: "entities@npm:2.2.0" + checksum: 10c0/7fba6af1f116300d2ba1c5673fc218af1961b20908638391b4e1e6d5850314ee2ac3ec22d741b3a8060479911c99305164aed19b6254bde75e7e6b1b2c3f3aa3 + languageName: node + linkType: hard + +"entities@npm:^4.2.0, entities@npm:^4.4.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"envinfo@npm:7.11.0": + version: 7.11.0 + resolution: "envinfo@npm:7.11.0" + bin: + envinfo: dist/cli.js + checksum: 10c0/4415b9c1ca32cdf92ce126136b9965eeac2efd6ab7e5278c06e8f86d048edad87ef4084710313a6d938ef9bc084ab17e1caee16339d731d230f3e2650f3aaf4d + languageName: node + linkType: hard + +"envinfo@npm:^7.7.3": + version: 7.11.1 + resolution: "envinfo@npm:7.11.1" + bin: + envinfo: dist/cli.js + checksum: 10c0/4550cce03d4d8a7b137d548faaf9c920356474231636cb4a6e74ae75db3b9cb04aa0a052ee391e2363af5db697166c207ba76e106338d758c6126830b3e16d75 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"errno@npm:^0.1.3, errno@npm:~0.1.7": + version: 0.1.8 + resolution: "errno@npm:0.1.8" + dependencies: + prr: "npm:~1.0.1" + bin: + errno: cli.js + checksum: 10c0/83758951967ec57bf00b5f5b7dc797e6d65a6171e57ea57adcf1bd1a0b477fd9b5b35fae5be1ff18f4090ed156bce1db749fe7e317aac19d485a5d150f6a4936 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"error-stack-parser@npm:^2.0.6": + version: 2.1.4 + resolution: "error-stack-parser@npm:2.1.4" + dependencies: + stackframe: "npm:^1.3.4" + checksum: 10c0/7679b780043c98b01fc546725484e0cfd3071bf5c906bbe358722972f04abf4fc3f0a77988017665bab367f6ef3fc2d0185f7528f45966b83e7c99c02d5509b9 + languageName: node + linkType: hard + +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.22.4": + version: 1.22.4 + resolution: "es-abstract@npm:1.22.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + arraybuffer.prototype.slice: "npm:^1.0.3" + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.2" + es-to-primitive: "npm:^1.2.1" + function.prototype.name: "npm:^1.1.6" + get-intrinsic: "npm:^1.2.4" + get-symbol-description: "npm:^1.0.2" + globalthis: "npm:^1.0.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.1" + internal-slot: "npm:^1.0.7" + is-array-buffer: "npm:^3.0.4" + is-callable: "npm:^1.2.7" + is-negative-zero: "npm:^2.0.2" + is-regex: "npm:^1.1.4" + is-shared-array-buffer: "npm:^1.0.2" + is-string: "npm:^1.0.7" + is-typed-array: "npm:^1.1.13" + is-weakref: "npm:^1.0.2" + object-inspect: "npm:^1.13.1" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.5" + regexp.prototype.flags: "npm:^1.5.2" + safe-array-concat: "npm:^1.1.0" + safe-regex-test: "npm:^1.0.3" + string.prototype.trim: "npm:^1.2.8" + string.prototype.trimend: "npm:^1.0.7" + string.prototype.trimstart: "npm:^1.0.7" + typed-array-buffer: "npm:^1.0.1" + typed-array-byte-length: "npm:^1.0.0" + typed-array-byte-offset: "npm:^1.0.0" + typed-array-length: "npm:^1.0.4" + unbox-primitive: "npm:^1.0.2" + which-typed-array: "npm:^1.1.14" + checksum: 10c0/dc332c3a010c5e7b77b7ea8a4532ac455fa02e7bcabf996a47447165bafa72d0d99967407d0cf5dbbb5fbbf87f53cd8b706608ec70953523b8cd2b831b9a9d64 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "es-define-property@npm:1.0.0" + dependencies: + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/6bf3191feb7ea2ebda48b577f69bdfac7a2b3c9bcf97307f55fd6ef1bbca0b49f0c219a935aca506c993d8c5d8bddd937766cb760cd5e5a1071351f2df9f9aa4 + languageName: node + linkType: hard + +"es-errors@npm:^1.0.0, es-errors@npm:^1.1.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.3" + has-symbols: "npm:^1.0.3" + is-arguments: "npm:^1.1.1" + is-map: "npm:^2.0.2" + is-set: "npm:^2.0.2" + is-string: "npm:^1.0.7" + isarray: "npm:^2.0.5" + stop-iteration-iterator: "npm:^1.0.0" + checksum: 10c0/ebd11effa79851ea75d7f079405f9d0dc185559fd65d986c6afea59a0ff2d46c2ed8675f19f03dce7429d7f6c14ff9aede8d121fbab78d75cfda6a263030bac0 + languageName: node + linkType: hard + +"es-iterator-helpers@npm:^1.0.12, es-iterator-helpers@npm:^1.0.15": + version: 1.0.17 + resolution: "es-iterator-helpers@npm:1.0.17" + dependencies: + asynciterator.prototype: "npm:^1.0.0" + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.4" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.2" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + globalthis: "npm:^1.0.3" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.7" + iterator.prototype: "npm:^1.1.2" + safe-array-concat: "npm:^1.1.0" + checksum: 10c0/d0f281257e7165f068fd4fc3beb63d07ae4f18fbef02a2bbe4a39272b764164c1ce3311ae7c5429ac30003aef290fcdf569050e4a9ba3560e044440f68e9a47c + languageName: node + linkType: hard + +"es-module-lexer@npm:^1.2.1": + version: 1.4.1 + resolution: "es-module-lexer@npm:1.4.1" + checksum: 10c0/b7260a138668554d3f0ddcc728cb4b60c2fa463f15545cf155ecbdd5450a1348952d58298a7f48642e900ee579f21d7f5304b6b3c61b3d9fc2d4b2109b5a9dff + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.0.2": + version: 2.0.2 + resolution: "es-set-tostringtag@npm:2.0.2" + dependencies: + get-intrinsic: "npm:^1.2.2" + has-tostringtag: "npm:^1.0.0" + hasown: "npm:^2.0.0" + checksum: 10c0/176d6bd1be31dd0145dcceee62bb78d4a5db7f81db437615a18308a6f62bcffe45c15081278413455e8cf0aad4ea99079de66f8de389605942dfdacbad74c2d5 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": + version: 1.0.2 + resolution: "es-shim-unscopables@npm:1.0.2" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/f495af7b4b7601a4c0cfb893581c352636e5c08654d129590386a33a0432cf13a7bdc7b6493801cadd990d838e2839b9013d1de3b880440cb537825e834fe783 + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.2.1": + version: 1.2.1 + resolution: "es-to-primitive@npm:1.2.1" + dependencies: + is-callable: "npm:^1.1.4" + is-date-object: "npm:^1.0.1" + is-symbol: "npm:^1.0.2" + checksum: 10c0/0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + languageName: node + linkType: hard + +"esbuild@npm:0.20.0": + version: 0.20.0 + resolution: "esbuild@npm:0.20.0" + dependencies: + "@esbuild/aix-ppc64": "npm:0.20.0" + "@esbuild/android-arm": "npm:0.20.0" + "@esbuild/android-arm64": "npm:0.20.0" + "@esbuild/android-x64": "npm:0.20.0" + "@esbuild/darwin-arm64": "npm:0.20.0" + "@esbuild/darwin-x64": "npm:0.20.0" + "@esbuild/freebsd-arm64": "npm:0.20.0" + "@esbuild/freebsd-x64": "npm:0.20.0" + "@esbuild/linux-arm": "npm:0.20.0" + "@esbuild/linux-arm64": "npm:0.20.0" + "@esbuild/linux-ia32": "npm:0.20.0" + "@esbuild/linux-loong64": "npm:0.20.0" + "@esbuild/linux-mips64el": "npm:0.20.0" + "@esbuild/linux-ppc64": "npm:0.20.0" + "@esbuild/linux-riscv64": "npm:0.20.0" + "@esbuild/linux-s390x": "npm:0.20.0" + "@esbuild/linux-x64": "npm:0.20.0" + "@esbuild/netbsd-x64": "npm:0.20.0" + "@esbuild/openbsd-x64": "npm:0.20.0" + "@esbuild/sunos-x64": "npm:0.20.0" + "@esbuild/win32-arm64": "npm:0.20.0" + "@esbuild/win32-ia32": "npm:0.20.0" + "@esbuild/win32-x64": "npm:0.20.0" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/355f13fe91110155404b12b4e0eeb840aceddffb609e63ebd03bf039b9576db791d51fcd22992b155ad9249bcd9cab838e34577770cff974ecf1d245dcb1b16e + languageName: node + linkType: hard + +"esbuild@npm:^0.18.10": + version: 0.18.20 + resolution: "esbuild@npm:0.18.20" + dependencies: + "@esbuild/android-arm": "npm:0.18.20" + "@esbuild/android-arm64": "npm:0.18.20" + "@esbuild/android-x64": "npm:0.18.20" + "@esbuild/darwin-arm64": "npm:0.18.20" + "@esbuild/darwin-x64": "npm:0.18.20" + "@esbuild/freebsd-arm64": "npm:0.18.20" + "@esbuild/freebsd-x64": "npm:0.18.20" + "@esbuild/linux-arm": "npm:0.18.20" + "@esbuild/linux-arm64": "npm:0.18.20" + "@esbuild/linux-ia32": "npm:0.18.20" + "@esbuild/linux-loong64": "npm:0.18.20" + "@esbuild/linux-mips64el": "npm:0.18.20" + "@esbuild/linux-ppc64": "npm:0.18.20" + "@esbuild/linux-riscv64": "npm:0.18.20" + "@esbuild/linux-s390x": "npm:0.18.20" + "@esbuild/linux-x64": "npm:0.18.20" + "@esbuild/netbsd-x64": "npm:0.18.20" + "@esbuild/openbsd-x64": "npm:0.18.20" + "@esbuild/sunos-x64": "npm:0.18.20" + "@esbuild/win32-arm64": "npm:0.18.20" + "@esbuild/win32-ia32": "npm:0.18.20" + "@esbuild/win32-x64": "npm:0.18.20" + dependenciesMeta: + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10c0/473b1d92842f50a303cf948a11ebd5f69581cd254d599dd9d62f9989858e0533f64e83b723b5e1398a5b488c0f5fd088795b4235f65ecaf4f007d4b79f04bc88 + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287 + languageName: node + linkType: hard + +"escape-html@npm:~1.0.3": + version: 1.0.3 + resolution: "escape-html@npm:1.0.3" + checksum: 10c0/524c739d776b36c3d29fa08a22e03e8824e3b2fd57500e5e44ecf3cc4707c34c60f9ca0781c0e33d191f2991161504c295e98f68c78fe7baa6e57081ec6ac0a3 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"escodegen@npm:^2.0.0": + version: 2.1.0 + resolution: "escodegen@npm:2.1.0" + dependencies: + esprima: "npm:^4.0.1" + estraverse: "npm:^5.2.0" + esutils: "npm:^2.0.2" + source-map: "npm:~0.6.1" + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 10c0/e1450a1f75f67d35c061bf0d60888b15f62ab63aef9df1901cffc81cffbbb9e8b3de237c5502cf8613a017c1df3a3003881307c78835a1ab54d8c8d2206e01d3 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:8.10.0": + version: 8.10.0 + resolution: "eslint-config-prettier@npm:8.10.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/19f8c497d9bdc111a17a61b25ded97217be3755bbc4714477dfe535ed539dddcaf42ef5cf8bb97908b058260cf89a3d7c565cb0be31096cbcd39f4c2fa5fe43c + languageName: node + linkType: hard + +"eslint-import-resolver-babel-module@npm:5.3.2": + version: 5.3.2 + resolution: "eslint-import-resolver-babel-module@npm:5.3.2" + dependencies: + pkg-up: "npm:^3.1.0" + resolve: "npm:^1.20.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + babel-plugin-module-resolver: ^3.0.0 || ^4.0.0 || ^5.0.0 + checksum: 10c0/168fc793cc565cb8c27eb69c67872420980a6fcaac4a5b6951bdaa2700c0745c997d282b3c8cce313c423a12933a0f6fcc347a799398f3cf7f91e9e8a35d2d69 + languageName: node + linkType: hard + +"eslint-import-resolver-node@npm:^0.3.9": + version: 0.3.9 + resolution: "eslint-import-resolver-node@npm:0.3.9" + dependencies: + debug: "npm:^3.2.7" + is-core-module: "npm:^2.13.0" + resolve: "npm:^1.22.4" + checksum: 10c0/0ea8a24a72328a51fd95aa8f660dcca74c1429806737cf10261ab90cfcaaf62fd1eff664b76a44270868e0a932711a81b250053942595bcd00a93b1c1575dd61 + languageName: node + linkType: hard + +"eslint-module-utils@npm:^2.8.0": + version: 2.8.0 + resolution: "eslint-module-utils@npm:2.8.0" + dependencies: + debug: "npm:^3.2.7" + peerDependenciesMeta: + eslint: + optional: true + checksum: 10c0/c7a8d1a58d76ec8217a8fea49271ec8132d1b9390965a75f6a4ecbc9e5983d742195b46d2e4378231d2186801439fe1aa5700714b0bfd4eb17aac6e1b65309df + languageName: node + linkType: hard + +"eslint-plugin-babel@npm:5.3.1": + version: 5.3.1 + resolution: "eslint-plugin-babel@npm:5.3.1" + dependencies: + eslint-rule-composer: "npm:^0.3.0" + peerDependencies: + eslint: ">=4.0.0" + checksum: 10c0/c73e054c3cf3c5392e8ea7e56f41db3859b9d7c0dd347c28a5f08ae87889cc4879fcddfe227ee1ec075a9ab62e34e245d7e6e723180dfa36d07397c2cbb2c1a1 + languageName: node + linkType: hard + +"eslint-plugin-import@npm:2.29.0": + version: 2.29.0 + resolution: "eslint-plugin-import@npm:2.29.0" + dependencies: + array-includes: "npm:^3.1.7" + array.prototype.findlastindex: "npm:^1.2.3" + array.prototype.flat: "npm:^1.3.2" + array.prototype.flatmap: "npm:^1.3.2" + debug: "npm:^3.2.7" + doctrine: "npm:^2.1.0" + eslint-import-resolver-node: "npm:^0.3.9" + eslint-module-utils: "npm:^2.8.0" + hasown: "npm:^2.0.0" + is-core-module: "npm:^2.13.1" + is-glob: "npm:^4.0.3" + minimatch: "npm:^3.1.2" + object.fromentries: "npm:^2.0.7" + object.groupby: "npm:^1.0.1" + object.values: "npm:^1.1.7" + semver: "npm:^6.3.1" + tsconfig-paths: "npm:^3.14.2" + peerDependencies: + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + checksum: 10c0/761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733 + languageName: node + linkType: hard + +"eslint-plugin-jest-dom@npm:4.0.3": + version: 4.0.3 + resolution: "eslint-plugin-jest-dom@npm:4.0.3" + dependencies: + "@babel/runtime": "npm:^7.16.3" + "@testing-library/dom": "npm:^8.11.1" + requireindex: "npm:^1.2.0" + peerDependencies: + eslint: ^6.8.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4a9f17a1c3e537df6093cf82207121536a48565907d8173194339758f39d759db5f65fa6d632815eec36b4de2644fa2d721eae395c43943e2d4a76ecba9ebeb5 + languageName: node + linkType: hard + +"eslint-plugin-jsx-a11y@npm:6.8.0": + version: 6.8.0 + resolution: "eslint-plugin-jsx-a11y@npm:6.8.0" + dependencies: + "@babel/runtime": "npm:^7.23.2" + aria-query: "npm:^5.3.0" + array-includes: "npm:^3.1.7" + array.prototype.flatmap: "npm:^1.3.2" + ast-types-flow: "npm:^0.0.8" + axe-core: "npm:=4.7.0" + axobject-query: "npm:^3.2.1" + damerau-levenshtein: "npm:^1.0.8" + emoji-regex: "npm:^9.2.2" + es-iterator-helpers: "npm:^1.0.15" + hasown: "npm:^2.0.0" + jsx-ast-utils: "npm:^3.3.5" + language-tags: "npm:^1.0.9" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.7" + object.fromentries: "npm:^2.0.7" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/199b883e526e6f9d7c54cb3f094abc54f11a1ec816db5fb6cae3b938eb0e503acc10ccba91ca7451633a9d0b9abc0ea03601844a8aba5fe88c5e8897c9ac8f49 + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:4.2.1": + version: 4.2.1 + resolution: "eslint-plugin-prettier@npm:4.2.1" + dependencies: + prettier-linter-helpers: "npm:^1.0.0" + peerDependencies: + eslint: ">=7.28.0" + prettier: ">=2.0.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: 10c0/c5e7316baeab9d96ac39c279f16686e837277e5c67a8006c6588bcff317edffdc1532fb580441eb598bc6770f6444006756b68a6575dff1cd85ebe227252d0b7 + languageName: node + linkType: hard + +"eslint-plugin-react-hooks@npm:4.6.0": + version: 4.6.0 + resolution: "eslint-plugin-react-hooks@npm:4.6.0" + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + checksum: 10c0/58c7e10ea5792c33346fcf5cb4024e14837035ce412ff99c2dcb7c4f903dc9b17939078f80bfef826301ce326582c396c00e8e0ac9d10ac2cde2b42d33763c65 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:7.33.2": + version: 7.33.2 + resolution: "eslint-plugin-react@npm:7.33.2" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flatmap: "npm:^1.3.1" + array.prototype.tosorted: "npm:^1.1.1" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.0.12" + estraverse: "npm:^5.3.0" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.6" + object.fromentries: "npm:^2.0.6" + object.hasown: "npm:^1.1.2" + object.values: "npm:^1.1.6" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.4" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.8" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + checksum: 10c0/f9b247861024bafc396c4bd3c9ac946604b3b23077251c98f23602aa22027a0c33a69157fd49564e4ff7f17b3678e5dc366a46c7ec42a09454d7cbce786d5001 + languageName: node + linkType: hard + +"eslint-rule-composer@npm:^0.3.0": + version: 0.3.0 + resolution: "eslint-rule-composer@npm:0.3.0" + checksum: 10c0/1f0c40d209e1503a955101a0dbba37e7fc67c8aaa47a5b9ae0b0fcbae7022c86e52b3df2b1b9ffd658e16cd80f31fff92e7222460a44d8251e61d49e0af79a07 + languageName: node + linkType: hard + +"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/d30ef9dc1c1cbdece34db1539a4933fe3f9b14e1ffb27ecc85987902ee663ad7c9473bbd49a9a03195a373741e62e2f807c4938992e019b511993d163450e70a + languageName: node + linkType: hard + +"eslint-scope@npm:^4.0.3": + version: 4.0.3 + resolution: "eslint-scope@npm:4.0.3" + dependencies: + esrecurse: "npm:^4.1.0" + estraverse: "npm:^4.1.1" + checksum: 10c0/a2a3fe5845938ce7cfd2e658c309a9bb27a7f9ce94f0cc447ed5f9fa95b16451556d7e1db4c8e5d2aaa02d02850f5346d23091bbe94f7097412ce846504b4dcc + languageName: node + linkType: hard + +"eslint-scope@npm:^7.2.2": + version: 7.2.2 + resolution: "eslint-scope@npm:7.2.2" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/613c267aea34b5a6d6c00514e8545ef1f1433108097e857225fed40d397dd6b1809dffd11c2fde23b37ca53d7bf935fe04d2a18e6fc932b31837b6ad67e1c116 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-visitor-keys@npm:2.1.0" + checksum: 10c0/9f0e3a2db751d84067d15977ac4b4472efd6b303e369e6ff241a99feac04da758f46d5add022c33d06b53596038dbae4b4aceb27c7e68b8dfc1055b35e495787 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint@npm:8.55.0": + version: 8.55.0 + resolution: "eslint@npm:8.55.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.6.1" + "@eslint/eslintrc": "npm:^2.1.4" + "@eslint/js": "npm:8.55.0" + "@humanwhocodes/config-array": "npm:^0.11.13" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@nodelib/fs.walk": "npm:^1.2.8" + "@ungap/structured-clone": "npm:^1.2.0" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.2" + debug: "npm:^4.3.2" + doctrine: "npm:^3.0.0" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^7.2.2" + eslint-visitor-keys: "npm:^3.4.3" + espree: "npm:^9.6.1" + esquery: "npm:^1.4.2" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^6.0.1" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + globals: "npm:^13.19.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + is-path-inside: "npm:^3.0.3" + js-yaml: "npm:^4.1.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + levn: "npm:^0.4.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + strip-ansi: "npm:^6.0.1" + text-table: "npm:^0.2.0" + bin: + eslint: bin/eslint.js + checksum: 10c0/d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1 + languageName: node + linkType: hard + +"espree@npm:^9.6.0, espree@npm:^9.6.1": + version: 9.6.1 + resolution: "espree@npm:9.6.1" + dependencies: + acorn: "npm:^8.9.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^3.4.1" + checksum: 10c0/1a2e9b4699b715347f62330bcc76aee224390c28bb02b31a3752e9d07549c473f5f986720483c6469cf3cfb3c9d05df612ffc69eb1ee94b54b739e67de9bb460 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1, esprima@npm:~4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.4.2": + version: 1.5.0 + resolution: "esquery@npm:1.5.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/a084bd049d954cc88ac69df30534043fb2aee5555b56246493f42f27d1e168f00d9e5d4192e46f10290d312dc30dc7d58994d61a609c579c1219d636996f9213 + languageName: node + linkType: hard + +"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 10c0/9cb46463ef8a8a4905d3708a652d60122a0c20bb58dec7e0e12ab0e7235123d74214fc0141d743c381813e1b992767e2708194f6f6e0f9fd00c1b4e0887b8b6d + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0, estraverse@npm:^5.3.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 10c0/12be11ef62fb9817314d790089a0a49fae4e1b50594135dcb8076312b7d7e470884b5100d249b28c18581b7fd52f8b485689ffae22a11ed9ec17377a33a08f84 + languageName: node + linkType: hard + +"event-target-shim@npm:^5.0.0": + version: 5.0.1 + resolution: "event-target-shim@npm:5.0.1" + checksum: 10c0/0255d9f936215fd206156fd4caa9e8d35e62075d720dc7d847e89b417e5e62cf1ce6c9b4e0a1633a9256de0efefaf9f8d26924b1f3c8620cffb9db78e7d3076b + languageName: node + linkType: hard + +"eventemitter3@npm:^4.0.0": + version: 4.0.7 + resolution: "eventemitter3@npm:4.0.7" + checksum: 10c0/5f6d97cbcbac47be798e6355e3a7639a84ee1f7d9b199a07017f1d2f1e2fe236004d14fa5dfaeba661f94ea57805385e326236a6debbc7145c8877fbc0297c6b + languageName: node + linkType: hard + +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814 + languageName: node + linkType: hard + +"events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: 10c0/d6b6f2adbccbcda74ddbab52ed07db727ef52e31a61ed26db9feb7dc62af7fc8e060defa65e5f8af9449b86b52cc1a1f6a79f2eafcf4e62add2b7a1fa4a432f6 + languageName: node + linkType: hard + +"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": + version: 1.0.3 + resolution: "evp_bytestokey@npm:1.0.3" + dependencies: + md5.js: "npm:^1.3.4" + node-gyp: "npm:latest" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/77fbe2d94a902a80e9b8f5a73dcd695d9c14899c5e82967a61b1fc6cbbb28c46552d9b127cff47c45fcf684748bdbcfa0a50410349109de87ceb4b199ef6ee99 + languageName: node + linkType: hard + +"execa@npm:5.1.1, execa@npm:^5.0.0": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 10c0/71d2ad9b36bc25bb8b104b17e830b40a08989be7f7d100b13269aaae7c3784c3e6e1e88a797e9e87523993a25ba27c8958959a554535370672cfb4d824af8989 + languageName: node + linkType: hard + +"expand-brackets@npm:^2.1.4": + version: 2.1.4 + resolution: "expand-brackets@npm:2.1.4" + dependencies: + debug: "npm:^2.3.3" + define-property: "npm:^0.2.5" + extend-shallow: "npm:^2.0.1" + posix-character-classes: "npm:^0.1.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/3e2fb95d2d7d7231486493fd65db913927b656b6fcdfcce41e139c0991a72204af619ad4acb1be75ed994ca49edb7995ef241dbf8cf44dc3c03d211328428a87 + languageName: node + linkType: hard + +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/2eddeace66e68b8d8ee5f7be57f3014b19770caaf6815c7a08d131821da527fb8c8cb7b3dcd7c883d2d3d8d184206a4268984618032d1e4b16dc8d6596475d41 + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.1 + resolution: "exponential-backoff@npm:3.1.1" + checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + languageName: node + linkType: hard + +"express@npm:^4.17.3": + version: 4.18.2 + resolution: "express@npm:4.18.2" + dependencies: + accepts: "npm:~1.3.8" + array-flatten: "npm:1.1.1" + body-parser: "npm:1.20.1" + content-disposition: "npm:0.5.4" + content-type: "npm:~1.0.4" + cookie: "npm:0.5.0" + cookie-signature: "npm:1.0.6" + debug: "npm:2.6.9" + depd: "npm:2.0.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + finalhandler: "npm:1.2.0" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + merge-descriptors: "npm:1.0.1" + methods: "npm:~1.1.2" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + path-to-regexp: "npm:0.1.7" + proxy-addr: "npm:~2.0.7" + qs: "npm:6.11.0" + range-parser: "npm:~1.2.1" + safe-buffer: "npm:5.2.1" + send: "npm:0.18.0" + serve-static: "npm:1.15.0" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + type-is: "npm:~1.6.18" + utils-merge: "npm:1.0.1" + vary: "npm:~1.1.2" + checksum: 10c0/75af556306b9241bc1d7bdd40c9744b516c38ce50ae3210658efcbf96e3aed4ab83b3432f06215eae5610c123bc4136957dc06e50dfc50b7d4d775af56c4c59c + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: "npm:^0.1.0" + checksum: 10c0/ee1cb0a18c9faddb42d791b2d64867bd6cfd0f3affb711782eb6e894dd193e2934a7f529426aac7c8ddb31ac5d38000a00aa2caf08aa3dfc3e1c8ff6ba340bd9 + languageName: node + linkType: hard + +"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": + version: 3.0.2 + resolution: "extend-shallow@npm:3.0.2" + dependencies: + assign-symbols: "npm:^1.0.0" + is-extendable: "npm:^1.0.1" + checksum: 10c0/f39581b8f98e3ad94995e33214fff725b0297cf09f2725b6f624551cfb71e0764accfd0af80becc0182af5014d2a57b31b85ec999f9eb8a6c45af81752feac9a + languageName: node + linkType: hard + +"external-editor@npm:^3.0.3": + version: 3.1.0 + resolution: "external-editor@npm:3.1.0" + dependencies: + chardet: "npm:^0.7.0" + iconv-lite: "npm:^0.4.24" + tmp: "npm:^0.0.33" + checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 + languageName: node + linkType: hard + +"extglob@npm:^2.0.4": + version: 2.0.4 + resolution: "extglob@npm:2.0.4" + dependencies: + array-unique: "npm:^0.3.2" + define-property: "npm:^1.0.0" + expand-brackets: "npm:^2.1.4" + extend-shallow: "npm:^2.0.1" + fragment-cache: "npm:^0.2.1" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/e1a891342e2010d046143016c6c03d58455c2c96c30bf5570ea07929984ee7d48fad86b363aee08f7a8a638f5c3a66906429b21ecb19bc8e90df56a001cd282c + languageName: node + linkType: hard + +"extract-files@npm:^11.0.0": + version: 11.0.0 + resolution: "extract-files@npm:11.0.0" + checksum: 10c0/7ac1cd693d081099d7c29f2b36aad199f92c5ea234c2016eb37ba213dddaefe74d54566f0675de5917d35cf98670183c2c9a0d96094727eb2c6dae02be7fc308 + languageName: node + linkType: hard + +"fast-content-type-parse@npm:^1.1.0": + version: 1.1.0 + resolution: "fast-content-type-parse@npm:1.1.0" + checksum: 10c0/882bf990fa5d64be1825ce183818db43900ece0d7ef184cb9409bae8ed1001acbe536a657b1496382cb3e308e71ab39cc399bbdae70cba1745eecaeca4e55384 + languageName: node + linkType: hard + +"fast-decode-uri-component@npm:^1.0.1": + version: 1.0.1 + resolution: "fast-decode-uri-component@npm:1.0.1" + checksum: 10c0/039d50c2e99d64f999c3f2126c23fbf75a04a4117e218a149ca0b1d2aeb8c834b7b19d643b9d35d4eabce357189a6a94085f78cf48869e6e26cc59b036284bc3 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.3.0 + resolution: "fast-diff@npm:1.3.0" + checksum: 10c0/5c19af237edb5d5effda008c891a18a585f74bf12953be57923f17a3a4d0979565fc64dbc73b9e20926b9d895f5b690c618cbb969af0cf022e3222471220ad29 + languageName: node + linkType: hard + +"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 10c0/d53f6f786875e8b0529f784b59b4b05d4b5c31c651710496440006a398389a579c8dbcd2081311478b5bf77f4b0b21de69109c5a4eabea9d8e8783d1eb864e4c + languageName: node + linkType: hard + +"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0": + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.4" + checksum: 10c0/42baad7b9cd40b63e42039132bde27ca2cb3a4950d0a0f9abe4639ea1aa9d3e3b40f98b1fe31cbc0cc17b664c9ea7447d911a152fa34ec5b72977b125a6fc845 + languageName: node + linkType: hard + +"fast-json-parse@npm:1.0.3": + version: 1.0.3 + resolution: "fast-json-parse@npm:1.0.3" + checksum: 10c0/2c58c7a0f7f1725c9da1272839f9bee3ccc13b77672b18ab4ac470c707999bca39828cd7e79b87c73017f21c3ddff37992d03fa2fd2da124d9bd06c1d02c9b7e + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-json-stringify@npm:^5.7.0, fast-json-stringify@npm:^5.8.0": + version: 5.12.0 + resolution: "fast-json-stringify@npm:5.12.0" + dependencies: + "@fastify/merge-json-schemas": "npm:^0.1.0" + ajv: "npm:^8.10.0" + ajv-formats: "npm:^2.1.1" + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^2.1.0" + json-schema-ref-resolver: "npm:^1.0.1" + rfdc: "npm:^1.2.0" + checksum: 10c0/5d6ecb4326acddfd0247cd65901f5584ffc2ed821b47e85cf3aa66474b5bb0f5cf2617e947f9b66fd0baf93caaee7c039952993dc1eda9f72d4920713a36a182 + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fast-querystring@npm:^1.0.0, fast-querystring@npm:^1.1.1, fast-querystring@npm:^1.1.2": + version: 1.1.2 + resolution: "fast-querystring@npm:1.1.2" + dependencies: + fast-decode-uri-component: "npm:^1.0.1" + checksum: 10c0/e8223273a9b199722f760f5a047a77ad049a14bd444b821502cb8218f5925e3a5fffb56b64389bca73ab2ac6f1aa7aebbe4e203e5f6e53ff5978de97c0fde4e3 + languageName: node + linkType: hard + +"fast-redact@npm:^3.1.1": + version: 3.3.0 + resolution: "fast-redact@npm:3.3.0" + checksum: 10c0/d81562510681e9ba6404ee5d3838ff5257a44d2f80937f5024c099049ff805437d0fae0124458a7e87535cc9dcf4de305bb075cab8f08d6c720bbc3447861b4e + languageName: node + linkType: hard + +"fast-uri@npm:^2.0.0, fast-uri@npm:^2.1.0, fast-uri@npm:^2.2.0": + version: 2.3.0 + resolution: "fast-uri@npm:2.3.0" + checksum: 10c0/72844622c8b9d92dbb783723628d1069c999b31bfaa74af9e9afae0e0c22faf18c988a0ce55e775dce4c404f4cca75fa43e1f0ab07075342cff99796f4920945 + languageName: node + linkType: hard + +"fast-url-parser@npm:^1.1.3": + version: 1.1.3 + resolution: "fast-url-parser@npm:1.1.3" + dependencies: + punycode: "npm:^1.3.2" + checksum: 10c0/d85c5c409cf0215417380f98a2d29c23a95004d93ff0d8bdf1af5f1a9d1fc608ac89ac6ffe863783d2c73efb3850dd35390feb1de3296f49877bfee0392eb5d3 + languageName: node + linkType: hard + +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: 10c0/7e3d8ae812a7f4fdf8cad18e9cde436a39addf266a5986f653ea0d81e0de0900f50c0f27c6d5aff3f686bcb48acbd45be115ae2216f36a6a13a7dbbf5cad878b + languageName: node + linkType: hard + +"fastify-plugin@npm:^4.0.0, fastify-plugin@npm:^4.5.0": + version: 4.5.1 + resolution: "fastify-plugin@npm:4.5.1" + checksum: 10c0/f58f79cd9d3c88fd7f79a3270276c6339fc57bbe72ef14d20b73779193c404e317ac18e8eae2c5071b3909ebee45d7eb6871da4e65464ac64ed0d9746b4e9b9f + languageName: node + linkType: hard + +"fastify-raw-body@npm:4.3.0": + version: 4.3.0 + resolution: "fastify-raw-body@npm:4.3.0" + dependencies: + fastify-plugin: "npm:^4.0.0" + raw-body: "npm:^2.5.1" + secure-json-parse: "npm:^2.4.0" + checksum: 10c0/3260ab2fc3483a1668442b0a2b60a3f671948d8fc6e7a811ac782cfc28d31d8f064e7b3835ca21cb542d41c4a2a7bc84dd5c18ef0c38f90d7387dd6bbb83161d + languageName: node + linkType: hard + +"fastify@npm:4.25.2": + version: 4.25.2 + resolution: "fastify@npm:4.25.2" + dependencies: + "@fastify/ajv-compiler": "npm:^3.5.0" + "@fastify/error": "npm:^3.4.0" + "@fastify/fast-json-stringify-compiler": "npm:^4.3.0" + abstract-logging: "npm:^2.0.1" + avvio: "npm:^8.2.1" + fast-content-type-parse: "npm:^1.1.0" + fast-json-stringify: "npm:^5.8.0" + find-my-way: "npm:^7.7.0" + light-my-request: "npm:^5.11.0" + pino: "npm:^8.17.0" + process-warning: "npm:^3.0.0" + proxy-addr: "npm:^2.0.7" + rfdc: "npm:^1.3.0" + secure-json-parse: "npm:^2.7.0" + semver: "npm:^7.5.4" + toad-cache: "npm:^3.3.0" + checksum: 10c0/3ae9e8cdfd6ee4ada4b198f33cd6e152ae751f93e31ce628222e17249544ff34057118c8903d43cb1134c8b1614b7ce19768d8c9f3fde5befa6e236376d97f01 + languageName: node + linkType: hard + +"fastq@npm:^1.17.1, fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/1095f16cea45fb3beff558bb3afa74ca7a9250f5a670b65db7ed585f92b4b48381445cd328b3d87323da81e43232b5d5978a8201bde84e0cd514310f1ea6da34 + languageName: node + linkType: hard + +"faye-websocket@npm:^0.11.3": + version: 0.11.4 + resolution: "faye-websocket@npm:0.11.4" + dependencies: + websocket-driver: "npm:>=0.5.1" + checksum: 10c0/c6052a0bb322778ce9f89af92890f6f4ce00d5ec92418a35e5f4c6864a4fe736fec0bcebd47eac7c0f0e979b01530746b1c85c83cb04bae789271abf19737420 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fbjs-css-vars@npm:^1.0.0": + version: 1.0.2 + resolution: "fbjs-css-vars@npm:1.0.2" + checksum: 10c0/dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f + languageName: node + linkType: hard + +"fbjs@npm:^3.0.0": + version: 3.0.5 + resolution: "fbjs@npm:3.0.5" + dependencies: + cross-fetch: "npm:^3.1.5" + fbjs-css-vars: "npm:^1.0.0" + loose-envify: "npm:^1.0.0" + object-assign: "npm:^4.1.0" + promise: "npm:^7.1.1" + setimmediate: "npm:^1.0.5" + ua-parser-js: "npm:^1.0.35" + checksum: 10c0/66d0a2fc9a774f9066e35ac2ac4bf1245931d27f3ac287c7d47e6aa1fc152b243c2109743eb8f65341e025621fb51a12038fadb9fd8fda2e3ddae04ebab06f91 + languageName: node + linkType: hard + +"figgy-pudding@npm:^3.5.1": + version: 3.5.2 + resolution: "figgy-pudding@npm:3.5.2" + checksum: 10c0/b21c7adaeb8485ef3c50e056b5dc8c3a6461818343aba141e0d7927aad47a0cb9f1d207ffdf494c380cd60d7c848c46a5ce5cb06987d10e9226fcec419c8af90 + languageName: node + linkType: hard + +"figures@npm:^3.0.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: "npm:^1.0.5" + checksum: 10c0/9c421646ede432829a50bc4e55c7a4eb4bcb7cc07b5bab2f471ef1ab9a344595bbebb6c5c21470093fbb730cd81bbca119624c40473a125293f656f49cb47629 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: "npm:^3.0.4" + checksum: 10c0/58473e8a82794d01b38e5e435f6feaf648e3f36fdb3a56e98f417f4efae71ad1c0d4ebd8a9a7c50c3ad085820a93fc7494ad721e0e4ebc1da3573f4e1c3c7cdd + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 10c0/3b545e3a341d322d368e880e1c204ef55f1d45cdea65f7efc6c6ce9e0c4d22d802d5629320eb779d006fe59624ac17b0e848d83cc5af7cd101f206cb704f5519 + languageName: node + linkType: hard + +"fill-keys@npm:^1.0.2": + version: 1.0.2 + resolution: "fill-keys@npm:1.0.2" + dependencies: + is-object: "npm:~1.0.1" + merge-descriptors: "npm:~1.0.0" + checksum: 10c0/39d01c6d1fbb7cbb05ccbfee5746afcb03dbaf8990f09f3b1b23a144d215c0b685b9db8f40b0e949627e49baa8e5530a1b7f9a2c50ef29acc715a91c45bbb6da + languageName: node + linkType: hard + +"fill-range@npm:^4.0.0": + version: 4.0.0 + resolution: "fill-range@npm:4.0.0" + dependencies: + extend-shallow: "npm:^2.0.1" + is-number: "npm:^3.0.0" + repeat-string: "npm:^1.6.1" + to-regex-range: "npm:^2.1.0" + checksum: 10c0/ccd57b7c43d7e28a1f8a60adfa3c401629c08e2f121565eece95e2386ebc64dedc7128d8c3448342aabf19db0c55a34f425f148400c7a7be9a606ba48749e089 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/7cdad7d426ffbaadf45aeb5d15ec675bbd77f7597ad5399e3d2766987ed20bda24d5fac64b3ee79d93276f5865608bb22344a26b9b1ae6c4d00bd94bf611623f + languageName: node + linkType: hard + +"finalhandler@npm:1.2.0": + version: 1.2.0 + resolution: "finalhandler@npm:1.2.0" + dependencies: + debug: "npm:2.6.9" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + on-finished: "npm:2.4.1" + parseurl: "npm:~1.3.3" + statuses: "npm:2.0.1" + unpipe: "npm:~1.0.0" + checksum: 10c0/64b7e5ff2ad1fcb14931cd012651631b721ce657da24aedb5650ddde9378bf8e95daa451da43398123f5de161a81e79ff5affe4f9f2a6d2df4a813d6d3e254b7 + languageName: node + linkType: hard + +"find-babel-config@npm:^1.2.0": + version: 1.2.0 + resolution: "find-babel-config@npm:1.2.0" + dependencies: + json5: "npm:^0.5.1" + path-exists: "npm:^3.0.0" + checksum: 10c0/6ea93bde7fd062fac87f27789aa77142de87dd023a5a60ceb7c91f65c7fab967a57c0a410ef8c51b8e2a924194867ab2e901ff35a7da7b9db5a94150652385a3 + languageName: node + linkType: hard + +"find-babel-config@npm:^2.0.0": + version: 2.0.0 + resolution: "find-babel-config@npm:2.0.0" + dependencies: + json5: "npm:^2.1.1" + path-exists: "npm:^4.0.0" + checksum: 10c0/4d841cf74f0e17da20c4d52d520831e1ccf42eaa99570c07ea5948adabc14a0d1388dea690efdf66c007de8c4c61629458c11822c88ccc84d855d77668fa5247 + languageName: node + linkType: hard + +"find-cache-dir@npm:^2.0.0, find-cache-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "find-cache-dir@npm:2.1.0" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^2.0.0" + pkg-dir: "npm:^3.0.0" + checksum: 10c0/556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.3.1": + version: 3.3.2 + resolution: "find-cache-dir@npm:3.3.2" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^3.0.2" + pkg-dir: "npm:^4.1.0" + checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587 + languageName: node + linkType: hard + +"find-cache-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "find-cache-dir@npm:4.0.0" + dependencies: + common-path-prefix: "npm:^3.0.0" + pkg-dir: "npm:^7.0.0" + checksum: 10c0/0faa7956974726c8769671de696d24c643ca1e5b8f7a2401283caa9e07a5da093293e0a0f4bd18c920ec981d2ef945c7f5b946cde268dfc9077d833ad0293cff + languageName: node + linkType: hard + +"find-my-way@npm:^7.7.0": + version: 7.7.0 + resolution: "find-my-way@npm:7.7.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-querystring: "npm:^1.0.0" + safe-regex2: "npm:^2.0.0" + checksum: 10c0/6b4fef5f3a21a73c5428337a02ce2f90af055e3fade6f57f3444a76d7f58a43891aba26597014ff02f9fd9071abfdd32b92ff2435aadaf96dd2316920c456f6e + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: "npm:^3.0.0" + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"find-up@npm:^6.3.0": + version: 6.3.0 + resolution: "find-up@npm:6.3.0" + dependencies: + locate-path: "npm:^7.1.0" + path-exists: "npm:^5.0.0" + checksum: 10c0/07e0314362d316b2b13f7f11ea4692d5191e718ca3f7264110127520f3347996349bf9e16805abae3e196805814bc66ef4bff2b8904dc4a6476085fc9b0eba07 + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.3" + rimraf: "npm:^3.0.2" + checksum: 10c0/b76f611bd5f5d68f7ae632e3ae503e678d205cf97a17c6ab5b12f6ca61188b5f1f7464503efae6dc18683ed8f0b41460beb48ac4b9ac63fe6201296a91ba2f75 + languageName: node + linkType: hard + +"flat@npm:^5.0.2": + version: 5.0.2 + resolution: "flat@npm:5.0.2" + bin: + flat: cli.js + checksum: 10c0/f178b13482f0cd80c7fede05f4d10585b1f2fdebf26e12edc138e32d3150c6ea6482b7f12813a1091143bad52bb6d3596bca51a162257a21163c0ff438baa5fe + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: 10c0/5c91c5a0a21bbc0b07b272231e5b4efe6b822bcb4ad317caf6bb06984be4042a9e9045026307da0fdb4583f1f545e317a67ef1231a59e71f7fced3cc429cfc53 + languageName: node + linkType: hard + +"flow-parser@npm:0.*": + version: 0.229.0 + resolution: "flow-parser@npm:0.229.0" + checksum: 10c0/d64066a675da37ff3de782518e0a3706dc14184a301a3c98dbcb3ffe65657b79ad7e869b7cb41086cfd3b089929180c23df6c750b4afbb0e6d42db16af3b099e + languageName: node + linkType: hard + +"flush-write-stream@npm:^1.0.0": + version: 1.1.1 + resolution: "flush-write-stream@npm:1.1.1" + dependencies: + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.3.6" + checksum: 10c0/2cd4f65b728d5f388197a03dafabc6a5e4f0c2ed1a2d912e288f7aa1c2996dd90875e55b50cf32c78dca55ad2e2dfae5d3db09b223838388033d87cf5920dd87 + languageName: node + linkType: hard + +"follow-redirects@npm:^1.0.0": + version: 1.15.5 + resolution: "follow-redirects@npm:1.15.5" + peerDependenciesMeta: + debug: + optional: true + checksum: 10c0/418d71688ceaf109dfd6f85f747a0c75de30afe43a294caa211def77f02ef19865b547dfb73fde82b751e1cc507c06c754120b848fe5a7400b0a669766df7615 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: "npm:^1.1.3" + checksum: 10c0/22330d8a2db728dbf003ec9182c2d421fbcd2969b02b4f97ec288721cda63eb28f2c08585ddccd0f77cb2930af8d958005c9e72f47141dc51816127a118f39aa + languageName: node + linkType: hard + +"for-in@npm:^1.0.2": + version: 1.0.2 + resolution: "for-in@npm:1.0.2" + checksum: 10c0/42bb609d564b1dc340e1996868b67961257fd03a48d7fdafd4f5119530b87f962be6b4d5b7e3a3fc84c9854d149494b1d358e0b0ce9837e64c4c6603a49451d6 + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0": + version: 3.1.1 + resolution: "foreground-child@npm:3.1.1" + dependencies: + cross-spawn: "npm:^7.0.0" + signal-exit: "npm:^4.0.1" + checksum: 10c0/9700a0285628abaeb37007c9a4d92bd49f67210f09067638774338e146c8e9c825c5c877f072b2f75f41dc6a2d0be8664f79ffc03f6576649f54a84fb9b47de0 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.0 + resolution: "form-data@npm:4.0.0" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + mime-types: "npm:^2.1.12" + checksum: 10c0/cb6f3ac49180be03ff07ba3ff125f9eba2ff0b277fb33c7fc47569fc5e616882c5b1c69b9904c4c4187e97dd0419dd03b134174756f296dec62041e6527e2c6e + languageName: node + linkType: hard + +"forwarded@npm:0.2.0": + version: 0.2.0 + resolution: "forwarded@npm:0.2.0" + checksum: 10c0/9b67c3fac86acdbc9ae47ba1ddd5f2f81526fa4c8226863ede5600a3f7c7416ef451f6f1e240a3cc32d0fd79fcfe6beb08fd0da454f360032bde70bf80afbb33 + languageName: node + linkType: hard + +"fragment-cache@npm:^0.2.1": + version: 0.2.1 + resolution: "fragment-cache@npm:0.2.1" + dependencies: + map-cache: "npm:^0.2.2" + checksum: 10c0/5891d1c1d1d5e1a7fb3ccf28515c06731476fa88f7a50f4ede8a0d8d239a338448e7f7cc8b73db48da19c229fa30066104fe6489862065a4f1ed591c42fbeabf + languageName: node + linkType: hard + +"fresh@npm:0.5.2": + version: 0.5.2 + resolution: "fresh@npm:0.5.2" + checksum: 10c0/c6d27f3ed86cc5b601404822f31c900dd165ba63fff8152a3ef714e2012e7535027063bc67ded4cb5b3a49fa596495d46cacd9f47d6328459cf570f08b7d9e5a + languageName: node + linkType: hard + +"from2@npm:^2.1.0": + version: 2.3.0 + resolution: "from2@npm:2.3.0" + dependencies: + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.0.0" + checksum: 10c0/f87f7a2e4513244d551454a7f8324ef1f7837864a8701c536417286ec19ff4915606b1dfa8909a21b7591ebd8440ffde3642f7c303690b9a4d7c832d62248aa1 + languageName: node + linkType: hard + +"fs-extra@npm:11.2.0": + version: 11.2.0 + resolution: "fs-extra@npm:11.2.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs-monkey@npm:^1.0.4": + version: 1.0.5 + resolution: "fs-monkey@npm:1.0.5" + checksum: 10c0/815025e75549fb1ac6c403413b82fd631eded862ae27694a515c0f666069e95874ab34e79c33d1b3b8c87d1e54350d5e4262090d0aa5bd7130143cbc627537e4 + languageName: node + linkType: hard + +"fs-readdir-recursive@npm:^1.1.0": + version: 1.1.0 + resolution: "fs-readdir-recursive@npm:1.1.0" + checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c + languageName: node + linkType: hard + +"fs-write-stream-atomic@npm:^1.0.8": + version: 1.0.10 + resolution: "fs-write-stream-atomic@npm:1.0.10" + dependencies: + graceful-fs: "npm:^4.1.2" + iferr: "npm:^0.1.5" + imurmurhash: "npm:^0.1.4" + readable-stream: "npm:1 || 2" + checksum: 10c0/293b2b4ed346d35a28f8637a20cb2aef31be86503da501c42c2eda8fefed328bac16ce0e5daa7019f9329d73930c58031eaea2ce0c70f1680943fbfb7cff808b + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^1.2.7": + version: 1.2.13 + resolution: "fsevents@npm:1.2.13" + dependencies: + bindings: "npm:^1.5.0" + nan: "npm:^2.12.1" + checksum: 10c0/4427ff08db9ee7327f2c3ad58ec56f9096a917eed861bfffaa2e2be419479cdf37d00750869ab9ecbf5f59f32ad999bd59577d73fc639193e6c0ce52bb253e02 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@npm:^2.3.2, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^1.2.7#optional!builtin<compat/fsevents>": + version: 1.2.13 + resolution: "fsevents@patch:fsevents@npm%3A1.2.13#optional!builtin<compat/fsevents>::version=1.2.13&hash=d11327" + dependencies: + bindings: "npm:^1.5.0" + nan: "npm:^2.12.1" + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.2#optional!builtin<compat/fsevents>, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin<compat/fsevents>": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin<compat/fsevents>::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": + version: 1.1.6 + resolution: "function.prototype.name@npm:1.1.6" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + functions-have-names: "npm:^1.2.3" + checksum: 10c0/9eae11294905b62cb16874adb4fc687927cda3162285e0ad9612e6a1d04934005d46907362ea9cdb7428edce05a2f2c3dabc3b2d21e9fd343e9bb278230ad94b + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": + version: 1.2.4 + resolution: "get-intrinsic@npm:1.2.4" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + has-proto: "npm:^1.0.1" + has-symbols: "npm:^1.0.3" + hasown: "npm:^2.0.0" + checksum: 10c0/0a9b82c16696ed6da5e39b1267104475c47e3a9bdbe8b509dfe1710946e38a87be70d759f4bb3cda042d76a41ef47fe769660f3b7c0d1f68750299344ffb15b7 + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-source@npm:^2.0.12": + version: 2.0.12 + resolution: "get-source@npm:2.0.12" + dependencies: + data-uri-to-buffer: "npm:^2.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/b1db46d28902344fd9407e1f0ed0b8f3a85cb4650f85ba8cee9c0b422fc75118172f12f735706e2c6e034617b13a2fbc5266e7fab617ecb184f0cee074b9dd3e + languageName: node + linkType: hard + +"get-stream@npm:^4.1.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/294d876f667694a5ca23f0ca2156de67da950433b6fb53024833733975d32582896dbc7f257842d331809979efccf04d5e0b6b75ad4d45744c45f193fd497539 + languageName: node + linkType: hard + +"get-stream@npm:^5.1.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: "npm:^3.0.0" + checksum: 10c0/43797ffd815fbb26685bf188c8cfebecb8af87b3925091dd7b9a9c915993293d78e3c9e1bce125928ff92f2d0796f3889b92b5ec6d58d1041b574682132e0a80 + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.0.2": + version: 1.0.2 + resolution: "get-symbol-description@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + checksum: 10c0/867be6d63f5e0eb026cb3b0ef695ec9ecf9310febb041072d2e142f260bd91ced9eeb426b3af98791d1064e324e653424afa6fd1af17dee373bea48ae03162bc + languageName: node + linkType: hard + +"get-them-args@npm:1.3.2": + version: 1.3.2 + resolution: "get-them-args@npm:1.3.2" + checksum: 10c0/a75e26d7369a00f596dc9c3c7b4259a219d4486a0beef51d991867103cc8c07d22814a24210d9c9f56cefb35f9848e16fe120b57b3ec1ea333054e715059d586 + languageName: node + linkType: hard + +"get-value@npm:^2.0.3, get-value@npm:^2.0.6": + version: 2.0.6 + resolution: "get-value@npm:2.0.6" + checksum: 10c0/f069c132791b357c8fc4adfe9e2929b0a2c6e95f98ca7bc6fcbc27f8a302e552f86b4ae61ec56d9e9ac2544b93b6a39743d479866a37b43fcc104088ba74f0d9 + languageName: node + linkType: hard + +"glob-parent@npm:^3.1.0": + version: 3.1.0 + resolution: "glob-parent@npm:3.1.0" + dependencies: + is-glob: "npm:^3.1.0" + path-dirname: "npm:^1.0.0" + checksum: 10c0/bfa89ce5ae1dfea4c2ece7b61d2ea230d87fcbec7472915cfdb3f4caf688a91ecb0dc86ae39b1e17505adce7e64cae3b971d64dc66091f3a0131169fd631b00d + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.1, glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: 10c0/0486925072d7a916f052842772b61c3e86247f0a80cc0deb9b5a3e8a1a9faad5b04fb6f58986a09f34d3e96cd2a22a24b7e9882fb1cf904c31e9a310de96c429 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": + version: 10.3.10 + resolution: "glob@npm:10.3.10" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^2.3.5" + minimatch: "npm:^9.0.1" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry: "npm:^1.10.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/13d8a1feb7eac7945f8c8480e11cd4a44b24d26503d99a8d8ac8d5aefbf3e9802a2b6087318a829fad04cb4e829f25c5f4f1110c68966c498720dd261c7e344d + languageName: node + linkType: hard + +"glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.2.0": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.0.0, glob@npm:^8.0.1, glob@npm:^8.0.3": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^13.19.0": + version: 13.24.0 + resolution: "globals@npm:13.24.0" + dependencies: + type-fest: "npm:^0.20.2" + checksum: 10c0/d3c11aeea898eb83d5ec7a99508600fbe8f83d2cf00cbb77f873dbf2bcb39428eff1b538e4915c993d8a3b3473fa71eeebfe22c9bb3a3003d1e26b1f2c8a42cd + languageName: node + linkType: hard + +"globalthis@npm:^1.0.3": + version: 1.0.3 + resolution: "globalthis@npm:1.0.3" + dependencies: + define-properties: "npm:^1.1.3" + checksum: 10c0/0db6e9af102a5254630351557ac15e6909bc7459d3e3f6b001e59fe784c96d31108818f032d9095739355a88467459e6488ff16584ee6250cd8c27dec05af4b0 + languageName: node + linkType: hard + +"globby@npm:^11.0.3, globby@npm:^11.1.0": + version: 11.1.0 + resolution: "globby@npm:11.1.0" + dependencies: + array-union: "npm:^2.1.0" + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.2.9" + ignore: "npm:^5.2.0" + merge2: "npm:^1.4.1" + slash: "npm:^3.0.0" + checksum: 10c0/b39511b4afe4bd8a7aead3a27c4ade2b9968649abab0a6c28b1a90141b96ca68ca5db1302f7c7bd29eab66bf51e13916b8e0a3d0ac08f75e1e84a39b35691189 + languageName: node + linkType: hard + +"globby@npm:^13.1.1": + version: 13.2.2 + resolution: "globby@npm:13.2.2" + dependencies: + dir-glob: "npm:^3.0.1" + fast-glob: "npm:^3.3.0" + ignore: "npm:^5.2.4" + merge2: "npm:^1.4.1" + slash: "npm:^4.0.0" + checksum: 10c0/a8d7cc7cbe5e1b2d0f81d467bbc5bc2eac35f74eaded3a6c85fc26d7acc8e6de22d396159db8a2fc340b8a342e74cac58de8f4aee74146d3d146921a76062664 + languageName: node + linkType: hard + +"goober@npm:^2.1.10": + version: 2.1.14 + resolution: "goober@npm:2.1.14" + peerDependencies: + csstype: ^3.0.10 + checksum: 10c0/184eda787a9a14cffbaa8284e98dc127095e538b4acab2a84b81babca84253bb883e16208822e02584f27c7a69f3ec47341e5060dfa40a0e07c32ac1f79b2714 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.1.3" + checksum: 10c0/505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 + languageName: node + linkType: hard + +"got@npm:^9.6.0": + version: 9.6.0 + resolution: "got@npm:9.6.0" + dependencies: + "@sindresorhus/is": "npm:^0.14.0" + "@szmarczak/http-timer": "npm:^1.1.2" + cacheable-request: "npm:^6.0.0" + decompress-response: "npm:^3.3.0" + duplexer3: "npm:^0.1.4" + get-stream: "npm:^4.1.0" + lowercase-keys: "npm:^1.0.1" + mimic-response: "npm:^1.0.1" + p-cancelable: "npm:^1.0.0" + to-readable-stream: "npm:^1.0.0" + url-parse-lax: "npm:^3.0.0" + checksum: 10c0/5cb3111e14b48bf4fb8b414627be481ebfb14151ec867e80a74b6d1472489965b9c4f4ac5cf4f3b1f9b90c60a2ce63584d9072b16efd9a3171553e00afc5abc8 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"graphql-config@npm:^4.5.0": + version: 4.5.0 + resolution: "graphql-config@npm:4.5.0" + dependencies: + "@graphql-tools/graphql-file-loader": "npm:^7.3.7" + "@graphql-tools/json-file-loader": "npm:^7.3.7" + "@graphql-tools/load": "npm:^7.5.5" + "@graphql-tools/merge": "npm:^8.2.6" + "@graphql-tools/url-loader": "npm:^7.9.7" + "@graphql-tools/utils": "npm:^9.0.0" + cosmiconfig: "npm:8.0.0" + jiti: "npm:1.17.1" + minimatch: "npm:4.2.3" + string-env-interpolation: "npm:1.0.1" + tslib: "npm:^2.4.0" + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + checksum: 10c0/2f9fcc16fca402640f10d3b8c5502f2e77fe640b43ea1d9548664282f48fe2998707ef2e495d1b8b46b33f1c74bbf575c3981ed0a0af43cdfcad5356cae61ce7 + languageName: node + linkType: hard + +"graphql-depth-limit@npm:^1.1.0": + version: 1.1.0 + resolution: "graphql-depth-limit@npm:1.1.0" + dependencies: + arrify: "npm:^1.0.1" + peerDependencies: + graphql: "*" + checksum: 10c0/8f50268ab3e2553cfe64fad532a3bd60068865217f113ac7388bfea1484d36a7e711a1c26f6a03e67969923967f2a84b62618c07732ca2ca603c295f8a19dbf9 + languageName: node + linkType: hard + +"graphql-request@npm:^6.0.0": + version: 6.1.0 + resolution: "graphql-request@npm:6.1.0" + dependencies: + "@graphql-typed-document-node/core": "npm:^3.2.0" + cross-fetch: "npm:^3.1.5" + peerDependencies: + graphql: 14 - 16 + checksum: 10c0/f8167925a110e8e1de93d56c14245e7e64391dc8dce5002dd01bf24a3059f345d4ca1bb6ce2040e2ec78264211b0704e75da3e63984f0f74d2042f697a4e8cc6 + languageName: node + linkType: hard + +"graphql-scalars@npm:1.22.4": + version: 1.22.4 + resolution: "graphql-scalars@npm:1.22.4" + dependencies: + tslib: "npm:^2.5.0" + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/d7df28c7bcd274049ee2b93536036b22bc2591bdb86a627a46d4557161965df96c8da6c4f7dc01684d46580d75c7b2fbba7fc5042b763b5b6cba879dc79e010e + languageName: node + linkType: hard + +"graphql-sse@npm:2.5.2": + version: 2.5.2 + resolution: "graphql-sse@npm:2.5.2" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 10c0/0ceb6fd4b858d9a89a3e77e15157b94cc04f8ed0077a1581169f9bd4e6114940a448f5bcc8cc22be0562056b5e0f515960b239cccf1e7907e708ed4da6f12279 + languageName: node + linkType: hard + +"graphql-tag@npm:2.12.6, graphql-tag@npm:^2.11.0, graphql-tag@npm:^2.12.6": + version: 2.12.6 + resolution: "graphql-tag@npm:2.12.6" + dependencies: + tslib: "npm:^2.1.0" + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + checksum: 10c0/7763a72011bda454ed8ff1a0d82325f43ca6478e4ce4ab8b7910c4c651dd00db553132171c04d80af5d5aebf1ef6a8a9fd53ccfa33b90ddc00aa3d4be6114419 + languageName: node + linkType: hard + +"graphql-ws@npm:5.12.1": + version: 5.12.1 + resolution: "graphql-ws@npm:5.12.1" + peerDependencies: + graphql: ">=0.11 <=16" + checksum: 10c0/17338de4783b76e01a41e73a740beb72f9bde46750867463e394679cecc557f2af4ba59af8196e14aed1711a9b7ce6cff0149abc4ff27ca92497b988d6ebbac3 + languageName: node + linkType: hard + +"graphql-yoga@npm:5.1.1": + version: 5.1.1 + resolution: "graphql-yoga@npm:5.1.1" + dependencies: + "@envelop/core": "npm:^5.0.0" + "@graphql-tools/executor": "npm:^1.0.0" + "@graphql-tools/schema": "npm:^10.0.0" + "@graphql-tools/utils": "npm:^10.0.0" + "@graphql-yoga/logger": "npm:^2.0.0" + "@graphql-yoga/subscription": "npm:^5.0.0" + "@whatwg-node/fetch": "npm:^0.9.7" + "@whatwg-node/server": "npm:^0.9.1" + dset: "npm:^3.1.1" + lru-cache: "npm:^10.0.0" + tslib: "npm:^2.5.2" + peerDependencies: + graphql: ^15.2.0 || ^16.0.0 + checksum: 10c0/282b46c3539528c767b08351a7ddc3e2a171c5f8187ffaa70aaff144607da97a48fba7af3c4e43e97c9bd724ad867fa1861ab795be17e7d89f5f12f8cc56eb11 + languageName: node + linkType: hard + +"graphql@npm:16.8.1, graphql@npm:^16.0.0, graphql@npm:^16.8.1": + version: 16.8.1 + resolution: "graphql@npm:16.8.1" + checksum: 10c0/129c318156b466f440914de80dbf7bc67d17f776f2a088a40cb0da611d19a97c224b1c6d2b13cbcbc6e5776e45ed7468b8432f9c3536724e079b44f1a3d57a8a + languageName: node + linkType: hard + +"gzip-size@npm:^6.0.0": + version: 6.0.0 + resolution: "gzip-size@npm:6.0.0" + dependencies: + duplexer: "npm:^0.1.2" + checksum: 10c0/4ccb924626c82125897a997d1c84f2377846a6ef57fbee38f7c0e6b41387fba4d00422274440747b58008b5d60114bac2349c2908e9aba55188345281af40a3f + languageName: node + linkType: hard + +"handle-thing@npm:^2.0.0": + version: 2.0.1 + resolution: "handle-thing@npm:2.0.1" + checksum: 10c0/7ae34ba286a3434f1993ebd1cc9c9e6b6d8ea672182db28b1afc0a7119229552fa7031e3e5f3cd32a76430ece4e94b7da6f12af2eb39d6239a7693e4bd63a998 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 10c0/724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.0.1": + version: 1.0.3 + resolution: "has-proto@npm:1.0.3" + checksum: 10c0/35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": + version: 1.0.3 + resolution: "has-symbols@npm:1.0.3" + checksum: 10c0/e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"has-value@npm:^0.3.1": + version: 0.3.1 + resolution: "has-value@npm:0.3.1" + dependencies: + get-value: "npm:^2.0.3" + has-values: "npm:^0.1.4" + isobject: "npm:^2.0.0" + checksum: 10c0/7a7c2e9d07bc9742c81806150adb154d149bc6155267248c459cd1ce2a64b0759980d26213260e4b7599c8a3754551179f155ded88d0533a0d2bc7bc29028432 + languageName: node + linkType: hard + +"has-value@npm:^1.0.0": + version: 1.0.0 + resolution: "has-value@npm:1.0.0" + dependencies: + get-value: "npm:^2.0.6" + has-values: "npm:^1.0.0" + isobject: "npm:^3.0.0" + checksum: 10c0/17cdccaf50f8aac80a109dba2e2ee5e800aec9a9d382ef9deab66c56b34269e4c9ac720276d5ffa722764304a1180ae436df077da0dd05548cfae0209708ba4d + languageName: node + linkType: hard + +"has-values@npm:^0.1.4": + version: 0.1.4 + resolution: "has-values@npm:0.1.4" + checksum: 10c0/a8f00ad862c20289798c35243d5bd0b0a97dd44b668c2204afe082e0265f2d0bf3b89fc8cc0ef01a52b49f10aa35cf85c336ee3a5f1cac96ed490f5e901cdbf2 + languageName: node + linkType: hard + +"has-values@npm:^1.0.0": + version: 1.0.0 + resolution: "has-values@npm:1.0.0" + dependencies: + is-number: "npm:^3.0.0" + kind-of: "npm:^4.0.0" + checksum: 10c0/a6f2a1cc6b2e43eacc68e62e71ad6890def7f4b13d2ef06b4ad3ee156c23e470e6df144b9b467701908e17633411f1075fdff0cab45fb66c5e0584d89b25f35e + languageName: node + linkType: hard + +"hash-base@npm:^3.0.0": + version: 3.1.0 + resolution: "hash-base@npm:3.1.0" + dependencies: + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.6.0" + safe-buffer: "npm:^5.2.0" + checksum: 10c0/663eabcf4173326fbb65a1918a509045590a26cc7e0964b754eef248d281305c6ec9f6b31cb508d02ffca383ab50028180ce5aefe013e942b44a903ac8dc80d0 + languageName: node + linkType: hard + +"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": + version: 1.1.7 + resolution: "hash.js@npm:1.1.7" + dependencies: + inherits: "npm:^2.0.3" + minimalistic-assert: "npm:^1.0.1" + checksum: 10c0/41ada59494eac5332cfc1ce6b7ebdd7b88a3864a6d6b08a3ea8ef261332ed60f37f10877e0c825aaa4bddebf164fbffa618286aeeec5296675e2671cbfa746c4 + languageName: node + linkType: hard + +"hasown@npm:^2.0.0, hasown@npm:^2.0.1": + version: 2.0.1 + resolution: "hasown@npm:2.0.1" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/9e27e70e8e4204f4124c8f99950d1ba2b1f5174864fd39ff26da190f9ea6488c1b3927dcc64981c26d1f637a971783c9489d62c829d393ea509e6f1ba20370bb + languageName: node + linkType: hard + +"he@npm:^1.2.0": + version: 1.2.0 + resolution: "he@npm:1.2.0" + bin: + he: bin/he + checksum: 10c0/a27d478befe3c8192f006cdd0639a66798979dfa6e2125c6ac582a19a5ebfec62ad83e8382e6036170d873f46e4536a7e795bf8b95bf7c247f4cc0825ccc8c17 + languageName: node + linkType: hard + +"header-case@npm:^2.0.4": + version: 2.0.4 + resolution: "header-case@npm:2.0.4" + dependencies: + capital-case: "npm:^1.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/c9f295d9d8e38fa50679281fd70d80726962256e888a76c8e72e526453da7a1832dcb427caa716c1ad5d79841d4537301b90156fa30298fefd3d68f4ea2181bb + languageName: node + linkType: hard + +"headers-polyfill@npm:3.2.5": + version: 3.2.5 + resolution: "headers-polyfill@npm:3.2.5" + checksum: 10c0/10202f4ebfaecd6aa31305f29664f876ac01d9174a3fb8fcc5a0df3eaf9c1767fb0d6cf6f961484f2bfd2101b6768090976f146bd88aeedd07af4e741cb2dcb7 + languageName: node + linkType: hard + +"hmac-drbg@npm:^1.0.1": + version: 1.0.1 + resolution: "hmac-drbg@npm:1.0.1" + dependencies: + hash.js: "npm:^1.0.3" + minimalistic-assert: "npm:^1.0.0" + minimalistic-crypto-utils: "npm:^1.0.1" + checksum: 10c0/f3d9ba31b40257a573f162176ac5930109816036c59a09f901eb2ffd7e5e705c6832bedfff507957125f2086a0ab8f853c0df225642a88bf1fcaea945f20600d + languageName: node + linkType: hard + +"hoist-non-react-statics@npm:^3.3.2": + version: 3.3.2 + resolution: "hoist-non-react-statics@npm:3.3.2" + dependencies: + react-is: "npm:^16.7.0" + checksum: 10c0/fe0889169e845d738b59b64badf5e55fa3cf20454f9203d1eb088df322d49d4318df774828e789898dcb280e8a5521bb59b3203385662ca5e9218a6ca5820e74 + languageName: node + linkType: hard + +"hpack.js@npm:^2.1.6": + version: 2.1.6 + resolution: "hpack.js@npm:2.1.6" + dependencies: + inherits: "npm:^2.0.1" + obuf: "npm:^1.0.0" + readable-stream: "npm:^2.0.1" + wbuf: "npm:^1.1.0" + checksum: 10c0/55b9e824430bab82a19d079cb6e33042d7d0640325678c9917fcc020c61d8a08ca671b6c942c7f0aae9bb6e4b67ffb50734a72f9e21d66407c3138c1983b70f0 + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^3.0.0": + version: 3.0.0 + resolution: "html-encoding-sniffer@npm:3.0.0" + dependencies: + whatwg-encoding: "npm:^2.0.0" + checksum: 10c0/b17b3b0fb5d061d8eb15121c3b0b536376c3e295ecaf09ba48dd69c6b6c957839db124fe1e2b3f11329753a4ee01aa7dedf63b7677999e86da17fbbdd82c5386 + languageName: node + linkType: hard + +"html-entities@npm:^2.1.0, html-entities@npm:^2.3.2": + version: 2.4.0 + resolution: "html-entities@npm:2.4.0" + checksum: 10c0/42bbd5d91f451625d7e35aaed41c8cd110054c0d0970764cb58df467b3f27f20199e8cf7b4aebc8d4eeaf17a27c0d1fb165f2852db85de200995d0f009c9011d + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"html-minifier-terser@npm:^6.0.2": + version: 6.1.0 + resolution: "html-minifier-terser@npm:6.1.0" + dependencies: + camel-case: "npm:^4.1.2" + clean-css: "npm:^5.2.2" + commander: "npm:^8.3.0" + he: "npm:^1.2.0" + param-case: "npm:^3.0.4" + relateurl: "npm:^0.2.7" + terser: "npm:^5.10.0" + bin: + html-minifier-terser: cli.js + checksum: 10c0/1aa4e4f01cf7149e3ac5ea84fb7a1adab86da40d38d77a6fff42852b5ee3daccb78b615df97264e3a6a5c33e57f0c77f471d607ca1e1debd1dab9b58286f4b5a + languageName: node + linkType: hard + +"html-webpack-plugin@npm:5.5.4": + version: 5.5.4 + resolution: "html-webpack-plugin@npm:5.5.4" + dependencies: + "@types/html-minifier-terser": "npm:^6.0.0" + html-minifier-terser: "npm:^6.0.2" + lodash: "npm:^4.17.21" + pretty-error: "npm:^4.0.0" + tapable: "npm:^2.0.0" + peerDependencies: + webpack: ^5.20.0 + checksum: 10c0/fd7b9882a7b44b78711d3489fd571308372a915924c2e619ad8a08d9100a17ae8899a3d3bb1934c326d45bf942330a693206088ba80f292dd6574d9e33c67a43 + languageName: node + linkType: hard + +"htmlparser2@npm:^6.1.0": + version: 6.1.0 + resolution: "htmlparser2@npm:6.1.0" + dependencies: + domelementtype: "npm:^2.0.1" + domhandler: "npm:^4.0.0" + domutils: "npm:^2.5.2" + entities: "npm:^2.0.0" + checksum: 10c0/3058499c95634f04dc66be8c2e0927cd86799413b2d6989d8ae542ca4dbf5fa948695d02c27d573acf44843af977aec6d9a7bdd0f6faa6b2d99e2a729b2a31b6 + languageName: node + linkType: hard + +"htmlparser2@npm:^8.0.1": + version: 8.0.2 + resolution: "htmlparser2@npm:8.0.2" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.0.1" + entities: "npm:^4.4.0" + checksum: 10c0/609cca85886d0bf2c9a5db8c6926a89f3764596877492e2caa7a25a789af4065bc6ee2cdc81807fe6b1d03a87bf8a373b5a754528a4cc05146b713c20575aab4 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.1": + version: 4.1.1 + resolution: "http-cache-semantics@npm:4.1.1" + checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + languageName: node + linkType: hard + +"http-deceiver@npm:^1.2.7": + version: 1.2.7 + resolution: "http-deceiver@npm:1.2.7" + checksum: 10c0/8bb9b716f5fc55f54a451da7f49b9c695c3e45498a789634daec26b61e4add7c85613a4a9e53726c39d09de7a163891ecd6eb5809adb64500a840fd86fe81d03 + languageName: node + linkType: hard + +"http-errors@npm:2.0.0": + version: 2.0.0 + resolution: "http-errors@npm:2.0.0" + dependencies: + depd: "npm:2.0.0" + inherits: "npm:2.0.4" + setprototypeof: "npm:1.2.0" + statuses: "npm:2.0.1" + toidentifier: "npm:1.0.1" + checksum: 10c0/fc6f2715fe188d091274b5ffc8b3657bd85c63e969daa68ccb77afb05b071a4b62841acb7a21e417b5539014dff2ebf9550f0b14a9ff126f2734a7c1387f8e19 + languageName: node + linkType: hard + +"http-errors@npm:~1.6.2": + version: 1.6.3 + resolution: "http-errors@npm:1.6.3" + dependencies: + depd: "npm:~1.1.2" + inherits: "npm:2.0.3" + setprototypeof: "npm:1.1.0" + statuses: "npm:>= 1.4.0 < 2" + checksum: 10c0/17ec4046ee974477778bfdd525936c254b872054703ec2caa4d6f099566b8adade636ae6aeeacb39302c5cd6e28fb407ebd937f500f5010d0b6850750414ff78 + languageName: node + linkType: hard + +"http-parser-js@npm:>=0.5.1": + version: 0.5.8 + resolution: "http-parser-js@npm:0.5.8" + checksum: 10c0/4ed89f812c44f84c4ae5d43dd3a0c47942b875b63be0ed2ccecbe6b0018af867d806495fc6e12474aff868721163699c49246585bddea4f0ecc6d2b02e19faf1 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^6.0.0": + version: 6.1.1 + resolution: "http-proxy-agent@npm:6.1.1" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/c7f13487f22209e334d50923c5bbfc5abdeeec19d2adc6780172cbeecd1b95df1543f35842ce2a7149cab43c4ba460ac6ab2e05ecc5e36f399f2ff0a829686db + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"http-proxy-middleware@npm:^2.0.3": + version: 2.0.6 + resolution: "http-proxy-middleware@npm:2.0.6" + dependencies: + "@types/http-proxy": "npm:^1.17.8" + http-proxy: "npm:^1.18.1" + is-glob: "npm:^4.0.1" + is-plain-obj: "npm:^3.0.0" + micromatch: "npm:^4.0.2" + peerDependencies: + "@types/express": ^4.17.13 + peerDependenciesMeta: + "@types/express": + optional: true + checksum: 10c0/25a0e550dd1900ee5048a692e0e9b2b6339d06d487a705d90c47e359e9c6561d648cd7862d001d090e651c9efffa1b6e5160fcf1f299b5fa4935f76e9754eb11 + languageName: node + linkType: hard + +"http-proxy@npm:^1.18.1": + version: 1.18.1 + resolution: "http-proxy@npm:1.18.1" + dependencies: + eventemitter3: "npm:^4.0.0" + follow-redirects: "npm:^1.0.0" + requires-port: "npm:^1.0.0" + checksum: 10c0/148dfa700a03fb421e383aaaf88ac1d94521dfc34072f6c59770528c65250983c2e4ec996f2f03aa9f3fe46cd1270a593126068319311e3e8d9e610a37533e94 + languageName: node + linkType: hard + +"https-browserify@npm:^1.0.0": + version: 1.0.0 + resolution: "https-browserify@npm:1.0.0" + checksum: 10c0/e17b6943bc24ea9b9a7da5714645d808670af75a425f29baffc3284962626efdc1eb3aa9bbffaa6e64028a6ad98af5b09fabcb454a8f918fb686abfdc9e9b8ae + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.1": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^6.0.0": + version: 6.2.1 + resolution: "https-proxy-agent@npm:6.2.1" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/18fb405545c54c0c5131f3c6bedecf36c73095dac368c234e5775e655a0fa176e091d9fd651c9b9e9daadf6dac415116de04f76d791642216b32cc32a8592ebc + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 10c0/bc4f7c38da32a5fc622450b6cb49a24ff596f9bd48dcedb52d2da3fa1c1a80e100fb506bd59b326c012f21c863c69b275c23de1a01d0b84db396822fdf25e52b + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"humanize-string@npm:2.1.0": + version: 2.1.0 + resolution: "humanize-string@npm:2.1.0" + dependencies: + decamelize: "npm:^2.0.0" + checksum: 10c0/a0ed69264b5069137afb369b46e18e8dbeb67edc7fb2ad1de18554108943e2fc59155f898013fb7a2f03522879adad7c9a93f1c88428844bcbee006c98db8f0a + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3" + checksum: 10c0/c6886a24cc00f2a059767440ec1bc00d334a89f250db8e0f7feb4961c8727118457e27c495ba94d082e51d3baca378726cd110aaf7ded8b9bbfd6a44760cf1d4 + languageName: node + linkType: hard + +"iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"icss-utils@npm:^5.0.0, icss-utils@npm:^5.1.0": + version: 5.1.0 + resolution: "icss-utils@npm:5.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/39c92936fabd23169c8611d2b5cc39e39d10b19b0d223352f20a7579f75b39d5f786114a6b8fc62bee8c5fed59ba9e0d38f7219a4db383e324fb3061664b043d + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"iferr@npm:^0.1.5": + version: 0.1.5 + resolution: "iferr@npm:0.1.5" + checksum: 10c0/e0669b1757d0501b43a158321945d1cc1fe56f28a972df2f88a5818f05c8853c7669ba5d6cfbbf9a1a312850699de6e528626df108d559005df7e15d16ee334c + languageName: node + linkType: hard + +"ignore-by-default@npm:^1.0.1": + version: 1.0.1 + resolution: "ignore-by-default@npm:1.0.1" + checksum: 10c0/9ab6e70e80f7cc12735def7ecb5527cfa56ab4e1152cd64d294522827f2dcf1f6d85531241537dc3713544e88dd888f65cb3c49c7b2cddb9009087c75274e533 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0, ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 10c0/703f7f45ffb2a27fb2c5a8db0c32e7dee66b33a225d28e8db4e1be6474795f606686a6e3bcc50e1aa12f2042db4c9d4a7d60af3250511de74620fbed052ea4cd + languageName: node + linkType: hard + +"immutable@npm:~3.7.6": + version: 3.7.6 + resolution: "immutable@npm:3.7.6" + checksum: 10c0/efe2bbb2620aa897afbb79545b9eda4dd3dc072e05ae7004895a7efb43187e4265612a88f8723f391eb1c87c46c52fd11e2d1968e42404450c63e49558d7ca4e + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + languageName: node + linkType: hard + +"import-from@npm:4.0.0": + version: 4.0.0 + resolution: "import-from@npm:4.0.0" + checksum: 10c0/7fd98650d555e418c18341fef49ae11afc833f5ae70b7043e99684187cba6ac6b52e4118a491bd9f856045495bef5bdda7321095e65bcb2ef70ce2adf9f0d8d1 + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.1.0 + resolution: "import-local@npm:3.1.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/c67ecea72f775fe8684ca3d057e54bdb2ae28c14bf261d2607c269c18ea0da7b730924c06262eca9aed4b8ab31e31d65bc60b50e7296c85908a56e2f7d41ecd2 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.3": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"inherits@npm:2.0.3": + version: 2.0.3 + resolution: "inherits@npm:2.0.3" + checksum: 10c0/6e56402373149ea076a434072671f9982f5fad030c7662be0332122fe6c0fa490acb3cc1010d90b6eff8d640b1167d77674add52dfd1bb85d545cf29e80e73e7 + languageName: node + linkType: hard + +"ini@npm:~1.3.0": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 10c0/ec93838d2328b619532e4f1ff05df7909760b6f66d9c9e2ded11e5c1897d6f2f9980c54dd638f88654b00919ce31e827040631eab0a3969e4d1abefa0719516a + languageName: node + linkType: hard + +"inquirer@npm:^8.0.0, inquirer@npm:^8.2.0": + version: 8.2.6 + resolution: "inquirer@npm:8.2.6" + dependencies: + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.1.1" + cli-cursor: "npm:^3.1.0" + cli-width: "npm:^3.0.0" + external-editor: "npm:^3.0.3" + figures: "npm:^3.0.0" + lodash: "npm:^4.17.21" + mute-stream: "npm:0.0.8" + ora: "npm:^5.4.1" + run-async: "npm:^2.4.0" + rxjs: "npm:^7.5.5" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + through: "npm:^2.3.6" + wrap-ansi: "npm:^6.0.1" + checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + languageName: node + linkType: hard + +"internal-slot@npm:^1.0.4, internal-slot@npm:^1.0.5, internal-slot@npm:^1.0.7": + version: 1.0.7 + resolution: "internal-slot@npm:1.0.7" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/f8b294a4e6ea3855fc59551bbf35f2b832cf01fd5e6e2a97f5c201a071cc09b49048f856e484b67a6c721da5e55736c5b6ddafaf19e2dbeb4a3ff1821680de6c + languageName: node + linkType: hard + +"interpret@npm:^3.1.1": + version: 3.1.1 + resolution: "interpret@npm:3.1.1" + checksum: 10c0/6f3c4d0aa6ec1b43a8862375588a249e3c917739895cbe67fe12f0a76260ea632af51e8e2431b50fbcd0145356dc28ca147be08dbe6a523739fd55c0f91dc2a5 + languageName: node + linkType: hard + +"invariant@npm:^2.2.4": + version: 2.2.4 + resolution: "invariant@npm:2.2.4" + dependencies: + loose-envify: "npm:^1.0.0" + checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"ipaddr.js@npm:1.9.1": + version: 1.9.1 + resolution: "ipaddr.js@npm:1.9.1" + checksum: 10c0/0486e775047971d3fdb5fb4f063829bac45af299ae0b82dcf3afa2145338e08290563a2a70f34b732d795ecc8311902e541a8530eeb30d75860a78ff4e94ce2a + languageName: node + linkType: hard + +"ipaddr.js@npm:^2.0.1": + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 10c0/9aa43ff99771e3d14ab3683df3909b3b033fe81337646bc63780b00ec9bc51d4a696a047c0b261c05867c0a25086ab03f0ce32ea444a6b39e10fac1315d53cab + languageName: node + linkType: hard + +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: "npm:^1.0.0" + is-windows: "npm:^1.0.1" + checksum: 10c0/422302ce879d4f3ca6848499b6f3ddcc8fd2dc9f3e9cad3f6bcedff58cdfbbbd7f4c28600fffa7c59a858f1b15c27fb6cfe1d5275e58a36d2bf098a44ef5abc4 + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^1.0.1": + version: 1.0.1 + resolution: "is-accessor-descriptor@npm:1.0.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/d034034074c5ffeb6c868e091083182279db1a956f49f8d1494cecaa0f8b99d706556ded2a9b20d9aa290549106eef8204d67d8572902e06dcb1add6db6b524d + languageName: node + linkType: hard + +"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": + version: 1.1.1 + resolution: "is-arguments@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/5ff1f341ee4475350adfc14b2328b38962564b7c2076be2f5bac7bd9b61779efba99b9f844a7b82ba7654adccf8e8eb19d1bb0cc6d1c1a085e498f6793d4328f + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": + version: 3.0.4 + resolution: "is-array-buffer@npm:3.0.4" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.1" + checksum: 10c0/42a49d006cc6130bc5424eae113e948c146f31f9d24460fc0958f855d9d810e6fd2e4519bf19aab75179af9c298ea6092459d8cafdec523cd19e529b26eab860 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 + languageName: node + linkType: hard + +"is-bigint@npm:^1.0.1": + version: 1.0.4 + resolution: "is-bigint@npm:1.0.4" + dependencies: + has-bigints: "npm:^1.0.1" + checksum: 10c0/eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + languageName: node + linkType: hard + +"is-binary-path@npm:^1.0.0": + version: 1.0.1 + resolution: "is-binary-path@npm:1.0.1" + dependencies: + binary-extensions: "npm:^1.0.0" + checksum: 10c0/16e456fa3782eaf3d8e28d382b750507e3d54ff6694df8a1b2c6498da321e2ead311de9c42e653d8fb3213de72bac204b5f97e4a110cda8a72f17b1c1b4eb643 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.1.0": + version: 1.1.2 + resolution: "is-boolean-object@npm:1.1.2" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + languageName: node + linkType: hard + +"is-buffer@npm:^1.1.5": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 10c0/ae18aa0b6e113d6c490ad1db5e8df9bdb57758382b313f5a22c9c61084875c6396d50bbf49315f5b1926d142d74dfb8d31b40d993a383e0a158b15fea7a82234 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/2cba9903aaa52718f11c4896dabc189bab980870aae86a62dc0d5cedb546896770ee946fb14c84b7adf0735f5eaea4277243f1b95f5cefa90054f92fbcac2518 + languageName: node + linkType: hard + +"is-data-descriptor@npm:^1.0.1": + version: 1.0.1 + resolution: "is-data-descriptor@npm:1.0.1" + dependencies: + hasown: "npm:^2.0.0" + checksum: 10c0/ad3acc372e3227f87eb8cdba112c343ca2a67f1885aecf64f02f901cb0858a1fc9488ad42135ab102e9d9e71a62b3594740790bb103a9ba5da830a131a89e3e8 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": + version: 1.0.5 + resolution: "is-date-object@npm:1.0.5" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/eed21e5dcc619c48ccef804dfc83a739dbb2abee6ca202838ee1bd5f760fe8d8a93444f0d49012ad19bb7c006186e2884a1b92f6e1c056da7fd23d0a9ad5992e + languageName: node + linkType: hard + +"is-descriptor@npm:^0.1.0": + version: 0.1.7 + resolution: "is-descriptor@npm:0.1.7" + dependencies: + is-accessor-descriptor: "npm:^1.0.1" + is-data-descriptor: "npm:^1.0.1" + checksum: 10c0/f5960b9783f508aec570465288cb673d4b3cc4aae4e6de970c3afd9a8fc1351edcb85d78b2cce2ec5251893a423f73263cab3bb94cf365a8d71b5d510a116392 + languageName: node + linkType: hard + +"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": + version: 1.0.3 + resolution: "is-descriptor@npm:1.0.3" + dependencies: + is-accessor-descriptor: "npm:^1.0.1" + is-data-descriptor: "npm:^1.0.1" + checksum: 10c0/b4ee667ea787d3a0be4e58536087fd0587de2b0b6672fbfe288f5b8d831ac4b79fd987f31d6c2d4e5543a42c97a87428bc5215ce292a1a47070147793878226f + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": + version: 2.2.1 + resolution: "is-docker@npm:2.2.1" + bin: + is-docker: cli.js + checksum: 10c0/e828365958d155f90c409cdbe958f64051d99e8aedc2c8c4cd7c89dcf35329daed42f7b99346f7828df013e27deb8f721cf9408ba878c76eb9e8290235fbcdcc + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 10c0/dd5ca3994a28e1740d1e25192e66eed128e0b2ff161a7ea348e87ae4f616554b486854de423877a2a2c171d5f7cd6e8093b91f54533bc88a59ee1c9838c43879 + languageName: node + linkType: hard + +"is-extendable@npm:^1.0.1": + version: 1.0.1 + resolution: "is-extendable@npm:1.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + checksum: 10c0/1d6678a5be1563db6ecb121331c819c38059703f0179f52aa80c242c223ee9c6b66470286636c0e63d7163e4d905c0a7d82a096e0b5eaeabb51b9f8d0af0d73f + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.0.2": + version: 1.0.2 + resolution: "is-finalizationregistry@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/81caecc984d27b1a35c68741156fc651fb1fa5e3e6710d21410abc527eb226d400c0943a167922b2e920f6b3e58b0dede9aa795882b038b85f50b3a4b877db86 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^4.0.0": + version: 4.0.0 + resolution: "is-fullwidth-code-point@npm:4.0.0" + checksum: 10c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8 + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10, is-generator-function@npm:^1.0.7": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + +"is-glob@npm:4.0.3, is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-glob@npm:^3.1.0": + version: 3.1.0 + resolution: "is-glob@npm:3.1.0" + dependencies: + is-extglob: "npm:^2.1.0" + checksum: 10c0/ba816a35dcf5285de924a8a4654df7b183a86381d73ea3bbf3df3cc61b3ba61fdddf90ee205709a2235b210ee600ee86e5e8600093cf291a662607fd032e2ff4 + languageName: node + linkType: hard + +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + +"is-lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/c045e6a52dcc7c3857e2f8c850ded604cdc5269ff94625b03881cefc73bfc02f5099a1bc9bafa67793656711a40d4ab3e26e285a848e728506df20ead0ce8e2f + languageName: node + linkType: hard + +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": + version: 2.0.2 + resolution: "is-map@npm:2.0.2" + checksum: 10c0/119ff9137a37fd131a72fab3f4ab8c9d6a24b0a1ee26b4eff14dc625900d8675a97785eea5f4174265e2006ed076cc24e89f6e57ebd080a48338d914ec9168a5 + languageName: node + linkType: hard + +"is-nan@npm:^1.3.2": + version: 1.3.2 + resolution: "is-nan@npm:1.3.2" + dependencies: + call-bind: "npm:^1.0.0" + define-properties: "npm:^1.1.3" + checksum: 10c0/8bfb286f85763f9c2e28ea32e9127702fe980ffd15fa5d63ade3be7786559e6e21355d3625dd364c769c033c5aedf0a2ed3d4025d336abf1b9241e3d9eddc5b0 + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.2": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-node-process@npm:^1.2.0": + version: 1.2.0 + resolution: "is-node-process@npm:1.2.0" + checksum: 10c0/5b24fda6776d00e42431d7bcd86bce81cb0b6cabeb944142fe7b077a54ada2e155066ad06dbe790abdb397884bdc3151e04a9707b8cd185099efbc79780573ed + languageName: node + linkType: hard + +"is-number-object@npm:^1.0.4": + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + languageName: node + linkType: hard + +"is-number@npm:^3.0.0": + version: 3.0.0 + resolution: "is-number@npm:3.0.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/e639c54640b7f029623df24d3d103901e322c0c25ea5bde97cd723c2d0d4c05857a8364ab5c58d963089dbed6bf1d0ffe975cb6aef917e2ad0ccbca653d31b4f + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-obj@npm:^1.0.0": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 10c0/5003acba0af7aa47dfe0760e545a89bbac89af37c12092c3efadc755372cdaec034f130e7a3653a59eb3c1843cfc72ca71eaf1a6c3bafe5a0bab3611a47f9945 + languageName: node + linkType: hard + +"is-object@npm:~1.0.1": + version: 1.0.2 + resolution: "is-object@npm:1.0.2" + checksum: 10c0/9cfb80c3a850f453d4a77297e0556bc2040ac6bea5b6e418aee208654938b36bab768169bef3945ccfac7a9bb460edd8034e7c6d8973bcf147d7571e1b53e764 + languageName: node + linkType: hard + +"is-path-inside@npm:^3.0.3": + version: 3.0.3 + resolution: "is-path-inside@npm:3.0.3" + checksum: 10c0/cf7d4ac35fb96bab6a1d2c3598fe5ebb29aafb52c0aaa482b5a3ed9d8ba3edc11631e3ec2637660c44b3ce0e61a08d54946e8af30dec0b60a7c27296c68ffd05 + languageName: node + linkType: hard + +"is-plain-obj@npm:^3.0.0": + version: 3.0.0 + resolution: "is-plain-obj@npm:3.0.0" + checksum: 10c0/8e6483bfb051d42ec9c704c0ede051a821c6b6f9a6c7a3e3b55aa855e00981b0580c8f3b1f5e2e62649b39179b1abfee35d6f8086d999bfaa32c1908d29b07bc + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + languageName: node + linkType: hard + +"is-plain-object@npm:^5.0.0": + version: 5.0.0 + resolution: "is-plain-object@npm:5.0.0" + checksum: 10c0/893e42bad832aae3511c71fd61c0bf61aa3a6d853061c62a307261842727d0d25f761ce9379f7ba7226d6179db2a3157efa918e7fe26360f3bf0842d9f28942c + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.1": + version: 1.0.1 + resolution: "is-potential-custom-element-name@npm:1.0.1" + checksum: 10c0/b73e2f22bc863b0939941d369486d308b43d7aef1f9439705e3582bfccaa4516406865e32c968a35f97a99396dac84e2624e67b0a16b0a15086a785e16ce7db9 + languageName: node + linkType: hard + +"is-regex@npm:^1.1.4": + version: 1.1.4 + resolution: "is-regex@npm:1.1.4" + dependencies: + call-bind: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + languageName: node + linkType: hard + +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: "npm:^1.0.0" + checksum: 10c0/61157c4be8594dd25ac6f0ef29b1218c36667259ea26698367a4d9f39ff9018368bc365c490b3c79be92dfb1e389e43c4b865c95709e7b3bc72c5932f751fb60 + languageName: node + linkType: hard + +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": + version: 2.0.2 + resolution: "is-set@npm:2.0.2" + checksum: 10c0/5f8bd1880df8c0004ce694e315e6e1e47a3452014be792880bb274a3b2cdb952fdb60789636ca6e084c7947ca8b7ae03ccaf54c93a7fcfed228af810559e5432 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/cfeee6f171f1b13e6cbc6f3b6cc44e192b93df39f3fcb31aa66ffb1d2df3b91e05664311659f9701baba62f5e98c83b0673c628e7adc30f55071c4874fcdccec + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-string@npm:^1.0.5, is-string@npm:^1.0.7": + version: 1.0.7 + resolution: "is-string@npm:1.0.7" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: 10c0/905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": + version: 1.0.4 + resolution: "is-symbol@npm:1.0.4" + dependencies: + has-symbols: "npm:^1.0.2" + checksum: 10c0/9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3, is-typed-array@npm:^1.1.9": + version: 1.1.13 + resolution: "is-typed-array@npm:1.1.13" + dependencies: + which-typed-array: "npm:^1.1.14" + checksum: 10c0/fa5cb97d4a80e52c2cc8ed3778e39f175a1a2ae4ddf3adae3187d69586a1fd57cfa0b095db31f66aa90331e9e3da79184cea9c6abdcd1abc722dc3c3edd51cca + languageName: node + linkType: hard + +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: "npm:^0.1.2" + checksum: 10c0/ac1b78f9b748196e3be3d0e722cd4b0f98639247a130a8f2473a58b29baf63fdb1b1c5a12c830660c5ee6ef0279c5418ca8e346f98cbe1a29e433d7ae531d42e + languageName: node + linkType: hard + +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"is-upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "is-upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/2236f416484a2643d55a07cc95443cecf96cbc5fb0de7f24c506a8bc5cc4c4de885ab56c5ec946eadd95b3b7960bff7ed51cc88511fa8e8a9d92f2f8969622d9 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 10c0/9c9fec9efa7bf5030a4a927f33fff2a6976b93646259f92b517d3646c073cc5b98283a162ce75c412b060a46de07032444b530f0a4c9b6e012ef8f1741c3a987 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2": + version: 1.0.2 + resolution: "is-weakref@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + checksum: 10c0/1545c5d172cb690c392f2136c23eec07d8d78a7f57d0e41f10078aa4f5daf5d7f57b6513a67514ab4f073275ad00c9822fc8935e00229d0a2089e1c02685d4b1 + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: "npm:^1.0.2" + get-intrinsic: "npm:^1.1.1" + checksum: 10c0/ef5136bd446ae4603229b897f73efd0720c6ab3ec6cc05c8d5c4b51aa9f95164713c4cad0a22ff1fedf04865ff86cae4648bc1d5eead4b6388e1150525af1cc1 + languageName: node + linkType: hard + +"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: 10c0/b32f418ab3385604a66f1b7a3ce39d25e8881dee0bd30816dc8344ef6ff9df473a732bcc1ec4e84fe99b2f229ae474f7133e8e93f9241686cfcf7eebe53ba7a5 + languageName: node + linkType: hard + +"is-wsl@npm:^1.1.0": + version: 1.1.0 + resolution: "is-wsl@npm:1.1.0" + checksum: 10c0/7ad0012f21092d6f586c7faad84755a8ef0da9b9ec295e4dc82313cce4e1a93a3da3c217265016461f9b141503fe55fa6eb1fd5457d3f05e8d1bdbb48e50c13a + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: "npm:^2.0.0" + checksum: 10c0/a6fa2d370d21be487c0165c7a440d567274fbba1a817f2f0bfa41cc5e3af25041d84267baa22df66696956038a43973e72fca117918c91431920bdef490fa25e + languageName: node + linkType: hard + +"isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: 10c0/18b5be6669be53425f0b84098732670ed4e727e3af33bc7f948aac01782110eb9a18b3b329c5323bcdd3acdaae547ee077d3951317e7f133bff7105264b3003d + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isobject@npm:^2.0.0": + version: 2.1.0 + resolution: "isobject@npm:2.1.0" + dependencies: + isarray: "npm:1.0.0" + checksum: 10c0/c4cafec73b3b2ee11be75dff8dafd283b5728235ac099b07d7873d5182553a707768e208327bbc12931b9422d8822280bf88d894a0024ff5857b3efefb480e7b + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + languageName: node + linkType: hard + +"isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": + version: 5.0.0 + resolution: "isomorphic-ws@npm:5.0.0" + peerDependencies: + ws: "*" + checksum: 10c0/a058ac8b5e6efe9e46252cb0bc67fd325005d7216451d1a51238bc62d7da8486f828ef017df54ddf742e0fffcbe4b1bcc2a66cc115b027ed0180334cd18df252 + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^5.0.4": + version: 5.2.1 + resolution: "istanbul-lib-instrument@npm:5.2.1" + dependencies: + "@babel/core": "npm:^7.12.3" + "@babel/parser": "npm:^7.14.7" + "@istanbuljs/schema": "npm:^0.1.2" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^6.3.0" + checksum: 10c0/8a1bdf3e377dcc0d33ec32fe2b6ecacdb1e4358fd0eb923d4326bb11c67622c0ceb99600a680f3dad5d29c66fc1991306081e339b4d43d0b8a2ab2e1d910a6ee + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.2 + resolution: "istanbul-lib-instrument@npm:6.0.2" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/405c6ac037bf8c7ee7495980b0cd5544b2c53078c10534d0c9ceeb92a9ea7dcf8510f58ccfce31336458a8fa6ccef27b570bbb602abaa8c1650f5496a807477c + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.1 + resolution: "istanbul-lib-source-maps@npm:4.0.1" + dependencies: + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + source-map: "npm:^0.6.1" + checksum: 10c0/19e4cc405016f2c906dff271a76715b3e881fa9faeb3f09a86cb99b8512b3a5ed19cadfe0b54c17ca0e54c1142c9c6de9330d65506e35873994e06634eebeb66 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"iterator.prototype@npm:^1.1.2": + version: 1.1.2 + resolution: "iterator.prototype@npm:1.1.2" + dependencies: + define-properties: "npm:^1.2.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + reflect.getprototypeof: "npm:^1.0.4" + set-function-name: "npm:^2.0.1" + checksum: 10c0/a32151326095e916f306990d909f6bbf23e3221999a18ba686419535dcd1749b10ded505e89334b77dc4c7a58a8508978f0eb16c2c8573e6d412eb7eb894ea79 + languageName: node + linkType: hard + +"jackspeak@npm:^2.3.5": + version: 2.3.6 + resolution: "jackspeak@npm:2.3.6" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/f01d8f972d894cd7638bc338e9ef5ddb86f7b208ce177a36d718eac96ec86638a6efa17d0221b10073e64b45edc2ce15340db9380b1f5d5c5d000cbc517dc111 + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" + dependencies: + execa: "npm:^5.0.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/e071384d9e2f6bb462231ac53f29bff86f0e12394c1b49ccafbad225ce2ab7da226279a8a94f421949920bef9be7ef574fd86aee22e8adfa149be73554ab828b + languageName: node + linkType: hard + +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/expect": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + co: "npm:^4.6.0" + dedent: "npm:^1.0.0" + is-generator-fn: "npm:^2.0.0" + jest-each: "npm:^29.7.0" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + pure-rand: "npm:^6.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/8d15344cf7a9f14e926f0deed64ed190c7a4fa1ed1acfcd81e4cc094d3cc5bf7902ebb7b874edc98ada4185688f90c91e1747e0dfd7ac12463b097968ae74b5e + languageName: node + linkType: hard + +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + create-jest: "npm:^29.7.0" + exit: "npm:^0.1.2" + import-local: "npm:^3.0.2" + jest-config: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + yargs: "npm:^17.3.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/a658fd55050d4075d65c1066364595962ead7661711495cfa1dfeecf3d6d0a8ffec532f3dbd8afbb3e172dd5fd2fb2e813c5e10256e7cf2fea766314942fb43a + languageName: node + linkType: hard + +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@jest/test-sequencer": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-jest: "npm:^29.7.0" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + deepmerge: "npm:^4.2.2" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-circus: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-runner: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + parse-json: "npm:^5.2.0" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + ts-node: + optional: true + checksum: 10c0/bab23c2eda1fff06e0d104b00d6adfb1d1aabb7128441899c9bff2247bd26710b050a5364281ce8d52b46b499153bf7e3ee88b19831a8f3451f1477a0246a0f1 + languageName: node + linkType: hard + +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + diff-sequences: "npm:^29.6.3" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/89a4a7f182590f56f526443dde69acefb1f2f0c9e59253c61d319569856c4931eae66b8a3790c443f529267a0ddba5ba80431c585deed81827032b2b2a1fc999 + languageName: node + linkType: hard + +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" + dependencies: + detect-newline: "npm:^3.0.0" + checksum: 10c0/d932a8272345cf6b6142bb70a2bb63e0856cc0093f082821577ea5bdf4643916a98744dfc992189d2b1417c38a11fa42466f6111526bc1fb81366f56410f3be9 + languageName: node + linkType: hard + +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/f7f9a90ebee80cc688e825feceb2613627826ac41ea76a366fa58e669c3b2403d364c7c0a74d862d469b103c843154f8456d3b1c02b487509a12afa8b59edbb4 + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:29.7.0": + version: 29.7.0 + resolution: "jest-environment-jsdom@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/jsdom": "npm:^20.0.0" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jsdom: "npm:^20.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/139b94e2c8ec1bb5a46ce17df5211da65ce867354b3fd4e00fa6a0d1da95902df4cf7881273fc6ea937e5c325d39d6773f0d41b6c469363334de9d489d2c321f + languageName: node + linkType: hard + +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-mock: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + checksum: 10c0/61f04fec077f8b1b5c1a633e3612fc0c9aa79a0ab7b05600683428f1e01a4d35346c474bde6f439f9fcc1a4aa9a2861ff852d079a43ab64b02105d1004b2592b + languageName: node + linkType: hard + +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 10c0/552e7a97a983d3c2d4e412a44eb7de0430ff773dd99f7500962c268d6dfbfa431d7d08f919c9d960530e5f7f78eb47f267ad9b318265e5092b3ff9ede0db7c2b + languageName: node + linkType: hard + +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/graceful-fs": "npm:^4.1.3" + "@types/node": "npm:*" + anymatch: "npm:^3.0.3" + fb-watchman: "npm:^2.0.0" + fsevents: "npm:^2.3.2" + graceful-fs: "npm:^4.2.9" + jest-regex-util: "npm:^29.6.3" + jest-util: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + micromatch: "npm:^4.0.4" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/2683a8f29793c75a4728787662972fedd9267704c8f7ef9d84f2beed9a977f1cf5e998c07b6f36ba5603f53cb010c911fe8cd0ac9886e073fe28ca66beefd30c + languageName: node + linkType: hard + +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" + dependencies: + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/71bb9f77fc489acb842a5c7be030f2b9acb18574dc9fb98b3100fc57d422b1abc55f08040884bd6e6dbf455047a62f7eaff12aa4058f7cbdc11558718ca6a395 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + pretty-format: "npm:^29.7.0" + checksum: 10c0/0d0e70b28fa5c7d4dce701dc1f46ae0922102aadc24ed45d594dd9b7ae0a8a6ef8b216718d1ab79e451291217e05d4d49a82666e1a3cc2b428b75cd9c933244e + languageName: node + linkType: hard + +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": "npm:^7.12.13" + "@jest/types": "npm:^29.6.3" + "@types/stack-utils": "npm:^2.0.0" + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + micromatch: "npm:^4.0.4" + pretty-format: "npm:^29.7.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.3" + checksum: 10c0/850ae35477f59f3e6f27efac5215f706296e2104af39232bb14e5403e067992afb5c015e87a9243ec4d9df38525ef1ca663af9f2f4766aa116f127247008bd22 + languageName: node + linkType: hard + +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + checksum: 10c0/7b9f8349ee87695a309fe15c46a74ab04c853369e5c40952d68061d9dc3159a0f0ed73e215f81b07ee97a9faaf10aebe5877a9d6255068a0977eae6a9ff1d5ac + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:^29.0.0, jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 10c0/4e33fb16c4f42111159cafe26397118dcfc4cf08bc178a67149fb05f45546a91928b820894572679d62559839d0992e21080a1527faad65daaae8743a5705a3b + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" + dependencies: + jest-regex-util: "npm:^29.6.3" + jest-snapshot: "npm:^29.7.0" + checksum: 10c0/b6e9ad8ae5b6049474118ea6441dfddd385b6d1fc471db0136f7c8fbcfe97137a9665e4f837a9f49f15a29a1deb95a14439b7aec812f3f99d08f228464930f0d + languageName: node + linkType: hard + +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" + dependencies: + chalk: "npm:^4.0.0" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-pnp-resolver: "npm:^1.2.2" + jest-util: "npm:^29.7.0" + jest-validate: "npm:^29.7.0" + resolve: "npm:^1.20.0" + resolve.exports: "npm:^2.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/59da5c9c5b50563e959a45e09e2eace783d7f9ac0b5dcc6375dea4c0db938d2ebda97124c8161310082760e8ebbeff9f6b177c15ca2f57fb424f637a5d2adb47 + languageName: node + linkType: hard + +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" + dependencies: + "@jest/console": "npm:^29.7.0" + "@jest/environment": "npm:^29.7.0" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + graceful-fs: "npm:^4.2.9" + jest-docblock: "npm:^29.7.0" + jest-environment-node: "npm:^29.7.0" + jest-haste-map: "npm:^29.7.0" + jest-leak-detector: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-resolve: "npm:^29.7.0" + jest-runtime: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + jest-watcher: "npm:^29.7.0" + jest-worker: "npm:^29.7.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/2194b4531068d939f14c8d3274fe5938b77fa73126aedf9c09ec9dec57d13f22c72a3b5af01ac04f5c1cf2e28d0ac0b4a54212a61b05f10b5d6b47f2a1097bb4 + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": "npm:^29.7.0" + "@jest/fake-timers": "npm:^29.7.0" + "@jest/globals": "npm:^29.7.0" + "@jest/source-map": "npm:^29.6.3" + "@jest/test-result": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + cjs-module-lexer: "npm:^1.0.0" + collect-v8-coverage: "npm:^1.0.0" + glob: "npm:^7.1.3" + graceful-fs: "npm:^4.2.9" + jest-haste-map: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-mock: "npm:^29.7.0" + jest-regex-util: "npm:^29.6.3" + jest-resolve: "npm:^29.7.0" + jest-snapshot: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/7cd89a1deda0bda7d0941835434e44f9d6b7bd50b5c5d9b0fc9a6c990b2d4d2cab59685ab3cb2850ed4cc37059f6de903af5a50565d7f7f1192a77d3fd6dd2a6 + languageName: node + linkType: hard + +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" + dependencies: + "@babel/core": "npm:^7.11.6" + "@babel/generator": "npm:^7.7.2" + "@babel/plugin-syntax-jsx": "npm:^7.7.2" + "@babel/plugin-syntax-typescript": "npm:^7.7.2" + "@babel/types": "npm:^7.3.3" + "@jest/expect-utils": "npm:^29.7.0" + "@jest/transform": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + babel-preset-current-node-syntax: "npm:^1.0.0" + chalk: "npm:^4.0.0" + expect: "npm:^29.7.0" + graceful-fs: "npm:^4.2.9" + jest-diff: "npm:^29.7.0" + jest-get-type: "npm:^29.6.3" + jest-matcher-utils: "npm:^29.7.0" + jest-message-util: "npm:^29.7.0" + jest-util: "npm:^29.7.0" + natural-compare: "npm:^1.4.0" + pretty-format: "npm:^29.7.0" + semver: "npm:^7.5.3" + checksum: 10c0/6e9003c94ec58172b4a62864a91c0146513207bedf4e0a06e1e2ac70a4484088a2683e3a0538d8ea913bcfd53dc54a9b98a98cdfa562e7fe1d1339aeae1da570 + languageName: node + linkType: hard + +"jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + chalk: "npm:^4.0.0" + ci-info: "npm:^3.2.0" + graceful-fs: "npm:^4.2.9" + picomatch: "npm:^2.2.3" + checksum: 10c0/bc55a8f49fdbb8f51baf31d2a4f312fb66c9db1483b82f602c9c990e659cdd7ec529c8e916d5a89452ecbcfae4949b21b40a7a59d4ffc0cd813a973ab08c8150 + languageName: node + linkType: hard + +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" + dependencies: + "@jest/types": "npm:^29.6.3" + camelcase: "npm:^6.2.0" + chalk: "npm:^4.0.0" + jest-get-type: "npm:^29.6.3" + leven: "npm:^3.1.0" + pretty-format: "npm:^29.7.0" + checksum: 10c0/a20b930480c1ed68778c739f4739dce39423131bc070cd2505ddede762a5570a256212e9c2401b7ae9ba4d7b7c0803f03c5b8f1561c62348213aba18d9dbece2 + languageName: node + linkType: hard + +"jest-watch-typeahead@npm:2.2.2": + version: 2.2.2 + resolution: "jest-watch-typeahead@npm:2.2.2" + dependencies: + ansi-escapes: "npm:^6.0.0" + chalk: "npm:^5.2.0" + jest-regex-util: "npm:^29.0.0" + jest-watcher: "npm:^29.0.0" + slash: "npm:^5.0.0" + string-length: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + peerDependencies: + jest: ^27.0.0 || ^28.0.0 || ^29.0.0 + checksum: 10c0/5a55a571d616958cd6c6b52c4bf57cfaa97132cd9681af8ebfa8ebde9fa1d829426ff36f4ef2eaa867142ee97577fdad1735c58c3db62cbb33a39ad97125ee00 + languageName: node + linkType: hard + +"jest-watcher@npm:^29.0.0, jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" + dependencies: + "@jest/test-result": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.2.1" + chalk: "npm:^4.0.0" + emittery: "npm:^0.13.1" + jest-util: "npm:^29.7.0" + string-length: "npm:^4.0.1" + checksum: 10c0/ec6c75030562fc8f8c727cb8f3b94e75d831fc718785abfc196e1f2a2ebc9a2e38744a15147170039628a853d77a3b695561ce850375ede3a4ee6037a2574567 + languageName: node + linkType: hard + +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "npm:*" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/8c4737ffd03887b3c6768e4cc3ca0269c0336c1e4b1b120943958ddb035ed2a0fc6acab6dc99631720a3720af4e708ff84fb45382ad1e83c27946adf3623969b + languageName: node + linkType: hard + +"jest-worker@npm:^29.4.3, jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" + dependencies: + "@types/node": "npm:*" + jest-util: "npm:^29.7.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.0.0" + checksum: 10c0/5570a3a005b16f46c131968b8a5b56d291f9bbb85ff4217e31c80bd8a02e7de799e59a54b95ca28d5c302f248b54cbffde2d177c2f0f52ffcee7504c6eabf660 + languageName: node + linkType: hard + +"jest@npm:29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" + dependencies: + "@jest/core": "npm:^29.7.0" + "@jest/types": "npm:^29.6.3" + import-local: "npm:^3.0.2" + jest-cli: "npm:^29.7.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: bin/jest.js + checksum: 10c0/f40eb8171cf147c617cc6ada49d062fbb03b4da666cb8d39cdbfb739a7d75eea4c3ca150fb072d0d273dce0c753db4d0467d54906ad0293f59c54f9db4a09d8b + languageName: node + linkType: hard + +"jiti@npm:1.17.1": + version: 1.17.1 + resolution: "jiti@npm:1.17.1" + bin: + jiti: bin/jiti.js + checksum: 10c0/1241a0dec1493867bfc25bb52ed37bbede9bc37f64ef6414dbef0f0059186734633cf25329bdd583237001a094f9c90017ee245ce96a053d0ce95e34df18a17b + languageName: node + linkType: hard + +"jiti@npm:^1.17.1": + version: 1.21.0 + resolution: "jiti@npm:1.21.0" + bin: + jiti: bin/jiti.js + checksum: 10c0/7f361219fe6c7a5e440d5f1dba4ab763a5538d2df8708cdc22561cf25ea3e44b837687931fca7cdd8cdd9f567300e90be989dd1321650045012d8f9ed6aab07f + languageName: node + linkType: hard + +"jose@npm:^4.11.4": + version: 4.15.4 + resolution: "jose@npm:4.15.4" + checksum: 10c0/ce8b29f84d6172a566b12b599dafa82f3bef0f16278bb76d562490ac1516fcc14017b05a39d20ffad25ed504f4996d4af4c9d3e0273d95b2d5559bf6d1112bc0 + languageName: node + linkType: hard + +"js-levenshtein@npm:^1.1.6": + version: 1.1.6 + resolution: "js-levenshtein@npm:1.1.6" + checksum: 10c0/14045735325ea1fd87f434a74b11d8a14380f090f154747e613529c7cff68b5ee607f5230fa40665d5fb6125a3791f4c223f73b9feca754f989b059f5c05864f + languageName: node + linkType: hard + +"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jscodeshift@npm:0.15.0": + version: 0.15.0 + resolution: "jscodeshift@npm:0.15.0" + dependencies: + "@babel/core": "npm:^7.13.16" + "@babel/parser": "npm:^7.13.16" + "@babel/plugin-proposal-class-properties": "npm:^7.13.0" + "@babel/plugin-proposal-nullish-coalescing-operator": "npm:^7.13.8" + "@babel/plugin-proposal-optional-chaining": "npm:^7.13.12" + "@babel/plugin-transform-modules-commonjs": "npm:^7.13.8" + "@babel/preset-flow": "npm:^7.13.13" + "@babel/preset-typescript": "npm:^7.13.0" + "@babel/register": "npm:^7.13.16" + babel-core: "npm:^7.0.0-bridge.0" + chalk: "npm:^4.1.2" + flow-parser: "npm:0.*" + graceful-fs: "npm:^4.2.4" + micromatch: "npm:^4.0.4" + neo-async: "npm:^2.5.0" + node-dir: "npm:^0.1.17" + recast: "npm:^0.23.1" + temp: "npm:^0.8.4" + write-file-atomic: "npm:^2.3.0" + peerDependencies: + "@babel/preset-env": ^7.1.6 + peerDependenciesMeta: + "@babel/preset-env": + optional: true + bin: + jscodeshift: bin/jscodeshift.js + checksum: 10c0/bfd2de159fe9aa30993b7d1d89db21c00c3a644d096adfcf8bce8c6be4ed02b357a919e8e1470ffd9dd43a3b1bc80bb33d53b30890354ee9c5d677c87b80f9a2 + languageName: node + linkType: hard + +"jsdom@npm:^20.0.0": + version: 20.0.3 + resolution: "jsdom@npm:20.0.3" + dependencies: + abab: "npm:^2.0.6" + acorn: "npm:^8.8.1" + acorn-globals: "npm:^7.0.0" + cssom: "npm:^0.5.0" + cssstyle: "npm:^2.3.0" + data-urls: "npm:^3.0.2" + decimal.js: "npm:^10.4.2" + domexception: "npm:^4.0.0" + escodegen: "npm:^2.0.0" + form-data: "npm:^4.0.0" + html-encoding-sniffer: "npm:^3.0.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.1" + is-potential-custom-element-name: "npm:^1.0.1" + nwsapi: "npm:^2.2.2" + parse5: "npm:^7.1.1" + saxes: "npm:^6.0.0" + symbol-tree: "npm:^3.2.4" + tough-cookie: "npm:^4.1.2" + w3c-xmlserializer: "npm:^4.0.0" + webidl-conversions: "npm:^7.0.0" + whatwg-encoding: "npm:^2.0.0" + whatwg-mimetype: "npm:^3.0.0" + whatwg-url: "npm:^11.0.0" + ws: "npm:^8.11.0" + xml-name-validator: "npm:^4.0.0" + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: 10c0/b109073bb826a966db7828f46cb1d7371abecd30f182b143c52be5fe1ed84513bbbe995eb3d157241681fcd18331381e61e3dc004d4949f3a63bca02f6214902 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/dbf59312e0ebf2b4405ef413ec2b25abb5f8f4d9bc5fb8d9f90381622ebca5f2af6a6aa9a8578f65903f9e33990a6dc798edd0ce5586894bf0e9e31803a1de88 + languageName: node + linkType: hard + +"jsesc@npm:~0.5.0": + version: 0.5.0 + resolution: "jsesc@npm:0.5.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/f93792440ae1d80f091b65f8ceddf8e55c4bb7f1a09dee5dcbdb0db5612c55c0f6045625aa6b7e8edb2e0a4feabd80ee48616dbe2d37055573a84db3d24f96d9 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.0": + version: 3.0.0 + resolution: "json-buffer@npm:3.0.0" + checksum: 10c0/118c060d84430a8ad8376d0c60250830f350a6381bd56541a1ef257ce7ba82d109d1f71a4c4e92e0be0e7ab7da568fad8f7bf02905910a76e8e0aa338621b944 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-better-errors@npm:^1.0.2": + version: 1.0.2 + resolution: "json-parse-better-errors@npm:1.0.2" + checksum: 10c0/2f1287a7c833e397c9ddd361a78638e828fc523038bb3441fd4fc144cfd2c6cd4963ffb9e207e648cf7b692600f1e1e524e965c32df5152120910e4903a47dcb + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0, json-parse-even-better-errors@npm:^2.3.1": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-ref-resolver@npm:^1.0.1": + version: 1.0.1 + resolution: "json-schema-ref-resolver@npm:1.0.1" + dependencies: + fast-deep-equal: "npm:^3.1.3" + checksum: 10c0/aa89d88108c0109ae35b913c89c132fb50c00f3b99fc8a8309b524b9e3a6a77414f19a6a35a1253871462984cbabc74279ebbd9bf103c6629fb7b37c9fb59bcf + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6 + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json-stable-stringify@npm:^1.0.1": + version: 1.1.1 + resolution: "json-stable-stringify@npm:1.1.1" + dependencies: + call-bind: "npm:^1.0.5" + isarray: "npm:^2.0.5" + jsonify: "npm:^0.0.1" + object-keys: "npm:^1.1.1" + checksum: 10c0/3801e3eeccbd030afb970f54bea690a079cfea7d9ed206a1b17ca9367f4b7772c764bf77a48f03e56b50e5f7ee7d11c52339fe20d8d7ccead003e4ca69e4cfde + languageName: node + linkType: hard + +"json-to-pretty-yaml@npm:^1.2.2": + version: 1.2.2 + resolution: "json-to-pretty-yaml@npm:1.2.2" + dependencies: + remedial: "npm:^1.0.7" + remove-trailing-spaces: "npm:^1.0.6" + checksum: 10c0/d28891860a7ae034873ac8ec5f69f5493106afed9a86295f1642a40b27a48df717c63966439a1dec5b8a4b30e99b86cd1b4ca7d979bb8048ffd7f7c67bfd88a3 + languageName: node + linkType: hard + +"json5@npm:^0.5.1": + version: 0.5.1 + resolution: "json5@npm:0.5.1" + bin: + json5: lib/cli.js + checksum: 10c0/aca0ab7ccf1883d3fc2ecc16219bc389716a773f774552817deaadb549acc0bb502e317a81946fc0a48f9eb6e0822cf1dc5a097009203f2c94de84c8db02a1f3 + languageName: node + linkType: hard + +"json5@npm:^1.0.1, json5@npm:^1.0.2": + version: 1.0.2 + resolution: "json5@npm:1.0.2" + dependencies: + minimist: "npm:^1.2.0" + bin: + json5: lib/cli.js + checksum: 10c0/9ee316bf21f000b00752e6c2a3b79ecf5324515a5c60ee88983a1910a45426b643a4f3461657586e8aeca87aaf96f0a519b0516d2ae527a6c3e7eed80f68717f + languageName: node + linkType: hard + +"json5@npm:^2.1.1, json5@npm:^2.1.2, json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + languageName: node + linkType: hard + +"jsonify@npm:^0.0.1": + version: 0.0.1 + resolution: "jsonify@npm:0.0.1" + checksum: 10c0/7f5499cdd59a0967ed35bda48b7cec43d850bbc8fb955cdd3a1717bb0efadbe300724d5646de765bb7a99fc1c3ab06eb80d93503c6faaf99b4ff50a3326692f6 + languageName: node + linkType: hard + +"jsonwebtoken@npm:9.0.2": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" + dependencies: + jws: "npm:^3.2.2" + lodash.includes: "npm:^4.3.0" + lodash.isboolean: "npm:^3.0.3" + lodash.isinteger: "npm:^4.0.4" + lodash.isnumber: "npm:^3.0.3" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.once: "npm:^4.0.0" + ms: "npm:^2.1.1" + semver: "npm:^7.5.4" + checksum: 10c0/d287a29814895e866db2e5a0209ce730cbc158441a0e5a70d5e940eb0d28ab7498c6bf45029cc8b479639bca94056e9a7f254e2cdb92a2f5750c7f358657a131 + languageName: node + linkType: hard + +"jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5": + version: 3.3.5 + resolution: "jsx-ast-utils@npm:3.3.5" + dependencies: + array-includes: "npm:^3.1.6" + array.prototype.flat: "npm:^1.3.1" + object.assign: "npm:^4.1.4" + object.values: "npm:^1.1.6" + checksum: 10c0/a32679e9cb55469cb6d8bbc863f7d631b2c98b7fc7bf172629261751a6e7bc8da6ae374ddb74d5fbd8b06cf0eb4572287b259813d92b36e384024ed35e4c13e1 + languageName: node + linkType: hard + +"jwa@npm:^1.4.1": + version: 1.4.1 + resolution: "jwa@npm:1.4.1" + dependencies: + buffer-equal-constant-time: "npm:1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 + languageName: node + linkType: hard + +"jws@npm:^3.2.2": + version: 3.2.2 + resolution: "jws@npm:3.2.2" + dependencies: + jwa: "npm:^1.4.1" + safe-buffer: "npm:^5.0.1" + checksum: 10c0/e770704533d92df358adad7d1261fdecad4d7b66fa153ba80d047e03ca0f1f73007ce5ed3fbc04d2eba09ba6e7e6e645f351e08e5ab51614df1b0aa4f384dfff + languageName: node + linkType: hard + +"keyv@npm:^3.0.0": + version: 3.1.0 + resolution: "keyv@npm:3.1.0" + dependencies: + json-buffer: "npm:3.0.0" + checksum: 10c0/6ad784361b4c0213333a8c5bc0bcc59cf46cb7cbbe21fb2f1539ffcc8fe18b8f1562ff913b40552278fdea5f152a15996dfa61ce24ce1a22222560c650be4a1b + languageName: node + linkType: hard + +"keyv@npm:^4.5.3": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"kill-port@npm:1.6.1": + version: 1.6.1 + resolution: "kill-port@npm:1.6.1" + dependencies: + get-them-args: "npm:1.3.2" + shell-exec: "npm:1.0.2" + bin: + kill-port: cli.js + checksum: 10c0/f9d51a43f8349f162f4f004bd6e68e54d615f9a8f994c780b09771962becb4458cd7ba3a043948ecb18405a7e0d9c31d7264924d0b7f6e24a6f2a01cc474de21 + languageName: node + linkType: hard + +"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": + version: 3.2.2 + resolution: "kind-of@npm:3.2.2" + dependencies: + is-buffer: "npm:^1.1.5" + checksum: 10c0/7e34bc29d4b02c997f92f080de34ebb92033a96736bbb0bb2410e033a7e5ae6571f1fa37b2d7710018f95361473b816c604234197f4f203f9cf149d8ef1574d9 + languageName: node + linkType: hard + +"kind-of@npm:^4.0.0": + version: 4.0.0 + resolution: "kind-of@npm:4.0.0" + dependencies: + is-buffer: "npm:^1.1.5" + checksum: 10c0/d6c44c75ee36898142dfc7106afbd50593216c37f96acb81a7ab33ca1a6938ce97d5692b8fc8fccd035f83811a9d97749d68771116441a48eedd0b68e2973165 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 10c0/cd3a0b8878e7d6d3799e54340efe3591ca787d9f95f109f28129bdd2915e37807bf8918bb295ab86afb8c82196beec5a1adcaf29042ce3f2bd932b038fe3aa4b + languageName: node + linkType: hard + +"language-subtag-registry@npm:^0.3.20": + version: 0.3.22 + resolution: "language-subtag-registry@npm:0.3.22" + checksum: 10c0/d1e09971260a7cd3b9fdeb190d33af0b6e99c8697013537d9aaa15f7856d9d83aee128ba8078e219df0a7cf4b8dd18d1a0c188f6543b500d92a2689d2d114b70 + languageName: node + linkType: hard + +"language-tags@npm:^1.0.9": + version: 1.0.9 + resolution: "language-tags@npm:1.0.9" + dependencies: + language-subtag-registry: "npm:^0.3.20" + checksum: 10c0/9ab911213c4bd8bd583c850201c17794e52cb0660d1ab6e32558aadc8324abebf6844e46f92b80a5d600d0fbba7eface2c207bfaf270a1c7fd539e4c3a880bff + languageName: node + linkType: hard + +"latest-version@npm:5.1.0": + version: 5.1.0 + resolution: "latest-version@npm:5.1.0" + dependencies: + package-json: "npm:^6.3.0" + checksum: 10c0/6219631d8651467c54c58ef1b5d5c5c53e146f5ae2b0ecbb78b202da3eaad55b05b043db2d2d6f1d4230ee071b2ae8c2f85089e01377e4338bad97fa76a963b7 + languageName: node + linkType: hard + +"launch-editor@npm:^2.6.0": + version: 2.6.1 + resolution: "launch-editor@npm:2.6.1" + dependencies: + picocolors: "npm:^1.0.0" + shell-quote: "npm:^1.8.1" + checksum: 10c0/82d0bd9a44e7a972157719e63dac1b8196db6ec7066c1ec57a495f6c3d6e734f3c4da89549e7b33eb3b0356668ad02a9e7782b6733f5ebd7a61b7c5f635a3ee9 + languageName: node + linkType: hard + +"lazy-get-decorator@npm:2.2.1": + version: 2.2.1 + resolution: "lazy-get-decorator@npm:2.2.1" + checksum: 10c0/58d6e3d82293a70c6d14d5648ff6d9acd8d3d67ab0a3205b5e6f24aef55094737a71ee3d4ea7950e57be3eadaee91faee960ee3fa14daede119ea93ebf625396 + languageName: node + linkType: hard + +"lazystream@npm:^1.0.0": + version: 1.0.1 + resolution: "lazystream@npm:1.0.1" + dependencies: + readable-stream: "npm:^2.0.5" + checksum: 10c0/ea4e509a5226ecfcc303ba6782cc269be8867d372b9bcbd625c88955df1987ea1a20da4643bf9270336415a398d33531ebf0d5f0d393b9283dc7c98bfcbd7b69 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"light-my-request@npm:^5.11.0": + version: 5.11.0 + resolution: "light-my-request@npm:5.11.0" + dependencies: + cookie: "npm:^0.5.0" + process-warning: "npm:^2.0.0" + set-cookie-parser: "npm:^2.4.1" + checksum: 10c0/ad5512b5216f2095409b54daf901f714f76004e4c8acdaa1ec3aa2ffde7ddf11ac249f02a87344d766bbad59eb2732acfe3ee5bb7e8ad5fc71057ef0d4d3be25 + languageName: node + linkType: hard + +"lilconfig@npm:^3.0.0": + version: 3.1.1 + resolution: "lilconfig@npm:3.1.1" + checksum: 10c0/311b559794546894e3fe176663427326026c1c644145be9e8041c58e268aa9328799b8dfe7e4dd8c6a4ae305feae95a1c9e007db3569f35b42b6e1bc8274754c + languageName: node + linkType: hard + +"line-column@npm:1.0.2": + version: 1.0.2 + resolution: "line-column@npm:1.0.2" + dependencies: + isarray: "npm:^1.0.0" + isobject: "npm:^2.0.0" + checksum: 10c0/75aa918a9791362a3369c7222689350dc6df5b040314525ba79c3682f1386e13a3ceddd6b2584b8cb5c3ab3a5b3c50c940a182772dbb6361303bf6ef65fc2d64 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"listr2@npm:6.6.1": + version: 6.6.1 + resolution: "listr2@npm:6.6.1" + dependencies: + cli-truncate: "npm:^3.1.0" + colorette: "npm:^2.0.20" + eventemitter3: "npm:^5.0.1" + log-update: "npm:^5.0.1" + rfdc: "npm:^1.3.0" + wrap-ansi: "npm:^8.1.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/2abfcd4346b8208e8d406cfe7a058cd10e3238f60de1ee53fa108a507b45b853ceb87e0d1d4ff229bbf6dd6e896262352e0c7a8895b8511cd55fe94304d3921e + languageName: node + linkType: hard + +"listr2@npm:^4.0.5": + version: 4.0.5 + resolution: "listr2@npm:4.0.5" + dependencies: + cli-truncate: "npm:^2.1.0" + colorette: "npm:^2.0.16" + log-update: "npm:^4.0.0" + p-map: "npm:^4.0.0" + rfdc: "npm:^1.3.0" + rxjs: "npm:^7.5.5" + through: "npm:^2.3.8" + wrap-ansi: "npm:^7.0.0" + peerDependencies: + enquirer: ">= 2.3.0 < 3" + peerDependenciesMeta: + enquirer: + optional: true + checksum: 10c0/0e64dc5e66fbd4361f6b35c49489ed842a1d7de30cf2b5c06bf4569669449288698b8ea93f7842aaf3c510963a1e554bca31376b9054d1521445d1ce4c917ea1 + languageName: node + linkType: hard + +"loader-runner@npm:^2.4.0": + version: 2.4.0 + resolution: "loader-runner@npm:2.4.0" + checksum: 10c0/1f723bd8318453c2d073d7befbf891ba6d2a02f22622688bf7d22e7ba527a0f9476c7fdfedc6bfa2b55c0389d9f406f3a5239ed1b33c9088d77cfed085086a1e + languageName: node + linkType: hard + +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + languageName: node + linkType: hard + +"loader-utils@npm:^1.2.3": + version: 1.4.2 + resolution: "loader-utils@npm:1.4.2" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^1.0.1" + checksum: 10c0/2b726088b5526f7605615e3e28043ae9bbd2453f4a85898e1151f3c39dbf7a2b65d09f3996bc588d92ac7e717ded529d3e1ea3ea42c433393be84a58234a2f53 + languageName: node + linkType: hard + +"loader-utils@npm:^2.0.0, loader-utils@npm:^2.0.4": + version: 2.0.4 + resolution: "loader-utils@npm:2.0.4" + dependencies: + big.js: "npm:^5.2.2" + emojis-list: "npm:^3.0.0" + json5: "npm:^2.1.2" + checksum: 10c0/d5654a77f9d339ec2a03d88221a5a695f337bf71eb8dea031b3223420bb818964ba8ed0069145c19b095f6c8b8fd386e602a3fc7ca987042bd8bb1dcc90d7100 + languageName: node + linkType: hard + +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"locate-path@npm:^7.1.0": + version: 7.2.0 + resolution: "locate-path@npm:7.2.0" + dependencies: + p-locate: "npm:^6.0.0" + checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751 + languageName: node + linkType: hard + +"lodash-decorators@npm:6.0.1": + version: 6.0.1 + resolution: "lodash-decorators@npm:6.0.1" + dependencies: + tslib: "npm:^1.9.2" + peerDependencies: + lodash: 4.x + checksum: 10c0/02881ae6e595245badbc29f4b4bc57f6fbab45ed5d7117c269b9a3c5efa57726670028074c989bd8b0a587211fa6d9447ac6124fb9e887c0571b307e1746bac8 + languageName: node + linkType: hard + +"lodash.chunk@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.chunk@npm:4.2.0" + checksum: 10c0/f9f99969561ad2f62af1f9a96c5bd0af776f000292b0d8db3126c28eb3b32e210d7c31b49c18d0d7901869bd769057046dc134b60cfa0c2c4ce017823a26bb23 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.defaults@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.defaults@npm:4.2.0" + checksum: 10c0/d5b77aeb702caa69b17be1358faece33a84497bcca814897383c58b28a2f8dfc381b1d9edbec239f8b425126a3bbe4916223da2a576bb0411c2cefd67df80707 + languageName: node + linkType: hard + +"lodash.escape@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.escape@npm:4.0.1" + checksum: 10c0/90ade409cec05b6869090476952fdfb84d4d87b1ff4a0e03ebd590f980d9a1248d93ba14579f10d80c6429e4d6af13ba137c28db64cae6dadb71442e54a3ad2b + languageName: node + linkType: hard + +"lodash.flatten@npm:^4.4.0": + version: 4.4.0 + resolution: "lodash.flatten@npm:4.4.0" + checksum: 10c0/97e8f0d6b61fe4723c02ad0c6e67e51784c4a2c48f56ef283483e556ad01594cf9cec9c773e177bbbdbdb5d19e99b09d2487cb6b6e5dc405c2693e93b125bd3a + languageName: node + linkType: hard + +"lodash.includes@npm:^4.3.0": + version: 4.3.0 + resolution: "lodash.includes@npm:4.3.0" + checksum: 10c0/7ca498b9b75bf602d04e48c0adb842dfc7d90f77bcb2a91a2b2be34a723ad24bc1c8b3683ec6b2552a90f216c723cdea530ddb11a3320e08fa38265703978f4b + languageName: node + linkType: hard + +"lodash.invokemap@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.invokemap@npm:4.6.0" + checksum: 10c0/2bcc5f4b8782a316d55ff139215eb797f576f0f6d3db2755ebba7b35fd6061f8cbe81702a72a30bc6d70073a5dcc461f7570eaddcc9184c2e42ec3023645c6a1 + languageName: node + linkType: hard + +"lodash.isboolean@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isboolean@npm:3.0.3" + checksum: 10c0/0aac604c1ef7e72f9a6b798e5b676606042401dd58e49f051df3cc1e3adb497b3d7695635a5cbec4ae5f66456b951fdabe7d6b387055f13267cde521f10ec7f7 + languageName: node + linkType: hard + +"lodash.isinteger@npm:^4.0.4": + version: 4.0.4 + resolution: "lodash.isinteger@npm:4.0.4" + checksum: 10c0/4c3e023a2373bf65bf366d3b8605b97ec830bca702a926939bcaa53f8e02789b6a176e7f166b082f9365bfec4121bfeb52e86e9040cb8d450e64c858583f61b7 + languageName: node + linkType: hard + +"lodash.isnumber@npm:^3.0.3": + version: 3.0.3 + resolution: "lodash.isnumber@npm:3.0.3" + checksum: 10c0/2d01530513a1ee4f72dd79528444db4e6360588adcb0e2ff663db2b3f642d4bb3d687051ae1115751ca9082db4fdef675160071226ca6bbf5f0c123dbf0aa12d + languageName: node + linkType: hard + +"lodash.isplainobject@npm:^4.0.6": + version: 4.0.6 + resolution: "lodash.isplainobject@npm:4.0.6" + checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb + languageName: node + linkType: hard + +"lodash.isstring@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.isstring@npm:4.0.1" + checksum: 10c0/09eaf980a283f9eef58ef95b30ec7fee61df4d6bf4aba3b5f096869cc58f24c9da17900febc8ffd67819b4e29de29793190e88dc96983db92d84c95fa85d1c92 + languageName: node + linkType: hard + +"lodash.memoize@npm:^4.1.2": + version: 4.1.2 + resolution: "lodash.memoize@npm:4.1.2" + checksum: 10c0/c8713e51eccc650422716a14cece1809cfe34bc5ab5e242b7f8b4e2241c2483697b971a604252807689b9dd69bfe3a98852e19a5b89d506b000b4187a1285df8 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lodash.mergewith@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.mergewith@npm:4.6.2" + checksum: 10c0/4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5 + languageName: node + linkType: hard + +"lodash.once@npm:^4.0.0": + version: 4.1.1 + resolution: "lodash.once@npm:4.1.1" + checksum: 10c0/46a9a0a66c45dd812fcc016e46605d85ad599fe87d71a02f6736220554b52ffbe82e79a483ad40f52a8a95755b0d1077fba259da8bfb6694a7abbf4a48f1fc04 + languageName: node + linkType: hard + +"lodash.pullall@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.pullall@npm:4.2.0" + checksum: 10c0/b129e8d879258c7db04a7dc1c23dd9e37c52f63a04e105faa8d2ab55e97b5a170d5e15cffbb732a36e7f48c4345c07b6fbddfe50e1f5ec301492b6f64a92040c + languageName: node + linkType: hard + +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: 10c0/fc48fb54ff7669f33bb32997cab9460757ee99fafaf72400b261c3e10fde21538e47d8cfcbe6a25a31bcb5b7b727c27d52626386fc2de24eb059a6d64a89cdf5 + languageName: node + linkType: hard + +"lodash.uniq@npm:^4.5.0": + version: 4.5.0 + resolution: "lodash.uniq@npm:4.5.0" + checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e + languageName: node + linkType: hard + +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 10c0/c505c0de20ca759599a2ba38710e8fb95ff2d2028e24d86c901ef2c74be8056518571b9b754bfb75053b2818d30dd02243e4a4621a6940c206bbb3f7626db656 + languageName: node + linkType: hard + +"lodash@npm:4.17.21, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.0": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 10c0/d8cbea072bb08655bb4c989da418994b073a608dffa608b09ac04b43a791b12aeae7cd7ad919aa4c925f33b48490b5cfe6c1f71d827956071dae2e7bb3a6b74c + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0, log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: "npm:^4.3.0" + cli-cursor: "npm:^3.1.0" + slice-ansi: "npm:^4.0.0" + wrap-ansi: "npm:^6.2.0" + checksum: 10c0/18b299e230432a156f2535660776406d15ba8bb7817dd3eaadd58004b363756d4ecaabcd658f9949f90b62ea7d3354423be3fdeb7a201ab951ec0e8d6139af86 + languageName: node + linkType: hard + +"log-update@npm:^5.0.1": + version: 5.0.1 + resolution: "log-update@npm:5.0.1" + dependencies: + ansi-escapes: "npm:^5.0.0" + cli-cursor: "npm:^4.0.0" + slice-ansi: "npm:^5.0.0" + strip-ansi: "npm:^7.0.1" + wrap-ansi: "npm:^8.0.1" + checksum: 10c0/1050ea2027e80f32e132aace909987cb00c2719368c78b82ffca681a5b3f4020eeb5f4b4e310c47c35c6c36aff258c1d1bc51485ac44d6fdac9eb0a4275c539f + languageName: node + linkType: hard + +"logical-not@npm:^1.0.1": + version: 1.0.9 + resolution: "logical-not@npm:1.0.9" + checksum: 10c0/5428321fc786efd1a74822864f20ada974160e70277825ab191137c7e7447a3951a20fffdfec5f2333de4fc8ea5dd2b3383f7227c4ab258c8c33396af08545d1 + languageName: node + linkType: hard + +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": + version: 1.4.0 + resolution: "loose-envify@npm:1.4.0" + dependencies: + js-tokens: "npm:^3.0.0 || ^4.0.0" + bin: + loose-envify: cli.js + checksum: 10c0/655d110220983c1a4b9c0c679a2e8016d4b67f6e9c7b5435ff5979ecdb20d0813f4dec0a08674fcbdd4846a3f07edbb50a36811fd37930b94aaa0d9daceb017e + languageName: node + linkType: hard + +"lower-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/22253389fa0693ec1ba09b9394be3a8228304bf21d074703db2eef97c16cda9c66462d88f9b91d4ad0186493d23cad99c63d38ebc13f9a808bc83aad539ff404 + languageName: node + linkType: hard + +"lower-case@npm:^2.0.2": + version: 2.0.2 + resolution: "lower-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b + languageName: node + linkType: hard + +"lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "lowercase-keys@npm:1.0.1" + checksum: 10c0/56776a8e1ef1aca98ecf6c19b30352ae1cf257b65b8ac858b7d8a0e8b348774d12a9b41aa7f59bfea51bff44bc7a198ab63ba4406bfba60dba008799618bef66 + languageName: node + linkType: hard + +"lowercase-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "lowercase-keys@npm:2.0.0" + checksum: 10c0/f82a2b3568910509da4b7906362efa40f5b54ea14c2584778ddb313226f9cbf21020a5db35f9b9a0e95847a9b781d548601f31793d736b22a2b8ae8eb9ab1082 + languageName: node + linkType: hard + +"lru-cache@npm:7.18.3": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: 10c0/c9847612aa2daaef102d30542a8d6d9b2c2bb36581c1bf0dc3ebf5e5f3352c772a749e604afae2e46873b930a9e9523743faac4e5b937c576ab29196774712ee + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" + bin: + lz-string: bin/bin.js + checksum: 10c0/36128e4de34791838abe979b19927c26e67201ca5acf00880377af7d765b38d1c60847e01c5ec61b1a260c48029084ab3893a3925fd6e48a04011364b089991b + languageName: node + linkType: hard + +"make-dir@npm:^1.0.0": + version: 1.3.0 + resolution: "make-dir@npm:1.3.0" + dependencies: + pify: "npm:^3.0.0" + checksum: 10c0/5eb94f47d7ef41d89d1b8eef6539b8950d5bd99eeba093a942bfd327faa37d2d62227526b88b73633243a2ec7972d21eb0f4e5d62ae4e02a79e389f4a7bb3022 + languageName: node + linkType: hard + +"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: "npm:^4.0.1" + semver: "npm:^5.6.0" + checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + languageName: node + linkType: hard + +"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: "npm:^6.0.0" + checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-error@npm:^1.1.1": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 10c0/171e458d86854c6b3fc46610cfacf0b45149ba043782558c6875d9f42f222124384ad0b468c92e996d815a8a2003817a710c0a160e49c1c394626f76fa45396f + languageName: node + linkType: hard + +"make-fetch-happen@npm:^13.0.0": + version: 13.0.0 + resolution: "make-fetch-happen@npm:13.0.0" + dependencies: + "@npmcli/agent": "npm:^2.0.0" + cacache: "npm:^18.0.0" + http-cache-semantics: "npm:^4.1.1" + is-lambda: "npm:^1.0.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^3.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + ssri: "npm:^10.0.0" + checksum: 10c0/43b9f6dcbc6fe8b8604cb6396957c3698857a15ba4dbc38284f7f0e61f248300585ef1eb8cc62df54e9c724af977e45b5cdfd88320ef7f53e45070ed3488da55 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"map-cache@npm:^0.2.0, map-cache@npm:^0.2.2": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 10c0/05e3eb005c1b80b9f949ca007687640e8c5d0fc88dc45c3c3ab4902a3bec79d66a58f3e3b04d6985d90cd267c629c7b46c977e9c34433e8c11ecfcbb9f0fa290 + languageName: node + linkType: hard + +"map-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "map-visit@npm:1.0.0" + dependencies: + object-visit: "npm:^1.0.0" + checksum: 10c0/fb3475e5311939a6147e339999113db607adc11c7c3cd3103e5e9dbf502898416ecba6b1c7c649c6d4d12941de00cee58b939756bdf20a9efe7d4fa5a5738b73 + languageName: node + linkType: hard + +"md5.js@npm:^1.3.4": + version: 1.3.5 + resolution: "md5.js@npm:1.3.5" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/b7bd75077f419c8e013fc4d4dada48be71882e37d69a44af65a2f2804b91e253441eb43a0614423a1c91bb830b8140b0dc906bc797245e2e275759584f4efcc5 + languageName: node + linkType: hard + +"mdn-data@npm:2.0.28": + version: 2.0.28 + resolution: "mdn-data@npm:2.0.28" + checksum: 10c0/20000932bc4cd1cde9cba4e23f08cc4f816398af4c15ec81040ed25421d6bf07b5cf6b17095972577fb498988f40f4cb589e3169b9357bb436a12d8e07e5ea7b + languageName: node + linkType: hard + +"mdn-data@npm:2.0.30": + version: 2.0.30 + resolution: "mdn-data@npm:2.0.30" + checksum: 10c0/a2c472ea16cee3911ae742593715aa4c634eb3d4b9f1e6ada0902aa90df13dcbb7285d19435f3ff213ebaa3b2e0c0265c1eb0e3fb278fda7f8919f046a410cd9 + languageName: node + linkType: hard + +"media-typer@npm:0.3.0": + version: 0.3.0 + resolution: "media-typer@npm:0.3.0" + checksum: 10c0/d160f31246907e79fed398470285f21bafb45a62869dc469b1c8877f3f064f5eabc4bcc122f9479b8b605bc5c76187d7871cf84c4ee3ecd3e487da1993279928 + languageName: node + linkType: hard + +"memfs@npm:^3.4.3": + version: 3.5.3 + resolution: "memfs@npm:3.5.3" + dependencies: + fs-monkey: "npm:^1.0.4" + checksum: 10c0/038fc81bce17ea92dde15aaa68fa0fdaf4960c721ce3ffc7c2cb87a259333f5159784ea48b3b72bf9e054254d9d0d0d5209d0fdc3d07d08653a09933b168fbd7 + languageName: node + linkType: hard + +"memory-fs@npm:^0.4.1": + version: 0.4.1 + resolution: "memory-fs@npm:0.4.1" + dependencies: + errno: "npm:^0.1.3" + readable-stream: "npm:^2.0.1" + checksum: 10c0/f114c44ad8285103cb0e71420cf5bb628d3eb6cbd918197f5951590ff56ba2072f4a97924949c170320cdf180d2da4e8d16a0edd92ba0ca2d2de51dc932841e2 + languageName: node + linkType: hard + +"memory-fs@npm:^0.5.0": + version: 0.5.0 + resolution: "memory-fs@npm:0.5.0" + dependencies: + errno: "npm:^0.1.3" + readable-stream: "npm:^2.0.1" + checksum: 10c0/2737a27b14a9e8b8cd757be2ad99e8cc504b78a78aba9d6aa18ff1ef528e2223a433413d2df6ab5332997a5a8ccf075e6c6e90e31ab732a55455ca620e4a720b + languageName: node + linkType: hard + +"merge-descriptors@npm:1.0.1": + version: 1.0.1 + resolution: "merge-descriptors@npm:1.0.1" + checksum: 10c0/b67d07bd44cfc45cebdec349bb6e1f7b077ee2fd5beb15d1f7af073849208cb6f144fe403e29a36571baf3f4e86469ac39acf13c318381e958e186b2766f54ec + languageName: node + linkType: hard + +"merge-descriptors@npm:~1.0.0": + version: 1.0.3 + resolution: "merge-descriptors@npm:1.0.3" + checksum: 10c0/866b7094afd9293b5ea5dcd82d71f80e51514bed33b4c4e9f516795dc366612a4cbb4dc94356e943a8a6914889a914530badff27f397191b9b75cda20b6bae93 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0, merge2@npm:^1.4.1": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"meros@npm:^1.2.1": + version: 1.3.0 + resolution: "meros@npm:1.3.0" + peerDependencies: + "@types/node": ">=13" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/2cf9a31228ae6441428a750b67beafec062cc0d693942045336dbe6bfb44507e0ca42854a46f483ebd97e4d78cbc31322b3b85f9648b60fa7a4b28fc0f858f51 + languageName: node + linkType: hard + +"methods@npm:~1.1.2": + version: 1.1.2 + resolution: "methods@npm:1.1.2" + checksum: 10c0/bdf7cc72ff0a33e3eede03708c08983c4d7a173f91348b4b1e4f47d4cdbf734433ad971e7d1e8c77247d9e5cd8adb81ea4c67b0a2db526b758b2233d7814b8b2 + languageName: node + linkType: hard + +"micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": + version: 3.1.10 + resolution: "micromatch@npm:3.1.10" + dependencies: + arr-diff: "npm:^4.0.0" + array-unique: "npm:^0.3.2" + braces: "npm:^2.3.1" + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + extglob: "npm:^2.0.4" + fragment-cache: "npm:^0.2.1" + kind-of: "npm:^6.0.2" + nanomatch: "npm:^1.2.9" + object.pick: "npm:^1.3.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.2" + checksum: 10c0/531a32e7ac92bef60657820202be71b63d0f945c08a69cc4c239c0b19372b751483d464a850a2e3a5ff6cc9060641e43d44c303af104c1a27493d137d8af017f + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: "npm:^3.0.2" + picomatch: "npm:^2.3.1" + checksum: 10c0/3d6505b20f9fa804af5d8c596cb1c5e475b9b0cd05f652c5b56141cf941bd72adaeb7a436fda344235cef93a7f29b7472efc779fcdb83b478eab0867b95cdeff + languageName: node + linkType: hard + +"miller-rabin@npm:^4.0.0": + version: 4.0.1 + resolution: "miller-rabin@npm:4.0.1" + dependencies: + bn.js: "npm:^4.0.0" + brorand: "npm:^1.0.1" + bin: + miller-rabin: bin/miller-rabin + checksum: 10c0/26b2b96f6e49dbcff7faebb78708ed2f5f9ae27ac8cbbf1d7c08f83cf39bed3d418c0c11034dce997da70d135cc0ff6f3a4c15dc452f8e114c11986388a64346 + languageName: node + linkType: hard + +"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:2.1.35, mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:1.6.0": + version: 1.6.0 + resolution: "mime@npm:1.6.0" + bin: + mime: cli.js + checksum: 10c0/b92cd0adc44888c7135a185bfd0dddc42c32606401c72896a842ae15da71eb88858f17669af41e498b463cd7eb998f7b48939a25b08374c7924a9c8a6f8a81b0 + languageName: node + linkType: hard + +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: 10c0/402e792a8df1b2cc41cb77f0dcc46472b7944b7ec29cb5bbcd398624b6b97096728f1239766d3fdeb20551dd8d94738344c195a6ea10c4f906eb0356323b0531 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"mimic-response@npm:^1.0.0, mimic-response@npm:^1.0.1": + version: 1.0.1 + resolution: "mimic-response@npm:1.0.1" + checksum: 10c0/c5381a5eae997f1c3b5e90ca7f209ed58c3615caeee850e85329c598f0c000ae7bec40196580eef1781c60c709f47258131dab237cad8786f8f56750594f27fa + languageName: node + linkType: hard + +"min-indent@npm:^1.0.0": + version: 1.0.1 + resolution: "min-indent@npm:1.0.1" + checksum: 10c0/7e207bd5c20401b292de291f02913230cb1163abca162044f7db1d951fa245b174dc00869d40dd9a9f32a885ad6a5f3e767ee104cf278f399cb4e92d3f582d5c + languageName: node + linkType: hard + +"mini-css-extract-plugin@npm:2.7.6": + version: 2.7.6 + resolution: "mini-css-extract-plugin@npm:2.7.6" + dependencies: + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/4862da928f52c18b37daa52d548c9f2a1ac65c900a48b63f7faa3354d8cfcd21618c049696559e73e2e27fc12d46748e6a490e0b885e54276429607d0d08c156 + languageName: node + linkType: hard + +"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-assert@npm:1.0.1" + checksum: 10c0/96730e5601cd31457f81a296f521eb56036e6f69133c0b18c13fe941109d53ad23a4204d946a0d638d7f3099482a0cec8c9bb6d642604612ce43ee536be3dddd + languageName: node + linkType: hard + +"minimalistic-crypto-utils@npm:^1.0.1": + version: 1.0.1 + resolution: "minimalistic-crypto-utils@npm:1.0.1" + checksum: 10c0/790ecec8c5c73973a4fbf2c663d911033e8494d5fb0960a4500634766ab05d6107d20af896ca2132e7031741f19888154d44b2408ada0852446705441383e9f8 + languageName: node + linkType: hard + +"minimatch@npm:4.2.3": + version: 4.2.3 + resolution: "minimatch@npm:4.2.3" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/ce19d52a4692037aa7768bfcdca0cef3eb3975ab8e3aaf32ab0a3d23863fca94ba7555d1ca67893320076efe8376e61bf7cc6fa82161a3c1127f0d0b9b06b666 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1, minimatch@npm:^5.1.0": + version: 5.1.6 + resolution: "minimatch@npm:5.1.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/3defdfd230914f22a8da203747c42ee3c405c39d4d37ffda284dac5e45b7e1f6c49aa8be606509002898e73091ff2a3bbfc59c2c6c71d4660609f63aa92f98e3 + languageName: node + linkType: hard + +"minimatch@npm:^7.4.3": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/e587bf3d90542555a3d58aca94c549b72d58b0a66545dd00eef808d0d66e5d9a163d3084da7f874e83ca8cc47e91c670e6c6f6593a3e7bb27fcc0e6512e87c67 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.1": + version: 9.0.3 + resolution: "minimatch@npm:9.0.3" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/85f407dcd38ac3e180f425e86553911d101455ca3ad5544d6a7cec16286657e4f8a9aa6695803025c55e31e35a91a2252b5dc8e7d527211278b8b65b4dbd5eac + languageName: node + linkType: hard + +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^3.0.0": + version: 3.0.4 + resolution: "minipass-fetch@npm:3.0.4" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/1b63c1f3313e88eeac4689f1b71c9f086598db9a189400e3ee960c32ed89e06737fa23976c9305c2d57464fb3fcdc12749d3378805c9d6176f5569b0d0ee8a75 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": + version: 7.0.4 + resolution: "minipass@npm:7.0.4" + checksum: 10c0/6c7370a6dfd257bf18222da581ba89a5eaedca10e158781232a8b5542a90547540b4b9b7e7f490e4cda43acfbd12e086f0453728ecf8c19e0ef6921bc5958ac5 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + +"mississippi@npm:^3.0.0": + version: 3.0.0 + resolution: "mississippi@npm:3.0.0" + dependencies: + concat-stream: "npm:^1.5.0" + duplexify: "npm:^3.4.2" + end-of-stream: "npm:^1.1.0" + flush-write-stream: "npm:^1.0.0" + from2: "npm:^2.1.0" + parallel-transform: "npm:^1.1.0" + pump: "npm:^3.0.0" + pumpify: "npm:^1.3.3" + stream-each: "npm:^1.1.0" + through2: "npm:^2.0.0" + checksum: 10c0/97424a331ce1b9f789a0d3fa47d725dad9adfe5e0ead8bc458ba9fb51c4d2630df6b0966ca9dcbb4c90db48737d58126cbf0e3c170697bf41c265606efa91103 + languageName: node + linkType: hard + +"mixin-deep@npm:^1.2.0": + version: 1.3.2 + resolution: "mixin-deep@npm:1.3.2" + dependencies: + for-in: "npm:^1.0.2" + is-extendable: "npm:^1.0.1" + checksum: 10c0/cb39ffb73c377222391af788b4c83d1a6cecb2d9fceb7015384f8deb46e151a9b030c21ef59a79cb524d4557e3f74c7248ab948a62a6e7e296b42644863d183b + languageName: node + linkType: hard + +"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3, mkdirp@npm:^0.5.6": + version: 0.5.6 + resolution: "mkdirp@npm:0.5.6" + dependencies: + minimist: "npm:^1.2.6" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/e2e2be789218807b58abced04e7b49851d9e46e88a2f9539242cc8a92c9b5c3a0b9bab360bd3014e02a140fc4fbc58e31176c408b493f8a2a6f4986bd7527b01 + languageName: node + linkType: hard + +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"mkdirp@npm:^2.1.6": + version: 2.1.6 + resolution: "mkdirp@npm:2.1.6" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/96f551c651dd8f5f9435d53df1a7b9bfc553be769ee6da5192c37c1f303a376ef1c6996f96913d4a8d357060451d4526a346031d1919f92c58806a5fa3cd8dfe + languageName: node + linkType: hard + +"module-not-found-error@npm:^1.0.1": + version: 1.0.1 + resolution: "module-not-found-error@npm:1.0.1" + checksum: 10c0/e57250016b320ef9d0e0037fdb63fb279ca93100a0cee3ef6e90139cbec734215be4a70857dfc0d62ee353d9f8126d2882aa0a80dba49b69292901263a21ea69 + languageName: node + linkType: hard + +"move-concurrently@npm:^1.0.1": + version: 1.0.1 + resolution: "move-concurrently@npm:1.0.1" + dependencies: + aproba: "npm:^1.1.1" + copy-concurrently: "npm:^1.0.0" + fs-write-stream-atomic: "npm:^1.0.8" + mkdirp: "npm:^0.5.1" + rimraf: "npm:^2.5.4" + run-queue: "npm:^1.0.3" + checksum: 10c0/0fe81acf3bbbc322013c2f4ee4a48cf8d180a7d925fb9284c0f1f444e862d7eb0421ee074b68d35357a12f0d5e94a322049dc9da480672331b5b8895743eb66a + languageName: node + linkType: hard + +"mrmime@npm:^2.0.0": + version: 2.0.0 + resolution: "mrmime@npm:2.0.0" + checksum: 10c0/312b35ed288986aec90955410b21ed7427fd1e4ee318cb5fc18765c8d029eeded9444faa46589e5b1ed6b35fb2054a802ac8dcb917ddf6b3e189cb3bf11a965c + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 10c0/f8fda810b39fd7255bbdc451c46286e549794fcc700dc9cd1d25658bbc4dc2563a5de6fe7c60f798a16a60c6ceb53f033cb353f493f0cf63e5199b702943159d + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 10c0/a437714e2f90dbf881b5191d35a6db792efbca5badf112f87b9e1c712aace4b4b9b742dd6537f3edf90fd6f684de897cec230abde57e87883766712ddda297cc + languageName: node + linkType: hard + +"ms@npm:2.1.3, ms@npm:^2.1.1": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"msw@npm:1.3.2": + version: 1.3.2 + resolution: "msw@npm:1.3.2" + dependencies: + "@mswjs/cookies": "npm:^0.2.2" + "@mswjs/interceptors": "npm:^0.17.10" + "@open-draft/until": "npm:^1.0.3" + "@types/cookie": "npm:^0.4.1" + "@types/js-levenshtein": "npm:^1.1.1" + chalk: "npm:^4.1.1" + chokidar: "npm:^3.4.2" + cookie: "npm:^0.4.2" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:3.2.5" + inquirer: "npm:^8.2.0" + is-node-process: "npm:^1.2.0" + js-levenshtein: "npm:^1.1.6" + node-fetch: "npm:^2.6.7" + outvariant: "npm:^1.4.0" + path-to-regexp: "npm:^6.2.0" + strict-event-emitter: "npm:^0.4.3" + type-fest: "npm:^2.19.0" + yargs: "npm:^17.3.1" + peerDependencies: + typescript: ">= 4.4.x <= 5.2.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 10c0/c644d8e80b12b15c7b366aa6e0b39442f3ffd3b94824171e562066d8535c720fd824d84986d738a427720e59228660c11991bf724e4dd9face00b0b0f2af8f0d + languageName: node + linkType: hard + +"multicast-dns@npm:^7.2.5": + version: 7.2.5 + resolution: "multicast-dns@npm:7.2.5" + dependencies: + dns-packet: "npm:^5.2.2" + thunky: "npm:^1.0.2" + bin: + multicast-dns: cli.js + checksum: 10c0/5120171d4bdb1577764c5afa96e413353bff530d1b37081cb29cccc747f989eb1baf40574fe8e27060fc1aef72b59c042f72b9b208413de33bcf411343c69057 + languageName: node + linkType: hard + +"multimatch@npm:^4.0.0": + version: 4.0.0 + resolution: "multimatch@npm:4.0.0" + dependencies: + "@types/minimatch": "npm:^3.0.3" + array-differ: "npm:^3.0.0" + array-union: "npm:^2.1.0" + arrify: "npm:^2.0.1" + minimatch: "npm:^3.0.4" + checksum: 10c0/08e6b71ea2eee2feba17bb4159d247b78d26f9a9b556abddc136c05baa5eba9d80717986e494972284947e9c0e26a19eba3fe20851463fa3dbb770e289f7a0b8 + languageName: node + linkType: hard + +"mute-stream@npm:0.0.8": + version: 0.0.8 + resolution: "mute-stream@npm:0.0.8" + checksum: 10c0/18d06d92e5d6d45e2b63c0e1b8f25376af71748ac36f53c059baa8b76ffac31c5ab225480494e7d35d30215ecdb18fed26ec23cafcd2f7733f2f14406bcd19e2 + languageName: node + linkType: hard + +"nan@npm:^2.12.1": + version: 2.18.0 + resolution: "nan@npm:2.18.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/9209d80134fdb98c0afe35c1372d2b930a0a8d3c52706cb5e4257a27e9845c375f7a8daedadadec8d6403ca2eebb3b37d362ff5d1ec03249462abf65fef2a148 + languageName: node + linkType: hard + +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: 10c0/e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + languageName: node + linkType: hard + +"nanomatch@npm:^1.2.9": + version: 1.2.13 + resolution: "nanomatch@npm:1.2.13" + dependencies: + arr-diff: "npm:^4.0.0" + array-unique: "npm:^0.3.2" + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + fragment-cache: "npm:^0.2.1" + is-windows: "npm:^1.0.2" + kind-of: "npm:^6.0.2" + object.pick: "npm:^1.3.0" + regex-not: "npm:^1.0.0" + snapdragon: "npm:^0.8.1" + to-regex: "npm:^3.0.1" + checksum: 10c0/0f5cefa755ca2e20c86332821995effb24acb79551ddaf51c1b9112628cad234a0d8fd9ac6aa56ad1f8bfad6ff6ae86e851acb960943249d9fa44b091479953a + languageName: node + linkType: hard + +"natural-compare-lite@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare-lite@npm:1.4.0" + checksum: 10c0/f6cef26f5044515754802c0fc475d81426f3b90fe88c20fabe08771ce1f736ce46e0397c10acb569a4dd0acb84c7f1ee70676122f95d5bfdd747af3a6c6bbaa8 + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": + version: 0.6.3 + resolution: "negotiator@npm:0.6.3" + checksum: 10c0/3ec9fd413e7bf071c937ae60d572bc67155262068ed522cf4b3be5edbe6ddf67d095ec03a3a14ebf8fc8e95f8e1d61be4869db0dbb0de696f6b837358bd43fc2 + languageName: node + linkType: hard + +"neo-async@npm:^2.5.0, neo-async@npm:^2.6.1, neo-async@npm:^2.6.2": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 10c0/c2f5a604a54a8ec5438a342e1f356dff4bc33ccccdb6dc668d94fe8e5eccfc9d2c2eea6064b0967a767ba63b33763f51ccf2cd2441b461a7322656c1f06b3f5d + languageName: node + linkType: hard + +"no-case@npm:^3.0.4": + version: 3.0.4 + resolution: "no-case@npm:3.0.4" + dependencies: + lower-case: "npm:^2.0.2" + tslib: "npm:^2.0.3" + checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 + languageName: node + linkType: hard + +"node-addon-api@npm:^7.0.0": + version: 7.1.0 + resolution: "node-addon-api@npm:7.1.0" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/2e096ab079e3c46d33b0e252386e9c239c352f7cc6d75363d9a3c00bdff34c1a5da170da861917512843f213c32d024ced9dc9552b968029786480d18727ec66 + languageName: node + linkType: hard + +"node-dir@npm:^0.1.17": + version: 0.1.17 + resolution: "node-dir@npm:0.1.17" + dependencies: + minimatch: "npm:^3.0.2" + checksum: 10c0/16222e871708c405079ff8122d4a7e1d522c5b90fc8f12b3112140af871cfc70128c376e845dcd0044c625db0d2efebd2d852414599d240564db61d53402b4c1 + languageName: node + linkType: hard + +"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7": + version: 2.7.0 + resolution: "node-fetch@npm:2.7.0" + dependencies: + whatwg-url: "npm:^5.0.0" + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + checksum: 10c0/b55786b6028208e6fbe594ccccc213cab67a72899c9234eb59dba51062a299ea853210fcf526998eaa2867b0963ad72338824450905679ff0fa304b8c5093ae8 + languageName: node + linkType: hard + +"node-forge@npm:^1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 10c0/e882819b251a4321f9fc1d67c85d1501d3004b4ee889af822fd07f64de3d1a8e272ff00b689570af0465d65d6bf5074df9c76e900e0aff23e60b847f2a46fbe8 + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^13.0.0" + nopt: "npm:^7.0.0" + proc-log: "npm:^3.0.0" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^4.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/abddfff7d873312e4ed4a5fb75ce893a5c4fb69e7fcb1dfa71c28a6b92a7f1ef6b62790dffb39181b5a82728ba8f2f32d229cf8cbe66769fe02cea7db4a555aa + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-libs-browser@npm:^2.2.1": + version: 2.2.1 + resolution: "node-libs-browser@npm:2.2.1" + dependencies: + assert: "npm:^1.1.1" + browserify-zlib: "npm:^0.2.0" + buffer: "npm:^4.3.0" + console-browserify: "npm:^1.1.0" + constants-browserify: "npm:^1.0.0" + crypto-browserify: "npm:^3.11.0" + domain-browser: "npm:^1.1.1" + events: "npm:^3.0.0" + https-browserify: "npm:^1.0.0" + os-browserify: "npm:^0.3.0" + path-browserify: "npm:0.0.1" + process: "npm:^0.11.10" + punycode: "npm:^1.2.4" + querystring-es3: "npm:^0.2.0" + readable-stream: "npm:^2.3.3" + stream-browserify: "npm:^2.0.1" + stream-http: "npm:^2.7.2" + string_decoder: "npm:^1.0.0" + timers-browserify: "npm:^2.0.4" + tty-browserify: "npm:0.0.0" + url: "npm:^0.11.0" + util: "npm:^0.11.0" + vm-browserify: "npm:^1.0.1" + checksum: 10c0/0e05321a6396408903ed642231d2bca7dd96492d074c7af161ba06a63c95378bd3de50b4105eccbbc02d93ba3da69f0ff5e624bc2a8c92ca462ceb6a403e7986 + languageName: node + linkType: hard + +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 10c0/199fc93773ae70ec9969bc6d5ac5b2bbd6eb986ed1907d751f411fef3ede0e4bfdb45ceb43711f8078bea237b6036db8b1bf208f6ff2b70c7d615afd157f3ab9 + languageName: node + linkType: hard + +"nodemon@npm:3.0.2": + version: 3.0.2 + resolution: "nodemon@npm:3.0.2" + dependencies: + chokidar: "npm:^3.5.2" + debug: "npm:^4" + ignore-by-default: "npm:^1.0.1" + minimatch: "npm:^3.1.2" + pstree.remy: "npm:^1.1.8" + semver: "npm:^7.5.3" + simple-update-notifier: "npm:^2.0.0" + supports-color: "npm:^5.5.0" + touch: "npm:^3.1.0" + undefsafe: "npm:^2.0.5" + bin: + nodemon: bin/nodemon.js + checksum: 10c0/65837603fa790d723f8d59e1f098342ed5a5517c3a38ea3b52ca3d532ed21924ecd43fbaceadb458472ae0a8ae6b8395bda22ccd062709ad50c5c4537a625c9d + languageName: node + linkType: hard + +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" + dependencies: + abbrev: "npm:^2.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/9bd7198df6f16eb29ff16892c77bcf7f0cc41f9fb5c26280ac0def2cf8cf319f3b821b3af83eba0e74c85807cc430a16efe0db58fe6ae1f41e69519f585b6aff + languageName: node + linkType: hard + +"nopt@npm:~1.0.10": + version: 1.0.10 + resolution: "nopt@npm:1.0.10" + dependencies: + abbrev: "npm:1" + bin: + nopt: ./bin/nopt.js + checksum: 10c0/ddfbd892116a125fd68849ef564dd5b1f0a5ba0dbbf18782e9499e2efad8f4d3790635b47c6b5d3f7e014069e7b3ce5b8112687e9ae093fcd2678188c866fe28 + languageName: node + linkType: hard + +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: "npm:^1.0.1" + checksum: 10c0/db814326ff88057437233361b4c7e9cac7b54815b051b57f2d341ce89b1d8ec8cbd43e7fa95d7652b3b69ea8fcc294b89b8530d556a84d1bdace94229e1e9a8b + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"normalize-url@npm:^4.1.0": + version: 4.5.1 + resolution: "normalize-url@npm:4.5.1" + checksum: 10c0/6362e9274fdcc310f8b17e20de29754c94e1820d864114f03d3bfd6286a0028fc51705fb3fd4e475013357b5cd7421fc17f3aba93f2289056779a9bb23bccf59 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"nth-check@npm:^2.0.1": + version: 2.1.1 + resolution: "nth-check@npm:2.1.1" + dependencies: + boolbase: "npm:^1.0.0" + checksum: 10c0/5fee7ff309727763689cfad844d979aedd2204a817fbaaf0e1603794a7c20db28548d7b024692f953557df6ce4a0ee4ae46cd8ebd9b36cfb300b9226b567c479 + languageName: node + linkType: hard + +"null-loader@npm:4.0.1": + version: 4.0.1 + resolution: "null-loader@npm:4.0.1" + dependencies: + loader-utils: "npm:^2.0.0" + schema-utils: "npm:^3.0.0" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10c0/fe9a74a928c9ddc1eab7be0e4322516439562d6efd6feeb0f7c61777d4b79a6a8e5a6bc8133deb59408f3f423bdf84c154a88168154a583154e9e33d544b4d42 + languageName: node + linkType: hard + +"nullthrows@npm:^1.1.1": + version: 1.1.1 + resolution: "nullthrows@npm:1.1.1" + checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.2": + version: 2.2.7 + resolution: "nwsapi@npm:2.2.7" + checksum: 10c0/44be198adae99208487a1c886c0a3712264f7bbafa44368ad96c003512fed2753d4e22890ca1e6edb2690c3456a169f2a3c33bfacde1905cf3bf01c7722464db + languageName: node + linkType: hard + +"object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 + languageName: node + linkType: hard + +"object-copy@npm:^0.1.0": + version: 0.1.0 + resolution: "object-copy@npm:0.1.0" + dependencies: + copy-descriptor: "npm:^0.1.0" + define-property: "npm:^0.2.5" + kind-of: "npm:^3.0.3" + checksum: 10c0/79314b05e9d626159a04f1d913f4c4aba9eae8848511cf5f4c8e3b04bb3cc313b65f60357f86462c959a14c2d58380fedf89b6b32ecec237c452a5ef3900a293 + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.1": + version: 1.13.1 + resolution: "object-inspect@npm:1.13.1" + checksum: 10c0/fad603f408e345c82e946abdf4bfd774260a5ed3e5997a0b057c44153ac32c7271ff19e3a5ae39c858da683ba045ccac2f65245c12763ce4e8594f818f4a648d + languageName: node + linkType: hard + +"object-is@npm:^1.1.5": + version: 1.1.5 + resolution: "object-is@npm:1.1.5" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.1.3" + checksum: 10c0/8c263fb03fc28f1ffb54b44b9147235c5e233dc1ca23768e7d2569740b5d860154d7cc29a30220fe28ed6d8008e2422aefdebfe987c103e1c5d190cf02d9d886 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object-visit@npm:^1.0.0": + version: 1.0.1 + resolution: "object-visit@npm:1.0.1" + dependencies: + isobject: "npm:^3.0.0" + checksum: 10c0/086b475bda24abd2318d2b187c3e928959b89f5cb5883d6fe5a42d03719b61fc18e765f658de9ac8730e67ba9ff26d61e73d991215948ff9ecefe771e0071029 + languageName: node + linkType: hard + +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + object-keys: "npm:^1.1.1" + checksum: 10c0/60108e1fa2706f22554a4648299b0955236c62b3685c52abf4988d14fffb0e7731e00aa8c6448397e3eb63d087dcc124a9f21e1980f36d0b2667f3c18bacd469 + languageName: node + linkType: hard + +"object.entries@npm:^1.1.6, object.entries@npm:^1.1.7": + version: 1.1.7 + resolution: "object.entries@npm:1.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/3ad1899cc7bf14546bf28f4a9b363ae8690b90948fcfbcac4c808395435d760f26193d9cae95337ce0e3c1e5c1f4fa45f7b46b31b68d389e9e117fce38775d86 + languageName: node + linkType: hard + +"object.fromentries@npm:^2.0.6, object.fromentries@npm:^2.0.7": + version: 2.0.7 + resolution: "object.fromentries@npm:2.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/071745c21f6fc9e6c914691f2532c1fb60ad967e5ddc52801d09958b5de926566299d07ae14466452a7efd29015f9145d6c09c573d93a0dc6f1683ee0ec2b93b + languageName: node + linkType: hard + +"object.groupby@npm:^1.0.1": + version: 1.0.2 + resolution: "object.groupby@npm:1.0.2" + dependencies: + array.prototype.filter: "npm:^1.0.3" + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + checksum: 10c0/b6266b1cfec7eb784b8bbe0bca5dc4b371cf9dd3e601b0897d72fa97a5934273d8fb05b3fc5222204104dbec32b50e25ba27e05ad681f71fb739cc1c7e9b81b1 + languageName: node + linkType: hard + +"object.hasown@npm:^1.1.2": + version: 1.1.3 + resolution: "object.hasown@npm:1.1.3" + dependencies: + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/8a41ba4fb1208a85c2275e9b5098071beacc24345b9a71ab98ef0a1c61b34dc74c6b460ff1e1884c33843d8f2553df64a10eec2b74b3ed009e3b2710c826bd2c + languageName: node + linkType: hard + +"object.pick@npm:^1.3.0": + version: 1.3.0 + resolution: "object.pick@npm:1.3.0" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/cd316ec986e49895a28f2df9182de9cdeee57cd2a952c122aacc86344c28624fe002d9affc4f48b5014ec7c033da9942b08821ddb44db8c5bac5b3ec54bdc31e + languageName: node + linkType: hard + +"object.values@npm:^1.1.6, object.values@npm:^1.1.7": + version: 1.1.7 + resolution: "object.values@npm:1.1.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/e869d6a37fb7afdd0054dea49036d6ccebb84854a8848a093bbd1bc516f53e690bba88f0bc3e83fdfa74c601469ee6989c9b13359cda9604144c6e732fad3b6b + languageName: node + linkType: hard + +"obuf@npm:^1.0.0, obuf@npm:^1.1.2": + version: 1.1.2 + resolution: "obuf@npm:1.1.2" + checksum: 10c0/520aaac7ea701618eacf000fc96ae458e20e13b0569845800fc582f81b386731ab22d55354b4915d58171db00e79cfcd09c1638c02f89577ef092b38c65b7d81 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^2.1.0": + version: 2.1.2 + resolution: "on-exit-leak-free@npm:2.1.2" + checksum: 10c0/faea2e1c9d696ecee919026c32be8d6a633a7ac1240b3b87e944a380e8a11dc9c95c4a1f8fb0568de7ab8db3823e790f12bda45296b1d111e341aad3922a0570 + languageName: node + linkType: hard + +"on-finished@npm:2.4.1": + version: 2.4.1 + resolution: "on-finished@npm:2.4.1" + dependencies: + ee-first: "npm:1.1.1" + checksum: 10c0/46fb11b9063782f2d9968863d9cbba33d77aa13c17f895f56129c274318b86500b22af3a160fe9995aa41317efcd22941b6eba747f718ced08d9a73afdb087b4 + languageName: node + linkType: hard + +"on-headers@npm:~1.0.2": + version: 1.0.2 + resolution: "on-headers@npm:1.0.2" + checksum: 10c0/f649e65c197bf31505a4c0444875db0258e198292f34b884d73c2f751e91792ef96bb5cf89aa0f4fecc2e4dc662461dda606b1274b0e564f539cae5d2f5fc32f + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0, onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"open@npm:^8.0.9": + version: 8.4.2 + resolution: "open@npm:8.4.2" + dependencies: + define-lazy-prop: "npm:^2.0.0" + is-docker: "npm:^2.1.1" + is-wsl: "npm:^2.2.0" + checksum: 10c0/bb6b3a58401dacdb0aad14360626faf3fb7fba4b77816b373495988b724fb48941cad80c1b65d62bb31a17609b2cd91c41a181602caea597ca80dfbcc27e84c9 + languageName: node + linkType: hard + +"opener@npm:^1.5.2": + version: 1.5.2 + resolution: "opener@npm:1.5.2" + bin: + opener: bin/opener-bin.js + checksum: 10c0/dd56256ab0cf796585617bc28e06e058adf09211781e70b264c76a1dbe16e90f868c974e5bf5309c93469157c7d14b89c35dc53fe7293b0e40b4d2f92073bc79 + languageName: node + linkType: hard + +"optimism@npm:^0.18.0": + version: 0.18.0 + resolution: "optimism@npm:0.18.0" + dependencies: + "@wry/caches": "npm:^1.0.0" + "@wry/context": "npm:^0.7.0" + "@wry/trie": "npm:^0.4.3" + tslib: "npm:^2.3.0" + checksum: 10c0/8e97c6d660cb80cf5f444209b9dd29ee6951fa7b344d4c4fc6d4aaf0ad0710dddaf834d0f5d7211b3658b15ef6c6a22cbcb98c7a8121e3fee9666fe0fd62d876 + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" + dependencies: + "@aashutoshrathi/word-wrap": "npm:^1.2.3" + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + checksum: 10c0/66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c + languageName: node + linkType: hard + +"ora@npm:^5.4.1": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + +"os-browserify@npm:^0.3.0": + version: 0.3.0 + resolution: "os-browserify@npm:0.3.0" + checksum: 10c0/6ff32cb1efe2bc6930ad0fd4c50e30c38010aee909eba8d65be60af55efd6cbb48f0287e3649b4e3f3a63dce5a667b23c187c4293a75e557f0d5489d735bcf52 + languageName: node + linkType: hard + +"os-tmpdir@npm:~1.0.2": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 + languageName: node + linkType: hard + +"outvariant@npm:^1.2.1, outvariant@npm:^1.4.0": + version: 1.4.2 + resolution: "outvariant@npm:1.4.2" + checksum: 10c0/48041425a4cb725ff8871b7d9889bfc2eaded867b9b35b6c2450a36fb3632543173098654990caa6c9e9f67d902b2a01f4402c301835e9ecaf4b4695d3161853 + languageName: node + linkType: hard + +"p-cancelable@npm:^1.0.0": + version: 1.1.0 + resolution: "p-cancelable@npm:1.1.0" + checksum: 10c0/9f16d7d58897edb07b1a9234b2bfce3665c747f0f13886e25e2144ecab4595412017cc8cc3b0042f89864b997d6dba76c130724e1c0923fc41ff3c9399b87449 + languageName: node + linkType: hard + +"p-limit@npm:3.1.0, p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^4.0.0": + version: 4.0.0 + resolution: "p-limit@npm:4.0.0" + dependencies: + yocto-queue: "npm:^1.0.0" + checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: "npm:^2.0.0" + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-locate@npm:^6.0.0": + version: 6.0.0 + resolution: "p-locate@npm:6.0.0" + dependencies: + p-limit: "npm:^4.0.0" + checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312 + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"p-retry@npm:^4.5.0": + version: 4.6.2 + resolution: "p-retry@npm:4.6.2" + dependencies: + "@types/retry": "npm:0.12.0" + retry: "npm:^0.13.1" + checksum: 10c0/d58512f120f1590cfedb4c2e0c42cb3fa66f3cea8a4646632fcb834c56055bb7a6f138aa57b20cc236fb207c9d694e362e0b5c2b14d9b062f67e8925580c73b0 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json@npm:^6.3.0": + version: 6.5.0 + resolution: "package-json@npm:6.5.0" + dependencies: + got: "npm:^9.6.0" + registry-auth-token: "npm:^4.0.0" + registry-url: "npm:^5.0.0" + semver: "npm:^6.2.0" + checksum: 10c0/60c29fe357af43f96c92c334aa0160cebde44e8e65c1e5f9b065efb3f501af812f268ec967a07757b56447834ef7f71458ebbab94425a9f09c271f348f9b764f + languageName: node + linkType: hard + +"pako@npm:~1.0.5": + version: 1.0.11 + resolution: "pako@npm:1.0.11" + checksum: 10c0/86dd99d8b34c3930345b8bbeb5e1cd8a05f608eeb40967b293f72fe469d0e9c88b783a8777e4cc7dc7c91ce54c5e93d88ff4b4f060e6ff18408fd21030d9ffbe + languageName: node + linkType: hard + +"parallel-transform@npm:^1.1.0": + version: 1.2.0 + resolution: "parallel-transform@npm:1.2.0" + dependencies: + cyclist: "npm:^1.0.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^2.1.5" + checksum: 10c0/ab0e58569e73681ca4b9c9228189bdb6cbea535295fae344cf0d8342fd33a950961914f3c414f81894c1498fb9ad1c079b4625d2b7ceae9e6ab812f22e3bea3f + languageName: node + linkType: hard + +"param-case@npm:3.0.4, param-case@npm:^3.0.4": + version: 3.0.4 + resolution: "param-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ccc053f3019f878eca10e70ec546d92f51a592f762917dafab11c8b532715dcff58356118a6f350976e4ab109e321756f05739643ed0ca94298e82291e6f9e76 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.6": + version: 5.1.6 + resolution: "parse-asn1@npm:5.1.6" + dependencies: + asn1.js: "npm:^5.2.0" + browserify-aes: "npm:^1.0.0" + evp_bytestokey: "npm:^1.0.0" + pbkdf2: "npm:^3.0.3" + safe-buffer: "npm:^5.1.1" + checksum: 10c0/4ed1d9b9e120c5484d29d67bb90171aac0b73422bc016d6294160aea983275c28a27ab85d862059a36a86a97dd31b7ddd97486802ca9fac67115fe3409e9dcbd + languageName: node + linkType: hard + +"parse-filepath@npm:^1.0.2": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: "npm:^1.0.0" + map-cache: "npm:^0.2.0" + path-root: "npm:^0.1.1" + checksum: 10c0/37bbd225fa864257246777efbdf72a9305c4ae12110bf467d11994e93f8be60dd309dcef68124a2c78c5d3b4e64e1c36fcc2560e2ea93fd97767831e7a446805 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"parse-ms@npm:^2.1.0": + version: 2.1.0 + resolution: "parse-ms@npm:2.1.0" + checksum: 10c0/9c5c0a95c6267c84085685556a6e102ee806c3147ec11cbb9b98e35998eb4a48a757bd6ea7bfd930062de65909a33d24985055b4394e70aa0b65ee40cef16911 + languageName: node + linkType: hard + +"parse5-htmlparser2-tree-adapter@npm:^7.0.0": + version: 7.0.0 + resolution: "parse5-htmlparser2-tree-adapter@npm:7.0.0" + dependencies: + domhandler: "npm:^5.0.2" + parse5: "npm:^7.0.0" + checksum: 10c0/e820cacb8486e6f7ede403327d18480df086d70e32ede2f6654d8c3a8b4b8dc4a4d5c21c03c18a92ba2466c513b93ca63be4a138dd73cd0995f384eb3b9edf11 + languageName: node + linkType: hard + +"parse5@npm:^7.0.0, parse5@npm:^7.1.1": + version: 7.1.2 + resolution: "parse5@npm:7.1.2" + dependencies: + entities: "npm:^4.4.0" + checksum: 10c0/297d7af8224f4b5cb7f6617ecdae98eeaed7f8cbd78956c42785e230505d5a4f07cef352af10d3006fa5c1544b76b57784d3a22d861ae071bbc460c649482bf4 + languageName: node + linkType: hard + +"parseurl@npm:~1.3.2, parseurl@npm:~1.3.3": + version: 1.3.3 + resolution: "parseurl@npm:1.3.3" + checksum: 10c0/90dd4760d6f6174adb9f20cf0965ae12e23879b5f5464f38e92fce8073354341e4b3b76fa3d878351efe7d01e617121955284cfd002ab087fba1a0726ec0b4f5 + languageName: node + linkType: hard + +"pascal-case@npm:^3.1.2": + version: 3.1.2 + resolution: "pascal-case@npm:3.1.2" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/05ff7c344809fd272fc5030ae0ee3da8e4e63f36d47a1e0a4855ca59736254192c5a27b5822ed4bae96e54048eec5f6907713cfcfff7cdf7a464eaf7490786d8 + languageName: node + linkType: hard + +"pascalcase@npm:1.0.0": + version: 1.0.0 + resolution: "pascalcase@npm:1.0.0" + checksum: 10c0/5fac7a6346b23307664f020cdd42d245a3189bf3b9b21cd167ea5e28a17b403e6670c60a3055d9c7d56ec00ffab446f862ff8148add23cd2c5a035c4d07efa26 + languageName: node + linkType: hard + +"pascalcase@npm:^0.1.1": + version: 0.1.1 + resolution: "pascalcase@npm:0.1.1" + checksum: 10c0/48dfe90618e33810bf58211d8f39ad2c0262f19ad6354da1ba563935b5f429f36409a1fb9187c220328f7a4dc5969917f8e3e01ee089b5f1627b02aefe39567b + languageName: node + linkType: hard + +"path-browserify@npm:0.0.1": + version: 0.0.1 + resolution: "path-browserify@npm:0.0.1" + checksum: 10c0/3d59710cddeea06509d91935196185900f3d9d29376dff68ff0e146fbd41d0fb304e983d0158f30cabe4dd2ffcc6a7d3d977631994ee984c88e66aed50a1ccd3 + languageName: node + linkType: hard + +"path-browserify@npm:^1.0.1": + version: 1.0.1 + resolution: "path-browserify@npm:1.0.1" + checksum: 10c0/8b8c3fd5c66bd340272180590ae4ff139769e9ab79522e2eb82e3d571a89b8117c04147f65ad066dccfb42fcad902e5b7d794b3d35e0fd840491a8ddbedf8c66 + languageName: node + linkType: hard + +"path-case@npm:^3.0.4": + version: 3.0.4 + resolution: "path-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/b6b14637228a558793f603aaeb2fcd981e738b8b9319421b713532fba96d75aa94024b9f6b9ae5aa33d86755144a5b36697d28db62ae45527dbd672fcc2cf0b7 + languageName: node + linkType: hard + +"path-dirname@npm:^1.0.0": + version: 1.0.2 + resolution: "path-dirname@npm:1.0.2" + checksum: 10c0/71e59be2bada7c91f62b976245fd421b7cb01fde3207fe53a82d8880621ad04fd8b434e628c9cf4e796259fc168a107d77cd56837725267c5b2c58cefe2c4e1b + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-exists@npm:^5.0.0": + version: 5.0.0 + resolution: "path-exists@npm:5.0.0" + checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: 10c0/27651a234f280c70d982dd25c35550f74a4284cde6b97237aab618cb4b5745682d18cdde1160617bb4a4b6b8aec4fbc911c4a2ad80d01fa4c7ee74dae7af2337 + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: "npm:^0.1.0" + checksum: 10c0/aed5cd290df84c46c7730f6a363e95e47a23929b51ab068a3818d69900da3e89dc154cdfd0c45c57b2e02f40c094351bc862db70c2cb00b7e6bd47039a227813 + languageName: node + linkType: hard + +"path-scurry@npm:^1.10.1": + version: 1.10.1 + resolution: "path-scurry@npm:1.10.1" + dependencies: + lru-cache: "npm:^9.1.1 || ^10.0.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/e5dc78a7348d25eec61ab166317e9e9c7b46818aa2c2b9006c507a6ff48c672d011292d9662527213e558f5652ce0afcc788663a061d8b59ab495681840c0c1e + languageName: node + linkType: hard + +"path-to-regexp@npm:0.1.7": + version: 0.1.7 + resolution: "path-to-regexp@npm:0.1.7" + checksum: 10c0/50a1ddb1af41a9e68bd67ca8e331a705899d16fb720a1ea3a41e310480948387daf603abb14d7b0826c58f10146d49050a1291ba6a82b78a382d1c02c0b8f905 + languageName: node + linkType: hard + +"path-to-regexp@npm:^6.2.0": + version: 6.2.1 + resolution: "path-to-regexp@npm:6.2.1" + checksum: 10c0/7a73811ca703e5c199e5b50b9649ab8f6f7b458a37f7dff9ea338815203f5b1f95fe8cb24d4fdfe2eab5d67ce43562d92534330babca35cdf3231f966adb9360 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: 10c0/666f6973f332f27581371efaf303fd6c272cc43c2057b37aa99e3643158c7e4b2626549555d88626e99ea9e046f82f32e41bbde5f1508547e9a11b149b52387c + languageName: node + linkType: hard + +"pbkdf2@npm:^3.0.3": + version: 3.1.2 + resolution: "pbkdf2@npm:3.1.2" + dependencies: + create-hash: "npm:^1.1.2" + create-hmac: "npm:^1.1.4" + ripemd160: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + sha.js: "npm:^2.4.8" + checksum: 10c0/5a30374e87d33fa080a92734d778cf172542cc7e41b96198c4c88763997b62d7850de3fbda5c3111ddf79805ee7c1da7046881c90ac4920b5e324204518b05fd + languageName: node + linkType: hard + +"picocolors@npm:^1.0.0": + version: 1.0.0 + resolution: "picocolors@npm:1.0.0" + checksum: 10c0/20a5b249e331c14479d94ec6817a182fd7a5680debae82705747b2db7ec50009a5f6648d0621c561b0572703f84dbef0858abcbd5856d3c5511426afcb1961f7 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 10c0/fead19ed9d801f1b1fcd0638a1ac53eabbb0945bf615f2f8806a8b646565a04a1b0e7ef115c951d225f042cca388fdc1cd3add46d10d1ed6951c20bd2998af10 + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v1.1.0": + version: 1.1.0 + resolution: "pino-abstract-transport@npm:1.1.0" + dependencies: + readable-stream: "npm:^4.0.0" + split2: "npm:^4.0.0" + checksum: 10c0/6e9b9d5a2c0a37f91ecaf224d335daae1ae682b1c79a05b06ef9e0f0a5d289f8e597992217efc857796dae6f1067e9b4882f95c6228ff433ddc153532cae8aca + languageName: node + linkType: hard + +"pino-std-serializers@npm:^6.0.0": + version: 6.2.2 + resolution: "pino-std-serializers@npm:6.2.2" + checksum: 10c0/8f1c7f0f0d8f91e6c6b5b2a6bfb48f06441abeb85f1c2288319f736f9c6d814fbeebe928d2314efc2ba6018fa7db9357a105eca9fc99fc1f28945a8a8b28d3d5 + languageName: node + linkType: hard + +"pino@npm:8.16.2": + version: 8.16.2 + resolution: "pino@npm:8.16.2" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.1.1" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:v1.1.0" + pino-std-serializers: "npm:^6.0.0" + process-warning: "npm:^2.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^3.7.0" + thread-stream: "npm:^2.0.0" + bin: + pino: bin.js + checksum: 10c0/ea1b2f426985a442b65566a75e3f20eed47c1f51f3aea9a10fc16a452feb339cde4d5439d724c822408fce6a8bfcf6d24f61421547f4cc718f44a6eb47921293 + languageName: node + linkType: hard + +"pino@npm:^8.17.0": + version: 8.19.0 + resolution: "pino@npm:8.19.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + fast-redact: "npm:^3.1.1" + on-exit-leak-free: "npm:^2.1.0" + pino-abstract-transport: "npm:v1.1.0" + pino-std-serializers: "npm:^6.0.0" + process-warning: "npm:^3.0.0" + quick-format-unescaped: "npm:^4.0.3" + real-require: "npm:^0.2.0" + safe-stable-stringify: "npm:^2.3.1" + sonic-boom: "npm:^3.7.0" + thread-stream: "npm:^2.0.0" + bin: + pino: bin.js + checksum: 10c0/53e6e9db91e451163e93294b0a7c5c8135742d58909dfc4a6fa1afc155b2b0dc44448ec3d057e08351951f9a3ea67e6ea8e72e952b64a1d889f4d5376cbd1a5d + languageName: node + linkType: hard + +"pirates@npm:^4.0.4, pirates@npm:^4.0.6": + version: 4.0.6 + resolution: "pirates@npm:4.0.6" + checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 + languageName: node + linkType: hard + +"pkg-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "pkg-dir@npm:3.0.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"pkg-dir@npm:^7.0.0": + version: 7.0.0 + resolution: "pkg-dir@npm:7.0.0" + dependencies: + find-up: "npm:^6.3.0" + checksum: 10c0/1afb23d2efb1ec9d8b2c4a0c37bf146822ad2774f074cb05b853be5dca1b40815c5960dd126df30ab8908349262a266f31b771e877235870a3b8fd313beebec5 + languageName: node + linkType: hard + +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab + languageName: node + linkType: hard + +"pluralize@npm:8.0.0": + version: 8.0.0 + resolution: "pluralize@npm:8.0.0" + checksum: 10c0/2044cfc34b2e8c88b73379ea4a36fc577db04f651c2909041b054c981cd863dd5373ebd030123ab058d194ae615d3a97cfdac653991e499d10caf592e8b3dc33 + languageName: node + linkType: hard + +"portfinder@npm:1.0.32": + version: 1.0.32 + resolution: "portfinder@npm:1.0.32" + dependencies: + async: "npm:^2.6.4" + debug: "npm:^3.2.7" + mkdirp: "npm:^0.5.6" + checksum: 10c0/cef8b567b78aabccc59fe8e103bac8b394bb45a6a69be626608f099f454124c775aaf47b274c006332c07ab3f501cde55e49aaeb9d49d78d90362d776a565cbf + languageName: node + linkType: hard + +"posix-character-classes@npm:^0.1.0": + version: 0.1.1 + resolution: "posix-character-classes@npm:0.1.1" + checksum: 10c0/cce88011548a973b4af58361cd8f5f7b5a6faff8eef0901565802f067bcabf82597e920d4c97c22068464be3cbc6447af589f6cc8a7d813ea7165be60a0395bc + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.0.0 + resolution: "possible-typed-array-names@npm:1.0.0" + checksum: 10c0/d9aa22d31f4f7680e20269db76791b41c3a32c01a373e25f8a4813b4d45f7456bfc2b6d68f752dc4aab0e0bb0721cb3d76fb678c9101cb7a16316664bc2c73fd + languageName: node + linkType: hard + +"postcss-calc@npm:^9.0.1": + version: 9.0.1 + resolution: "postcss-calc@npm:9.0.1" + dependencies: + postcss-selector-parser: "npm:^6.0.11" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.2.2 + checksum: 10c0/e0df07337162dbcaac5d6e030c7fd289e21da8766a9daca5d6b2b3c8094bb524ae5d74c70048ea7fe5fe4960ce048c60ac97922d917c3bbff34f58e9d2b0eb0e + languageName: node + linkType: hard + +"postcss-colormin@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-colormin@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + caniuse-api: "npm:^3.0.0" + colord: "npm:^2.9.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/229681f9b89ba0909b4c69563837b0c32cc3d1c17ed1b00c33d4abfb0a0ef455124968e4885b5f92c64482e92074cd1958018ec111ed5d118f1e24baeda19c14 + languageName: node + linkType: hard + +"postcss-convert-values@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-convert-values@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/882d0b7839ef07ac8ffbf9cb48db0f610939a3496bd0321c7f23096ead676f13e09ab3d9c20ff3dbe2c887e855826051ca7dffeaffce5068cfdc9aaa573a3842 + languageName: node + linkType: hard + +"postcss-discard-comments@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-comments@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/5e9128ffb8c005081bb0521f5a23cf090e8513d928ed39935504ffde2e335a62a7e1a749c5c7bc2d03f06a8667900d19dd7eed19dfa4273043b5fd760476260d + languageName: node + linkType: hard + +"postcss-discard-duplicates@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-duplicates@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/b9ea10a3c7528bb1630613c11756f809a95da634822d943fa91b28f2a37787e7cdb9ff96deed9776e2c3753d35e42c8afd5074b630930df7b5150573d4beda23 + languageName: node + linkType: hard + +"postcss-discard-empty@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-empty@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/6b95e588a3e8fb262e56bd313060daf29d7c9d44184bb6c4c5858ae81d6cd2907b15b3e3023b6621d50a67cfc10e6077920ff1e908892b207dee29477376498f + languageName: node + linkType: hard + +"postcss-discard-overridden@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-discard-overridden@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/22f9d56e53b90bc0f8e6d1c24d6da6c7c1a9d757644a128a7a4263a5479aaa8eca4ce3bfe9db10358051635ed40e8778a68c3f1831b7163eae10ced001db4a87 + languageName: node + linkType: hard + +"postcss-merge-longhand@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-merge-longhand@npm:6.0.2" + dependencies: + postcss-value-parser: "npm:^4.2.0" + stylehacks: "npm:^6.0.2" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/2b3fae51bffc5962258d638bc7f415237593b515f369233e023f0eae5b13116297463c04b8c47a7b7af51cba5faaa7f517b653f6123e51935d670d4d4de5a26d + languageName: node + linkType: hard + +"postcss-merge-rules@npm:^6.0.3": + version: 6.0.3 + resolution: "postcss-merge-rules@npm:6.0.3" + dependencies: + browserslist: "npm:^4.22.2" + caniuse-api: "npm:^3.0.0" + cssnano-utils: "npm:^4.0.1" + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/c8355db11aa60bedcb1e6535fcd70f6ecec2dadd5c2975d3accf0eedbc92af782ac1f5e91a53866816ce332e4cbf1b94749a9425067935be066bc0c974e30fee + languageName: node + linkType: hard + +"postcss-minify-font-values@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-minify-font-values@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/15af236245a6d27f1c83c943ef90d144ca043894bbd86f134506a984811a936a06824739984824965c7c3fd5a0ff4ed299f26a33f3b628662aa4fb40d7536fd0 + languageName: node + linkType: hard + +"postcss-minify-gradients@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-minify-gradients@npm:6.0.1" + dependencies: + colord: "npm:^2.9.1" + cssnano-utils: "npm:^4.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/e700c3f6dc425072ff739fb18bb71c970599e0d909b326f4a5c84e91cf24c4f1ee78e4d161bd4cdf6e25b7d78f1ad082bb885afdd2a150f9b281520fc6359d5c + languageName: node + linkType: hard + +"postcss-minify-params@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-minify-params@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + cssnano-utils: "npm:^4.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/6638460d2be4a2eca8adee8409b70d6c6a19aff8cf93fda1b45c9da627b258b6baaa6acb48f51d26cd287704a235f9c9ae2e4744335b1fd47e163177c33896df + languageName: node + linkType: hard + +"postcss-minify-selectors@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-minify-selectors@npm:6.0.2" + dependencies: + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/5437b586c1237fc442e7e6078d4f23c987efc456366368b07a0da67332b04bd55821cedf0441e73e1209689f63139e272d930508e2963ba6e27c46561a661128 + languageName: node + linkType: hard + +"postcss-modules-extract-imports@npm:^3.0.0": + version: 3.0.0 + resolution: "postcss-modules-extract-imports@npm:3.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/f8879d66d8162fb7a3fcd916d37574006c584ea509107b1cfb798a5e090175ef9470f601e46f0a305070d8ff2500e07489a5c1ac381c29a1dc1120e827ca7943 + languageName: node + linkType: hard + +"postcss-modules-local-by-default@npm:^4.0.3": + version: 4.0.4 + resolution: "postcss-modules-local-by-default@npm:4.0.4" + dependencies: + icss-utils: "npm:^5.0.0" + postcss-selector-parser: "npm:^6.0.2" + postcss-value-parser: "npm:^4.1.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/9ebf464867eb10b29b73501b1466dcac8352ed852ef68ec23571f515daa74401d7ace9a6c72f354542081fdbb47d098c9bc6b05373b553a6e35779d072f967bb + languageName: node + linkType: hard + +"postcss-modules-scope@npm:^3.0.0": + version: 3.1.1 + resolution: "postcss-modules-scope@npm:3.1.1" + dependencies: + postcss-selector-parser: "npm:^6.0.4" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/3ef6ac14fcda1581bc43e37622256bd87b99ea49c59b2aae648d057d57f5ecc634648cce9910166220a797567af674bc09246ccc010f1dd58d2863b805719109 + languageName: node + linkType: hard + +"postcss-modules-values@npm:^4.0.0": + version: 4.0.0 + resolution: "postcss-modules-values@npm:4.0.0" + dependencies: + icss-utils: "npm:^5.0.0" + peerDependencies: + postcss: ^8.1.0 + checksum: 10c0/dd18d7631b5619fb9921b198c86847a2a075f32e0c162e0428d2647685e318c487a2566cc8cc669fc2077ef38115cde7a068e321f46fb38be3ad49646b639dbc + languageName: node + linkType: hard + +"postcss-normalize-charset@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-charset@npm:6.0.1" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/8c09eedaf8813123875c65ab35120f14a87d6b9e8d6805fa808e3a714a8f868d15123f34f61e2240d89225f2f5c2bdabbcdf6385ce86b2487370d8994a65a857 + languageName: node + linkType: hard + +"postcss-normalize-display-values@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-display-values@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d08a92c653fb4f2506e029ceb8e3fdae9bc937fb1a7e80ecde759d02f6d15f69211af384d89d8582b160fd129abd9c77c8c64d75379417098ee5a2ba779e33d3 + languageName: node + linkType: hard + +"postcss-normalize-positions@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-positions@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/bb0267b13c92791543f5e9f94b119a0540e08aa46f600acd73a692cd38d07d2d2fddb11148a81adb58e3f65671eebb05ea38d2ded48f3202b2582f1199aa848e + languageName: node + linkType: hard + +"postcss-normalize-repeat-style@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-repeat-style@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/f6e943dbbf9341dd6ce2c9fc6820e8ae2a838d1db84f58f75b1e5c1b8b9d6895d17fb30b320e2189b8747f844713ec687540b5b1d52ccd6c9108d6d35328c659 + languageName: node + linkType: hard + +"postcss-normalize-string@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-string@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/afcdd69522fc3ebafc349c2ef4b62f1e734ade9b6148fd20f2b841477808ac6cf6e5bfbb533c492fdc6bb2184b84be8ebb800a6ae174c4313f87fb0695088cc0 + languageName: node + linkType: hard + +"postcss-normalize-timing-functions@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-timing-functions@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/c1c81d0dcb2f74fbd69cc45b0b6bd6cde390a0c9df602aabbf3eb2149a49da48e808837e811d22a525ffb036e158e63b4b2cf12c94cf28f2c2f6af858876134e + languageName: node + linkType: hard + +"postcss-normalize-unicode@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-normalize-unicode@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/ea696194f65ad31de2a9c022f1946a07c298f04070706d88a20061845e1e052e645c74b5bc785595814db87d14e435f85e968a44855dedc207d8c0b5d43b1aee + languageName: node + linkType: hard + +"postcss-normalize-url@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-url@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/4e3e713a95e01f263feccd041b2b10016a0a09e494c81567f012d1326d9b2d57dc4a68956a820313630370c0ef591bdbb37cc96ed259022559623be179aad436 + languageName: node + linkType: hard + +"postcss-normalize-whitespace@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-normalize-whitespace@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/259c0b7653f033ed14303602a30e458c37dc63ee55f47226b6379a6ea553ca7c9b971d49715b8f3f36a3a06927f6f87d7997c027ad4664af3bca37a5fe30352e + languageName: node + linkType: hard + +"postcss-ordered-values@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-ordered-values@npm:6.0.1" + dependencies: + cssnano-utils: "npm:^4.0.1" + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/2e71f035c90b26d7a8d31e1b716f977532367f75bc76de3318b6ba7b2e1ec43c011cc09e741f59f7d93dff427b7d90a35db0b460d2f171a6f0c6e8c938ef30ad + languageName: node + linkType: hard + +"postcss-reduce-initial@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-reduce-initial@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + caniuse-api: "npm:^3.0.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/d35ad6f9725cdceb390a97a461e8594df7fbed4c55497c90d07c42f8343bf80139e720eaebc580bf480bf10e92959490aa308af66d8802ba71c327bdf08c93a1 + languageName: node + linkType: hard + +"postcss-reduce-transforms@npm:^6.0.1": + version: 6.0.1 + resolution: "postcss-reduce-transforms@npm:6.0.1" + dependencies: + postcss-value-parser: "npm:^4.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/de7631302311071d86622166539162e69df506785e3674afab0602c86ed9aa67799e44405b40327f0011d58089d2dc4e2ae481b21812177818e28f9272d350a5 + languageName: node + linkType: hard + +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.15, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4": + version: 6.0.15 + resolution: "postcss-selector-parser@npm:6.0.15" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10c0/48b425d6cef497bcf6b7d136f6fd95cfca43026955e07ec9290d3c15457de3a862dbf251dd36f42c07a0d5b5ab6f31e41acefeff02528995a989b955505e440b + languageName: node + linkType: hard + +"postcss-svgo@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-svgo@npm:6.0.2" + dependencies: + postcss-value-parser: "npm:^4.2.0" + svgo: "npm:^3.2.0" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/db607404d09af256c7957a0ace822d651a00a52a1796da603f93ba3f0a095ac7595e1f624b9dc53f362ab10e382845d7873f485980f9c92fcb86256833f5e835 + languageName: node + linkType: hard + +"postcss-unique-selectors@npm:^6.0.2": + version: 6.0.2 + resolution: "postcss-unique-selectors@npm:6.0.2" + dependencies: + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/a0fe112d1094f90e1bfcfd2174a74b2fd0630a24449e9942923d02956c7d64ea4add5adede53d9efb3f6d40cd388ac150d032a115f6a46b73d5f3d3d26fa1bb7 + languageName: node + linkType: hard + +"postcss-value-parser@npm:^4.1.0, postcss-value-parser@npm:^4.2.0": + version: 4.2.0 + resolution: "postcss-value-parser@npm:4.2.0" + checksum: 10c0/f4142a4f56565f77c1831168e04e3effd9ffcc5aebaf0f538eee4b2d465adfd4b85a44257bb48418202a63806a7da7fe9f56c330aebb3cac898e46b4cbf49161 + languageName: node + linkType: hard + +"postcss@npm:^8.2.14, postcss@npm:^8.4.21, postcss@npm:^8.4.24, postcss@npm:^8.4.27": + version: 8.4.35 + resolution: "postcss@npm:8.4.35" + dependencies: + nanoid: "npm:^3.3.7" + picocolors: "npm:^1.0.0" + source-map-js: "npm:^1.0.2" + checksum: 10c0/e8dd04e48001eb5857abc9475365bf08f4e508ddf9bc0b8525449a95d190f10d025acebc5b56ac2e94b3c7146790e4ae78989bb9633cb7ee20d1cc9b7dc909b2 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prepend-http@npm:^2.0.0": + version: 2.0.0 + resolution: "prepend-http@npm:2.0.0" + checksum: 10c0/b023721ffd967728e3a25e3a80dd73827e9444e586800ab90a21b3a8e67f362d28023085406ad53a36db1e4d98cb10e43eb37d45c6b733140a9165ead18a0987 + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: "npm:^1.1.2" + checksum: 10c0/81e0027d731b7b3697ccd2129470ed9913ecb111e4ec175a12f0fcfab0096516373bf0af2fef132af50cafb0a905b74ff57996d615f59512bb9ac7378fcc64ab + languageName: node + linkType: hard + +"prettier@npm:2.8.8, prettier@npm:^2.6.2": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: 10c0/463ea8f9a0946cd5b828d8cf27bd8b567345cf02f56562d5ecde198b91f47a76b7ac9eae0facd247ace70e927143af6135e8cf411986b8cb8478784a4d6d724a + languageName: node + linkType: hard + +"pretty-bytes@npm:5.6.0": + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 10c0/f69f494dcc1adda98dbe0e4a36d301e8be8ff99bfde7a637b2ee2820e7cb583b0fc0f3a63b0e3752c01501185a5cf38602c7be60da41bdf84ef5b70e89c370f3 + languageName: node + linkType: hard + +"pretty-error@npm:^4.0.0": + version: 4.0.0 + resolution: "pretty-error@npm:4.0.0" + dependencies: + lodash: "npm:^4.17.20" + renderkid: "npm:^3.0.0" + checksum: 10c0/dc292c087e2857b2e7592784ab31e37a40f3fa918caa11eba51f9fb2853e1d4d6e820b219917e35f5721d833cfd20fdf4f26ae931a90fd1ad0cae2125c345138 + languageName: node + linkType: hard + +"pretty-format@npm:^27.0.2": + version: 27.5.1 + resolution: "pretty-format@npm:27.5.1" + dependencies: + ansi-regex: "npm:^5.0.1" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^17.0.1" + checksum: 10c0/0cbda1031aa30c659e10921fa94e0dd3f903ecbbbe7184a729ad66f2b6e7f17891e8c7d7654c458fa4ccb1a411ffb695b4f17bbcd3fe075fabe181027c4040ed + languageName: node + linkType: hard + +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": "npm:^29.6.3" + ansi-styles: "npm:^5.0.0" + react-is: "npm:^18.0.0" + checksum: 10c0/edc5ff89f51916f036c62ed433506b55446ff739358de77207e63e88a28ca2894caac6e73dcb68166a606e51c8087d32d400473e6a9fdd2dbe743f46c9c0276f + languageName: node + linkType: hard + +"pretty-ms@npm:7.0.1": + version: 7.0.1 + resolution: "pretty-ms@npm:7.0.1" + dependencies: + parse-ms: "npm:^2.1.0" + checksum: 10c0/069aec9d939e7903846b3db53b020bed92e3dc5909e0fef09ec8ab104a0b7f9a846605a1633c60af900d288582fb333f6f30469e59d6487a2330301fad35a89c + languageName: node + linkType: hard + +"printable-characters@npm:^1.0.42": + version: 1.0.42 + resolution: "printable-characters@npm:1.0.42" + checksum: 10c0/7c94d94c6041a37c385af770c7402ad5a2e8a3429ca4d2505a9f19fde39bac9a8fd1edfbfa02f1eae5b4b0f3536b6b8ee6c84621f7c0fcb41476b2df6ee20e4b + languageName: node + linkType: hard + +"prisma@npm:5.9.1": + version: 5.9.1 + resolution: "prisma@npm:5.9.1" + dependencies: + "@prisma/engines": "npm:5.9.1" + bin: + prisma: build/index.js + checksum: 10c0/f934bd94bea6863902d8abe2711fd7655ed25da267f92f33eef763a20c325e98e63111613b645ba6ae241e8add652aa598dd61ada560a40dcc47572229bb9960 + languageName: node + linkType: hard + +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 10c0/f66430e4ff947dbb996058f6fd22de2c66612ae1a89b097744e17fb18a4e8e7a86db99eda52ccf15e53f00b63f4ec0b0911581ff2aac0355b625c8eac509b0dc + languageName: node + linkType: hard + +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 10c0/bec089239487833d46b59d80327a1605e1c5287eaad770a291add7f45fda1bb5e28b38e0e061add0a1d0ee0984788ce74fa394d345eed1c420cacf392c554367 + languageName: node + linkType: hard + +"process-warning@npm:^2.0.0": + version: 2.3.2 + resolution: "process-warning@npm:2.3.2" + checksum: 10c0/6bccf187f604dd63067ae8b5a08f658d1cc5df4948a51525691a564ad9250575802c094dd5d1b69f015934fe5df6d925f2e607d7a589918069129b07a777aa7b + languageName: node + linkType: hard + +"process-warning@npm:^3.0.0": + version: 3.0.0 + resolution: "process-warning@npm:3.0.0" + checksum: 10c0/60f3c8ddee586f0706c1e6cb5aa9c86df05774b9330d792d7c8851cf0031afd759d665404d07037e0b4901b55c44a423f07bdc465c63de07d8d23196bb403622 + languageName: node + linkType: hard + +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: 10c0/40c3ce4b7e6d4b8c3355479df77aeed46f81b279818ccdc500124e6a5ab882c0cc81ff7ea16384873a95a74c4570b01b120f287abbdd4c877931460eca6084b3 + languageName: node + linkType: hard + +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"promise@npm:^7.1.1": + version: 7.3.1 + resolution: "promise@npm:7.3.1" + dependencies: + asap: "npm:~2.0.3" + checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f + languageName: node + linkType: hard + +"prompts@npm:2.4.2, prompts@npm:^2.0.1": + version: 2.4.2 + resolution: "prompts@npm:2.4.2" + dependencies: + kleur: "npm:^3.0.3" + sisteransi: "npm:^1.0.5" + checksum: 10c0/16f1ac2977b19fe2cf53f8411cc98db7a3c8b115c479b2ca5c82b5527cd937aa405fa04f9a5960abeb9daef53191b53b4d13e35c1f5d50e8718c76917c5f1ea4 + languageName: node + linkType: hard + +"prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": + version: 15.8.1 + resolution: "prop-types@npm:15.8.1" + dependencies: + loose-envify: "npm:^1.4.0" + object-assign: "npm:^4.1.1" + react-is: "npm:^16.13.1" + checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + languageName: node + linkType: hard + +"proxy-addr@npm:^2.0.7, proxy-addr@npm:~2.0.7": + version: 2.0.7 + resolution: "proxy-addr@npm:2.0.7" + dependencies: + forwarded: "npm:0.2.0" + ipaddr.js: "npm:1.9.1" + checksum: 10c0/c3eed999781a35f7fd935f398b6d8920b6fb00bbc14287bc6de78128ccc1a02c89b95b56742bf7cf0362cc333c61d138532049c7dedc7a328ef13343eff81210 + languageName: node + linkType: hard + +"proxyquire@npm:2.1.3": + version: 2.1.3 + resolution: "proxyquire@npm:2.1.3" + dependencies: + fill-keys: "npm:^1.0.2" + module-not-found-error: "npm:^1.0.1" + resolve: "npm:^1.11.1" + checksum: 10c0/f2e57670ed57ef047720516f0ad2f88bfdba4aaa54139bf5d7fe6ec84bf91ec932f402c56439b44d3596743fd9405be4aac99a924eb897e3396c5be1a81672b0 + languageName: node + linkType: hard + +"prr@npm:~1.0.1": + version: 1.0.1 + resolution: "prr@npm:1.0.1" + checksum: 10c0/5b9272c602e4f4472a215e58daff88f802923b84bc39c8860376bb1c0e42aaf18c25d69ad974bd06ec6db6f544b783edecd5502cd3d184748d99080d68e4be5f + languageName: node + linkType: hard + +"psl@npm:^1.1.33": + version: 1.9.0 + resolution: "psl@npm:1.9.0" + checksum: 10c0/6a3f805fdab9442f44de4ba23880c4eba26b20c8e8e0830eff1cb31007f6825dace61d17203c58bfe36946842140c97a1ba7f67bc63ca2d88a7ee052b65d97ab + languageName: node + linkType: hard + +"pstree.remy@npm:^1.1.8": + version: 1.1.8 + resolution: "pstree.remy@npm:1.1.8" + checksum: 10c0/30f78c88ce6393cb3f7834216cb6e282eb83c92ccb227430d4590298ab2811bc4a4745f850a27c5178e79a8f3e316591de0fec87abc19da648c2b3c6eb766d14 + languageName: node + linkType: hard + +"public-encrypt@npm:^4.0.0": + version: 4.0.3 + resolution: "public-encrypt@npm:4.0.3" + dependencies: + bn.js: "npm:^4.1.0" + browserify-rsa: "npm:^4.0.0" + create-hash: "npm:^1.1.0" + parse-asn1: "npm:^5.0.0" + randombytes: "npm:^2.0.1" + safe-buffer: "npm:^5.1.2" + checksum: 10c0/6c2cc19fbb554449e47f2175065d6b32f828f9b3badbee4c76585ac28ae8641aafb9bb107afc430c33c5edd6b05dbe318df4f7d6d7712b1093407b11c4280700 + languageName: node + linkType: hard + +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/f1fe8960f44d145f8617ea4c67de05392da4557052980314c8f85081aee26953bdcab64afad58a2b1df0e8ff7203e3710e848cbe81a01027978edc6e264db355 + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: "npm:^1.1.0" + once: "npm:^1.3.1" + checksum: 10c0/bbdeda4f747cdf47db97428f3a135728669e56a0ae5f354a9ac5b74556556f5446a46f720a8f14ca2ece5be9b4d5d23c346db02b555f46739934cc6c093a5478 + languageName: node + linkType: hard + +"pumpify@npm:^1.3.3": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: "npm:^3.6.0" + inherits: "npm:^2.0.3" + pump: "npm:^2.0.0" + checksum: 10c0/0bcabf9e3dbf2d0cc1f9b84ac80d3c75386111caf8963bfd98817a1e2192000ac0ccc804ca6ccd5b2b8430fdb71347b20fb2f014fe3d41adbacb1b502a841c45 + languageName: node + linkType: hard + +"punycode@npm:^1.2.4, punycode@npm:^1.3.2, punycode@npm:^1.4.1": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: 10c0/354b743320518aef36f77013be6e15da4db24c2b4f62c5f1eb0529a6ed02fbaf1cb52925785f6ab85a962f2b590d9cd5ad730b70da72b5f180e2556b8bd3ca08 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pure-rand@npm:^6.0.0": + version: 6.0.4 + resolution: "pure-rand@npm:6.0.4" + checksum: 10c0/0fe7b12f25b10ea5b804598a6f37e4bcf645d2be6d44fe963741f014bf0095bdb6ff525106d6da6e76addc8142358fd380f1a9b8c62ea4d5516bf26a96a37c95 + languageName: node + linkType: hard + +"pvtsutils@npm:^1.3.2, pvtsutils@npm:^1.3.5": + version: 1.3.5 + resolution: "pvtsutils@npm:1.3.5" + dependencies: + tslib: "npm:^2.6.1" + checksum: 10c0/d425aed316907e0b447a459bfb97c55d22270c3cfdba5a07ec90da0737b0e40f4f1771a444636f85bb6a453de90ff8c6b5f4f6ddba7597977166af49974b4534 + languageName: node + linkType: hard + +"pvutils@npm:^1.1.3": + version: 1.1.3 + resolution: "pvutils@npm:1.1.3" + checksum: 10c0/23489e6b3c76b6afb6964a20f891d6bef092939f401c78bba186b2bfcdc7a13904a0af0a78f7933346510f8c1228d5ab02d3c80e968fd84d3c76ff98d8ec9aac + languageName: node + linkType: hard + +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/4e4875e4d7c7c31c233d07a448e7e4650f456178b9dd3766b7cfa13158fdb24ecb8c4f059fa91e820dc6ab9f2d243721d071c9c0378892dcdad86e9e9a27c68f + languageName: node + linkType: hard + +"qs@npm:6.11.2, qs@npm:^6.11.2": + version: 6.11.2 + resolution: "qs@npm:6.11.2" + dependencies: + side-channel: "npm:^1.0.4" + checksum: 10c0/4f95d4ff18ed480befcafa3390022817ffd3087fc65f146cceb40fc5edb9fa96cb31f648cae2fa96ca23818f0798bd63ad4ca369a0e22702fcd41379b3ab6571 + languageName: node + linkType: hard + +"querystring-es3@npm:^0.2.0": + version: 0.2.1 + resolution: "querystring-es3@npm:0.2.1" + checksum: 10c0/476938c1adb45c141f024fccd2ffd919a3746e79ed444d00e670aad68532977b793889648980e7ca7ff5ffc7bfece623118d0fbadcaf217495eeb7059ae51580 + languageName: node + linkType: hard + +"querystringify@npm:^2.1.1": + version: 2.2.0 + resolution: "querystringify@npm:2.2.0" + checksum: 10c0/3258bc3dbdf322ff2663619afe5947c7926a6ef5fb78ad7d384602974c467fadfc8272af44f5eb8cddd0d011aae8fabf3a929a8eee4b86edcc0a21e6bd10f9aa + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"queue-tick@npm:^1.0.1": + version: 1.0.1 + resolution: "queue-tick@npm:1.0.1" + checksum: 10c0/0db998e2c9b15215317dbcf801e9b23e6bcde4044e115155dae34f8e7454b9a783f737c9a725528d677b7a66c775eb7a955cf144fe0b87f62b575ce5bfd515a9 + languageName: node + linkType: hard + +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 10c0/fe5acc6f775b172ca5b4373df26f7e4fd347975578199e7d74b2ae4077f0af05baa27d231de1e80e8f72d88275ccc6028568a7a8c9ee5e7368ace0e18eff93a4 + languageName: node + linkType: hard + +"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": + version: 2.1.0 + resolution: "randombytes@npm:2.1.0" + dependencies: + safe-buffer: "npm:^5.1.0" + checksum: 10c0/50395efda7a8c94f5dffab564f9ff89736064d32addf0cc7e8bf5e4166f09f8ded7a0849ca6c2d2a59478f7d90f78f20d8048bca3cdf8be09d8e8a10790388f3 + languageName: node + linkType: hard + +"randomfill@npm:^1.0.3": + version: 1.0.4 + resolution: "randomfill@npm:1.0.4" + dependencies: + randombytes: "npm:^2.0.5" + safe-buffer: "npm:^5.1.0" + checksum: 10c0/11aeed35515872e8f8a2edec306734e6b74c39c46653607f03c68385ab8030e2adcc4215f76b5e4598e028c4750d820afd5c65202527d831d2a5f207fe2bc87c + languageName: node + linkType: hard + +"range-parser@npm:^1.2.1, range-parser@npm:~1.2.1": + version: 1.2.1 + resolution: "range-parser@npm:1.2.1" + checksum: 10c0/96c032ac2475c8027b7a4e9fe22dc0dfe0f6d90b85e496e0f016fbdb99d6d066de0112e680805075bd989905e2123b3b3d002765149294dce0c1f7f01fcc2ea0 + languageName: node + linkType: hard + +"raw-body@npm:2.5.1": + version: 2.5.1 + resolution: "raw-body@npm:2.5.1" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/5dad5a3a64a023b894ad7ab4e5c7c1ce34d3497fc7138d02f8c88a3781e68d8a55aa7d4fd3a458616fa8647cc228be314a1c03fb430a07521de78b32c4dd09d2 + languageName: node + linkType: hard + +"raw-body@npm:^2.5.1": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" + dependencies: + bytes: "npm:3.1.2" + http-errors: "npm:2.0.0" + iconv-lite: "npm:0.4.24" + unpipe: "npm:1.0.0" + checksum: 10c0/b201c4b66049369a60e766318caff5cb3cc5a900efd89bdac431463822d976ad0670912c931fdbdcf5543207daf6f6833bca57aa116e1661d2ea91e12ca692c4 + languageName: node + linkType: hard + +"rc@npm:1.2.8, rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10c0/24a07653150f0d9ac7168e52943cc3cb4b7a22c0e43c7dff3219977c2fdca5a2760a304a029c20811a0e79d351f57d46c9bde216193a0f73978496afc2b85b15 + languageName: node + linkType: hard + +"react-dom@npm:18.2.0": + version: 18.2.0 + resolution: "react-dom@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + scheduler: "npm:^0.23.0" + peerDependencies: + react: ^18.2.0 + checksum: 10c0/66dfc5f93e13d0674e78ef41f92ed21dfb80f9c4ac4ac25a4b51046d41d4d2186abc915b897f69d3d0ebbffe6184e7c5876f2af26bfa956f179225d921be713a + languageName: node + linkType: hard + +"react-fast-compare@npm:^3.2.2": + version: 3.2.2 + resolution: "react-fast-compare@npm:3.2.2" + checksum: 10c0/0bbd2f3eb41ab2ff7380daaa55105db698d965c396df73e6874831dbafec8c4b5b08ba36ff09df01526caa3c61595247e3269558c284e37646241cba2b90a367 + languageName: node + linkType: hard + +"react-helmet-async@npm:2.0.3": + version: 2.0.3 + resolution: "react-helmet-async@npm:2.0.3" + dependencies: + invariant: "npm:^2.2.4" + react-fast-compare: "npm:^3.2.2" + shallowequal: "npm:^1.1.0" + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/3ac58fac566e3f4951c3853975afd57dbc3af1442a897391a226fb1a54cc757506912d13485e897c61ecefe5d97e673ee91688b11ff20eb769b172c0309514ee + languageName: node + linkType: hard + +"react-hook-form@npm:7.49.3": + version: 7.49.3 + resolution: "react-hook-form@npm:7.49.3" + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + checksum: 10c0/f8e5b2dcc3d97c820b4fbac262d7e914d74f385f26f34da31b8efc6c0f32ba995f2a2330bdfd3d8b7c8b56a52349a0cbc0c0dbe9053b3971e5e0c78003dfb7f0 + languageName: node + linkType: hard + +"react-hot-toast@npm:2.4.1": + version: 2.4.1 + resolution: "react-hot-toast@npm:2.4.1" + dependencies: + goober: "npm:^2.1.10" + peerDependencies: + react: ">=16" + react-dom: ">=16" + checksum: 10c0/591ecec3c6adc1cdb70f00165a57baa3d7f75d0d30fa767213c36496bdcc6be2b2e6a3edbf7c04f7d726a1b17dcfb5e7feb2136b04b17c9ccb769894b970f365 + languageName: node + linkType: hard + +"react-is@npm:^16.13.1, react-is@npm:^16.7.0": + version: 16.13.1 + resolution: "react-is@npm:16.13.1" + checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.2 + resolution: "react-is@npm:17.0.2" + checksum: 10c0/2bdb6b93fbb1820b024b496042cce405c57e2f85e777c9aabd55f9b26d145408f9f74f5934676ffdc46f3dcff656d78413a6e43968e7b3f92eea35b3052e9053 + languageName: node + linkType: hard + +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: 10c0/6eb5e4b28028c23e2bfcf73371e72cd4162e4ac7ab445ddae2afe24e347a37d6dc22fae6e1748632cd43c6d4f9b8f86dcf26bf9275e1874f436d129952528ae0 + languageName: node + linkType: hard + +"react-refresh@npm:0.14.0, react-refresh@npm:^0.14.0": + version: 0.14.0 + resolution: "react-refresh@npm:0.14.0" + checksum: 10c0/b8ae07ad153357d77830928a7f1fc2df837aabefee907fa273ba04c7643f3b860e986f1d4b7ada9b721c8d79b8c24b5b911a314a1a2398b105f1b13d19ea2b8d + languageName: node + linkType: hard + +"react@npm:18.2.0": + version: 18.2.0 + resolution: "react@npm:18.2.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b562d9b569b0cb315e44b48099f7712283d93df36b19a39a67c254c6686479d3980b7f013dc931f4a5a3ae7645eae6386b4aa5eea933baa54ecd0f9acb0902b8 + languageName: node + linkType: hard + +"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": + version: 2.3.8 + resolution: "readable-stream@npm:2.3.8" + dependencies: + core-util-is: "npm:~1.0.0" + inherits: "npm:~2.0.3" + isarray: "npm:~1.0.0" + process-nextick-args: "npm:~2.0.0" + safe-buffer: "npm:~5.1.1" + string_decoder: "npm:~1.1.1" + util-deprecate: "npm:~1.0.1" + checksum: 10c0/7efdb01f3853bc35ac62ea25493567bf588773213f5f4a79f9c365e1ad13bab845ac0dae7bc946270dc40c3929483228415e92a3fc600cc7e4548992f41ee3fa + languageName: node + linkType: hard + +"readable-stream@npm:^3.0.6, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + +"readable-stream@npm:^4.0.0": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" + dependencies: + abort-controller: "npm:^3.0.0" + buffer: "npm:^6.0.3" + events: "npm:^3.3.0" + process: "npm:^0.11.10" + string_decoder: "npm:^1.3.0" + checksum: 10c0/a2c80e0e53aabd91d7df0330929e32d0a73219f9477dbbb18472f6fdd6a11a699fc5d172a1beff98d50eae4f1496c950ffa85b7cc2c4c196963f289a5f39275d + languageName: node + linkType: hard + +"readdir-glob@npm:^1.1.2": + version: 1.1.3 + resolution: "readdir-glob@npm:1.1.3" + dependencies: + minimatch: "npm:^5.1.0" + checksum: 10c0/a37e0716726650845d761f1041387acd93aa91b28dd5381950733f994b6c349ddc1e21e266ec7cc1f9b92e205a7a972232f9b89d5424d07361c2c3753d5dbace + languageName: node + linkType: hard + +"readdirp@npm:^2.2.1": + version: 2.2.1 + resolution: "readdirp@npm:2.2.1" + dependencies: + graceful-fs: "npm:^4.1.11" + micromatch: "npm:^3.1.10" + readable-stream: "npm:^2.0.2" + checksum: 10c0/770d177372ff2212d382d425d55ca48301fcbf3231ab3827257bbcca7ff44fb51fe4af6acc2dda8512dc7f29da390e9fbea5b2b3fc724b86e85cc828395b7797 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"real-require@npm:^0.2.0": + version: 0.2.0 + resolution: "real-require@npm:0.2.0" + checksum: 10c0/23eea5623642f0477412ef8b91acd3969015a1501ed34992ada0e3af521d3c865bb2fe4cdbfec5fe4b505f6d1ef6a03e5c3652520837a8c3b53decff7e74b6a0 + languageName: node + linkType: hard + +"recast@npm:^0.23.1": + version: 0.23.4 + resolution: "recast@npm:0.23.4" + dependencies: + assert: "npm:^2.0.0" + ast-types: "npm:^0.16.1" + esprima: "npm:~4.0.0" + source-map: "npm:~0.6.1" + tslib: "npm:^2.0.1" + checksum: 10c0/d719633be8029e28f23b8191d4a525c5dbdac721792ab3cb5e9dfcf1694fb93f3c147b186916195a9c7fa0711f1e4990ba457cdcee02faed3899d4a80da1bd1f + languageName: node + linkType: hard + +"rechoir@npm:^0.8.0": + version: 0.8.0 + resolution: "rechoir@npm:0.8.0" + dependencies: + resolve: "npm:^1.20.0" + checksum: 10c0/1a30074124a22abbd5d44d802dac26407fa72a0a95f162aa5504ba8246bc5452f8b1a027b154d9bdbabcd8764920ff9333d934c46a8f17479c8912e92332f3ff + languageName: node + linkType: hard + +"redent@npm:^3.0.0": + version: 3.0.0 + resolution: "redent@npm:3.0.0" + dependencies: + indent-string: "npm:^4.0.0" + strip-indent: "npm:^3.0.0" + checksum: 10c0/d64a6b5c0b50eb3ddce3ab770f866658a2b9998c678f797919ceb1b586bab9259b311407280bd80b804e2a7c7539b19238ae6a2a20c843f1a7fcff21d48c2eae + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.4": + version: 1.0.5 + resolution: "reflect.getprototypeof@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.5" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.22.3" + es-errors: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.3" + globalthis: "npm:^1.0.3" + which-builtin-type: "npm:^1.1.3" + checksum: 10c0/68f2a21494a9f4f5acc19bda5213236aa7fc02f9953ce2b18670c63b9ca3dec294dcabbb9d394d98cd2fc0de46b7cd6354614a60a33cabdbb5de9a6f7115f9a6 + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.1.0": + version: 10.1.1 + resolution: "regenerate-unicode-properties@npm:10.1.1" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/89adb5ee5ba081380c78f9057c02e156a8181969f6fcca72451efc45612e0c3df767b4333f8d8479c274d9c6fe52ec4854f0d8a22ef95dccbe87da8e5f2ac77d + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regenerator-transform@npm:^0.15.2": + version: 0.15.2 + resolution: "regenerator-transform@npm:0.15.2" + dependencies: + "@babel/runtime": "npm:^7.8.4" + checksum: 10c0/7cfe6931ec793269701994a93bab89c0cc95379191fad866270a7fea2adfec67ea62bb5b374db77058b60ba4509319d9b608664d0d288bd9989ca8dbd08fae90 + languageName: node + linkType: hard + +"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": + version: 1.0.2 + resolution: "regex-not@npm:1.0.2" + dependencies: + extend-shallow: "npm:^3.0.2" + safe-regex: "npm:^1.1.0" + checksum: 10c0/a0f8d6045f63b22e9759db10e248369c443b41cedd7dba0922d002b66c2734bc2aef0d98c4d45772d1f756245f4c5203856b88b9624bba2a58708858a8d485d6 + languageName: node + linkType: hard + +"regex-parser@npm:^2.2.11": + version: 2.3.0 + resolution: "regex-parser@npm:2.3.0" + checksum: 10c0/de31c40e9d982735fdf5934c822cc5cafbe6a0f0909d9fef52e2bd4cc2198933c89fd5e7a17697f25591fdb5df386a088296612b45f0f8e194222070fc5b5cc7 + languageName: node + linkType: hard + +"regexp-to-ast@npm:0.5.0": + version: 0.5.0 + resolution: "regexp-to-ast@npm:0.5.0" + checksum: 10c0/16d3c3905fb24866c3bff689ab177c1e63a7283a3cd1ba95987ef86020526f9827f5c60794197311f0e8a967889131142fe7a2e5ed3523ffe2ac9f55052e1566 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": + version: 1.5.2 + resolution: "regexp.prototype.flags@npm:1.5.2" + dependencies: + call-bind: "npm:^1.0.6" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + set-function-name: "npm:^2.0.1" + checksum: 10c0/0f3fc4f580d9c349f8b560b012725eb9c002f36daa0041b3fbf6f4238cb05932191a4d7d5db3b5e2caa336d5150ad0402ed2be81f711f9308fe7e1a9bf9bd552 + languageName: node + linkType: hard + +"regexpu-core@npm:^5.3.1": + version: 5.3.2 + resolution: "regexpu-core@npm:5.3.2" + dependencies: + "@babel/regjsgen": "npm:^0.8.0" + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.1.0" + regjsparser: "npm:^0.9.1" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/7945d5ab10c8bbed3ca383d4274687ea825aee4ab93a9c51c6e31e1365edd5ea807f6908f800ba017b66c462944ba68011164e7055207747ab651f8111ef3770 + languageName: node + linkType: hard + +"registry-auth-token@npm:^4.0.0": + version: 4.2.2 + resolution: "registry-auth-token@npm:4.2.2" + dependencies: + rc: "npm:1.2.8" + checksum: 10c0/1d0000b8b65e7141a4cc4594926e2551607f48596e01326e7aa2ba2bc688aea86b2aa0471c5cb5de7acc9a59808a3a1ddde9084f974da79bfc67ab67aa48e003 + languageName: node + linkType: hard + +"registry-url@npm:^5.0.0": + version: 5.1.0 + resolution: "registry-url@npm:5.1.0" + dependencies: + rc: "npm:^1.2.8" + checksum: 10c0/c2c455342b5836cbed5162092eba075c7a02c087d9ce0fde8aeb4dc87a8f4a34a542e58bf4d8ec2d4cb73f04408cb3148ceb1f76647f76b978cfec22047dc6d6 + languageName: node + linkType: hard + +"regjsparser@npm:^0.9.1": + version: 0.9.1 + resolution: "regjsparser@npm:0.9.1" + dependencies: + jsesc: "npm:~0.5.0" + bin: + regjsparser: bin/parser + checksum: 10c0/fe44fcf19a99fe4f92809b0b6179530e5ef313ff7f87df143b08ce9a2eb3c4b6189b43735d645be6e8f4033bfb015ed1ca54f0583bc7561bed53fd379feb8225 + languageName: node + linkType: hard + +"relateurl@npm:^0.2.7": + version: 0.2.7 + resolution: "relateurl@npm:0.2.7" + checksum: 10c0/c248b4e3b32474f116a804b537fa6343d731b80056fb506dffd91e737eef4cac6be47a65aae39b522b0db9d0b1011d1a12e288d82a109ecd94a5299d82f6573a + languageName: node + linkType: hard + +"relay-runtime@npm:12.0.0": + version: 12.0.0 + resolution: "relay-runtime@npm:12.0.0" + dependencies: + "@babel/runtime": "npm:^7.0.0" + fbjs: "npm:^3.0.0" + invariant: "npm:^2.2.4" + checksum: 10c0/f5d29b5c2f3c8a3438d43dcbc3022bd454c4ecbd4f0b10616df08bedc62d8aaa84f155f23e374053cf9f4a8238b93804e37a5b37ed9dc7ad01436d62d1b01d53 + languageName: node + linkType: hard + +"remedial@npm:^1.0.7": + version: 1.0.8 + resolution: "remedial@npm:1.0.8" + checksum: 10c0/ca1e22d2958e3f0f2fdb5f1c23fecadab5d83a0b1e291c67474c806ce07801212f1d2006995bdcfb592803ead7666e2b1fbb9281b3f32d4a87ff2335b3777725 + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: 10c0/3568f9f8f5af3737b4aee9e6e1e8ec4be65a92da9cb27f989e0893714d50aa95ed2ff02d40d1fa35e1b1a234dc9c2437050ef356704a3999feaca6667d9e9bfc + languageName: node + linkType: hard + +"remove-trailing-spaces@npm:^1.0.6": + version: 1.0.8 + resolution: "remove-trailing-spaces@npm:1.0.8" + checksum: 10c0/b9a4d74fd77e4a81b83cd19152abe1d658e5ecf13bc9b789c2699d7166d3879258a61625f8fc0274ef5719ab70e514ae86234fee481f6b41b50729949b837c1b + languageName: node + linkType: hard + +"renderkid@npm:^3.0.0": + version: 3.0.0 + resolution: "renderkid@npm:3.0.0" + dependencies: + css-select: "npm:^4.1.3" + dom-converter: "npm:^0.2.0" + htmlparser2: "npm:^6.1.0" + lodash: "npm:^4.17.21" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/24a9fae4cc50e731d059742d1b3eec163dc9e3872b12010d120c3fcbd622765d9cda41f79a1bbb4bf63c1d3442f18a08f6e1642cb5d7ebf092a0ce3f7a3bd143 + languageName: node + linkType: hard + +"repeat-element@npm:^1.1.2": + version: 1.1.4 + resolution: "repeat-element@npm:1.1.4" + checksum: 10c0/81aa8d82bc845780803ef52df3533fa399974b99df571d0bb86e91f0ffca9ee4b9c4e8e5e72af087938cc28d2aef93d106a6d01da685d72ce96455b90a9f9f69 + languageName: node + linkType: hard + +"repeat-string@npm:^1.6.1": + version: 1.6.1 + resolution: "repeat-string@npm:1.6.1" + checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 10c0/db91467d9ead311b4111cbd73a4e67fa7820daed2989a32f7023785a2659008c6d119752d9c4ac011ae07e537eb86523adff99804c5fdb39cd3a017f9b401bb6 + languageName: node + linkType: hard + +"requireindex@npm:^1.2.0": + version: 1.2.0 + resolution: "requireindex@npm:1.2.0" + checksum: 10c0/7fb42aed73bf8de9acc4d6716cf07acc7fbe180e58729433bafcf702e76e7bb10e54f8266c06bfec62d752e0ac14d50e8758833de539e6f4e2cd642077866153 + languageName: node + linkType: hard + +"requires-port@npm:^1.0.0": + version: 1.0.0 + resolution: "requires-port@npm:1.0.0" + checksum: 10c0/b2bfdd09db16c082c4326e573a82c0771daaf7b53b9ce8ad60ea46aa6e30aaf475fe9b164800b89f93b748d2c234d8abff945d2551ba47bf5698e04cd7713267 + languageName: node + linkType: hard + +"reselect@npm:^4.1.7": + version: 4.1.8 + resolution: "reselect@npm:4.1.8" + checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-url-loader@npm:5.0.0": + version: 5.0.0 + resolution: "resolve-url-loader@npm:5.0.0" + dependencies: + adjust-sourcemap-loader: "npm:^4.0.0" + convert-source-map: "npm:^1.7.0" + loader-utils: "npm:^2.0.0" + postcss: "npm:^8.2.14" + source-map: "npm:0.6.1" + checksum: 10c0/53eef3620332f2fc35a4deffaa4395064b2ffd1bc28be380faa3f1e99c2fb7bbf0f705700b4539387d5b6c39586df54a92cd5d031606f19de4bf9e0ff1b6a522 + languageName: node + linkType: hard + +"resolve-url@npm:^0.2.1": + version: 0.2.1 + resolution: "resolve-url@npm:0.2.1" + checksum: 10c0/c285182cfcddea13a12af92129ce0569be27fb0074ffaefbd3ba3da2eac2acecdfc996d435c4982a9fa2b4708640e52837c9153a5ab9255886a00b0b9e8d2a54 + languageName: node + linkType: hard + +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 10c0/cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 + languageName: node + linkType: hard + +"resolve@npm:^1.11.1, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.22.4": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/07e179f4375e1fd072cfb72ad66d78547f86e6196c4014b31cb0b8bb1db5f7ca871f922d08da0fbc05b94e9fd42206f819648fa3b5b873ebbc8e1dc68fec433a + languageName: node + linkType: hard + +"resolve@npm:^2.0.0-next.4": + version: 2.0.0-next.5 + resolution: "resolve@npm:2.0.0-next.5" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/a6c33555e3482ea2ec4c6e3d3bf0d78128abf69dca99ae468e64f1e30acaa318fd267fb66c8836b04d558d3e2d6ed875fe388067e7d8e0de647d3c21af21c43a + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.11.1#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin<compat/resolve>, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin<compat/resolve>": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin<compat/resolve>::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/0446f024439cd2e50c6c8fa8ba77eaa8370b4180f401a96abf3d1ebc770ac51c1955e12764cde449fde3fff480a61f84388e3505ecdbab778f4bef5f8212c729 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^2.0.0-next.4#optional!builtin<compat/resolve>": + version: 2.0.0-next.5 + resolution: "resolve@patch:resolve@npm%3A2.0.0-next.5#optional!builtin<compat/resolve>::version=2.0.0-next.5&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.13.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/78ad6edb8309a2bfb720c2c1898f7907a37f858866ce11a5974643af1203a6a6e05b2fa9c53d8064a673a447b83d42569260c306d43628bff5bb101969708355 + languageName: node + linkType: hard + +"response-iterator@npm:^0.2.6": + version: 0.2.6 + resolution: "response-iterator@npm:0.2.6" + checksum: 10c0/60e6b552cd610643269d5d916d270cc8a4bea978cbe4779d6ef8083ac6b89006795508034e4c4ebe204eded75ac32bf243589ba82c1184591dde0674f6db785e + languageName: node + linkType: hard + +"responselike@npm:^1.0.2": + version: 1.0.2 + resolution: "responselike@npm:1.0.2" + dependencies: + lowercase-keys: "npm:^1.0.0" + checksum: 10c0/1c2861d1950790da96159ca490eda645130eaf9ccc4d76db20f685ba944feaf30f45714b4318f550b8cd72990710ad68355ff15c41da43ed9a93c102c0ffa403 + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"restore-cursor@npm:^4.0.0": + version: 4.0.0 + resolution: "restore-cursor@npm:4.0.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318 + languageName: node + linkType: hard + +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: 10c0/01f77cad0f7ea4f955852c03d66982609893edc1240c0c964b4c9251d0f9fb6705150634060d169939b096d3b77f4c84d6b6098a5b5d340160898c8581f1f63f + languageName: node + linkType: hard + +"ret@npm:~0.2.0": + version: 0.2.2 + resolution: "ret@npm:0.2.2" + checksum: 10c0/1a41e543913cda851abb1dae4852efa97bb693ce58fde3b51cc1cae94e2599dd70b91ad6268a4a07fc238305be06fed91723ef6d08863c48a0d02e0a74b943cd + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"retry@npm:^0.13.1": + version: 0.13.1 + resolution: "retry@npm:0.13.1" + checksum: 10c0/9ae822ee19db2163497e074ea919780b1efa00431d197c7afdb950e42bf109196774b92a49fc9821f0b8b328a98eea6017410bfc5e8a0fc19c85c6d11adb3772 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + languageName: node + linkType: hard + +"rfdc@npm:^1.2.0, rfdc@npm:^1.3.0": + version: 1.3.1 + resolution: "rfdc@npm:1.3.1" + checksum: 10c0/69f65e3ed30970f8055fac9fbbef9ce578800ca19554eab1dcbffe73a4b8aef536bc4248313889cf25e3b4e38b212c721eabe30856575bf2b2bc3d90f8ba93ef + languageName: node + linkType: hard + +"rimraf@npm:5.0.5": + version: 5.0.5 + resolution: "rimraf@npm:5.0.5" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/d50dbe724f33835decd88395b25ed35995077c60a50ae78ded06e0185418914e555817aad1b4243edbff2254548c2f6ad6f70cc850040bebb4da9e8cc016f586 + languageName: node + linkType: hard + +"rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": + version: 2.7.1 + resolution: "rimraf@npm:2.7.1" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/4eef73d406c6940927479a3a9dee551e14a54faf54b31ef861250ac815172bade86cc6f7d64a4dc5e98b65e4b18a2e1c9ff3b68d296be0c748413f092bb0dd40 + languageName: node + linkType: hard + +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + +"rimraf@npm:~2.6.2": + version: 2.6.3 + resolution: "rimraf@npm:2.6.3" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: ./bin.js + checksum: 10c0/f1e646f8c567795f2916aef7aadf685b543da6b9a53e482bb04b07472c7eef2b476045ba1e29f401c301c66b630b22b815ab31fdd60c5e1ae6566ff523debf45 + languageName: node + linkType: hard + +"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": + version: 2.0.2 + resolution: "ripemd160@npm:2.0.2" + dependencies: + hash-base: "npm:^3.0.0" + inherits: "npm:^2.0.1" + checksum: 10c0/f6f0df78817e78287c766687aed4d5accbebc308a8e7e673fb085b9977473c1f139f0c5335d353f172a915bb288098430755d2ad3c4f30612f4dd0c901cd2c3a + languageName: node + linkType: hard + +"rollup@npm:^3.27.1": + version: 3.29.4 + resolution: "rollup@npm:3.29.4" + dependencies: + fsevents: "npm:~2.3.2" + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10c0/65eddf84bf389ea8e4d4c1614b1c6a298d08f8ae785c0c087e723a879190c8aaddbab4aa3b8a0524551b9036750c9f8bfea27b377798accfd2ba5084ceff5aaa + languageName: node + linkType: hard + +"root-workspace-0b6124@workspace:.": + version: 0.0.0-use.local + resolution: "root-workspace-0b6124@workspace:." + dependencies: + "@redwoodjs/core": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + languageName: unknown + linkType: soft + +"run-async@npm:^2.4.0": + version: 2.4.1 + resolution: "run-async@npm:2.4.1" + checksum: 10c0/35a68c8f1d9664f6c7c2e153877ca1d6e4f886e5ca067c25cdd895a6891ff3a1466ee07c63d6a9be306e9619ff7d509494e6d9c129516a36b9fd82263d579ee1 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": + version: 1.0.3 + resolution: "run-queue@npm:1.0.3" + dependencies: + aproba: "npm:^1.1.1" + checksum: 10c0/4e8964279d8f160f9ffaabe82eaad11a1d4c0db596a0f2b5257ae9d2b900c7e1ffcece3e5719199436f50718e1e7f45bb4bf7a82e331a4e734d67c2588a90cbb + languageName: node + linkType: hard + +"rxjs@npm:^7.5.5, rxjs@npm:^7.8.1": + version: 7.8.1 + resolution: "rxjs@npm:7.8.1" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-array-concat@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.5" + get-intrinsic: "npm:^1.2.2" + has-symbols: "npm:^1.0.3" + isarray: "npm:^2.0.5" + checksum: 10c0/833d3d950fc7507a60075f9bfaf41ec6dac7c50c7a9d62b1e6b071ecc162185881f92e594ff95c1a18301c881352dd6fd236d56999d5819559db7b92da9c28af + languageName: node + linkType: hard + +"safe-buffer@npm:5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 10c0/780ba6b5d99cc9a40f7b951d47152297d0e260f0df01472a1b99d4889679a4b94a13d644f7dbc4f022572f09ae9005fa2fbb93bbbd83643316f365a3e9a45b21 + languageName: node + linkType: hard + +"safe-buffer@npm:5.2.1, safe-buffer@npm:>=5.1.0, safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:^5.2.1, safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.0.3": + version: 1.0.3 + resolution: "safe-regex-test@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.1.4" + checksum: 10c0/900bf7c98dc58f08d8523b7012b468e4eb757afa624f198902c0643d7008ba777b0bdc35810ba0b758671ce887617295fb742b3f3968991b178ceca54cb07603 + languageName: node + linkType: hard + +"safe-regex2@npm:^2.0.0": + version: 2.0.0 + resolution: "safe-regex2@npm:2.0.0" + dependencies: + ret: "npm:~0.2.0" + checksum: 10c0/f499e4fc69caafd7dd8023759e69a32991baa66e90bec5e2a7777b907943b27068dbff4e7a32cc8231f1354fcb779142f419e85498ae1e37384dc60619509c27 + languageName: node + linkType: hard + +"safe-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex@npm:1.1.0" + dependencies: + ret: "npm:~0.1.10" + checksum: 10c0/547d58aa5184cbef368fd5ed5f28d20f911614748c5da6b35f53fd6626396707587251e6e3d1e3010fd3ff1212e413841b8825eaa5f317017ca62a30899af31a + languageName: node + linkType: hard + +"safe-stable-stringify@npm:^2.3.1": + version: 2.4.3 + resolution: "safe-stable-stringify@npm:2.4.3" + checksum: 10c0/81dede06b8f2ae794efd868b1e281e3c9000e57b39801c6c162267eb9efda17bd7a9eafa7379e1f1cacd528d4ced7c80d7460ad26f62ada7c9e01dec61b2e768 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"saxes@npm:^6.0.0": + version: 6.0.0 + resolution: "saxes@npm:6.0.0" + dependencies: + xmlchars: "npm:^2.2.0" + checksum: 10c0/3847b839f060ef3476eb8623d099aa502ad658f5c40fd60c105ebce86d244389b0d76fcae30f4d0c728d7705ceb2f7e9b34bb54717b6a7dbedaf5dad2d9a4b74 + languageName: node + linkType: hard + +"scheduler@npm:^0.23.0": + version: 0.23.0 + resolution: "scheduler@npm:0.23.0" + dependencies: + loose-envify: "npm:^1.1.0" + checksum: 10c0/b777f7ca0115e6d93e126ac490dbd82642d14983b3079f58f35519d992fa46260be7d6e6cede433a92db70306310c6f5f06e144f0e40c484199e09c1f7be53dd + languageName: node + linkType: hard + +"schema-utils@npm:^1.0.0": + version: 1.0.0 + resolution: "schema-utils@npm:1.0.0" + dependencies: + ajv: "npm:^6.1.0" + ajv-errors: "npm:^1.0.0" + ajv-keywords: "npm:^3.1.0" + checksum: 10c0/670e22d7f0ff0b6f4514a4d6fb27c359101b44b7dbfd9563af201af72eb4a9ff06144020cab5f85b16e88821fd09b97cbdae6c893721c6528c8cb704124e6a2f + languageName: node + linkType: hard + +"schema-utils@npm:^2.6.5": + version: 2.7.1 + resolution: "schema-utils@npm:2.7.1" + dependencies: + "@types/json-schema": "npm:^7.0.5" + ajv: "npm:^6.12.4" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/f484f34464edd8758712d5d3ba25a306e367dac988aecaf4ce112e99baae73f33a807b5cf869240bb6648c80720b36af2d7d72be3a27faa49a2d4fc63fa3f85f + languageName: node + linkType: hard + +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" + dependencies: + "@types/json-schema": "npm:^7.0.8" + ajv: "npm:^6.12.5" + ajv-keywords: "npm:^3.5.2" + checksum: 10c0/fafdbde91ad8aa1316bc543d4b61e65ea86970aebbfb750bfb6d8a6c287a23e415e0e926c2498696b242f63af1aab8e585252637fabe811fd37b604351da6500 + languageName: node + linkType: hard + +"schema-utils@npm:^4.0.0, schema-utils@npm:^4.0.1": + version: 4.2.0 + resolution: "schema-utils@npm:4.2.0" + dependencies: + "@types/json-schema": "npm:^7.0.9" + ajv: "npm:^8.9.0" + ajv-formats: "npm:^2.1.1" + ajv-keywords: "npm:^5.1.0" + checksum: 10c0/8dab7e7800316387fd8569870b4b668cfcecf95ac551e369ea799bbcbfb63fb0365366d4b59f64822c9f7904d8c5afcfaf5a6124a4b08783e558cd25f299a6b4 + languageName: node + linkType: hard + +"scuid@npm:^1.1.0": + version: 1.1.0 + resolution: "scuid@npm:1.1.0" + checksum: 10c0/01c6bd2657ceaa148ead0c836df6251f561166142059261022a38dba429b30141e27ab3c0eca1012b88912f51a9e848e475fe1b6259ef1c61a0a7f6eb54fb261 + languageName: node + linkType: hard + +"secure-json-parse@npm:^2.4.0, secure-json-parse@npm:^2.7.0": + version: 2.7.0 + resolution: "secure-json-parse@npm:2.7.0" + checksum: 10c0/f57eb6a44a38a3eeaf3548228585d769d788f59007454214fab9ed7f01fbf2e0f1929111da6db28cf0bcc1a2e89db5219a59e83eeaec3a54e413a0197ce879e4 + languageName: node + linkType: hard + +"select-hose@npm:^2.0.0": + version: 2.0.0 + resolution: "select-hose@npm:2.0.0" + checksum: 10c0/01cc52edd29feddaf379efb4328aededa633f0ac43c64b11a8abd075ff34f05b0d280882c4fbcbdf1a0658202c9cd2ea8d5985174dcf9a2dac7e3a4996fa9b67 + languageName: node + linkType: hard + +"selfsigned@npm:^2.1.1": + version: 2.4.1 + resolution: "selfsigned@npm:2.4.1" + dependencies: + "@types/node-forge": "npm:^1.3.0" + node-forge: "npm:^1" + checksum: 10c0/521829ec36ea042f7e9963bf1da2ed040a815cf774422544b112ec53b7edc0bc50a0f8cc2ae7aa6cc19afa967c641fd96a15de0fc650c68651e41277d2e1df09 + languageName: node + linkType: hard + +"semver@npm:7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/5160b06975a38b11c1ab55950cb5b8a23db78df88275d3d8a42ccf1f29e55112ac995b3a26a522c36e3b5f76b0445f1eef70d696b8c7862a2b4303d7b0e7609e + languageName: node + linkType: hard + +"semver@npm:^5.6.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10c0/fbfe717094ace0aa8d6332d7ef5ce727259815bd8d8815700853f4faf23aacbd7192522f0dc5af6df52ef4fa85a355ebd2f5d39f554bd028200d6cf481ab9b53 + languageName: node + linkType: hard + +"send@npm:0.18.0": + version: 0.18.0 + resolution: "send@npm:0.18.0" + dependencies: + debug: "npm:2.6.9" + depd: "npm:2.0.0" + destroy: "npm:1.2.0" + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + etag: "npm:~1.8.1" + fresh: "npm:0.5.2" + http-errors: "npm:2.0.0" + mime: "npm:1.6.0" + ms: "npm:2.1.3" + on-finished: "npm:2.4.1" + range-parser: "npm:~1.2.1" + statuses: "npm:2.0.1" + checksum: 10c0/0eb134d6a51fc13bbcb976a1f4214ea1e33f242fae046efc311e80aff66c7a43603e26a79d9d06670283a13000e51be6e0a2cb80ff0942eaf9f1cd30b7ae736a + languageName: node + linkType: hard + +"sentence-case@npm:^3.0.4": + version: 3.0.4 + resolution: "sentence-case@npm:3.0.4" + dependencies: + no-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + upper-case-first: "npm:^2.0.2" + checksum: 10c0/9a90527a51300cf5faea7fae0c037728f9ddcff23ac083883774c74d180c0a03c31aab43d5c3347512e8c1b31a0d4712512ec82beb71aa79b85149f9abeb5467 + languageName: node + linkType: hard + +"serialize-javascript@npm:^4.0.0": + version: 4.0.0 + resolution: "serialize-javascript@npm:4.0.0" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/510dfe7f0311c0b2f7ab06311afa1668ba2969ab2f1faaac0a4924ede76b7f22ba85cfdeaa0052ec5a047bca42c8cd8ac8df8f0efe52f9bd290b3a39ae69fe9d + languageName: node + linkType: hard + +"serialize-javascript@npm:^6.0.0, serialize-javascript@npm:^6.0.1": + version: 6.0.2 + resolution: "serialize-javascript@npm:6.0.2" + dependencies: + randombytes: "npm:^2.1.0" + checksum: 10c0/2dd09ef4b65a1289ba24a788b1423a035581bef60817bea1f01eda8e3bda623f86357665fe7ac1b50f6d4f583f97db9615b3f07b2a2e8cbcb75033965f771dd2 + languageName: node + linkType: hard + +"serve-index@npm:^1.9.1": + version: 1.9.1 + resolution: "serve-index@npm:1.9.1" + dependencies: + accepts: "npm:~1.3.4" + batch: "npm:0.6.1" + debug: "npm:2.6.9" + escape-html: "npm:~1.0.3" + http-errors: "npm:~1.6.2" + mime-types: "npm:~2.1.17" + parseurl: "npm:~1.3.2" + checksum: 10c0/a666471a24196f74371edf2c3c7bcdd82adbac52f600804508754b5296c3567588bf694258b19e0cb23a567acfa20d9721bfdaed3286007b81f9741ada8a3a9c + languageName: node + linkType: hard + +"serve-static@npm:1.15.0": + version: 1.15.0 + resolution: "serve-static@npm:1.15.0" + dependencies: + encodeurl: "npm:~1.0.2" + escape-html: "npm:~1.0.3" + parseurl: "npm:~1.3.3" + send: "npm:0.18.0" + checksum: 10c0/fa9f0e21a540a28f301258dfe1e57bb4f81cd460d28f0e973860477dd4acef946a1f41748b5bd41c73b621bea2029569c935faa38578fd34cd42a9b4947088ba + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"set-cookie-parser@npm:^2.4.1, set-cookie-parser@npm:^2.4.6": + version: 2.6.0 + resolution: "set-cookie-parser@npm:2.6.0" + checksum: 10c0/739da029f0e56806a103fcd5501d9c475e19e77bd8274192d7ae5c374ae714a82bba9a7ac00b0330a18227c5644b08df9e442240527be578f5a6030f9bb2bb80 + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.1": + version: 1.2.1 + resolution: "set-function-length@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.1.2" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.3" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.1" + checksum: 10c0/1927e296599f2c04d210c1911f1600430a5e49e04a6d8bb03dca5487b95a574da9968813a2ced9a774bd3e188d4a6208352c8f64b8d4674cdb021dca21e190ca + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" + dependencies: + define-data-property: "npm:^1.0.1" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.0" + checksum: 10c0/6be7d3e15be47f4db8a5a563a35c60b5e7c4af91cc900e8972ffad33d3aaa227900faa55f60121cdb04b85866a734bb7fe4cd91f654c632861cc86121a48312a + languageName: node + linkType: hard + +"set-value@npm:^2.0.0, set-value@npm:^2.0.1": + version: 2.0.1 + resolution: "set-value@npm:2.0.1" + dependencies: + extend-shallow: "npm:^2.0.1" + is-extendable: "npm:^0.1.1" + is-plain-object: "npm:^2.0.3" + split-string: "npm:^3.0.1" + checksum: 10c0/4c40573c4f6540456e4b38b95f570272c4cfbe1d12890ad4057886da8535047cd772dfadf5b58e2e87aa244dfb4c57e3586f6716b976fc47c5144b6b09e1811b + languageName: node + linkType: hard + +"setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": + version: 1.0.5 + resolution: "setimmediate@npm:1.0.5" + checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 + languageName: node + linkType: hard + +"setprototypeof@npm:1.1.0": + version: 1.1.0 + resolution: "setprototypeof@npm:1.1.0" + checksum: 10c0/a77b20876689c6a89c3b42f0c3596a9cae02f90fc902570cbd97198e9e8240382086c9303ad043e88cee10f61eae19f1004e51d885395a1e9bf49f9ebed12872 + languageName: node + linkType: hard + +"setprototypeof@npm:1.2.0": + version: 1.2.0 + resolution: "setprototypeof@npm:1.2.0" + checksum: 10c0/68733173026766fa0d9ecaeb07f0483f4c2dc70ca376b3b7c40b7cda909f94b0918f6c5ad5ce27a9160bdfb475efaa9d5e705a11d8eaae18f9835d20976028bc + languageName: node + linkType: hard + +"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + bin: + sha.js: ./bin.js + checksum: 10c0/b7a371bca8821c9cc98a0aeff67444a03d48d745cb103f17228b96793f455f0eb0a691941b89ea1e60f6359207e36081d9be193252b0f128e0daf9cfea2815a5 + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + languageName: node + linkType: hard + +"shallowequal@npm:^1.1.0": + version: 1.1.0 + resolution: "shallowequal@npm:1.1.0" + checksum: 10c0/b926efb51cd0f47aa9bc061add788a4a650550bbe50647962113a4579b60af2abe7b62f9b02314acc6f97151d4cf87033a2b15fc20852fae306d1a095215396c + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shell-exec@npm:1.0.2": + version: 1.0.2 + resolution: "shell-exec@npm:1.0.2" + checksum: 10c0/3733ed251bc025340a373da151c44d36e69d37f570e94f5dd6a968427e8d9f751a58dd87c5a01bf0ad1289ad1de963a425aaf14ad3a06f8aee56f776462b63ca + languageName: node + linkType: hard + +"shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": + version: 1.8.1 + resolution: "shell-quote@npm:1.8.1" + checksum: 10c0/8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + languageName: node + linkType: hard + +"side-channel@npm:^1.0.4": + version: 1.0.5 + resolution: "side-channel@npm:1.0.5" + dependencies: + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + object-inspect: "npm:^1.13.1" + checksum: 10c0/31312fecb68997ce2893b1f6d1fd07d6dd41e05cc938e82004f056f7de96dd9df599ef9418acdf730dda948e867e933114bd2efe4170c0146d1ed7009700c252 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"signedsource@npm:^1.0.0": + version: 1.0.0 + resolution: "signedsource@npm:1.0.0" + checksum: 10c0/dbb4ade9c94888e83c16d23ef1a43195799de091d366d130be286415e8aeb97b3f25b14fd26fc5888e1335d703ad561374fddee32e43b7cea04751b93d178a47 + languageName: node + linkType: hard + +"simple-update-notifier@npm:^2.0.0": + version: 2.0.0 + resolution: "simple-update-notifier@npm:2.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c + languageName: node + linkType: hard + +"sirv@npm:^2.0.3": + version: 2.0.4 + resolution: "sirv@npm:2.0.4" + dependencies: + "@polka/url": "npm:^1.0.0-next.24" + mrmime: "npm:^2.0.0" + totalist: "npm:^3.0.0" + checksum: 10c0/68f8ee857f6a9415e9c07a1f31c7c561df8d5f1b1ba79bee3de583fa37da8718def5309f6b1c6e2c3ef77de45d74f5e49efc7959214443aa92d42e9c99180a4e + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 10c0/230ac975cca485b7f6fe2b96a711aa62a6a26ead3e6fb8ba17c5a00d61b8bed0d7adc21f5626b70d7c33c62ff4e63933017a6462942c719d1980bb0b1207ad46 + languageName: node + linkType: hard + +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"slash@npm:^4.0.0": + version: 4.0.0 + resolution: "slash@npm:4.0.0" + checksum: 10c0/b522ca75d80d107fd30d29df0549a7b2537c83c4c4ecd12cd7d4ea6c8aaca2ab17ada002e7a1d78a9d736a0261509f26ea5b489082ee443a3a810586ef8eff18 + languageName: node + linkType: hard + +"slash@npm:^5.0.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 10c0/eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/6c25678db1270d4793e0327620f1e0f9f5bea4630123f51e9e399191bc52c87d6e6de53ed33538609e5eacbd1fab769fae00f3705d08d029f02102a540648918 + languageName: node + linkType: hard + +"slice-ansi@npm:^5.0.0": + version: 5.0.0 + resolution: "slice-ansi@npm:5.0.0" + dependencies: + ansi-styles: "npm:^6.0.0" + is-fullwidth-code-point: "npm:^4.0.0" + checksum: 10c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"snake-case@npm:^3.0.4": + version: 3.0.4 + resolution: "snake-case@npm:3.0.4" + dependencies: + dot-case: "npm:^3.0.4" + tslib: "npm:^2.0.3" + checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd + languageName: node + linkType: hard + +"snapdragon-node@npm:^2.0.1": + version: 2.1.1 + resolution: "snapdragon-node@npm:2.1.1" + dependencies: + define-property: "npm:^1.0.0" + isobject: "npm:^3.0.0" + snapdragon-util: "npm:^3.0.1" + checksum: 10c0/7616e6a1ca054afe3ad8defda17ebe4c73b0800d2e0efd635c44ee1b286f8ac7900517314b5330862ce99b28cd2782348ee78bae573ff0f55832ad81d9657f3f + languageName: node + linkType: hard + +"snapdragon-util@npm:^3.0.1": + version: 3.0.1 + resolution: "snapdragon-util@npm:3.0.1" + dependencies: + kind-of: "npm:^3.2.0" + checksum: 10c0/4441856d343399ba7f37f79681949d51b922e290fcc07e7bc94655a50f584befa4fb08f40c3471cd160e004660161964d8ff140cba49baa59aa6caba774240e3 + languageName: node + linkType: hard + +"snapdragon@npm:^0.8.1": + version: 0.8.2 + resolution: "snapdragon@npm:0.8.2" + dependencies: + base: "npm:^0.11.1" + debug: "npm:^2.2.0" + define-property: "npm:^0.2.5" + extend-shallow: "npm:^2.0.1" + map-cache: "npm:^0.2.2" + source-map: "npm:^0.5.6" + source-map-resolve: "npm:^0.5.0" + use: "npm:^3.1.0" + checksum: 10c0/dfdac1f73d47152d72fc07f4322da09bbddfa31c1c9c3ae7346f252f778c45afa5b03e90813332f02f04f6de8003b34a168c456f8bb719024d092f932520ffca + languageName: node + linkType: hard + +"sockjs@npm:^0.3.24": + version: 0.3.24 + resolution: "sockjs@npm:0.3.24" + dependencies: + faye-websocket: "npm:^0.11.3" + uuid: "npm:^8.3.2" + websocket-driver: "npm:^0.7.4" + checksum: 10c0/aa102c7d921bf430215754511c81ea7248f2dcdf268fbdb18e4d8183493a86b8793b164c636c52f474a886f747447c962741df2373888823271efdb9d2594f33 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:^4.3.4" + socks: "npm:^2.7.1" + checksum: 10c0/a842402fc9b8848a31367f2811ca3cd14c4106588b39a0901cd7a69029998adfc6456b0203617c18ed090542ad0c24ee4e9d4c75a0c4b75071e214227c177eb7 + languageName: node + linkType: hard + +"socks@npm:^2.7.1": + version: 2.8.0 + resolution: "socks@npm:2.8.0" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/208fa5d5ae47857653c4fc039d47e4c1e76313b24052151a949aa98f027f9aaba8fc6c5dc0f7f2d9ceeb94e9940217581f2d9798436563c1494b67a6cb68611f + languageName: node + linkType: hard + +"sonic-boom@npm:^3.7.0": + version: 3.8.0 + resolution: "sonic-boom@npm:3.8.0" + dependencies: + atomic-sleep: "npm:^1.0.0" + checksum: 10c0/f3f61cb3fd5d4aad862dd957f22318ef85bf47d4f12ba27b915112908449f752dbdfc95a4739d2b4a9b2770e1e08d349adae9d1030fdab2a3d86128c6773a7f4 + languageName: node + linkType: hard + +"source-list-map@npm:^2.0.0, source-list-map@npm:^2.0.1": + version: 2.0.1 + resolution: "source-list-map@npm:2.0.1" + checksum: 10c0/2e5e421b185dcd857f46c3c70e2e711a65d717b78c5f795e2e248c9d67757882ea989b80ebc08cf164eeeda5f4be8aa95d3b990225070b2daaaf3257c5958149 + languageName: node + linkType: hard + +"source-map-js@npm:^1.0.1, source-map-js@npm:^1.0.2": + version: 1.0.2 + resolution: "source-map-js@npm:1.0.2" + checksum: 10c0/32f2dfd1e9b7168f9a9715eb1b4e21905850f3b50cf02cf476e47e4eebe8e6b762b63a64357896aa29b37e24922b4282df0f492e0d2ace572b43d15525976ff8 + languageName: node + linkType: hard + +"source-map-resolve@npm:^0.5.0": + version: 0.5.3 + resolution: "source-map-resolve@npm:0.5.3" + dependencies: + atob: "npm:^2.1.2" + decode-uri-component: "npm:^0.2.0" + resolve-url: "npm:^0.2.1" + source-map-url: "npm:^0.4.0" + urix: "npm:^0.1.0" + checksum: 10c0/410acbe93882e058858d4c1297be61da3e1533f95f25b95903edddc1fb719654e705663644677542d1fb78a66390238fad1a57115fc958a0724cf9bb509caf57 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.16, source-map-support@npm:~0.5.12, source-map-support@npm:~0.5.20": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map-url@npm:^0.4.0": + version: 0.4.1 + resolution: "source-map-url@npm:0.4.1" + checksum: 10c0/f8af0678500d536c7f643e32094d6718a4070ab4ca2d2326532512cfbe2d5d25a45849b4b385879326f2d7523bb3b686d0360dd347a3cda09fd89a5c28d4bc58 + languageName: node + linkType: hard + +"source-map@npm:0.6.1, source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.0, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"source-map@npm:0.7.4, source-map@npm:^0.7.3": + version: 0.7.4 + resolution: "source-map@npm:0.7.4" + checksum: 10c0/dc0cf3768fe23c345ea8760487f8c97ef6fca8a73c83cd7c9bf2fde8bc2c34adb9c0824d6feb14bc4f9e37fb522e18af621543f1289038a66ac7586da29aa7dc + languageName: node + linkType: hard + +"source-map@npm:^0.5.6": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 10c0/904e767bb9c494929be013017380cbba013637da1b28e5943b566031e29df04fba57edf3f093e0914be094648b577372bd8ad247fa98cfba9c600794cd16b599 + languageName: node + linkType: hard + +"spawn-command@npm:0.0.2": + version: 0.0.2 + resolution: "spawn-command@npm:0.0.2" + checksum: 10c0/b22f2d71239e6e628a400831861ba747750bbb40c0a53323754cf7b84330b73d81e40ff1f9055e6d1971818679510208a9302e13d9ff3b32feb67e74d7a1b3ef + languageName: node + linkType: hard + +"spdy-transport@npm:^3.0.0": + version: 3.0.0 + resolution: "spdy-transport@npm:3.0.0" + dependencies: + debug: "npm:^4.1.0" + detect-node: "npm:^2.0.4" + hpack.js: "npm:^2.1.6" + obuf: "npm:^1.1.2" + readable-stream: "npm:^3.0.6" + wbuf: "npm:^1.7.3" + checksum: 10c0/eaf7440fa90724fffc813c386d4a8a7427d967d6e46d7c51d8f8a533d1a6911b9823ea9218703debbae755337e85f110185d7a00ae22ec5c847077b908ce71bb + languageName: node + linkType: hard + +"spdy@npm:^4.0.2": + version: 4.0.2 + resolution: "spdy@npm:4.0.2" + dependencies: + debug: "npm:^4.1.0" + handle-thing: "npm:^2.0.0" + http-deceiver: "npm:^1.2.7" + select-hose: "npm:^2.0.0" + spdy-transport: "npm:^3.0.0" + checksum: 10c0/983509c0be9d06fd00bb9dff713c5b5d35d3ffd720db869acdd5ad7aa6fc0e02c2318b58f75328957d8ff772acdf1f7d19382b6047df342044ff3e2d6805ccdf + languageName: node + linkType: hard + +"split-string@npm:^3.0.1, split-string@npm:^3.0.2": + version: 3.1.0 + resolution: "split-string@npm:3.1.0" + dependencies: + extend-shallow: "npm:^3.0.0" + checksum: 10c0/72d7cd625445c7af215130e1e2bc183013bb9dd48a074eda1d35741e2b0dcb355e6df5b5558a62543a24dcec37dd1d6eb7a6228ff510d3c9de0f3dc1d1da8a70 + languageName: node + linkType: hard + +"split2@npm:4.2.0, split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534 + languageName: node + linkType: hard + +"sponge-case@npm:^1.0.1": + version: 1.0.1 + resolution: "sponge-case@npm:1.0.1" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/dbe42f300ae9f7fbd83c40f71c2a61ecf9c86b927b5668bae067d1e516e314671cc85166f87017e51b56938409b1fc042719eb46a6d5bb30cc1cf23252a82761 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/b091f2ae92474183c7ac5ed3f9811457e1df23df7a7e70c9476eaa9a0c4a0c8fc190fb45acefbf023ca9ee864dd6754237a697dc52a0fb182afe65d8e77443d8 + languageName: node + linkType: hard + +"ssri@npm:^6.0.1": + version: 6.0.2 + resolution: "ssri@npm:6.0.2" + dependencies: + figgy-pudding: "npm:^3.5.1" + checksum: 10c0/e6f18c57dc9fed69343db5c59f95ef334e9664bfbdbad686c190ef2c6ad6b35e9b56cb203f3e4eb7eee6cb7bb602daa26dab6685e3847f0b5c464cdf7d9c2cee + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stackframe@npm:^1.3.4": + version: 1.3.4 + resolution: "stackframe@npm:1.3.4" + checksum: 10c0/18410f7a1e0c5d211a4effa83bdbf24adbe8faa8c34db52e1cd3e89837518c592be60b60d8b7270ac53eeeb8b807cd11b399a41667f6c9abb41059c3ccc8a989 + languageName: node + linkType: hard + +"stacktracey@npm:2.1.8": + version: 2.1.8 + resolution: "stacktracey@npm:2.1.8" + dependencies: + as-table: "npm:^1.0.36" + get-source: "npm:^2.0.12" + checksum: 10c0/e17357d0a532d303138899b910ab660572009a1f4cde1cbf73b99416957a2378e6e1c791b3c31b043cf7c5f37647da1dd114e66c9203f23c65b34f783665405b + languageName: node + linkType: hard + +"static-extend@npm:^0.1.1": + version: 0.1.2 + resolution: "static-extend@npm:0.1.2" + dependencies: + define-property: "npm:^0.2.5" + object-copy: "npm:^0.1.0" + checksum: 10c0/284f5865a9e19d079f1badbcd70d5f9f82e7a08393f818a220839cd5f71729e89105e1c95322bd28e833161d484cee671380ca443869ae89578eef2bf55c0653 + languageName: node + linkType: hard + +"statuses@npm:2.0.1": + version: 2.0.1 + resolution: "statuses@npm:2.0.1" + checksum: 10c0/34378b207a1620a24804ce8b5d230fea0c279f00b18a7209646d5d47e419d1cc23e7cbf33a25a1e51ac38973dc2ac2e1e9c647a8e481ef365f77668d72becfd0 + languageName: node + linkType: hard + +"statuses@npm:>= 1.4.0 < 2": + version: 1.5.0 + resolution: "statuses@npm:1.5.0" + checksum: 10c0/e433900956357b3efd79b1c547da4d291799ac836960c016d10a98f6a810b1b5c0dcc13b5a7aa609a58239b5190e1ea176ad9221c2157d2fd1c747393e6b2940 + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: "npm:^1.0.4" + checksum: 10c0/c4158d6188aac510d9e92925b58709207bd94699e9c31186a040c80932a687f84a51356b5895e6dc72710aad83addb9411c22171832c9ae0e6e11b7d61b0dfb9 + languageName: node + linkType: hard + +"stream-browserify@npm:^2.0.1": + version: 2.0.2 + resolution: "stream-browserify@npm:2.0.2" + dependencies: + inherits: "npm:~2.0.1" + readable-stream: "npm:^2.0.2" + checksum: 10c0/485562bd5d962d633ae178449029c6fa2611052e356bdb5668f768544aa4daa94c4f9a97de718f3f30ad98f3cb98a5f396252bb3855aff153c138f79c0e8f6ac + languageName: node + linkType: hard + +"stream-each@npm:^1.1.0": + version: 1.2.3 + resolution: "stream-each@npm:1.2.3" + dependencies: + end-of-stream: "npm:^1.1.0" + stream-shift: "npm:^1.0.0" + checksum: 10c0/7ed229d3b7c24373058b5742b00066da8d3122d1487c8219a025ed53a8978545c77654a529a8e9c62ba83ae80c424cbb0204776b49abf72270d2e8154831dd5f + languageName: node + linkType: hard + +"stream-http@npm:^2.7.2": + version: 2.8.3 + resolution: "stream-http@npm:2.8.3" + dependencies: + builtin-status-codes: "npm:^3.0.0" + inherits: "npm:^2.0.1" + readable-stream: "npm:^2.3.6" + to-arraybuffer: "npm:^1.0.0" + xtend: "npm:^4.0.0" + checksum: 10c0/fbe7d327a29216bbabe88d3819bb8f7a502f11eeacf3212579e5af1f76fa7283f6ffa66134ab7d80928070051f571d1029e85f65ce3369fffd4c4df3669446c4 + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0": + version: 1.0.3 + resolution: "stream-shift@npm:1.0.3" + checksum: 10c0/939cd1051ca750d240a0625b106a2b988c45fb5a3be0cebe9a9858cb01bc1955e8c7b9fac17a9462976bea4a7b704e317c5c2200c70f0ca715a3363b9aa4fd3b + languageName: node + linkType: hard + +"streamsearch@npm:^1.1.0": + version: 1.1.0 + resolution: "streamsearch@npm:1.1.0" + checksum: 10c0/fbd9aecc2621364384d157f7e59426f4bfd385e8b424b5aaa79c83a6f5a1c8fd2e4e3289e95de1eb3511cb96bb333d6281a9919fafce760e4edb35b2cd2facab + languageName: node + linkType: hard + +"streamx@npm:^2.15.0": + version: 2.16.1 + resolution: "streamx@npm:2.16.1" + dependencies: + bare-events: "npm:^2.2.0" + fast-fifo: "npm:^1.1.0" + queue-tick: "npm:^1.0.1" + dependenciesMeta: + bare-events: + optional: true + checksum: 10c0/202b1d7cb7ceb36cdc5d5d0e2c27deafcc8670a4934cda7a5e3d3d45b8d3a64dc43f1b982b1c1cb316f01964dd5137b7e26af3151582c7c29ad3cf4072c6dbb9 + languageName: node + linkType: hard + +"strict-event-emitter@npm:^0.2.4": + version: 0.2.8 + resolution: "strict-event-emitter@npm:0.2.8" + dependencies: + events: "npm:^3.3.0" + checksum: 10c0/6891e19fea4f0289e4da2fe7050d85906eaca7f774aa38fe674f0e58fdece1b63b868614fa23974c4cb862aa99358caa987523b705fdfff4639231c62e384394 + languageName: node + linkType: hard + +"strict-event-emitter@npm:^0.4.3": + version: 0.4.6 + resolution: "strict-event-emitter@npm:0.4.6" + checksum: 10c0/d0231ef081cb1937b1445da59a1ec202d1c097d825c504f398600532490a4104e200b0dce4137467a8eaac5f8f9718d01c99869687afad78cad3b14c4b2e6a39 + languageName: node + linkType: hard + +"string-env-interpolation@npm:1.0.1, string-env-interpolation@npm:^1.0.1": + version: 1.0.1 + resolution: "string-env-interpolation@npm:1.0.1" + checksum: 10c0/410046e621e71678e71816377d799b40ba88d236708c0ad015114137fa3575f1b3cf14bfd63ec5eaa35ea43ac582308e60a8e1a3839a10f475b8db73470105bc + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-length@npm:^5.0.1": + version: 5.0.1 + resolution: "string-length@npm:5.0.1" + dependencies: + char-regex: "npm:^2.0.0" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/311fa5758d397bd616be17150dfefaab4755ed292a3112237924d10ba5122f606064ad4880a293387401c1d7aa20d79f7936728bac2abed17a5e48f5b317cbc8 + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.0, string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string.prototype.matchall@npm:^4.0.8": + version: 4.0.10 + resolution: "string.prototype.matchall@npm:4.0.10" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + get-intrinsic: "npm:^1.2.1" + has-symbols: "npm:^1.0.3" + internal-slot: "npm:^1.0.5" + regexp.prototype.flags: "npm:^1.5.0" + set-function-name: "npm:^2.0.0" + side-channel: "npm:^1.0.4" + checksum: 10c0/cd7495fb0de16d43efeee3887b98701941f3817bd5f09351ad1825b023d307720c86394d56d56380563d97767ab25bf5448db239fcecbb85c28e2180f23e324a + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.8": + version: 1.2.8 + resolution: "string.prototype.trim@npm:1.2.8" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/4f76c583908bcde9a71208ddff38f67f24c9ec8093631601666a0df8b52fad44dad2368c78895ce83eb2ae8e7068294cc96a02fc971ab234e4d5c9bb61ea4e34 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimend@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/53c24911c7c4d8d65f5ef5322de23a3d5b6b4db73273e05871d5ab4571ae5638f38f7f19d71d09116578fb060e5a145cc6a208af2d248c8baf7a34f44d32ce57 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.7": + version: 1.0.7 + resolution: "string.prototype.trimstart@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.2" + define-properties: "npm:^1.2.0" + es-abstract: "npm:^1.22.1" + checksum: 10c0/0bcf391b41ea16d4fda9c9953d0a7075171fe090d33b4cf64849af94944c50862995672ac03e0c5dba2940a213ad7f53515a668dac859ce22a0276289ae5cf4f + languageName: node + linkType: hard + +"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: "npm:~5.1.0" + checksum: 10c0/b4f89f3a92fd101b5653ca3c99550e07bdf9e13b35037e9e2a1c7b47cec4e55e06ff3fc468e314a0b5e80bfbaf65c1ca5a84978764884ae9413bec1fc6ca924e + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-bom@npm:3.0.0" + checksum: 10c0/51201f50e021ef16672593d7434ca239441b7b760e905d9f33df6e4f3954ff54ec0e0a06f100d028af0982d6f25c35cd5cda2ce34eaebccd0250b8befb90d8f1 + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-indent@npm:^3.0.0": + version: 3.0.0 + resolution: "strip-indent@npm:3.0.0" + dependencies: + min-indent: "npm:^1.0.0" + checksum: 10c0/ae0deaf41c8d1001c5d4fbe16cb553865c1863da4fae036683b474fa926af9fc121e155cb3fc57a68262b2ae7d5b8420aa752c97a6428c315d00efe2a3875679 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10c0/b509231cbdee45064ff4f9fd73609e2bcc4e84a4d508e9dd0f31f70356473fde18abfb5838c17d56fb236f5a06b102ef115438de0600b749e818a35fbbc48c43 + languageName: node + linkType: hard + +"style-loader@npm:3.3.3": + version: 3.3.3 + resolution: "style-loader@npm:3.3.3" + peerDependencies: + webpack: ^5.0.0 + checksum: 10c0/104bae8abd0627579dc14f3917cf65f1117e8098e3529872f09c26b5eee07933567b7be5c8ebf94d16e322b6e726dc569c5787111bf3786915850db4e351ef33 + languageName: node + linkType: hard + +"stylehacks@npm:^6.0.2": + version: 6.0.2 + resolution: "stylehacks@npm:6.0.2" + dependencies: + browserslist: "npm:^4.22.2" + postcss-selector-parser: "npm:^6.0.15" + peerDependencies: + postcss: ^8.4.31 + checksum: 10c0/658cac8b28edcb94d1db67808ab3aaa511cb1b9293594fc95607ee42ac4f57e742d9a1fa3ff5d5849db692971dc2a310e9ac1ed0bd4ea4bc48c80f5a6ef823fc + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0, supports-color@npm:^5.5.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: "npm:^3.0.0" + checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05 + languageName: node + linkType: hard + +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.0.0, supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.0.0": + version: 2.3.0 + resolution: "supports-hyperlinks@npm:2.3.0" + dependencies: + has-flag: "npm:^4.0.0" + supports-color: "npm:^7.0.0" + checksum: 10c0/4057f0d86afb056cd799602f72d575b8fdd79001c5894bcb691176f14e870a687e7981e50bc1484980e8b688c6d5bcd4931e1609816abb5a7dc1486b7babf6a1 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"svgo@npm:^3.2.0": + version: 3.2.0 + resolution: "svgo@npm:3.2.0" + dependencies: + "@trysound/sax": "npm:0.2.0" + commander: "npm:^7.2.0" + css-select: "npm:^5.1.0" + css-tree: "npm:^2.3.1" + css-what: "npm:^6.1.0" + csso: "npm:^5.0.5" + picocolors: "npm:^1.0.0" + bin: + svgo: ./bin/svgo + checksum: 10c0/28fa9061ccbcf2e3616d48d1feb613aaa05f8f290a329beb0e585914f1864385152934a7d4d683a4609fafbae3d51666633437c359c5c5ef74fb58ad09092a7c + languageName: node + linkType: hard + +"swap-case@npm:^2.0.2": + version: 2.0.2 + resolution: "swap-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/6a47c1926e06395ead750905e103be388aeec8c9697f20b14bc3e1e86fcb4fc78e5033197afe6cc8bbed80f0a4ee1f184b0fa22eec7f4a767bdfd278683d52eb + languageName: node + linkType: hard + +"symbol-observable@npm:^4.0.0": + version: 4.0.0 + resolution: "symbol-observable@npm:4.0.0" + checksum: 10c0/5e9a3ab08263a6be8cbee76587ad5880dcc62a47002787ed5ebea56b1eb30dc87da6f0183d67e88286806799fbe21c69077fbd677be4be2188e92318d6c6f31d + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 10c0/dfbe201ae09ac6053d163578778c53aa860a784147ecf95705de0cd23f42c851e1be7889241495e95c37cabb058edb1052f141387bef68f705afc8f9dd358509 + languageName: node + linkType: hard + +"systeminformation@npm:5.21.20": + version: 5.21.20 + resolution: "systeminformation@npm:5.21.20" + bin: + systeminformation: lib/cli.js + checksum: 10c0/4d7ea2b0df75f122854cc964926dfb8f8fbe9297afcbf2fad1218cfb684163e9486f5c6032814fe528d5d39585b43f33c4af11e0ea07b8b591f18c27f791fbba + conditions: (os=darwin | os=linux | os=win32 | os=freebsd | os=openbsd | os=netbsd | os=sunos | os=android) + languageName: node + linkType: hard + +"tapable@npm:^1.0.0, tapable@npm:^1.1.3": + version: 1.1.3 + resolution: "tapable@npm:1.1.3" + checksum: 10c0/c9f0265e55e45821ec672b9b9ee8a35d95bf3ea6b352199f8606a2799018e89cfe4433c554d424b31fc67c4be26b05d4f36dc3c607def416fdb2514cd63dba50 + languageName: node + linkType: hard + +"tapable@npm:^2.0.0, tapable@npm:^2.1.1, tapable@npm:^2.2.0": + version: 2.2.1 + resolution: "tapable@npm:2.2.1" + checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + languageName: node + linkType: hard + +"tar-stream@npm:^3.0.0": + version: 3.1.7 + resolution: "tar-stream@npm:3.1.7" + dependencies: + b4a: "npm:^1.6.4" + fast-fifo: "npm:^1.2.0" + streamx: "npm:^2.15.0" + checksum: 10c0/a09199d21f8714bd729993ac49b6c8efcb808b544b89f23378ad6ffff6d1cb540878614ba9d4cfec11a64ef39e1a6f009a5398371491eb1fda606ffc7f70f718 + languageName: node + linkType: hard + +"tar@npm:^6.1.11, tar@npm:^6.1.2": + version: 6.2.0 + resolution: "tar@npm:6.2.0" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/02ca064a1a6b4521fef88c07d389ac0936730091f8c02d30ea60d472e0378768e870769ab9e986d87807bfee5654359cf29ff4372746cc65e30cbddc352660d8 + languageName: node + linkType: hard + +"temp@npm:^0.8.4": + version: 0.8.4 + resolution: "temp@npm:0.8.4" + dependencies: + rimraf: "npm:~2.6.2" + checksum: 10c0/7f071c963031bfece37e13c5da11e9bb451e4ddfc4653e23e327a2f91594102dc826ef6a693648e09a6e0eb856f507967ec759ae55635e0878091eccf411db37 + languageName: node + linkType: hard + +"terminal-link@npm:2.1.1": + version: 2.1.1 + resolution: "terminal-link@npm:2.1.1" + dependencies: + ansi-escapes: "npm:^4.2.1" + supports-hyperlinks: "npm:^2.0.0" + checksum: 10c0/947458a5cd5408d2ffcdb14aee50bec8fb5022ae683b896b2f08ed6db7b2e7d42780d5c8b51e930e9c322bd7c7a517f4fa7c76983d0873c83245885ac5ee13e3 + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^1.4.3": + version: 1.4.5 + resolution: "terser-webpack-plugin@npm:1.4.5" + dependencies: + cacache: "npm:^12.0.2" + find-cache-dir: "npm:^2.1.0" + is-wsl: "npm:^1.1.0" + schema-utils: "npm:^1.0.0" + serialize-javascript: "npm:^4.0.0" + source-map: "npm:^0.6.1" + terser: "npm:^4.1.2" + webpack-sources: "npm:^1.4.0" + worker-farm: "npm:^1.7.0" + peerDependencies: + webpack: ^4.0.0 + checksum: 10c0/97164cfa383cf988832427e912cd9606471452f15f8bfb905ae51f1a42561f90ea541141e1e530e59f8307639fed7dfdbd626aec8390acd6ad80e58ea3fcf6df + languageName: node + linkType: hard + +"terser-webpack-plugin@npm:^5.3.10": + version: 5.3.10 + resolution: "terser-webpack-plugin@npm:5.3.10" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.20" + jest-worker: "npm:^27.4.5" + schema-utils: "npm:^3.1.1" + serialize-javascript: "npm:^6.0.1" + terser: "npm:^5.26.0" + peerDependencies: + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 10c0/66d1ed3174542560911cf96f4716aeea8d60e7caab212291705d50072b6ba844c7391442541b13c848684044042bea9ec87512b8506528c12854943da05faf91 + languageName: node + linkType: hard + +"terser@npm:^4.1.2": + version: 4.8.1 + resolution: "terser@npm:4.8.1" + dependencies: + commander: "npm:^2.20.0" + source-map: "npm:~0.6.1" + source-map-support: "npm:~0.5.12" + bin: + terser: bin/terser + checksum: 10c0/1ec2620e58df0ea787ac579daf097df0fee2dd402f37acb4de0df1135f0598a29212e5f03042a9c2dc7e1bf1248b1dd9d9ea0724d34331a2017f32da8783b3d7 + languageName: node + linkType: hard + +"terser@npm:^5.10.0, terser@npm:^5.26.0": + version: 5.27.2 + resolution: "terser@npm:5.27.2" + dependencies: + "@jridgewell/source-map": "npm:^0.3.3" + acorn: "npm:^8.8.2" + commander: "npm:^2.20.0" + source-map-support: "npm:~0.5.20" + bin: + terser: bin/terser + checksum: 10c0/027b2499bbb07b427681e50e77ffed1285138b279a845db4ca2128204654e536b251455776a4e9453ef598db7b06f41c12edb46ed9cc7667da635272a08eb502 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 10c0/02805740c12851ea5982686810702e2f14369a5f4c5c40a836821e3eefc65ffeec3131ba324692a37608294b0fd8c1e55a2dd571ffed4909822787668ddbee5c + languageName: node + linkType: hard + +"thread-stream@npm:^2.0.0": + version: 2.4.1 + resolution: "thread-stream@npm:2.4.1" + dependencies: + real-require: "npm:^0.2.0" + checksum: 10c0/ce29265810b9550ce896726301ff006ebfe96b90292728f07cfa4c379740585583046e2a8018afc53aca66b18fed12b33a84f3883e7ebc317185f6682898b8f8 + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:^2.0.1": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: "npm:~2.3.6" + xtend: "npm:~4.0.1" + checksum: 10c0/cbfe5b57943fa12b4f8c043658c2a00476216d79c014895cef1ac7a1d9a8b31f6b438d0e53eecbb81054b93128324a82ecd59ec1a4f91f01f7ac113dcb14eade + languageName: node + linkType: hard + +"through@npm:^2.3.6, through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc + languageName: node + linkType: hard + +"thunky@npm:^1.0.2": + version: 1.1.0 + resolution: "thunky@npm:1.1.0" + checksum: 10c0/369764f39de1ce1de2ba2fa922db4a3f92e9c7f33bcc9a713241bc1f4a5238b484c17e0d36d1d533c625efb00e9e82c3e45f80b47586945557b45abb890156d2 + languageName: node + linkType: hard + +"timers-browserify@npm:^2.0.4": + version: 2.0.12 + resolution: "timers-browserify@npm:2.0.12" + dependencies: + setimmediate: "npm:^1.0.4" + checksum: 10c0/98e84db1a685bc8827c117a8bc62aac811ad56a995d07938fc7ed8cdc5bf3777bfe2d4e5da868847194e771aac3749a20f6cdd22091300fe889a76fe214a4641 + languageName: node + linkType: hard + +"tiny-lru@npm:^11.0.0": + version: 11.2.5 + resolution: "tiny-lru@npm:11.2.5" + checksum: 10c0/bda6de074035ca108ce179ba4ceb02a3eca6aab78b5cf161736035f2af562644594435d8fa4c07f098eee96e1a483992025af72f25e6033d54a66cf270fa8372 + languageName: node + linkType: hard + +"title-case@npm:3.0.3, title-case@npm:^3.0.3": + version: 3.0.3 + resolution: "title-case@npm:3.0.3" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/face56f686060f777b43a180d371407124d201eb4238c19d9e97030fd54859696ca4e2ca499cc232f8700f24f2414cc08aab9fdf6d39acff055dd825a4d86d6a + languageName: node + linkType: hard + +"tmp@npm:^0.0.33": + version: 0.0.33 + resolution: "tmp@npm:0.0.33" + dependencies: + os-tmpdir: "npm:~1.0.2" + checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-arraybuffer@npm:^1.0.0": + version: 1.0.1 + resolution: "to-arraybuffer@npm:1.0.1" + checksum: 10c0/2460bd95524f4845a751e4f8bf9937f9f3dcd1651f104e1512868782f858f8302c1cf25bbc30794bc1b3ff65c4e135158377302f2abaff43a2d8e3c38dfe098c + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 10c0/b214d21dbfb4bce3452b6244b336806ffea9c05297148d32ebb428d5c43ce7545bdfc65a1ceb58c9ef4376a65c0cb2854d645f33961658b3e3b4f84910ddcdd7 + languageName: node + linkType: hard + +"to-object-path@npm:^0.3.0": + version: 0.3.0 + resolution: "to-object-path@npm:0.3.0" + dependencies: + kind-of: "npm:^3.0.2" + checksum: 10c0/731832a977614c03a770363ad2bd9e9c82f233261861724a8e612bb90c705b94b1a290a19f52958e8e179180bb9b71121ed65e245691a421467726f06d1d7fc3 + languageName: node + linkType: hard + +"to-readable-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "to-readable-stream@npm:1.0.0" + checksum: 10c0/79cb836e2fb4f2885745a8c212eab7ebc52e93758ff0737feceaed96df98e4d04b8903fe8c27f2e9f3f856a5068ac332918b235c5d801b3efe02a51a3fa0eb36 + languageName: node + linkType: hard + +"to-regex-range@npm:^2.1.0": + version: 2.1.1 + resolution: "to-regex-range@npm:2.1.1" + dependencies: + is-number: "npm:^3.0.0" + repeat-string: "npm:^1.6.1" + checksum: 10c0/440d82dbfe0b2e24f36dd8a9467240406ad1499fc8b2b0f547372c22ed1d092ace2a3eb522bb09bfd9c2f39bf1ca42eb78035cf6d2b8c9f5c78da3abc96cd949 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": + version: 3.0.2 + resolution: "to-regex@npm:3.0.2" + dependencies: + define-property: "npm:^2.0.2" + extend-shallow: "npm:^3.0.2" + regex-not: "npm:^1.0.2" + safe-regex: "npm:^1.1.0" + checksum: 10c0/99d0b8ef397b3f7abed4bac757b0f0bb9f52bfd39167eb7105b144becfaa9a03756892352d01ac6a911f0c1ceef9f81db68c46899521a3eed054082042796120 + languageName: node + linkType: hard + +"toad-cache@npm:^3.3.0": + version: 3.7.0 + resolution: "toad-cache@npm:3.7.0" + checksum: 10c0/7dae2782ee20b22c9798bb8b71dec7ec6a0091021d2ea9dd6e8afccab6b65b358fdba49a02209fac574499702e2c000660721516c87c2538d1b2c0ba03e8c0c3 + languageName: node + linkType: hard + +"toidentifier@npm:1.0.1": + version: 1.0.1 + resolution: "toidentifier@npm:1.0.1" + checksum: 10c0/93937279934bd66cc3270016dd8d0afec14fb7c94a05c72dc57321f8bd1fa97e5bea6d1f7c89e728d077ca31ea125b78320a616a6c6cd0e6b9cb94cb864381c1 + languageName: node + linkType: hard + +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 10c0/4bb1fadb69c3edbef91c73ebef9d25b33bbf69afe1e37ce544d5f7d13854cda15e47132f3e0dc4cafe300ddb8578c77c50a65004d8b6e97e77934a69aa924863 + languageName: node + linkType: hard + +"touch@npm:^3.1.0": + version: 3.1.0 + resolution: "touch@npm:3.1.0" + dependencies: + nopt: "npm:~1.0.10" + bin: + nodetouch: ./bin/nodetouch.js + checksum: 10c0/dacb4a639401b83b0a40b56c0565e01096e5ecf38b22a4840d9eeb642a5bea136c6a119e4543f9b172349a5ee343b10cda0880eb47f7d7ddfd6eac59dcf53244 + languageName: node + linkType: hard + +"tough-cookie@npm:^4.1.2": + version: 4.1.3 + resolution: "tough-cookie@npm:4.1.3" + dependencies: + psl: "npm:^1.1.33" + punycode: "npm:^2.1.1" + universalify: "npm:^0.2.0" + url-parse: "npm:^1.5.3" + checksum: 10c0/4fc0433a0cba370d57c4b240f30440c848906dee3180bb6e85033143c2726d322e7e4614abb51d42d111ebec119c4876ed8d7247d4113563033eebbc1739c831 + languageName: node + linkType: hard + +"tr46@npm:^3.0.0": + version: 3.0.0 + resolution: "tr46@npm:3.0.0" + dependencies: + punycode: "npm:^2.1.1" + checksum: 10c0/cdc47cad3a9d0b6cb293e39ccb1066695ae6fdd39b9e4f351b010835a1f8b4f3a6dc3a55e896b421371187f22b48d7dac1b693de4f6551bdef7b6ab6735dfe3b + languageName: node + linkType: hard + +"tr46@npm:~0.0.3": + version: 0.0.3 + resolution: "tr46@npm:0.0.3" + checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 + languageName: node + linkType: hard + +"tree-kill@npm:^1.2.2": + version: 1.2.2 + resolution: "tree-kill@npm:1.2.2" + bin: + tree-kill: cli.js + checksum: 10c0/7b1b7c7f17608a8f8d20a162e7957ac1ef6cd1636db1aba92f4e072dc31818c2ff0efac1e3d91064ede67ed5dc57c565420531a8134090a12ac10cf792ab14d2 + languageName: node + linkType: hard + +"ts-invariant@npm:^0.10.3": + version: 0.10.3 + resolution: "ts-invariant@npm:0.10.3" + dependencies: + tslib: "npm:^2.1.0" + checksum: 10c0/2fbc178d5903d325ee0b87fad38827eac11888b6e86979b06754fd4bcdcf44c2a99b8bcd5d59d149c0464ede55ae810b02a2aee6835ad10efe4dd0e22efd68c0 + languageName: node + linkType: hard + +"ts-log@npm:^2.2.3": + version: 2.2.5 + resolution: "ts-log@npm:2.2.5" + checksum: 10c0/bbc45faa97d47238b896e85e9e0fc12e3d2d72b56755fba305290489532319c83bae82e282b92a5469f432f2dfa365da7ee0469d6d528ce04cd9dd75d4e2a147 + languageName: node + linkType: hard + +"ts-morph@npm:15.1.0": + version: 15.1.0 + resolution: "ts-morph@npm:15.1.0" + dependencies: + "@ts-morph/common": "npm:~0.16.0" + code-block-writer: "npm:^11.0.0" + checksum: 10c0/ef72fe65e5837afb49f11a67f98922687c92653a3391a258448d36b2d2a16d82487a8de93c0e61f7f79151539f2b6e46fa1ef8cb17f1e1bc9317f3d6819c0655 + languageName: node + linkType: hard + +"ts-morph@npm:^18.0.0": + version: 18.0.0 + resolution: "ts-morph@npm:18.0.0" + dependencies: + "@ts-morph/common": "npm:~0.19.0" + code-block-writer: "npm:^12.0.0" + checksum: 10c0/6ea3259bf46a786eb446f75586aaa3a23715529889069e28e7bbd57e85e21585097559ec5b94e1b99cd6e6e9097d644d71e4a1e3274499f46b1cafd6a009b534 + languageName: node + linkType: hard + +"ts-node@npm:10.9.1": + version: 10.9.1 + resolution: "ts-node@npm:10.9.1" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + 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 + checksum: 10c0/95187932fb83f3901e22546bd2feeac7d2feb4f412f42ac3a595f049a23e8dcf70516dffb51866391228ea2dbcfaea039e250fb2bb334d48a86ab2b6aea0ae2d + languageName: node + linkType: hard + +"ts-toolbelt@npm:9.6.0": + version: 9.6.0 + resolution: "ts-toolbelt@npm:9.6.0" + checksum: 10c0/838f9a2f0fe881d5065257a23b402c41315b33ff987b73db3e2b39fcb70640c4c7220e1ef118ed5676763543724fdbf4eda7b0e2c17acb667ed1401336af9f8c + languageName: node + linkType: hard + +"tsconfig-paths@npm:^3.14.2": + version: 3.15.0 + resolution: "tsconfig-paths@npm:3.15.0" + dependencies: + "@types/json5": "npm:^0.0.29" + json5: "npm:^1.0.2" + minimist: "npm:^1.2.6" + strip-bom: "npm:^3.0.0" + checksum: 10c0/5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5 + languageName: node + linkType: hard + +"tslib@npm:^1.8.1, tslib@npm:^1.9.2": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: 10c0/69ae09c49eea644bc5ebe1bca4fa4cc2c82b7b3e02f43b84bd891504edf66dbc6b2ec0eef31a957042de2269139e4acff911e6d186a258fb14069cd7f6febce2 + languageName: node + linkType: hard + +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.5.0, tslib@npm:^2.5.2, tslib@npm:^2.6.1, tslib@npm:^2.6.2, tslib@npm:~2.6.0": + version: 2.6.2 + resolution: "tslib@npm:2.6.2" + checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb + languageName: node + linkType: hard + +"tslib@npm:~2.4.0": + version: 2.4.1 + resolution: "tslib@npm:2.4.1" + checksum: 10c0/9ac0e4fd1033861f0b4f0d848dc3009ebcc3aa4757a06e8602a2d8a7aed252810e3540e54e70709f06c0f95311faa8584f769bcbede48aff785eb7e4d399b9ec + languageName: node + linkType: hard + +"tslib@npm:~2.5.0": + version: 2.5.3 + resolution: "tslib@npm:2.5.3" + checksum: 10c0/4cb1817d34fae5b27d146e6c4a468d4155097d95c1335d0bc9690f11f33e63844806bf4ed6d97c30c72b8d85261b66cbbe16d871d9c594ac05701ec83e62a607 + languageName: node + linkType: hard + +"tsutils@npm:^3.21.0": + version: 3.21.0 + resolution: "tsutils@npm:3.21.0" + dependencies: + tslib: "npm:^1.8.1" + 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" + checksum: 10c0/02f19e458ec78ead8fffbf711f834ad8ecd2cc6ade4ec0320790713dccc0a412b99e7fd907c4cda2a1dc602c75db6f12e0108e87a5afad4b2f9e90a24cabd5a2 + languageName: node + linkType: hard + +"tty-browserify@npm:0.0.0": + version: 0.0.0 + resolution: "tty-browserify@npm:0.0.0" + checksum: 10c0/c0c68206565f1372e924d5cdeeff1a0d9cc729833f1da98c03d78be8f939e5f61a107bd0ab77d1ef6a47d62bb0e48b1081fbea273acf404959e22fd3891439c5 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 10c0/dea9df45ea1f0aaa4e2d3bed3f9a0bfe9e5b2592bddb92eb1bf06e50bcf98dbb78189668cd8bc31a0511d3fc25539b4cd5c704497e53e93e2d40ca764b10bfc3 + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"type-fest@npm:^1.0.2": + version: 1.4.0 + resolution: "type-fest@npm:1.4.0" + checksum: 10c0/a3c0f4ee28ff6ddf800d769eafafcdeab32efa38763c1a1b8daeae681920f6e345d7920bf277245235561d8117dab765cb5f829c76b713b4c9de0998a5397141 + languageName: node + linkType: hard + +"type-fest@npm:^2.19.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: 10c0/a5a7ecf2e654251613218c215c7493574594951c08e52ab9881c9df6a6da0aeca7528c213c622bc374b4e0cb5c443aa3ab758da4e3c959783ce884c3194e12cb + languageName: node + linkType: hard + +"type-fest@npm:^3.0.0": + version: 3.13.1 + resolution: "type-fest@npm:3.13.1" + checksum: 10c0/547d22186f73a8c04590b70dcf63baff390078c75ea8acd366bbd510fd0646e348bd1970e47ecf795b7cff0b41d26e9c475c1fedd6ef5c45c82075fbf916b629 + languageName: node + linkType: hard + +"type-is@npm:~1.6.18": + version: 1.6.18 + resolution: "type-is@npm:1.6.18" + dependencies: + media-typer: "npm:0.3.0" + mime-types: "npm:~2.1.24" + checksum: 10c0/a23daeb538591b7efbd61ecf06b6feb2501b683ffdc9a19c74ef5baba362b4347e42f1b4ed81f5882a8c96a3bfff7f93ce3ffaf0cbbc879b532b04c97a55db9d + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.1": + version: 1.0.2 + resolution: "typed-array-buffer@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.7" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/9e043eb38e1b4df4ddf9dde1aa64919ae8bb909571c1cc4490ba777d55d23a0c74c7d73afcdd29ec98616d91bb3ae0f705fad4421ea147e1daf9528200b562da + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" + dependencies: + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.10" + checksum: 10c0/6696435d53ce0e704ff6760c57ccc35138aec5f87859e03eb2a3246336d546feae367952dbc918116f3f0dffbe669734e3cbd8960283c2fa79aac925db50d888 + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.0": + version: 1.0.1 + resolution: "typed-array-byte-offset@npm:1.0.1" + dependencies: + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/d65bd43ca55804d34a7752372abc27ca3b75455e14ebdac4e7648e3aa836455145636421efc9d7ffa020bca895b2f76588efdf3a7a2c21e25dc1cb3fdce60a6a + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" + dependencies: + call-bind: "npm:^1.0.2" + for-each: "npm:^0.3.3" + is-typed-array: "npm:^1.1.9" + checksum: 10c0/c5163c0103d07fefc8a2ad0fc151f9ca9a1f6422098c00f695d55f9896e4d63614cd62cf8d8a031c6cee5f418e8980a533796597174da4edff075b3d275a7e23 + languageName: node + linkType: hard + +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: 10c0/6005cb31df50eef8b1f3c780eb71a17925f3038a100d82f9406ac2ad1de5eb59f8e6decbdc145b3a1f8e5836e17b0c0002fb698b9fe2516b8f9f9ff602d36412 + languageName: node + linkType: hard + +"typescript@npm:5.3.3": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/e33cef99d82573624fc0f854a2980322714986bc35b9cb4d1ce736ed182aeab78e2cb32b385efa493b2a976ef52c53e20d6c6918312353a91850e2b76f1ea44f + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.3.3#optional!builtin<compat/typescript>": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#optional!builtin<compat/typescript>::version=5.3.3&hash=e012d7" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/1d0a5f4ce496c42caa9a30e659c467c5686eae15d54b027ee7866744952547f1be1262f2d40de911618c242b510029d51d43ff605dba8fb740ec85ca2d3f9500 + languageName: node + linkType: hard + +"ua-parser-js@npm:^1.0.35": + version: 1.0.37 + resolution: "ua-parser-js@npm:1.0.37" + checksum: 10c0/dac8cf82a55b2e097bd2286954e01454c4cfcf23c9d9b56961ce94bda3cec5a38ca536e6e84c20a4000a9d4b4a4abcbd98ec634ccebe21be36595ea3069126e4 + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "unbox-primitive@npm:1.0.2" + dependencies: + call-bind: "npm:^1.0.2" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.0.3" + which-boxed-primitive: "npm:^1.0.2" + checksum: 10c0/81ca2e81134167cc8f75fa79fbcc8a94379d6c61de67090986a2273850989dd3bae8440c163121b77434b68263e34787a675cbdcb34bb2f764c6b9c843a11b66 + languageName: node + linkType: hard + +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: 10c0/bf9c781c4e2f38e6613ea17a51072e4b416840fbe6eeb244597ce9b028fac2fb6cfd3dde1f14111b02c245e665dc461aab8168ecc30b14364d02caa37f812996 + languageName: node + linkType: hard + +"undefsafe@npm:^2.0.5": + version: 2.0.5 + resolution: "undefsafe@npm:2.0.5" + checksum: 10c0/96c0466a5fbf395917974a921d5d4eee67bca4b30d3a31ce7e621e0228c479cf893e783a109af6e14329b52fe2f0cb4108665fad2b87b0018c0df6ac771261d5 + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 10c0/bb673d7876c2d411b6eb6c560e0c571eef4a01c1c19925175d16e3a30c4c428181fb8d7ae802a261f283e4166a0ac435e2f505743aa9e45d893f9a3df017b501 + languageName: node + linkType: hard + +"undici@npm:^5.19.1": + version: 5.28.3 + resolution: "undici@npm:5.28.3" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10c0/3c559ae50ef3104b7085251445dda6f4de871553b9e290845649d2f80b06c0c9cfcdf741b0029c6b20d36c82e6a74dc815b139fa9a26757d70728074ca6d6f5c + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.0" + checksum: 10c0/0fe812641bcfa3ae433025178a64afb5d9afebc21a922dafa7cba971deebb5e4a37350423890750132a85c936c290fb988146d0b1bd86838ad4897f4fc5bd0de + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.1.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.1.0" + checksum: 10c0/f5b9499b9e0ffdc6027b744d528f17ec27dd7c15da03254ed06851feec47e0531f20d410910c8a49af4a6a190f4978413794c8d75ce112950b56d583b5d5c7f2 + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"union-value@npm:^1.0.0": + version: 1.0.1 + resolution: "union-value@npm:1.0.1" + dependencies: + arr-union: "npm:^3.1.0" + get-value: "npm:^2.0.6" + is-extendable: "npm:^0.1.1" + set-value: "npm:^2.0.1" + checksum: 10c0/8758d880cb9545f62ce9cfb9b791b2b7a206e0ff5cc4b9d7cd6581da2c6839837fbb45e639cf1fd8eef3cae08c0201b614b7c06dd9f5f70d9dbe7c5fe2fbf592 + languageName: node + linkType: hard + +"unique-filename@npm:^1.1.1": + version: 1.1.1 + resolution: "unique-filename@npm:1.1.1" + dependencies: + unique-slug: "npm:^2.0.0" + checksum: 10c0/d005bdfaae6894da8407c4de2b52f38b3c58ec86e79fc2ee19939da3085374413b073478ec54e721dc8e32b102cf9e50d0481b8331abdc62202e774b789ea874 + languageName: node + linkType: hard + +"unique-filename@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-filename@npm:3.0.0" + dependencies: + unique-slug: "npm:^4.0.0" + checksum: 10c0/6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + languageName: node + linkType: hard + +"unique-slug@npm:^2.0.0": + version: 2.0.2 + resolution: "unique-slug@npm:2.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/9eabc51680cf0b8b197811a48857e41f1364b25362300c1ff636c0eca5ec543a92a38786f59cf0697e62c6f814b11ecbe64e8093db71246468a1f03b80c83970 + languageName: node + linkType: hard + +"unique-slug@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-slug@npm:4.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + languageName: node + linkType: hard + +"unique-string@npm:^1.0.0": + version: 1.0.0 + resolution: "unique-string@npm:1.0.0" + dependencies: + crypto-random-string: "npm:^1.0.0" + checksum: 10c0/79cc2a6515a51e6350c74f65c92246511966c47528f1119318cbe8d68a508842f4e5a2a81857a65f3919629397a525f820505116dd89cac425294598e35ca12c + languageName: node + linkType: hard + +"universalify@npm:^0.2.0": + version: 0.2.0 + resolution: "universalify@npm:0.2.0" + checksum: 10c0/cedbe4d4ca3967edf24c0800cfc161c5a15e240dac28e3ce575c689abc11f2c81ccc6532c8752af3b40f9120fb5e454abecd359e164f4f6aa44c29cd37e194fe + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + +"unixify@npm:^1.0.0": + version: 1.0.0 + resolution: "unixify@npm:1.0.0" + dependencies: + normalize-path: "npm:^2.1.1" + checksum: 10c0/8b89100619ebde9f0ab4024a4d402316fb7b1d4853723410fc828944e8d3d01480f210cddf94d9a1699559f8180d861eb6323da8011b7bcc1bbaf6a11a5b1f1e + languageName: node + linkType: hard + +"unpipe@npm:1.0.0, unpipe@npm:~1.0.0": + version: 1.0.0 + resolution: "unpipe@npm:1.0.0" + checksum: 10c0/193400255bd48968e5c5383730344fbb4fa114cdedfab26e329e50dd2d81b134244bb8a72c6ac1b10ab0281a58b363d06405632c9d49ca9dfd5e90cbd7d0f32c + languageName: node + linkType: hard + +"unset-value@npm:^1.0.0": + version: 1.0.0 + resolution: "unset-value@npm:1.0.0" + dependencies: + has-value: "npm:^0.3.1" + isobject: "npm:^3.0.0" + checksum: 10c0/68a796dde4a373afdbf017de64f08490a3573ebee549136da0b3a2245299e7f65f647ef70dc13c4ac7f47b12fba4de1646fa0967a365638578fedce02b9c0b1f + languageName: node + linkType: hard + +"upath@npm:^1.1.1": + version: 1.2.0 + resolution: "upath@npm:1.2.0" + checksum: 10c0/3746f24099bf69dbf8234cecb671e1016e1f6b26bd306de4ff8966fb0bc463fa1014ffc48646b375de1ab573660e3a0256f6f2a87218b2dfa1779a84ef6992fa + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.0.13": + version: 1.0.13 + resolution: "update-browserslist-db@npm:1.0.13" + dependencies: + escalade: "npm:^3.1.1" + picocolors: "npm:^1.0.0" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/e52b8b521c78ce1e0c775f356cd16a9c22c70d25f3e01180839c407a5dc787fb05a13f67560cbaf316770d26fa99f78f1acd711b1b54a4f35d4820d4ea7136e6 + languageName: node + linkType: hard + +"upper-case-first@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case-first@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/ccad6a0b143310ebfba2b5841f30bef71246297385f1329c022c902b2b5fc5aee009faf1ac9da5ab3ba7f615b88f5dc1cd80461b18a8f38cb1d4c3eb92538ea9 + languageName: node + linkType: hard + +"upper-case@npm:^2.0.2": + version: 2.0.2 + resolution: "upper-case@npm:2.0.2" + dependencies: + tslib: "npm:^2.0.3" + checksum: 10c0/5ac176c9d3757abb71400df167f9abb46d63152d5797c630d1a9f083fbabd89711fb4b3dc6de06ff0138fe8946fa5b8518b4fcdae9ca8a3e341417075beae069 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"urix@npm:^0.1.0": + version: 0.1.0 + resolution: "urix@npm:0.1.0" + checksum: 10c0/264f1b29360c33c0aec5fb9819d7e28f15d1a3b83175d2bcc9131efe8583f459f07364957ae3527f1478659ec5b2d0f1ad401dfb625f73e4d424b3ae35fc5fc0 + languageName: node + linkType: hard + +"url-loader@npm:4.1.1": + version: 4.1.1 + resolution: "url-loader@npm:4.1.1" + dependencies: + loader-utils: "npm:^2.0.0" + mime-types: "npm:^2.1.27" + schema-utils: "npm:^3.0.0" + peerDependencies: + file-loader: "*" + webpack: ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + file-loader: + optional: true + checksum: 10c0/71b6300e02ce26c70625eae1a2297c0737635038c62691bb3007ac33e85c0130efc74bfb444baf5c6b3bad5953491159d31d66498967d1417865d0c7e7cd1a64 + languageName: node + linkType: hard + +"url-parse-lax@npm:^3.0.0": + version: 3.0.0 + resolution: "url-parse-lax@npm:3.0.0" + dependencies: + prepend-http: "npm:^2.0.0" + checksum: 10c0/16f918634d41a4fab9e03c5f9702968c9930f7c29aa1a8c19a6dc01f97d02d9b700ab9f47f8da0b9ace6e0c0e99c27848994de1465b494bced6940c653481e55 + languageName: node + linkType: hard + +"url-parse@npm:^1.5.3": + version: 1.5.10 + resolution: "url-parse@npm:1.5.10" + dependencies: + querystringify: "npm:^2.1.1" + requires-port: "npm:^1.0.0" + checksum: 10c0/bd5aa9389f896974beb851c112f63b466505a04b4807cea2e5a3b7092f6fbb75316f0491ea84e44f66fed55f1b440df5195d7e3a8203f64fcefa19d182f5be87 + languageName: node + linkType: hard + +"url@npm:^0.11.0": + version: 0.11.3 + resolution: "url@npm:0.11.3" + dependencies: + punycode: "npm:^1.4.1" + qs: "npm:^6.11.2" + checksum: 10c0/7546b878ee7927cfc62ca21dbe2dc395cf70e889c3488b2815bf2c63355cb3c7db555128176a01b0af6cccf265667b6fd0b4806de00cb71c143c53986c08c602 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^10.0.0": + version: 10.0.0 + resolution: "urlpattern-polyfill@npm:10.0.0" + checksum: 10c0/43593f2a89bd54f2d5b5105ef4896ac5c5db66aef723759fbd15cd5eb1ea6cdae9d112e257eda9bbc3fb0cd90be6ac6e9689abe4ca69caa33114f42a27363531 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^8.0.0": + version: 8.0.2 + resolution: "urlpattern-polyfill@npm:8.0.2" + checksum: 10c0/5388bbe8459dbd8861ee7cb97904be915dd863a9789c2191c528056f16adad7836ec22762ed002fed44e8995d0f98bdfb75a606466b77233e70d0f61b969aaf9 + languageName: node + linkType: hard + +"urlpattern-polyfill@npm:^9.0.0": + version: 9.0.0 + resolution: "urlpattern-polyfill@npm:9.0.0" + checksum: 10c0/1fecb4a7695ad7917b02193896ec7b5773bb730ee3fbbb583cfaf134cc99da054c18560a35e7e901ad4e2f7a6035b6754313a2bb84126a7f118201427d465185 + languageName: node + linkType: hard + +"use@npm:^3.1.0": + version: 3.1.1 + resolution: "use@npm:3.1.1" + checksum: 10c0/75b48673ab80d5139c76922630d5a8a44e72ed58dbaf54dee1b88352d10e1c1c1fc332066c782d8ae9a56503b85d3dc67ff6d2ffbd9821120466d1280ebb6d6e + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 + languageName: node + linkType: hard + +"util@npm:^0.10.4": + version: 0.10.4 + resolution: "util@npm:0.10.4" + dependencies: + inherits: "npm:2.0.3" + checksum: 10c0/d29f6893e406b63b088ce9924da03201df89b31490d4d011f1c07a386ea4b3dbe907464c274023c237da470258e1805d806c7e4009a5974cd6b1d474b675852a + languageName: node + linkType: hard + +"util@npm:^0.11.0": + version: 0.11.1 + resolution: "util@npm:0.11.1" + dependencies: + inherits: "npm:2.0.3" + checksum: 10c0/8e9d1a85e661c8a8d9883d821aedbff3f8d9c3accd85357020905386ada5653b20389fc3591901e2a0bde64f8dc86b28c3f990114aa5a38eaaf30b455fa3cdf6 + languageName: node + linkType: hard + +"util@npm:^0.12.3, util@npm:^0.12.5": + version: 0.12.5 + resolution: "util@npm:0.12.5" + dependencies: + inherits: "npm:^2.0.3" + is-arguments: "npm:^1.0.4" + is-generator-function: "npm:^1.0.7" + is-typed-array: "npm:^1.1.3" + which-typed-array: "npm:^1.1.2" + checksum: 10c0/c27054de2cea2229a66c09522d0fa1415fb12d861d08523a8846bf2e4cbf0079d4c3f725f09dcb87493549bcbf05f5798dce1688b53c6c17201a45759e7253f3 + languageName: node + linkType: hard + +"utila@npm:~0.4": + version: 0.4.0 + resolution: "utila@npm:0.4.0" + checksum: 10c0/2791604e09ca4f77ae314df83e80d1805f867eb5c7e13e7413caee01273c278cf2c9a3670d8d25c889a877f7b149d892fe61b0181a81654b425e9622ab23d42e + languageName: node + linkType: hard + +"utils-merge@npm:1.0.1": + version: 1.0.1 + resolution: "utils-merge@npm:1.0.1" + checksum: 10c0/02ba649de1b7ca8854bfe20a82f1dfbdda3fb57a22ab4a8972a63a34553cf7aa51bc9081cf7e001b035b88186d23689d69e71b510e610a09a4c66f68aa95b672 + languageName: node + linkType: hard + +"uuid@npm:9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" + bin: + uuid: dist/bin/uuid + checksum: 10c0/1607dd32ac7fc22f2d8f77051e6a64845c9bce5cd3dd8aa0070c074ec73e666a1f63c7b4e0f4bf2bc8b9d59dc85a15e17807446d9d2b17c8485fbc2147b27f9b + languageName: node + linkType: hard + +"uuid@npm:^8.3.2": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + languageName: node + linkType: hard + +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10c0/bdc36fb8095d3b41df197f5fb6f11e3a26adf4059df3213e3baa93810d8f0cc76f9a74aaefc18b73e91fe7e19154ed6f134eda6fded2e0f1c8d2272ed2d2d391 + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.2.0 + resolution: "v8-to-istanbul@npm:9.2.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/e691ba4dd0dea4a884e52c37dbda30cce6f9eeafe9b26721e449429c6bb0f4b6d1e33fabe7711d0f67f7a34c3bfd56c873f7375bba0b1534e6a2843ce99550e5 + languageName: node + linkType: hard + +"value-or-promise@npm:^1.0.11, value-or-promise@npm:^1.0.12": + version: 1.0.12 + resolution: "value-or-promise@npm:1.0.12" + checksum: 10c0/b75657b74e4d17552bd88e0c2857020fbab34a4d091dc058db18c470e7da0336067e72c130b3358e3321ac0a6ff11c0b92b67a382318a3705ad5d57de7ff3262 + languageName: node + linkType: hard + +"vary@npm:~1.1.2": + version: 1.1.2 + resolution: "vary@npm:1.1.2" + checksum: 10c0/f15d588d79f3675135ba783c91a4083dcd290a2a5be9fcb6514220a1634e23df116847b1cc51f66bfb0644cf9353b2abb7815ae499bab06e46dd33c1a6bf1f4f + languageName: node + linkType: hard + +"vite@npm:4.5.2": + version: 4.5.2 + resolution: "vite@npm:4.5.2" + dependencies: + esbuild: "npm:^0.18.10" + fsevents: "npm:~2.3.2" + postcss: "npm:^8.4.27" + rollup: "npm:^3.27.1" + peerDependencies: + "@types/node": ">= 14" + less: "*" + lightningcss: ^1.21.0 + sass: "*" + stylus: "*" + sugarss: "*" + terser: ^5.4.0 + dependenciesMeta: + fsevents: + optional: true + peerDependenciesMeta: + "@types/node": + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + bin: + vite: bin/vite.js + checksum: 10c0/68969ccf72ad2078aec7d9e023fce6de03746a4761f9308924212fff7bd42487145b270166cec66cddacfd7b1315ec5aa39ead174fbd7fcd463637a96ff4c9d1 + languageName: node + linkType: hard + +"vm-browserify@npm:^1.0.1": + version: 1.1.2 + resolution: "vm-browserify@npm:1.1.2" + checksum: 10c0/0cc1af6e0d880deb58bc974921320c187f9e0a94f25570fca6b1bd64e798ce454ab87dfd797551b1b0cc1849307421aae0193cedf5f06bdb5680476780ee344b + languageName: node + linkType: hard + +"vscode-jsonrpc@npm:8.2.0": + version: 8.2.0 + resolution: "vscode-jsonrpc@npm:8.2.0" + checksum: 10c0/0789c227057a844f5ead55c84679206227a639b9fb76e881185053abc4e9848aa487245966cc2393fcb342c4541241b015a1a2559fddd20ac1e68945c95344e6 + languageName: node + linkType: hard + +"vscode-languageserver-protocol@npm:^3.15.3": + version: 3.17.5 + resolution: "vscode-languageserver-protocol@npm:3.17.5" + dependencies: + vscode-jsonrpc: "npm:8.2.0" + vscode-languageserver-types: "npm:3.17.5" + checksum: 10c0/5f38fd80da9868d706eaa4a025f4aff9c3faad34646bcde1426f915cbd8d7e8b6c3755ce3fef6eebd256ba3145426af1085305f8a76e34276d2e95aaf339a90b + languageName: node + linkType: hard + +"vscode-languageserver-textdocument@npm:1.0.8": + version: 1.0.8 + resolution: "vscode-languageserver-textdocument@npm:1.0.8" + checksum: 10c0/2981b4d0935c47d76fda9d80840b71de414990a2976840106a462277a26002c7abe2453ab872a00861803cf62ed6b340c6ecbc7a3549788309e28096b73a4d52 + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.17.3": + version: 3.17.3 + resolution: "vscode-languageserver-types@npm:3.17.3" + checksum: 10c0/a70d4ac0dbc08ba425b97e329e6a5696dabc6a264415bacb861e10d859b224f1b46d1fb41c17b6fdd31b32749d3bdfc819cb1b8a57dbe0d1e70e661ba8cfa397 + languageName: node + linkType: hard + +"vscode-languageserver-types@npm:3.17.5": + version: 3.17.5 + resolution: "vscode-languageserver-types@npm:3.17.5" + checksum: 10c0/1e1260de79a2cc8de3e46f2e0182cdc94a7eddab487db5a3bd4ee716f67728e685852707d72c059721ce500447be9a46764a04f0611e94e4321ffa088eef36f8 + languageName: node + linkType: hard + +"vscode-languageserver@npm:6.1.1": + version: 6.1.1 + resolution: "vscode-languageserver@npm:6.1.1" + dependencies: + vscode-languageserver-protocol: "npm:^3.15.3" + bin: + installServerIntoExtension: ./bin/installServerIntoExtension + checksum: 10c0/90d7a6a3d3428a381d84a563299ebb59cec3f534ec78b76f6444f79da514380088b7bab2f2c428e15f071afa0b75aaf30a97e644f314e00753231870e8ead204 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^4.0.0": + version: 4.0.0 + resolution: "w3c-xmlserializer@npm:4.0.0" + dependencies: + xml-name-validator: "npm:^4.0.0" + checksum: 10c0/02cc66d6efc590bd630086cd88252444120f5feec5c4043932b0d0f74f8b060512f79dc77eb093a7ad04b4f02f39da79ce4af47ceb600f2bf9eacdc83204b1a8 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"watchpack-chokidar2@npm:^2.0.1": + version: 2.0.1 + resolution: "watchpack-chokidar2@npm:2.0.1" + dependencies: + chokidar: "npm:^2.1.8" + checksum: 10c0/9b8d880ae2543dd4f26a69f6b7f881119494f6b772b7431027a06a5cf963e0ebc1cac91a3ef479365c358b693c65fa80a1f8297427fa11fd4c080c3d6408c372 + languageName: node + linkType: hard + +"watchpack@npm:^1.7.4": + version: 1.7.5 + resolution: "watchpack@npm:1.7.5" + dependencies: + chokidar: "npm:^3.4.1" + graceful-fs: "npm:^4.1.2" + neo-async: "npm:^2.5.0" + watchpack-chokidar2: "npm:^2.0.1" + dependenciesMeta: + chokidar: + optional: true + watchpack-chokidar2: + optional: true + checksum: 10c0/53e3b112064f5de9edbb2a14973fb3901d9697b24cc70f8531a143eaace2353a273ca25c0ba21def8d3803cfedb8f6861ca1e49e9782257e40d5b5f8f5365c86 + languageName: node + linkType: hard + +"watchpack@npm:^2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" + dependencies: + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.1.2" + checksum: 10c0/c5e35f9fb9338d31d2141d9835643c0f49b5f9c521440bb648181059e5940d93dd8ed856aa8a33fbcdd4e121dad63c7e8c15c063cf485429cd9d427be197fe62 + languageName: node + linkType: hard + +"wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": + version: 1.7.3 + resolution: "wbuf@npm:1.7.3" + dependencies: + minimalistic-assert: "npm:^1.0.0" + checksum: 10c0/56edcc5ef2b3d30913ba8f1f5cccc364d180670b24d5f3f8849c1e6fb514e5c7e3a87548ae61227a82859eba6269c11393ae24ce12a2ea1ecb9b465718ddced7 + languageName: node + linkType: hard + +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"web-encoding@npm:^1.1.5": + version: 1.1.5 + resolution: "web-encoding@npm:1.1.5" + dependencies: + "@zxing/text-encoding": "npm:0.9.0" + util: "npm:^0.12.3" + dependenciesMeta: + "@zxing/text-encoding": + optional: true + checksum: 10c0/59d5413338ec0894c690006f5d8508b0c88cae1d8c78606c3f326e351c672196461ed808b849fe08d0900fa56a61fcacb9ff576499068d2ead0a7bc04afa7d34 + languageName: node + linkType: hard + +"web-streams-polyfill@npm:^3.2.1": + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 10c0/64e855c47f6c8330b5436147db1c75cb7e7474d924166800e8e2aab5eb6c76aac4981a84261dd2982b3e754490900b99791c80ae1407a9fa0dcff74f82ea3a7f + languageName: node + linkType: hard + +"web@workspace:web": + version: 0.0.0-use.local + resolution: "web@workspace:web" + dependencies: + "@redwoodjs/forms": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/vite": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" + "@types/react": "npm:^18.2.55" + "@types/react-dom": "npm:^18.2.19" + react: "npm:18.2.0" + react-dom: "npm:18.2.0" + languageName: unknown + linkType: soft + +"webcrypto-core@npm:^1.7.8": + version: 1.7.8 + resolution: "webcrypto-core@npm:1.7.8" + dependencies: + "@peculiar/asn1-schema": "npm:^2.3.8" + "@peculiar/json-schema": "npm:^1.1.12" + asn1js: "npm:^3.0.1" + pvtsutils: "npm:^1.3.5" + tslib: "npm:^2.6.2" + checksum: 10c0/4c6ef9ae4ae27489f88b7c571494b058120178528f25efe87b97cbc64ead03a6468a614f6269927d13735e4f5ce1d1f7599cf4385ee9b61a13921964a5748a66 + languageName: node + linkType: hard + +"webidl-conversions@npm:^3.0.0": + version: 3.0.1 + resolution: "webidl-conversions@npm:3.0.1" + checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db + languageName: node + linkType: hard + +"webidl-conversions@npm:^7.0.0": + version: 7.0.0 + resolution: "webidl-conversions@npm:7.0.0" + checksum: 10c0/228d8cb6d270c23b0720cb2d95c579202db3aaf8f633b4e9dd94ec2000a04e7e6e43b76a94509cdb30479bd00ae253ab2371a2da9f81446cc313f89a4213a2c4 + languageName: node + linkType: hard + +"webpack-bundle-analyzer@npm:4.9.1": + version: 4.9.1 + resolution: "webpack-bundle-analyzer@npm:4.9.1" + dependencies: + "@discoveryjs/json-ext": "npm:0.5.7" + acorn: "npm:^8.0.4" + acorn-walk: "npm:^8.0.0" + commander: "npm:^7.2.0" + escape-string-regexp: "npm:^4.0.0" + gzip-size: "npm:^6.0.0" + is-plain-object: "npm:^5.0.0" + lodash.debounce: "npm:^4.0.8" + lodash.escape: "npm:^4.0.1" + lodash.flatten: "npm:^4.4.0" + lodash.invokemap: "npm:^4.6.0" + lodash.pullall: "npm:^4.2.0" + lodash.uniqby: "npm:^4.7.0" + opener: "npm:^1.5.2" + picocolors: "npm:^1.0.0" + sirv: "npm:^2.0.3" + ws: "npm:^7.3.1" + bin: + webpack-bundle-analyzer: lib/bin/analyzer.js + checksum: 10c0/dd047c306471e6c389d6d4156ff22402e587140310a065a6191ee380f8251063f73a8ec6ac6d977c1cd634dbb717e2522b5d0b6cc9b0e847d4f15737fd9c65c9 + languageName: node + linkType: hard + +"webpack-cli@npm:5.1.4": + version: 5.1.4 + resolution: "webpack-cli@npm:5.1.4" + dependencies: + "@discoveryjs/json-ext": "npm:^0.5.0" + "@webpack-cli/configtest": "npm:^2.1.1" + "@webpack-cli/info": "npm:^2.0.2" + "@webpack-cli/serve": "npm:^2.0.5" + colorette: "npm:^2.0.14" + commander: "npm:^10.0.1" + cross-spawn: "npm:^7.0.3" + envinfo: "npm:^7.7.3" + fastest-levenshtein: "npm:^1.0.12" + import-local: "npm:^3.0.2" + interpret: "npm:^3.1.1" + rechoir: "npm:^0.8.0" + webpack-merge: "npm:^5.7.3" + peerDependencies: + webpack: 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 10c0/4266909ae5e2e662c8790ac286e965b2c7fd5a4a2f07f48e28576234c9a5f631847ccddc18e1b3281c7b4be04a7ff4717d2636033a322dde13ac995fd0d9de10 + languageName: node + linkType: hard + +"webpack-dev-middleware@npm:^5.3.1": + version: 5.3.3 + resolution: "webpack-dev-middleware@npm:5.3.3" + dependencies: + colorette: "npm:^2.0.10" + memfs: "npm:^3.4.3" + mime-types: "npm:^2.1.31" + range-parser: "npm:^1.2.1" + schema-utils: "npm:^4.0.0" + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + checksum: 10c0/378ceed430b61c0b0eccdbb55a97173aa36231bb88e20ad12bafb3d553e542708fa31f08474b9c68d4ac95174a047def9e426e193b7134be3736afa66a0d1708 + languageName: node + linkType: hard + +"webpack-dev-server@npm:4.15.1": + version: 4.15.1 + resolution: "webpack-dev-server@npm:4.15.1" + dependencies: + "@types/bonjour": "npm:^3.5.9" + "@types/connect-history-api-fallback": "npm:^1.3.5" + "@types/express": "npm:^4.17.13" + "@types/serve-index": "npm:^1.9.1" + "@types/serve-static": "npm:^1.13.10" + "@types/sockjs": "npm:^0.3.33" + "@types/ws": "npm:^8.5.5" + ansi-html-community: "npm:^0.0.8" + bonjour-service: "npm:^1.0.11" + chokidar: "npm:^3.5.3" + colorette: "npm:^2.0.10" + compression: "npm:^1.7.4" + connect-history-api-fallback: "npm:^2.0.0" + default-gateway: "npm:^6.0.3" + express: "npm:^4.17.3" + graceful-fs: "npm:^4.2.6" + html-entities: "npm:^2.3.2" + http-proxy-middleware: "npm:^2.0.3" + ipaddr.js: "npm:^2.0.1" + launch-editor: "npm:^2.6.0" + open: "npm:^8.0.9" + p-retry: "npm:^4.5.0" + rimraf: "npm:^3.0.2" + schema-utils: "npm:^4.0.0" + selfsigned: "npm:^2.1.1" + serve-index: "npm:^1.9.1" + sockjs: "npm:^0.3.24" + spdy: "npm:^4.0.2" + webpack-dev-middleware: "npm:^5.3.1" + ws: "npm:^8.13.0" + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + bin: + webpack-dev-server: bin/webpack-dev-server.js + checksum: 10c0/2cf3edf556dcafdfc938e0adeac3dadf97fb959ed66b88bdd70acdb0b77b0f25be5e2d4b30cca2da8732548451418cadf00eb09e751e7674ff914fd9ab646b26 + languageName: node + linkType: hard + +"webpack-manifest-plugin@npm:5.0.0": + version: 5.0.0 + resolution: "webpack-manifest-plugin@npm:5.0.0" + dependencies: + tapable: "npm:^2.0.0" + webpack-sources: "npm:^2.2.0" + peerDependencies: + webpack: ^5.47.0 + checksum: 10c0/c6baed67855c48363a7bd677bc05ac532e2d817370894ec5a785524c1df08859330198eda419efb17d0e4233dc74d194f423a4ac5d34ab5521ba2617d14ea572 + languageName: node + linkType: hard + +"webpack-merge@npm:5.10.0, webpack-merge@npm:^5.7.3": + version: 5.10.0 + resolution: "webpack-merge@npm:5.10.0" + dependencies: + clone-deep: "npm:^4.0.1" + flat: "npm:^5.0.2" + wildcard: "npm:^2.0.0" + checksum: 10c0/b607c84cabaf74689f965420051a55a08722d897bdd6c29cb0b2263b451c090f962d41ecf8c9bf56b0ab3de56e65476ace0a8ecda4f4a4663684243d90e0512b + languageName: node + linkType: hard + +"webpack-retry-chunk-load-plugin@npm:3.1.1": + version: 3.1.1 + resolution: "webpack-retry-chunk-load-plugin@npm:3.1.1" + dependencies: + prettier: "npm:^2.6.2" + peerDependencies: + webpack: ">=5.0.0" + checksum: 10c0/62a4eda6a8d4c3a1169d41fd7d69902f06b4c39c76019f897ac3cb6958ecba5591c37386e303e7495859602386a61ac597fa970937099bcfc4f4b9a1027cece8 + languageName: node + linkType: hard + +"webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1": + version: 1.4.3 + resolution: "webpack-sources@npm:1.4.3" + dependencies: + source-list-map: "npm:^2.0.0" + source-map: "npm:~0.6.1" + checksum: 10c0/78dafb3e1e297d3f4eb6204311e8c64d28cd028f82887ba33aaf03fffc82482d8e1fdf6de25a60f4dde621d3565f4c3b1bfb350f09add8f4e54e00279ff3db5e + languageName: node + linkType: hard + +"webpack-sources@npm:^2.2.0": + version: 2.3.1 + resolution: "webpack-sources@npm:2.3.1" + dependencies: + source-list-map: "npm:^2.0.1" + source-map: "npm:^0.6.1" + checksum: 10c0/caf56a9a478eca7e77feca2b6ddc7673f1384eb870280014b300c40cf42abca656f639ff58a8d55a889a92a810ae3c22e71e578aa38fde416e8c2e6827a6ddfd + languageName: node + linkType: hard + +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 10c0/2ef63d77c4fad39de4a6db17323d75eb92897b32674e97d76f0a1e87c003882fc038571266ad0ef581ac734cbe20952912aaa26155f1905e96ce251adbb1eb4e + languageName: node + linkType: hard + +"webpack@npm:5.90.0": + version: 5.90.0 + resolution: "webpack@npm:5.90.0" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.11.5" + "@webassemblyjs/wasm-edit": "npm:^1.11.5" + "@webassemblyjs/wasm-parser": "npm:^1.11.5" + acorn: "npm:^8.7.1" + acorn-import-assertions: "npm:^1.9.0" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.15.0" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.9" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.0" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/4acec1a719a9c5b890a30a9fb18519e671e55382f2c51120b76a2c1c1c521285b6510327faf79f85a4b11c7a2c5c01e1d2e7bf73e5cddbada1503f4d51a63441 + languageName: node + linkType: hard + +"webpack@npm:^4.44.2": + version: 4.47.0 + resolution: "webpack@npm:4.47.0" + dependencies: + "@webassemblyjs/ast": "npm:1.9.0" + "@webassemblyjs/helper-module-context": "npm:1.9.0" + "@webassemblyjs/wasm-edit": "npm:1.9.0" + "@webassemblyjs/wasm-parser": "npm:1.9.0" + acorn: "npm:^6.4.1" + ajv: "npm:^6.10.2" + ajv-keywords: "npm:^3.4.1" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^4.5.0" + eslint-scope: "npm:^4.0.3" + json-parse-better-errors: "npm:^1.0.2" + loader-runner: "npm:^2.4.0" + loader-utils: "npm:^1.2.3" + memory-fs: "npm:^0.4.1" + micromatch: "npm:^3.1.10" + mkdirp: "npm:^0.5.3" + neo-async: "npm:^2.6.1" + node-libs-browser: "npm:^2.2.1" + schema-utils: "npm:^1.0.0" + tapable: "npm:^1.1.3" + terser-webpack-plugin: "npm:^1.4.3" + watchpack: "npm:^1.7.4" + webpack-sources: "npm:^1.4.1" + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/bc90202110a341359c11ead60ea09bd5cfa51e2c93004d7e40b7c2f76208cc6717e39c9d9544825cc44958046ada762c78a8cf9848619ea450315bce98228701 + languageName: node + linkType: hard + +"webpack@npm:^5": + version: 5.90.3 + resolution: "webpack@npm:5.90.3" + dependencies: + "@types/eslint-scope": "npm:^3.7.3" + "@types/estree": "npm:^1.0.5" + "@webassemblyjs/ast": "npm:^1.11.5" + "@webassemblyjs/wasm-edit": "npm:^1.11.5" + "@webassemblyjs/wasm-parser": "npm:^1.11.5" + acorn: "npm:^8.7.1" + acorn-import-assertions: "npm:^1.9.0" + browserslist: "npm:^4.21.10" + chrome-trace-event: "npm:^1.0.2" + enhanced-resolve: "npm:^5.15.0" + es-module-lexer: "npm:^1.2.1" + eslint-scope: "npm:5.1.1" + events: "npm:^3.2.0" + glob-to-regexp: "npm:^0.4.1" + graceful-fs: "npm:^4.2.9" + json-parse-even-better-errors: "npm:^2.3.1" + loader-runner: "npm:^4.2.0" + mime-types: "npm:^2.1.27" + neo-async: "npm:^2.6.2" + schema-utils: "npm:^3.2.0" + tapable: "npm:^2.1.1" + terser-webpack-plugin: "npm:^5.3.10" + watchpack: "npm:^2.4.0" + webpack-sources: "npm:^3.2.3" + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: 10c0/f737aa871cadbbae89833eb85387f1bf9ee0768f039100a3c8134f2fdcc78c3230ca775c373b1aa467b272f74c6831e119f7a8a1c14dcac97327212be9c93eeb + languageName: node + linkType: hard + +"websocket-driver@npm:>=0.5.1, websocket-driver@npm:^0.7.4": + version: 0.7.4 + resolution: "websocket-driver@npm:0.7.4" + dependencies: + http-parser-js: "npm:>=0.5.1" + safe-buffer: "npm:>=5.1.0" + websocket-extensions: "npm:>=0.1.1" + checksum: 10c0/5f09547912b27bdc57bac17b7b6527d8993aa4ac8a2d10588bb74aebaf785fdcf64fea034aae0c359b7adff2044dd66f3d03866e4685571f81b13e548f9021f1 + languageName: node + linkType: hard + +"websocket-extensions@npm:>=0.1.1": + version: 0.1.4 + resolution: "websocket-extensions@npm:0.1.4" + checksum: 10c0/bbc8c233388a0eb8a40786ee2e30d35935cacbfe26ab188b3e020987e85d519c2009fe07cfc37b7f718b85afdba7e54654c9153e6697301f72561bfe429177e0 + languageName: node + linkType: hard + +"whatwg-encoding@npm:^2.0.0": + version: 2.0.0 + resolution: "whatwg-encoding@npm:2.0.0" + dependencies: + iconv-lite: "npm:0.6.3" + checksum: 10c0/91b90a49f312dc751496fd23a7e68981e62f33afe938b97281ad766235c4872fc4e66319f925c5e9001502b3040dd25a33b02a9c693b73a4cbbfdc4ad10c3e3e + languageName: node + linkType: hard + +"whatwg-fetch@npm:3.6.19": + version: 3.6.19 + resolution: "whatwg-fetch@npm:3.6.19" + checksum: 10c0/01dd755492d594c8d71d47811bb3886cdb7d566684daff5ec658cf148fa2418de6b562a94ff8cceaf1cf277bfb99fa6b61258cc20de5053f5817a4d419b5d293 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^3.0.0": + version: 3.0.0 + resolution: "whatwg-mimetype@npm:3.0.0" + checksum: 10c0/323895a1cda29a5fb0b9ca82831d2c316309fede0365047c4c323073e3239067a304a09a1f4b123b9532641ab604203f33a1403b5ca6a62ef405bcd7a204080f + languageName: node + linkType: hard + +"whatwg-url@npm:^11.0.0": + version: 11.0.0 + resolution: "whatwg-url@npm:11.0.0" + dependencies: + tr46: "npm:^3.0.0" + webidl-conversions: "npm:^7.0.0" + checksum: 10c0/f7ec264976d7c725e0696fcaf9ebe056e14422eacbf92fdbb4462034609cba7d0c85ffa1aab05e9309d42969bcf04632ba5ed3f3882c516d7b093053315bf4c1 + languageName: node + linkType: hard + +"whatwg-url@npm:^5.0.0": + version: 5.0.0 + resolution: "whatwg-url@npm:5.0.0" + dependencies: + tr46: "npm:~0.0.3" + webidl-conversions: "npm:^3.0.0" + checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.0.2": + version: 1.0.2 + resolution: "which-boxed-primitive@npm:1.0.2" + dependencies: + is-bigint: "npm:^1.0.1" + is-boolean-object: "npm:^1.1.0" + is-number-object: "npm:^1.0.4" + is-string: "npm:^1.0.5" + is-symbol: "npm:^1.0.3" + checksum: 10c0/0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.3": + version: 1.1.3 + resolution: "which-builtin-type@npm:1.1.3" + dependencies: + function.prototype.name: "npm:^1.1.5" + has-tostringtag: "npm:^1.0.0" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.0.2" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.1" + which-typed-array: "npm:^1.1.9" + checksum: 10c0/2b7b234df3443b52f4fbd2b65b731804de8d30bcc4210ec84107ef377a81923cea7f2763b7fb78b394175cea59118bf3c41b9ffd2d643cb1d748ef93b33b6bd4 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: "npm:^2.0.1" + is-set: "npm:^2.0.1" + is-weakmap: "npm:^2.0.1" + is-weakset: "npm:^2.0.1" + checksum: 10c0/249f913e1758ed2f06f00706007d87dc22090a80591a56917376e70ecf8fc9ab6c41d98e1c87208bb9648676f65d4b09c0e4d23c56c7afb0f0a73a27d701df5d + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 10c0/087038e7992649eaffa6c7a4f3158d5b53b14cf5b6c1f0e043dccfacb1ba179d12f17545d5b85ebd94a42ce280a6fe65d0cbcab70f4fc6daad1dfae85e0e6a3e + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": + version: 1.1.14 + resolution: "which-typed-array@npm:1.1.14" + dependencies: + available-typed-arrays: "npm:^1.0.6" + call-bind: "npm:^1.0.5" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.1" + checksum: 10c0/0960f1e77807058819451b98c51d4cd72031593e8de990b24bd3fc22e176f5eee22921d68d852297c786aec117689f0423ed20aa4fde7ce2704d680677891f56 + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/449fa5c44ed120ccecfe18c433296a4978a7583bf2391c50abce13f76878d2476defde04d0f79db8165bdf432853c1f8389d0485ca6e8ebce3bbcded513d5e6a + languageName: node + linkType: hard + +"widest-line@npm:^3.1.0": + version: 3.1.0 + resolution: "widest-line@npm:3.1.0" + dependencies: + string-width: "npm:^4.0.0" + checksum: 10c0/b1e623adcfb9df35350dd7fc61295d6d4a1eaa65a406ba39c4b8360045b614af95ad10e05abf704936ed022569be438c4bfa02d6d031863c4166a238c301119f + languageName: node + linkType: hard + +"wildcard@npm:^2.0.0": + version: 2.0.1 + resolution: "wildcard@npm:2.0.1" + checksum: 10c0/08f70cd97dd9a20aea280847a1fe8148e17cae7d231640e41eb26d2388697cbe65b67fd9e68715251c39b080c5ae4f76d71a9a69fa101d897273efdfb1b58bf7 + languageName: node + linkType: hard + +"worker-farm@npm:^1.7.0": + version: 1.7.0 + resolution: "worker-farm@npm:1.7.0" + dependencies: + errno: "npm:~0.1.7" + checksum: 10c0/069a032f9198a07273a7608dc0c23d7288c1c25256b66008e1ae95838cda6fa2c7aefb3b7ba760f975c8d18120ca54eb193afb66d7237b2a05e5da12c1c961f7 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.0.1, wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/baad244e6e33335ea24e86e51868fe6823626e3a3c88d9a6674642afff1d34d9a154c917e74af8d845fd25d170c4ea9cf69a47133c3f3656e1252b3d462d9f6c + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^2.0.0, write-file-atomic@npm:^2.3.0": + version: 2.4.3 + resolution: "write-file-atomic@npm:2.4.3" + dependencies: + graceful-fs: "npm:^4.1.11" + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8cb4bba0c1ab814a9b127844da0db4fb8c5e06ddbe6317b8b319377c73b283673036c8b9360120062898508b9428d81611cf7fa97584504a00bc179b2a580b92 + languageName: node + linkType: hard + +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^3.0.7" + checksum: 10c0/a2c282c95ef5d8e1c27b335ae897b5eca00e85590d92a3fd69a437919b7b93ff36a69ea04145da55829d2164e724bc62202cdb5f4b208b425aba0807889375c7 + languageName: node + linkType: hard + +"ws@npm:8.13.0": + version: 8.13.0 + resolution: "ws@npm:8.13.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/579817dbbab3ee46669129c220cfd81ba6cdb9ab5c3e9a105702dd045743c4ab72e33bb384573827c0c481213417cc880e41bc097e0fc541a0b79fa3eb38207d + languageName: node + linkType: hard + +"ws@npm:^7.3.1": + version: 7.5.9 + resolution: "ws@npm:7.5.9" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/aec4ef4eb65821a7dde7b44790f8699cfafb7978c9b080f6d7a98a7f8fc0ce674c027073a78574c94786ba7112cc90fa2cc94fc224ceba4d4b1030cff9662494 + languageName: node + linkType: hard + +"ws@npm:^8.11.0, ws@npm:^8.12.0, ws@npm:^8.13.0, ws@npm:^8.4.2": + version: 8.16.0 + resolution: "ws@npm:8.16.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 10c0/a7783bb421c648b1e622b423409cb2a58ac5839521d2f689e84bc9dc41d59379c692dd405b15a997ea1d4c0c2e5314ad707332d0c558f15232d2bc07c0b4618a + languageName: node + linkType: hard + +"xdg-basedir@npm:^3.0.0": + version: 3.0.0 + resolution: "xdg-basedir@npm:3.0.0" + checksum: 10c0/c3be36400d8a69c9154ce6ccff98832dae0d04f8bacda806f609d3955beb23dc7c9dde724438b81e6128bf253d440a2bfe0239dd37d70333ab625c4e170b77b2 + languageName: node + linkType: hard + +"xml-name-validator@npm:^4.0.0": + version: 4.0.0 + resolution: "xml-name-validator@npm:4.0.0" + checksum: 10c0/c1bfa219d64e56fee265b2bd31b2fcecefc063ee802da1e73bad1f21d7afd89b943c9e2c97af2942f60b1ad46f915a4c81e00039c7d398b53cf410e29d3c30bd + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 10c0/b64b535861a6f310c5d9bfa10834cf49127c71922c297da9d4d1b45eeaae40bf9b4363275876088fbe2667e5db028d2cd4f8ee72eed9bede840a67d57dab7593 + languageName: node + linkType: hard + +"xregexp@npm:4.0.0": + version: 4.0.0 + resolution: "xregexp@npm:4.0.0" + checksum: 10c0/cc7f49f03b999013544ce9d58ffc356f71c95c21b5e0478386f2c639fb2a89adf02cf9dbe25e9262e1e336d7b812c220aa3a644a4ac39020747ddb6773b6284f + languageName: node + linkType: hard + +"xtend@npm:^4.0.0, xtend@npm:~4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 10c0/366ae4783eec6100f8a02dff02ac907bf29f9a00b82ac0264b4d8b832ead18306797e283cf19de776538babfdcb2101375ec5646b59f08c52128ac4ab812ed0e + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 10c0/308a2efd7cc296ab2c0f3b9284fd4827be01cfeb647b3ba18230e3a416eb1bc887ac050de9f8c4fd9e7856b2e8246e05d190b53c96c5ad8d8cb56dffb6f81024 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yaml-ast-parser@npm:^0.0.43": + version: 0.0.43 + resolution: "yaml-ast-parser@npm:0.0.43" + checksum: 10c0/4d2f1e761067b2c6abdd882279a406f879258787af470a6d4a659cb79cb2ab056b870b25f1f80f46ed556e8b499d611d247806376f53edf3412f72c0a8ea2e98 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.2 + resolution: "yaml@npm:1.10.2" + checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f + languageName: node + linkType: hard + +"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: "npm:^5.0.0" + decamelize: "npm:^1.2.0" + checksum: 10c0/25df918833592a83f52e7e4f91ba7d7bfaa2b891ebf7fe901923c2ee797534f23a176913ff6ff7ebbc1cc1725a044cc6a6539fed8bfd4e13b5b16376875f9499 + languageName: node + linkType: hard + +"yargs@npm:17.7.2, yargs@npm:^17.0.0, yargs@npm:^17.3.1, yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yargs@npm:^15.3.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: "npm:^6.0.0" + decamelize: "npm:^1.2.0" + find-up: "npm:^4.1.0" + get-caller-file: "npm:^2.0.1" + require-directory: "npm:^2.1.1" + require-main-filename: "npm:^2.0.0" + set-blocking: "npm:^2.0.0" + string-width: "npm:^4.2.0" + which-module: "npm:^2.0.0" + y18n: "npm:^4.0.0" + yargs-parser: "npm:^18.1.2" + checksum: 10c0/f1ca680c974333a5822732825cca7e95306c5a1e7750eb7b973ce6dc4f97a6b0a8837203c8b194f461969bfe1fb1176d1d423036635285f6010b392fa498ab2d + languageName: node + linkType: hard + +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10c0/0732468dd7622ed8a274f640f191f3eaf1f39d5349a1b72836df484998d7d9807fbea094e2f5486d6b0cd2414aad5775972df0e68f8604db89a239f0f4bf7443 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard + +"yocto-queue@npm:^1.0.0": + version: 1.0.0 + resolution: "yocto-queue@npm:1.0.0" + checksum: 10c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0 + languageName: node + linkType: hard + +"zen-observable-ts@npm:^1.2.5": + version: 1.2.5 + resolution: "zen-observable-ts@npm:1.2.5" + dependencies: + zen-observable: "npm:0.8.15" + checksum: 10c0/21d586f3d0543e1d6f05d9333a137b407dbf337907c1ee1c2fa7a7da044f7e1262e4baf4ef8902f230c6f5acb561047659eb7df73df33307233cc451efe46db1 + languageName: node + linkType: hard + +"zen-observable@npm:0.8.15": + version: 0.8.15 + resolution: "zen-observable@npm:0.8.15" + checksum: 10c0/71cc2f2bbb537300c3f569e25693d37b3bc91f225cefce251a71c30bc6bb3e7f8e9420ca0eb57f2ac9e492b085b8dfa075fd1e8195c40b83c951dd59c6e4fbf8 + languageName: node + linkType: hard + +"zip-stream@npm:^5.0.1": + version: 5.0.1 + resolution: "zip-stream@npm:5.0.1" + dependencies: + archiver-utils: "npm:^4.0.1" + compress-commons: "npm:^5.0.1" + readable-stream: "npm:^3.6.0" + checksum: 10c0/18b4ecf28824bd165709de5056d53cf611f07e0b7578508fa94c497f17164722dc19a0739ea8b2c1a296de7d3f70f7ad558e7a3a4929240fb2730afc5fd60679 + languageName: node + linkType: hard diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 2b78e8c3d40c..4a24c1f883d0 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/eslint-config", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -16,9 +16,9 @@ "@babel/core": "^7.22.20", "@babel/eslint-parser": "7.23.10", "@babel/eslint-plugin": "7.23.5", - "@redwoodjs/eslint-plugin": "6.0.7", - "@redwoodjs/internal": "6.0.7", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/eslint-plugin": "7.0.0", + "@redwoodjs/internal": "7.0.0", + "@redwoodjs/project-config": "7.0.0", "@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/parser": "5.62.0", "eslint": "8.55.0", diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 5e535b62f50b..ac99ff3d0a87 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/eslint-plugin", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -26,7 +26,7 @@ "eslint": "8.55.0" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/eslint": "8", "@types/estree": "1.0.5", "@typescript-eslint/parser": "5.62.0", diff --git a/packages/forms/package.json b/packages/forms/package.json index 254333a4d90b..022d87d0dae0 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/forms", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", diff --git a/packages/framework-tools/package.json b/packages/framework-tools/package.json index c3059a0db87e..5ff61c28ee43 100644 --- a/packages/framework-tools/package.json +++ b/packages/framework-tools/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/framework-tools", - "version": "6.0.7", + "version": "7.0.0", "private": true, "repository": { "type": "git", diff --git a/packages/graphql-server/package.json b/packages/graphql-server/package.json index 633888dc67aa..faef6425b817 100644 --- a/packages/graphql-server/package.json +++ b/packages/graphql-server/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/graphql-server", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -35,8 +35,8 @@ "@graphql-tools/utils": "10.0.11", "@graphql-yoga/plugin-persisted-operations": "3.1.1", "@opentelemetry/api": "1.7.0", - "@redwoodjs/api": "6.0.7", - "@redwoodjs/context": "6.0.7", + "@redwoodjs/api": "7.0.0", + "@redwoodjs/context": "7.0.0", "core-js": "3.35.1", "graphql": "16.8.1", "graphql-scalars": "1.22.4", @@ -50,8 +50,8 @@ "@babel/core": "^7.22.20", "@envelop/testing": "7.0.0", "@envelop/types": "5.0.0", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/realtime": "6.0.7", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/realtime": "7.0.0", "@types/jsonwebtoken": "9.0.5", "@types/lodash": "4.14.201", "@types/uuid": "9.0.7", diff --git a/packages/internal/package.json b/packages/internal/package.json index 907f731b94ea..f5abd6de1600 100644 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/internal", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -46,10 +46,10 @@ "@graphql-codegen/typescript-react-apollo": "3.3.7", "@graphql-codegen/typescript-resolvers": "3.2.1", "@graphql-tools/documents": "1.0.0", - "@redwoodjs/babel-config": "6.0.7", - "@redwoodjs/graphql-server": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/router": "6.0.7", + "@redwoodjs/babel-config": "7.0.0", + "@redwoodjs/graphql-server": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/router": "7.0.0", "@sdl-codegen/node": "0.0.10", "chalk": "4.1.2", "core-js": "3.35.1", diff --git a/packages/mailer/core/package.json b/packages/mailer/core/package.json index 70af12d23d92..7711c5f1fc8d 100644 --- a/packages/mailer/core/package.json +++ b/packages/mailer/core/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-core", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -22,8 +22,8 @@ "test:watch": "vitest watch src" }, "devDependencies": { - "@redwoodjs/api": "6.0.7", - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/api": "7.0.0", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2" diff --git a/packages/mailer/handlers/in-memory/package.json b/packages/mailer/handlers/in-memory/package.json index 1d31fa7aa90a..411d4d017c93 100644 --- a/packages/mailer/handlers/in-memory/package.json +++ b/packages/mailer/handlers/in-memory/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-handler-in-memory", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -20,10 +20,10 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@redwoodjs/mailer-core": "6.0.7" + "@redwoodjs/mailer-core": "7.0.0" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3" }, diff --git a/packages/mailer/handlers/nodemailer/package.json b/packages/mailer/handlers/nodemailer/package.json index 22ff7d15fd44..e3d567708e44 100644 --- a/packages/mailer/handlers/nodemailer/package.json +++ b/packages/mailer/handlers/nodemailer/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-handler-nodemailer", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -20,11 +20,11 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@redwoodjs/mailer-core": "6.0.7", + "@redwoodjs/mailer-core": "7.0.0", "nodemailer": "6.9.9" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/nodemailer": "^6", "tsx": "4.6.2", "typescript": "5.3.3" diff --git a/packages/mailer/handlers/resend/package.json b/packages/mailer/handlers/resend/package.json index 62d6086b69da..ff2b8814ce76 100644 --- a/packages/mailer/handlers/resend/package.json +++ b/packages/mailer/handlers/resend/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-handler-resend", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -20,11 +20,11 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@redwoodjs/mailer-core": "6.0.7", + "@redwoodjs/mailer-core": "7.0.0", "resend": "1.1.0" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3" }, diff --git a/packages/mailer/handlers/studio/package.json b/packages/mailer/handlers/studio/package.json index e296e3310b12..c4a907711e23 100644 --- a/packages/mailer/handlers/studio/package.json +++ b/packages/mailer/handlers/studio/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-handler-studio", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -20,11 +20,11 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@redwoodjs/mailer-core": "6.0.7", - "@redwoodjs/mailer-handler-nodemailer": "6.0.7" + "@redwoodjs/mailer-core": "7.0.0", + "@redwoodjs/mailer-handler-nodemailer": "7.0.0" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/nodemailer": "^6", "tsx": "4.6.2", "typescript": "5.3.3" diff --git a/packages/mailer/renderers/mjml-react/package.json b/packages/mailer/renderers/mjml-react/package.json index 5941aee40f8b..cb228651e3ad 100644 --- a/packages/mailer/renderers/mjml-react/package.json +++ b/packages/mailer/renderers/mjml-react/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-renderer-mjml-react", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -21,11 +21,11 @@ }, "dependencies": { "@faire/mjml-react": "3.3.0", - "@redwoodjs/mailer-core": "6.0.7", + "@redwoodjs/mailer-core": "7.0.0", "mjml": "4.14.1" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "@types/mjml": "4", "tsx": "4.6.2", "typescript": "5.3.3" diff --git a/packages/mailer/renderers/react-email/package.json b/packages/mailer/renderers/react-email/package.json index 788d29ec4cf8..f62a69639fcc 100644 --- a/packages/mailer/renderers/react-email/package.json +++ b/packages/mailer/renderers/react-email/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/mailer-renderer-react-email", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -21,10 +21,10 @@ }, "dependencies": { "@react-email/render": "0.0.10", - "@redwoodjs/mailer-core": "6.0.7" + "@redwoodjs/mailer-core": "7.0.0" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3" }, diff --git a/packages/prerender/package.json b/packages/prerender/package.json index fe9beefdaf36..2749faaead48 100644 --- a/packages/prerender/package.json +++ b/packages/prerender/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/prerender", - "version": "6.0.7", + "version": "7.0.0", "description": "RedwoodJS prerender", "repository": { "type": "git", @@ -26,12 +26,12 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", - "@redwoodjs/internal": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/router": "6.0.7", - "@redwoodjs/structure": "6.0.7", - "@redwoodjs/web": "6.0.7", + "@redwoodjs/auth": "7.0.0", + "@redwoodjs/internal": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/router": "7.0.0", + "@redwoodjs/structure": "7.0.0", + "@redwoodjs/web": "7.0.0", "@whatwg-node/fetch": "0.9.14", "babel-plugin-ignore-html-and-css-imports": "0.1.0", "cheerio": "1.0.0-rc.12", diff --git a/packages/project-config/package.json b/packages/project-config/package.json index 0dfa54e7ef6a..924bdd101213 100644 --- a/packages/project-config/package.json +++ b/packages/project-config/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/project-config", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -33,7 +33,7 @@ "string-env-interpolation": "1.0.1" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "rimraf": "5.0.5", "tsx": "4.6.2", "typescript": "5.3.3", diff --git a/packages/realtime/package.json b/packages/realtime/package.json index 9db107e91943..ffba0789aa45 100644 --- a/packages/realtime/package.json +++ b/packages/realtime/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/realtime", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -38,7 +38,7 @@ "@envelop/core": "5.0.0", "@envelop/testing": "7.0.0", "@envelop/types": "5.0.0", - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "jest": "29.7.0", "nodemon": "3.0.2", "tsx": "4.6.2", diff --git a/packages/record/package.json b/packages/record/package.json index 62136baeab90..3200315982c9 100644 --- a/packages/record/package.json +++ b/packages/record/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/record", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -25,7 +25,7 @@ "dependencies": { "@babel/runtime-corejs3": "7.23.9", "@prisma/client": "5.9.1", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/project-config": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/router/package.json b/packages/router/package.json index 60fab50fd3cc..f3236b13d424 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/router", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -26,7 +26,7 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1" }, "devDependencies": { diff --git a/packages/structure/package.json b/packages/structure/package.json index 6ace9b2f456e..2d80baa51522 100644 --- a/packages/structure/package.json +++ b/packages/structure/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/structure", - "version": "6.0.7", + "version": "7.0.0", "description": "noun: the arrangement of and relations between the parts or elements of something complex", "repository": { "type": "git", @@ -28,7 +28,7 @@ "@babel/runtime-corejs3": "7.23.9", "@iarna/toml": "2.2.5", "@prisma/internals": "5.9.1", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/project-config": "7.0.0", "@types/line-column": "1.0.0", "camelcase": "6.3.0", "core-js": "3.35.1", diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 75b966f2d391..dcf4061f3bec 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/telemetry", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -23,8 +23,8 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/structure": "6.0.7", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/structure": "7.0.0", "@whatwg-node/fetch": "0.9.14", "ci-info": "4.0.0", "core-js": "3.35.1", diff --git a/packages/testing/package.json b/packages/testing/package.json index ef123e11a124..0b1b04bf77f4 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/testing", - "version": "6.0.7", + "version": "7.0.0", "description": "Tools, wrappers and configuration for testing a Redwood project.", "repository": { "type": "git", @@ -29,13 +29,13 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", - "@redwoodjs/babel-config": "6.0.7", - "@redwoodjs/context": "6.0.7", - "@redwoodjs/graphql-server": "6.0.7", - "@redwoodjs/project-config": "6.0.7", - "@redwoodjs/router": "6.0.7", - "@redwoodjs/web": "6.0.7", + "@redwoodjs/auth": "7.0.0", + "@redwoodjs/babel-config": "7.0.0", + "@redwoodjs/context": "7.0.0", + "@redwoodjs/graphql-server": "7.0.0", + "@redwoodjs/project-config": "7.0.0", + "@redwoodjs/router": "7.0.0", + "@redwoodjs/web": "7.0.0", "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", diff --git a/packages/tui/package.json b/packages/tui/package.json index 5b7c494d3656..ebb5e7dc710f 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/tui", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -26,7 +26,7 @@ "stdout-update": "1.6.8" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3" }, diff --git a/packages/vite/package.json b/packages/vite/package.json index 11ef718b092b..4eba85c62a0a 100644 --- a/packages/vite/package.json +++ b/packages/vite/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/vite", - "version": "6.0.7", + "version": "7.0.0", "description": "Vite configuration package for Redwood", "repository": { "type": "git", @@ -27,8 +27,8 @@ }, "dependencies": { "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/internal": "6.0.7", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/internal": "7.0.0", + "@redwoodjs/project-config": "7.0.0", "@vitejs/plugin-react": "4.2.1", "buffer": "6.0.3", "core-js": "3.35.1", diff --git a/packages/web-server/package.json b/packages/web-server/package.json index c919a2fd64d8..9a6ddd736945 100644 --- a/packages/web-server/package.json +++ b/packages/web-server/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/web-server", - "version": "6.0.7", + "version": "7.0.0", "description": "Redwood's server for the Web side", "repository": { "type": "git", @@ -25,8 +25,8 @@ "prepublishOnly": "NODE_ENV=production yarn build" }, "dependencies": { - "@redwoodjs/fastify-web": "6.0.7", - "@redwoodjs/project-config": "6.0.7", + "@redwoodjs/fastify-web": "7.0.0", + "@redwoodjs/project-config": "7.0.0", "chalk": "4.1.2", "dotenv-defaults": "5.0.2", "fastify": "4.25.2", @@ -34,7 +34,7 @@ "yargs": "17.7.2" }, "devDependencies": { - "@redwoodjs/framework-tools": "6.0.7", + "@redwoodjs/framework-tools": "7.0.0", "tsx": "4.6.2", "typescript": "5.3.3" }, diff --git a/packages/web/package.json b/packages/web/package.json index bf7472781f51..1dc53cfd0284 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@redwoodjs/web", - "version": "6.0.7", + "version": "7.0.0", "repository": { "type": "git", "url": "https://github.com/redwoodjs/redwood.git", @@ -39,7 +39,7 @@ "dependencies": { "@apollo/client": "3.8.10", "@babel/runtime-corejs3": "7.23.9", - "@redwoodjs/auth": "6.0.7", + "@redwoodjs/auth": "7.0.0", "core-js": "3.35.1", "graphql": "16.8.1", "graphql-sse": "2.5.2", diff --git a/yarn.lock b/yarn.lock index 8de99613f0f3..85a0b6a84677 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7372,16 +7372,16 @@ __metadata: languageName: node linkType: hard -"@redwoodjs/api-server@npm:6.0.7, @redwoodjs/api-server@workspace:packages/api-server": +"@redwoodjs/api-server@npm:7.0.0, @redwoodjs/api-server@workspace:packages/api-server": version: 0.0.0-use.local resolution: "@redwoodjs/api-server@workspace:packages/api-server" dependencies: "@fastify/url-data": "npm:5.4.0" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/fastify-web": "npm:6.0.7" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/web-server": "npm:6.0.7" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" "@types/aws-lambda": "npm:8.10.126" "@types/lodash": "npm:4.14.201" "@types/qs": "npm:6.9.11" @@ -7417,7 +7417,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/api@npm:6.0.7, @redwoodjs/api@workspace:packages/api": +"@redwoodjs/api@npm:7.0.0, @redwoodjs/api@workspace:packages/api": version: 0.0.0-use.local resolution: "@redwoodjs/api@workspace:packages/api" dependencies: @@ -7466,7 +7466,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" @@ -7483,7 +7483,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7499,7 +7499,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" @@ -7517,7 +7517,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.35.1" @@ -7535,7 +7535,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7551,7 +7551,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/netlify-identity-widget": "npm:1.9.6" "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" @@ -7571,7 +7571,7 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" "@clerk/clerk-sdk-node": "npm:4.13.7" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/aws-lambda": "npm:8.10.126" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7586,7 +7586,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7602,7 +7602,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@clerk/clerk-react": "npm:4.30.3" "@clerk/types": "npm:3.60.0" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" @@ -7620,7 +7620,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7635,8 +7635,8 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" "@simplewebauthn/server": "npm:7.4.0" "@types/md5": "npm:2.3.5" "@types/uuid": "npm:9.0.7" @@ -7656,7 +7656,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" "@types/yargs": "npm:17.0.32" @@ -7674,7 +7674,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@simplewebauthn/browser": "npm:7.4.0" "@simplewebauthn/typescript-types": "npm:7.4.0" "@types/react": "npm:^18.2.55" @@ -7692,7 +7692,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/aws-lambda": "npm:8.10.126" core-js: "npm:3.35.1" firebase-admin: "npm:11.11.1" @@ -7708,7 +7708,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7723,7 +7723,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" firebase: "npm:10.7.0" @@ -7742,7 +7742,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.35.1" @@ -7759,7 +7759,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7774,7 +7774,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/netlify-identity-widget": "npm:1.9.6" "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" @@ -7793,7 +7793,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/aws-lambda": "npm:8.10.126" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.35.1" @@ -7810,7 +7810,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" typescript: "npm:5.3.3" @@ -7842,7 +7842,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/api": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" "@types/jsonwebtoken": "npm:9.0.5" core-js: "npm:3.35.1" jsonwebtoken: "npm:9.0.2" @@ -7861,7 +7861,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/cli-helpers": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" "@types/yargs": "npm:17.0.32" core-js: "npm:3.35.1" memfs: "npm:4.6.0" @@ -7877,7 +7877,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/react": "npm:^18.2.55" core-js: "npm:3.35.1" react: "npm:18.2.0" @@ -7889,7 +7889,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/auth@npm:6.0.7, @redwoodjs/auth@workspace:packages/auth": +"@redwoodjs/auth@npm:7.0.0, @redwoodjs/auth@workspace:packages/auth": version: 0.0.0-use.local resolution: "@redwoodjs/auth@workspace:packages/auth" dependencies: @@ -7906,7 +7906,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/babel-config@npm:6.0.7, @redwoodjs/babel-config@workspace:packages/babel-config": +"@redwoodjs/babel-config@npm:7.0.0, @redwoodjs/babel-config@workspace:packages/babel-config": version: 0.0.0-use.local resolution: "@redwoodjs/babel-config@workspace:packages/babel-config" dependencies: @@ -7923,8 +7923,8 @@ __metadata: "@babel/register": "npm:^7.22.15" "@babel/runtime-corejs3": "npm:7.23.9" "@babel/traverse": "npm:^7.22.20" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" "@types/babel-plugin-tester": "npm:9.0.9" "@types/babel__core": "npm:7.20.4" "@types/node": "npm:20.11.10" @@ -7946,9 +7946,9 @@ __metadata: resolution: "@redwoodjs/cli-data-migrate@workspace:packages/cli-packages/dataMigrate" dependencies: "@prisma/client": "npm:5.9.1" - "@redwoodjs/babel-config": "npm:6.0.7" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" "@types/fs-extra": "npm:11.0.4" "@types/yargs": "npm:17.0.32" chalk: "npm:4.1.2" @@ -7967,15 +7967,15 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/cli-helpers@npm:6.0.7, @redwoodjs/cli-helpers@workspace:packages/cli-helpers": +"@redwoodjs/cli-helpers@npm:7.0.0, @redwoodjs/cli-helpers@workspace:packages/cli-helpers": version: 0.0.0-use.local resolution: "@redwoodjs/cli-helpers@workspace:packages/cli-helpers" dependencies: "@babel/core": "npm:^7.22.20" "@iarna/toml": "npm:2.2.5" "@opentelemetry/api": "npm:1.7.0" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/telemetry": "npm:6.0.7" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" "@types/lodash": "npm:4.14.201" "@types/pascalcase": "npm:1.0.3" "@types/yargs": "npm:17.0.32" @@ -7998,10 +7998,10 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/cli-storybook@workspace:packages/cli-packages/storybook" dependencies: - "@redwoodjs/cli-helpers": "npm:6.0.7" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/telemetry": "npm:6.0.7" + "@redwoodjs/cli-helpers": "npm:7.0.0" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" "@storybook/addon-a11y": "npm:7.6.10" "@storybook/addon-docs": "npm:7.6.10" "@storybook/addon-essentials": "npm:7.6.10" @@ -8017,7 +8017,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/cli@npm:6.0.7, @redwoodjs/cli@workspace:packages/cli": +"@redwoodjs/cli@npm:7.0.0, @redwoodjs/cli@workspace:packages/cli": version: 0.0.0-use.local resolution: "@redwoodjs/cli@workspace:packages/cli" dependencies: @@ -8032,15 +8032,15 @@ __metadata: "@opentelemetry/sdk-trace-node": "npm:1.18.1" "@opentelemetry/semantic-conventions": "npm:1.18.1" "@prisma/internals": "npm:5.9.1" - "@redwoodjs/api-server": "npm:6.0.7" - "@redwoodjs/cli-helpers": "npm:6.0.7" - "@redwoodjs/fastify-web": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/prerender": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/structure": "npm:6.0.7" - "@redwoodjs/telemetry": "npm:6.0.7" - "@redwoodjs/web-server": "npm:6.0.7" + "@redwoodjs/api-server": "npm:7.0.0" + "@redwoodjs/cli-helpers": "npm:7.0.0" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/prerender": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@redwoodjs/telemetry": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" "@types/archiver": "npm:^6" archiver: "npm:6.0.1" boxen: "npm:5.1.2" @@ -8099,7 +8099,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@babel/traverse": "npm:^7.22.20" "@iarna/toml": "npm:2.2.5" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/project-config": "npm:7.0.0" "@svgr/core": "npm:8.0.0" "@svgr/plugin-jsx": "npm:8.0.1" "@types/babel__core": "npm:7.20.4" @@ -8130,11 +8130,11 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/context@npm:6.0.7, @redwoodjs/context@workspace:packages/context": +"@redwoodjs/context@npm:7.0.0, @redwoodjs/context@workspace:packages/context": version: 0.0.0-use.local resolution: "@redwoodjs/context@workspace:packages/context" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown @@ -8147,12 +8147,12 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/runtime-corejs3": "npm:7.23.9" "@pmmmwh/react-refresh-webpack-plugin": "npm:0.5.11" - "@redwoodjs/cli": "npm:6.0.7" - "@redwoodjs/eslint-config": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/testing": "npm:6.0.7" - "@redwoodjs/web-server": "npm:6.0.7" + "@redwoodjs/cli": "npm:7.0.0" + "@redwoodjs/eslint-config": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/testing": "npm:7.0.0" + "@redwoodjs/web-server": "npm:7.0.0" "@types/lodash": "npm:4.14.201" babel-loader: "npm:^9.1.3" babel-timing: "npm:0.9.1" @@ -8197,7 +8197,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/eslint-config@npm:6.0.7, @redwoodjs/eslint-config@workspace:packages/eslint-config": +"@redwoodjs/eslint-config@npm:7.0.0, @redwoodjs/eslint-config@workspace:packages/eslint-config": version: 0.0.0-use.local resolution: "@redwoodjs/eslint-config@workspace:packages/eslint-config" dependencies: @@ -8205,9 +8205,9 @@ __metadata: "@babel/core": "npm:^7.22.20" "@babel/eslint-parser": "npm:7.23.10" "@babel/eslint-plugin": "npm:7.23.5" - "@redwoodjs/eslint-plugin": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/eslint-plugin": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" "@typescript-eslint/eslint-plugin": "npm:5.62.0" "@typescript-eslint/parser": "npm:5.62.0" eslint: "npm:8.55.0" @@ -8226,11 +8226,11 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/eslint-plugin@npm:6.0.7, @redwoodjs/eslint-plugin@workspace:packages/eslint-plugin": +"@redwoodjs/eslint-plugin@npm:7.0.0, @redwoodjs/eslint-plugin@workspace:packages/eslint-plugin": version: 0.0.0-use.local resolution: "@redwoodjs/eslint-plugin@workspace:packages/eslint-plugin" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" "@types/eslint": "npm:8" "@types/estree": "npm:1.0.5" "@typescript-eslint/parser": "npm:5.62.0" @@ -8242,15 +8242,15 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/fastify-web@npm:6.0.7, @redwoodjs/fastify-web@workspace:packages/adapters/fastify/web": +"@redwoodjs/fastify-web@npm:7.0.0, @redwoodjs/fastify-web@workspace:packages/adapters/fastify/web": version: 0.0.0-use.local resolution: "@redwoodjs/fastify-web@workspace:packages/adapters/fastify/web" dependencies: "@fastify/http-proxy": "npm:9.3.0" "@fastify/static": "npm:6.12.0" "@fastify/url-data": "npm:5.4.0" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" fast-glob: "npm:3.3.2" fastify: "npm:4.25.2" tsx: "npm:4.6.2" @@ -8287,7 +8287,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/framework-tools@npm:6.0.7, @redwoodjs/framework-tools@workspace:packages/framework-tools": +"@redwoodjs/framework-tools@npm:7.0.0, @redwoodjs/framework-tools@workspace:packages/framework-tools": version: 0.0.0-use.local resolution: "@redwoodjs/framework-tools@workspace:packages/framework-tools" dependencies: @@ -8300,7 +8300,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/graphql-server@npm:6.0.7, @redwoodjs/graphql-server@workspace:packages/graphql-server": +"@redwoodjs/graphql-server@npm:7.0.0, @redwoodjs/graphql-server@workspace:packages/graphql-server": version: 0.0.0-use.local resolution: "@redwoodjs/graphql-server@workspace:packages/graphql-server" dependencies: @@ -8320,10 +8320,10 @@ __metadata: "@graphql-tools/utils": "npm:10.0.11" "@graphql-yoga/plugin-persisted-operations": "npm:3.1.1" "@opentelemetry/api": "npm:1.7.0" - "@redwoodjs/api": "npm:6.0.7" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/realtime": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/realtime": "npm:7.0.0" "@types/jsonwebtoken": "npm:9.0.5" "@types/lodash": "npm:4.14.201" "@types/uuid": "npm:9.0.7" @@ -8342,7 +8342,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/internal@npm:6.0.7, @redwoodjs/internal@workspace:packages/internal": +"@redwoodjs/internal@npm:7.0.0, @redwoodjs/internal@workspace:packages/internal": version: 0.0.0-use.local resolution: "@redwoodjs/internal@workspace:packages/internal" dependencies: @@ -8365,10 +8365,10 @@ __metadata: "@graphql-codegen/typescript-react-apollo": "npm:3.3.7" "@graphql-codegen/typescript-resolvers": "npm:3.2.1" "@graphql-tools/documents": "npm:1.0.0" - "@redwoodjs/babel-config": "npm:6.0.7" - "@redwoodjs/graphql-server": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/router": "npm:6.0.7" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" "@sdl-codegen/node": "npm:0.0.10" "@types/fs-extra": "npm:11.0.4" chalk: "npm:4.1.2" @@ -8396,12 +8396,12 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/mailer-core@npm:6.0.7, @redwoodjs/mailer-core@workspace:packages/mailer/core": +"@redwoodjs/mailer-core@npm:7.0.0, @redwoodjs/mailer-core@workspace:packages/mailer/core": version: 0.0.0-use.local resolution: "@redwoodjs/mailer-core@workspace:packages/mailer/core" dependencies: - "@redwoodjs/api": "npm:6.0.7" - "@redwoodjs/framework-tools": "npm:6.0.7" + "@redwoodjs/api": "npm:7.0.0" + "@redwoodjs/framework-tools": "npm:7.0.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -8412,19 +8412,19 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-in-memory@workspace:packages/mailer/handlers/in-memory" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/mailer-core": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/mailer-core": "npm:7.0.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft -"@redwoodjs/mailer-handler-nodemailer@npm:6.0.7, @redwoodjs/mailer-handler-nodemailer@workspace:packages/mailer/handlers/nodemailer": +"@redwoodjs/mailer-handler-nodemailer@npm:7.0.0, @redwoodjs/mailer-handler-nodemailer@workspace:packages/mailer/handlers/nodemailer": version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-nodemailer@workspace:packages/mailer/handlers/nodemailer" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/mailer-core": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/mailer-core": "npm:7.0.0" "@types/nodemailer": "npm:^6" nodemailer: "npm:6.9.9" tsx: "npm:4.6.2" @@ -8436,8 +8436,8 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-resend@workspace:packages/mailer/handlers/resend" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/mailer-core": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/mailer-core": "npm:7.0.0" resend: "npm:1.1.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" @@ -8448,9 +8448,9 @@ __metadata: version: 0.0.0-use.local resolution: "@redwoodjs/mailer-handler-studio@workspace:packages/mailer/handlers/studio" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/mailer-core": "npm:6.0.7" - "@redwoodjs/mailer-handler-nodemailer": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/mailer-core": "npm:7.0.0" + "@redwoodjs/mailer-handler-nodemailer": "npm:7.0.0" "@types/nodemailer": "npm:^6" tsx: "npm:4.6.2" typescript: "npm:5.3.3" @@ -8462,8 +8462,8 @@ __metadata: resolution: "@redwoodjs/mailer-renderer-mjml-react@workspace:packages/mailer/renderers/mjml-react" dependencies: "@faire/mjml-react": "npm:3.3.0" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/mailer-core": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/mailer-core": "npm:7.0.0" "@types/mjml": "npm:4" mjml: "npm:4.14.1" tsx: "npm:4.6.2" @@ -8476,26 +8476,26 @@ __metadata: resolution: "@redwoodjs/mailer-renderer-react-email@workspace:packages/mailer/renderers/react-email" dependencies: "@react-email/render": "npm:0.0.10" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/mailer-core": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/mailer-core": "npm:7.0.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" languageName: unknown linkType: soft -"@redwoodjs/prerender@npm:6.0.7, @redwoodjs/prerender@workspace:packages/prerender": +"@redwoodjs/prerender@npm:7.0.0, @redwoodjs/prerender@workspace:packages/prerender": version: 0.0.0-use.local resolution: "@redwoodjs/prerender@workspace:packages/prerender" dependencies: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/router": "npm:6.0.7" - "@redwoodjs/structure": "npm:6.0.7" - "@redwoodjs/web": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" "@types/mime-types": "npm:2.1.4" "@whatwg-node/fetch": "npm:0.9.14" babel-plugin-ignore-html-and-css-imports: "npm:0.1.0" @@ -8512,12 +8512,12 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/project-config@npm:6.0.7, @redwoodjs/project-config@workspace:packages/project-config": +"@redwoodjs/project-config@npm:7.0.0, @redwoodjs/project-config@workspace:packages/project-config": version: 0.0.0-use.local resolution: "@redwoodjs/project-config@workspace:packages/project-config" dependencies: "@iarna/toml": "npm:2.2.5" - "@redwoodjs/framework-tools": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" deepmerge: "npm:4.3.1" fast-glob: "npm:3.3.2" rimraf: "npm:5.0.5" @@ -8528,7 +8528,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/realtime@npm:6.0.7, @redwoodjs/realtime@workspace:packages/realtime": +"@redwoodjs/realtime@npm:7.0.0, @redwoodjs/realtime@workspace:packages/realtime": version: 0.0.0-use.local resolution: "@redwoodjs/realtime@workspace:packages/realtime" dependencies: @@ -8544,7 +8544,7 @@ __metadata: "@graphql-yoga/subscription": "npm:5.0.0" "@n1ru4l/graphql-live-query": "npm:0.10.0" "@n1ru4l/in-memory-live-query-store": "npm:0.10.0" - "@redwoodjs/framework-tools": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" graphql: "npm:16.8.1" ioredis: "npm:^5.3.2" jest: "npm:29.7.0" @@ -8568,21 +8568,21 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@prisma/client": "npm:5.9.1" "@prisma/internals": "npm:5.9.1" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/project-config": "npm:7.0.0" core-js: "npm:3.35.1" esbuild: "npm:0.20.0" vitest: "npm:1.2.2" languageName: unknown linkType: soft -"@redwoodjs/router@npm:6.0.7, @redwoodjs/router@workspace:packages/router": +"@redwoodjs/router@npm:7.0.0, @redwoodjs/router@workspace:packages/router": version: 0.0.0-use.local resolution: "@redwoodjs/router@workspace:packages/router" dependencies: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@types/react": "npm:^18.2.55" "@types/react-dom": "npm:^18.2.19" core-js: "npm:3.35.1" @@ -8597,7 +8597,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/structure@npm:6.0.7, @redwoodjs/structure@workspace:packages/structure": +"@redwoodjs/structure@npm:7.0.0, @redwoodjs/structure@workspace:packages/structure": version: 0.0.0-use.local resolution: "@redwoodjs/structure@workspace:packages/structure" dependencies: @@ -8606,7 +8606,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@iarna/toml": "npm:2.2.5" "@prisma/internals": "npm:5.9.1" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/project-config": "npm:7.0.0" "@types/fs-extra": "npm:11.0.4" "@types/line-column": "npm:1.0.0" "@types/lodash": "npm:4.14.201" @@ -8636,15 +8636,15 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/telemetry@npm:6.0.7, @redwoodjs/telemetry@workspace:packages/telemetry": +"@redwoodjs/telemetry@npm:7.0.0, @redwoodjs/telemetry@workspace:packages/telemetry": version: 0.0.0-use.local resolution: "@redwoodjs/telemetry@workspace:packages/telemetry" dependencies: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/structure": "npm:6.0.7" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/structure": "npm:7.0.0" "@types/envinfo": "npm:7.8.3" "@types/uuid": "npm:9.0.7" "@types/yargs": "npm:17.0.32" @@ -8659,20 +8659,20 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/testing@npm:6.0.7, @redwoodjs/testing@workspace:packages/testing": +"@redwoodjs/testing@npm:7.0.0, @redwoodjs/testing@workspace:packages/testing": version: 0.0.0-use.local resolution: "@redwoodjs/testing@workspace:packages/testing" dependencies: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" - "@redwoodjs/babel-config": "npm:6.0.7" - "@redwoodjs/context": "npm:6.0.7" - "@redwoodjs/graphql-server": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" - "@redwoodjs/router": "npm:6.0.7" - "@redwoodjs/web": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" + "@redwoodjs/babel-config": "npm:7.0.0" + "@redwoodjs/context": "npm:7.0.0" + "@redwoodjs/graphql-server": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" + "@redwoodjs/router": "npm:7.0.0" + "@redwoodjs/web": "npm:7.0.0" "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.2" @@ -8695,11 +8695,11 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/tui@npm:6.0.7, @redwoodjs/tui@workspace:packages/tui": +"@redwoodjs/tui@npm:7.0.0, @redwoodjs/tui@workspace:packages/tui": version: 0.0.0-use.local resolution: "@redwoodjs/tui@workspace:packages/tui" dependencies: - "@redwoodjs/framework-tools": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" boxen: "npm:5.1.2" chalk: "npm:4.1.2" enquirer: "npm:2.4.1" @@ -8715,8 +8715,8 @@ __metadata: dependencies: "@babel/cli": "npm:7.23.9" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/internal": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/internal": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" "@types/react": "npm:^18.2.55" "@types/yargs-parser": "npm:21.0.3" "@vitejs/plugin-react": "npm:4.2.1" @@ -8734,13 +8734,13 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/web-server@npm:6.0.7, @redwoodjs/web-server@workspace:packages/web-server": +"@redwoodjs/web-server@npm:7.0.0, @redwoodjs/web-server@workspace:packages/web-server": version: 0.0.0-use.local resolution: "@redwoodjs/web-server@workspace:packages/web-server" dependencies: - "@redwoodjs/fastify-web": "npm:6.0.7" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/project-config": "npm:6.0.7" + "@redwoodjs/fastify-web": "npm:7.0.0" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/project-config": "npm:7.0.0" chalk: "npm:4.1.2" dotenv-defaults: "npm:5.0.2" fastify: "npm:4.25.2" @@ -8753,7 +8753,7 @@ __metadata: languageName: unknown linkType: soft -"@redwoodjs/web@npm:6.0.7, @redwoodjs/web@workspace:packages/web": +"@redwoodjs/web@npm:7.0.0, @redwoodjs/web@workspace:packages/web": version: 0.0.0-use.local resolution: "@redwoodjs/web@workspace:packages/web" dependencies: @@ -8761,7 +8761,7 @@ __metadata: "@babel/cli": "npm:7.23.9" "@babel/core": "npm:^7.22.20" "@babel/runtime-corejs3": "npm:7.23.9" - "@redwoodjs/auth": "npm:6.0.7" + "@redwoodjs/auth": "npm:7.0.0" "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@types/react": "npm:^18.2.55" @@ -15714,8 +15714,8 @@ __metadata: "@opentelemetry/resources": "npm:1.18.1" "@opentelemetry/sdk-trace-node": "npm:1.18.1" "@opentelemetry/semantic-conventions": "npm:1.18.1" - "@redwoodjs/framework-tools": "npm:6.0.7" - "@redwoodjs/tui": "npm:6.0.7" + "@redwoodjs/framework-tools": "npm:7.0.0" + "@redwoodjs/tui": "npm:7.0.0" "@types/babel__core": "npm:7.20.4" chalk: "npm:4.1.2" check-node-version: "npm:4.2.1" From c9d225b4a401dd6afe282973fc7646bcbe101344 Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 22:06:27 -0800 Subject: [PATCH 115/119] chore(changelog): add v7 (#10038) Updates the Changelog with v7 information. --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f6f436c42bc..d3749b81c4f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +## v7.0.0 + +- See https://github.com/redwoodjs/redwood/releases/tag/v7.0.0 for the release notes and https://community.redwoodjs.com/t/redwood-v7-0-0-upgrade-guide/5713 for the upgrade guide + ## v6.6.4 - See https://github.com/redwoodjs/redwood/releases/tag/v6.6.4 From 4f612f813f6dd10fe8861c2a5eba21a0011cb1c6 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas <tom@mrazauskas.de> Date: Tue, 20 Feb 2024 08:07:33 +0200 Subject: [PATCH 116/119] chore: bump TSTyche (#10036) TSTyche 1.0.0 was just released. This PR bumps the version to clean up `package.json` files. --- package.json | 2 +- packages/router/package.json | 2 +- packages/web/package.json | 2 +- yarn.lock | 14 +++++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 64b5638c701e..f2b689000b5e 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "ora": "7.0.1", "prompts": "2.4.2", "rimraf": "5.0.5", - "tstyche": "1.0.0-beta.9", + "tstyche": "1.0.0", "tsx": "4.6.2", "typescript": "5.3.3", "vitest": "1.2.2", diff --git a/packages/router/package.json b/packages/router/package.json index 399fecba0dee..a95767f74fc5 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -37,7 +37,7 @@ "jest": "29.7.0", "react": "0.0.0-experimental-e5205658f-20230913", "react-dom": "0.0.0-experimental-e5205658f-20230913", - "tstyche": "1.0.0-beta.9", + "tstyche": "1.0.0", "typescript": "5.3.3" }, "peerDependencies": { diff --git a/packages/web/package.json b/packages/web/package.json index 193fbc63a2b8..c8fa50fe33aa 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -61,7 +61,7 @@ "nodemon": "3.0.2", "react": "0.0.0-experimental-e5205658f-20230913", "react-dom": "0.0.0-experimental-e5205658f-20230913", - "tstyche": "1.0.0-beta.9", + "tstyche": "1.0.0", "typescript": "5.3.3" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 9b01530f119a..297efe14aada 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8613,7 +8613,7 @@ __metadata: jest: "npm:29.7.0" react: "npm:0.0.0-experimental-e5205658f-20230913" react-dom: "npm:0.0.0-experimental-e5205658f-20230913" - tstyche: "npm:1.0.0-beta.9" + tstyche: "npm:1.0.0" typescript: "npm:5.3.3" peerDependencies: react: 0.0.0-experimental-e5205658f-20230913 @@ -8822,7 +8822,7 @@ __metadata: react-hot-toast: "npm:2.4.1" stacktracey: "npm:2.1.8" ts-toolbelt: "npm:9.6.0" - tstyche: "npm:1.0.0-beta.9" + tstyche: "npm:1.0.0" typescript: "npm:5.3.3" peerDependencies: react: 0.0.0-experimental-e5205658f-20230913 @@ -29803,7 +29803,7 @@ __metadata: ora: "npm:7.0.1" prompts: "npm:2.4.2" rimraf: "npm:5.0.5" - tstyche: "npm:1.0.0-beta.9" + tstyche: "npm:1.0.0" tsx: "npm:4.6.2" typescript: "npm:5.3.3" vitest: "npm:1.2.2" @@ -32238,9 +32238,9 @@ __metadata: languageName: node linkType: hard -"tstyche@npm:1.0.0-beta.9": - version: 1.0.0-beta.9 - resolution: "tstyche@npm:1.0.0-beta.9" +"tstyche@npm:1.0.0": + version: 1.0.0 + resolution: "tstyche@npm:1.0.0" peerDependencies: typescript: 4.x || 5.x peerDependenciesMeta: @@ -32248,7 +32248,7 @@ __metadata: optional: true bin: tstyche: ./build/bin.js - checksum: 10c0/2682c3f7e2d83fa0af795ba14e1c83873e3f8c31f761a8af10512c3476cf824b7ef096ba9deec3fc0e12356beaf2a20abfafcb73202db4f14c7c2877db2c5a87 + checksum: 10c0/79083a3bdc0db3cd1ba4c7205b47b9c3c0bdf5ef56db13cd1d1953dc1d8b0d4d88fa125e20f42d01b4d9e6b205c2477105e9f1908dd5451e33bb27ca327ff479 languageName: node linkType: hard From 1de0d68a8c04fc8fb05988ca11706f15f68c5c6f Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 22:07:53 -0800 Subject: [PATCH 117/119] chore(ci): update yarn.lock for changelog action (#10039) Forgot to update the yarn.lock of the changelog action after updating its version of yarn in https://github.com/redwoodjs/redwood/commit/635d6dea677b28993661a2e46659ff8c987b7275. --- .github/actions/check_changelog/yarn.lock | 48 +++++++++++------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/actions/check_changelog/yarn.lock b/.github/actions/check_changelog/yarn.lock index 1a564f5c72f8..08e54ab4edcb 100644 --- a/.github/actions/check_changelog/yarn.lock +++ b/.github/actions/check_changelog/yarn.lock @@ -11,7 +11,7 @@ __metadata: dependencies: "@actions/http-client": "npm:^2.0.1" uuid: "npm:^8.3.2" - checksum: 7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 + checksum: 10c0/7a61446697a23dcad3545cf0634dedbdedf20ae9a0ee6ee977554589a15deb4a93593ee48a41258933d58ce0778f446b0d2c162b60750956fb75e0b9560fb832 languageName: node linkType: hard @@ -20,7 +20,7 @@ __metadata: resolution: "@actions/exec@npm:1.1.1" dependencies: "@actions/io": "npm:^1.0.1" - checksum: 4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a + checksum: 10c0/4a09f6bdbe50ce68b5cf8a7254d176230d6a74bccf6ecc3857feee209a8c950ba9adec87cc5ecceb04110182d1c17117234e45557d72fde6229b7fd3a395322a languageName: node linkType: hard @@ -32,7 +32,7 @@ __metadata: "@octokit/core": "npm:^5.0.1" "@octokit/plugin-paginate-rest": "npm:^9.0.0" "@octokit/plugin-rest-endpoint-methods": "npm:^10.0.0" - checksum: 6f86f564e6ec5873c69ff23bed308cef5f964dbdb559c5415c1ba479517bf18352713a2a757c27f8f67a3d675fdd78446cf142b27762489f697edf9c58e72378 + checksum: 10c0/6f86f564e6ec5873c69ff23bed308cef5f964dbdb559c5415c1ba479517bf18352713a2a757c27f8f67a3d675fdd78446cf142b27762489f697edf9c58e72378 languageName: node linkType: hard @@ -42,28 +42,28 @@ __metadata: dependencies: tunnel: "npm:^0.0.6" undici: "npm:^5.25.4" - checksum: 868fe8529d78beb72f84ea2486e232fa6f66abe00d6ec4591b98c37e762c3d812868a3548638d75b49917961fd10ba1556916b47b1e9e4b55c266e2013c3ae8e + checksum: 10c0/868fe8529d78beb72f84ea2486e232fa6f66abe00d6ec4591b98c37e762c3d812868a3548638d75b49917961fd10ba1556916b47b1e9e4b55c266e2013c3ae8e languageName: node linkType: hard "@actions/io@npm:^1.0.1": version: 1.1.3 resolution: "@actions/io@npm:1.1.3" - checksum: 5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e + checksum: 10c0/5b8751918e5bf0bebd923ba917fb1c0e294401e7ff0037f32c92a4efa4215550df1f6633c63fd4efb2bdaae8711e69b9e36925857db1f38935ff62a5c92ec29e languageName: node linkType: hard "@fastify/busboy@npm:^2.0.0": version: 2.1.0 resolution: "@fastify/busboy@npm:2.1.0" - checksum: 7bb641080aac7cf01d88749ad331af10ba9ec3713ec07cabbe833908c75df21bd56249bb6173bdec07f5a41896b21e3689316f86684c06635da45f91ff4565a2 + checksum: 10c0/7bb641080aac7cf01d88749ad331af10ba9ec3713ec07cabbe833908c75df21bd56249bb6173bdec07f5a41896b21e3689316f86684c06635da45f91ff4565a2 languageName: node linkType: hard "@octokit/auth-token@npm:^4.0.0": version: 4.0.0 resolution: "@octokit/auth-token@npm:4.0.0" - checksum: 57acaa6c394c5abab2f74e8e1dcf4e7a16b236f713c77a54b8f08e2d14114de94b37946259e33ec2aab0566b26f724c2b71d2602352b59e541a9854897618f3c + checksum: 10c0/57acaa6c394c5abab2f74e8e1dcf4e7a16b236f713c77a54b8f08e2d14114de94b37946259e33ec2aab0566b26f724c2b71d2602352b59e541a9854897618f3c languageName: node linkType: hard @@ -78,7 +78,7 @@ __metadata: "@octokit/types": "npm:^12.0.0" before-after-hook: "npm:^2.2.0" universal-user-agent: "npm:^6.0.0" - checksum: a1d2882373b4a33cd9f6e56d76bcc82e5589a477829fc3491b1ef471a8a83fa437b339a2c76d97d9e8ea4ca12bf3ebf32e66119ba16977e542d98f1f5dd3c994 + checksum: 10c0/a1d2882373b4a33cd9f6e56d76bcc82e5589a477829fc3491b1ef471a8a83fa437b339a2c76d97d9e8ea4ca12bf3ebf32e66119ba16977e542d98f1f5dd3c994 languageName: node linkType: hard @@ -88,7 +88,7 @@ __metadata: dependencies: "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: f1c857c5d85afa9d7e8857f7f97dbec28d3b6ab1dc21fe35172f1bc9e5512c8a3a26edabf6b2d83bb60d700f7ad290c96be960496aa83606095630edfad06db4 + checksum: 10c0/f1c857c5d85afa9d7e8857f7f97dbec28d3b6ab1dc21fe35172f1bc9e5512c8a3a26edabf6b2d83bb60d700f7ad290c96be960496aa83606095630edfad06db4 languageName: node linkType: hard @@ -99,14 +99,14 @@ __metadata: "@octokit/request": "npm:^8.0.1" "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 96e5d6b970be60877134cc147b9249534f3a79d691b9932d731d453426fa1e1a0a36111a1b0a6ab43d61309c630903a65db5559b5c800300dc26cf588f50fea8 + checksum: 10c0/96e5d6b970be60877134cc147b9249534f3a79d691b9932d731d453426fa1e1a0a36111a1b0a6ab43d61309c630903a65db5559b5c800300dc26cf588f50fea8 languageName: node linkType: hard "@octokit/openapi-types@npm:^19.1.0": version: 19.1.0 resolution: "@octokit/openapi-types@npm:19.1.0" - checksum: ae8081f52b797b91a12d4f6cddc475699c9d34b06645b337adc77d30b583d8fe8506597a45c42f8f1a96bfb2a9d092cee257d8a65d718bfeed23a0d153448eea + checksum: 10c0/ae8081f52b797b91a12d4f6cddc475699c9d34b06645b337adc77d30b583d8fe8506597a45c42f8f1a96bfb2a9d092cee257d8a65d718bfeed23a0d153448eea languageName: node linkType: hard @@ -117,7 +117,7 @@ __metadata: "@octokit/types": "npm:^12.4.0" peerDependencies: "@octokit/core": ">=5" - checksum: a17055dff8fde5ebc03bf935294ffa4605ed714cb15252f0fa63cda1b95e738fafb5ab9748b18fbdfa5615d5f6686cbf193c6d6426e7dc4fd1dda91c87263f3b + checksum: 10c0/a17055dff8fde5ebc03bf935294ffa4605ed714cb15252f0fa63cda1b95e738fafb5ab9748b18fbdfa5615d5f6686cbf193c6d6426e7dc4fd1dda91c87263f3b languageName: node linkType: hard @@ -128,7 +128,7 @@ __metadata: "@octokit/types": "npm:^12.3.0" peerDependencies: "@octokit/core": ">=5" - checksum: 4d00a2334753955f0c3841ba8fc0880c093b94838e011864ee737d958d2d64e3d45d34fa4c8b64bccf9e13c6de81318cbd6e2b24df37992941d12f54def28432 + checksum: 10c0/4d00a2334753955f0c3841ba8fc0880c093b94838e011864ee737d958d2d64e3d45d34fa4c8b64bccf9e13c6de81318cbd6e2b24df37992941d12f54def28432 languageName: node linkType: hard @@ -139,7 +139,7 @@ __metadata: "@octokit/types": "npm:^12.0.0" deprecation: "npm:^2.0.0" once: "npm:^1.4.0" - checksum: e72a4627120de345b54876a1f007664095e5be9d624fce2e14fccf7668cd8f5e4929d444d8fc085d48e1fb5cd548538453974aab129a669101110d6679dce6c6 + checksum: 10c0/e72a4627120de345b54876a1f007664095e5be9d624fce2e14fccf7668cd8f5e4929d444d8fc085d48e1fb5cd548538453974aab129a669101110d6679dce6c6 languageName: node linkType: hard @@ -151,7 +151,7 @@ __metadata: "@octokit/request-error": "npm:^5.0.0" "@octokit/types": "npm:^12.0.0" universal-user-agent: "npm:^6.0.0" - checksum: 0789edd3b600c5b7ca74089e2842b7bb679a0ad1ec56e5dda54f052d2dd266ac8e6e2eb3c34ba57962066f0770444bf1e99805fd2d762a47776f567beafcf038 + checksum: 10c0/0789edd3b600c5b7ca74089e2842b7bb679a0ad1ec56e5dda54f052d2dd266ac8e6e2eb3c34ba57962066f0770444bf1e99805fd2d762a47776f567beafcf038 languageName: node linkType: hard @@ -160,14 +160,14 @@ __metadata: resolution: "@octokit/types@npm:12.4.0" dependencies: "@octokit/openapi-types": "npm:^19.1.0" - checksum: b52b3fd8af307a1868846991f8376548a790814b20639dee1110271a768c0489081970df893ca2230f6285066003230d22f5877eeac90418971a475c79808241 + checksum: 10c0/b52b3fd8af307a1868846991f8376548a790814b20639dee1110271a768c0489081970df893ca2230f6285066003230d22f5877eeac90418971a475c79808241 languageName: node linkType: hard "before-after-hook@npm:^2.2.0": version: 2.2.3 resolution: "before-after-hook@npm:2.2.3" - checksum: 0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c + checksum: 10c0/0488c4ae12df758ca9d49b3bb27b47fd559677965c52cae7b335784724fb8bf96c42b6e5ba7d7afcbc31facb0e294c3ef717cc41c5bc2f7bd9e76f8b90acd31c languageName: node linkType: hard @@ -184,7 +184,7 @@ __metadata: "deprecation@npm:^2.0.0": version: 2.3.1 resolution: "deprecation@npm:2.3.1" - checksum: 23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 + checksum: 10c0/23d688ba66b74d09b908c40a76179418acbeeb0bfdf218c8075c58ad8d0c315130cb91aa3dffb623aa3a411a3569ce56c6460de6c8d69071c17fe6dd2442f032 languageName: node linkType: hard @@ -193,14 +193,14 @@ __metadata: resolution: "once@npm:1.4.0" dependencies: wrappy: "npm:1" - checksum: 5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 languageName: node linkType: hard "tunnel@npm:^0.0.6": version: 0.0.6 resolution: "tunnel@npm:0.0.6" - checksum: e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 + checksum: 10c0/e27e7e896f2426c1c747325b5f54efebc1a004647d853fad892b46d64e37591ccd0b97439470795e5262b5c0748d22beb4489a04a0a448029636670bfd801b75 languageName: node linkType: hard @@ -209,14 +209,14 @@ __metadata: resolution: "undici@npm:5.28.3" dependencies: "@fastify/busboy": "npm:^2.0.0" - checksum: 3c559ae50ef3104b7085251445dda6f4de871553b9e290845649d2f80b06c0c9cfcdf741b0029c6b20d36c82e6a74dc815b139fa9a26757d70728074ca6d6f5c + checksum: 10c0/3c559ae50ef3104b7085251445dda6f4de871553b9e290845649d2f80b06c0c9cfcdf741b0029c6b20d36c82e6a74dc815b139fa9a26757d70728074ca6d6f5c languageName: node linkType: hard "universal-user-agent@npm:^6.0.0": version: 6.0.1 resolution: "universal-user-agent@npm:6.0.1" - checksum: 5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187 + checksum: 10c0/5c9c46ffe19a975e11e6443640ed4c9e0ce48fcc7203325757a8414ac49940ebb0f4667f2b1fa561489d1eb22cb2d05a0f7c82ec20c5cba42e58e188fb19b187 languageName: node linkType: hard @@ -225,13 +225,13 @@ __metadata: resolution: "uuid@npm:8.3.2" bin: uuid: dist/bin/uuid - checksum: bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 + checksum: 10c0/bcbb807a917d374a49f475fae2e87fdca7da5e5530820ef53f65ba1d12131bd81a92ecf259cc7ce317cbe0f289e7d79fdfebcef9bfa3087c8c8a2fa304c9be54 languageName: node linkType: hard "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" - checksum: 56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 languageName: node linkType: hard From b36799e5e87e60858c7fd700f979ab86fbeb1bb5 Mon Sep 17 00:00:00 2001 From: Dominic Saadi <dominiceliassaadi@gmail.com> Date: Mon, 19 Feb 2024 22:19:23 -0800 Subject: [PATCH 118/119] chore(crwa): update version in e2e test (#10037) Updates the CRWA version snapshot for the e2e test post v7 release. --- packages/create-redwood-app/tests/e2e.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create-redwood-app/tests/e2e.test.ts b/packages/create-redwood-app/tests/e2e.test.ts index 875d4f3ec834..c4f75af38cfb 100644 --- a/packages/create-redwood-app/tests/e2e.test.ts +++ b/packages/create-redwood-app/tests/e2e.test.ts @@ -47,7 +47,7 @@ describe('create-redwood-app', () => { expect(p.exitCode).toEqual(0) expect(p.stdout).toMatchInlineSnapshot(` - "6.0.7 + "7.0.0 [?25l[?25h" `) expect(p.stderr).toMatchInlineSnapshot(`"[?25l[?25h"`) From 487548234b49bb93bb79ad89c7ac4a91ed6c0dc9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 06:36:23 +0000 Subject: [PATCH 119/119] chore(deps): update dependency @playwright/test to v1.41.2 (#10040) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@playwright/test](https://playwright.dev) ([source](https://togithub.com/microsoft/playwright)) | [`1.41.1` -> `1.41.2`](https://renovatebot.com/diffs/npm/@playwright%2ftest/1.41.1/1.41.2) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@playwright%2ftest/1.41.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@playwright%2ftest/1.41.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@playwright%2ftest/1.41.1/1.41.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@playwright%2ftest/1.41.1/1.41.2?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>microsoft/playwright (@​playwright/test)</summary> ### [`v1.41.2`](https://togithub.com/microsoft/playwright/releases/tag/v1.41.2) [Compare Source](https://togithub.com/microsoft/playwright/compare/v1.41.1...v1.41.2) ##### Highlights [https://github.com/microsoft/playwright/issues/29123](https://togithub.com/microsoft/playwright/issues/29123) - \[REGRESSION] route.continue: Protocol error (Fetch.continueRequest): Invalid InterceptionId. #### Browser Versions - Chromium 121.0.6167.57 - Mozilla Firefox 121.0 - WebKit 17.4 This version was also tested against the following stable channels: - Google Chrome 120 - Microsoft Edge 120 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/redwoodjs/redwood). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMDAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjIwMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Dominic Saadi <dominiceliassaadi@gmail.com> --- package.json | 2 +- yarn.lock | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index f2b689000b5e..11a77a515664 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@babel/runtime-corejs3": "7.23.9", "@faker-js/faker": "8.0.2", "@npmcli/arborist": "7.2.2", - "@playwright/test": "1.41.1", + "@playwright/test": "1.41.2", "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/user-event": "14.5.2", diff --git a/yarn.lock b/yarn.lock index 297efe14aada..14067f4cd128 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6525,14 +6525,14 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:1.41.1": - version: 1.41.1 - resolution: "@playwright/test@npm:1.41.1" +"@playwright/test@npm:1.41.2": + version: 1.41.2 + resolution: "@playwright/test@npm:1.41.2" dependencies: - playwright: "npm:1.41.1" + playwright: "npm:1.41.2" bin: playwright: cli.js - checksum: 10c0/72bd5bb67c512027d214b9c54c2a22a469bd19d7809771e53a5bfdcc11330591e01579bb22f807d1ebbcdcea35d625e0fc9eb9791cebcc63bf55b82dd1cdefdd + checksum: 10c0/071fe307e7e46f550e8608ce3c2c207b7cfbda37b39f3dcbe3875eaa18e79f2a768a5795a8cfe21df9361ec63594de0359f5542dd3a3a7f6625300a98452a344 languageName: node linkType: hard @@ -27513,27 +27513,27 @@ __metadata: languageName: node linkType: hard -"playwright-core@npm:1.41.1": - version: 1.41.1 - resolution: "playwright-core@npm:1.41.1" +"playwright-core@npm:1.41.2": + version: 1.41.2 + resolution: "playwright-core@npm:1.41.2" bin: playwright-core: cli.js - checksum: 10c0/cdd91267ca23e3f65d519100e956859c70e3e9ca29e3fe00e700b457903129e41dfa17752f1ea37ad0a8a7c6330baf9f3be503e4cbfa3e8833e80a037f899aee + checksum: 10c0/1e80a24b0e93dd5aa643fb926d23c055f2c1a0a1e711c0d798edcfd8c3e46a6716d4ca59d72ed076191e6c713d09a0f14387d96e60f5221abd4ff65aef1ac3b3 languageName: node linkType: hard -"playwright@npm:1.41.1": - version: 1.41.1 - resolution: "playwright@npm:1.41.1" +"playwright@npm:1.41.2": + version: 1.41.2 + resolution: "playwright@npm:1.41.2" dependencies: fsevents: "npm:2.3.2" - playwright-core: "npm:1.41.1" + playwright-core: "npm:1.41.2" dependenciesMeta: fsevents: optional: true bin: playwright: cli.js - checksum: 10c0/32d48c1f8ff881770a19c9245fb4191fc36b5e97ab5f48effa0b1cf5e83fa958f6fdd7e4268dd984aa306ac5fe9e4324510211910751fb52cebb9bae819d13ca + checksum: 10c0/1b487387c1bc003291a9dbd098e8e3c6a31efbb4d7a2ce4f2bf9d5e7f9fbf4a406352ab70e5266eab9a2a858bd42d8955343ea30c0286c3912e81984aa0220a3 languageName: node linkType: hard @@ -29764,7 +29764,7 @@ __metadata: "@babel/runtime-corejs3": "npm:7.23.9" "@faker-js/faker": "npm:8.0.2" "@npmcli/arborist": "npm:7.2.2" - "@playwright/test": "npm:1.41.1" + "@playwright/test": "npm:1.41.2" "@testing-library/jest-dom": "npm:6.3.0" "@testing-library/react": "npm:14.1.2" "@testing-library/user-event": "npm:14.5.2"